Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
flatbuffers
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
flatbuffers
Commits
a1633055
Commit
a1633055
authored
Mar 30, 2016
by
Wouter van Oortmerssen
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #3834 from Nnamdi/gen_name_strings
Added --gen-name-strings command line option.
parents
a649cb7d
35f6bb50
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
53 additions
and
26 deletions
+53
-26
flatbuffers.h
include/flatbuffers/flatbuffers.h
+8
-0
idl.h
include/flatbuffers/idl.h
+2
-0
flatc.cpp
src/flatc.cpp
+28
-25
idl_gen_cpp.cpp
src/idl_gen_cpp.cpp
+15
-1
No files found.
include/flatbuffers/flatbuffers.h
View file @
a1633055
...
@@ -91,6 +91,14 @@
...
@@ -91,6 +91,14 @@
#else
#else
#define FLATBUFFERS_FINAL_CLASS
#define FLATBUFFERS_FINAL_CLASS
#endif
#endif
#if (!defined(_MSC_VER) || _MSC_VER >= 1900) && \
(!defined(__GNUC__) || (__GNUC__ * 100 + __GNUC_MINOR__ >= 406))
#define FLATBUFFERS_CONSTEXPR constexpr
#else
#define FLATBUFFERS_CONSTEXPR
#endif
/// @endcond
/// @endcond
/// @file
/// @file
...
...
include/flatbuffers/idl.h
View file @
a1633055
...
@@ -321,6 +321,7 @@ struct IDLOptions {
...
@@ -321,6 +321,7 @@ struct IDLOptions {
bool
proto_mode
;
bool
proto_mode
;
bool
generate_all
;
bool
generate_all
;
bool
skip_unexpected_fields_in_json
;
bool
skip_unexpected_fields_in_json
;
bool
generate_name_strings
;
// Possible options for the more general generator below.
// Possible options for the more general generator below.
enum
Language
{
kJava
,
kCSharp
,
kGo
,
kMAX
};
enum
Language
{
kJava
,
kCSharp
,
kGo
,
kMAX
};
...
@@ -339,6 +340,7 @@ struct IDLOptions {
...
@@ -339,6 +340,7 @@ struct IDLOptions {
proto_mode
(
false
),
proto_mode
(
false
),
generate_all
(
false
),
generate_all
(
false
),
skip_unexpected_fields_in_json
(
false
),
skip_unexpected_fields_in_json
(
false
),
generate_name_strings
(
false
),
lang
(
IDLOptions
::
kJava
)
{}
lang
(
IDLOptions
::
kJava
)
{}
};
};
...
...
src/flatc.cpp
View file @
a1633055
...
@@ -96,31 +96,32 @@ static void Error(const std::string &err, bool usage, bool show_exe_name) {
...
@@ -96,31 +96,32 @@ static void Error(const std::string &err, bool usage, bool show_exe_name) {
:
" "
,
:
" "
,
generators
[
i
].
generator_help
);
generators
[
i
].
generator_help
);
printf
(
printf
(
" -o PATH Prefix PATH to all generated files.
\n
"
" -o PATH Prefix PATH to all generated files.
\n
"
" -I PATH Search for includes in the specified path.
\n
"
" -I PATH Search for includes in the specified path.
\n
"
" -M Print make rules for generated files.
\n
"
" -M Print make rules for generated files.
\n
"
" --version Print the version number of flatc and exit.
\n
"
" --version Print the version number of flatc and exit.
\n
"
" --strict-json Strict JSON: field names must be / will be quoted,
\n
"
" --strict-json Strict JSON: field names must be / will be quoted,
\n
"
" no trailing commas in tables/vectors.
\n
"
" no trailing commas in tables/vectors.
\n
"
" --defaults-json Output fields whose value is the default when
\n
"
" --defaults-json Output fields whose value is the default when
\n
"
" writing JSON
\n
"
" writing JSON
\n
"
" --unknown-json Allow fields in JSON that are not defined in the
\n
"
" --unknown-json Allow fields in JSON that are not defined in the
\n
"
" schema. These fields will be discared when generating
\n
"
" schema. These fields will be discared when generating
\n
"
" binaries.
\n
"
" binaries.
\n
"
" --no-prefix Don
\'
t prefix enum values with the enum type in C++.
\n
"
" --no-prefix Don
\'
t prefix enum values with the enum type in C++.
\n
"
" --scoped-enums Use C++11 style scoped and strongly typed enums.
\n
"
" --scoped-enums Use C++11 style scoped and strongly typed enums.
\n
"
" also implies --no-prefix.
\n
"
" also implies --no-prefix.
\n
"
" --gen-includes (deprecated), this is the default behavior.
\n
"
" --gen-includes (deprecated), this is the default behavior.
\n
"
" If the original behavior is required (no include
\n
"
" If the original behavior is required (no include
\n
"
" statements) use --no-includes.
\n
"
" statements) use --no-includes.
\n
"
" --no-includes Don
\'
t generate include statements for included
\n
"
" --no-includes Don
\'
t generate include statements for included
\n
"
" schemas the generated file depends on (C++).
\n
"
" schemas the generated file depends on (C++).
\n
"
" --gen-mutable Generate accessors that can mutate buffers in-place.
\n
"
" --gen-mutable Generate accessors that can mutate buffers in-place.
\n
"
" --gen-onefile Generate single output file for C#
\n
"
" --gen-onefile Generate single output file for C#
\n
"
" --raw-binary Allow binaries without file_indentifier to be read.
\n
"
" --gen-name-strings Generate type name functions for C++.
\n
"
" This may crash flatc given a mismatched schema.
\n
"
" --raw-binary Allow binaries without file_indentifier to be read.
\n
"
" --proto Input is a .proto, translate to .fbs.
\n
"
" This may crash flatc given a mismatched schema.
\n
"
" --schema Serialize schemas instead of JSON (use with -b)
\n
"
" --proto Input is a .proto, translate to .fbs.
\n
"
" --schema Serialize schemas instead of JSON (use with -b)
\n
"
"FILEs may be schemas, or JSON files (conforming to preceding schema)
\n
"
"FILEs may be schemas, or JSON files (conforming to preceding schema)
\n
"
"FILEs after the -- must be binary flatbuffer format files.
\n
"
"FILEs after the -- must be binary flatbuffer format files.
\n
"
"Output files are named using the base file name of the input,
\n
"
"Output files are named using the base file name of the input,
\n
"
...
@@ -171,6 +172,8 @@ int main(int argc, const char *argv[]) {
...
@@ -171,6 +172,8 @@ int main(int argc, const char *argv[]) {
opts
.
scoped_enums
=
true
;
opts
.
scoped_enums
=
true
;
}
else
if
(
arg
==
"--gen-mutable"
)
{
}
else
if
(
arg
==
"--gen-mutable"
)
{
opts
.
mutable_buffer
=
true
;
opts
.
mutable_buffer
=
true
;
}
else
if
(
arg
==
"--gen-name-strings"
)
{
opts
.
generate_name_strings
=
true
;
}
else
if
(
arg
==
"--gen-all"
)
{
}
else
if
(
arg
==
"--gen-all"
)
{
opts
.
generate_all
=
true
;
opts
.
generate_all
=
true
;
opts
.
include_dependence_headers
=
false
;
opts
.
include_dependence_headers
=
false
;
...
...
src/idl_gen_cpp.cpp
View file @
a1633055
...
@@ -267,6 +267,14 @@ std::string GenFieldOffsetName(const FieldDef &field) {
...
@@ -267,6 +267,14 @@ std::string GenFieldOffsetName(const FieldDef &field) {
return
"VT_"
+
uname
;
return
"VT_"
+
uname
;
}
}
static
void
GenFullyQualifiedNameGetter
(
const
Parser
&
parser
,
const
std
::
string
&
name
,
std
::
string
&
code
)
{
if
(
parser
.
opts
.
generate_name_strings
)
{
code
+=
" static FLATBUFFERS_CONSTEXPR const char *GetFullyQualifiedName() {
\n
"
;
code
+=
" return
\"
"
+
parser
.
namespaces_
.
back
()
->
GetFullyQualifiedName
(
name
)
+
"
\"
;
\n
"
;
code
+=
" }
\n
"
;
}
}
// Generate an accessor struct, builder structs & function for a table.
// Generate an accessor struct, builder structs & function for a table.
static
void
GenTable
(
const
Parser
&
parser
,
StructDef
&
struct_def
,
static
void
GenTable
(
const
Parser
&
parser
,
StructDef
&
struct_def
,
std
::
string
*
code_ptr
)
{
std
::
string
*
code_ptr
)
{
...
@@ -277,6 +285,8 @@ static void GenTable(const Parser &parser, StructDef &struct_def,
...
@@ -277,6 +285,8 @@ static void GenTable(const Parser &parser, StructDef &struct_def,
code
+=
"struct "
+
struct_def
.
name
;
code
+=
"struct "
+
struct_def
.
name
;
code
+=
" FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table"
;
code
+=
" FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table"
;
code
+=
" {
\n
"
;
code
+=
" {
\n
"
;
// Generate GetFullyQualifiedName
GenFullyQualifiedNameGetter
(
parser
,
struct_def
.
name
,
code
);
// Generate field id constants.
// Generate field id constants.
if
(
struct_def
.
fields
.
vec
.
size
()
>
0
)
{
if
(
struct_def
.
fields
.
vec
.
size
()
>
0
)
{
code
+=
" enum {
\n
"
;
code
+=
" enum {
\n
"
;
...
@@ -583,8 +593,12 @@ static void GenStruct(const Parser &parser, StructDef &struct_def,
...
@@ -583,8 +593,12 @@ static void GenStruct(const Parser &parser, StructDef &struct_def,
GenPadding
(
field
,
code
,
padding_id
,
PaddingDefinition
);
GenPadding
(
field
,
code
,
padding_id
,
PaddingDefinition
);
}
}
// Generate GetFullyQualifiedName
code
+=
"
\n
public:
\n
"
;
GenFullyQualifiedNameGetter
(
parser
,
struct_def
.
name
,
code
);
// Generate a constructor that takes all fields as arguments.
// Generate a constructor that takes all fields as arguments.
code
+=
"
\n
public:
\n
"
+
struct_def
.
name
+
"("
;
code
+=
" "
+
struct_def
.
name
+
"("
;
for
(
auto
it
=
struct_def
.
fields
.
vec
.
begin
();
for
(
auto
it
=
struct_def
.
fields
.
vec
.
begin
();
it
!=
struct_def
.
fields
.
vec
.
end
();
it
!=
struct_def
.
fields
.
vec
.
end
();
++
it
)
{
++
it
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment