--- a/stage3/datatype_functions.cc Wed Mar 14 10:51:49 2012 +0000
+++ b/stage3/datatype_functions.cc Wed Mar 14 11:14:41 2012 +0000
@@ -52,7 +52,7 @@
#define __ANY(DO) __ANY_DERIVED(DO) __ANY_ELEMENTARY(DO)
#define __ANY_DERIVED(DO)
#define __ANY_ELEMENTARY(DO) __ANY_MAGNITUDE(DO) __ANY_BIT(DO) __ANY_STRING(DO) __ANY_DATE(DO)
-#define __ANY_MAGNITUDE(DO) __ANY_NUM(DO) DO(TIME)
+#define __ANY_MAGNITUDE(DO) __ANY_NUM(DO) DO(time)
#define __ANY_BIT(DO) __ANY_NBIT(DO) DO(bool)
#define __ANY_NBIT(DO) DO(byte) DO(word) DO(dword) DO(lword)
//#define __ANY_STRING(DO) DO(string) DO(wstring)
@@ -67,8 +67,8 @@
#define __ANY_1(DO,P1) __ANY_DERIVED_1(DO,P1) __ANY_ELEMENTARY_1(DO,P1)
#define __ANY_DERIVED_1(DO,P1)
#define __ANY_ELEMENTARY_1(DO,P1) __ANY_MAGNITUDE_1(DO,P1) __ANY_BIT_1(DO,P1) __ANY_STRING_1(DO,P1) __ANY_DATE_1(DO,P1)
-#define __ANY_MAGNITUDE_1(DO,P1) __ANY_NUM_1(DO,P1) DO(TIME,P1)
-#define __ANY_BIT_1(DO,P1) __ANY_NBIT_1(DO,P1) DO(BOOL,P1)
+#define __ANY_MAGNITUDE_1(DO,P1) __ANY_NUM_1(DO,P1) DO(time,P1)
+#define __ANY_BIT_1(DO,P1) __ANY_NBIT_1(DO,P1) DO(bool,P1)
#define __ANY_NBIT_1(DO,P1) DO(byte,P1) DO(word,P1) DO(dword,P1) DO(lword,P1)
// #define __ANY_STRING_1(DO,P1) DO(string,P1) DO(wstring,P1)
#define __ANY_STRING_1(DO,P1) DO(string,P1)
@@ -345,6 +345,27 @@
{ NULL, NULL, NULL, widen_entry::ok },
};
+/**************************************************************/
+/**************************************************************/
+/**************************************************************/
+/******* *******/
+/******* TABLE 28: Standard comparison functions *******/
+/******* *******/
+/**************************************************************/
+/**************************************************************/
+/**************************************************************/
+/* table used by GT, GE, EQ, LE, LT, and NE operators, and equivalent ST expressions. */
+const struct widen_entry widen_CMP_table[] = {
+#define __cmp(TYPE) \
+ { &search_constant_type_c::TYPE##_type_name, &search_constant_type_c::TYPE##_type_name, &search_constant_type_c::bool_type_name, widen_entry::ok }, \
+ { &search_constant_type_c::safe##TYPE##_type_name, &search_constant_type_c::TYPE##_type_name, &search_constant_type_c::bool_type_name, widen_entry::ok }, \
+ { &search_constant_type_c::TYPE##_type_name, &search_constant_type_c::safe##TYPE##_type_name, &search_constant_type_c::bool_type_name, widen_entry::ok }, \
+ { &search_constant_type_c::safe##TYPE##_type_name, &search_constant_type_c::safe##TYPE##_type_name, &search_constant_type_c::safebool_type_name, widen_entry::ok },
+ __ANY_ELEMENTARY(__cmp)
+#undef __cmp
+
+ { NULL, NULL, NULL, widen_entry::ok },
+};
/* Search for a datatype inside a candidate_datatypes list.