Swap the dependency of CreateX and X::Pack object API functions. (#8754)

Previously: X::Pack forwarded to CreateX.

Now: CreateX will forward to X::Pack.

This is a step toward enabling using native types for tables when using the
object API. When defining a native table, the user will be able to define a
custom X::Pack method (which is more consistent with the existing native_type
functionality for structs). By reversing the order of the dependencies, CreateX
can continue to be auto-generated and will use the custom X::Pack method when
overriden for native_type tables.
This commit is contained in:
cosmith-nvidia
2025-11-04 15:42:16 -08:00
committed by GitHub
parent 5ed02dc04a
commit 78a3d59a65
22 changed files with 419 additions and 203 deletions

View File

@@ -3820,16 +3820,16 @@ class CppGenerator : public BaseGenerator {
code_ += "}";
code_ += "";
// Generate the X::Pack member function that simply calls the global
// CreateX function.
code_ += "inline " + TablePackSignature(struct_def, false, opts_) + " {";
code_ += " return Create{{STRUCT_NAME}}(_fbb, _o, _rehasher);";
// Generate the global CreateX function that simply calls the
// X::Pack member function.
code_ +=
"inline " + TableCreateSignature(struct_def, false, opts_) + " {";
code_ += " return {{STRUCT_NAME}}::Pack(_fbb, _o, _rehasher);";
code_ += "}";
code_ += "";
// Generate a CreateX method that works with an unpacked C++ object.
code_ +=
"inline " + TableCreateSignature(struct_def, false, opts_) + " {";
code_ += "inline " + TablePackSignature(struct_def, false, opts_) + " {";
code_ += " (void)_rehasher;";
code_ += " (void)_o;";