lib/accessor.h
changeset 231 b8527b0abe75
parent 227 560c1231ad1f
child 235 ed66dc50f31a
equal deleted inserted replaced
230:816846a8d66b 231:b8527b0abe75
     5 // variable declaration macros
     5 // variable declaration macros
     6 #define __DECLARE_VAR(type, name)\
     6 #define __DECLARE_VAR(type, name)\
     7 	__IEC_##type##_t name;
     7 	__IEC_##type##_t name;
     8 #define __DECLARE_GLOBAL(type, resource, name)\
     8 #define __DECLARE_GLOBAL(type, resource, name)\
     9 	__IEC_##type##_t resource##__##name;\
     9 	__IEC_##type##_t resource##__##name;\
    10 	static __IEC_##type##_t *GLOBAL__##name = &resource##__##name;
    10 	static __IEC_##type##_t *GLOBAL__##name = &resource##__##name;\
       
    11 	void __SET_GLOBAL_##name(type value) {\
       
    12 		if (!((*GLOBAL__##name).flags & __IEC_FORCE_FLAG))\
       
    13 			(*GLOBAL__##name).value = value;\
       
    14 	}
    11 #define __DECLARE_GLOBAL_LOCATION(type, location)\
    15 #define __DECLARE_GLOBAL_LOCATION(type, location)\
    12 	extern type *location;
    16 	extern type *location;
    13 #define __DECLARE_GLOBAL_LOCATED(type, resource, name)\
    17 #define __DECLARE_GLOBAL_LOCATED(type, resource, name)\
    14 	__IEC_##type##_p resource##__##name;\
    18 	__IEC_##type##_p resource##__##name;\
    15 	static __IEC_##type##_p *GLOBAL__##name;
    19 	static __IEC_##type##_p *GLOBAL__##name;
    58 	name.value
    62 	name.value
    59 
    63 
    60 // variable setting macros
    64 // variable setting macros
    61 #define __SET_VAR(name, new_value, ...)\
    65 #define __SET_VAR(name, new_value, ...)\
    62 	if (!(name.flags & __IEC_FORCE_FLAG)) name.value __VA_ARGS__ = new_value
    66 	if (!(name.flags & __IEC_FORCE_FLAG)) name.value __VA_ARGS__ = new_value
    63 #define __SET_EXTERNAL(name, new_value, ...)\
    67 #define __SET_EXTERNAL(global, name, new_value)\
    64 	if (!(name.flags & __IEC_FORCE_FLAG)) *(name.value) __VA_ARGS__ = new_value
    68 	if (!(name.flags & __IEC_FORCE_FLAG))\
       
    69 		__SET_GLOBAL_##global(new_value)
       
    70 #define __SET_COMPLEX_EXTERNAL(name, new_value, ...)\
       
    71 	*(name.value) __VA_ARGS__ = new_value
    65 #define __SET_LOCATED(name, new_value, ...)\
    72 #define __SET_LOCATED(name, new_value, ...)\
    66 	if (!(name.flags & __IEC_FORCE_FLAG)) *(name.value) __VA_ARGS__ = new_value
    73 	if (!(name.flags & __IEC_FORCE_FLAG)) *(name.value) __VA_ARGS__ = new_value
    67 
    74 
    68 #endif //__ACCESSOR_H
    75 #endif //__ACCESSOR_H