• Home
  • Raw
  • Download

Lines Matching refs:out

35     std::ofstream out(hPath);  in writeH()  local
36 SkASSERT(out.good()); in writeH()
37 out << HEADER; in writeH()
38 out << "#ifndef SKSL_" << lexer << "\n"; in writeH()
39 out << "#define SKSL_" << lexer << "\n"; in writeH()
40 out << "#include <cstddef>\n"; in writeH()
41 out << "#include <cstdint>\n"; in writeH()
42 out << "namespace SkSL {\n"; in writeH()
43 out << "\n"; in writeH()
44 out << "struct " << token << " {\n"; in writeH()
45 out << " enum Kind {\n"; in writeH()
47 out << " #undef " << t << "\n"; in writeH()
48 out << " " << t << ",\n"; in writeH()
50 out << " };\n"; in writeH()
51 out << "\n"; in writeH()
52 out << " " << token << "()\n"; in writeH()
53 out << " : fKind(Kind::INVALID)\n"; in writeH()
54 out << " , fOffset(-1)\n"; in writeH()
55 out << " , fLength(-1) {}\n"; in writeH()
56 out << "\n"; in writeH()
57 out << " " << token << "(Kind kind, int32_t offset, int32_t length)\n"; in writeH()
58 out << " : fKind(kind)\n"; in writeH()
59 out << " , fOffset(offset)\n"; in writeH()
60 out << " , fLength(length) {}\n"; in writeH()
61 out << "\n"; in writeH()
62 out << " Kind fKind;\n"; in writeH()
63 out << " int fOffset;\n"; in writeH()
64 out << " int fLength;\n"; in writeH()
65 out << "};\n"; in writeH()
66 out << "\n"; in writeH()
67 out << "class " << lexer << " {\n"; in writeH()
68 out << "public:\n"; in writeH()
69 out << " void start(const char* text, int32_t length) {\n"; in writeH()
70 out << " fText = text;\n"; in writeH()
71 out << " fLength = length;\n"; in writeH()
72 out << " fOffset = 0;\n"; in writeH()
73 out << " }\n"; in writeH()
74 out << "\n"; in writeH()
75 out << " " << token << " next();\n"; in writeH()
76 out << "\n"; in writeH()
77 out << "private:\n"; in writeH()
78 out << " const char* fText;\n"; in writeH()
79 out << " int32_t fLength;\n"; in writeH()
80 out << " int32_t fOffset;\n"; in writeH()
81 out << "};\n"; in writeH()
82 out << "\n"; in writeH()
83 out << "} // namespace\n"; in writeH()
84 out << "#endif\n"; in writeH()
89 std::ofstream out(cppPath); in writeCPP() local
90 SkASSERT(out.good()); in writeCPP()
91 out << HEADER; in writeCPP()
92 out << "#include \"" << include << "\"\n"; in writeCPP()
93 out << "\n"; in writeCPP()
94 out << "namespace SkSL {\n"; in writeCPP()
95 out << "\n"; in writeCPP()
101 out << "static int8_t mappings[" << dfa.fCharMappings.size() << "] = {\n "; in writeCPP()
104 out << separator << std::to_string(m); in writeCPP()
107 out << "\n};\n"; in writeCPP()
108 out << "static int16_t transitions[" << dfa.fTransitions.size() << "][" << states << "] = {\n"; in writeCPP()
110 out << " {"; in writeCPP()
113 out << " " << dfa.fTransitions[c][j] << ","; in writeCPP()
115 out << " 0,"; in writeCPP()
118 out << " },\n"; in writeCPP()
120 out << "};\n"; in writeCPP()
121 out << "\n"; in writeCPP()
123 out << "static int8_t accepts[" << states << "] = {"; in writeCPP()
126 out << " " << dfa.fAccepts[i] << ","; in writeCPP()
128 out << " " << INVALID << ","; in writeCPP()
131 out << " };\n"; in writeCPP()
132 out << "\n"; in writeCPP()
134 out << token << " " << lexer << "::next() {\n"; in writeCPP()
135 out << " // note that we cheat here: normally a lexer needs to worry about the case\n"; in writeCPP()
136 out << " // where a token has a prefix which is not itself a valid token - for instance, \n"; in writeCPP()
137 out << " // maybe we have a valid token 'while', but 'w', 'wh', etc. are not valid\n"; in writeCPP()
138 out << " // tokens. Our grammar doesn't have this property, so we can simplify the logic\n"; in writeCPP()
139 out << " // a bit.\n"; in writeCPP()
140 out << " int32_t startOffset = fOffset;\n"; in writeCPP()
141 out << " if (startOffset == fLength) {\n"; in writeCPP()
142 out << " return " << token << "(" << token << "::END_OF_FILE, startOffset, 0);\n"; in writeCPP()
143 out << " }\n"; in writeCPP()
144 out << " int16_t state = 1;\n"; in writeCPP()
145 out << " while (fOffset < fLength) {\n"; in writeCPP()
146 out << " if ((uint8_t) fText[fOffset] >= " << dfa.fCharMappings.size() << ") {"; in writeCPP()
147 out << " ++fOffset;\n"; in writeCPP()
148 out << " break;"; in writeCPP()
149 out << " }"; in writeCPP()
150 out << " int16_t newState = transitions[mappings[(int) fText[fOffset]]][state];\n"; in writeCPP()
151 out << " if (!newState) {\n"; in writeCPP()
152 out << " break;\n"; in writeCPP()
153 out << " }\n"; in writeCPP()
154 out << " state = newState;"; in writeCPP()
155 out << " ++fOffset;\n"; in writeCPP()
156 out << " }\n"; in writeCPP()
157 out << " Token::Kind kind = (" << token << "::Kind) accepts[state];\n"; in writeCPP()
158 out << " return " << token << "(kind, startOffset, fOffset - startOffset);\n"; in writeCPP()
159 out << "}\n"; in writeCPP()
160 out << "\n"; in writeCPP()
161 out << "} // namespace\n"; in writeCPP()