diff options
author | astrojhgu <astrojhgu@ed2142bd-67ad-457f-ba7c-d818d4011675> | 2009-10-19 17:02:42 +0000 |
---|---|---|
committer | astrojhgu <astrojhgu@ed2142bd-67ad-457f-ba7c-d818d4011675> | 2009-10-19 17:02:42 +0000 |
commit | 372caea057ff88b2fb1327c45f77b7e4205293ea (patch) | |
tree | 08fde30323593835775b647898044f388f9586ed /interface/optdl.hpp | |
parent | e664e9d1d23b44f24459ddb24241efb684bdb0fd (diff) | |
download | opt-utilities-372caea057ff88b2fb1327c45f77b7e4205293ea.tar.bz2 |
git-svn-id: file:///home/svn/opt_utilities@85 ed2142bd-67ad-457f-ba7c-d818d4011675
Diffstat (limited to 'interface/optdl.hpp')
-rw-r--r-- | interface/optdl.hpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/interface/optdl.hpp b/interface/optdl.hpp new file mode 100644 index 0000000..9729335 --- /dev/null +++ b/interface/optdl.hpp @@ -0,0 +1,45 @@ +#ifdef __linux__ + +#ifndef DL_MODEL_HPP +#define DL_MODEL_HPP +#define OPT_HEADER +#include <core/fitter.hpp> +#include <cmath> +#include <iostream> +#include <string> +#include <sstream> +#include <dlfcn.h> + +namespace opt_utilities +{ + + template <typename T> + model<T,T,std::vector<T>,std::string>* load_model(const char* fname) + { + void* handle; + + handle=dlopen(fname,RTLD_LAZY); + + if(!handle) + { + throw opt_exception("faild loading object"); + } + + + model<T,T,std::vector<T>,std::string>* (*func_create)(); + + func_create=(model<T,T,std::vector<T>,std::string>* (*)())dlsym(handle,"create_model_object"); + + if(!func_create) + { + throw opt_exception("symble undefined"); + } + return func_create(); + } +} + + + +#endif +#endif +//EOF |