// This file has been generated by Py++.

#include "boost/python.hpp"
#include "generators/include/python_CEGUI.h"
#include "BaseDim.pypp.hpp"

namespace bp = boost::python;

struct BaseDim_wrapper : CEGUI::BaseDim, bp::wrapper< CEGUI::BaseDim > {

    BaseDim_wrapper( )
    : CEGUI::BaseDim( )
      , bp::wrapper< CEGUI::BaseDim >(){
        // null constructor
    
    }

    virtual ::CEGUI::BaseDim * clone(  ) const {
        bp::override func_clone = this->get_override( "clone" );
        return func_clone(  );
    }

    virtual float getValue( ::CEGUI::Window const & wnd ) const {
        bp::override func_getValue = this->get_override( "getValue" );
        return func_getValue( boost::ref(wnd) );
    }

    virtual float getValue( ::CEGUI::Window const & wnd, ::CEGUI::Rectf const & container ) const {
        bp::override func_getValue = this->get_override( "getValue" );
        return func_getValue( boost::ref(wnd), boost::ref(container) );
    }

    virtual bool handleFontRenderSizeChange( ::CEGUI::Window & window, ::CEGUI::Font const * font ) const  {
        if( bp::override func_handleFontRenderSizeChange = this->get_override( "handleFontRenderSizeChange" ) )
            return func_handleFontRenderSizeChange( boost::ref(window), boost::python::ptr(font) );
        else{
            return this->CEGUI::BaseDim::handleFontRenderSizeChange( boost::ref(window), boost::python::ptr(font) );
        }
    }
    
    bool default_handleFontRenderSizeChange( ::CEGUI::Window & window, ::CEGUI::Font const * font ) const  {
        return CEGUI::BaseDim::handleFontRenderSizeChange( boost::ref(window), boost::python::ptr(font) );
    }

    virtual void writeXMLElementAttributes_impl( ::CEGUI::XMLSerializer & xml_stream ) const {
        bp::override func_writeXMLElementAttributes_impl = this->get_override( "writeXMLElementAttributes_impl" );
        func_writeXMLElementAttributes_impl( boost::ref(xml_stream) );
    }

    virtual void writeXMLElementName_impl( ::CEGUI::XMLSerializer & xml_stream ) const {
        bp::override func_writeXMLElementName_impl = this->get_override( "writeXMLElementName_impl" );
        func_writeXMLElementName_impl( boost::ref(xml_stream) );
    }

    virtual void writeXMLToStream( ::CEGUI::XMLSerializer & xml_stream ) const  {
        if( bp::override func_writeXMLToStream = this->get_override( "writeXMLToStream" ) )
            func_writeXMLToStream( boost::ref(xml_stream) );
        else{
            this->CEGUI::BaseDim::writeXMLToStream( boost::ref(xml_stream) );
        }
    }
    
    void default_writeXMLToStream( ::CEGUI::XMLSerializer & xml_stream ) const  {
        CEGUI::BaseDim::writeXMLToStream( boost::ref(xml_stream) );
    }

};

