1 | // GENERATED FILE - DO NOT MODIFY |
2 | |
3 | #include <algorithm> |
4 | |
5 | #include "tensorflow/core/framework/tensor_shape.pb_text-impl.h" |
6 | |
7 | using ::tensorflow::strings::ProtoSpaceAndComments; |
8 | using ::tensorflow::strings::Scanner; |
9 | using ::tensorflow::strings::StrCat; |
10 | |
11 | namespace tensorflow { |
12 | |
13 | string ProtoDebugString( |
14 | const ::tensorflow::TensorShapeProto_Dim& msg) { |
15 | string s; |
16 | ::tensorflow::strings::ProtoTextOutput o(&s, false); |
17 | internal::AppendProtoDebugString(&o, msg); |
18 | o.CloseTopMessage(); |
19 | return s; |
20 | } |
21 | |
22 | string ProtoShortDebugString( |
23 | const ::tensorflow::TensorShapeProto_Dim& msg) { |
24 | string s; |
25 | ::tensorflow::strings::ProtoTextOutput o(&s, true); |
26 | internal::AppendProtoDebugString(&o, msg); |
27 | o.CloseTopMessage(); |
28 | return s; |
29 | } |
30 | |
31 | namespace internal { |
32 | |
33 | void AppendProtoDebugString( |
34 | ::tensorflow::strings::ProtoTextOutput* o, |
35 | const ::tensorflow::TensorShapeProto_Dim& msg) { |
36 | o->AppendNumericIfNotZero("size" , msg.size()); |
37 | o->AppendStringIfNotEmpty("name" , ProtobufStringToString(msg.name())); |
38 | } |
39 | |
40 | } // namespace internal |
41 | |
42 | bool ProtoParseFromString( |
43 | const string& s, |
44 | ::tensorflow::TensorShapeProto_Dim* msg) { |
45 | msg->Clear(); |
46 | Scanner scanner(s); |
47 | if (!internal::ProtoParseFromScanner(&scanner, false, false, msg)) return false; |
48 | scanner.Eos(); |
49 | return scanner.GetResult(); |
50 | } |
51 | |
52 | namespace internal { |
53 | |
54 | bool ProtoParseFromScanner( |
55 | ::tensorflow::strings::Scanner* scanner, bool nested, bool close_curly, |
56 | ::tensorflow::TensorShapeProto_Dim* msg) { |
57 | std::vector<bool> has_seen(2, false); |
58 | while(true) { |
59 | ProtoSpaceAndComments(scanner); |
60 | if (nested && (scanner->Peek() == (close_curly ? '}' : '>'))) { |
61 | scanner->One(Scanner::ALL); |
62 | ProtoSpaceAndComments(scanner); |
63 | return true; |
64 | } |
65 | if (!nested && scanner->empty()) { return true; } |
66 | scanner->RestartCapture() |
67 | .Many(Scanner::LETTER_DIGIT_UNDERSCORE) |
68 | .StopCapture(); |
69 | StringPiece identifier; |
70 | if (!scanner->GetResult(nullptr, &identifier)) return false; |
71 | bool parsed_colon = false; |
72 | (void)parsed_colon; |
73 | ProtoSpaceAndComments(scanner); |
74 | if (scanner->Peek() == ':') { |
75 | parsed_colon = true; |
76 | scanner->One(Scanner::ALL); |
77 | ProtoSpaceAndComments(scanner); |
78 | } |
79 | if (identifier == "size" ) { |
80 | if (has_seen[0]) return false; |
81 | has_seen[0] = true; |
82 | int64 value; |
83 | if (!parsed_colon || !::tensorflow::strings::ProtoParseNumericFromScanner(scanner, &value)) return false; |
84 | msg->set_size(value); |
85 | } |
86 | else if (identifier == "name" ) { |
87 | if (has_seen[1]) return false; |
88 | has_seen[1] = true; |
89 | string str_value; |
90 | if (!parsed_colon || !::tensorflow::strings::ProtoParseStringLiteralFromScanner( |
91 | scanner, &str_value)) return false; |
92 | SetProtobufStringSwapAllowed(&str_value, msg->mutable_name()); |
93 | } |
94 | } |
95 | } |
96 | |
97 | } // namespace internal |
98 | |
99 | string ProtoDebugString( |
100 | const ::tensorflow::TensorShapeProto& msg) { |
101 | string s; |
102 | ::tensorflow::strings::ProtoTextOutput o(&s, false); |
103 | internal::AppendProtoDebugString(&o, msg); |
104 | o.CloseTopMessage(); |
105 | return s; |
106 | } |
107 | |
108 | string ProtoShortDebugString( |
109 | const ::tensorflow::TensorShapeProto& msg) { |
110 | string s; |
111 | ::tensorflow::strings::ProtoTextOutput o(&s, true); |
112 | internal::AppendProtoDebugString(&o, msg); |
113 | o.CloseTopMessage(); |
114 | return s; |
115 | } |
116 | |
117 | namespace internal { |
118 | |
119 | void AppendProtoDebugString( |
120 | ::tensorflow::strings::ProtoTextOutput* o, |
121 | const ::tensorflow::TensorShapeProto& msg) { |
122 | for (int i = 0; i < msg.dim_size(); ++i) { |
123 | o->OpenNestedMessage("dim" ); |
124 | ::tensorflow::internal::AppendProtoDebugString(o, msg.dim(i)); |
125 | o->CloseNestedMessage(); |
126 | } |
127 | o->AppendBoolIfTrue("unknown_rank" , msg.unknown_rank()); |
128 | } |
129 | |
130 | } // namespace internal |
131 | |
132 | bool ProtoParseFromString( |
133 | const string& s, |
134 | ::tensorflow::TensorShapeProto* msg) { |
135 | msg->Clear(); |
136 | Scanner scanner(s); |
137 | if (!internal::ProtoParseFromScanner(&scanner, false, false, msg)) return false; |
138 | scanner.Eos(); |
139 | return scanner.GetResult(); |
140 | } |
141 | |
142 | namespace internal { |
143 | |
144 | bool ProtoParseFromScanner( |
145 | ::tensorflow::strings::Scanner* scanner, bool nested, bool close_curly, |
146 | ::tensorflow::TensorShapeProto* msg) { |
147 | std::vector<bool> has_seen(2, false); |
148 | while(true) { |
149 | ProtoSpaceAndComments(scanner); |
150 | if (nested && (scanner->Peek() == (close_curly ? '}' : '>'))) { |
151 | scanner->One(Scanner::ALL); |
152 | ProtoSpaceAndComments(scanner); |
153 | return true; |
154 | } |
155 | if (!nested && scanner->empty()) { return true; } |
156 | scanner->RestartCapture() |
157 | .Many(Scanner::LETTER_DIGIT_UNDERSCORE) |
158 | .StopCapture(); |
159 | StringPiece identifier; |
160 | if (!scanner->GetResult(nullptr, &identifier)) return false; |
161 | bool parsed_colon = false; |
162 | (void)parsed_colon; |
163 | ProtoSpaceAndComments(scanner); |
164 | if (scanner->Peek() == ':') { |
165 | parsed_colon = true; |
166 | scanner->One(Scanner::ALL); |
167 | ProtoSpaceAndComments(scanner); |
168 | } |
169 | if (identifier == "dim" ) { |
170 | const bool is_list = (scanner->Peek() == '['); |
171 | do { |
172 | if (is_list) { |
173 | scanner->One(Scanner::ALL); |
174 | ProtoSpaceAndComments(scanner); |
175 | } |
176 | const char open_char = scanner->Peek(); |
177 | if (open_char != '{' && open_char != '<') return false; |
178 | scanner->One(Scanner::ALL); |
179 | ProtoSpaceAndComments(scanner); |
180 | if (!::tensorflow::internal::ProtoParseFromScanner( |
181 | scanner, true, open_char == '{', msg->add_dim())) return false; |
182 | } while (is_list && scanner->Peek() == ','); |
183 | if (is_list && !scanner->OneLiteral("]" ).GetResult()) return false; |
184 | } |
185 | else if (identifier == "unknown_rank" ) { |
186 | if (has_seen[1]) return false; |
187 | has_seen[1] = true; |
188 | bool value; |
189 | if (!parsed_colon || !::tensorflow::strings::ProtoParseBoolFromScanner(scanner, &value)) return false; |
190 | msg->set_unknown_rank(value); |
191 | } |
192 | } |
193 | } |
194 | |
195 | } // namespace internal |
196 | |
197 | } // namespace tensorflow |
198 | |