• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • Directories
  • File List
  • File Members

lzw_decoder.hpp

Go to the documentation of this file.
00001 /*
00002   CLAW - a C++ Library Absolutely Wonderful
00003 
00004   CLAW is a free library without any particular aim but being useful to 
00005   anyone.
00006 
00007   Copyright (C) 2005-2008 Julien Jorge
00008 
00009   This library is free software; you can redistribute it and/or
00010   modify it under the terms of the GNU Lesser General Public
00011   License as published by the Free Software Foundation; either
00012   version 2.1 of the License, or (at your option) any later version.
00013 
00014   This library is distributed in the hope that it will be useful,
00015   but WITHOUT ANY WARRANTY; without even the implied warranty of
00016   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017   Lesser General Public License for more details.
00018 
00019   You should have received a copy of the GNU Lesser General Public
00020   License along with this library; if not, write to the Free Software
00021   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00022 
00023   contact: julien_jorge@yahoo.fr
00024 */
00031 #ifndef __CLAW_LZW_DECODER_HPP__
00032 #define __CLAW_LZW_DECODER_HPP__
00033 
00034 #include <vector>
00035 #include <utility>
00036 
00037 namespace claw
00038 {
00060   template<typename InputBuffer, typename OutputBuffer>
00061   class lzw_decoder
00062   {
00063   public:
00065     typedef InputBuffer input_buffer_type;
00066 
00068     typedef OutputBuffer output_buffer_type;
00069 
00070   private:
00071     typedef std::pair<unsigned int, unsigned int> word_type;
00072     typedef std::vector<word_type> table_type;
00073 
00074   public:
00075     void decode( input_buffer_type& input, output_buffer_type& output );
00076   
00077   private:
00078     unsigned int get_first_symbol
00079     ( const table_type& table, const unsigned int code,
00080       const unsigned int symbols_count ) const;
00081 
00082     void decompose
00083     ( const table_type& table, unsigned int code,
00084       const unsigned int symbols_count, output_buffer_type& output ) const;
00085 
00086   }; // class lzw_decoder
00087 } // namespace claw
00088 
00089 #include <claw/impl/lzw_decoder.tpp>
00090 
00091 #endif // __CLAW_LZW_DECODER_HPP__

Generated on Sat Sep 18 2010 for CLAW Library (a C++ Library Absolutely Wonderful) by  doxygen 1.7.1