summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/idl_gen_general.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/idl_gen_general.cpp b/src/idl_gen_general.cpp
index 27eb8c40..eda0214d 100644
--- a/src/idl_gen_general.cpp
+++ b/src/idl_gen_general.cpp
@@ -504,7 +504,16 @@ class GeneralGenerator : public BaseGenerator {
// to map directly to how they're used in C/C++ and file formats.
// That, and Java Enums are expensive, and not universally liked.
GenComment(enum_def.doc_comment, code_ptr, &lang_.comment_config);
- code += std::string("public ") + lang_.enum_decl + enum_def.name;
+ if (enum_def.attributes.Lookup("private")) {
+ // For Java, we leave the enum unmarked to indicate package-private
+ // For C# we mark the enum as internal
+ if (lang_.language == IDLOptions::kCSharp) {
+ code += "internal ";
+ }
+ } else {
+ code += "public ";
+ }
+ code += lang_.enum_decl + enum_def.name;
if (lang_.language == IDLOptions::kCSharp) {
code += lang_.inheritance_marker +
GenTypeBasic(enum_def.underlying_type, false);
@@ -773,7 +782,15 @@ class GeneralGenerator : public BaseGenerator {
// int o = __offset(offset); return o != 0 ? bb.getType(o + i) : default;
// }
GenComment(struct_def.doc_comment, code_ptr, &lang_.comment_config);
- code += "public ";
+ if (struct_def.attributes.Lookup("private")) {
+ // For Java, we leave the struct unmarked to indicate package-private
+ // For C# we mark the struct as internal
+ if (lang_.language == IDLOptions::kCSharp) {
+ code += "internal ";
+ }
+ } else {
+ code += "public ";
+ }
if (lang_.language == IDLOptions::kCSharp &&
struct_def.attributes.Lookup("csharp_partial")) {
// generate a partial class for this C# struct/table