X-Git-Url: https://git.wh0rd.org/?p=ICEs.git;a=blobdiff_plain;f=321197%2Fpyside.ii.5;fp=321197%2Fpyside.ii.5;h=4597816179ca05dbe6283a14a762d306a2eb58d2;hp=0000000000000000000000000000000000000000;hb=bd3239d2bbe0de3a200b266503e3330b1e391489;hpb=dbff64cb4b7530861c2309c794efdd4e0cf47a23 diff --git a/321197/pyside.ii.5 b/321197/pyside.ii.5 new file mode 100644 index 0000000..4597816 --- /dev/null +++ b/321197/pyside.ii.5 @@ -0,0 +1,192 @@ +class QString { + public: inline QString(const char *ch); +}; +class QGenericArgument {}; + class QObject { }; +class QWebPage : public QObject { + 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 { typedef T unqualified_type; }; + } + 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 { + namespace detail { + template struct is_borrowed_ptr { + static const bool value = false; + }; + } + template class is_handle { + public: static const bool value = false; + }; + } + namespace noncopyable_ { + class noncopyable { + }; + } + typedef noncopyable_::noncopyable noncopyable; + namespace python { + namespace detail { + 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> { + }; + } + namespace api { + class object; + } + using api::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 : private noncopyable { + 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(api::object const&); + }; + } + } + struct QHashData { + static QHashData shared_null; + }; + template class QHash { + QHashData *d; + public: inline QHash() : d(&QHashData::shared_null) { + } + T &operator[](const Key &key); + }; + namespace PySide { + class wrapper { + }; + 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; + }; + } + using namespace PySide; + class qwebpage_extensionoption_wrapper : +public PySide::wrapper +{ + static void define_python_class(); + }; + void qwebpage_extensionoption_wrapper::define_python_class() { + type_manager::instance().register_value_type("QWebPage::ExtensionOption"); + }