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 |