]> git.cworth.org Git - apitrace/blob - common/trace_copier.hpp
8df50f8981b7a197dc3d35cf5deb70df3a7b814d
[apitrace] / common / trace_copier.hpp
1 /*********************************************************************
2  *
3  * Copyright 2011 Intel Corporation
4  * All Rights Reserved.
5  *
6  * Permission is hereby granted, free of charge, to any person
7  * obtaining a copy of this software and associated documentation
8  * files (the "Software"), to deal in the Software without
9  * restriction, including without limitation the rights to use, copy,
10  * modify, merge, publish, distribute, sublicense, and/or sell copies
11  * of the Software, and to permit persons to whom the Software is
12  * furnished to do so, subject to the following conditions:
13  *
14  * The above copyright notice and this permission notice shall be
15  * included in all copies or substantial portions of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
21  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24  * SOFTWARE.
25  *
26  *********************************************************************/
27
28 #ifndef _TRACE_COPIER_HPP_
29 #define _TRACE_COPIER_HPP_
30
31 #include "trace_writer.hpp"
32
33
34 namespace trace {
35
36 class Copier: public Visitor
37 {
38 protected:
39     trace::Writer writer;
40
41 public:
42     Copier(const char *);
43     ~Copier();
44     virtual void visit(Null *);
45     virtual void visit(Bool *);
46     virtual void visit(SInt *);
47     virtual void visit(UInt *);
48     virtual void visit(Float *);
49     virtual void visit(Double *);
50     virtual void visit(String *);
51     virtual void visit(Enum *);
52     virtual void visit(Bitmask *);
53     virtual void visit(Struct *);
54     virtual void visit(Array *);
55     virtual void visit(Blob *);
56     virtual void visit(Pointer *);
57     virtual void visit(Call *call);
58 };
59
60 }
61
62 #endif /* _TRACE_COPIER_HPP_ */