lib/accessor.h
changeset 416 0c2ef191b22a
parent 396 155560bfe837
child 400 093b72cd2ac3
equal deleted inserted replaced
415:5c115720149c 416:0c2ef191b22a
    30 		return (*GLOBAL__##name).flags & __IEC_FORCE_FLAG;\
    30 		return (*GLOBAL__##name).flags & __IEC_FORCE_FLAG;\
    31 	}\
    31 	}\
    32 	type* __GET_GLOBAL_##name(void) {\
    32 	type* __GET_GLOBAL_##name(void) {\
    33 		return (*GLOBAL__##name).value;\
    33 		return (*GLOBAL__##name).value;\
    34 	}
    34 	}
       
    35 #define __DECLARE_GLOBAL_PROTOTYPE(type, name)\
       
    36     extern type* __GET_GLOBAL_##name();
    35 #define __DECLARE_EXTERNAL(type, name)\
    37 #define __DECLARE_EXTERNAL(type, name)\
    36 	__IEC_##type##_p name;
    38 	__IEC_##type##_p name;
    37 #define __DECLARE_LOCATED(type, name)\
    39 #define __DECLARE_LOCATED(type, name)\
    38 	__IEC_##type##_p name;
    40 	__IEC_##type##_p name;
    39 
    41 
    53 #define __INIT_GLOBAL_LOCATED(domain, name, location, retained)\
    55 #define __INIT_GLOBAL_LOCATED(domain, name, location, retained)\
    54 	domain##__##name.value = location;\
    56 	domain##__##name.value = location;\
    55 	__INIT_RETAIN(domain##__##name, retained)
    57 	__INIT_RETAIN(domain##__##name, retained)
    56 #define __INIT_EXTERNAL(type, global, name, retained)\
    58 #define __INIT_EXTERNAL(type, global, name, retained)\
    57     {\
    59     {\
    58 		extern type* __GET_GLOBAL_##global();\
       
    59 		name.value = __GET_GLOBAL_##global();\
    60 		name.value = __GET_GLOBAL_##global();\
    60 		__INIT_RETAIN(name, retained)\
    61 		__INIT_RETAIN(name, retained)\
    61     }
    62     }
    62 #define __INIT_LOCATED(type, location, name, retained)\
    63 #define __INIT_LOCATED(type, location, name, retained)\
    63 	{\
    64 	{\
    71 
    72 
    72 // variable getting macros
    73 // variable getting macros
    73 #define __GET_VAR(name, ...)\
    74 #define __GET_VAR(name, ...)\
    74 	name.value __VA_ARGS__
    75 	name.value __VA_ARGS__
    75 #define __GET_EXTERNAL(name, ...)\
    76 #define __GET_EXTERNAL(name, ...)\
    76 	((name.flags & __IEC_FORCE_FLAG) ? name.fvalue __VA_ARGS__ : *(name.value) __VA_ARGS__)
    77 	((name.flags & __IEC_FORCE_FLAG) ? name.fvalue __VA_ARGS__ : (*(name.value)) __VA_ARGS__)
    77 #define __GET_LOCATED(name, ...)\
    78 #define __GET_LOCATED(name, ...)\
    78 	((name.flags & __IEC_FORCE_FLAG) ? name.fvalue __VA_ARGS__ : *(name.value) __VA_ARGS__)
    79 	((name.flags & __IEC_FORCE_FLAG) ? name.fvalue __VA_ARGS__ : (*(name.value)) __VA_ARGS__)
    79 #define __GET_VAR_BY_REF(name, ...)\
    80 #define __GET_VAR_BY_REF(name, ...)\
    80 	((name.flags & __IEC_FORCE_FLAG) ? &(name.fvalue __VA_ARGS__) : &(name.value __VA_ARGS__))
    81 	((name.flags & __IEC_FORCE_FLAG) ? &(name.fvalue __VA_ARGS__) : &(name.value __VA_ARGS__))
    81 #define __GET_EXTERNAL_BY_REF(name, ...)\
    82 #define __GET_EXTERNAL_BY_REF(name, ...)\
    82 	((name.flags & __IEC_FORCE_FLAG) ? &(name.fvalue __VA_ARGS__) : &(*(name.value) __VA_ARGS__))
    83 	((name.flags & __IEC_FORCE_FLAG) ? &(name.fvalue __VA_ARGS__) : &((*(name.value)) __VA_ARGS__))
    83 #define __GET_LOCATED_BY_REF(name, ...)\
    84 #define __GET_LOCATED_BY_REF(name, ...)\
    84 	((name.flags & __IEC_FORCE_FLAG) ? &(name.fvalue __VA_ARGS__) : &(*(name.value) __VA_ARGS__))
    85 	((name.flags & __IEC_FORCE_FLAG) ? &(name.fvalue __VA_ARGS__) : &((*(name.value)) __VA_ARGS__))
    85 
    86 
    86 // variable setting macros
    87 // variable setting macros
    87 #define __SET_VAR(prefix, name, new_value, ...)\
    88 #define __SET_VAR(prefix, name, new_value, ...)\
    88 	if (!(prefix name.flags & __IEC_FORCE_FLAG)) prefix name.value __VA_ARGS__ = new_value
    89 	if (!(prefix name.flags & __IEC_FORCE_FLAG)) prefix name.value __VA_ARGS__ = new_value
    89 #define __SET_EXTERNAL(prefix, name, new_value, ...)\
    90 #define __SET_EXTERNAL(prefix, name, new_value, ...)\