Tizen 2.0 Release
[framework/uifw/embryo.git] / src / bin / embryo_cc_amx.h
index d5cb64e..0118e2d 100644 (file)
@@ -21,8 +21,6 @@
  *  Version: $Id$
  */
 
-#include "embryo_cc_osdefs.h"
-
 #ifndef EMBRYO_CC_AMX_H
 #define EMBRYO_CC_AMX_H
 
 #define sEXPMAX         19     /* maximum name length for file version <= 6 */
 #define sNAMEMAX        31     /* maximum name length of symbol name */
 
+#if defined (_MSC_VER) || (defined (__SUNPRO_C) && __SUNPRO_C < 0x5100)
+# pragma pack(1)
+# define EMBRYO_STRUCT_PACKED
+#elif defined (__GNUC__) || (defined (__SUNPRO_C) && __SUNPRO_C >= 0x5100)
+# define EMBRYO_STRUCT_PACKED __attribute__((packed))
+#else
+# define EMBRYO_STRUCT_PACKED
+#endif
+
    typedef struct tagAMX_FUNCSTUB
    {
       unsigned int        address;
       char                name[sEXPMAX + 1];
-   } __attribute__((packed)) AMX_FUNCSTUB;
+   } EMBRYO_STRUCT_PACKED AMX_FUNCSTUB;
 
 /* The AMX structure is the internal structure for many functions. Not all
  * fields are valid at all times; many fields are cached in local variables.
       cell reset_stk     ;
       cell reset_hea     ;
       cell          *syscall_d;        /* relocated value/address for the SYSCALL.D opcode */
-   } __attribute__((packed)) AMX;
+   } EMBRYO_STRUCT_PACKED AMX;
 
 /* The AMX_HEADER structure is both the memory format as the file format. The
  * structure is used internaly.
       int pubvars    ; /* the "public variables" table */
       int tags       ; /* the "public tagnames" table */
       int nametable  ; /* name table, file version 7 only */
-   } __attribute__((packed)) AMX_HEADER;
+   } EMBRYO_STRUCT_PACKED AMX_HEADER;
+
+#if defined _MSC_VER || (defined (__SUNPRO_C) && __SUNPRO_C < 0x5100)
+# pragma pack()
+#endif
+
 #define AMX_MAGIC       0xf1e0
 
    enum
             amx_GetAddr((amx), (param), &amx_cstr_);                 \
             amx_StrLen(amx_cstr_, &amx_length_);                     \
             if (amx_length_ > 0 &&                                   \
-                ((result) = (char*)alloca(amx_length_ + 1)) != NULL) \
+                ((result) = (char *)alloca(amx_length_ + 1))) \
               amx_GetString((result), amx_cstr_);                    \
             else (result) = NULL;                                    \
 }