perl5.004 hints file (maint and dev paths)
[p5sagit/p5-mst-13.2.git] / perl.h
diff --git a/perl.h b/perl.h
index 34f68b2..c8bd8b5 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -108,9 +108,9 @@ class CPerlObj;
 #define CPERLarg CPerlObj *pPerl
 #define CPERLarg_ CPERLarg,
 #define _CPERLarg ,CPERLarg
-#define THIS this
-#define _THIS ,this
-#define THIS_ this,
+#define PERL_OBJECT_THIS this
+#define _PERL_OBJECT_THIS ,this
+#define PERL_OBJECT_THIS_ this,
 #define CALLRUNOPS (this->*runops)
 
 #else /* !PERL_OBJECT */
@@ -122,9 +122,9 @@ class CPerlObj;
 #define CPERLarg void
 #define CPERLarg_
 #define _CPERLarg
-#define THIS
-#define _THIS
-#define THIS_
+#define PERL_OBJECT_THIS
+#define _PERL_OBJECT_THIS
+#define PERL_OBJECT_THIS_
 #define CALLRUNOPS runops
 
 #endif /* PERL_OBJECT */
@@ -1818,12 +1818,23 @@ typedef enum {
 #define RsSNARF(sv)   (! SvOK(sv))
 #define RsSIMPLE(sv)  (SvOK(sv) && SvCUR(sv))
 #define RsPARA(sv)    (SvOK(sv) && ! SvCUR(sv))
+#define RsRECORD(sv)  (SvROK(sv) && (SvIV(SvRV(sv)) > 0))
 
 /* Set up PERLVAR macros for populating structs */
 #define PERLVAR(var,type) type var;
 #define PERLVARI(var,type,init) type var;
 #define PERLVARIC(var,type,init) type var;
 
+/* Interpreter exitlist entry */
+typedef struct exitlistentry {
+#ifdef PERL_OBJECT
+    void (*fn) _((CPerlObj*, void*));
+#else
+    void (*fn) _((void*));
+#endif
+    void *ptr;
+} PerlExitListEntry;
+
 #ifdef PERL_OBJECT
 extern "C" CPerlObj* perl_alloc _((IPerlMem*, IPerlEnv*, IPerlStdIO*, IPerlLIO*, IPerlDir*, IPerlSock*, IPerlProc*));
 
@@ -1842,16 +1853,6 @@ public:
        void* operator new(size_t nSize, IPerlMem *pvtbl);
 #endif /* PERL_OBJECT */
 
-/* Interpreter exitlist entry */
-typedef struct exitlistentry {
-#ifdef PERL_OBJECT
-    void (*fn) _((CPerlObj*, void*));
-#else
-    void (*fn) _((void*));
-#endif
-    void *ptr;
-} PerlExitListEntry;
-
 #ifdef PERL_GLOBAL_STRUCT
 struct perl_vars {
 #include "perlvars.h"
@@ -2295,6 +2296,26 @@ enum {
        UNLOCK_SV_MUTEX;                                \
     } while (0)
 
+#ifdef HAS_SEM
+#   include <sys/ipc.h>
+#   include <sys/sem.h>
+#   ifndef HAS_UNION_SEMUN     /* Provide the union semun. */
+    union semun {
+       int val;
+       struct semid_ds *buf;
+       unsigned short *array;
+    };
+#   endif
+#   ifdef USE_SEMCTL_SEMUN
+#       define Semctl(id, num, cmd, semun) semctl(id, num, cmd, semun)
+#   else
+#       ifdef USE_SEMCTL_SEMID_DS
+#           define Semctl(id, num, cmd, semun) semctl(id, num, cmd, semun.buf)
+#       endif
+#   endif
+#   ifndef Semctl      /* Place our bets on the semun horse. */
+#       define Semctl(id, num, cmd, semun) semctl(id, num, cmd, semun)
+#   endif
+#endif
 
 #endif /* Include guard */
-