From bcfe0a7a2921b4667d5e92592152578ae2f9353d Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Fri, 17 Dec 2021 15:55:42 -0500 Subject: [PATCH 1/2] Squashed 'wrap/' changes from 086be59be..2cbaf7a3a 2cbaf7a3a Merge pull request #131 from borglab/remove-pickle 0c2a4483c add documentation 2e5af11ad Merge pull request #139 from borglab/fix/matlab-memory-leak 442b7d3b0 update test fixtures f89d5e4bd delete object after clearing it from object collector 971282703 add the correct variable for RTTI registry creation 9758dec57 update test fixture 87aeb8f8c remove need for declaring pickle function in interface file git-subtree-dir: wrap git-subtree-split: 2cbaf7a3a628766ff40657e0150b407ed4af7ccd --- gtwrap/matlab_wrapper/templates.py | 2 +- gtwrap/matlab_wrapper/wrapper.py | 6 ++--- gtwrap/pybind_wrapper.py | 21 ++++++++++------ tests/expected/matlab/class_wrapper.cpp | 24 +++++++++---------- tests/expected/matlab/functions_wrapper.cpp | 2 +- tests/expected/matlab/geometry_wrapper.cpp | 4 ++-- tests/expected/matlab/inheritance_wrapper.cpp | 10 ++++---- .../matlab/multiple_files_wrapper.cpp | 8 +++---- tests/expected/matlab/namespaces_wrapper.cpp | 16 ++++++------- .../expected/matlab/special_cases_wrapper.cpp | 10 ++++---- tests/expected/matlab/template_wrapper.cpp | 6 ++--- tests/fixtures/geometry.i | 6 ----- 12 files changed, 58 insertions(+), 57 deletions(-) diff --git a/gtwrap/matlab_wrapper/templates.py b/gtwrap/matlab_wrapper/templates.py index 7aaf8f487b..3d1306dca9 100644 --- a/gtwrap/matlab_wrapper/templates.py +++ b/gtwrap/matlab_wrapper/templates.py @@ -66,7 +66,7 @@ class WrapperTemplate: mxDestroyArray(registry); mxArray *newAlreadyCreated = mxCreateNumericMatrix(0, 0, mxINT8_CLASS, mxREAL); - if(mexPutVariable("global", "gtsam_geometry_rttiRegistry_created", newAlreadyCreated) != 0) {{ + if(mexPutVariable("global", "gtsam_{module_name}_rttiRegistry_created", newAlreadyCreated) != 0) {{ mexErrMsgTxt("gtsam wrap: Error indexing RTTI types, inheritance will not work correctly"); }} mxDestroyArray(newAlreadyCreated); diff --git a/gtwrap/matlab_wrapper/wrapper.py b/gtwrap/matlab_wrapper/wrapper.py index 3935f25a3f..42610999df 100755 --- a/gtwrap/matlab_wrapper/wrapper.py +++ b/gtwrap/matlab_wrapper/wrapper.py @@ -5,16 +5,16 @@ # pylint: disable=too-many-lines, no-self-use, too-many-arguments, too-many-branches, too-many-statements +import copy import os import os.path as osp import textwrap from functools import partial, reduce from typing import Dict, Iterable, List, Union -import copy import gtwrap.interface_parser as parser -from gtwrap.interface_parser.function import ArgumentList import gtwrap.template_instantiator as instantiator +from gtwrap.interface_parser.function import ArgumentList from gtwrap.matlab_wrapper.mixins import CheckMixin, FormatMixin from gtwrap.matlab_wrapper.templates import WrapperTemplate @@ -1269,9 +1269,9 @@ def generate_collector_function(self, func_id): Collector_{class_name}::iterator item; item = collector_{class_name}.find(self); if(item != collector_{class_name}.end()) {{ - delete self; collector_{class_name}.erase(item); }} + delete self; ''').format(class_name_sep=class_name_separated, class_name=class_name), prefix=' ') diff --git a/gtwrap/pybind_wrapper.py b/gtwrap/pybind_wrapper.py index 809c69b56e..cf89251b5c 100755 --- a/gtwrap/pybind_wrapper.py +++ b/gtwrap/pybind_wrapper.py @@ -92,9 +92,20 @@ def _wrap_method(self, prefix, suffix, method_suffix=""): + """ + Wrap the `method` for the class specified by `cpp_class`. + + Args: + method: The method to wrap. + cpp_class: The C++ name of the class to which the method belongs. + prefix: Prefix to add to the wrapped method when writing to the cpp file. + suffix: Suffix to add to the wrapped method when writing to the cpp file. + method_suffix: A string to append to the wrapped method name. + """ py_method = method.name + method_suffix cpp_method = method.to_cpp() + # Special handling for the serialize/serializable method if cpp_method in ["serialize", "serializable"]: if not cpp_class in self._serializing_classes: self._serializing_classes.append(cpp_class) @@ -104,16 +115,12 @@ def _wrap_method(self, '.def("deserialize", []({class_inst} self, string serialized)' \ '{{ gtsam::deserialize(serialized, *self); }}, py::arg("serialized"))' \ .format(class_inst=cpp_class + '*') - return serialize_method + deserialize_method - if cpp_method == "pickle": - if not cpp_class in self._serializing_classes: - raise ValueError( - "Cannot pickle a class which is not serializable") + # Since this class supports serialization, we also add the pickle method. pickle_method = self.method_indent + \ ".def(py::pickle({indent} [](const {cpp_class} &a){{ /* __getstate__: Returns a string that encodes the state of the object */ return py::make_tuple(gtsam::serialize(a)); }},{indent} [](py::tuple t){{ /* __setstate__ */ {cpp_class} obj; gtsam::deserialize(t[0].cast(), obj); return obj; }}))" - return pickle_method.format(cpp_class=cpp_class, - indent=self.method_indent) + return serialize_method + deserialize_method + \ + pickle_method.format(cpp_class=cpp_class, indent=self.method_indent) # Add underscore to disambiguate if the method name matches a python keyword if py_method in self.python_keywords: diff --git a/tests/expected/matlab/class_wrapper.cpp b/tests/expected/matlab/class_wrapper.cpp index e7e4ebf3bd..6075197af9 100644 --- a/tests/expected/matlab/class_wrapper.cpp +++ b/tests/expected/matlab/class_wrapper.cpp @@ -145,7 +145,7 @@ void _class_RTTIRegister() { mxDestroyArray(registry); mxArray *newAlreadyCreated = mxCreateNumericMatrix(0, 0, mxINT8_CLASS, mxREAL); - if(mexPutVariable("global", "gtsam_geometry_rttiRegistry_created", newAlreadyCreated) != 0) { + if(mexPutVariable("global", "gtsam_class_rttiRegistry_created", newAlreadyCreated) != 0) { mexErrMsgTxt("gtsam wrap: Error indexing RTTI types, inheritance will not work correctly"); } mxDestroyArray(newAlreadyCreated); @@ -180,9 +180,9 @@ void FunRange_deconstructor_2(int nargout, mxArray *out[], int nargin, const mxA Collector_FunRange::iterator item; item = collector_FunRange.find(self); if(item != collector_FunRange.end()) { - delete self; collector_FunRange.erase(item); } + delete self; } void FunRange_range_3(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -216,9 +216,9 @@ void FunDouble_deconstructor_6(int nargout, mxArray *out[], int nargin, const mx Collector_FunDouble::iterator item; item = collector_FunDouble.find(self); if(item != collector_FunDouble.end()) { - delete self; collector_FunDouble.erase(item); } + delete self; } void FunDouble_multiTemplatedMethod_7(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -301,9 +301,9 @@ void Test_deconstructor_15(int nargout, mxArray *out[], int nargin, const mxArra Collector_Test::iterator item; item = collector_Test.find(self); if(item != collector_Test.end()) { - delete self; collector_Test.erase(item); } + delete self; } void Test_arg_EigenConstRef_16(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -544,9 +544,9 @@ void PrimitiveRefDouble_deconstructor_43(int nargout, mxArray *out[], int nargin Collector_PrimitiveRefDouble::iterator item; item = collector_PrimitiveRefDouble.find(self); if(item != collector_PrimitiveRefDouble.end()) { - delete self; collector_PrimitiveRefDouble.erase(item); } + delete self; } void PrimitiveRefDouble_Brutal_44(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -584,9 +584,9 @@ void MyVector3_deconstructor_47(int nargout, mxArray *out[], int nargin, const m Collector_MyVector3::iterator item; item = collector_MyVector3.find(self); if(item != collector_MyVector3.end()) { - delete self; collector_MyVector3.erase(item); } + delete self; } void MyVector12_collectorInsertAndMakeBase_48(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -617,9 +617,9 @@ void MyVector12_deconstructor_50(int nargout, mxArray *out[], int nargin, const Collector_MyVector12::iterator item; item = collector_MyVector12.find(self); if(item != collector_MyVector12.end()) { - delete self; collector_MyVector12.erase(item); } + delete self; } void MultipleTemplatesIntDouble_collectorInsertAndMakeBase_51(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -639,9 +639,9 @@ void MultipleTemplatesIntDouble_deconstructor_52(int nargout, mxArray *out[], in Collector_MultipleTemplatesIntDouble::iterator item; item = collector_MultipleTemplatesIntDouble.find(self); if(item != collector_MultipleTemplatesIntDouble.end()) { - delete self; collector_MultipleTemplatesIntDouble.erase(item); } + delete self; } void MultipleTemplatesIntFloat_collectorInsertAndMakeBase_53(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -661,9 +661,9 @@ void MultipleTemplatesIntFloat_deconstructor_54(int nargout, mxArray *out[], int Collector_MultipleTemplatesIntFloat::iterator item; item = collector_MultipleTemplatesIntFloat.find(self); if(item != collector_MultipleTemplatesIntFloat.end()) { - delete self; collector_MultipleTemplatesIntFloat.erase(item); } + delete self; } void ForwardKinematics_collectorInsertAndMakeBase_55(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -714,9 +714,9 @@ void ForwardKinematics_deconstructor_58(int nargout, mxArray *out[], int nargin, Collector_ForwardKinematics::iterator item; item = collector_ForwardKinematics.find(self); if(item != collector_ForwardKinematics.end()) { - delete self; collector_ForwardKinematics.erase(item); } + delete self; } void TemplatedConstructor_collectorInsertAndMakeBase_59(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -783,9 +783,9 @@ void TemplatedConstructor_deconstructor_64(int nargout, mxArray *out[], int narg Collector_TemplatedConstructor::iterator item; item = collector_TemplatedConstructor.find(self); if(item != collector_TemplatedConstructor.end()) { - delete self; collector_TemplatedConstructor.erase(item); } + delete self; } void MyFactorPosePoint2_collectorInsertAndMakeBase_65(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -820,9 +820,9 @@ void MyFactorPosePoint2_deconstructor_67(int nargout, mxArray *out[], int nargin Collector_MyFactorPosePoint2::iterator item; item = collector_MyFactorPosePoint2.find(self); if(item != collector_MyFactorPosePoint2.end()) { - delete self; collector_MyFactorPosePoint2.erase(item); } + delete self; } void MyFactorPosePoint2_print_68(int nargout, mxArray *out[], int nargin, const mxArray *in[]) diff --git a/tests/expected/matlab/functions_wrapper.cpp b/tests/expected/matlab/functions_wrapper.cpp index 313197d8cc..17b5fb494c 100644 --- a/tests/expected/matlab/functions_wrapper.cpp +++ b/tests/expected/matlab/functions_wrapper.cpp @@ -51,7 +51,7 @@ void _functions_RTTIRegister() { mxDestroyArray(registry); mxArray *newAlreadyCreated = mxCreateNumericMatrix(0, 0, mxINT8_CLASS, mxREAL); - if(mexPutVariable("global", "gtsam_geometry_rttiRegistry_created", newAlreadyCreated) != 0) { + if(mexPutVariable("global", "gtsam_functions_rttiRegistry_created", newAlreadyCreated) != 0) { mexErrMsgTxt("gtsam wrap: Error indexing RTTI types, inheritance will not work correctly"); } mxDestroyArray(newAlreadyCreated); diff --git a/tests/expected/matlab/geometry_wrapper.cpp b/tests/expected/matlab/geometry_wrapper.cpp index 544c8b2568..ee1f043595 100644 --- a/tests/expected/matlab/geometry_wrapper.cpp +++ b/tests/expected/matlab/geometry_wrapper.cpp @@ -118,9 +118,9 @@ void gtsamPoint2_deconstructor_3(int nargout, mxArray *out[], int nargin, const Collector_gtsamPoint2::iterator item; item = collector_gtsamPoint2.find(self); if(item != collector_gtsamPoint2.end()) { - delete self; collector_gtsamPoint2.erase(item); } + delete self; } void gtsamPoint2_argChar_4(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -262,9 +262,9 @@ void gtsamPoint3_deconstructor_20(int nargout, mxArray *out[], int nargin, const Collector_gtsamPoint3::iterator item; item = collector_gtsamPoint3.find(self); if(item != collector_gtsamPoint3.end()) { - delete self; collector_gtsamPoint3.erase(item); } + delete self; } void gtsamPoint3_norm_21(int nargout, mxArray *out[], int nargin, const mxArray *in[]) diff --git a/tests/expected/matlab/inheritance_wrapper.cpp b/tests/expected/matlab/inheritance_wrapper.cpp index f2eef7f85b..0cf17eedd0 100644 --- a/tests/expected/matlab/inheritance_wrapper.cpp +++ b/tests/expected/matlab/inheritance_wrapper.cpp @@ -88,7 +88,7 @@ void _inheritance_RTTIRegister() { mxDestroyArray(registry); mxArray *newAlreadyCreated = mxCreateNumericMatrix(0, 0, mxINT8_CLASS, mxREAL); - if(mexPutVariable("global", "gtsam_geometry_rttiRegistry_created", newAlreadyCreated) != 0) { + if(mexPutVariable("global", "gtsam_inheritance_rttiRegistry_created", newAlreadyCreated) != 0) { mexErrMsgTxt("gtsam wrap: Error indexing RTTI types, inheritance will not work correctly"); } mxDestroyArray(newAlreadyCreated); @@ -121,9 +121,9 @@ void MyBase_deconstructor_2(int nargout, mxArray *out[], int nargin, const mxArr Collector_MyBase::iterator item; item = collector_MyBase.find(self); if(item != collector_MyBase.end()) { - delete self; collector_MyBase.erase(item); } + delete self; } void MyTemplatePoint2_collectorInsertAndMakeBase_3(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -171,9 +171,9 @@ void MyTemplatePoint2_deconstructor_6(int nargout, mxArray *out[], int nargin, c Collector_MyTemplatePoint2::iterator item; item = collector_MyTemplatePoint2.find(self); if(item != collector_MyTemplatePoint2.end()) { - delete self; collector_MyTemplatePoint2.erase(item); } + delete self; } void MyTemplatePoint2_accept_T_7(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -339,9 +339,9 @@ void MyTemplateMatrix_deconstructor_22(int nargout, mxArray *out[], int nargin, Collector_MyTemplateMatrix::iterator item; item = collector_MyTemplateMatrix.find(self); if(item != collector_MyTemplateMatrix.end()) { - delete self; collector_MyTemplateMatrix.erase(item); } + delete self; } void MyTemplateMatrix_accept_T_23(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -492,9 +492,9 @@ void ForwardKinematicsFactor_deconstructor_37(int nargout, mxArray *out[], int n Collector_ForwardKinematicsFactor::iterator item; item = collector_ForwardKinematicsFactor.find(self); if(item != collector_ForwardKinematicsFactor.end()) { - delete self; collector_ForwardKinematicsFactor.erase(item); } + delete self; } diff --git a/tests/expected/matlab/multiple_files_wrapper.cpp b/tests/expected/matlab/multiple_files_wrapper.cpp index 66ab7ff73d..864ae75d62 100644 --- a/tests/expected/matlab/multiple_files_wrapper.cpp +++ b/tests/expected/matlab/multiple_files_wrapper.cpp @@ -75,7 +75,7 @@ void _multiple_files_RTTIRegister() { mxDestroyArray(registry); mxArray *newAlreadyCreated = mxCreateNumericMatrix(0, 0, mxINT8_CLASS, mxREAL); - if(mexPutVariable("global", "gtsam_geometry_rttiRegistry_created", newAlreadyCreated) != 0) { + if(mexPutVariable("global", "gtsam_multiple_files_rttiRegistry_created", newAlreadyCreated) != 0) { mexErrMsgTxt("gtsam wrap: Error indexing RTTI types, inheritance will not work correctly"); } mxDestroyArray(newAlreadyCreated); @@ -110,9 +110,9 @@ void gtsamClass1_deconstructor_2(int nargout, mxArray *out[], int nargin, const Collector_gtsamClass1::iterator item; item = collector_gtsamClass1.find(self); if(item != collector_gtsamClass1.end()) { - delete self; collector_gtsamClass1.erase(item); } + delete self; } void gtsamClass2_collectorInsertAndMakeBase_3(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -143,9 +143,9 @@ void gtsamClass2_deconstructor_5(int nargout, mxArray *out[], int nargin, const Collector_gtsamClass2::iterator item; item = collector_gtsamClass2.find(self); if(item != collector_gtsamClass2.end()) { - delete self; collector_gtsamClass2.erase(item); } + delete self; } void gtsamClassA_collectorInsertAndMakeBase_6(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -176,9 +176,9 @@ void gtsamClassA_deconstructor_8(int nargout, mxArray *out[], int nargin, const Collector_gtsamClassA::iterator item; item = collector_gtsamClassA.find(self); if(item != collector_gtsamClassA.end()) { - delete self; collector_gtsamClassA.erase(item); } + delete self; } diff --git a/tests/expected/matlab/namespaces_wrapper.cpp b/tests/expected/matlab/namespaces_wrapper.cpp index 903815e8e0..b2fe3eed62 100644 --- a/tests/expected/matlab/namespaces_wrapper.cpp +++ b/tests/expected/matlab/namespaces_wrapper.cpp @@ -112,7 +112,7 @@ void _namespaces_RTTIRegister() { mxDestroyArray(registry); mxArray *newAlreadyCreated = mxCreateNumericMatrix(0, 0, mxINT8_CLASS, mxREAL); - if(mexPutVariable("global", "gtsam_geometry_rttiRegistry_created", newAlreadyCreated) != 0) { + if(mexPutVariable("global", "gtsam_namespaces_rttiRegistry_created", newAlreadyCreated) != 0) { mexErrMsgTxt("gtsam wrap: Error indexing RTTI types, inheritance will not work correctly"); } mxDestroyArray(newAlreadyCreated); @@ -147,9 +147,9 @@ void ns1ClassA_deconstructor_2(int nargout, mxArray *out[], int nargin, const mx Collector_ns1ClassA::iterator item; item = collector_ns1ClassA.find(self); if(item != collector_ns1ClassA.end()) { - delete self; collector_ns1ClassA.erase(item); } + delete self; } void ns1ClassB_collectorInsertAndMakeBase_3(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -180,9 +180,9 @@ void ns1ClassB_deconstructor_5(int nargout, mxArray *out[], int nargin, const mx Collector_ns1ClassB::iterator item; item = collector_ns1ClassB.find(self); if(item != collector_ns1ClassB.end()) { - delete self; collector_ns1ClassB.erase(item); } + delete self; } void aGlobalFunction_6(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -218,9 +218,9 @@ void ns2ClassA_deconstructor_9(int nargout, mxArray *out[], int nargin, const mx Collector_ns2ClassA::iterator item; item = collector_ns2ClassA.find(self); if(item != collector_ns2ClassA.end()) { - delete self; collector_ns2ClassA.erase(item); } + delete self; } void ns2ClassA_memberFunction_10(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -280,9 +280,9 @@ void ns2ns3ClassB_deconstructor_16(int nargout, mxArray *out[], int nargin, cons Collector_ns2ns3ClassB::iterator item; item = collector_ns2ns3ClassB.find(self); if(item != collector_ns2ns3ClassB.end()) { - delete self; collector_ns2ns3ClassB.erase(item); } + delete self; } void ns2ClassC_collectorInsertAndMakeBase_17(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -313,9 +313,9 @@ void ns2ClassC_deconstructor_19(int nargout, mxArray *out[], int nargin, const m Collector_ns2ClassC::iterator item; item = collector_ns2ClassC.find(self); if(item != collector_ns2ClassC.end()) { - delete self; collector_ns2ClassC.erase(item); } + delete self; } void aGlobalFunction_20(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -364,9 +364,9 @@ void ClassD_deconstructor_25(int nargout, mxArray *out[], int nargin, const mxAr Collector_ClassD::iterator item; item = collector_ClassD.find(self); if(item != collector_ClassD.end()) { - delete self; collector_ClassD.erase(item); } + delete self; } void gtsamValues_collectorInsertAndMakeBase_26(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -409,9 +409,9 @@ void gtsamValues_deconstructor_29(int nargout, mxArray *out[], int nargin, const Collector_gtsamValues::iterator item; item = collector_gtsamValues.find(self); if(item != collector_gtsamValues.end()) { - delete self; collector_gtsamValues.erase(item); } + delete self; } void gtsamValues_insert_30(int nargout, mxArray *out[], int nargin, const mxArray *in[]) diff --git a/tests/expected/matlab/special_cases_wrapper.cpp b/tests/expected/matlab/special_cases_wrapper.cpp index 69abbf73be..c6704c20f8 100644 --- a/tests/expected/matlab/special_cases_wrapper.cpp +++ b/tests/expected/matlab/special_cases_wrapper.cpp @@ -84,7 +84,7 @@ void _special_cases_RTTIRegister() { mxDestroyArray(registry); mxArray *newAlreadyCreated = mxCreateNumericMatrix(0, 0, mxINT8_CLASS, mxREAL); - if(mexPutVariable("global", "gtsam_geometry_rttiRegistry_created", newAlreadyCreated) != 0) { + if(mexPutVariable("global", "gtsam_special_cases_rttiRegistry_created", newAlreadyCreated) != 0) { mexErrMsgTxt("gtsam wrap: Error indexing RTTI types, inheritance will not work correctly"); } mxDestroyArray(newAlreadyCreated); @@ -108,9 +108,9 @@ void gtsamNonlinearFactorGraph_deconstructor_1(int nargout, mxArray *out[], int Collector_gtsamNonlinearFactorGraph::iterator item; item = collector_gtsamNonlinearFactorGraph.find(self); if(item != collector_gtsamNonlinearFactorGraph.end()) { - delete self; collector_gtsamNonlinearFactorGraph.erase(item); } + delete self; } void gtsamNonlinearFactorGraph_addPrior_2(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -140,9 +140,9 @@ void gtsamSfmTrack_deconstructor_4(int nargout, mxArray *out[], int nargin, cons Collector_gtsamSfmTrack::iterator item; item = collector_gtsamSfmTrack.find(self); if(item != collector_gtsamSfmTrack.end()) { - delete self; collector_gtsamSfmTrack.erase(item); } + delete self; } void gtsamPinholeCameraCal3Bundler_collectorInsertAndMakeBase_5(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -162,9 +162,9 @@ void gtsamPinholeCameraCal3Bundler_deconstructor_6(int nargout, mxArray *out[], Collector_gtsamPinholeCameraCal3Bundler::iterator item; item = collector_gtsamPinholeCameraCal3Bundler.find(self); if(item != collector_gtsamPinholeCameraCal3Bundler.end()) { - delete self; collector_gtsamPinholeCameraCal3Bundler.erase(item); } + delete self; } void gtsamGeneralSFMFactorCal3Bundler_collectorInsertAndMakeBase_7(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -184,9 +184,9 @@ void gtsamGeneralSFMFactorCal3Bundler_deconstructor_8(int nargout, mxArray *out[ Collector_gtsamGeneralSFMFactorCal3Bundler::iterator item; item = collector_gtsamGeneralSFMFactorCal3Bundler.find(self); if(item != collector_gtsamGeneralSFMFactorCal3Bundler.end()) { - delete self; collector_gtsamGeneralSFMFactorCal3Bundler.erase(item); } + delete self; } diff --git a/tests/expected/matlab/template_wrapper.cpp b/tests/expected/matlab/template_wrapper.cpp index 532bdd57a9..a0b1aaa7e2 100644 --- a/tests/expected/matlab/template_wrapper.cpp +++ b/tests/expected/matlab/template_wrapper.cpp @@ -67,7 +67,7 @@ void _template_RTTIRegister() { mxDestroyArray(registry); mxArray *newAlreadyCreated = mxCreateNumericMatrix(0, 0, mxINT8_CLASS, mxREAL); - if(mexPutVariable("global", "gtsam_geometry_rttiRegistry_created", newAlreadyCreated) != 0) { + if(mexPutVariable("global", "gtsam_template_rttiRegistry_created", newAlreadyCreated) != 0) { mexErrMsgTxt("gtsam wrap: Error indexing RTTI types, inheritance will not work correctly"); } mxDestroyArray(newAlreadyCreated); @@ -138,9 +138,9 @@ void TemplatedConstructor_deconstructor_5(int nargout, mxArray *out[], int nargi Collector_TemplatedConstructor::iterator item; item = collector_TemplatedConstructor.find(self); if(item != collector_TemplatedConstructor.end()) { - delete self; collector_TemplatedConstructor.erase(item); } + delete self; } void ScopedTemplateResult_collectorInsertAndMakeBase_6(int nargout, mxArray *out[], int nargin, const mxArray *in[]) @@ -172,9 +172,9 @@ void ScopedTemplateResult_deconstructor_8(int nargout, mxArray *out[], int nargi Collector_ScopedTemplateResult::iterator item; item = collector_ScopedTemplateResult.find(self); if(item != collector_ScopedTemplateResult.end()) { - delete self; collector_ScopedTemplateResult.erase(item); } + delete self; } diff --git a/tests/fixtures/geometry.i b/tests/fixtures/geometry.i index a7b900f805..e1460666c0 100644 --- a/tests/fixtures/geometry.i +++ b/tests/fixtures/geometry.i @@ -24,9 +24,6 @@ class Point2 { VectorNotEigen vectorConfusion(); void serializable() const; // Sets flag and creates export, but does not make serialization functions - - // enable pickling in python - void pickle() const; }; #include @@ -40,9 +37,6 @@ class Point3 { // enabling serialization functionality void serialize() const; // Just triggers a flag internally and removes actual function - - // enable pickling in python - void pickle() const; }; } From 7d4d718c9f6ce350d44133d68726df54ddaae487 Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Fri, 17 Dec 2021 20:50:08 -0500 Subject: [PATCH 2/2] remove pickle declarations from interface files --- gtsam/geometry/geometry.i | 51 ----------------------------------- gtsam/gtsam.i | 9 ------- gtsam/linear/linear.i | 27 ------------------- gtsam/navigation/navigation.i | 12 --------- gtsam/nonlinear/nonlinear.i | 12 --------- gtsam/slam/slam.i | 12 --------- 6 files changed, 123 deletions(-) diff --git a/gtsam/geometry/geometry.i b/gtsam/geometry/geometry.i index a40951d3e7..0def842651 100644 --- a/gtsam/geometry/geometry.i +++ b/gtsam/geometry/geometry.i @@ -27,9 +27,6 @@ class Point2 { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; class Point2Pairs { @@ -104,9 +101,6 @@ class StereoPoint2 { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include @@ -131,9 +125,6 @@ class Point3 { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; class Point3Pairs { @@ -191,9 +182,6 @@ class Rot2 { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include @@ -372,9 +360,6 @@ class Rot3 { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include @@ -433,9 +418,6 @@ class Pose2 { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; boost::optional align(const gtsam::Point2Pairs& pairs); @@ -502,9 +484,6 @@ class Pose3 { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; class Pose3Pairs { @@ -547,9 +526,6 @@ class Unit3 { // enabling serialization functionality void serialize() const; - // enable pickling in python - void pickle() const; - // enabling function to compare objects bool equals(const gtsam::Unit3& expected, double tol) const; }; @@ -611,9 +587,6 @@ class Cal3_S2 { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include @@ -642,9 +615,6 @@ virtual class Cal3DS2_Base { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include @@ -668,9 +638,6 @@ virtual class Cal3DS2 : gtsam::Cal3DS2_Base { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include @@ -705,9 +672,6 @@ virtual class Cal3Unified : gtsam::Cal3DS2_Base { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include @@ -750,9 +714,6 @@ class Cal3Fisheye { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include @@ -811,9 +772,6 @@ class Cal3Bundler { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include @@ -847,9 +805,6 @@ class CalibratedCamera { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include @@ -889,9 +844,6 @@ class PinholeCamera { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include @@ -962,9 +914,6 @@ class StereoCamera { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include diff --git a/gtsam/gtsam.i b/gtsam/gtsam.i index 6ac63c93f4..d4e959c3dd 100644 --- a/gtsam/gtsam.i +++ b/gtsam/gtsam.i @@ -39,9 +39,6 @@ class KeyList { void remove(size_t key); void serialize() const; - - // enable pickling in python - void pickle() const; }; // Actually a FastSet @@ -67,9 +64,6 @@ class KeySet { bool count(size_t key) const; // returns true if value exists void serialize() const; - - // enable pickling in python - void pickle() const; }; // Actually a vector @@ -91,9 +85,6 @@ class KeyVector { void push_back(size_t key) const; void serialize() const; - - // enable pickling in python - void pickle() const; }; // Actually a FastMap diff --git a/gtsam/linear/linear.i b/gtsam/linear/linear.i index d882cb38b5..7b1ce550f0 100644 --- a/gtsam/linear/linear.i +++ b/gtsam/linear/linear.i @@ -34,9 +34,6 @@ virtual class Gaussian : gtsam::noiseModel::Base { // enabling serialization functionality void serializable() const; - - // enable pickling in python - void pickle() const; }; virtual class Diagonal : gtsam::noiseModel::Gaussian { @@ -52,9 +49,6 @@ virtual class Diagonal : gtsam::noiseModel::Gaussian { // enabling serialization functionality void serializable() const; - - // enable pickling in python - void pickle() const; }; virtual class Constrained : gtsam::noiseModel::Diagonal { @@ -72,9 +66,6 @@ virtual class Constrained : gtsam::noiseModel::Diagonal { // enabling serialization functionality void serializable() const; - - // enable pickling in python - void pickle() const; }; virtual class Isotropic : gtsam::noiseModel::Diagonal { @@ -87,9 +78,6 @@ virtual class Isotropic : gtsam::noiseModel::Diagonal { // enabling serialization functionality void serializable() const; - - // enable pickling in python - void pickle() const; }; virtual class Unit : gtsam::noiseModel::Isotropic { @@ -97,9 +85,6 @@ virtual class Unit : gtsam::noiseModel::Isotropic { // enabling serialization functionality void serializable() const; - - // enable pickling in python - void pickle() const; }; namespace mEstimator { @@ -270,9 +255,6 @@ class VectorValues { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include @@ -344,9 +326,6 @@ virtual class JacobianFactor : gtsam::GaussianFactor { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include @@ -379,9 +358,6 @@ virtual class HessianFactor : gtsam::GaussianFactor { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include @@ -463,9 +439,6 @@ class GaussianFactorGraph { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include diff --git a/gtsam/navigation/navigation.i b/gtsam/navigation/navigation.i index 1f9ffcf2e5..c2a3bcdb42 100644 --- a/gtsam/navigation/navigation.i +++ b/gtsam/navigation/navigation.i @@ -44,9 +44,6 @@ class ConstantBias { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; }///\namespace imuBias @@ -73,9 +70,6 @@ class NavState { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include @@ -121,9 +115,6 @@ virtual class PreintegrationParams : gtsam::PreintegratedRotationParams { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include @@ -156,9 +147,6 @@ class PreintegratedImuMeasurements { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; virtual class ImuFactor: gtsam::NonlinearFactor { diff --git a/gtsam/nonlinear/nonlinear.i b/gtsam/nonlinear/nonlinear.i index 8407668cba..960b3ff273 100644 --- a/gtsam/nonlinear/nonlinear.i +++ b/gtsam/nonlinear/nonlinear.i @@ -131,9 +131,6 @@ class Ordering { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include @@ -196,9 +193,6 @@ class NonlinearFactorGraph { // enabling serialization functionality void serialize() const; - // enable pickling in python - void pickle() const; - void saveGraph(const string& s) const; }; @@ -290,9 +284,6 @@ class Values { // enabling serialization functionality void serialize() const; - // enable pickling in python - void pickle() const; - // New in 4.0, we have to specialize every insert/update/at to generate // wrappers Instead of the old: void insert(size_t j, const gtsam::Value& // value); void update(size_t j, const gtsam::Value& val); gtsam::Value @@ -851,9 +842,6 @@ virtual class PriorFactor : gtsam::NoiseModelFactor { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include diff --git a/gtsam/slam/slam.i b/gtsam/slam/slam.i index da1c197cbf..d276c4f2ec 100644 --- a/gtsam/slam/slam.i +++ b/gtsam/slam/slam.i @@ -21,9 +21,6 @@ virtual class BetweenFactor : gtsam::NoiseModelFactor { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; #include @@ -172,9 +169,6 @@ virtual class PoseTranslationPrior : gtsam::NoiseModelFactor { // enabling serialization functionality void serialize() const; - - // enable pickling in python - void pickle() const; }; typedef gtsam::PoseTranslationPrior PoseTranslationPrior2D; @@ -234,9 +228,6 @@ class SfmTrack { // enabling serialization functionality void serialize() const; - // enable pickling in python - void pickle() const; - // enabling function to compare objects bool equals(const gtsam::SfmTrack& expected, double tol) const; }; @@ -253,9 +244,6 @@ class SfmData { // enabling serialization functionality void serialize() const; - // enable pickling in python - void pickle() const; - // enabling function to compare objects bool equals(const gtsam::SfmData& expected, double tol) const; };