# ---------------------------------------------------------------
# Configuration file for "binder".
# See generate-python.sh script in this same directory
#
# Jose Luis Blanco, 2023
# ---------------------------------------------------------------
#
#
# ---------------------------------------------------------------
# In general, wrap everything in mrpt that is in the includes:
# ---------------------------------------------------------------
+namespace mrpt
#
# Do not map these ones to native types:
+standard_type mrpt::graphs::TNodeID
+standard_type TNodeID
+standard_type const size_t
+standard_type const std::size_t
#
# ---------------------------------------------------------------
# Except externals:
# ---------------------------------------------------------------
-namespace Eigen
-namespace nanoflann
#
# ---------------------------------------------------------------
# Plus STL:
# ---------------------------------------------------------------
# See https://github.com/RosettaCommons/binder/issues/100#issuecomment-867197266
# One should use only ONE out of: 
# - Custom STL binders
# - pybind11/stl.h
# After testing we picked the second:
+include <pybind11/stl.h>
#+binder std::map binder::map_binder
#+binder std::vector binder::vector_binder
#+binder std::deque binder::deque_binder
#+include <stl_binders.hpp>
#
-include <bits/refwrap.h>
-include <bits/std_thread.h>
#
# ---------------------------------------------------------------
# Minimize STL instances:
# ---------------------------------------------------------------
-class _IO_FILE
-class FILE
-class std::any
-class std::basic_ios
-class std::basic_iostream
-class std::basic_istringstream
-class std::basic_streambuf
-class std::basic_string_view
-class std::exception
-class std::fpos
-class std::ios_base
-class std::istream
-class std::iterator
-class std::reverse_iterator
-class std::ostream
-class std::stringstream
-class std::type_info
-class std::thread::_State
-function std::thread::_State::_M_run
-class std::thread
-class std::vector
-class tm
+class std::vector<std::string>
+class std::vector<uint8_t>
+class std::array
-class std::runtime_error
-class std::weak_ptr
#
# Note: optional caused many troubles in pybind11.
-class std::optional
-class std::array<mrpt::img::CImage, 6>
#
# ---------------------------------------------------------------
# Remove problematic parts:
# ---------------------------------------------------------------
-class mrpt::aligned_allocator_cpp11
-class mrpt::apps::CRawlogProcessor
-class mrpt::containers::NonCopiableData
-class mrpt::containers::PerThreadDataHolder
-class mrpt::containers::vector_with_small_size_optimization
-class mrpt::ExceptionWithCallBack
-class mrpt::ExceptionWithCallBackBase
-class mrpt::io::CPipe
-class mrpt::math::CMatrixDynamic<bool>
-class mrpt::math::CMatrixDynamic<mrpt::math::TPoint3D_data<double>>
-class mrpt::math::matrix_size_t
-class mrpt::maps::TMetricMapInitializer
-class mrpt::nav::CAbstractNavigator::TNavigationParams
-class mrpt::nav::CPTG_DiffDrive_CollisionGridBased::TCellForLambdaFunction
-class mrpt::opengl::COctreePointRenderer
-class mrpt::opengl::CRenderizable::RenderContext
-class mrpt::opengl::FrameBuffer::RAII_Impl
-class mrpt::opengl::Program
-class mrpt::opengl::Shader
-class mrpt::opengl::Shader
-class mrpt::opengl::Viewport::PerThreadData
-class mrpt::poses::CPose3DQuat::iterator
-class mrpt::poses::CPose3DQuat::const_iterator
-class mrpt::obs::CRawlog::iterator
-class mrpt::obs::CRawlog::const_iterator
-class mrpt::system::CConsoleRedirector
-class mrpt::system::COutputLogger
-class mrpt::system::CTimeLogger::TCallData
-class mrpt::vision::CFeature
-class mrpt::typemeta::TEnumTypeFiller
-class mrpt::typemeta::TTypeName
-class nanogui::Object
-class nanogui::Theme
-class nanogui::Widget
-class std::mutex
-class std::recursive_mutex
-class std::vector<mrpt::opengl::Shader>
-field mrpt::apps::RawlogGrabberApp::params_mtx
-field mrpt::apps::RawlogGrabberApp::results_mtx
-field mrpt::gui::CDisplayWindowGUI::background_scene_mtx
-field mrpt::gui::MRPT2NanoguiGLCanvas::scene_mtx
-field mrpt::hwdrivers::CGPS_NTRIP::gps
-field mrpt::hwdrivers::CGPS_NTRIP::ntrip
-field mrpt::hwdrivers::CNTRIPClient::stream_data
-field mrpt::slam::CMetricMapBuilder::options
-function mrpt::demangle
-function mrpt::format
-function mrpt::reverseBytesInPlace
-function mrpt::io::CFileStream::printf
-function mrpt::io::CStream::printf
-function mrpt::graphs::CDirectedTree::visitBreadthFirst
-function mrpt::graphs::CDirectedTree::visitDepthFirst
-function mrpt::maps::CPointsMap::getPointsBuffer
-function mrpt::math::internalAssertEigenDefined
-function mrpt::math::MatrixBase::blockCopy
-function mrpt::math::MatrixBase::col
-function mrpt::math::MatrixBase::extractMatrix
-function mrpt::math::MatrixBase::row
-function mrpt::math::MatrixVectorBase::array
-function mrpt::math::MatrixVectorBase::block
-function mrpt::math::MatrixVectorBase::dot
-function mrpt::math::MatrixVectorBase::matProductOf_Ab
-function mrpt::math::MatrixVectorBase::matProductOf_Atb
-function mrpt::math::MatrixVectorBase::operator-
-function mrpt::math::MatrixVectorBase::operator*
-function mrpt::math::MatrixVectorBase::transpose
-function mrpt::math::CMatrixD::getClassName
-function mrpt::math::CSplineInterpolator1D::getClassName() 
-function mrpt::obs::CActionCollection::getActionByClass
-function mrpt::math::MatrixVectorBase::maxCoeff
-function mrpt::math::MatrixVectorBase::minCoeff
-function mrpt::random::CRandomGenerator::drawUniformUnsignedInt
-function mrpt::system::os::sprintf
-function mrpt::vision::CFeatureList::getByID
-function mrpt::vision::openCV_cross_correlation
-function mrpt::vision::TSequenceFeatureObservations::compressIDs
-function std::optional::operator->
-function std::optional::operator*
-function std::optional::value
-namespace mrpt::containers::internal
-namespace mrpt::cpu::internal
-namespace mrpt::gui::internal
-namespace mrpt::internal
-namespace mrpt::io::internal
-namespace mrpt::literals
-namespace mrpt::math::internal
-namespace mrpt::opengl::internal
-namespace mrpt::maps::internal
-namespace mrpt::maps::detail
-namespace mrpt::slam::detail
-namespace mrpt::poses::detail
#
# Hardware-related
#
-class mrpt::comms::CInterfaceFTDI
+class mrpt::serialization::CSerializable::Ptr
#
# Missing includes
#
+include_for_namespace mrpt::obs::gnss <mrpt/obs/gnss_messages.h>
+include_for_namespace mrpt::obs::gnss::nv_oem6_position_type <mrpt/obs/gnss_messages_novatel.h>
+include_for_namespace mrpt::obs::gnss::nv_oem6_solution_status <mrpt/obs/gnss_messages_novatel.h>
+include_for_namespace mrpt::obs::gnss::nv_oem6_ins_status_type <mrpt/obs/gnss_messages_novatel.h>
+include_for_namespace mrpt::serialization <mrpt/serialization/CMessage.h>
+include_for_class mrpt::maps::COctoMapBase <mrpt/obs/CSensoryFrame.h>
+include_for_class mrpt::maps::COctoMapBase <mrpt/maps/CSimpleMap.h>
+include_for_class mrpt::maps::COctoMapBase <mrpt/maps/CSimplePointsMap.h>
+include_for_class mrpt::maps::COctoMapBase <mrpt/obs/CSensoryFrame.h>
+include_for_class mrpt::nav::CLogFileRecord <mrpt/opengl/CSetOfObjects.h>
+include_for_class mrpt::serialization::CArchive <mrpt/serialization/CMessage.h>
#
# ---------------------------------------------------------------
# Redundant instantiations
# ---------------------------------------------------------------
-class mrpt::math::MatrixBase<double,mrpt::math::CMatrixDynamic<double>>
-class mrpt::math::MatrixBase<double,mrpt::math::CMatrixFixed<double, 12, 1>>
-class mrpt::math::MatrixBase<double,mrpt::math::CMatrixFixed<double, 2, 1>>
-class mrpt::math::MatrixBase<double,mrpt::math::CMatrixFixed<double, 2, 2>>
-class mrpt::math::MatrixBase<double,mrpt::math::CMatrixFixed<double, 3, 1>>
-class mrpt::math::MatrixBase<double,mrpt::math::CMatrixFixed<double, 3, 3>>
-class mrpt::math::MatrixBase<double,mrpt::math::CMatrixFixed<double, 3, 4>>
-class mrpt::math::MatrixBase<double,mrpt::math::CMatrixFixed<double, 3, 6>>
-class mrpt::math::MatrixBase<double,mrpt::math::CMatrixFixed<double, 4, 1>>
-class mrpt::math::MatrixBase<double,mrpt::math::CMatrixFixed<double, 4, 3>>
-class mrpt::math::MatrixBase<double,mrpt::math::CMatrixFixed<double, 4, 4>>
-class mrpt::math::MatrixBase<double,mrpt::math::CMatrixFixed<double, 6, 1>>
-class mrpt::math::MatrixBase<double,mrpt::math::CMatrixFixed<double, 6, 6>>
-class mrpt::math::MatrixBase<double,mrpt::math::CMatrixFixed<double, 7, 1>>
-class mrpt::math::MatrixBase<double,mrpt::math::CMatrixFixed<double, 7, 7>>
-class mrpt::math::MatrixBase<unsigned char,mrpt::math::CMatrixDynamic<unsigned char>>
-class mrpt::math::MatrixBase<unsigned short,mrpt::math::CMatrixDynamic<unsigned short>>
-class mrpt::math::MatrixBase<mrpt::math::TPoint3D_<float>,mrpt::math::CMatrixDynamic<mrpt::math::TPoint3D_<float> >>
-class mrpt::math::MatrixBase<float,mrpt::math::CMatrixDynamic<float>>
-class mrpt::math::MatrixBase<float,mrpt::math::CMatrixFixed<float, 3, 1>>
-class mrpt::math::MatrixBase<float,mrpt::math::CMatrixFixed<float, 3, 3>>
-class mrpt::math::MatrixBase<float,mrpt::math::CMatrixFixed<float, 4, 1>>
-class mrpt::math::MatrixBase<float,mrpt::math::CMatrixFixed<float, 4, 4>>
-class mrpt::math::MatrixBase<float,mrpt::math::CMatrixFixed<float, 7, 1>>
-class mrpt::math::MatrixBase<float,mrpt::math::CMatrixFixed<float, 7, 7>>
-class mrpt::math::MatrixVectorBase<double,mrpt::math::CVectorDynamic<double>>
-class mrpt::math::MatrixVectorBase<float,mrpt::math::CVectorDynamic<float>>
-class mrpt::math::MatrixVectorBase<double,mrpt::math::CMatrixFixed<double, 3, 3>>
-class mrpt::math::MatrixVectorBase<double,mrpt::math::CMatrixFixed<double, 12, 1>>
-class mrpt::math::MatrixVectorBase<double,mrpt::math::CMatrixFixed<double, 6, 6>>
-class mrpt::math::MatrixVectorBase<float,mrpt::math::CMatrixFixed<float, 4, 4>>
-class mrpt::math::MatrixVectorBase<float,mrpt::math::CMatrixDynamic<float>>
-class mrpt::math::MatrixVectorBase<unsigned short,mrpt::math::CMatrixDynamic<unsigned short>>
-class mrpt::math::MatrixVectorBase<float,mrpt::math::CMatrixFixed<float, 3, 3>>
-class mrpt::math::MatrixVectorBase<float,mrpt::math::CMatrixFixed<float, 3, 1>>
-class mrpt::math::MatrixVectorBase<float,mrpt::math::CMatrixFixed<float, 4, 1>>
-class mrpt::math::MatrixVectorBase<unsigned char,mrpt::math::CMatrixDynamic<unsigned char>>
-class mrpt::math::MatrixVectorBase<mrpt::math::TPoint3D_<float>,mrpt::math::CMatrixDynamic<mrpt::math::TPoint3D_<float> >>
-class mrpt::math::MatrixVectorBase<double,mrpt::math::CMatrixFixed<double, 2, 2>>
-class mrpt::math::MatrixVectorBase<double,mrpt::math::CMatrixFixed<double, 7, 7>>
-class mrpt::math::MatrixVectorBase<double,mrpt::math::CMatrixDynamic<double>>
-class mrpt::math::MatrixVectorBase<double,mrpt::math::CMatrixFixed<double, 4, 4>>
-class mrpt::math::MatrixVectorBase<double, mrpt::math::CMatrixFixed<double, 2, 1>>
-class mrpt::math::MatrixVectorBase<double, mrpt::math::CMatrixFixed<double, 3, 1>>
-class mrpt::math::MatrixVectorBase<double, mrpt::math::CMatrixFixed<double, 4, 1>>
-class mrpt::math::MatrixVectorBase<double, mrpt::math::CMatrixFixed<double, 6, 1>>
-class mrpt::math::MatrixVectorBase<double, mrpt::math::CMatrixFixed<double, 7, 1>>
-class mrpt::math::MatrixVectorBase<double, mrpt::math::CMatrixFixed<double, 3, 4>>
-class mrpt::math::MatrixVectorBase<double, mrpt::math::CMatrixFixed<double, 3, 6>>
-class mrpt::math::MatrixVectorBase<double, mrpt::math::CMatrixFixed<double, 4, 3>>
#

