[C++] Add Command-Line Flag to Suppress MIN and MAX Enums (#7705)

Add the --no-minmax-values flag to prevent flatc from generating C++
enums with MIN and MAX enumerated values that otherwise would be set
to the inclusive lower and upper bound respectively of the enum.

This command-line flag is needed to avoid collisions when an enum that
is being ported to FlatBuffers already has a MIN or MAX enumerated
value.

It is also needed to work around a long-standing problem with
magic_enum that causes magic_enum to not see enumerated values that
are not unique.  For example, if FlatBuffers sets MIN = FOO and MAX =
BAR, MIN and FOO share the same underlying value so they are not
unique.  The same is true of MAX and BAR.  This prevents magic_enum
from converting FOO and BAR to and from strings as well as causing
magic_enum to return a count of enumerated values that is two fewer
than it should be.

Co-authored-by: Paul Serice <paul@serice.net>
This commit is contained in:
jalitriver
2023-01-07 12:33:11 -06:00
committed by GitHub
parent 81724e5b20
commit 920f3827a0
4 changed files with 14 additions and 2 deletions

View File

@@ -605,6 +605,7 @@ struct IDLOptions {
bool output_enum_identifiers;
bool prefixed_enums;
bool scoped_enums;
bool emit_min_max_enum_values;
bool swift_implementation_only;
bool include_dependence_headers;
bool mutable_buffer;
@@ -718,6 +719,7 @@ struct IDLOptions {
output_enum_identifiers(true),
prefixed_enums(true),
scoped_enums(false),
emit_min_max_enum_values(true),
swift_implementation_only(false),
include_dependence_headers(true),
mutable_buffer(false),