OLD | NEW |
| (Empty) |
1 #include "SkStream.h" | |
2 #include "SkString.h" | |
3 #include "SkTDArray.h" | |
4 #include <stdio.h> | |
5 | |
6 static bool replace(const char* fun, const char* dir, const char* filename, cons
t char* marker, | |
7 const char* marker2, const char* replace, size_t replaceLen) { | |
8 SkString outFileStr(dir); | |
9 outFileStr.append(filename); | |
10 SkFILEStream opStreamIn(outFileStr.c_str()); | |
11 if (!opStreamIn.isValid()) { | |
12 SkDebugf("%s couldn't find %s\n", fun, outFileStr.c_str()); | |
13 return false; | |
14 } | |
15 SkTDArray<char> opData; | |
16 opData.setCount(opStreamIn.getLength()); | |
17 size_t opLen = opData.count(); | |
18 opStreamIn.read(opData.begin(), opLen); | |
19 opStreamIn.setPath(NULL); | |
20 SkFILEWStream opStreamOut(outFileStr.c_str()); | |
21 if (!opStreamOut.isValid()) { | |
22 SkDebugf("%s couldn't open for writing %s\n", fun, outFileStr.c_str()); | |
23 return false; | |
24 } | |
25 | |
26 char* opInsert = strstr(opData.begin(), marker); | |
27 if (!opInsert) { | |
28 SkDebugf("%s missing marker in %s\n", fun, outFileStr.c_str()); | |
29 opStreamOut.write(opData.begin(), opLen); | |
30 opStreamOut.flush(); | |
31 return false; | |
32 } | |
33 const char* opInsertEnd = opInsert + strlen(marker); | |
34 if (marker2) { | |
35 char* opInsert2 = strstr(opInsert, marker2); | |
36 if (!opInsert2) { | |
37 SkDebugf("%s missing marker second half in %s\n", fun, outFileStr.c_
str()); | |
38 opStreamOut.write(opData.begin(), opLen); | |
39 opStreamOut.flush(); | |
40 return false; | |
41 } | |
42 opInsertEnd = opInsert2 + strlen(marker2); | |
43 } | |
44 opStreamOut.write(opData.begin(), opInsert - opData.begin()); | |
45 opStreamOut.write(replace, replaceLen); | |
46 opStreamOut.write(opInsertEnd, opLen - (opInsertEnd - opData.begin())); | |
47 opStreamOut.flush(); | |
48 return true; | |
49 } | |
50 | |
51 int main (int argc, char * const argv[]) { | |
52 if (argc != 2) { | |
53 SkDebugf("%s expected filename\n", argv[0]); | |
54 return 0; | |
55 } | |
56 const char* dir = "../../experimental/Intersection/"; | |
57 SkString inFileStr; | |
58 if (argv[1][0] != '/') { | |
59 inFileStr.append(dir); | |
60 } | |
61 inFileStr.append(argv[1]); | |
62 SkFILEStream inFile(inFileStr.c_str()); | |
63 if (!inFile.isValid()) { | |
64 SkDebugf("%s couldn't find %s\n", argv[0], argv[1]); | |
65 return 0; | |
66 } | |
67 SkTDArray<char> inData; | |
68 inData.setCount(inFile.getLength()); | |
69 size_t inLen = inData.count(); | |
70 inFile.read(inData.begin(), inLen); | |
71 inFile.setPath(NULL); | |
72 char* insert = strstr(inData.begin(), "\n\n\n"); | |
73 if (!insert) { | |
74 SkDebugf("%s missing two blank line delimiter in %s\n", argv[0], argv[1]
); | |
75 return 0; | |
76 } | |
77 insert += 1; // include first blank line | |
78 const char opMarker[] = | |
79 "</div>" "\n" | |
80 "\n" | |
81 "<script type=\"text/javascript\">" "\n" | |
82 "\n" | |
83 "var testDivs = [" "\n" | |
84 ; | |
85 if (!replace(argv[0], dir, "op.htm", opMarker, NULL, inData.begin(), | |
86 insert - inData.begin())) { | |
87 return 0; | |
88 } | |
89 const char newMarker[] = | |
90 "static void (*firstTest)() = " | |
91 ; | |
92 const char newMarker2[] = | |
93 ";" "\n" | |
94 "\n" | |
95 "static struct {" "\n" | |
96 " void (*fun)();" "\n" | |
97 " const char* str;" "\n" | |
98 "} tests[] = {" "\n" | |
99 ; | |
100 if (!replace(argv[0], dir, "SimplifyNew_Test.cpp", newMarker, newMarker2, in
sert + 2, | |
101 inLen - (insert - inData.begin()) - 2)) { | |
102 return 0; | |
103 } | |
104 const char forceReleaseMarker[] = | |
105 "#define FORCE_RELEASE 1 // set force release to 1 for multiple thr
ead -- no debugging" | |
106 ; | |
107 const char forceReleaseReplace[] = | |
108 "#define FORCE_RELEASE 0 // set force release to 1 for multiple thr
ead -- no debugging" | |
109 ; | |
110 if (!replace(argv[0], dir, "DataTypes.h", forceReleaseMarker, NULL, forceRel
easeReplace, | |
111 sizeof(forceReleaseReplace) - 1)) { | |
112 return 0; | |
113 } | |
114 return 0; | |
115 } | |
OLD | NEW |