diff -r f332b62cd2c1 -r c6aed7e5f070 lib/iec_types_all.h --- a/lib/iec_types_all.h Tue Dec 01 09:03:33 2009 +0100 +++ b/lib/iec_types_all.h Wed Dec 02 16:11:01 2009 +0100 @@ -10,13 +10,54 @@ /* Include non windows.h clashing typedefs */ #include "iec_types.h" +#define TRUE 1 +#define FALSE 0 + +#define __DECLARE_IEC_TYPE(type)\ +typedef IEC_##type type;\ +\ +typedef struct {\ + IEC_##type value;\ + IEC_BYTE flags;\ +} __IEC_##type##_t;\ +\ +typedef struct {\ + IEC_##type *value;\ + IEC_BYTE flags;\ + IEC_##type fvalue;\ +} __IEC_##type##_p; + +#define __DECLARE_DERIVED_TYPE(base, type)\ +typedef base type;\ +typedef __IEC_##base##_t __IEC_##type##_t; + +#define __DECLARE_COMPLEX_STRUCT(type)\ +typedef struct {\ + type value;\ + IEC_BYTE flags;\ +} __IEC_##type##_t;\ +\ +typedef struct {\ + type *value;\ + IEC_BYTE flags;\ +} __IEC_##type##_p; + +#define __DECLARE_ARRAY_TYPE(base, type, size)\ +typedef base type size;\ +__DECLARE_COMPLEX_STRUCT(type); + +#define __DECLARE_STRUCT_TYPE(elements, type)\ +typedef elements type;\ +__DECLARE_COMPLEX_STRUCT(type); + /* Those typdefs clash with windows.h */ /* i.e. this file cannot be included aside windows.h */ +ANY(__DECLARE_IEC_TYPE) + + +/* typedef IEC_BOOL BOOL; -#define TRUE 1 -#define FALSE 0 - typedef IEC_SINT SINT; typedef IEC_INT INT; typedef IEC_DINT DINT; @@ -41,9 +82,10 @@ typedef IEC_TOD TOD; typedef IEC_STRING STRING; +*/ typedef struct { - BOOL state; // current step state. 0 : inative, 1: active + __IEC_BOOL_t state; // current step state. 0 : inative, 1: active BOOL prev_state; // previous step state. 0 : inative, 1: active TIME elapsed_time; // time since step is active } STEP;