--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/iec_types_all.h Tue Aug 19 18:03:11 2008 +0200
@@ -0,0 +1,97 @@
+#ifndef IEC_TYPES_ALL_H
+#define IEC_TYPES_ALL_H
+
+#include "iec_std_lib_generated.h"
+
+/*********************/
+/* IEC Types defs */
+/*********************/
+
+/* Include non windows.h clashing typedefs */
+#include "iec_types.h"
+
+/* Those typdefs clash with windows.h */
+/* i.e. this file cannot be included aside windows.h */
+typedef IEC_BOOL BOOL;
+
+#define TRUE 1
+#define FALSE 0
+
+typedef IEC_SINT SINT;
+typedef IEC_INT INT;
+typedef IEC_DINT DINT;
+typedef IEC_LINT LINT;
+
+typedef IEC_USINT USINT;
+typedef IEC_UINT UINT;
+typedef IEC_UDINT UDINT;
+typedef IEC_ULINT ULINT;
+
+typedef IEC_BYTE BYTE;
+typedef IEC_WORD WORD;
+typedef IEC_DWORD DWORD;
+typedef IEC_LWORD LWORD;
+
+typedef IEC_REAL REAL;
+typedef IEC_LREAL LREAL;
+
+typedef IEC_TIME TIME;
+typedef IEC_DATE DATE;
+typedef IEC_DT DT;
+typedef IEC_TOD TOD;
+
+typedef IEC_STRING STRING;
+
+typedef struct {
+ BOOL 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;
+
+typedef struct {
+ BOOL stored; // action storing state. 0 : not stored, 1: stored
+ BOOL state; // current action state. 0 : inative, 1: active
+ BOOL set; // set have been requested (reset each time the body is evaluated)
+ BOOL reset; // reset have been requested (reset each time the body is evaluated)
+ TIME set_remaining_time; // time before set will be requested
+ TIME reset_remaining_time; // time before reset will be requested
+} ACTION;
+
+/* Extra debug types for SFC */
+#define ANY_SFC(DO) DO(STEP) DO(TRANSITION) DO(ACTION)
+
+/* Enumerate native types */
+#define __decl_enum_type(TYPENAME) TYPENAME##_ENUM,
+typedef enum{
+ ANY(__decl_enum_type)
+ ANY_SFC(__decl_enum_type)
+ /*TODO handle custom types*/
+} __IEC_types_enum;
+
+/* Get size of type from its number */
+#define __decl_size_case(TYPENAME) case TYPENAME##_ENUM: return sizeof(TYPENAME);
+#define __decl_size_case_force_BOOL(TYPENAME) case TYPENAME##_ENUM: return sizeof(BOOL);
+static inline USINT __get_type_enum_size(__IEC_types_enum t){
+ switch(t){
+ ANY(__decl_size_case)
+ /* size do not correspond to real struct.
+ * only a bool is used to represent state*/
+ ANY_SFC(__decl_size_case_force_BOOL)
+ /*TODO handle custom types*/
+ }
+}
+
+/* Get name of type from its number */
+#define __decl_typename_case(TYPENAME) case TYPENAME##_ENUM: return #TYPENAME ;
+static inline const char* __get_type_enum_name(__IEC_types_enum t){
+ switch(t){
+ ANY(__decl_typename_case)
+ /* size do not correspond to real struct.
+ * only a bool is used to represent state*/
+ ANY_SFC(__decl_typename_case)
+ /*TODO handle custom types*/
+ }
+}
+
+
+#endif /*IEC_TYPES_ALL_H*/