]> git.cworth.org Git - apitrace/blob - d3dretrace_main.cpp
Move tracers to wrappers subdirectory.
[apitrace] / d3dretrace_main.cpp
1 /**************************************************************************
2  *
3  * Copyright 2011 Jose Fonseca
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 #include <string.h>
28
29 #include "os_string.hpp"
30 #include "retrace.hpp"
31 #include "d3dretrace.hpp"
32
33
34 namespace d3dretrace {
35
36 static void display(void) {
37     retrace::Retracer retracer;
38
39     retracer.addCallbacks(d3d9_callbacks);
40
41     trace::Call *call;
42
43     while ((call = retrace::parser.parse_call())) {
44         retracer.retrace(*call);
45
46         delete call;
47     }
48
49     exit(0);
50 }
51
52
53 static void usage(void) {
54     std::cout << 
55         "Usage: d3dretrace [OPTION] TRACE\n"
56         "Replay TRACE.\n"
57         "\n"
58         "  -v           increase output verbosity\n"
59     ;
60 }
61
62
63 extern "C"
64 int main(int argc, char **argv)
65 {
66
67     int i;
68     for (i = 1; i < argc; ++i) {
69         const char *arg = argv[i];
70
71         if (arg[0] != '-') {
72             break;
73         }
74
75         if (!strcmp(arg, "--")) {
76             break;
77         } else if (!strcmp(arg, "--help")) {
78             usage();
79             return 0;
80         } else if (!strcmp(arg, "-v")) {
81             ++retrace::verbosity;
82         } else {
83             std::cerr << "error: unknown option " << arg << "\n";
84             usage();
85             return 1;
86         }
87     }
88
89     for ( ; i < argc; ++i) {
90         if (!retrace::parser.open(argv[i])) {
91             std::cerr << "error: failed to open " << argv[i] << "\n";
92             return 1;
93         }
94
95         display();
96
97         retrace::parser.close();
98     }
99
100     return 0;
101 }
102
103 } /* namespace glretrace */