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

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

namespace bp = boost::python;

struct CompositeIndexParams_wrapper : cv::flann::CompositeIndexParams, bp::wrapper< cv::flann::CompositeIndexParams > {

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

    CompositeIndexParams_wrapper(int trees_=4, int branching_=32, int iterations_=11, ::cv::flann::flann_centers_init_t centers_init_=::cv::flann::CENTERS_RANDOM, float cb_index_=2.00000000000000011102230246251565404236316680908e-1 )
    : cv::flann::CompositeIndexParams( trees_, branching_, iterations_, centers_init_, cb_index_ )
      , bp::wrapper< cv::flann::CompositeIndexParams >(){
        // 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::CompositeIndexParams::createIndex( boost::ref(dataset) );
        }
    }
    
    ::flann::Index * default_createIndex( ::cv::Mat const & dataset ) const  {
        return cv::flann::CompositeIndexParams::createIndex( boost::ref(dataset) );
    }

};

void register_CompositeIndexParams_class(){

    { //::cv::flann::CompositeIndexParams
        typedef bp::class_< CompositeIndexParams_wrapper, bp::bases< cv::flann::IndexParams > > CompositeIndexParams_exposer_t;
        CompositeIndexParams_exposer_t CompositeIndexParams_exposer = CompositeIndexParams_exposer_t( "CompositeIndexParams", bp::init< bp::optional< int, int, int, cv::flann::flann_centers_init_t, float > >(( bp::arg("trees_")=(int)(4), bp::arg("branching_")=(int)(32), bp::arg("iterations_")=(int)(11), bp::arg("centers_init_")=::cv::flann::CENTERS_RANDOM, bp::arg("cb_index_")=2.00000000000000011102230246251565404236316680908e-1 )) );
        bp::scope CompositeIndexParams_scope( CompositeIndexParams_exposer );
        CompositeIndexParams_exposer.add_property( "this", pyplus_conv::make_addressof_inst_getter< cv::flann::CompositeIndexParams >() );
        bp::implicitly_convertible< int, cv::flann::CompositeIndexParams >();
        { //::cv::flann::CompositeIndexParams::createIndex
        
            typedef ::flann::Index * ( ::cv::flann::CompositeIndexParams::*createIndex_function_type )( ::cv::Mat const & ) const;
            typedef ::flann::Index * ( CompositeIndexParams_wrapper::*default_createIndex_function_type )( ::cv::Mat const & ) const;
            
            CompositeIndexParams_exposer.def( 
                "createIndex"
                , createIndex_function_type(&::cv::flann::CompositeIndexParams::createIndex)
                , default_createIndex_function_type(&CompositeIndexParams_wrapper::default_createIndex)
                , ( bp::arg("dataset") )
                , bp::return_value_policy< bp::reference_existing_object >() );
        
        }
        CompositeIndexParams_exposer.def_readwrite( "branching", &cv::flann::CompositeIndexParams::branching );
        CompositeIndexParams_exposer.def_readwrite( "cb_index", &cv::flann::CompositeIndexParams::cb_index );
        CompositeIndexParams_exposer.def_readwrite( "centers_init", &cv::flann::CompositeIndexParams::centers_init );
        CompositeIndexParams_exposer.def_readwrite( "iterations", &cv::flann::CompositeIndexParams::iterations );
        CompositeIndexParams_exposer.def_readwrite( "trees", &cv::flann::CompositeIndexParams::trees );
    }

}
