aboutsummaryrefslogtreecommitdiffstats
path: root/src/google/protobuf/compiler/javanano/javanano_params.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/google/protobuf/compiler/javanano/javanano_params.h')
-rw-r--r--src/google/protobuf/compiler/javanano/javanano_params.h48
1 files changed, 38 insertions, 10 deletions
diff --git a/src/google/protobuf/compiler/javanano/javanano_params.h b/src/google/protobuf/compiler/javanano/javanano_params.h
index 30eedff..5c0e6f0 100644
--- a/src/google/protobuf/compiler/javanano/javanano_params.h
+++ b/src/google/protobuf/compiler/javanano/javanano_params.h
@@ -34,6 +34,7 @@
#define PROTOBUF_COMPILER_JAVANANO_JAVANANO_PARAMS_H_
#include <map>
+#include <set>
#include <google/protobuf/stubs/strutil.h>
namespace google {
@@ -41,24 +42,28 @@ namespace protobuf {
namespace compiler {
namespace javanano {
+enum eMultipleFiles { JAVANANO_MUL_UNSET, JAVANANO_MUL_FALSE, JAVANANO_MUL_TRUE };
+
// Parameters for used by the generators
class Params {
public:
typedef map<string, string> NameMap;
+ typedef set<string> NameSet;
private:
string empty_;
string base_name_;
- bool java_multiple_files_;
+ eMultipleFiles override_java_multiple_files_;
bool store_unknown_fields_;
NameMap java_packages_;
NameMap java_outer_classnames_;
+ NameSet java_multiple_files_;
public:
Params(const string & base_name) :
empty_(""),
base_name_(base_name),
- store_unknown_fields_(false),
- java_multiple_files_(false) {
+ override_java_multiple_files_(JAVANANO_MUL_UNSET),
+ store_unknown_fields_(false) {
}
const string& base_name() const {
@@ -109,6 +114,36 @@ class Params {
return java_outer_classnames_;
}
+ void set_override_java_multiple_files(bool java_multiple_files) {
+ if (java_multiple_files) {
+ override_java_multiple_files_ = JAVANANO_MUL_TRUE;
+ } else {
+ override_java_multiple_files_ = JAVANANO_MUL_FALSE;
+ }
+ }
+ void clear_override_java_multiple_files() {
+ override_java_multiple_files_ = JAVANANO_MUL_UNSET;
+ }
+
+ void set_java_multiple_files(const string& file_name, bool value) {
+ if (value) {
+ java_multiple_files_.insert(file_name);
+ } else {
+ java_multiple_files_.erase(file_name);
+ }
+ }
+ bool java_multiple_files(const string& file_name) const {
+ switch (override_java_multiple_files_) {
+ case JAVANANO_MUL_FALSE:
+ return false;
+ case JAVANANO_MUL_TRUE:
+ return true;
+ default:
+ return java_multiple_files_.find(file_name)
+ != java_multiple_files_.end();
+ }
+ }
+
void set_store_unknown_fields(bool value) {
store_unknown_fields_ = value;
}
@@ -116,13 +151,6 @@ class Params {
return store_unknown_fields_;
}
- void set_java_multiple_files(bool value) {
- java_multiple_files_ = value;
- }
- bool java_multiple_files() const {
- return java_multiple_files_;
- }
-
};
} // namespace javanano