summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2008-12-26 12:00:14 -0500
committerBen Boeckel <MathStuf@gmail.com>2008-12-26 12:00:14 -0500
commit63961be3711be4543ffbcbdc4b667ecfbe7890ca (patch)
tree6b0fd5140aa3a84d869efb40a8ab4b4736da171f
parent914961ded95358677c578dc23e60e0a0cb4bf74d (diff)
Fixed up some macros
-rw-r--r--sigmod/Macros.h15
1 files changed, 10 insertions, 5 deletions
diff --git a/sigmod/Macros.h b/sigmod/Macros.h
index 8c50ae70..acd71516 100644
--- a/sigmod/Macros.h
+++ b/sigmod/Macros.h
@@ -123,12 +123,17 @@
#define ERROR(msg) emit(error(msg))
#define EBOUNDS(variable, min, max) EBOUNDS_MOD(variable, (min), (max), variable)
#define EBOUNDS_IDX(variable) emit(error(bounds(#variable, variable)))
-#define EBOUNDS_MOD(variableName, min, max, variable) emit(error(bounds(#variableName, (min), (max), variable)))
-#define TBOUNDS(variable, min, max) \
- if ((variable < (min)) || ((max) < variable)) \
+#define EBOUNDS_MOD(variable, min, max, value) emit(error(bounds(#variable, (min), (max), value)))
+#define TBOUNDS(variable, min, max) TBOUNDS_MOD(variable, min, max, variable)
+#define TBOUNDS_MOD(variable, min, max, value) \
{ \
- EBOUNDS(variable, (min), (max)); \
- return false; \
+ const __typeof(min) variable##_min = (min); \
+ const __typeof(max) variable##_max = (max); \
+ if ((value < variable##_min) || (variable##_max < value)) \
+ { \
+ EBOUNDS_MOD(variable, variable##_min, variable##_max, value); \
+ return false; \
+ } \
}
#define IBOUNDS(variable, pointer, subclass) \
if (!pointer->subclass##ById(variable)) \