--- ../x10.runtime/src-cpp/x10aux/basic_functions.h.orig 2014-03-09 14:42:17.000000000 +0100 +++ ../x10.runtime/src-cpp/x10aux/basic_functions.h 2014-03-09 15:44:47.000000000 +0100 @@ -31,6 +31,27 @@ namespace x10aux { + /* prototypes */ + inline x10_boolean struct_equals(const x10_double x, const x10_double y); + inline x10_boolean struct_equals(const x10_float x, const x10_float y); + inline x10_boolean struct_equals(const x10_long x, const x10_long y); + inline x10_boolean struct_equals(const x10_int x, const x10_int y); + inline x10_boolean struct_equals(const x10_short x, const x10_short y); + inline x10_boolean struct_equals(const x10_byte x, const x10_byte y); + inline x10_boolean struct_equals(const x10_ulong x, const x10_ulong y); + inline x10_boolean struct_equals(const x10_uint x, const x10_uint y); + inline x10_boolean struct_equals(const x10_ushort x, const x10_ushort y); + inline x10_boolean struct_equals(const x10_ubyte x, const x10_ubyte y); + inline x10_boolean struct_equals(const x10_char x, const x10_char y); + inline x10_boolean struct_equals(const x10_boolean x, const x10_boolean y); + template inline x10_boolean struct_equals(T x, U y); + template inline x10_boolean struct_equals(captured_ref_lval x, U y); + template inline x10_boolean struct_equals(T x, captured_ref_lval y); + template inline x10_boolean struct_equals(captured_ref_lval x, captured_ref_lval y); + template inline x10_boolean struct_equals(captured_struct_lval x, U y); + template inline x10_boolean struct_equals(T x, captured_struct_lval y); + template inline x10_boolean struct_equals(captured_struct_lval x, captured_struct_lval y); + /******* type_name ********/ template inline ref type_name(ref x) { @@ -362,6 +383,23 @@ ref to_string(x10_char v); + /* + * Wrapers around to_string to translate null to "null" + */ + template ref safe_to_string(ref v) { + if (v.isNull()) return string_utils::lit("null"); + return to_string(v); + } + template ref safe_to_string(captured_ref_lval v) { + return safe_to_string(*v); + } + template ref safe_to_string(captured_struct_lval v) { + return to_string(*v); + } + template ref safe_to_string(T v) { + return to_string(v); + } + /******* zeroValue ********/ template struct Zero {