2 public:inline QString(const int i);
4 class QGenericArgument {
6 class ExtensionOption {
8 template < typename T2 > struct if_ {
11 template < typename T > struct c_imp {
12 typedef const T & param_type;
14 template < typename T > struct call_traits {
15 typedef typename c_imp < T >::param_type param_type;
18 template < class T > struct rvalue_from_python_data {
19 ~rvalue_from_python_data();
21 template < class T > struct extract_rvalue {
22 typedef typename if_ < typename call_traits <
23 T >::param_type >::type result_type;
24 mutable rvalue_from_python_data < T > m_data;
26 template < class T > struct select_extract {
27 typedef typename if_ < extract_rvalue < T > >::type type;
29 template < class T > struct extract:select_extract < T >::type {
30 private:typedef typename select_extract < T >::type base;
31 public:typedef typename base::result_type result_type;
32 operator result_type() const {
33 } extract(object const &);
35 template < class Key, class T > class QHash {
36 public:inline QHash() {
38 T & operator[](const Key & key);
42 typedef QGenericArgument(*func_python_to_cpp_type) (const object &);
43 public: template < typename T >
44 static type_details *create_value_type_details() {
45 type_details *self = new type_details();
46 self->m_func_python_to_cpp = &python_to_value_type < T >;
47 } func_python_to_cpp_type m_func_python_to_cpp;
49 static QGenericArgument python_to_value_type(const object & obj) {
50 T *val = new T(extract < T > (obj));
55 public:static type_manager & instance();
56 template < typename T > void register_value_type() {
58 type_details::create_value_type_details < T > ();
59 } QHash < QString, type_details * >m_type_map;
64 type_manager::instance().register_value_type < ExtensionOption > ();