lib/accessor.h
changeset 224 270ba3d91e59
parent 222 8b1757417a54
child 227 560c1231ad1f
equal deleted inserted replaced
223:a09ed6620a7d 224:270ba3d91e59
    20 
    20 
    21 
    21 
    22 // variable initialization macros
    22 // variable initialization macros
    23 #define __INIT_STRUCT(name, initial, retained)\
    23 #define __INIT_STRUCT(name, initial, retained)\
    24     name.value = initial;\
    24     name.value = initial;\
    25 	name.flags |= retained?RETAIN_FLAG:0;
    25 	name.flags |= retained?__IEC_RETAIN_FLAG:0;
    26 #define __INIT_VAR(name, initial, retained)\
    26 #define __INIT_VAR(name, initial, retained)\
    27 	__INIT_STRUCT(name, initial, retained)
    27 	__INIT_STRUCT(name, initial, retained)
    28 #define __INIT_GLOBAL(name, initial, retained)\
    28 #define __INIT_GLOBAL(name, initial, retained)\
    29 	__INIT_STRUCT((*GLOBAL__##name), initial, retained)
    29 	__INIT_STRUCT((*GLOBAL__##name), initial, retained)
    30 #define __INIT_GLOBAL_LOCATED(resource, name, location, retained)\
    30 #define __INIT_GLOBAL_LOCATED(resource, name, location, retained)\
    41 
    41 
    42 // variable getting macros
    42 // variable getting macros
    43 #define __GET_VAR(name, ...)\
    43 #define __GET_VAR(name, ...)\
    44 	name.value __VA_ARGS__
    44 	name.value __VA_ARGS__
    45 #define __GET_EXTERNAL(name)\
    45 #define __GET_EXTERNAL(name)\
    46 	name.flags & FORCE_FLAG ? name.fvalue : *(name.value)
    46 	name.flags & __IEC_FORCE_FLAG ? name.fvalue : *(name.value)
    47 #define __GET_LOCATED(name)\
    47 #define __GET_LOCATED(name)\
    48 	name.flags & FORCE_FLAG ? name.fvalue : *(name.value)
    48 	name.flags & __IEC_FORCE_FLAG ? name.fvalue : *(name.value)
    49 #define __GET_VAR_BY_REF(name)\
    49 #define __GET_VAR_BY_REF(name)\
    50 	&(name)
    50 	&(name)
    51 #define __GET_EXTERNAL_BY_REF(name)\
    51 #define __GET_EXTERNAL_BY_REF(name)\
    52 	name.value
    52 	name.value
    53 #define __GET_LOCATED_BY_REF(name)\
    53 #define __GET_LOCATED_BY_REF(name)\
    54 	name.value
    54 	name.value
    55 
    55 
    56 // variable setting macros
    56 // variable setting macros
    57 #define __SET_VAR(name, new_value, ...)\
    57 #define __SET_VAR(name, new_value, ...)\
    58 	if (!(name.flags & FORCE_FLAG)) name.value __VA_ARGS__ = new_value
    58 	if (!(name.flags & __IEC_FORCE_FLAG)) name.value __VA_ARGS__ = new_value
    59 #define __SET_EXTERNAL(name, new_value)\
    59 #define __SET_EXTERNAL(name, new_value)\
    60 	if (!(name.flags & FORCE_FLAG)) *(name.value) = new_value
    60 	if (!(name.flags & __IEC_FORCE_FLAG)) *(name.value) = new_value
    61 #define __SET_LOCATED(name, new_value)\
    61 #define __SET_LOCATED(name, new_value)\
    62 	if (!(name.flags & FORCE_FLAG)) *(name.value) = new_value
    62 	if (!(name.flags & __IEC_FORCE_FLAG)) *(name.value) = new_value
    63 
    63 
    64 #endif //__ACCESSOR_H
    64 #endif //__ACCESSOR_H