Merging 'master' into 'wrap'
commit
1999078177
26
wrap/DOCS.md
26
wrap/DOCS.md
|
@ -50,6 +50,32 @@ The python wrapper supports keyword arguments for functions/methods. Hence, the
|
|||
```
|
||||
|
||||
- Class variables are read-write so they can be updated directly in Python.
|
||||
- For the Matlab wrapper, specifying the full property type (including namespaces) is required.
|
||||
|
||||
```cpp
|
||||
class TriangulationResult {
|
||||
gtsam::SharedNoiseModel noiseModel;
|
||||
};
|
||||
```
|
||||
|
||||
- If the property is part of an enum within the class, the type should be specified as `gtsam::Class::Enum`. Similarly for templated types where `This` is used, e.g. `gtsam::This::Enum`.
|
||||
|
||||
```cpp
|
||||
class TriangulationResult {
|
||||
enum Status { VALID, DEGENERATE, BEHIND_CAMERA, OUTLIER, FAR_POINT };
|
||||
gtsam::TriangulationResult::Status status;
|
||||
};
|
||||
|
||||
template<PARAMS>
|
||||
virtual class GncParams {
|
||||
enum Verbosity {
|
||||
SILENT,
|
||||
SUMMARY,
|
||||
VALUES
|
||||
};
|
||||
gtsam::This::Verbosity verbosity;
|
||||
};
|
||||
```
|
||||
|
||||
- Operator Overloading (Python only)
|
||||
- You can overload operators just like in C++.
|
||||
|
|
|
@ -1181,7 +1181,7 @@ class MatlabWrapper(CheckMixin, FormatMixin):
|
|||
|
||||
def wrap_collector_function_return_types(self, return_type, func_id):
|
||||
"""
|
||||
Wrap the return type of the collector function.
|
||||
Wrap the return type of the collector function when a std::pair is returned.
|
||||
"""
|
||||
return_type_text = ' out[' + str(func_id) + '] = '
|
||||
pair_value = 'first' if func_id == 0 else 'second'
|
||||
|
@ -1239,10 +1239,10 @@ class MatlabWrapper(CheckMixin, FormatMixin):
|
|||
|
||||
if ctype.typename.name not in self.ignore_namespace:
|
||||
expanded += textwrap.indent(
|
||||
'out[0] = wrap_shared_ptr({}, false);'.format(shared_obj),
|
||||
'out[0] = wrap_shared_ptr({0}, false);'.format(shared_obj),
|
||||
prefix=' ')
|
||||
else:
|
||||
expanded += ' out[0] = wrap< {} >({});'.format(
|
||||
expanded += ' out[0] = wrap< {0} >({1});'.format(
|
||||
ctype.typename.name, obj)
|
||||
|
||||
return expanded
|
||||
|
|
|
@ -1,9 +1,13 @@
|
|||
%class GeneralSFMFactorCal3Bundler, see Doxygen page for details
|
||||
%at https://gtsam.org/doxygen/
|
||||
%
|
||||
%-------Properties-------
|
||||
%verbosity
|
||||
%
|
||||
classdef GeneralSFMFactorCal3Bundler < handle
|
||||
properties
|
||||
ptr_gtsamGeneralSFMFactorCal3Bundler = 0
|
||||
verbosity
|
||||
end
|
||||
methods
|
||||
function obj = GeneralSFMFactorCal3Bundler(varargin)
|
||||
|
@ -24,6 +28,16 @@ classdef GeneralSFMFactorCal3Bundler < handle
|
|||
%DISPLAY Calls print on the object
|
||||
function disp(obj), obj.display; end
|
||||
%DISP Calls print on the object
|
||||
|
||||
function varargout = get.verbosity(this)
|
||||
varargout{1} = special_cases_wrapper(11, this);
|
||||
this.verbosity = varargout{1};
|
||||
end
|
||||
|
||||
function set.verbosity(this, value)
|
||||
obj.verbosity = value;
|
||||
special_cases_wrapper(12, this, value);
|
||||
end
|
||||
end
|
||||
|
||||
methods(Static = true)
|
||||
|
|
|
@ -204,6 +204,21 @@ void gtsamGeneralSFMFactorCal3Bundler_deconstructor_10(int nargout, mxArray *out
|
|||
delete self;
|
||||
}
|
||||
|
||||
void gtsamGeneralSFMFactorCal3Bundler_get_verbosity_11(int nargout, mxArray *out[], int nargin, const mxArray *in[])
|
||||
{
|
||||
checkArguments("verbosity",nargout,nargin-1,0);
|
||||
auto obj = unwrap_shared_ptr<gtsam::GeneralSFMFactor<gtsam::PinholeCamera<gtsam::Cal3Bundler>, gtsam::Point3>>(in[0], "ptr_gtsamGeneralSFMFactorCal3Bundler");
|
||||
out[0] = wrap_shared_ptr(boost::make_shared<gtsam::GeneralSFMFactor<gtsam::PinholeCamera<gtsam::Cal3Bundler>, gtsam::Point3>::Verbosity>(obj->verbosity),"gtsam.GeneralSFMFactor<gtsam::PinholeCamera<gtsam::Cal3Bundler>, gtsam::Point3>.Verbosity", false);
|
||||
}
|
||||
|
||||
void gtsamGeneralSFMFactorCal3Bundler_set_verbosity_12(int nargout, mxArray *out[], int nargin, const mxArray *in[])
|
||||
{
|
||||
checkArguments("verbosity",nargout,nargin-1,1);
|
||||
auto obj = unwrap_shared_ptr<gtsam::GeneralSFMFactor<gtsam::PinholeCamera<gtsam::Cal3Bundler>, gtsam::Point3>>(in[0], "ptr_gtsamGeneralSFMFactorCal3Bundler");
|
||||
boost::shared_ptr<gtsam::GeneralSFMFactor<gtsam::PinholeCamera<gtsam::Cal3Bundler>, gtsam::Point3>::Verbosity> verbosity = unwrap_shared_ptr< gtsam::GeneralSFMFactor<gtsam::PinholeCamera<gtsam::Cal3Bundler>, gtsam::Point3>::Verbosity >(in[1], "ptr_gtsamGeneralSFMFactor<gtsam::PinholeCamera<gtsam::Cal3Bundler>, gtsam::Point3>Verbosity");
|
||||
obj->verbosity = *verbosity;
|
||||
}
|
||||
|
||||
|
||||
void mexFunction(int nargout, mxArray *out[], int nargin, const mxArray *in[])
|
||||
{
|
||||
|
@ -249,6 +264,12 @@ void mexFunction(int nargout, mxArray *out[], int nargin, const mxArray *in[])
|
|||
case 10:
|
||||
gtsamGeneralSFMFactorCal3Bundler_deconstructor_10(nargout, out, nargin-1, in+1);
|
||||
break;
|
||||
case 11:
|
||||
gtsamGeneralSFMFactorCal3Bundler_get_verbosity_11(nargout, out, nargin-1, in+1);
|
||||
break;
|
||||
case 12:
|
||||
gtsamGeneralSFMFactorCal3Bundler_set_verbosity_12(nargout, out, nargin-1, in+1);
|
||||
break;
|
||||
}
|
||||
} catch(const std::exception& e) {
|
||||
mexErrMsgTxt(("Exception from gtsam:\n" + std::string(e.what()) + "\n").c_str());
|
||||
|
|
|
@ -32,7 +32,15 @@ PYBIND11_MODULE(special_cases_py, m_) {
|
|||
|
||||
py::class_<gtsam::PinholeCamera<gtsam::Cal3Bundler>, std::shared_ptr<gtsam::PinholeCamera<gtsam::Cal3Bundler>>>(m_gtsam, "PinholeCameraCal3Bundler");
|
||||
|
||||
py::class_<gtsam::GeneralSFMFactor<gtsam::PinholeCamera<gtsam::Cal3Bundler>, gtsam::Point3>, std::shared_ptr<gtsam::GeneralSFMFactor<gtsam::PinholeCamera<gtsam::Cal3Bundler>, gtsam::Point3>>>(m_gtsam, "GeneralSFMFactorCal3Bundler");
|
||||
py::class_<gtsam::GeneralSFMFactor<gtsam::PinholeCamera<gtsam::Cal3Bundler>, gtsam::Point3>, std::shared_ptr<gtsam::GeneralSFMFactor<gtsam::PinholeCamera<gtsam::Cal3Bundler>, gtsam::Point3>>> generalsfmfactorcal3bundler(m_gtsam, "GeneralSFMFactorCal3Bundler");
|
||||
generalsfmfactorcal3bundler
|
||||
.def_readwrite("verbosity", >sam::GeneralSFMFactor<gtsam::PinholeCamera<gtsam::Cal3Bundler>, gtsam::Point3>::verbosity);
|
||||
|
||||
py::enum_<gtsam::GeneralSFMFactor<gtsam::PinholeCamera<gtsam::Cal3Bundler>, gtsam::Point3>::Verbosity>(generalsfmfactorcal3bundler, "Verbosity", py::arithmetic())
|
||||
.value("SILENT", gtsam::GeneralSFMFactor<gtsam::PinholeCamera<gtsam::Cal3Bundler>, gtsam::Point3>::Verbosity::SILENT)
|
||||
.value("SUMMARY", gtsam::GeneralSFMFactor<gtsam::PinholeCamera<gtsam::Cal3Bundler>, gtsam::Point3>::Verbosity::SUMMARY)
|
||||
.value("VALUES", gtsam::GeneralSFMFactor<gtsam::PinholeCamera<gtsam::Cal3Bundler>, gtsam::Point3>::Verbosity::VALUES);
|
||||
|
||||
|
||||
|
||||
#include "python/specializations.h"
|
||||
|
|
|
@ -17,7 +17,16 @@ class NonlinearFactorGraph {
|
|||
|
||||
// Typedef with template as template arg.
|
||||
template<CALIBRATION, POINT>
|
||||
class GeneralSFMFactor {};
|
||||
class GeneralSFMFactor {
|
||||
gtsam::This::Verbosity verbosity;
|
||||
|
||||
enum Verbosity {
|
||||
SILENT,
|
||||
SUMMARY,
|
||||
VALUES
|
||||
};
|
||||
};
|
||||
|
||||
typedef gtsam::GeneralSFMFactor<gtsam::PinholeCamera<gtsam::Cal3Bundler>, gtsam::Point3> GeneralSFMFactorCal3Bundler;
|
||||
|
||||
// Template as template arg for class property.
|
||||
|
|
Loading…
Reference in New Issue