]> git.cworth.org Git - apitrace/blobdiff - trace_write.hpp
Use the process ID as process name when /proc/self/exe can't be read.
[apitrace] / trace_write.hpp
index 7b494e4126620bed70c1c114abfe0c1df54a0e5b..8797e56f835c667dbd7754d70b8ef96891064e20 100644 (file)
  *
  **************************************************************************/
 
-#ifndef _TRACE_HPP_
-#define _TRACE_HPP_
+/*
+ * Trace writing functions.
+ */
+
+#ifndef _TRACE_WRITE_HPP_
+#define _TRACE_WRITE_HPP_
+
+#include <stddef.h>
 
 namespace Trace {
 
+    typedef unsigned Id;
+
+    struct FunctionSig {
+        Id id;
+        const char *name;
+        unsigned num_args;
+        const char **args;
+    };
+
+    struct StructSig {
+        Id id;
+        const char *name;
+        unsigned num_members;
+        const char **members;
+    };
+
+    struct EnumSig {
+        Id id;
+        const char *name;
+        signed long long value;
+    };
+
+    struct BitmaskVal {
+        const char *name;
+        unsigned long long value;
+    };
+
+    struct BitmaskSig {
+        Id id;
+        unsigned count;
+        const BitmaskVal *values;
+    };
+
     void Open(void);
     void Close(void);
-    
-    unsigned BeginEnter(const char *function);
+
+    unsigned BeginEnter(const FunctionSig &function);
     void EndEnter(void);
-    
+
     void BeginLeave(unsigned call);
     void EndLeave(void);
-    
-    void BeginArg(unsigned index, const char *name);
+
+    void BeginArg(unsigned index);
     inline void EndArg(void) {}
 
     void BeginReturn(void);
@@ -49,29 +88,24 @@ namespace Trace {
     inline void BeginElement(void) {}
     inline void EndElement(void) {}
 
-    void BeginStruct(size_t length);
+    void BeginStruct(const StructSig *sig);
     inline void EndStruct(void) {}
 
-    void BeginMember(const char *name);
-    inline void EndMember(void) {}
-
-    void BeginBitmask(void);
-    void EndBitmask(void);
-
     void LiteralBool(bool value);
     void LiteralSInt(signed long long value);
     void LiteralUInt(unsigned long long value);
     void LiteralFloat(float value);
-    void LiteralFloat(double value);
+    void LiteralDouble(double value);
     void LiteralString(const char *str);
     void LiteralString(const char *str, size_t size);
     void LiteralWString(const wchar_t *str);
     void LiteralBlob(const void *data, size_t size);
-    void LiteralNamedConstant(const char *name, long long value);
+    void LiteralEnum(const EnumSig *sig);
+    void LiteralBitmask(const BitmaskSig &bitmask, unsigned long long value);
     void LiteralNull(void);
     void LiteralOpaque(const void *ptr);
 
     void Abort(void);
 }
 
-#endif /* _TRACE_HPP_ */
+#endif /* _TRACE_WRITE_HPP_ */