]> git.cworth.org Git - apitrace/blob - trace_write.hpp
Add brief comments.
[apitrace] / trace_write.hpp
1 /**************************************************************************
2  *
3  * Copyright 2007-2010 VMware, Inc.
4  * All Rights Reserved.
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to deal
8  * in the Software without restriction, including without limitation the rights
9  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10  * copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in
14  * all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22  * THE SOFTWARE.
23  *
24  **************************************************************************/
25
26 /*
27  * Trace writing functions.
28  */
29
30 #ifndef _TRACE_WRITE_HPP_
31 #define _TRACE_WRITE_HPP_
32
33 namespace Trace {
34
35     typedef unsigned Id;
36
37     struct FunctionSig {
38         Id id;
39         const char *name;
40         unsigned num_args;
41         const char **args;
42     };
43
44     struct StructSig {
45         Id id;
46         const char *name;
47         unsigned num_members;
48         const char **members;
49     };
50
51     struct EnumSig {
52         Id id;
53         const char *name;
54         signed long long value;
55     };
56
57     struct BitmaskVal {
58         const char *name;
59         unsigned long long value;
60     };
61
62     struct BitmaskSig {
63         Id id;
64         unsigned count;
65         const BitmaskVal *values;
66     };
67
68     void Open(void);
69     void Close(void);
70
71     unsigned BeginEnter(const FunctionSig &function);
72     void EndEnter(void);
73
74     void BeginLeave(unsigned call);
75     void EndLeave(void);
76
77     void BeginArg(unsigned index);
78     inline void EndArg(void) {}
79
80     void BeginReturn(void);
81     inline void EndReturn(void) {}
82
83     void BeginArray(size_t length);
84     inline void EndArray(void) {}
85
86     inline void BeginElement(void) {}
87     inline void EndElement(void) {}
88
89     void BeginStruct(const StructSig *sig);
90     inline void EndStruct(void) {}
91
92     void LiteralBool(bool value);
93     void LiteralSInt(signed long long value);
94     void LiteralUInt(unsigned long long value);
95     void LiteralFloat(float value);
96     void LiteralFloat(double value);
97     void LiteralString(const char *str);
98     void LiteralString(const char *str, size_t size);
99     void LiteralWString(const wchar_t *str);
100     void LiteralBlob(const void *data, size_t size);
101     void LiteralEnum(const EnumSig *sig);
102     void LiteralBitmask(const BitmaskSig &bitmask, unsigned long long value);
103     void LiteralNull(void);
104     void LiteralOpaque(const void *ptr);
105
106     void Abort(void);
107 }
108
109 #endif /* _TRACE_WRITE_HPP_ */