Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(236)

Side by Side Diff: third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_helpers.h

Issue 1322483002: Revert https://codereview.chromium.org/1291903002 (protobuf roll). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc. All rights reserved.
3 // https://developers.google.com/protocol-buffers/
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are
7 // met:
8 //
9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer.
11 // * Redistributions in binary form must reproduce the above
12 // copyright notice, this list of conditions and the following disclaimer
13 // in the documentation and/or other materials provided with the
14 // distribution.
15 // * Neither the name of Google Inc. nor the names of its
16 // contributors may be used to endorse or promote products derived from
17 // this software without specific prior written permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
31 #ifndef GOOGLE_PROTOBUF_COMPILER_OBJECTIVEC_HELPERS_H__
32 #define GOOGLE_PROTOBUF_COMPILER_OBJECTIVEC_HELPERS_H__
33
34 #include <string>
35 #include <vector>
36
37 #include <google/protobuf/descriptor.h>
38 #include <google/protobuf/descriptor.pb.h>
39
40 namespace google {
41 namespace protobuf {
42 namespace compiler {
43 namespace objectivec {
44
45 // Strips ".proto" or ".protodevel" from the end of a filename.
46 string StripProto(const string& filename);
47
48 // Returns true if the name requires a ns_returns_not_retained attribute applied
49 // to it.
50 bool IsRetainedName(const string& name);
51
52 // Returns true if the name starts with "init" and will need to have special
53 // handling under ARC.
54 bool IsInitName(const string& name);
55
56 // Gets the name of the file we're going to generate (sans the .pb.h
57 // extension). This does not include the path to that file.
58 string FileName(const FileDescriptor* file);
59
60 // Gets the path of the file we're going to generate (sans the .pb.h
61 // extension). The path will be dependent on the objectivec package
62 // declared in the proto package.
63 string FilePath(const FileDescriptor* file);
64
65 // Checks the prefix for a given file and outputs any warnings/errors needed.
66 void ValidateObjCClassPrefix(const FileDescriptor* file);
67
68 // Gets the name of the root class we'll generate in the file. This class
69 // is not meant for external consumption, but instead contains helpers that
70 // the rest of the the classes need
71 string FileClassName(const FileDescriptor* file);
72
73 // These return the fully-qualified class name corresponding to the given
74 // descriptor.
75 string ClassName(const Descriptor* descriptor);
76 string EnumName(const EnumDescriptor* descriptor);
77
78 // Returns the fully-qualified name of the enum value corresponding to the
79 // the descriptor.
80 string EnumValueName(const EnumValueDescriptor* descriptor);
81
82 // Returns the name of the enum value corresponding to the descriptor.
83 string EnumValueShortName(const EnumValueDescriptor* descriptor);
84
85 // Reverse what an enum does.
86 string UnCamelCaseEnumShortName(const string& name);
87
88 // Returns the name to use for the extension (used as the method off the file's
89 // Root class).
90 string ExtensionMethodName(const FieldDescriptor* descriptor);
91
92 // Returns the transformed field name.
93 string FieldName(const FieldDescriptor* field);
94 string FieldNameCapitalized(const FieldDescriptor* field);
95
96 // Returns the transformed oneof name.
97 string OneofEnumName(const OneofDescriptor* descriptor);
98 string OneofName(const OneofDescriptor* descriptor);
99 string OneofNameCapitalized(const OneofDescriptor* descriptor);
100
101 inline bool HasFieldPresence(const FileDescriptor* file) {
102 return file->syntax() != FileDescriptor::SYNTAX_PROTO3;
103 }
104
105 inline bool HasPreservingUnknownEnumSemantics(const FileDescriptor* file) {
106 return file->syntax() == FileDescriptor::SYNTAX_PROTO3;
107 }
108
109 inline bool IsMapEntryMessage(const Descriptor* descriptor) {
110 return descriptor->options().map_entry();
111 }
112
113 // Reverse of the above.
114 string UnCamelCaseFieldName(const string& name, const FieldDescriptor* field);
115
116 enum ObjectiveCType {
117 OBJECTIVECTYPE_INT32,
118 OBJECTIVECTYPE_UINT32,
119 OBJECTIVECTYPE_INT64,
120 OBJECTIVECTYPE_UINT64,
121 OBJECTIVECTYPE_FLOAT,
122 OBJECTIVECTYPE_DOUBLE,
123 OBJECTIVECTYPE_BOOLEAN,
124 OBJECTIVECTYPE_STRING,
125 OBJECTIVECTYPE_DATA,
126 OBJECTIVECTYPE_ENUM,
127 OBJECTIVECTYPE_MESSAGE
128 };
129
130 string GetCapitalizedType(const FieldDescriptor* field);
131
132 ObjectiveCType GetObjectiveCType(FieldDescriptor::Type field_type);
133
134 inline ObjectiveCType GetObjectiveCType(const FieldDescriptor* field) {
135 return GetObjectiveCType(field->type());
136 }
137
138 bool IsPrimitiveType(const FieldDescriptor* field);
139 bool IsReferenceType(const FieldDescriptor* field);
140
141 string GPBGenericValueFieldName(const FieldDescriptor* field);
142 string DefaultValue(const FieldDescriptor* field);
143
144 string BuildFlagsString(const vector<string>& strings);
145
146 string BuildCommentsString(const SourceLocation& location);
147
148 // Generate decode data needed for ObjC's GPBDecodeTextFormatName() to transform
149 // the input into the the expected output.
150 class LIBPROTOC_EXPORT TextFormatDecodeData {
151 public:
152 TextFormatDecodeData() {}
153
154 void AddString(int32 key, const string& input_for_decode,
155 const string& desired_output);
156 size_t num_entries() const { return entries_.size(); }
157 string Data() const;
158
159 static string DecodeDataForString(const string& input_for_decode,
160 const string& desired_output);
161
162 private:
163 GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(TextFormatDecodeData);
164
165 typedef std::pair<int32, string> DataEntry;
166 vector<DataEntry> entries_;
167 };
168
169 } // namespace objectivec
170 } // namespace compiler
171 } // namespace protobuf
172 } // namespace google
173 #endif // GOOGLE_PROTOBUF_COMPILER_OBJECTIVEC_HELPERS_H__
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698