30 #ifndef _GranOO_libCore_PlugIn_hpp_ 
   31 #define _GranOO_libCore_PlugIn_hpp_ 
   56 #define DECLARE_STD_GRANOO_PLUGIN(T)                                 \ 
   58   static const bool register_granoo_plugin_;                         \ 
   59   static const std::string class_ID() {return  std::string(#T);} 
   61 #define DECLARE_STD_GRANOO_PLUGIN_ID(CLASSID)                        \ 
   63   static const bool register_granoo_plugin_;                         \ 
   64   static const std::string class_ID() {return std::string(CLASSID);} 
   66 #define DECLARE_CUSTOM_GRANOO_PLUGIN(T)                              \ 
   68   static const bool register_granoo_plugin_;                         \ 
   69   static const std::string class_ID() {return std::string(#T);} 
   71 #define DECLARE_CUSTOM_GRANOO_PLUGIN_ID(CLASSID)                     \ 
   73   static const bool register_granoo_plugin_;                         \ 
   74   static const std::string class_ID() {return std::string(CLASSID);} 
   77 #define REGISTER_GRANOO_PLUGIN(T)                                    \ 
   78   const bool T::register_granoo_plugin_ = Core::PlugInInterface<T>::record(__FILE__); 
   80 #define REGISTER_GRANOO_PLUGIN_DESC(T, desc)                         \ 
   81   const bool T::register_granoo_plugin_ = Core::PlugInInterface<T>::record(__FILE__, desc); 
   83 #define REGISTER_GRANOO_PLUGIN_T(T)                                  \ 
   84   template<> const bool T::register_granoo_plugin_ = Core::PlugInInterface<T>::record(__FILE__); 
   86 #define REGISTER_GRANOO_PLUGIN_DESC_T(T, desc)                       \ 
   87   template<> const bool T::register_granoo_plugin_ = Core::PlugInInterface<T>::record(__FILE__, desc); 
  103       static PlugIn& 
get(
const std::string& 
id, 
unsigned int rank = 0);
 
  104       static std::map< std::string, std::vector<PlugIn* > > 
get_all_plugin();
 
  106       static bool exist(
const std::string& 
id, 
unsigned int rank = 0);
 
  107       static const std::string 
class_ID() {
return std::string(
"PlugIn");}
 
  110       PlugIn(
const std::string& 
id);
 
  133       GRANOO_ACCESS         (every_iter         , 
unsigned int , 
_every_iter        );
 
  150       static std::map< std::string, std::vector<PlugIn* > > 
_all;
 
  180       static T& 
get(
unsigned int = 0);
 
  181       static bool exist(
unsigned int rank = 0);
 
  182       static bool record(
const std::string file, 
const std::string 
desc = 
"");
 
  194       static std::vector< PlugInInterface<T>* > 
_all;
 
  214       UserAssert( rank < _all.size(), 
"Can't find the '" + std::string(
typeid(T).name()) +
 
  215                   "' with rank=" + std::to_string(rank));
 
  216       return *
static_cast<T*
>(_all[rank]);
 
  222       return (rank < _all.size());
 
  229       _all.push_back(
this);
 
  235       for (
unsigned int i = 0; i < _all.size(); ++i) {
 
  237           _all.erase(_all.begin()+i);
 
  255       const std::string pluginId = T::class_ID();
 
  256       std::function<
PlugIn * ()> f;
 
#define UserAssert(condition, message)
Definition: Macro.hpp:54
 
Definition: ObjectFactory.hpp:99
 
Definition: ObjectFactory.hpp:235
 
static bool record(const std::string &id, std::string file_name="", std::string desc="")
Definition: ObjectFactory.hpp:276
 
Definition: ObjectFactory.hpp:167
 
Definition: PlugIn.hpp:101
 
bool _can_run
Definition: PlugIn.hpp:158
 
virtual ~PlugIn()
Definition: PlugIn.cpp:105
 
static std::vector< PlugIn * > get_all_plugin_vector()
Definition: PlugIn.cpp:62
 
bool _verbose
Definition: PlugIn.hpp:159
 
bool _init
Definition: PlugIn.hpp:157
 
virtual void run()
Definition: PlugIn.cpp:123
 
static PlugIn & get(const std::string &id, unsigned int rank=0)
Definition: PlugIn.cpp:50
 
virtual void read_xml_element(const TiXmlElement *el, bool verbose=false)
Definition: PlugIn.cpp:301
 
static const std::string class_ID()
Definition: PlugIn.hpp:107
 
PlugIn * _parent
Definition: PlugIn.hpp:156
 
std::chrono::microseconds _elapsed_time
Definition: PlugIn.hpp:169
 
void trigger_signal_run()
Definition: PlugIn.cpp:285
 
Math::Expression * _init_if_expr
Definition: PlugIn.hpp:168
 
bool is_stop() const
Definition: PlugIn.cpp:142
 
static std::map< std::string, std::vector< PlugIn * > > get_all_plugin()
Definition: PlugIn.cpp:57
 
double _step_time
Definition: PlugIn.hpp:165
 
void operator=(const PlugIn &)
 
void verbose()
Definition: PlugIn.cpp:295
 
virtual void init()
Definition: PlugIn.cpp:365
 
static bool exist(const std::string &id, unsigned int rank=0)
Definition: PlugIn.cpp:73
 
void unstop()
Definition: PlugIn.cpp:135
 
unsigned int _iter_number
Definition: PlugIn.hpp:161
 
Math::Expression * _trigger_if_expr
Definition: PlugIn.hpp:167
 
void run_and_init()
Definition: PlugIn.cpp:161
 
std::vector< PlugIn * > _subplugin
Definition: PlugIn.hpp:146
 
const std::string _ID
Definition: PlugIn.hpp:154
 
static std::map< std::string, std::vector< PlugIn * > > _all
Definition: PlugIn.hpp:150
 
bool is_trigger() const
Definition: PlugIn.cpp:147
 
void stop()
Definition: PlugIn.cpp:130
 
unsigned int _nb_outputs
Definition: PlugIn.hpp:166
 
unsigned int _every_iter
Definition: PlugIn.hpp:164
 
int get_instance_number()
Definition: PlugIn.cpp:266
 
double get_elapsed_time()
Definition: PlugIn.cpp:261
 
PlugIn * _current_subplugin
Definition: PlugIn.hpp:147
 
void set_tot_iter_number(unsigned int)
Definition: PlugIn.cpp:255
 
const std::string _description
Definition: PlugIn.hpp:155
 
virtual void parse_xml()
Definition: PlugIn.cpp:360
 
unsigned int _current_iter_number
Definition: PlugIn.hpp:160
 
bool _stop
Definition: PlugIn.hpp:163
 
double _total_time
Definition: PlugIn.hpp:162
 
bool is_multi_thread() const
Definition: PlugIn.cpp:376
 
const std::string & get_ID() const
Definition: PlugIn.hpp:112
 
void trigger_signal(const std::string &sigID)
Definition: PlugIn.cpp:277
 
Definition: PlugIn.hpp:177
 
static bool record(const std::string file, const std::string desc="")
Definition: PlugIn.hpp:254
 
static T & get(unsigned int=0)
Definition: PlugIn.hpp:213
 
virtual ~PlugInInterface()
Definition: PlugIn.hpp:233
 
void operator=(const PlugInInterface< T > &)
 
static bool exist(unsigned int rank=0)
Definition: PlugIn.hpp:221
 
PlugInInterface()
Definition: PlugIn.hpp:227
 
PlugInInterface(const PlugInInterface< T > &)
 
static PlugIn * build()
Definition: PlugIn.hpp:247
 
static std::vector< PlugInInterface< T > * > _all
Definition: PlugIn.hpp:194
 
static PlugInManager & get()
Definition: PlugInManager.cpp:45
 
bool record(const std::string &id, std::function< PlugIn *()>)
Definition: PlugInManager.cpp:133
 
Definition: Expression.hpp:46
 
static const char * desc
Definition: Between2SetOf.cpp:37
 
Definition: Common.hpp:198