00001
00010 #ifndef BS_PY_EVENT_MANAGER_H
00011 #define BS_PY_EVENT_MANAGER_H
00012
00013 #ifdef BSPY_EXPORTING_PLUGIN
00014
00015 #include "py_event_base.h"
00016 #include "event_manager.h"
00017
00018 namespace blue_sky {
00019 namespace python {
00020
00021 template <typename strategy_t>
00022 class event_creater_base
00023 {
00024 public:
00025 typedef py_event_base <strategy_t> py_event_base_t;
00026
00027 event_creater_base (boost::python::object &pobj);
00028
00029 py_event_base_t *create ();
00030
00031 protected:
00032 boost::python::object &obj;
00033 };
00034
00038 template <typename strategy_t>
00039 class py_event_manager : public py_objbase
00040 {
00041 public:
00042 typedef py_event_manager this_t;
00043 typedef event_manager <strategy_t> wrapped_t;
00044 typedef smart_ptr<wrapped_t, true> sp_em_t;
00045 typedef py_event_base <strategy_t> py_event_base_t;
00046 typedef event_creater_base <strategy_t> event_creater_base_t;
00047
00048 typedef event_list_iterator <strategy_t> event_list_iterator_t;
00049
00050 public:
00051 py_event_manager();
00052 py_event_manager(const sp_em_t &src);
00053 py_event_manager(const this_t &src);
00054
00055 ~py_event_manager ();
00056
00057 py_event_base_t *create_event(const std::string &date, const std::string &event_name, const std::string &event_params);
00058
00059 void factory_register(const std::string &name, const event_creater_base_t &creater);
00060
00061 event_list_iterator_t el_begin ();
00062
00063 };
00064
00065
00069 void
00070 py_export_event_manager ();
00071
00072 }
00073 }
00074
00075 #endif //#ifdef BSPY_EXPORTING_PLUGIN
00076 #endif //#ifndef BS_PY_EVENT_MANAGER_H