27 #ifndef G2O_OPTMIZATION_ALGORITHM_PROPERTY_H 28 #define G2O_OPTMIZATION_ALGORITHM_PROPERTY_H 30 #include "../../config.h" 31 #include "../stuff/misc.h" 45 class OptimizationAlgorithm;
46 class SparseOptimizer;
77 typedef std::list<AbstractOptimizationAlgorithmCreator*>
CreatorList;
83 static void destroy();
101 void listSolvers(std::ostream& os)
const;
112 CreatorList::const_iterator findSolver(
const std::string& name)
const;
113 CreatorList::iterator findSolver(
const std::string& name);
125 #ifdef G2O_DEBUG_OPTIMIZATION_ALGORITHM_FACTORY 126 std::cout << __FUNCTION__ <<
": Registering " << _creator->
property().
name <<
" of type " <<
typeid(*_creator).name() << std::endl;
133 #ifdef G2O_DEBUG_OPTIMIZATION_ALGORITHM_FACTORY 134 std::cout << __FUNCTION__ <<
": Unregistering " << _creator->property().name << std::endl;
144 #if defined _MSC_VER && defined G2O_SHARED_LIBS 145 # define G2O_OAF_EXPORT __declspec(dllexport) 146 # define G2O_OAF_IMPORT __declspec(dllimport) 148 # define G2O_OAF_EXPORT 149 # define G2O_OAF_IMPORT 152 #define G2O_REGISTER_OPTIMIZATION_LIBRARY(libraryname) \ 153 extern "C" void G2O_OAF_EXPORT g2o_optimization_library_##libraryname(void) {} 155 #define G2O_USE_OPTIMIZATION_LIBRARY(libraryname) \ 156 extern "C" void G2O_OAF_IMPORT g2o_optimization_library_##libraryname(void); \ 157 static g2o::ForceLinker g2o_force_optimization_algorithm_library_##libraryname(g2o_optimization_library_##libraryname); 159 #define G2O_REGISTER_OPTIMIZATION_ALGORITHM(optimizername, instance) \ 160 extern "C" void G2O_OAF_EXPORT g2o_optimization_algorithm_##optimizername(void) {} \ 161 static g2o::RegisterOptimizationAlgorithmProxy g_optimization_algorithm_proxy_##optimizername(instance); 163 #define G2O_USE_OPTIMIZATION_ALGORITHM(optimizername) \ 164 extern "C" void G2O_OAF_IMPORT g2o_optimization_algorithm_##optimizername(void); \ 165 static g2o::ForceLinker g2o_force_optimization_algorithm_link_##optimizername(g2o_optimization_algorithm_##optimizername); std::string name
name of the solver, e.g., var
describe the properties of a solver
const OptimizationAlgorithmProperty & property() const
return the properties of the solver
~RegisterOptimizationAlgorithmProxy()
static OptimizationAlgorithmFactory * factoryInstance
create solvers based on their short name
virtual ~AbstractOptimizationAlgorithmCreator()
const CreatorList & creatorList() const
return the underlying list of creators
base for allocating an optimization algorithm
RegisterOptimizationAlgorithmProxy(AbstractOptimizationAlgorithmCreator *c)
void registerSolver(AbstractOptimizationAlgorithmCreator *c)
static OptimizationAlgorithmFactory * instance()
return the instance
AbstractOptimizationAlgorithmCreator * _creator
virtual OptimizationAlgorithm * construct()=0
allocate a solver operating on optimizer, re-implement for your creator
void unregisterSolver(AbstractOptimizationAlgorithmCreator *c)
std::list< AbstractOptimizationAlgorithmCreator * > CreatorList
AbstractOptimizationAlgorithmCreator(const OptimizationAlgorithmProperty &p)
Generic interface for a non-linear solver operating on a graph.
OptimizationAlgorithmProperty _property