void register_BaseDim_class(){

    { //::CEGUI::BaseDim
        typedef bp::class_< BaseDim_wrapper, boost::noncopyable > BaseDim_exposer_t;
        BaseDim_exposer_t BaseDim_exposer = BaseDim_exposer_t( "BaseDim", bp::init< >() );
        bp::scope BaseDim_scope( BaseDim_exposer );
        { //::CEGUI::BaseDim::clone
        
            typedef ::CEGUI::BaseDim * ( ::CEGUI::BaseDim::*clone_function_type )(  ) const;
            
            BaseDim_exposer.def( 
                "clone"
                , bp::pure_virtual( clone_function_type(&::CEGUI::BaseDim::clone) )
                , bp::return_value_policy< bp::reference_existing_object >()
                , "*!\n\
                \n\
                    Create an exact copy of the specialised object and return it as a\n\
                    pointer to a BaseDim object.\n\
            \n\
                    Since the system needs to be able to copy objects derived from BaseDim,\n\
                    but only has knowledge of the BaseDim interface, this clone method is\n\
                    provided to prevent slicing issues.\n\
                *\n" );
        
        }
        { //::CEGUI::BaseDim::getValue
        
            typedef float ( ::CEGUI::BaseDim::*getValue_function_type )( ::CEGUI::Window const & ) const;
            
            BaseDim_exposer.def( 
                "getValue"
                , bp::pure_virtual( getValue_function_type(&::CEGUI::BaseDim::getValue) )
                , ( bp::arg("wnd") )
                , "*!\n\
                \n\
                    Return a value that represents this dimension as absolute pixels.\n\
            \n\
                @param wnd\n\
                    Window object that may be used by the specialised class to aid in\n\
                    calculating the final value.\n\
            \n\
                @return\n\
                    float value which represents, in pixels, the same value as this BaseDim.\n\
                *\n" );
        
        }
        { //::CEGUI::BaseDim::getValue
        
            typedef float ( ::CEGUI::BaseDim::*getValue_function_type )( ::CEGUI::Window const &,::CEGUI::Rectf const & ) const;
            
            BaseDim_exposer.def( 
                "getValue"
                , bp::pure_virtual( getValue_function_type(&::CEGUI::BaseDim::getValue) )
                , ( bp::arg("wnd"), bp::arg("container") )
                , "*!\n\
                \n\
                    Return a value that represents this dimension as absolute pixels.\n\
            \n\
                @param wnd\n\
                    Window object that may be used by the specialised class to aid in\n\
                    calculating the final value (typically would be used to obtain\n\
                    windowwidget dimensions).\n\
            \n\
                @param container\n\
                    Rect object which describes an area to be considered as the base area\n\
                    when calculating the final value.  Basically this means that relative\n\
                    values are calculated from the dimensions of this Rect.\n\
            \n\
                @return\n\
                    float value which represents, in pixels, the same value as this BaseDim.\n\
                *\n" );
        
        }
        { //::CEGUI::BaseDim::handleFontRenderSizeChange
        
            typedef bool ( ::CEGUI::BaseDim::*handleFontRenderSizeChange_function_type )( ::CEGUI::Window &,::CEGUI::Font const * ) const;
            typedef bool ( BaseDim_wrapper::*default_handleFontRenderSizeChange_function_type )( ::CEGUI::Window &,::CEGUI::Font const * ) const;
            
            BaseDim_exposer.def( 
                "handleFontRenderSizeChange"
                , handleFontRenderSizeChange_function_type(&::CEGUI::BaseDim::handleFontRenderSizeChange)
                , default_handleFontRenderSizeChange_function_type(&BaseDim_wrapper::default_handleFontRenderSizeChange)
                , ( bp::arg("window"), bp::arg("font") ) );
        
        }
        { //::CEGUI::BaseDim::writeXMLElementAttributes_impl
        
            typedef void ( BaseDim_wrapper::*writeXMLElementAttributes_impl_function_type )( ::CEGUI::XMLSerializer & ) const;
            
            BaseDim_exposer.def( 
                "writeXMLElementAttributes_impl"
                , writeXMLElementAttributes_impl_function_type( &BaseDim_wrapper::writeXMLElementAttributes_impl )
                , ( bp::arg("xml_stream") )
                , "! Implementataion method to create the element attributes\n" );
        
        }
        { //::CEGUI::BaseDim::writeXMLElementName_impl
        
            typedef void ( BaseDim_wrapper::*writeXMLElementName_impl_function_type )( ::CEGUI::XMLSerializer & ) const;
            
            BaseDim_exposer.def( 
                "writeXMLElementName_impl"
                , writeXMLElementName_impl_function_type( &BaseDim_wrapper::writeXMLElementName_impl )
                , ( bp::arg("xml_stream") )
                , "! Implementataion method to output real xml element name.\n" );
        
        }
        { //::CEGUI::BaseDim::writeXMLToStream
        
            typedef void ( ::CEGUI::BaseDim::*writeXMLToStream_function_type )( ::CEGUI::XMLSerializer & ) const;
            typedef void ( BaseDim_wrapper::*default_writeXMLToStream_function_type )( ::CEGUI::XMLSerializer & ) const;
            
            BaseDim_exposer.def( 
                "writeXMLToStream"
                , writeXMLToStream_function_type(&::CEGUI::BaseDim::writeXMLToStream)
                , default_writeXMLToStream_function_type(&BaseDim_wrapper::default_writeXMLToStream)
                , ( bp::arg("xml_stream") ) );
        
        }
    }

}
