diff -r e4d31cd0e6d8 -r ed66dc50f31a lib/accessor.h --- a/lib/accessor.h Sun Dec 13 11:41:22 2009 +0100 +++ b/lib/accessor.h Tue Dec 15 08:51:44 2009 +0100 @@ -54,12 +54,12 @@ (name.flags & __IEC_FORCE_FLAG) ? name.fvalue __VA_ARGS__ : *(name.value) __VA_ARGS__ #define __GET_LOCATED(name, ...)\ (name.flags & __IEC_FORCE_FLAG) ? name.fvalue __VA_ARGS__ : *(name.value) __VA_ARGS__ -#define __GET_VAR_BY_REF(name)\ - &(name) -#define __GET_EXTERNAL_BY_REF(name)\ - name.value -#define __GET_LOCATED_BY_REF(name)\ - name.value +#define __GET_VAR_BY_REF(name, ...)\ + (name.flags & __IEC_FORCE_FLAG) ? &(name.fvalue __VA_ARGS__) : &(name.value __VA_ARGS__) +#define __GET_EXTERNAL_BY_REF(name, ...)\ + (name.flags & __IEC_FORCE_FLAG) ? &(name.fvalue __VA_ARGS__) : &(*(name.value) __VA_ARGS__) +#define __GET_LOCATED_BY_REF(name, ...)\ + (name.flags & __IEC_FORCE_FLAG) ? &(name.fvalue __VA_ARGS__) : &(*(name.value) __VA_ARGS__) // variable setting macros #define __SET_VAR(name, new_value, ...)\