summaryrefslogtreecommitdiffstats
path: root/ml/dlib/dlib/lzp_buffer
diff options
context:
space:
mode:
Diffstat (limited to 'ml/dlib/dlib/lzp_buffer')
-rw-r--r--ml/dlib/dlib/lzp_buffer/lzp_buffer_kernel_1.h236
-rw-r--r--ml/dlib/dlib/lzp_buffer/lzp_buffer_kernel_2.h319
-rw-r--r--ml/dlib/dlib/lzp_buffer/lzp_buffer_kernel_abstract.h130
-rw-r--r--ml/dlib/dlib/lzp_buffer/lzp_buffer_kernel_c.h101
4 files changed, 0 insertions, 786 deletions
diff --git a/ml/dlib/dlib/lzp_buffer/lzp_buffer_kernel_1.h b/ml/dlib/dlib/lzp_buffer/lzp_buffer_kernel_1.h
deleted file mode 100644
index f24d74eee..000000000
--- a/ml/dlib/dlib/lzp_buffer/lzp_buffer_kernel_1.h
+++ /dev/null
@@ -1,236 +0,0 @@
-// Copyright (C) 2005 Davis E. King (davis@dlib.net)
-// License: Boost Software License See LICENSE.txt for the full license.
-#ifndef DLIB_LZP_BUFFER_KERNEl_1_
-#define DLIB_LZP_BUFFER_KERNEl_1_
-
-#include "../algs.h"
-#include "lzp_buffer_kernel_abstract.h"
-
-namespace dlib
-{
-
- template <
- typename sbuf
- >
- class lzp_buffer_kernel_1
- {
- /*!
- REQUIREMENTS ON sbuf
- sbuf is an implementation of sliding_buffer/sliding_buffer_kernel_abstract.h
- T == unsigned char
-
- INITIAL VALUE
- - buffer.size() == the size as defined by the constructor
- - table_size == the number of elements in the table array
- - for all i: buffer[i] == 0
- - for all i: table[i] == buffer.size()
-
- CONVENTION
- - table_size == the number of elements in the table array
- - size() == buffer.size()
- - operator[](i) == buffer[i]
-
- - if (table[hash()] != buffer.size()) then
- - buffer.get_element_index(table[hash()]) == the index we will
- predict for the current context
- - else
- - there is no prediction for the current context
-
- - last_element == buffer.size()-1
-
-
- This is LZP with just an order-3 model without context confirmation.
-
- !*/
-
- public:
-
- explicit lzp_buffer_kernel_1 (
- unsigned long buffer_size
- );
-
- virtual ~lzp_buffer_kernel_1 (
- );
-
- void clear(
- );
-
- inline void add (
- unsigned char symbol
- );
-
- inline unsigned long predict_match (
- unsigned long& index
- );
-
- inline size_t size (
- ) const;
-
- inline unsigned char operator[] (
- unsigned long index
- ) const;
-
- private:
-
- inline unsigned long hash (
- ) const
- /*!
- ensures
- - returns a hash computed from the current context. This hash
- is always in the range for table.
- !*/
- {
- unsigned long temp = buffer[0];
- temp <<= 16;
- unsigned long temp2 = buffer[1];
- temp2 <<= 8;
- unsigned long temp3 = buffer[2];
- temp = temp|temp2|temp3;
-
- temp = ((temp>>11)^temp)&0xFFFF;
-
- return temp;
- }
-
- sbuf buffer;
- const unsigned long table_size;
- unsigned long* const table;
- unsigned long last_element;
-
- // restricted functions
- lzp_buffer_kernel_1(const lzp_buffer_kernel_1<sbuf>&); // copy constructor
- lzp_buffer_kernel_1<sbuf>& operator=(const lzp_buffer_kernel_1<sbuf>&); // assignment operator
-
- };
-
-// ----------------------------------------------------------------------------------------
-// ----------------------------------------------------------------------------------------
- // member function definitions
-// ----------------------------------------------------------------------------------------
-// ----------------------------------------------------------------------------------------
-
- template <
- typename sbuf
- >
- lzp_buffer_kernel_1<sbuf>::
- lzp_buffer_kernel_1 (
- unsigned long buffer_size
- ) :
- table_size(65536),
- table(new unsigned long[table_size])
- {
- buffer.set_size(buffer_size);
-
- for (unsigned long i = 0; i < buffer.size(); ++i)
- buffer[i] = 0;
-
- for (unsigned long i = 0; i < table_size; ++i)
- table[i] = buffer.size();
-
- last_element = buffer.size()-1;
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename sbuf
- >
- lzp_buffer_kernel_1<sbuf>::
- ~lzp_buffer_kernel_1 (
- )
- {
- delete [] table;
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename sbuf
- >
- void lzp_buffer_kernel_1<sbuf>::
- clear(
- )
- {
- for (unsigned long i = 0; i < buffer.size(); ++i)
- buffer[i] = 0;
-
- for (unsigned long i = 0; i < table_size; ++i)
- table[i] = buffer.size();
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename sbuf
- >
- void lzp_buffer_kernel_1<sbuf>::
- add (
- unsigned char symbol
- )
- {
- buffer.rotate_left(1);
- buffer[0] = symbol;
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename sbuf
- >
- unsigned long lzp_buffer_kernel_1<sbuf>::
- predict_match (
- unsigned long& index
- )
- {
- const unsigned long i = hash();
-
- if (table[i] != buffer.size())
- {
- index = buffer.get_element_index(table[i]);
-
- if (index > 20)
- {
- // update the prediction for this context
- table[i] = buffer.get_element_id(last_element);
- }
- return 3;
- }
- else
- {
- // update the prediction for this context
- table[i] = buffer.get_element_id(last_element);
- return 0;
- }
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename sbuf
- >
- size_t lzp_buffer_kernel_1<sbuf>::
- size (
- ) const
- {
- return buffer.size();
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename sbuf
- >
- unsigned char lzp_buffer_kernel_1<sbuf>::
- operator[] (
- unsigned long index
- ) const
- {
- return buffer[index];
- }
-
-// ----------------------------------------------------------------------------------------
-
-}
-
-#endif // DLIB_LZP_BUFFER_KERNEl_1_
-
diff --git a/ml/dlib/dlib/lzp_buffer/lzp_buffer_kernel_2.h b/ml/dlib/dlib/lzp_buffer/lzp_buffer_kernel_2.h
deleted file mode 100644
index 47c0443f1..000000000
--- a/ml/dlib/dlib/lzp_buffer/lzp_buffer_kernel_2.h
+++ /dev/null
@@ -1,319 +0,0 @@
-// Copyright (C) 2005 Davis E. King (davis@dlib.net)
-// License: Boost Software License See LICENSE.txt for the full license.
-#ifndef DLIB_LZP_BUFFER_KERNEl_2_
-#define DLIB_LZP_BUFFER_KERNEl_2_
-
-#include "../algs.h"
-#include "lzp_buffer_kernel_abstract.h"
-#include <new>
-
-namespace dlib
-{
-
- template <
- typename sbuf
- >
- class lzp_buffer_kernel_2
- {
- /*!
- REQUIREMENTS ON sbuf
- sbuf is an implementation of sliding_buffer/sliding_buffer_kernel_abstract.h
- T == unsigned char
-
- INITIAL VALUE
- - buffer.size() == the size as defined by the constructor
- - table_size == the number of elements in the table3 and table4 arrays
- - for all i: buffer[i] == 0
- - for all i: table3[i] == buffer.size()
- - for all i: table4[i] == buffer.size()
-
- CONVENTION
- - table_size == the number of elements in the table3 and table4 arrays
- - size() == buffer.size()
- - operator[](i) == buffer[i]
-
-
-
- - last_element == buffer.size()-1
-
-
- This is LZP with an order-5-4-3 model with context confirmation.
- To save memory the order5 and order3 predictions exist in the same
- table, that is, table3.
-
- !*/
-
- public:
-
- explicit lzp_buffer_kernel_2 (
- unsigned long buffer_size
- );
-
- virtual ~lzp_buffer_kernel_2 (
- );
-
- void clear(
- );
-
- inline void add (
- unsigned char symbol
- );
-
- inline unsigned long predict_match (
- unsigned long& index
- );
-
- inline size_t size (
- ) const;
-
- inline unsigned char operator[] (
- unsigned long index
- ) const;
-
- private:
-
- inline bool verify (
- unsigned long index
- ) const
- /*!
- ensures
- - returns true if buffer[index]'s context matches the current context
- !*/
- {
- if (index+3 < buffer.size())
- {
- if (buffer[0] != buffer[index+1])
- return false;
- if (buffer[1] != buffer[index+2])
- return false;
- if (buffer[2] != buffer[index+3])
- return false;
- return true;
- }
- else
- {
- // just call this a match
- return true;
- }
- }
-
-
- sbuf buffer;
- unsigned long* table3;
- unsigned long* table4;
- unsigned long last_element;
- const unsigned long table_size;
-
- // restricted functions
- lzp_buffer_kernel_2(const lzp_buffer_kernel_2<sbuf>&); // copy constructor
- lzp_buffer_kernel_2<sbuf>& operator=(const lzp_buffer_kernel_2<sbuf>&); // assignment operator
-
- };
-
-// ----------------------------------------------------------------------------------------
-// ----------------------------------------------------------------------------------------
- // member function definitions
-// ----------------------------------------------------------------------------------------
-// ----------------------------------------------------------------------------------------
-
- template <
- typename sbuf
- >
- lzp_buffer_kernel_2<sbuf>::
- lzp_buffer_kernel_2 (
- unsigned long buffer_size
- ) :
- table3(0),
- table4(0),
- table_size(65536)
- {
- buffer.set_size(buffer_size);
-
- table3 = new (std::nothrow) unsigned long[table_size];
- table4 = new (std::nothrow) unsigned long[table_size];
-
- if (!table3 || !table4)
- {
- if (!table3)
- delete [] table3;
- if (!table4)
- delete [] table4;
-
- throw std::bad_alloc();
- }
-
-
-
- for (unsigned long i = 0; i < buffer.size(); ++i)
- buffer[i] = 0;
-
- for (unsigned long i = 0; i < table_size; ++i)
- {
- table3[i] = buffer.size();
- table4[i] = buffer.size();
- }
-
- last_element = buffer.size()-1;
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename sbuf
- >
- lzp_buffer_kernel_2<sbuf>::
- ~lzp_buffer_kernel_2 (
- )
- {
- delete [] table3;
- delete [] table4;
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename sbuf
- >
- void lzp_buffer_kernel_2<sbuf>::
- clear(
- )
- {
- for (unsigned long i = 0; i < buffer.size(); ++i)
- buffer[i] = 0;
-
- for (unsigned long i = 0; i < table_size; ++i)
- {
- table3[i] = buffer.size();
- table4[i] = buffer.size();
- }
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename sbuf
- >
- void lzp_buffer_kernel_2<sbuf>::
- add (
- unsigned char symbol
- )
- {
- buffer.rotate_left(1);
- buffer[0] = symbol;
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename sbuf
- >
- unsigned long lzp_buffer_kernel_2<sbuf>::
- predict_match (
- unsigned long& index
- )
- {
- unsigned long temp1 = buffer[0];
- unsigned long temp2 = buffer[1];
- temp2 <<= 8;
- unsigned long temp3 = buffer[2];
- temp3 <<= 16;
- unsigned long temp4 = buffer[3];
- temp4 <<= 24;
- unsigned long temp5 = buffer[4];
- temp5 <<= 12;
-
- unsigned long context1 = temp1|temp2|temp3;
- unsigned long context2 = context1|temp4;
-
-
- const unsigned long i5 = ((temp5|(context2>>20))^context2)&0xFFFF;
- const unsigned long i4 = ((context2>>15)^context2)&0xFFFF;
- const unsigned long i3 = ((context1>>11)^context1)&0xFFFF;
-
-
-
- // check the 5-order context's prediction
- if (table3[i5] != buffer.size() &&
- verify(buffer.get_element_index(table3[i5])) )
- {
- index = buffer.get_element_index(table3[i5]);
- if (index > 20)
- {
- // update the prediction for this context
- table3[i3] = buffer.get_element_id(last_element);
- table4[i4] = table3[i3];
- table3[i5] = table3[i3];
- }
- return 5;
- }
- // check the 4-order context's prediction
- else if (table4[i4] != buffer.size() &&
- verify(buffer.get_element_index(table4[i4])) )
- {
- index = buffer.get_element_index(table4[i4]);
- if (index > 20)
- {
- // update the prediction for this context
- table3[i3] = buffer.get_element_id(last_element);
- table4[i4] = table3[i3];
- table3[i5] = table3[i3];
- }
- return 4;
- }
- // check the 3-order context's prediction
- else if (table3[i3] != buffer.size() &&
- verify(buffer.get_element_index(table3[i3])))
- {
- index = buffer.get_element_index(table3[i3]);
-
- if (index > 20)
- {
- // update the prediction for this context
- table3[i3] = buffer.get_element_id(last_element);
- table4[i4] = table3[i3];
- table3[i5] = table3[i3];
- }
- return 3;
- }
- else
- {
- // update the prediction for this context
- table3[i3] = buffer.get_element_id(last_element);
- table4[i4] = table3[i3];
- table3[i5] = table3[i3];
-
- return 0;
- }
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename sbuf
- >
- size_t lzp_buffer_kernel_2<sbuf>::
- size (
- ) const
- {
- return buffer.size();
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename sbuf
- >
- unsigned char lzp_buffer_kernel_2<sbuf>::
- operator[] (
- unsigned long index
- ) const
- {
- return buffer[index];
- }
-
-// ----------------------------------------------------------------------------------------
-
-}
-
-#endif // DLIB_LZP_BUFFER_KERNEl_2_
-
diff --git a/ml/dlib/dlib/lzp_buffer/lzp_buffer_kernel_abstract.h b/ml/dlib/dlib/lzp_buffer/lzp_buffer_kernel_abstract.h
deleted file mode 100644
index df8b8c80f..000000000
--- a/ml/dlib/dlib/lzp_buffer/lzp_buffer_kernel_abstract.h
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright (C) 2005 Davis E. King (davis@dlib.net)
-// License: Boost Software License See LICENSE.txt for the full license.
-#undef DLIB_LZP_BUFFER_KERNEl_ABSTRACT_
-#ifdef DLIB_LZP_BUFFER_KERNEl_ABSTRACT_
-
-#include "../algs.h"
-
-namespace dlib
-{
-
- class lzp_buffer
- {
- /*!
- INITIAL VALUE
- size() == some value defined by the constructor argument
- Initially this object is at some predefined empty or ground state.
- for all i: (*this)[i] == 0
-
- WHAT THIS OBJECT REPRESENTS
- This object represents some varation on the LZP algorithm
- described by Charles Bloom in his paper "LZP: a new data
- compression algorithm"
-
- The LZP algorithm is a lot like lz77 except there is no need to pass
- the location of matches in the history buffer to the decoder because
- LZP uses the data it has already seen to predict the location of the
- next match.
-
- NOTE
- The add() and predict_match() functions must be called in the same
- order by the coder and decoder. If they aren't the state of the
- lzp_buffer objects in the coder and decoder may differ and the decoder
- won't be able to correctly decode the data stream.
- !*/
-
- public:
-
- explicit lzp_buffer (
- unsigned long buffer_size
- );
- /*!
- requires
- - 10 < buffer_size < 32
- ensures
- - #*this is properly initialized
- - #size() == 2^buffer_size
- throws
- - std::bad_alloc
- !*/
-
- virtual ~lzp_buffer (
- );
- /*!
- ensures
- - any resources associated with *this have been released
- !*/
-
- void clear(
- );
- /*!
- ensures
- - #*this has its initial value
- throws
- - std::bad_alloc
- if this exception is thrown then #*this is unusable
- until clear() is called and succeeds
- !*/
-
- void add (
- unsigned char symbol
- );
- /*!
- ensures
- - shifts everything in the history buffer left 1.
- (i.e. #(*this)[i+1] == (*this)[i])
- - #(*this)[0] == symbol
- throws
- - std::bad_alloc
- if this exception is thrown then #*this is unusable
- until clear() is called and succeeds
- !*/
-
- unsigned long predict_match (
- unsigned long& index
- );
- /*!
- ensures
- - updates the prediction for the current context.
- (the current context is the last few symbols seen. i.e. (*this)[0],
- (*this)[1], etc.)
- - if (*this can generate a prediction) then
- - #index == the predicted location of a match in the history buffer.
- (i.e. (*this)[#index] is the first symbol of the predicted match)
- - returns the order this prediction came from
- - else
- - returns 0
- throws
- - std::bad_alloc
- if this exception is thrown then #*this is unusable
- until clear() is called and succeeds
- !*/
-
- size_t size (
- ) const;
- /*!
- ensures
- - returns the size of the history buffer
- !*/
-
- unsigned char operator[] (
- unsigned long index
- ) const;
- /*!
- requires
- - index < size()
- ensures
- - returns the symbol at the given index in the history buffer
- !*/
-
- private:
-
- // restricted functions
- lzp_buffer(const lzp_buffer&); // copy constructor
- lzp_buffer& operator=(const lzp_buffer&); // assignment operator
-
- };
-}
-
-#endif // DLIB_LZP_BUFFER_KERNEl_ABSTRACT_
-
diff --git a/ml/dlib/dlib/lzp_buffer/lzp_buffer_kernel_c.h b/ml/dlib/dlib/lzp_buffer/lzp_buffer_kernel_c.h
deleted file mode 100644
index 2b2de2f1d..000000000
--- a/ml/dlib/dlib/lzp_buffer/lzp_buffer_kernel_c.h
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright (C) 2003 Davis E. King (davis@dlib.net)
-// License: Boost Software License See LICENSE.txt for the full license.
-#ifndef DLIB_LZP_BUFFER_KERNEl_C_
-#define DLIB_LZP_BUFFER_KERNEl_C_
-
-#include "lzp_buffer_kernel_abstract.h"
-#include "../algs.h"
-#include "../assert.h"
-#include <iostream>
-
-namespace dlib
-{
-
- template <
- typename lzp_base
- >
- class lzp_buffer_kernel_c : public lzp_base
- {
-
- public:
- lzp_buffer_kernel_c (
- unsigned long buffer_size
- );
-
-
- unsigned char operator[] (
- unsigned long index
- ) const;
-
-
- unsigned long make_safe (
- unsigned long buffer_size
- )
- /*!
- ensures
- - if ( 10 < buffer_size < 32) then
- - returns buffer_size
- - else
- - throws due to failed CASSERT
- !*/
- {
-
- // make sure requires clause is not broken
- DLIB_CASSERT( 10 < buffer_size && buffer_size < 32,
- "\tlzp_buffer::lzp_buffer(unsigned long)"
- << "\n\tbuffer_size must be in the range 11 to 31."
- << "\n\tthis: " << this
- << "\n\tbuffer_size: " << buffer_size
- );
-
- return buffer_size;
- }
-
- };
-
-// ----------------------------------------------------------------------------------------
-// ----------------------------------------------------------------------------------------
- // member function definitions
-// ----------------------------------------------------------------------------------------
-// ----------------------------------------------------------------------------------------
-
- template <
- typename lzp_base
- >
- unsigned char lzp_buffer_kernel_c<lzp_base>::
- operator[] (
- unsigned long index
- ) const
- {
- // make sure requires clause is not broken
- DLIB_CASSERT( index < this->size(),
- "\tunsigned char lzp_buffer::operator[](unsigned long) const"
- << "\n\tindex must be in the range 0 to size()()-1"
- << "\n\tthis: " << this
- << "\n\tsize(): " << this->size()
- << "\n\tindex: " << index
- );
-
- // call the real function
- return lzp_base::operator[](index);
- }
-
-// ----------------------------------------------------------------------------------------
-
- template <
- typename lzp_base
- >
- lzp_buffer_kernel_c<lzp_base>::
- lzp_buffer_kernel_c (
- unsigned long buffer_size
- ) :
- lzp_base(make_safe(buffer_size))
- {
- }
-
-// ----------------------------------------------------------------------------------------
-
-}
-
-#endif // DLIB_LZP_BUFFER_KERNEl_C_
-