#pragma once

/* $Header: https://svn.mpia.de/gulli/TwiceAsNice/branch/unstable/ln/ltcs/src/lbto/LbtoIIFInterface2.h 14975 2017-12-15 13:50:00Z mathar $
*/

/*!***********************************
* @file
* @brief Input and output stream declarations for data types that are in LbtoIIFInterface.ice .
*
* These methods are not declared "cpp:comparable" in the LBTO file, so the
* operators are usually not needed. But as soon as they are used in .basda-files
* (on request of SHARK), the standard TaN parser declares all of these
* as comparable, and we 're forced to insert that additional helper code.
* Because we don't want to interfere with the LBTO files LbtoIIFInterface*.ice,
* the code is distributed as separate files LbtoIIFInterface2.* .
* @since 2017-12-15
* @author R. J. Mathar
*/

//#include <Ice/Ice.h>
//#include <IceUtil/IceUtil.h>
//#include <Nice/Map.h>
#include <LbtoIIFInterface.h>

namespace lbto
{
	std::ostream & operator<< ( std::ostream & os , const result & res) ;
	std::istream & operator>> ( std::istream & is , result & res) ;

	std::ostream & operator<< ( std::ostream & os , const DDstruct & DD) ;
	std::istream & operator>> ( std::istream & is , DDstruct & DD) ;

	std::ostream & operator<< ( std::ostream & os , const position & pos) ;
	std::istream & operator>> ( std::istream & is , position & pos) ;

	std::ostream & operator<< ( std::ostream & os , const position2 & pos2) ;
	std::istream & operator>> ( std::istream & is , position2 & pos2) ;

	std::ostream & operator<< ( std::ostream & os , const nonsidereal & target) ;
	std::istream & operator>> ( std::istream & is , nonsidereal & target) ;

	bool operator<(const result & left, const result & right) ;
	bool operator==(const result & left, const result & right) ;
	bool operator!=(const result & left, const result & right) ;

	bool operator<(const nonsidereal & left, const nonsidereal & right) ;
	bool operator==(const nonsidereal & left, const nonsidereal & right) ;
	bool operator!=(const nonsidereal & left, const nonsidereal & right) ;
}
