diff --git a/coding/file_reader_stream.hpp b/coding/file_reader_stream.hpp index 6f2fb78dec..37e8a0a153 100644 --- a/coding/file_reader_stream.hpp +++ b/coding/file_reader_stream.hpp @@ -4,19 +4,6 @@ #include "../coding/file_reader.hpp" -class ReaderPtrStream : public stream::ReaderStream > > -{ - typedef ReaderPtr ptr_t; - typedef ReaderSource source_t; - typedef stream::ReaderStream 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 > { typedef stream::ReaderStream > base_type; diff --git a/coding/reader.hpp b/coding/reader.hpp index 58d982d0cc..ce4f0b7987 100644 --- a/coding/reader.hpp +++ b/coding/reader.hpp @@ -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; diff --git a/coding/reader_wrapper.hpp b/coding/reader_wrapper.hpp index e45b940e9e..ce2ebad6da 100644 --- a/coding/reader_wrapper.hpp +++ b/coding/reader_wrapper.hpp @@ -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> +{ + typedef SubReaderWrapper ReaderT; + typedef ReaderSource BaseT; + +public: + explicit ReaderSrc(Reader & reader) : BaseT(ReaderT(&reader)) {} + explicit ReaderSrc(Reader * reader) : BaseT(ReaderT(reader)) {} +};