Update copyright date.
[asdcplib.git] / src / KM_error.h
index 612a92c7dc5452540574025a682701052123c8cd..2d3513a6c62d0483006ea2020311d662ca688be4 100755 (executable)
@@ -48,16 +48,20 @@ namespace Kumu
       Result_t();
 
     public:
-      Result_t(long v, const char* l) : value(v), label(l) {}
+      static const Result_t& Find(long);
+
+      Result_t(long v, const char* l);
+      ~Result_t();
+
       inline bool        operator==(const Result_t& rhs) const { return value == rhs.value; }
       inline bool        operator!=(const Result_t& rhs) const { return value != rhs.value; }
-      inline bool        Success() { return ( value >= 0 ); }
-      inline bool        Failure() { return ( value < 0 ); }
+      inline bool        Success() const { return ( value >= 0 ); }
+      inline bool        Failure() const { return ( value < 0 ); }
 
-      inline long        Value() { return value; }
+      inline long        Value() const { return value; }
       inline operator    long() const { return value; }
 
-      inline const char* Label() { return label; }
+      inline const char* Label() const { return label; }
       inline operator    const char*() const { return label; }
     };
 
@@ -110,6 +114,35 @@ namespace Kumu
     return Kumu::RESULT_NULL_STR; \
   }
 
+namespace Kumu
+{
+  // simple tracing mechanism
+  class DTrace_t
+  {
+    DTrace_t();
+    
+  protected:
+    const char* m_Label;
+    Result_t*   m_Watch;
+    int         m_Line;
+    const char* m_File;
+    int         m_Sequence;
+
+  public:
+    DTrace_t(const char* Label, Result_t* Watch, int Line, const char* File);
+    ~DTrace_t();
+  };
+}
+
+#ifdef KM_TRACE
+#define WDTRACE(l) DTrace_t __wl__Trace__((l), 0, __LINE__, __FILE__)
+#define WDTRACER(l,r) DTrace_t __wl__Trace__((l), &(r), __LINE__, __FILE__)
+#else
+#define WDTRACE(l)
+#define WDTRACER(l,r)
+#endif
+
+
 #endif // _KM_ERROR_H_
 
 //