#ifndef __JLANG__JOBJECTREADER__ #define __JLANG__JOBJECTREADER__ #include "JLang/JAbstractObjectReader.hh" #include "JLang/JSharedPointer.hh" /** * \author mdejong */ namespace JLANG {} namespace JPP { using namespace JLANG; } namespace JLANG { /** * Auxiliary class for object reading. * * This class implements the JAbstractObjectReader interface. */ template struct JObjectReader : public virtual JObjectIterator, public JAbstractObjectReader, public JSharedPointer< JObjectIterator > { typedef JSharedPointer< JObjectIterator > helper_type; typedef typename JObjectIterator::pointer_type pointer_type; /** * Default constructor. */ JObjectReader() {} /** * Get helper. * * \return helper */ virtual JObjectIterator* getHelper() const override { return this->get(); } }; /** * Auxiliary class for object reading with rewinding. * * This class implements the JAbstractRewindableObjectReader interface. */ template struct JRewindableObjectReader : public virtual JRewindableObjectIterator, public JAbstractRewindableObjectReader, public JSharedPointer< JRewindableObjectIterator > { typedef JSharedPointer< JRewindableObjectIterator > helper_type; typedef typename JObjectIterator::pointer_type pointer_type; /** * Default constructor. */ JRewindableObjectReader() {} /** * Get helper. * * \return helper */ virtual JRewindableObjectIterator* getHelper() const override { return this->get(); } }; /** * Auxiliary class for object reading with named access. * * This class implements the JAbstractAccessibleObjectReader interface. */ template struct JAccessibleObjectReader : public virtual JAccessibleObjectIterator, public JAbstractAccessibleObjectReader, public JSharedPointer< JAccessibleObjectIterator > { typedef JSharedPointer< JAccessibleObjectIterator > helper_type; typedef typename JObjectIterator::pointer_type pointer_type; /** * Default constructor. */ JAccessibleObjectReader() {} /** * Get helper. * * \return helper */ virtual JAccessibleObjectIterator* getHelper() const override { return this->get(); } }; } #endif