#ifndef __JIO__JREADEROBJECTITERATOR__ #define __JIO__JREADEROBJECTITERATOR__ #include "JLang/JAbstractObjectIterator.hh" #include "JLang/JConversion.hh" #include "JLang/JBool.hh" #include "JIO/JSerialisable.hh" /** * \author mdejong */ namespace JIO {} namespace JPP { using namespace JIO; } namespace JIO { using JLANG::JAbstractObjectIterator; /** * JReader object iterator. * * This class implements the JLANG::JObjectIterator interface. */ template class JReaderObjectIterator : public JAbstractObjectIterator { public: /** * Constructor. * * \param reader reader input */ JReaderObjectIterator(JReader& reader) : in(reader) {} /** * Set object. * * \param object reference to object to be set * \return true if set; else false */ virtual bool setObject(T& object) override { return setObject(object, JLANG::JBool::is_derived>()); } private: bool setObject(T& object, JLANG::JBool) { return (bool) object.read(in); } bool setObject(T& object, JLANG::JBool) { return (bool) (in >> object); } JReader& in; }; } #endif