1// GENERATED FILE - DO NOT MODIFY
2
3#include <algorithm>
4
5#include "tensorflow/core/framework/tensor_shape.pb_text-impl.h"
6
7using ::tensorflow::strings::ProtoSpaceAndComments;
8using ::tensorflow::strings::Scanner;
9using ::tensorflow::strings::StrCat;
10
11namespace tensorflow {
12
13string 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
22string 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
31namespace internal {
32
33void 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
42bool 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
52namespace internal {
53
54bool 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
99string 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
108string 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
117namespace internal {
118
119void 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
132bool 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
142namespace internal {
143
144bool 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