]> 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 9f9acdba14ab368825822e2ac91695a9eae7366c..8797e56f835c667dbd7754d70b8ef96891064e20 100644 (file)
  *
  **************************************************************************/
 
+/*
+ * Trace writing functions.
+ */
+
 #ifndef _TRACE_WRITE_HPP_
 #define _TRACE_WRITE_HPP_
 
+#include <stddef.h>
+
 namespace Trace {
 
     typedef unsigned Id;
@@ -37,6 +43,19 @@ namespace Trace {
         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;
@@ -50,13 +69,13 @@ namespace Trace {
 
     void Open(void);
     void Close(void);
-    
+
     unsigned BeginEnter(const FunctionSig &function);
     void EndEnter(void);
-    
+
     void BeginLeave(unsigned call);
     void EndLeave(void);
-    
+
     void BeginArg(unsigned index);
     inline void EndArg(void) {}
 
@@ -69,22 +88,19 @@ 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 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);