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

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

namespace bp = boost::python;

struct StereoSGBM_wrapper : cv::StereoSGBM, bp::wrapper< cv::StereoSGBM > {

    StereoSGBM_wrapper(cv::StereoSGBM const & arg )
    : cv::StereoSGBM( arg )
      , bp::wrapper< cv::StereoSGBM >(){
        // copy constructor
        
    }

    StereoSGBM_wrapper( )
    : cv::StereoSGBM( )
      , bp::wrapper< cv::StereoSGBM >(){
        // null constructor
    
    }

    StereoSGBM_wrapper(int minDisparity, int numDisparities, int SADWindowSize, int P1=0, int P2=0, int disp12MaxDiff=0, int preFilterCap=0, int uniquenessRatio=0, int speckleWindowSize=0, int speckleRange=0, bool fullDP=false )
    : cv::StereoSGBM( minDisparity, numDisparities, SADWindowSize, P1, P2, disp12MaxDiff, preFilterCap, uniquenessRatio, speckleWindowSize, speckleRange, fullDP )
      , bp::wrapper< cv::StereoSGBM >(){
        // constructor
    
    }

    virtual void operator()( ::cv::Mat const & left, ::cv::Mat const & right, ::cv::Mat & disp ) {
        if( bp::override func___call__ = this->get_override( "__call__" ) )
            func___call__( boost::ref(left), boost::ref(right), boost::ref(disp) );
        else{
            this->cv::StereoSGBM::operator()( boost::ref(left), boost::ref(right), boost::ref(disp) );
        }
    }
    
    void default___call__( ::cv::Mat const & left, ::cv::Mat const & right, ::cv::Mat & disp ) {
        cv::StereoSGBM::operator()( boost::ref(left), boost::ref(right), boost::ref(disp) );
    }

};

void register_StereoSGBM_class(){

    { //::cv::StereoSGBM
        typedef bp::class_< StereoSGBM_wrapper > StereoSGBM_exposer_t;
        StereoSGBM_exposer_t StereoSGBM_exposer = StereoSGBM_exposer_t( "StereoSGBM", bp::init< >() );
        bp::scope StereoSGBM_scope( StereoSGBM_exposer );
        StereoSGBM_exposer.add_property( "this", pyplus_conv::make_addressof_inst_getter< cv::StereoSGBM >() );
        bp::scope().attr("DISP_SHIFT") = (int)cv::StereoSGBM::DISP_SHIFT;
        bp::scope().attr("DISP_SCALE") = (int)cv::StereoSGBM::DISP_SCALE;
        StereoSGBM_exposer.def( bp::init< int, int, int, bp::optional< int, int, int, int, int, int, int, bool > >(( bp::arg("minDisparity"), bp::arg("numDisparities"), bp::arg("SADWindowSize"), bp::arg("P1")=(int)(0), bp::arg("P2")=(int)(0), bp::arg("disp12MaxDiff")=(int)(0), bp::arg("preFilterCap")=(int)(0), bp::arg("uniquenessRatio")=(int)(0), bp::arg("speckleWindowSize")=(int)(0), bp::arg("speckleRange")=(int)(0), bp::arg("fullDP")=(bool)(false) )) );
        { //::cv::StereoSGBM::operator()
        
            typedef void ( ::cv::StereoSGBM::*__call___function_type )( ::cv::Mat const &,::cv::Mat const &,::cv::Mat & ) ;
            typedef void ( StereoSGBM_wrapper::*default___call___function_type )( ::cv::Mat const &,::cv::Mat const &,::cv::Mat & ) ;
            
            StereoSGBM_exposer.def( 
                "__call__"
                , __call___function_type(&::cv::StereoSGBM::operator())
                , default___call___function_type(&StereoSGBM_wrapper::default___call__)
                , ( bp::arg("left"), bp::arg("right"), bp::arg("disp") ) );
        
        }
        StereoSGBM_exposer.def_readwrite( "P1", &cv::StereoSGBM::P1 );
        StereoSGBM_exposer.def_readwrite( "P2", &cv::StereoSGBM::P2 );
        StereoSGBM_exposer.def_readwrite( "SADWindowSize", &cv::StereoSGBM::SADWindowSize );
        StereoSGBM_exposer.def_readwrite( "disp12MaxDiff", &cv::StereoSGBM::disp12MaxDiff );
        StereoSGBM_exposer.def_readwrite( "fullDP", &cv::StereoSGBM::fullDP );
        StereoSGBM_exposer.def_readwrite( "minDisparity", &cv::StereoSGBM::minDisparity );
        StereoSGBM_exposer.def_readwrite( "numberOfDisparities", &cv::StereoSGBM::numberOfDisparities );
        StereoSGBM_exposer.def_readwrite( "preFilterCap", &cv::StereoSGBM::preFilterCap );
        StereoSGBM_exposer.def_readwrite( "speckleRange", &cv::StereoSGBM::speckleRange );
        StereoSGBM_exposer.def_readwrite( "speckleWindowSize", &cv::StereoSGBM::speckleWindowSize );
        StereoSGBM_exposer.def_readwrite( "uniquenessRatio", &cv::StereoSGBM::uniquenessRatio );
    }

}
