mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-02 12:05:50 +00:00
Python: Added support for file_identifiers (#5123)
* Python: Added support for file_identifiers * Added tests. Fixed file_identifier code. * Python: Fixed excessive padding of file_identifier. Repaired tests. * Python: Made code compatible with python2.7 * Python: Typo fix in @endcond * whitespace normaalization * Stylistic change from if(not X is None) to if(X is not None). Added comment to type string. * Python: Added support for automatic code generation of file_identifiers. Added tests for said code generation. * converted sprintf to snprintf * Bugfix, added snprint deffinition for MSVC * changed snprint deffinition for MSVC to sprint_s * changed scanf to IntToStringHex. Renamed HasFileIdentifier to GenHasFileIdentifier. * Added updated genereated code to commit * Python bugix: flatc no longer produces HasFileIdentfier for shcemas with no file identifier * Added tests to verify `MonsterBufferHasIdentifier` returns false on no Identifier * Python: added tests for GetBufferIdentifier and BufferHasIdentifier Python: removed unessasary parenethesis in if statements Minor format changes. * Python : correceted instances of keyword arguments being called as positional arguments * fixed typos and grammer in comments * Minor style fixes * Indentation fix * Equals style changes * Python: Fixed Alignment Issues. Changed test code to test against atual output * Ran make(forgot to run make last commit) * Python: Style changes * Style changes * indentation and style * readded CONTRIBUTING.md * Formatting tweak Mostly to make CI run again * More formatting fixes * More formatting fixes * More formatting fixes * More formatting fixes * Formatting fix * More formatting fixes * Formatting * ran generate_code.sh
This commit is contained in:
committed by
Wouter van Oortmerssen
parent
a5ca8bee4d
commit
9fa8245e81
@@ -612,6 +612,30 @@ class PythonGenerator : public BaseGenerator {
|
||||
GetEndOffsetOnTable(struct_def, code_ptr);
|
||||
}
|
||||
|
||||
// Generate function to check for proper file identifier
|
||||
void GenHasFileIdentifier(const StructDef &struct_def,
|
||||
std::string *code_ptr) {
|
||||
std::string &code = *code_ptr;
|
||||
std::string escapedID;
|
||||
// In the event any of file_identifier characters are special(NULL, \, etc),
|
||||
// problems occur. To prevent this, convert all chars to their hex-escaped
|
||||
// equivalent.
|
||||
for (auto it = parser_.file_identifier_.begin();
|
||||
it != parser_.file_identifier_.end(); ++it) {
|
||||
escapedID += "\\x" + IntToStringHex(*it, 2);
|
||||
}
|
||||
|
||||
code += Indent + "@classmethod\n";
|
||||
code += Indent + "def " + NormalizedName(struct_def);
|
||||
code += "BufferHasIdentifier(cls, buf, offset, size_prefixed=False):";
|
||||
code += "\n";
|
||||
code += Indent + Indent;
|
||||
code += "return flatbuffers.util.BufferHasIdentifier(buf, offset, b\"";
|
||||
code += escapedID;
|
||||
code += "\", size_prefixed=size_prefixed)\n";
|
||||
code += "\n";
|
||||
}
|
||||
|
||||
// Generate struct or table methods.
|
||||
void GenStruct(const StructDef &struct_def, std::string *code_ptr) {
|
||||
if (struct_def.generated) return;
|
||||
@@ -622,6 +646,10 @@ class PythonGenerator : public BaseGenerator {
|
||||
// Generate a special accessor for the table that has been declared as
|
||||
// the root type.
|
||||
NewRootTypeFromBuffer(struct_def, code_ptr);
|
||||
if (parser_.file_identifier_.length()){
|
||||
// Generate a special function to test file_identifier
|
||||
GenHasFileIdentifier(struct_def, code_ptr);
|
||||
}
|
||||
}
|
||||
// Generate the Init method that sets the field in a pre-existing
|
||||
// accessor object. This is to allow object reuse.
|
||||
|
||||
Reference in New Issue
Block a user