X-Git-Url: https://git.wh0rd.org/?p=ICEs.git;a=blobdiff_plain;f=321197%2Fpyside.ii.6;fp=321197%2Fpyside.ii.6;h=783cc789aa0909feea8335b7135e048d48fd2a6e;hp=0000000000000000000000000000000000000000;hb=bd3239d2bbe0de3a200b266503e3330b1e391489;hpb=dbff64cb4b7530861c2309c794efdd4e0cf47a23 diff --git a/321197/pyside.ii.6 b/321197/pyside.ii.6 new file mode 100644 index 0000000..783cc78 --- /dev/null +++ b/321197/pyside.ii.6 @@ -0,0 +1,179 @@ +class QString { public: inline QString(const char *ch); }; +class QGenericArgument {}; +class QWebPage { + public: + template inline void qt_check_for_QOBJECT_macro(const T &_q_argument); + class ExtensionOption {}; +}; +namespace boost { + namespace mpl { + template< bool C_ > struct bool_; + typedef bool_ false_; + template< bool C_ > struct bool_ { + static const bool value = C_; + }; + template< typename T, T N > struct integral_c { + static const T value = N; + }; + } + template struct integral_constant + : public mpl::integral_c + {}; + + namespace detail { + template struct cv_traits_imp {}; + } + + template< typename T > struct is_reference : ::boost::integral_constant {}; + template< typename T > struct remove_cv { + typedef typename boost::detail::cv_traits_imp type; + }; + template< typename T > struct is_integral : ::boost::integral_constant {}; + template< typename T > struct is_float : ::boost::integral_constant {}; + namespace type_traits { + template struct ice_or; + template <> struct ice_or { + static const bool value = false; + }; + } + + namespace detail { + template< typename T > struct is_arithmetic_impl { + static const bool value = (::boost::type_traits::ice_or< ::boost::is_integral::value, ::boost::is_float::value >::value); + }; + } + + template< typename T > struct is_arithmetic : ::boost::integral_constant::value> {}; + + namespace type_traits { + template struct is_mem_fun_pointer_impl { + static const bool value = false; + }; + template struct ice_and; + template struct ice_and { + static const bool value = false; + }; + template struct ice_not { + static const bool value = true; + }; + } + template< typename T > struct is_member_function_pointer : ::boost::integral_constant::type>::value> {}; + template< typename T > struct is_member_pointer : ::boost::integral_constant::value> {}; + + namespace detail { + template< typename T > struct is_pointer_helper { + static const bool value = false; + }; + template< typename T > struct is_pointer_impl { + static const bool value = (::boost::type_traits::ice_and< ::boost::detail::is_pointer_helper::type>::value , ::boost::type_traits::ice_not< ::boost::is_member_pointer::value >::value >::value); + }; + } + template< typename T > struct is_pointer : ::boost::integral_constant::value> {}; + + struct na {}; + + namespace mpl { + template< bool C , typename T1 , typename T2 > struct if_c { typedef T2 type; }; + + template< typename T1 = na , typename T2 = na , typename T3 = na > struct if_ { + private: typedef if_c< static_cast(T1::value) , T2 , T3 > almost_type_; + public: typedef typename almost_type_::type type; + }; + } + + namespace python { + template class is_handle { + public: static const bool value = false; + }; + namespace detail { + template struct is_borrowed_ptr { + static const bool value = false; + }; + template struct is_auto_ptr : mpl::false_ {}; + template struct copy_ctor_mutates_rhs : is_auto_ptr {}; + } + + namespace converter { + template struct rvalue_from_python_storage {}; + template struct rvalue_from_python_data : rvalue_from_python_storage { ~rvalue_from_python_data(); }; + + template struct pyobject_traits; + template struct handle_object_manager_traits : pyobject_traits {}; + template struct default_object_manager_traits { + static const bool is_specialized = python::detail::is_borrowed_ptr::value; + }; + + template struct object_manager_traits : mpl::if_c< is_handle::value , handle_object_manager_traits , default_object_manager_traits >::type {}; + template struct is_object_manager : mpl::bool_::is_specialized> {}; + } + + class object; + } + + namespace detail { + template struct ct_imp { typedef const T& param_type; }; + } + + template struct call_traits { + typedef typename boost::detail::ct_imp< T, ::boost::is_pointer::value, ::boost::is_arithmetic::value >::param_type param_type; + }; + + namespace python { + namespace converter { + template struct extract_pointer {}; + template struct extract_reference {}; + template struct extract_rvalue { + typedef typename mpl::if_< python::detail::copy_ctor_mutates_rhs , T& , typename call_traits::param_type >::type result_type; + mutable rvalue_from_python_data m_data; + }; + template struct extract_object_manager {}; + template struct select_extract { + static const bool obj_mgr = is_object_manager::value; + static const bool ptr = is_pointer::value; + static const bool ref = is_reference::value; + typedef typename mpl::if_c< obj_mgr , extract_object_manager , typename mpl::if_c< ptr , extract_pointer , typename mpl::if_c< ref , extract_reference , extract_rvalue >::type >::type >::type type; + }; + } + template struct extract : converter::select_extract::type { + private: typedef typename converter::select_extract::type base; + public: typedef typename base::result_type result_type; + operator result_type() const {} + extract(object const&); + }; + } +} +struct QHashData { + static QHashData shared_null; +}; +template class QHash { + public: inline QHash() { } + T &operator[](const Key &key); +}; + class type_details { + typedef QGenericArgument(*func_python_to_cpp_type)(const boost::python::object&, const char*); + public: template static type_details* create_object_type_details(const char* type_name) {} + + template static type_details* create_value_type_details(const char* type_name) { + type_details* self = new type_details(); + self->m_func_python_to_cpp = &python_to_value_type; + } + func_python_to_cpp_type m_func_python_to_cpp; + template static QGenericArgument python_to_value_type(const boost::python::object& obj, const char *type_name) { + T* val = new T(boost::python::extract(obj)); + } + }; + + class type_manager { + public: static type_manager& instance(); + template void register_value_type(const char* type_name) { + m_type_map[type_name] = type_details::create_value_type_details(type_name); + } + QHash m_type_map; + }; +class qwebpage_extensionoption_wrapper +{ +static void define_python_class(); +}; +void qwebpage_extensionoption_wrapper::define_python_class() { +type_manager::instance().register_value_type("QWebPage::ExtensionOption"); +}