Skip to content

Commit 950a71a

Browse files
committed
Rename GenerateText
to make it a compile-time breaking change, to alert any users to the new meaning of the return value
1 parent 86486a1 commit 950a71a

File tree

14 files changed

+50
-61
lines changed

14 files changed

+50
-61
lines changed

include/flatbuffers/idl.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1210,14 +1210,14 @@ class Parser : public ParserState {
12101210
// if it is less than 0, no linefeeds will be generated either.
12111211
// See idl_gen_text.cpp.
12121212
// strict_json adds "quotes" around field names if true.
1213-
// If the flatbuffer cannot be encoded in JSON (e.g., it contains non-UTF-8
1214-
// byte arrays in String values), returns false.
1215-
extern const char *GenerateTextFromTable(const Parser &parser,
1216-
const void *table,
1217-
const std::string &tablename,
1218-
std::string *text);
1219-
extern const char *GenerateText(const Parser &parser, const void *flatbuffer,
1220-
std::string *text);
1213+
// These functions return nullptr on success, or an error string,
1214+
// which may happen if the flatbuffer cannot be encoded in JSON (e.g.,
1215+
// it contains non-UTF-8 byte arrays in String values).
1216+
extern const char *GenTextFromTable(const Parser &parser, const void *table,
1217+
const std::string &tablename,
1218+
std::string *text);
1219+
extern const char *GenText(const Parser &parser, const void *flatbuffer,
1220+
std::string *text);
12211221

12221222
// Generate GRPC Cpp interfaces.
12231223
// See idl_gen_grpc.cpp.

include/flatbuffers/registry.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ class Registry {
5252
Parser parser;
5353
if (!LoadSchema(ident, &parser)) return false;
5454
// Now we're ready to generate text.
55-
auto err = GenerateText(parser, flatbuf, dest);
55+
auto err = GenText(parser, flatbuf, dest);
5656
if (err) {
5757
lasterror_ =
5858
"unable to generate text for FlatBuffer binary: " + std::string(err);

include/flatbuffers/util.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -623,7 +623,7 @@ inline bool EscapeString(const char *s, size_t length, std::string *_text,
623623
// we previously checked for non-UTF-8, so we shouldn't reach
624624
// here.
625625
//
626-
// 2) We reached here by someone calling GenerateText()
626+
// 2) We reached here by someone calling GenText()
627627
// on a previously-serialized flatbuffer. The data might have
628628
// non-UTF-8 Strings, or might be corrupt.
629629
//

samples/sample_bfbs.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,13 @@ int main(int /*argc*/, const char * /*argv*/[]) {
5959
// to ensure it is correct, we now generate text back from the binary,
6060
// and compare the two:
6161
std::string jsongen1;
62-
if (GenerateText(parser1, parser1.builder_.GetBufferPointer(), &jsongen1)) {
62+
if (GenText(parser1, parser1.builder_.GetBufferPointer(), &jsongen1)) {
6363
printf("Couldn't serialize parsed data to JSON!\n");
6464
return 1;
6565
}
6666

6767
std::string jsongen2;
68-
if (GenerateText(parser2, parser2.builder_.GetBufferPointer(), &jsongen2)) {
68+
if (GenText(parser2, parser2.builder_.GetBufferPointer(), &jsongen2)) {
6969
printf("Couldn't serialize parsed data to JSON!\n");
7070
return 1;
7171
}

samples/sample_text.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ int main(int /*argc*/, const char * /*argv*/[]) {
4545
// to ensure it is correct, we now generate text back from the binary,
4646
// and compare the two:
4747
std::string jsongen;
48-
if (GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen)) {
48+
if (GenText(parser, parser.builder_.GetBufferPointer(), &jsongen)) {
4949
printf("Couldn't serialize parsed data to JSON!\n");
5050
return 1;
5151
}

src/idl_gen_text.cpp

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -384,18 +384,17 @@ static const char *GenerateTextImpl(const Parser &parser, const Table *table,
384384
}
385385

386386
// Generate a text representation of a flatbuffer in JSON format.
387-
const char *GenerateTextFromTable(const Parser &parser, const void *table,
388-
const std::string &table_name,
389-
std::string *_text) {
387+
const char *GenTextFromTable(const Parser &parser, const void *table,
388+
const std::string &table_name, std::string *_text) {
390389
auto struct_def = parser.LookupStruct(table_name);
391390
if (struct_def == nullptr) { return "unknown struct"; }
392391
auto root = static_cast<const Table *>(table);
393392
return GenerateTextImpl(parser, root, *struct_def, _text);
394393
}
395394

396395
// Generate a text representation of a flatbuffer in JSON format.
397-
const char *GenerateText(const Parser &parser, const void *flatbuffer,
398-
std::string *_text) {
396+
const char *GenText(const Parser &parser, const void *flatbuffer,
397+
std::string *_text) {
399398
FLATBUFFERS_ASSERT(parser.root_struct_def_); // call SetRootType()
400399
auto root = parser.opts.size_prefixed ? GetSizePrefixedRoot<Table>(flatbuffer)
401400
: GetRoot<Table>(flatbuffer);
@@ -407,9 +406,8 @@ static std::string TextFileName(const std::string &path,
407406
return path + file_name + ".json";
408407
}
409408

410-
static const char *GenerateTextFile(const Parser &parser,
411-
const std::string &path,
412-
const std::string &file_name) {
409+
const char *GenTextFile(const Parser &parser, const std::string &path,
410+
const std::string &file_name) {
413411
if (parser.opts.use_flexbuffers) {
414412
std::string json;
415413
parser.flex_root_.ToString(true, parser.opts.strict_json, json);
@@ -420,7 +418,7 @@ static const char *GenerateTextFile(const Parser &parser,
420418
}
421419
if (!parser.builder_.GetSize() || !parser.root_struct_def_) return nullptr;
422420
std::string text;
423-
auto err = GenerateText(parser, parser.builder_.GetBufferPointer(), &text);
421+
auto err = GenText(parser, parser.builder_.GetBufferPointer(), &text);
424422
if (err) return err;
425423
return flatbuffers::SaveFile(TextFileName(path, file_name).c_str(), text,
426424
false)
@@ -448,7 +446,7 @@ class TextCodeGenerator : public CodeGenerator {
448446
public:
449447
Status GenerateCode(const Parser &parser, const std::string &path,
450448
const std::string &filename) override {
451-
auto err = GenerateTextFile(parser, path, filename);
449+
auto err = GenTextFile(parser, path, filename);
452450
if (err) {
453451
status_detail = " (" + std::string(err) + ")";
454452
return Status::ERROR;

tests/fuzz_test.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,8 +273,7 @@ void FuzzTest2() {
273273

274274
std::string jsongen;
275275
parser.opts.indent_step = 0;
276-
auto result =
277-
GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen);
276+
auto result = GenText(parser, parser.builder_.GetBufferPointer(), &jsongen);
278277
TEST_NULL(result);
279278

280279
if (jsongen != json) {

tests/fuzzer/flatbuffers_monster_fuzzer.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ std::string do_test(const flatbuffers::IDLOptions &opts,
7878
flatbuffers::Verifier verifier(parser_.builder_.GetBufferPointer(),
7979
parser_.builder_.GetSize());
8080
TEST_EQ(true, MyGame::Example::VerifyMonsterBuffer(verifier));
81-
TEST_ASSERT(
82-
GenerateText(parser_, parser_.builder_.GetBufferPointer(), &jsongen));
81+
TEST_NULL(
82+
GenText(parser_, parser_.builder_.GetBufferPointer(), &jsongen));
8383
} else if (check_parser) {
8484
TEST_OUTPUT_LINE("parser failed with JSON:\n%s", input_json.c_str());
8585
TEST_EQ_STR("", parser_.error_.c_str());

tests/fuzzer/flatbuffers_scalar_fuzzer.cc

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,7 @@ bool Parse(flatbuffers::Parser &parser, const std::string &json,
218218
std::string *_text) {
219219
auto done = parser.ParseJson(json.c_str());
220220
if (done) {
221-
TEST_EQ(GenerateText(parser, parser.builder_.GetBufferPointer(), _text),
222-
true);
221+
TEST_NULL(GenText(parser, parser.builder_.GetBufferPointer(), _text));
223222
} else {
224223
*_text = parser.error_;
225224
}
@@ -358,9 +357,9 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
358357
}
359358
// Compare with print.
360359
std::string ref_string, def_string;
361-
FLATBUFFERS_ASSERT(GenerateText(
360+
FLATBUFFERS_ASSERT(!GenText(
362361
parser, parser.builder_.GetBufferPointer(), &ref_string));
363-
FLATBUFFERS_ASSERT(GenerateText(
362+
FLATBUFFERS_ASSERT(!GenText(
364363
def_parser, def_parser.builder_.GetBufferPointer(), &def_string));
365364
if (ref_string != def_string) {
366365
TEST_OUTPUT_LINE("Stage 3.2 failed: '%s' != '%s'", def_string.c_str(),

tests/json_test.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ void JsonDefaultTest(const std::string &tests_data_path) {
3636
color_monster.add_name(name);
3737
FinishMonsterBuffer(builder, color_monster.Finish());
3838
std::string jsongen;
39-
auto result = GenerateText(parser, builder.GetBufferPointer(), &jsongen);
39+
auto result = GenText(parser, builder.GetBufferPointer(), &jsongen);
4040
TEST_NULL(result);
4141
// default value of the "color" field is Blue
4242
TEST_EQ(std::string::npos != jsongen.find("color: \"Blue\""), true);
@@ -65,7 +65,7 @@ void JsonEnumsTest(const std::string &tests_data_path) {
6565
color_monster.add_color(Color(Color_Blue | Color_Red));
6666
FinishMonsterBuffer(builder, color_monster.Finish());
6767
std::string jsongen;
68-
auto result = GenerateText(parser, builder.GetBufferPointer(), &jsongen);
68+
auto result = GenText(parser, builder.GetBufferPointer(), &jsongen);
6969
TEST_NULL(result);
7070
TEST_EQ(std::string::npos != jsongen.find("color: \"Red Blue\""), true);
7171
// Test forward compatibility with 'output_enum_identifiers = true'.
@@ -78,7 +78,7 @@ void JsonEnumsTest(const std::string &tests_data_path) {
7878
future_color.add_color(
7979
static_cast<Color>((1u << 2) | Color_Blue | Color_Red));
8080
FinishMonsterBuffer(builder, future_color.Finish());
81-
result = GenerateText(parser, builder.GetBufferPointer(), &future_json);
81+
result = GenText(parser, builder.GetBufferPointer(), &future_json);
8282
TEST_NULL(result);
8383
TEST_EQ(std::string::npos != future_json.find("color: 13"), true);
8484
}
@@ -119,8 +119,7 @@ void JsonOptionalTest(const std::string &tests_data_path,
119119
// to ensure it is correct, we now generate text back from the binary,
120120
// and compare the two:
121121
std::string jsongen;
122-
auto result =
123-
GenerateText(parser, parser.builder_.GetBufferPointer(), &jsongen);
122+
auto result = GenText(parser, parser.builder_.GetBufferPointer(), &jsongen);
124123
TEST_NULL(result);
125124
TEST_EQ_STR(jsongen.c_str(), jsonfile.c_str());
126125
}
@@ -199,7 +198,7 @@ root_type JsonUnionStructTest;
199198
// now generate text back from the binary, and compare the two:
200199
std::string json_generated;
201200
auto generate_result =
202-
GenerateText(parser, parser.builder_.GetBufferPointer(), &json_generated);
201+
GenText(parser, parser.builder_.GetBufferPointer(), &json_generated);
203202
TEST_NULL(generate_result);
204203
TEST_EQ_STR(json_source, json_generated.c_str());
205204
}

0 commit comments

Comments
 (0)