Program Listing for File base_text_stream.hpp

Return to documentation for file (/tmp/ws/src/ecl_core/ecl_streams/include/ecl/streams/text_streams/base_text_stream.hpp)

/*****************************************************************************
** Ifdefs
*****************************************************************************/

#ifndef ECL_STREAMS_BASE_TEXT_STREAM_HPP_
#define ECL_STREAMS_BASE_TEXT_STREAM_HPP_

/*****************************************************************************
** Includes
*****************************************************************************/

#include <ecl/config/macros.hpp>
#include <ecl/errors/handlers.hpp>
#include "../macros.hpp"

/*****************************************************************************
** Namespaces
*****************************************************************************/

namespace ecl {
namespace interfaces {

/*****************************************************************************
** Interface [BaseTextStream]
*****************************************************************************/
template <typename Device>
class ECL_PUBLIC BaseTextStream {
public:
    BaseTextStream() : error(ecl::NoError) {};
    virtual ~BaseTextStream() {}
    Device& device();
    bool fail() const;
    const ecl::Error& errorStatus() const;

protected:
    ecl::Error error;
    Device io_device;
};

/*****************************************************************************
** Implementation [BaseTextStream]
*****************************************************************************/
template <typename Device>
Device& BaseTextStream<Device>::device() { return io_device; }

template <typename Device>
bool BaseTextStream<Device>::fail() const {
    if ( error.flag() != ecl::NoError ) {
        return true;
    } else {
        return false;
    }
}
template <typename Device>
const ecl::Error& BaseTextStream<Device>::errorStatus() const {
    return error;
}

} // namespace interfaces
} // namespace ecl

#endif /* ECL_STREAMS_BASE_TEXT_STREAM_HPP_ */