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

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

namespace bp = boost::python;

struct AutotunedIndexParams_wrapper : cv::flann::AutotunedIndexParams, bp::wrapper< cv::flann::AutotunedIndexParams > {

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

    AutotunedIndexParams_wrapper(float target_precision_=9.00000000000000022204460492503130808472633361816e-1, float build_weight_=1.0000000000000000208166817117216851329430937767e-2, float memory_weight_=0, float sample_fraction_=1.00000000000000005551115123125782702118158340454e-1 )
    : cv::flann::AutotunedIndexParams( target_precision_, build_weight_, memory_weight_, sample_fraction_ )
      , bp::wrapper< cv::flann::AutotunedIndexParams >(){
        // 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::AutotunedIndexParams::createIndex( boost::ref(dataset) );
        }
    }
    
    ::flann::Index * default_createIndex( ::cv::Mat const & dataset ) const  {
        return cv::flann::AutotunedIndexParams::createIndex( boost::ref(dataset) );
    }

};

void register_AutotunedIndexParams_class(){

    { //::cv::flann::AutotunedIndexParams
        typedef bp::class_< AutotunedIndexParams_wrapper, bp::bases< cv::flann::IndexParams > > AutotunedIndexParams_exposer_t;
        AutotunedIndexParams_exposer_t AutotunedIndexParams_exposer = AutotunedIndexParams_exposer_t( "AutotunedIndexParams", bp::init< bp::optional< float, float, float, float > >(( bp::arg("target_precision_")=9.00000000000000022204460492503130808472633361816e-1, bp::arg("build_weight_")=1.0000000000000000208166817117216851329430937767e-2, bp::arg("memory_weight_")=0, bp::arg("sample_fraction_")=1.00000000000000005551115123125782702118158340454e-1 )) );
        bp::scope AutotunedIndexParams_scope( AutotunedIndexParams_exposer );
        AutotunedIndexParams_exposer.add_property( "this", pyplus_conv::make_addressof_inst_getter< cv::flann::AutotunedIndexParams >() );
        bp::implicitly_convertible< float, cv::flann::AutotunedIndexParams >();
        { //::cv::flann::AutotunedIndexParams::createIndex
        
            typedef ::flann::Index * ( ::cv::flann::AutotunedIndexParams::*createIndex_function_type )( ::cv::Mat const & ) const;
            typedef ::flann::Index * ( AutotunedIndexParams_wrapper::*default_createIndex_function_type )( ::cv::Mat const & ) const;
            
            AutotunedIndexParams_exposer.def( 
                "createIndex"
                , createIndex_function_type(&::cv::flann::AutotunedIndexParams::createIndex)
                , default_createIndex_function_type(&AutotunedIndexParams_wrapper::default_createIndex)
                , ( bp::arg("dataset") )
                , bp::return_value_policy< bp::reference_existing_object >() );
        
        }
        AutotunedIndexParams_exposer.def_readwrite( "build_weight", &cv::flann::AutotunedIndexParams::build_weight );
        AutotunedIndexParams_exposer.def_readwrite( "memory_weight", &cv::flann::AutotunedIndexParams::memory_weight );
        AutotunedIndexParams_exposer.def_readwrite( "sample_fraction", &cv::flann::AutotunedIndexParams::sample_fraction );
        AutotunedIndexParams_exposer.def_readwrite( "target_precision", &cv::flann::AutotunedIndexParams::target_precision );
    }

}
