/* $Header: https://oberon.oapd.inaf.it/shins/trunk/shins/src/iif/Interface/Ltcs/Iif/IifStarcatPythonWrapper.cc 373 2018-01-11 11:41:12Z depa $
*/

#include <boost/python.hpp>
#include <boost/python/implicit.hpp>
#include <Basda/Python/SmartPointerWrapper.hh>
#include <Ltcs/Iif/IifSide.h>
#include <Ltcs/Iif/IifStar.h>
#include <Ltcs/Iif/IifStarcat.h>


namespace Ltcs
{
namespace Python
{
	// extern void export_Ltcs::IifStarcat();
	
	BOOST_PYTHON_MODULE(LtcsIifStarcat)
	{
	
	    enum_<IifSid>("IifSid")
	    .value("SIDE_NONE",SIDE_NONE)
	    .value("SIDE_LEFT",SIDE_LEFT)
	    .value("SIDE_RIGHT",SIDE_RIGHT)
	    .value("SIDE_BOTH",SIDE_BOTH)
	    ;
	
	    class_<Ltcs::IifSide>("Ltcs::IifSide")
	    .def(init<std::string>())
	    .def_readwrite("s", & Ltcs::IifSide::s)
	    .def("toString", & Ltcs::IifSide::toString)
	    .def("toStringCfg", & Ltcs::IifSide::toStringCfg)
	    .def("toIntIdx", & Ltcs::IifSide::toIntIdx)
	    ;
	
	    class_<Ltcs::IifStar>("Ltcs::IifStar")
	    .def(init<std::string,std::string>())
	    .def("toLbtoLoc", &Ltcs::IifStar::toLbtoLoc)
	    .def("toPosition2Py", &Ltcs::IifStar::toPosition2Py)
	    .def("distance", &Ltcs::IifStar::distance)
	    .def_readwrite("type", & Ltcs::IifStar::type)
	    .def_readwrite("coord1", & Ltcs::IifStar::coord1)
	    .def_readwrite("coord2", & Ltcs::IifStar::coord2)
	    .def_readwrite("system", & Ltcs::IifStar::system)
	    .def_readwrite("epoch", & Ltcs::IifStar::epoch)
	    .def_readwrite("equinox", & Ltcs::IifStar::equinox)
	    .def_readwrite("pmcoord1", & Ltcs::IifStar::pmcoord1)
	    .def_readwrite("pmcoord2", & Ltcs::IifStar::pmcoord2)
	    .def_readwrite("apparentMagnitude", & Ltcs::IifStar::apparentMagnitude)
	    .def_readwrite("filter", & Ltcs::IifStar::filter)
	    .def_readwrite("color", & Ltcs::IifStar::color)
	    .def_readwrite("wavelength", & Ltcs::IifStar::wavelength)
	    .def_readwrite("file", & Ltcs::IifStar::file)
	    .def_readwrite("time", & Ltcs::IifStar::time)
	    .def_readwrite("RARate", & Ltcs::IifStar::RARate)
	    .def_readwrite("DECRate", & Ltcs::IifStar::DECRate)
	    ;
	
	    void (Ltcs::IifStarcat::*add_s)(const Ltcs::IifStar &) = &Ltcs::IifStarcat::add ;
	    void (Ltcs::IifStarcat::*add_p)(const lbto::position2 &) = &Ltcs::IifStarcat::add ;
	
	    std::string (Ltcs::IifStarcat::*toLbtoFmt_i)() = &Ltcs::IifStarcat::toLbtoFmt ;
	
	    class_<Ltcs::IifStarcat>("Ltcs::IifStarcat")
	    .def(init<std::string,std::string>())
	    .def("add", add_s)
	    .def("add", add_p)
	    .def("toLbtoFmt", toLbtoFmt_i)
	    .def("rmFaint", &Ltcs::IifStarcat::rmFaint)
	    .def("rm", &Ltcs::IifStarcat::rm)
	    ;
	
	    implicitly_convertible<Ltcs::IifStarcat,lbto::SeqPos2>() ;
	
	}

}
}
