]> git.cworth.org Git - apitrace/blobdiff - trace_model.cpp
Ignore assertion failure on Mac OS X.
[apitrace] / trace_model.cpp
index f8801ce2103e61615d038cd784d81922be75c26c..e8bb3e41ce761302678f4dea889a07289184b805 100644 (file)
@@ -63,47 +63,57 @@ Blob::~Blob() {
 
 
 // bool cast
-Null   ::operator bool(void) const { return false; }
-Bool   ::operator bool(void) const { return value; }
-SInt   ::operator bool(void) const { return value != 0; }
-UInt   ::operator bool(void) const { return value != 0; }
-Float  ::operator bool(void) const { return value != 0; }
-String ::operator bool(void) const { return true; }
-Enum   ::operator bool(void) const { return static_cast<bool>(*sig->second); }
-Struct ::operator bool(void) const { return true; }
-Array  ::operator bool(void) const { return true; }
-Blob   ::operator bool(void) const { return true; }
-Pointer::operator bool(void) const { return value != 0; }
+bool Null   ::toBool(void) const { return false; }
+bool Bool   ::toBool(void) const { return value; }
+bool SInt   ::toBool(void) const { return value != 0; }
+bool UInt   ::toBool(void) const { return value != 0; }
+bool Float  ::toBool(void) const { return value != 0; }
+bool String ::toBool(void) const { return true; }
+bool Enum   ::toBool(void) const { return sig->second->toBool(); }
+bool Struct ::toBool(void) const { return true; }
+bool Array  ::toBool(void) const { return true; }
+bool Blob   ::toBool(void) const { return true; }
+bool Pointer::toBool(void) const { return value != 0; }
 
 
 // signed integer cast
-Value  ::operator signed long long (void) const { assert(0); return 0; }
-Null   ::operator signed long long (void) const { return 0; }
-Bool   ::operator signed long long (void) const { return static_cast<signed long long>(value); }
-SInt   ::operator signed long long (void) const { return value; }
-UInt   ::operator signed long long (void) const { assert(static_cast<signed long long>(value) >= 0); return static_cast<signed long long>(value); }
-Float  ::operator signed long long (void) const { return static_cast<signed long long>(value); }
-Enum   ::operator signed long long (void) const { return static_cast<signed long long>(*sig->second); }
+signed long long Value  ::toSInt(void) const { assert(0); return 0; }
+signed long long Null   ::toSInt(void) const { return 0; }
+signed long long Bool   ::toSInt(void) const { return static_cast<signed long long>(value); }
+signed long long SInt   ::toSInt(void) const { return value; }
+signed long long UInt   ::toSInt(void) const { assert(static_cast<signed long long>(value) >= 0); return static_cast<signed long long>(value); }
+signed long long Float  ::toSInt(void) const { return static_cast<signed long long>(value); }
+signed long long Enum   ::toSInt(void) const { return sig->second->toSInt(); }
 
 
 // unsigned integer cast
-Value  ::operator unsigned long long (void) const { assert(0); return 0; }
-Null   ::operator unsigned long long (void) const { return 0; }
-Bool   ::operator unsigned long long (void) const { return static_cast<unsigned long long>(value); }
-SInt   ::operator unsigned long long (void) const { assert(value >= 0); return static_cast<signed long long>(value); }
-UInt   ::operator unsigned long long (void) const { return value; }
-Float  ::operator unsigned long long (void) const { return static_cast<unsigned long long>(value); }
-Enum   ::operator unsigned long long (void) const { return static_cast<unsigned long long>(*sig->second); }
+unsigned long long Value  ::toUInt(void) const { assert(0); return 0; }
+unsigned long long Null   ::toUInt(void) const { return 0; }
+unsigned long long Bool   ::toUInt(void) const { return static_cast<unsigned long long>(value); }
+unsigned long long SInt   ::toUInt(void) const { assert(value >= 0); return static_cast<signed long long>(value); }
+unsigned long long UInt   ::toUInt(void) const { return value; }
+unsigned long long Float  ::toUInt(void) const { return static_cast<unsigned long long>(value); }
+unsigned long long Enum   ::toUInt(void) const { return sig->second->toUInt(); }
 
 
 // floating point cast
-Value  ::operator double (void) const { assert(0); return 0; }
-Null   ::operator double (void) const { return 0; }
-Bool   ::operator double (void) const { return static_cast<double>(value); }
-SInt   ::operator double (void) const { return static_cast<double>(value); }
-UInt   ::operator double (void) const { return static_cast<double>(value); }
-Float  ::operator double (void) const { return value; }
-Enum   ::operator double (void) const { return static_cast<unsigned long long>(*sig->second); }
+float Value  ::toFloat(void) const { assert(0); return 0; }
+float Null   ::toFloat(void) const { return 0; }
+float Bool   ::toFloat(void) const { return static_cast<float>(value); }
+float SInt   ::toFloat(void) const { return static_cast<float>(value); }
+float UInt   ::toFloat(void) const { return static_cast<float>(value); }
+float Float  ::toFloat(void) const { return value; }
+float Enum   ::toFloat(void) const { return sig->second->toFloat(); }
+
+
+// floating point cast
+double Value  ::toDouble(void) const { assert(0); return 0; }
+double Null   ::toDouble(void) const { return 0; }
+double Bool   ::toDouble(void) const { return static_cast<double>(value); }
+double SInt   ::toDouble(void) const { return static_cast<double>(value); }
+double UInt   ::toDouble(void) const { return static_cast<double>(value); }
+double Float  ::toDouble(void) const { return value; }
+double Enum   ::toDouble(void) const { return sig->second->toDouble(); }
 
 
 // pointer cast
@@ -307,7 +317,11 @@ public:
         os << bold << call->sig->name << normal << "(";
         for (unsigned i = 0; i < call->args.size(); ++i) {
             os << sep << italic << call->sig->arg_names[i] << normal << " = ";
-            _visit(call->args[i]);
+            if (call->args[i]) {
+                _visit(call->args[i]);
+            } else {
+               os << "?";
+            }
             sep = ", ";
         }
         os << ")";