#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<class T> struct JObjectReader : public virtual JObjectIterator<T>, public JAbstractObjectReader<T>, public JSharedPointer< JObjectIterator<T> > { typedef JSharedPointer< JObjectIterator<T> > helper_type; typedef typename JObjectIterator<T>::pointer_type pointer_type; /** * Default constructor. */ JObjectReader() {} /** * Get helper. * * \return helper */ virtual JObjectIterator<T>* getHelper() const override { return this->get(); } }; /** * Auxiliary class for object reading with rewinding. * * This class implements the JAbstractRewindableObjectReader interface. */ template<class T> struct JRewindableObjectReader : public virtual JRewindableObjectIterator<T>, public JAbstractRewindableObjectReader<T>, public JSharedPointer< JRewindableObjectIterator<T> > { typedef JSharedPointer< JRewindableObjectIterator<T> > helper_type; typedef typename JObjectIterator<T>::pointer_type pointer_type; /** * Default constructor. */ JRewindableObjectReader() {} /** * Get helper. * * \return helper */ virtual JRewindableObjectIterator<T>* getHelper() const override { return this->get(); } }; /** * Auxiliary class for object reading with named access. * * This class implements the JAbstractAccessibleObjectReader interface. */ template<class T> struct JAccessibleObjectReader : public virtual JAccessibleObjectIterator<T>, public JAbstractAccessibleObjectReader<T>, public JSharedPointer< JAccessibleObjectIterator<T> > { typedef JSharedPointer< JAccessibleObjectIterator<T> > helper_type; typedef typename JObjectIterator<T>::pointer_type pointer_type; /** * Default constructor. */ JAccessibleObjectReader() {} /** * Get helper. * * \return helper */ virtual JAccessibleObjectIterator<T>* getHelper() const override { return this->get(); } }; } #endif