From 8f0e32fe44a6d17024901e49af85e772c9be9daa Mon Sep 17 00:00:00 2001 From: vng Date: Fri, 3 Oct 2014 21:35:58 +0300 Subject: [PATCH] Added ReaderSrc as a primary reader source !non-template! class to incapsulate functions implementation. --- coding/file_reader_stream.hpp | 13 ------------- coding/reader.hpp | 5 ----- coding/reader_wrapper.hpp | 13 ++++++++++++- 3 files changed, 12 insertions(+), 19 deletions(-) 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)) {} +};