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

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

namespace bp = boost::python;

struct KMeansIndexParams_wrapper : cv::flann::KMeansIndexParams, bp::wrapper< cv::flann::KMeansIndexParams > {

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

    KMeansIndexParams_wrapper(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::KMeansIndexParams( branching_, iterations_, centers_init_, cb_index_ )
      , bp::wrapper< cv::flann::KMeansIndexParams >(){
        // 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::KMeansIndexParams::createIndex( boost::ref(dataset) );
        }
    }
    
    ::flann::Index * default_createIndex( ::cv::Mat const & dataset ) const  {
        return cv::flann::KMeansIndexParams::createIndex( boost::ref(dataset) );
    }

};

void register_KMeansIndexParams_class(){

    bp::class_< KMeansIndexParams_wrapper >( "KMeansIndexParams", bp::init< bp::optional< int, int, cv::flann::flann_centers_init_t, float > >(( 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 )) )    
        .add_property( "this", pyplus_conv::make_addressof_inst_getter< cv::flann::KMeansIndexParams >() )    
        .def( 
            "createIndex"
            , (::flann::Index * ( ::cv::flann::KMeansIndexParams::* )( ::cv::Mat const & ) const)(&::cv::flann::KMeansIndexParams::createIndex)
            , (::flann::Index * ( KMeansIndexParams_wrapper::* )( ::cv::Mat const & ) const)(&KMeansIndexParams_wrapper::default_createIndex)
            , ( bp::arg("dataset") )
            , bp::return_value_policy< bp::reference_existing_object >() )    
        .def_readwrite( "branching", &cv::flann::KMeansIndexParams::branching )    
        .def_readwrite( "cb_index", &cv::flann::KMeansIndexParams::cb_index )    
        .def_readwrite( "centers_init", &cv::flann::KMeansIndexParams::centers_init )    
        .def_readwrite( "iterations", &cv::flann::KMeansIndexParams::iterations );

}
