Line data Source code
1 : // Protocol Buffers - Google's data interchange format
2 : // Copyright 2010 Google Inc. All rights reserved.
3 : // http://code.google.com/p/protobuf/
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 : // Author: wink@google.com (Wink Saville)
32 :
33 : #ifndef PROTOBUF_COMPILER_JAVANANO_JAVANANO_PARAMS_H_
34 : #define PROTOBUF_COMPILER_JAVANANO_JAVANANO_PARAMS_H_
35 :
36 : #include <map>
37 : #include <set>
38 : #include <google/protobuf/stubs/strutil.h>
39 :
40 : namespace google {
41 : namespace protobuf {
42 : namespace compiler {
43 : namespace javanano {
44 :
45 : enum eMultipleFiles { JAVANANO_MUL_UNSET, JAVANANO_MUL_FALSE, JAVANANO_MUL_TRUE };
46 :
47 : // Parameters for used by the generators
48 0 : class Params {
49 : public:
50 : typedef map<string, string> NameMap;
51 : typedef set<string> NameSet;
52 : private:
53 : string empty_;
54 : string base_name_;
55 : eMultipleFiles override_java_multiple_files_;
56 : bool store_unknown_fields_;
57 : NameMap java_packages_;
58 : NameMap java_outer_classnames_;
59 : NameSet java_multiple_files_;
60 : bool generate_has_;
61 : bool java_enum_style_;
62 : bool optional_field_accessors_;
63 : bool use_reference_types_for_primitives_;
64 : bool generate_equals_;
65 : bool ignore_services_;
66 : bool parcelable_messages_;
67 : bool reftypes_primitive_enums_;
68 : bool generate_clear_;
69 : bool generate_clone_;
70 : bool generate_intdefs_;
71 :
72 : public:
73 0 : Params(const string & base_name) :
74 : empty_(""),
75 : base_name_(base_name),
76 : override_java_multiple_files_(JAVANANO_MUL_UNSET),
77 : store_unknown_fields_(false),
78 : generate_has_(false),
79 : java_enum_style_(false),
80 : optional_field_accessors_(false),
81 : use_reference_types_for_primitives_(false),
82 : generate_equals_(false),
83 : ignore_services_(false),
84 : parcelable_messages_(false),
85 : reftypes_primitive_enums_(false),
86 : generate_clear_(true),
87 : generate_clone_(false),
88 0 : generate_intdefs_(false) {
89 0 : }
90 :
91 : const string& base_name() const {
92 : return base_name_;
93 : }
94 :
95 : bool has_java_package(const string& file_name) const {
96 0 : return java_packages_.find(file_name)
97 0 : != java_packages_.end();
98 : }
99 : void set_java_package(const string& file_name,
100 : const string& java_package) {
101 0 : java_packages_[file_name] = java_package;
102 : }
103 : const string& java_package(const string& file_name) const {
104 : NameMap::const_iterator itr;
105 :
106 0 : itr = java_packages_.find(file_name);
107 0 : if (itr == java_packages_.end()) {
108 0 : return empty_;
109 : } else {
110 0 : return itr->second;
111 : }
112 : }
113 : const NameMap& java_packages() {
114 : return java_packages_;
115 : }
116 :
117 : bool has_java_outer_classname(const string& file_name) const {
118 0 : return java_outer_classnames_.find(file_name)
119 0 : != java_outer_classnames_.end();
120 : }
121 : void set_java_outer_classname(const string& file_name,
122 : const string& java_outer_classname) {
123 0 : java_outer_classnames_[file_name] = java_outer_classname;
124 : }
125 : const string& java_outer_classname(const string& file_name) const {
126 : NameMap::const_iterator itr;
127 :
128 0 : itr = java_outer_classnames_.find(file_name);
129 0 : if (itr == java_outer_classnames_.end()) {
130 0 : return empty_;
131 : } else {
132 0 : return itr->second;
133 : }
134 : }
135 : const NameMap& java_outer_classnames() {
136 : return java_outer_classnames_;
137 : }
138 :
139 : void set_override_java_multiple_files(bool java_multiple_files) {
140 0 : if (java_multiple_files) {
141 0 : override_java_multiple_files_ = JAVANANO_MUL_TRUE;
142 : } else {
143 0 : override_java_multiple_files_ = JAVANANO_MUL_FALSE;
144 : }
145 : }
146 : void clear_override_java_multiple_files() {
147 : override_java_multiple_files_ = JAVANANO_MUL_UNSET;
148 : }
149 :
150 0 : void set_java_multiple_files(const string& file_name, bool value) {
151 0 : if (value) {
152 0 : java_multiple_files_.insert(file_name);
153 : } else {
154 0 : java_multiple_files_.erase(file_name);
155 : }
156 0 : }
157 0 : bool java_multiple_files(const string& file_name) const {
158 0 : switch (override_java_multiple_files_) {
159 : case JAVANANO_MUL_FALSE:
160 : return false;
161 : case JAVANANO_MUL_TRUE:
162 0 : return true;
163 : default:
164 0 : return java_multiple_files_.find(file_name)
165 0 : != java_multiple_files_.end();
166 : }
167 : }
168 :
169 : void set_store_unknown_fields(bool value) {
170 0 : store_unknown_fields_ = value;
171 : }
172 : bool store_unknown_fields() const {
173 : return store_unknown_fields_;
174 : }
175 :
176 : void set_generate_has(bool value) {
177 0 : generate_has_ = value;
178 : }
179 : bool generate_has() const {
180 : return generate_has_;
181 : }
182 :
183 : void set_java_enum_style(bool value) {
184 0 : java_enum_style_ = value;
185 : }
186 : bool java_enum_style() const {
187 : return java_enum_style_;
188 : }
189 :
190 : void set_optional_field_accessors(bool value) {
191 0 : optional_field_accessors_ = value;
192 : }
193 : bool optional_field_accessors() const {
194 : return optional_field_accessors_;
195 : }
196 :
197 : void set_use_reference_types_for_primitives(bool value) {
198 0 : use_reference_types_for_primitives_ = value;
199 : }
200 : bool use_reference_types_for_primitives() const {
201 : return use_reference_types_for_primitives_;
202 : }
203 :
204 : void set_generate_equals(bool value) {
205 0 : generate_equals_ = value;
206 : }
207 : bool generate_equals() const {
208 : return generate_equals_;
209 : }
210 :
211 : void set_ignore_services(bool value) {
212 0 : ignore_services_ = value;
213 : }
214 : bool ignore_services() const {
215 : return ignore_services_;
216 : }
217 :
218 : void set_parcelable_messages(bool value) {
219 0 : parcelable_messages_ = value;
220 : }
221 : bool parcelable_messages() const {
222 : return parcelable_messages_;
223 : }
224 :
225 : void set_reftypes_primitive_enums(bool value) {
226 0 : reftypes_primitive_enums_ = value;
227 : }
228 : bool reftypes_primitive_enums() const {
229 : return reftypes_primitive_enums_;
230 : }
231 :
232 : void set_generate_clear(bool value) {
233 0 : generate_clear_ = value;
234 : }
235 : bool generate_clear() const {
236 : return generate_clear_;
237 : }
238 :
239 : void set_generate_clone(bool value) {
240 0 : generate_clone_ = value;
241 : }
242 : bool generate_clone() const {
243 : return generate_clone_;
244 : }
245 :
246 : void set_generate_intdefs(bool value) {
247 0 : generate_intdefs_ = value;
248 : }
249 : bool generate_intdefs() const {
250 : return generate_intdefs_;
251 : }
252 : };
253 :
254 : } // namespace javanano
255 : } // namespace compiler
256 : } // namespace protobuf
257 : } // namespace google
258 : #endif // PROTOBUF_COMPILER_JAVANANO_JAVANANO_PARAMS_H_
|