504 return IN.len == 5 ? !memcmp(&IN.body,"TRUE", IN.len) : 0; |
504 return IN.len == 5 ? !memcmp(&IN.body,"TRUE", IN.len) : 0; |
505 } |
505 } |
506 |
506 |
507 static inline LINT __pstring_to_sint(STRING* IN){ |
507 static inline LINT __pstring_to_sint(STRING* IN){ |
508 LINT res = 0; |
508 LINT res = 0; |
509 char tmp[STR_MAX_LEN]; |
|
510 char tmp2[STR_MAX_LEN]; |
|
511 __strlen_t l; |
509 __strlen_t l; |
512 unsigned int shift = 0; |
510 unsigned int shift = 0; |
513 |
511 |
514 if(IN->body[0]=='2' && IN->body[1]=='#'){ |
512 if(IN->body[0]=='2' && IN->body[1]=='#'){ |
515 /* 2#0101_1010_1011_1111 */ |
513 /* 2#0101_1010_1011_1111 */ |
740 /* BCD */ |
738 /* BCD */ |
741 #define __bcd_digit(fac) |
739 #define __bcd_digit(fac) |
742 static inline ULINT __bcd_to_uint(EN_ENO_PARAMS, LWORD IN){ |
740 static inline ULINT __bcd_to_uint(EN_ENO_PARAMS, LWORD IN){ |
743 TEST_EN(ULINT) |
741 TEST_EN(ULINT) |
744 return IN & 0xf + |
742 return IN & 0xf + |
745 !(IN >>= 4) ? 0 : IN & 0xf * 10ULL + |
743 !(IN >>= 4) ? 0 : (IN & 0xf * 10ULL) + |
746 !(IN >>= 4) ? 0 : IN & 0xf * 100ULL + |
744 !(IN >>= 4) ? 0 : (IN & 0xf * 100ULL) + |
747 !(IN >>= 4) ? 0 : IN & 0xf * 1000ULL + |
745 !(IN >>= 4) ? 0 : (IN & 0xf * 1000ULL) + |
748 !(IN >>= 4) ? 0 : IN & 0xf * 10000ULL + |
746 !(IN >>= 4) ? 0 : (IN & 0xf * 10000ULL) + |
749 !(IN >>= 4) ? 0 : IN & 0xf * 100000ULL + |
747 !(IN >>= 4) ? 0 : (IN & 0xf * 100000ULL) + |
750 !(IN >>= 4) ? 0 : IN & 0xf * 1000000ULL + |
748 !(IN >>= 4) ? 0 : (IN & 0xf * 1000000ULL) + |
751 !(IN >>= 4) ? 0 : IN & 0xf * 10000000ULL + |
749 !(IN >>= 4) ? 0 : (IN & 0xf * 10000000ULL) + |
752 !(IN >>= 4) ? 0 : IN & 0xf * 100000000ULL + |
750 !(IN >>= 4) ? 0 : (IN & 0xf * 100000000ULL) + |
753 !(IN >>= 4) ? 0 : IN & 0xf * 1000000000ULL + |
751 !(IN >>= 4) ? 0 : (IN & 0xf * 1000000000ULL) + |
754 !(IN >>= 4) ? 0 : IN & 0xf * 10000000000ULL + |
752 !(IN >>= 4) ? 0 : (IN & 0xf * 10000000000ULL) + |
755 !(IN >>= 4) ? 0 : IN & 0xf * 100000000000ULL + |
753 !(IN >>= 4) ? 0 : (IN & 0xf * 100000000000ULL) + |
756 !(IN >>= 4) ? 0 : IN & 0xf * 1000000000000ULL + |
754 !(IN >>= 4) ? 0 : (IN & 0xf * 1000000000000ULL) + |
757 !(IN >>= 4) ? 0 : IN & 0xf * 10000000000000ULL + |
755 !(IN >>= 4) ? 0 : (IN & 0xf * 10000000000000ULL) + |
758 !(IN >>= 4) ? 0 : IN & 0xf * 100000000000000ULL + |
756 !(IN >>= 4) ? 0 : (IN & 0xf * 100000000000000ULL) + |
759 !(IN >>= 4) ? 0 : IN & 0xf * 1000000000000000ULL; |
757 !(IN >>= 4) ? 0 : (IN & 0xf * 1000000000000000ULL); |
760 |
758 |
761 } |
759 } |
762 static inline LWORD __uint_to_bcd(EN_ENO_PARAMS, ULINT IN){ |
760 static inline LWORD __uint_to_bcd(EN_ENO_PARAMS, ULINT IN){ |
763 TEST_EN(LWORD) |
761 TEST_EN(LWORD) |
764 return (IN - (IN /= 10))| |
762 return (IN - (IN /= 10))| |
940 |
938 |
941 #define __ror_(TYPENAME)\ |
939 #define __ror_(TYPENAME)\ |
942 static inline TYPENAME __ror_##TYPENAME(EN_ENO_PARAMS, TYPENAME IN, USINT N){\ |
940 static inline TYPENAME __ror_##TYPENAME(EN_ENO_PARAMS, TYPENAME IN, USINT N){\ |
943 TEST_EN(TYPENAME)\ |
941 TEST_EN(TYPENAME)\ |
944 N %= 8*sizeof(TYPENAME);\ |
942 N %= 8*sizeof(TYPENAME);\ |
945 return (IN >> N) | (IN << 8*sizeof(TYPENAME)-N);\ |
943 return (IN >> N) | (IN << (8*sizeof(TYPENAME)-N));\ |
946 } |
944 } |
947 /* Call previously defined macro for each ANY_NBIT */ |
945 /* Call previously defined macro for each ANY_NBIT */ |
948 ANY_NBIT(__ror_) |
946 ANY_NBIT(__ror_) |
949 |
947 |
950 #define __rol_(TYPENAME)\ |
948 #define __rol_(TYPENAME)\ |
951 static inline TYPENAME __rol_##TYPENAME(EN_ENO_PARAMS, TYPENAME IN, USINT N){\ |
949 static inline TYPENAME __rol_##TYPENAME(EN_ENO_PARAMS, TYPENAME IN, USINT N){\ |
952 TEST_EN(TYPENAME)\ |
950 TEST_EN(TYPENAME)\ |
953 N %= 8*sizeof(TYPENAME);\ |
951 N %= 8*sizeof(TYPENAME);\ |
954 return (IN << N) | (IN >> 8*sizeof(TYPENAME)-N);\ |
952 return (IN << N) | (IN >> (8*sizeof(TYPENAME)-N));\ |
955 } |
953 } |
956 /* Call previously defined macro for each ANY_NBIT */ |
954 /* Call previously defined macro for each ANY_NBIT */ |
957 ANY_NBIT(__rol_) |
955 ANY_NBIT(__rol_) |
958 |
956 |
959 /*******************************************/ |
957 /*******************************************/ |
1293 __ne_time(TIME) |
1291 __ne_time(TIME) |
1294 |
1292 |
1295 __compare_string(__ne_, != ) |
1293 __compare_string(__ne_, != ) |
1296 |
1294 |
1297 |
1295 |
1298 ///* Get string representation of variable referenced by a void pointer |
1296 /* Get string representation of variable referenced by a void pointer |
1299 // * where type is given as its number */ |
1297 * where type is given as its number */ |
1300 //#define __decl_str_case(cat,TYPENAME) \ |
1298 /*#define __decl_str_case(cat,TYPENAME) \ |
1301 // case TYPENAME##_ENUM:\ |
1299 case TYPENAME##_ENUM:\ |
1302 // return __##cat##_to_string(*(TYPENAME*)p); |
1300 return __##cat##_to_string(*(TYPENAME*)p); |
1303 //#define __decl_str_case_bit(TYPENAME) __decl_str_case(bit,TYPENAME) |
1301 #define __decl_str_case_bit(TYPENAME) __decl_str_case(bit,TYPENAME) |
1304 //#define __decl_str_case_real(TYPENAME) __decl_str_case(real,TYPENAME) |
1302 #define __decl_str_case_real(TYPENAME) __decl_str_case(real,TYPENAME) |
1305 //#define __decl_str_case_sint(TYPENAME) __decl_str_case(sint,TYPENAME) |
1303 #define __decl_str_case_sint(TYPENAME) __decl_str_case(sint,TYPENAME) |
1306 //#define __decl_str_case_uint(TYPENAME) __decl_str_case(uint,TYPENAME) |
1304 #define __decl_str_case_uint(TYPENAME) __decl_str_case(uint,TYPENAME) |
1307 //static inline STRING __get_type_enum_str(__IEC_types_enum t, void* p){ |
1305 static inline STRING __get_type_enum_str(__IEC_types_enum t, void* p){ |
1308 // switch(t){ |
1306 switch(t){ |
1309 // __decl_str_case(bool,BOOL) |
1307 __decl_str_case(bool,BOOL) |
1310 // ANY_NBIT(__decl_str_case_bit) |
1308 ANY_NBIT(__decl_str_case_bit) |
1311 // ANY_REAL(__decl_str_case_real) |
1309 ANY_REAL(__decl_str_case_real) |
1312 // ANY_SINT(__decl_str_case_sint) |
1310 ANY_SINT(__decl_str_case_sint) |
1313 // ANY_UINT(__decl_str_case_uint) |
1311 ANY_UINT(__decl_str_case_uint) |
1314 // __decl_str_case(time,TIME) |
1312 __decl_str_case(time,TIME) |
1315 // __decl_str_case(date,DATE) |
1313 __decl_str_case(date,DATE) |
1316 // __decl_str_case(tod,TOD) |
1314 __decl_str_case(tod,TOD) |
1317 // __decl_str_case(dt, DT) |
1315 __decl_str_case(dt, DT) |
1318 // } |
1316 } |
1319 //} |
1317 } |
1320 // |
1318 */ |
1321 |
1319 |
1322 |
1320 |
1323 |
1321 |
1324 |
1322 |
1325 |
1323 |
1326 |
1324 |