49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
/* ----------------------------------------------------------------------------
 | 
						|
 | 
						|
 * GTSAM Copyright 2010, Georgia Tech Research Corporation, 
 | 
						|
 * Atlanta, Georgia 30332-0415
 | 
						|
 * All Rights Reserved
 | 
						|
 * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
 | 
						|
 | 
						|
 * See LICENSE for the license information
 | 
						|
 | 
						|
 * -------------------------------------------------------------------------- */
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief exports virtual class NonlinearFactor to python
 | 
						|
 * @author Ellon Paiva Mendes (LAAS-CNRS)
 | 
						|
 **/
 | 
						|
 | 
						|
#include <boost/python.hpp>
 | 
						|
 | 
						|
#define NO_IMPORT_ARRAY
 | 
						|
#include <numpy_eigen/NumpyEigenConverter.hpp>
 | 
						|
 | 
						|
#include "gtsam/nonlinear/NonlinearFactor.h"
 | 
						|
 | 
						|
using namespace boost::python;
 | 
						|
using namespace gtsam;
 | 
						|
 | 
						|
// Wrap around pure virtual class NonlinearFactor.
 | 
						|
// All pure virtual methods should be wrapped. Non-pure may be wrapped if we want to mimic the 
 | 
						|
// overloading through inheritance in Python.
 | 
						|
// See: http://www.boost.org/doc/libs/1_59_0/libs/python/doc/tutorial/doc/html/python/exposing.html#python.class_virtual_functions
 | 
						|
struct NonlinearFactorCallback : NonlinearFactor, wrapper<NonlinearFactor>
 | 
						|
{
 | 
						|
  double error (const Values & values) const {
 | 
						|
    return this->get_override("error")(values);
 | 
						|
  }
 | 
						|
  size_t dim () const {
 | 
						|
    return this->get_override("dim")();
 | 
						|
  }
 | 
						|
  boost::shared_ptr<GaussianFactor> linearize(const Values & values) const {
 | 
						|
    return this->get_override("linearize")(values);
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
void exportNonlinearFactor(){
 | 
						|
 | 
						|
  class_<NonlinearFactorCallback,boost::noncopyable>("NonlinearFactor")
 | 
						|
  ;
 | 
						|
 | 
						|
} |