example_0540.cpp
См. документацию.
1 #include <pyhrol.h>
2 #include "myclass.h"
3 
4 using namespace std;
5 using namespace pyhrol;
6 
7 class MyClass2: public MyClass
8 {
9 public:
10  void reset(const char *msg)
11  {
12  m_msg = msg;
13  }
14 
15  MyClass2(const char *msg)
16  : MyClass(msg)
17  {
18  }
19 };
20 
21 template <class T> class PyTypeCommon: public TypeWrapper<T>
22 {
23  virtual void constructor(T &obj, Tuples &_args) const
24  {
25  const char *msg;
26  PYHROL_PARSE_TUPLE_1(NULL, _args, msg)
29 
30  new (&obj) T(msg);
31 
33  }
34 
35  virtual void destructor(T &obj) const
36  {
37  obj.~T();
38  }
39 
40 public:
41  void say(const Ptr<T> &obj, Tuples &_args) const
42  {
45 
46  obj->say();
47 
49  }
50 };
51 
52 class PyType: public PyTypeCommon<MyClass>
53 {
55  : TypeBase<MyClass>("MyClass", "help")
56  {
57  m_add_method<PyTypeCommon<MyClass>, &PyType::say>("say", NULL);
58  }
59 
60  static void init() __attribute__ ((constructor))
61  {
62  m_get(new PyType);
63  }
64 };
65 
66 class PyType2: public PyTypeCommon<MyClass2>
67 {
69  : TypeBase<MyClass2>("MyClass2", "help")
70  {
71  m_add_method<PyTypeCommon<MyClass2>, &PyType2::say>("say", NULL);
72  m_add_method<PyType2, &PyType2::reset>("reset", NULL);
73  }
74 
75  void reset(const Ptr<MyClass2> &obj, Tuples &_args) const
76  {
77  const char *msg;
78  PYHROL_PARSE_TUPLE_1(NULL, _args, msg)
81 
82  obj->reset(msg);
83 
85  }
86 
87  static void init() __attribute__ ((constructor))
88  {
89  m_get(new PyType2);
90  }
91 };
#define PYHROL_AFTER_BUILD_VALUE(container)
Definition: pyhrol_macro.h:18
MyClass2(const char *msg)
#define PYHROL_AFTER_EXECUTE_DEFAULT(container)
Definition: pyhrol_macro.h:26
Definition: myclass.h:6
void reset(const char *msg)
#define PYHROL_AFTER_PARSE_TUPLE(container)
Definition: pyhrol_macro.h:9
void say(const Ptr< T > &obj, Tuples &_args) const
void say(const Ptr< MyClass > &obj, Tuples &_args) const
virtual void constructor(T &obj, Tuples &_args) const
#define PYHROL_PARSE_TUPLE_1(description, container, arg1)
void reset(const Ptr< MyClass2 > &obj, Tuples &_args) const
static void init() __attribute__((constructor))
static void init() __attribute__((constructor))
virtual void destructor(T &obj) const