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

#include "boost/python.hpp"
#include "__ctypes_integration.pypp.hpp"
#include "opencv_headers.hpp"
#include "KDTreeIndexParams.pypp.hpp"

namespace bp = boost::python;

struct KDTreeIndexParams_wrapper : cv::flann::KDTreeIndexParams, bp::wrapper< cv::flann::KDTreeIndexParams > {

    KDTreeIndexParams_wrapper(cv::flann::KDTreeIndexParams const & arg )
    : cv::flann::KDTreeIndexParams( arg )
      , bp::wrapper< cv::flann::KDTreeIndexParams >(){
        // copy constructor
        
    }

    KDTreeIndexParams_wrapper(int trees_=4 )
    : cv::flann::KDTreeIndexParams( trees_ )
      , bp::wrapper< cv::flann::KDTreeIndexParams >(){
        // constructor
    
    }

    virtual ::flann::Index * createIndex( ::cv::Mat const & dataset ) const  {
        if( bp::override func_createIndex = this->get_override( "createIndex" ) )
            return func_createIndex( boost::ref(dataset) );
        else{
            return this->cv::flann::KDTreeIndexParams::createIndex( boost::ref(dataset) );
        }
    }
    
    ::flann::Index * default_createIndex( ::cv::Mat const & dataset ) const  {
        return cv::flann::KDTreeIndexParams::createIndex( boost::ref(dataset) );
    }

};

void register_KDTreeIndexParams_class(){

    { //::cv::flann::KDTreeIndexParams
        typedef bp::class_< KDTreeIndexParams_wrapper, bp::bases< cv::flann::IndexParams > > KDTreeIndexParams_exposer_t;
        KDTreeIndexParams_exposer_t KDTreeIndexParams_exposer = KDTreeIndexParams_exposer_t( "KDTreeIndexParams", bp::init< bp::optional< int > >(( bp::arg("trees_")=(int)(4) )) );
        bp::scope KDTreeIndexParams_scope( KDTreeIndexParams_exposer );
        KDTreeIndexParams_exposer.add_property( "this", pyplus_conv::make_addressof_inst_getter< cv::flann::KDTreeIndexParams >() );
        bp::implicitly_convertible< int, cv::flann::KDTreeIndexParams >();
        { //::cv::flann::KDTreeIndexParams::createIndex
        
            typedef ::flann::Index * ( ::cv::flann::KDTreeIndexParams::*createIndex_function_type )( ::cv::Mat const & ) const;
            typedef ::flann::Index * ( KDTreeIndexParams_wrapper::*default_createIndex_function_type )( ::cv::Mat const & ) const;
            
            KDTreeIndexParams_exposer.def( 
                "createIndex"
                , createIndex_function_type(&::cv::flann::KDTreeIndexParams::createIndex)
                , default_createIndex_function_type(&KDTreeIndexParams_wrapper::default_createIndex)
                , ( bp::arg("dataset") )
                , bp::return_value_policy< bp::reference_existing_object >() );
        
        }
        KDTreeIndexParams_exposer.def_readwrite( "trees", &cv::flann::KDTreeIndexParams::trees );
    }

}