#
-class mrpt::math::CMatrixFixed<double, 12, 1>
-class mrpt::math::CMatrixFixed<double, 2, 1>
-class mrpt::math::CMatrixFixed<double, 2, 2>
-class mrpt::math::CMatrixFixed<double, 3, 1>
-class mrpt::math::CMatrixFixed<double, 3, 3>
-class mrpt::math::CMatrixFixed<double, 3, 4>
-class mrpt::math::CMatrixFixed<double, 3, 6>
-class mrpt::math::CMatrixFixed<double, 4, 1>
-class mrpt::math::CMatrixFixed<double, 4, 3>
-class mrpt::math::CMatrixFixed<double, 4, 4>
-class mrpt::math::CMatrixFixed<double, 6, 1>
-class mrpt::math::CMatrixFixed<double, 6, 6>
-class mrpt::math::CMatrixFixed<double, 7, 1>
-class mrpt::math::CMatrixFixed<double, 7, 7>
#
-function mrpt::math::MatrixVectorBase::mvbDerived
-function mrpt::math::CMatrixFixed::begin
-function mrpt::math::CMatrixFixed::end
-function mrpt::math::CMatrixFixed::cbegin
-function mrpt::math::CMatrixFixed::cend
-function mrpt::math::CMatrixFixed::derived
-function mrpt::math::CMatrixFixed::llt_solve
-function mrpt::math::CMatrixFixed::lu_solve
#
-function mrpt::math::CMatrixDynamic<unsigned char>::cast_float
-function mrpt::math::CMatrixDynamic<unsigned char>::cast_double
-function mrpt::math::CMatrixDynamic<unsigned short>::cast_float
-function mrpt::math::CMatrixDynamic<unsigned short>::cast_double
-function mrpt::math::CMatrixFixed::cast_double
#
-function mrpt::opengl::CRenderizable::internalBoundingBoxLocal
#
-function mrpt::nav::CAbstractHolonomicReactiveMethod::Create
#
+function mrpt::serialization::ObjectToOctetVector
+function mrpt::serialization::OctetVectorToObject
#
-function mrpt::hwdrivers::CKinect::internal_latest_obs
-function mrpt::hwdrivers::CKinect::internal_tim_latest_depth
-function mrpt::hwdrivers::CKinect::internal_tim_latest_rgb
-function mrpt::hwdrivers::CKinect::internal_latest_obs_cs
# further reduce size of pymrpt:
-class mrpt::obs::TPixelLabelInfo
-class mrpt::containers::deepcopy_poly_ptr
-class mrpt::typemeta::string_literal
# 
-class std::map<long,unsigned int>
-class std::map<unsigned int,long>
-class std::monostate
#
+function mrpt::poses::operator+(const mrpt::poses::CPose3DPDFGaussian&, const mrpt::poses::CPose3DPDFGaussian&)
#
-namespace Bonxai