diff options
author | Mark Benvenuto <mark.benvenuto@mongodb.com> | 2017-05-12 10:34:39 -0400 |
---|---|---|
committer | Mark Benvenuto <mark.benvenuto@mongodb.com> | 2017-05-12 10:34:39 -0400 |
commit | 107b0bdf954bed554cf74a69a3fec268ac00886b (patch) | |
tree | 5d104e40d1c605b88a86d0ce77498cd372ed4414 /buildscripts/idl | |
parent | 164d4720b9d81ca5f9deea702b66438a6fa8072c (diff) | |
download | mongo-107b0bdf954bed554cf74a69a3fec268ac00886b.tar.gz |
SERVER-29081 Add toBSON to IDL generated classes
Diffstat (limited to 'buildscripts/idl')
-rw-r--r-- | buildscripts/idl/idl/generator.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/buildscripts/idl/idl/generator.py b/buildscripts/idl/idl/generator.py index ef4e20e1ab0..b1008b287bd 100644 --- a/buildscripts/idl/idl/generator.py +++ b/buildscripts/idl/idl/generator.py @@ -248,6 +248,7 @@ class _CppHeaderFileWriter(_CppFileWriterBase): 'static %s parse(const IDLParserErrorContext& ctxt, const BSONObj& object);' % (common.title_case(class_name))) self._writer.write_line('void serialize(BSONObjBuilder* builder) const;') + self._writer.write_line('BSONObj toBSON() const;') self._writer.write_empty_line() def gen_protected_serializer_methods(self): @@ -767,6 +768,20 @@ class _CppSourceFileWriter(_CppFileWriterBase): # Add a blank line after each block self._writer.write_empty_line() + def gen_to_bson_serializer_method(self, struct): + # type: (ast.Struct) -> None + """Generate the toBSON method definition.""" + self._writer.write_line( + common.template_args( + """\ + BSONObj ${class_name}::toBSON() const { + BSONObjBuilder builder; + serialize(&builder); + return builder.obj(); + } + """, + class_name=common.title_case(struct.name))) + def gen_string_constants_definitions(self, struct): # type: (ast.Struct) -> None # pylint: disable=invalid-name @@ -832,6 +847,10 @@ class _CppSourceFileWriter(_CppFileWriterBase): self.gen_serializer_method(struct) self.write_empty_line() + # Write toBSON + self.gen_to_bson_serializer_method(struct) + self.write_empty_line() + def _generate_header(spec, file_name): # type: (ast.IDLAST, unicode) -> None |