]> git.cworth.org Git - apitrace/blobdiff - trace_format.hpp
Don't (de)serialize mirror images.
[apitrace] / trace_format.hpp
index 43efa0fc357fc9188212687e01a5fb2ffb636535..a8ee5eb8bab0347ce2a691691783d6c6939f6d22 100644 (file)
  *
  **************************************************************************/
 
+/*
+ * Trace binary format.
+ *
+ * Grammar:
+ *
+ *   trace = event* EOF
+ *
+ *   event = EVENT_ENTER call_sig call_detail+
+ *         | EVENT_LEAVE call_no call_detail+
+ *
+ *   call_sig = sig_id ( name arg_names )?
+ *
+ *   call_detail = ARG index value
+ *               | RET value
+ *               | END
+ *
+ *   value = NULL
+ *         | FALSE
+ *         | TRUE
+ *         | SINT int
+ *         | UINT int
+ *         | FLOAT float
+ *         | DOUBLE double
+ *         | STRING string
+ *         | BLOB string
+ *         | ENUM enum_sig
+ *         | BITMASK bitmask_sig value
+ *         | ARRAY length value+
+ *         | STRUCT struct_sig value+
+ *         | OPAQUE int
+ *
+ *   call_sig = id name arg_name*
+ *            | id
+ *
+ *   enum_sig = id name value
+ *            | id
+ *
+ *   bitmask_sig = id count (name value)+
+ *               | id
+ *
+ *   string = length (BYTE)*
+ *
+ */
+
 #ifndef _TRACE_FORMAT_HPP_
 #define _TRACE_FORMAT_HPP_
 
 namespace Trace {
 
-#define TRACE_VERSION 0
+#define TRACE_VERSION 1
 
 enum Event {
-   EVENT_ENTER = 0,
-   EVENT_LEAVE,
-   EVENT_MESSAGE
+    EVENT_ENTER = 0,
+    EVENT_LEAVE,
 };
 
 enum CallDetail {
-   CALL_END = 0,
-   CALL_ARG,
-   CALL_RET,
-   CALL_THREAD,
+    CALL_END = 0,
+    CALL_ARG,
+    CALL_RET,
+    CALL_THREAD,
 };
 
 enum Type {
-   TYPE_NULL = 0,
-   TYPE_FALSE,
-   TYPE_TRUE,
-   TYPE_SINT,
-   TYPE_UINT,
-   TYPE_FLOAT,
-   TYPE_DOUBLE,
-   TYPE_STRING, // Null terminated, human readible string
-   TYPE_BLOB, // Block of bytes
-   TYPE_ENUM,
-   TYPE_BITMASK,
-   TYPE_ARRAY,
-   TYPE_STRUCT,
-   TYPE_OPAQUE,
+    TYPE_NULL = 0,
+    TYPE_FALSE,
+    TYPE_TRUE,
+    TYPE_SINT,
+    TYPE_UINT,
+    TYPE_FLOAT,
+    TYPE_DOUBLE,
+    TYPE_STRING, // Null terminated, human readible string
+    TYPE_BLOB, // Block of bytes
+    TYPE_ENUM,
+    TYPE_BITMASK,
+    TYPE_ARRAY,
+    TYPE_STRUCT,
+    TYPE_OPAQUE,
 };
 
-/*
- * trace = call* EOF
- *
- * call = name (detail)* END
- *
- * detail = ARG name value
- *        | RET value
- *        | ...
- *
- * value = VOID
- *       | BOOL BOOL_VALUE
- *       | SINT INT_VALUE
- *       | UINT INT_VALUE
- *       | FLOAT FLOAT_VALUE
- *       | STRING string
- *       | BLOB string
- *       | CONST name value
- *       | BITMASK value+
- *       | ARRAY length 
- *
- * bool = 0 | 1
- *
- * name = string
- *
- * string = length (BYTE)*
- *
- * length = INT_VALUE
- */
-
 
 } /* namespace Trace */