lib/accessor.h
changeset 235 ed66dc50f31a
parent 231 b8527b0abe75
child 242 0036357a990f
--- 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, ...)\