Added ReaderSrc as a primary reader source !non-template! class to incapsulate functions implementation.

This commit is contained in:
vng 2014-10-03 21:35:58 +03:00 committed by Alex Zolotarev
parent 7f89726270
commit 8f0e32fe44
3 changed files with 12 additions and 19 deletions

View file

@ -4,19 +4,6 @@
#include "../coding/file_reader.hpp"
class ReaderPtrStream : public stream::ReaderStream<ReaderSource<ReaderPtr<Reader> > >
{
typedef ReaderPtr<Reader> ptr_t;
typedef ReaderSource<ptr_t> source_t;
typedef stream::ReaderStream<source_t> base_type;
source_t m_src;
public:
ReaderPtrStream(Reader * p) : base_type(m_src), m_src(p) {}
ReaderPtrStream(ptr_t const & p) : base_type(m_src), m_src(p) {}
};
class FileReaderStream : public stream::ReaderStream<ReaderSource<FileReader> >
{
typedef stream::ReaderStream<ReaderSource<FileReader> > base_type;

View file

@ -201,11 +201,6 @@ public:
return (m_reader.Size() - m_pos);
}
ReaderT const & Reader() const
{
return m_reader;
}
ReaderT SubReader(uint64_t size)
{
uint64_t const pos = m_pos;

View file

@ -1,6 +1,6 @@
#pragma once
#include "../base/assert.hpp"
#include "reader.hpp"
/// Reader wrapper to avoid penalty on copy and polymorphic SubReader creation.
@ -33,3 +33,14 @@ public:
return SubReaderWrapper(m_p, pos + m_pos, size);
}
};
/// Non template reader source for regular functions with incapsulated implementation.
class ReaderSrc : public ReaderSource<SubReaderWrapper<Reader>>
{
typedef SubReaderWrapper<Reader> ReaderT;
typedef ReaderSource<ReaderT> BaseT;
public:
explicit ReaderSrc(Reader & reader) : BaseT(ReaderT(&reader)) {}
explicit ReaderSrc(Reader * reader) : BaseT(ReaderT(reader)) {}
};