diff options
Diffstat (limited to 'ml/dlib/dlib/lz77_buffer')
-rw-r--r-- | ml/dlib/dlib/lz77_buffer/lz77_buffer_kernel_1.h | 263 | ||||
-rw-r--r-- | ml/dlib/dlib/lz77_buffer/lz77_buffer_kernel_2.h | 504 | ||||
-rw-r--r-- | ml/dlib/dlib/lz77_buffer/lz77_buffer_kernel_abstract.h | 210 | ||||
-rw-r--r-- | ml/dlib/dlib/lz77_buffer/lz77_buffer_kernel_c.h | 169 |
4 files changed, 0 insertions, 1146 deletions
diff --git a/ml/dlib/dlib/lz77_buffer/lz77_buffer_kernel_1.h b/ml/dlib/dlib/lz77_buffer/lz77_buffer_kernel_1.h deleted file mode 100644 index b93f0628d..000000000 --- a/ml/dlib/dlib/lz77_buffer/lz77_buffer_kernel_1.h +++ /dev/null @@ -1,263 +0,0 @@ -// Copyright (C) 2004 Davis E. King (davis@dlib.net) -// License: Boost Software License See LICENSE.txt for the full license. -#ifndef DLIB_LZ77_BUFFER_KERNEl_1_ -#define DLIB_LZ77_BUFFER_KERNEl_1_ - -#include "lz77_buffer_kernel_abstract.h" -#include "../algs.h" - - - -namespace dlib -{ - - template < - typename sliding_buffer - > - class lz77_buffer_kernel_1 - { - /*! - REQUIREMENTS ON sliding_buffer - sliding_buffer must be an implementation of sliding_buffer/sliding_buffer_kernel_abstract.h - - INITIAL VALUE - history_limit == defined by constructor arguments - lookahead_limit == defined by constructor arguments - history_size == 0 - lookahead_size == 0 - buffer.size() == history_limit + lookahead_limit - - - CONVENTION - history_limit == get_history_buffer_limit() - lookahead_limit == get_lookahead_buffer_limit() - history_size == get_history_buffer_size() - lookahead_limit == get_lookahead_buffer_size() - - buffer.size() == history_limit + lookahead_limit - - lookahead_buffer(i) == buffer[lookahead_limit-1-i] - history_buffer(i) == buffer[lookahead_limit+i] - !*/ - - public: - - lz77_buffer_kernel_1 ( - unsigned long total_limit_, - unsigned long lookahead_limit_ - ); - - virtual ~lz77_buffer_kernel_1 ( - ) {} - - void clear( - ); - - void add ( - unsigned char symbol - ); - - void find_match ( - unsigned long& index, - unsigned long& length, - unsigned long min_match_length - ); - - inline unsigned long get_history_buffer_limit ( - ) const { return history_limit; } - - inline unsigned long get_lookahead_buffer_limit ( - ) const { return lookahead_limit; } - - inline unsigned long get_history_buffer_size ( - ) const { return history_size; } - - inline unsigned long get_lookahead_buffer_size ( - ) const { return lookahead_size; } - - inline unsigned char lookahead_buffer ( - unsigned long index - ) const { return buffer[lookahead_limit-1-index]; } - - inline unsigned char history_buffer ( - unsigned long index - ) const { return buffer[lookahead_limit+index]; } - - - inline void shift_buffers ( - unsigned long N - ) { shift_buffer(N); } - - private: - - - inline void shift_buffer ( - unsigned long N - ) - /*! - requires - - N <= lookahead_size - ensuers - - #lookahead_size == lookahead_size - N - - if (history_size+N < history_limit) then - - #history_size == history_size+N - - else - - #history_size == history_limit - - for all i where 0 <= i < N: - #history_buffer(N-1-i) == lookahead_buffer(i) - - for all i where 0 <= i < #history_size-N: - #history_buffer(N+i) == history_buffer(i) - - for all i where 0 <= i < #lookahead_size - #lookahead_buffer(i) == lookahead_buffer(N+i) - !*/ - { - unsigned long temp = history_size+N; - buffer.rotate_left(N); - lookahead_size -= N; - if (temp < history_limit) - history_size = temp; - else - history_size = history_limit; - } - - - // member data - sliding_buffer buffer; - unsigned long lookahead_limit; - unsigned long history_limit; - - - unsigned long lookahead_size; - unsigned long history_size; - - - // restricted functions - lz77_buffer_kernel_1(lz77_buffer_kernel_1<sliding_buffer>&); // copy constructor - lz77_buffer_kernel_1<sliding_buffer>& operator=(lz77_buffer_kernel_1<sliding_buffer>&); // assignment operator - }; - -// ---------------------------------------------------------------------------------------- -// ---------------------------------------------------------------------------------------- - // member function definitions -// ---------------------------------------------------------------------------------------- -// ---------------------------------------------------------------------------------------- - - template < - typename sliding_buffer - > - lz77_buffer_kernel_1<sliding_buffer>:: - lz77_buffer_kernel_1 ( - unsigned long total_limit_, - unsigned long lookahead_limit_ - ) : - lookahead_size(0), - history_size(0) - { - buffer.set_size(total_limit_); - lookahead_limit = lookahead_limit_; - history_limit = buffer.size() - lookahead_limit_; - } - -// ---------------------------------------------------------------------------------------- - - template < - typename sliding_buffer - > - void lz77_buffer_kernel_1<sliding_buffer>:: - clear( - ) - { - lookahead_size = 0; - history_size = 0; - } - -// ---------------------------------------------------------------------------------------- - - template < - typename sliding_buffer - > - void lz77_buffer_kernel_1<sliding_buffer>:: - add ( - unsigned char symbol - ) - { - if (lookahead_size == lookahead_limit) - { - shift_buffer(1); - } - buffer[lookahead_limit-1-lookahead_size] = symbol; - ++lookahead_size; - } - -// ---------------------------------------------------------------------------------------- - - template < - typename sliding_buffer - > - void lz77_buffer_kernel_1<sliding_buffer>:: - find_match ( - unsigned long& index, - unsigned long& length, - unsigned long min_match_length - ) - { - unsigned long hpos = history_size; // current position in the history buffer - unsigned long lpos = 0; // current position in the lookahead buffer - - unsigned long match_length = 0; // the length of the longest match we find - unsigned long match_index = 0; // the index of the longest match we find - - // try to find a match - while (hpos != 0) - { - --hpos; - // if we are finding a match - if (history_buffer(hpos) == lookahead_buffer(lpos)) - { - ++lpos; - // if we have found a match that is as long as the lookahead buffer - // then we are done - if (lpos == lookahead_size) - break; - } - // else if we found the end of a match - else if (lpos > 0) - { - // if this match is longer than the last match we saw - if (lpos > match_length) - { - match_length = lpos; - match_index = hpos + lpos; - } - lpos = 0; - } - } // while (hpos != 0) - - // if we found a match at the end of the loop that is greater than - // the match in match_index - if (lpos > match_length) - { - match_length = lpos; - match_index = hpos + lpos - 1; - } - - - // if we found a match that was long enough then report it - if (match_length >= min_match_length) - { - shift_buffer(match_length); - index = match_index; - length = match_length; - } - else - { - length = 0; - } - } - -// ---------------------------------------------------------------------------------------- - -} - -#endif // DLIB_LZ77_BUFFER_KERNEl_1_ - diff --git a/ml/dlib/dlib/lz77_buffer/lz77_buffer_kernel_2.h b/ml/dlib/dlib/lz77_buffer/lz77_buffer_kernel_2.h deleted file mode 100644 index f8d332784..000000000 --- a/ml/dlib/dlib/lz77_buffer/lz77_buffer_kernel_2.h +++ /dev/null @@ -1,504 +0,0 @@ -// Copyright (C) 2004 Davis E. King (davis@dlib.net) -// License: Boost Software License See LICENSE.txt for the full license. -#ifndef DLIB_LZ77_BUFFER_KERNEl_2_ -#define DLIB_LZ77_BUFFER_KERNEl_2_ - -#include "lz77_buffer_kernel_abstract.h" -#include "../algs.h" - - - -namespace dlib -{ - - template < - typename sliding_buffer - > - class lz77_buffer_kernel_2 - { - /*! - REQUIREMENTS ON sliding_buffer - sliding_buffer must be an implementation of sliding_buffer/sliding_buffer_kernel_abstract.h - and must be instantiated to contain unsigned char data - - INITIAL VALUE - history_limit == defined by constructor arguments - lookahead_limit == defined by constructor arguments - history_size == 0 - lookahead_size == 0 - buffer.size() == history_limit + lookahead_limit - buffer[i] == 0 for all valid i - - nodes == an array of history_limit-3 nodes - id_table == an array of buffer.size() pointers - hash_table == an array of buffer.size() pointers and all are set to 0 - mask == buffer.size() - 1 - next_free_node == 0 - - - CONVENTION - history_limit == get_history_buffer_limit() - lookahead_limit == get_lookahead_buffer_limit() - history_size == get_history_buffer_size() - lookahead_limit == get_lookahead_buffer_size() - - buffer.size() == history_limit + lookahead_limit - - lookahead_buffer(i) == buffer[lookahead_limit-1-i] - history_buffer(i) == buffer[lookahead_limit+i] - - - hash_table[hash(a,b,c,d)] points to the head of a linked list. - Each node in this linked list tells the location in the buffer - of a string that begins with abcd or a string who's first four - letters have the same hash. The linked list is terminated by a - node with a null next pointer. - - hash_table[i] == 0 if there is no linked list for this element of the hash - table. - - each node in the hash table is allocated from the array nodes. - When adding a node to hash_table: - if (if all nodes aren't already in the hash_table) then - { - the next node to use is nodes[next_free_node]. - } - else - { - recycle nodes from the hash_table itself. This works because - when we add new nodes we also have to remove nodes. - } - - if (there is a node defined with an id of i) then - { - if (id_table[i] != 0) then - id_table[i]->next->id == i - else - hash_table[some_hash]->id == i - } - !*/ - - public: - - lz77_buffer_kernel_2 ( - unsigned long total_limit_, - unsigned long lookahead_limit_ - ); - - virtual ~lz77_buffer_kernel_2 ( - ); - - void clear( - ); - - void add ( - unsigned char symbol - ); - - void find_match ( - unsigned long& index, - unsigned long& length, - unsigned long min_match_length - ); - - inline unsigned long get_history_buffer_limit ( - ) const { return history_limit; } - - inline unsigned long get_lookahead_buffer_limit ( - ) const { return lookahead_limit; } - - inline unsigned long get_history_buffer_size ( - ) const { return history_size; } - - inline unsigned long get_lookahead_buffer_size ( - ) const { return lookahead_size; } - - inline unsigned char lookahead_buffer ( - unsigned long index - ) const { return buffer[lookahead_limit-1-index]; } - - inline unsigned char history_buffer ( - unsigned long index - ) const { return buffer[lookahead_limit+index]; } - - - inline void shift_buffers ( - unsigned long N - ) { shift_buffer(N); } - - private: - - inline unsigned long hash ( - unsigned char a, - unsigned char b, - unsigned char c, - unsigned char d - ) const - /*! - ensures - - returns a hash of the 4 arguments and the hash is in the range - !*/ - { - unsigned long B = b << 3; - unsigned long C = c << 6; - unsigned long D = d << 9; - - unsigned long temp = a + B; - temp += C; - temp += D; - - return (temp&mask); /**/ - } - - void shift_buffer ( - unsigned long N - ); - /*! - requires - - N <= lookahead_size - ensuers - - #lookahead_size == lookahead_size - N - - if (history_size+N < history_limit) then - - #history_size == history_size+N - - else - - #history_size == history_limit - - for all i where 0 <= i < N: - #history_buffer(N-1-i) == lookahead_buffer(i) - - for all i where 0 <= i < #history_size-N: - #history_buffer(N+i) == history_buffer(i) - - for all i where 0 <= i < #lookahead_size - #lookahead_buffer(i) == lookahead_buffer(N+i) - !*/ - - - - // member data - sliding_buffer buffer; - unsigned long lookahead_limit; - unsigned long history_limit; - - struct node - { - unsigned long id; - node* next; - }; - - node** hash_table; - node* nodes; - node** id_table; - unsigned long next_free_node; - unsigned long mask; - - unsigned long lookahead_size; - unsigned long history_size; - - - // restricted functions - lz77_buffer_kernel_2(lz77_buffer_kernel_2<sliding_buffer>&); // copy constructor - lz77_buffer_kernel_2<sliding_buffer>& operator=(lz77_buffer_kernel_2<sliding_buffer>&); // assignment operator - }; - -// ---------------------------------------------------------------------------------------- -// ---------------------------------------------------------------------------------------- - // member function definitions -// ---------------------------------------------------------------------------------------- -// ---------------------------------------------------------------------------------------- - - template < - typename sliding_buffer - > - lz77_buffer_kernel_2<sliding_buffer>:: - lz77_buffer_kernel_2 ( - unsigned long total_limit_, - unsigned long lookahead_limit_ - ) : - lookahead_size(0), - history_size(0) - { - buffer.set_size(total_limit_); - lookahead_limit = lookahead_limit_; - history_limit = buffer.size() - lookahead_limit_; - - nodes = new node[history_limit-3]; - - try { id_table = new node*[buffer.size()]; } - catch (...) { delete [] nodes; throw; } - - try { hash_table = new node*[buffer.size()]; } - catch (...) { delete [] id_table; delete [] nodes; throw; } - - mask = buffer.size()-1; - next_free_node = 0; - - - node** start = hash_table; - node** end = hash_table + buffer.size(); - while (start != end) - { - *start = 0; - ++start; - } - - for (unsigned long i = 0; i < buffer.size(); ++i) - buffer[i] = 0; - - } - -// ---------------------------------------------------------------------------------------- - - template < - typename sliding_buffer - > - lz77_buffer_kernel_2<sliding_buffer>:: - ~lz77_buffer_kernel_2 ( - ) - { - delete [] nodes; - delete [] hash_table; - delete [] id_table; - } - -// ---------------------------------------------------------------------------------------- - - template < - typename sliding_buffer - > - void lz77_buffer_kernel_2<sliding_buffer>:: - clear( - ) - { - lookahead_size = 0; - history_size = 0; - next_free_node = 0; - - node** start = hash_table; - node** end = hash_table + buffer.size(); - while (start != end) - { - *start = 0; - ++start; - } - } - -// ---------------------------------------------------------------------------------------- - - template < - typename sliding_buffer - > - void lz77_buffer_kernel_2<sliding_buffer>:: - shift_buffer ( - unsigned long N - ) - { - unsigned long old_history_size = history_size; - unsigned long temp = history_size+N; - unsigned long new_nodes; // the number of nodes to pull from the nodes array - unsigned long recycled_nodes; // the number of nodes to pull from hash_table - lookahead_size -= N; - if (temp <= history_limit) - { - if (history_size <= 3) - { - if ((3-history_size) >= N) - new_nodes = 0; - else - new_nodes = N - (3-history_size); - } - else - { - new_nodes = N; - } - - recycled_nodes = 0; - history_size = temp; - } - else - { - if (history_size != history_limit) - { - new_nodes = history_limit - history_size; - recycled_nodes = temp - history_limit; - history_size = history_limit; - } - else - { - new_nodes = 0; - recycled_nodes = N; - } - } - - unsigned long i = lookahead_limit + 2; - - // if there are any "new" nodes to add to the hash table - if (new_nodes != 0) - { - unsigned long stop = i - new_nodes; - for (; i > stop; --i) - { - nodes[next_free_node].next = 0; - nodes[next_free_node].id = buffer.get_element_id(i); - id_table[nodes[next_free_node].id] = 0; - - unsigned long new_hash = hash(buffer[i],buffer[i-1],buffer[i-2],buffer[i-3]); - - if (hash_table[new_hash] != 0) - id_table[hash_table[new_hash]->id] = &nodes[next_free_node]; - nodes[next_free_node].next = hash_table[new_hash]; - hash_table[new_hash] = &nodes[next_free_node]; - - ++next_free_node; - } - } // if (new_nodes != 0) - - - - unsigned long stop = i - recycled_nodes; - unsigned long old = old_history_size-1+lookahead_limit; - for (; i > stop; --i) - { - // find the next node to recycle in hash_table - node* recycled_node; - - - unsigned long old_id = buffer.get_element_id(old); - - // find the node with id old_id - if (id_table[old_id] == 0) - { - unsigned long old_hash = hash(buffer[old],buffer[old-1],buffer[old-2],buffer[old-3]); - recycled_node = hash_table[old_hash]; - - // fill the gap left by removing this node - hash_table[old_hash] = recycled_node->next; - } - else - { - recycled_node = id_table[old_id]->next; - - // fill the gap left by removing this node - id_table[old_id]->next = recycled_node->next; - } - - --old; - - - - - - - recycled_node->next = 0; - recycled_node->id = buffer.get_element_id(i); - id_table[recycled_node->id] = 0; - - unsigned long new_hash = hash(buffer[i],buffer[i-1],buffer[i-2],buffer[i-3]); - - if (hash_table[new_hash] != 0) - id_table[hash_table[new_hash]->id] = recycled_node; - - recycled_node->next = hash_table[new_hash]; - hash_table[new_hash] = recycled_node; - - } // for (; i > stop; --i) - - - - - buffer.rotate_left(N); - } - -// ---------------------------------------------------------------------------------------- - - template < - typename sliding_buffer - > - void lz77_buffer_kernel_2<sliding_buffer>:: - add ( - unsigned char symbol - ) - { - if (lookahead_size == lookahead_limit) - { - shift_buffer(1); - } - buffer[lookahead_limit-1-lookahead_size] = symbol; - ++lookahead_size; - } - -// ---------------------------------------------------------------------------------------- - - template < - typename sliding_buffer - > - void lz77_buffer_kernel_2<sliding_buffer>:: - find_match ( - unsigned long& index, - unsigned long& length, - unsigned long min_match_length - ) - { - unsigned long match_length = 0; // the length of the longest match we find - unsigned long match_index = 0; // the index of the longest match we find - - - const unsigned long hash_value = hash(lookahead_buffer(0), - lookahead_buffer(1), - lookahead_buffer(2), - lookahead_buffer(3) - ); - - - - node* temp = hash_table[hash_value]; - while (temp != 0) - { - // current position in the history buffer - unsigned long hpos = buffer.get_element_index(temp->id)-lookahead_limit; - // current position in the lookahead buffer - unsigned long lpos = 0; - - // find length of this match - while (history_buffer(hpos) == lookahead_buffer(lpos)) - { - ++lpos; - if (hpos == 0) - break; - --hpos; - if (lpos == lookahead_size) - break; - } - - if (lpos > match_length) - { - match_length = lpos; - match_index = buffer.get_element_index(temp->id)-lookahead_limit; - // if this is the longest possible match then stop looking - if (lpos == lookahead_limit) - break; - } - - - temp = temp->next; - } // while (temp != 0) - - - - - // if we found a match that was long enough then report it - if (match_length >= min_match_length) - { - shift_buffer(match_length); - index = match_index; - length = match_length; - } - else - { - length = 0; - } - } - -// ---------------------------------------------------------------------------------------- - -} - -#endif // DLIB_LZ77_BUFFER_KERNEl_2_ - diff --git a/ml/dlib/dlib/lz77_buffer/lz77_buffer_kernel_abstract.h b/ml/dlib/dlib/lz77_buffer/lz77_buffer_kernel_abstract.h deleted file mode 100644 index 942b4e3c2..000000000 --- a/ml/dlib/dlib/lz77_buffer/lz77_buffer_kernel_abstract.h +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright (C) 2004 Davis E. King (davis@dlib.net) -// License: Boost Software License See LICENSE.txt for the full license. -#undef DLIB_LZ77_BUFFER_KERNEl_ABSTRACT_ -#ifdef DLIB_LZ77_BUFFER_KERNEl_ABSTRACT_ - -#include "../algs.h" - -namespace dlib -{ - - class lz77_buffer - { - /*! - INITIAL VALUE - get_history_buffer_limit() == defined by constructor arguments - get_lookahead_buffer_limit() == defined by constructor arguments - get_history_buffer_size() == 0 - get_lookahead_buffer_size() == 0 - - - WHAT THIS OBJECT REPRESENTS - This object represents a pair of buffers (history and lookahead buffers) - used during lz77 style compression. - - It's main function is to search the history buffer for long strings which - match the contents (or a part of the contents) of the lookahead buffer. - - - HISTORY AND LOOKAHEAD BUFFERS - The buffers have the following structure: - | history buffer | lookahead buffer | <-- contents of buffers - | ...9876543210 | 0123456789... | <-- index numbers - - So this means that history_buffer(0) == 'r', history_buffer(1) == 'e' - and so on. And lookahead_buffer(0) == 'l', lookahead_buffer(1) == 'o' - and so on. - - - What shift_buffers() does in english: - This function just means that the buffers have their contents shifted - left by N elements and that elements shifted out of the lookahead buffer - go into the history buffer. An example will make it clearer. - - Suppose that we have the following buffers before we apply shift_buffers() - history_buffer() == "hey" and - lookahead_buffer() == "lookahead buffer" - And in the same format as the above diagram it would be - | hey | lookahead buffer | <-- contents of buffers - | 210 | 0123456789... | <-- index numbers - - Applying shift_buffers(4) will give - lookahead_buffer() == "ahead buffer" - history_buffer() == "heylook" or "eylook" or "ylook" or "look" - - You might be wondering why the history_buffer can resize itself in - such a nondeterministic way. It is just to allow a lot of freedom in the - implementations of this object. - !*/ - - public: - - lz77_buffer ( - unsigned long total_limit, - unsigned long lookahead_limit - ); - /*! - requires - - 6 < total_limit < 32 - - 15 < lookahead_limit <= 2^(total_limit-2) - ensures - - #*this is properly initialized - - #get_history_buffer_limit() == 2^total_limit - lookahead_limit - - #get_lookahead_buffer_limit() == lookahead_limit - throws - - std::bad_alloc - !*/ - - virtual ~lz77_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 shift_buffers ( - unsigned long N - ); - /*! - requires - - N <= get_lookahead_buffer_size() - ensures - - #get_lookahead_buffer_size() == get_lookahead_buffer_size() - N - - #get_history_buffer_size() >= N - - #get_history_buffer_size() <= get_history_buffer_size()+N - - #get_history_buffer_size() <= get_history_buffer_limit() - - for all i where 0 <= i < N: - #history_buffer(N-1-i) == lookahead_buffer(i) - - for all i where 0 <= i < #get_history_buffer_size()-N: - #history_buffer(N+i) == history_buffer(i) - - for all i where 0 <= i < #get_lookahead_buffer_size() - #lookahead_buffer(i) == lookahead_buffer(N+i) - !*/ - - void add ( - unsigned char symbol - ); - /*! - ensures - - if (get_lookahead_buffer_size() == get_lookahead_buffer_limit()) then - - performs shift_buffers(1) - - #lookahead_buffer(get_lookahead_buffer_limit()-1) == symbol - - #get_lookahead_buffer_size() == get_lookahead_buffer_size() - - else - - #lookahead_buffer(get_lookahead_buffer_size()) == symbol - - #get_lookahead_buffer_size() == get_lookahead_buffer_size() + 1 - throws - - std::bad_alloc - if this exception is thrown then #*this is unusable - until clear() is called and succeeds - !*/ - - void find_match ( - unsigned long& index, - unsigned long& length, - unsigned long min_match_length - ); - /*! - ensures - - if (#length != 0) then - - #length >= min_match_length - - for all i where 0 <= i < #length: - history_buffer(#index-i) == lookahead_buffer(i) - - performs shift_buffers(#length) - throws - - std::bad_alloc - if this exception is thrown then #*this is unusable - until clear() is called and succeeds - !*/ - - unsigned long get_history_buffer_limit ( - ) const; - /*! - ensures - - returns the max number of symbols that can fit in the history buffer - !*/ - - unsigned long get_lookahead_buffer_limit ( - ) const; - /*! - ensures - - returns the max number of symbols that can fit in the lookahead buffer - !*/ - - unsigned long get_history_buffer_size ( - ) const; - /*! - ensures - - returns the number of symbols currently in the history buffer - !*/ - - unsigned long get_lookahead_buffer_size ( - ) const; - /*! - ensures - - returns the number of symbols currently in the lookahead buffer - !*/ - - unsigned char lookahead_buffer ( - unsigned long index - ) const; - /*! - requires - - index < get_lookahead_buffer_size() - ensures - - returns the symbol in the lookahead buffer at location index - !*/ - - unsigned char history_buffer ( - unsigned long index - ) const; - /*! - requires - - index < get_history_buffer_size() - ensures - - returns the symbol in the history buffer at location index - !*/ - - - private: - - // restricted functions - lz77_buffer(lz77_buffer&); // copy constructor - lz77_buffer& operator=(lz77_buffer&); // assignment operator - - }; -} - -#endif // DLIB_LZ77_BUFFER_KERNEl_ABSTRACT_ - diff --git a/ml/dlib/dlib/lz77_buffer/lz77_buffer_kernel_c.h b/ml/dlib/dlib/lz77_buffer/lz77_buffer_kernel_c.h deleted file mode 100644 index 704763ad1..000000000 --- a/ml/dlib/dlib/lz77_buffer/lz77_buffer_kernel_c.h +++ /dev/null @@ -1,169 +0,0 @@ -// Copyright (C) 2003 Davis E. King (davis@dlib.net) -// License: Boost Software License See LICENSE.txt for the full license. -#ifndef DLIB_LZ77_BUFFER_KERNEl_C_ -#define DLIB_LZ77_BUFFER_KERNEl_C_ - -#include "lz77_buffer_kernel_abstract.h" -#include "../algs.h" -#include "../assert.h" -#include <iostream> - -namespace dlib -{ - - template < - typename lz77_base - > - class lz77_buffer_kernel_c : public lz77_base - { - - public: - lz77_buffer_kernel_c ( - unsigned long total_limit, - unsigned long lookahead_limit - ); - - unsigned char lookahead_buffer ( - unsigned long index - ) const; - - unsigned char history_buffer ( - unsigned long index - ) const; - - void shift_buffers ( - unsigned long N - ); - - - - unsigned long make_safe ( - unsigned long total_limit, - unsigned long lookahead_limit - ) - /*! - ensures - - if ( 6 < total_limit < 32 && - 15 < lookahead_limit <= 2^(total_limit-2) - ) then - - returns total_limit - - else - - throws due to failed CASSERT - !*/ - { - unsigned long exp_size = (total_limit!=0)?total_limit-2:0; - unsigned long two_pow_total_limit_minus_2 = 1; - while (exp_size != 0) - { - --exp_size; - two_pow_total_limit_minus_2 <<= 1; - } - - // make sure requires clause is not broken - DLIB_CASSERT( 6 < total_limit && total_limit < 32 && - 15 < lookahead_limit && lookahead_limit <= two_pow_total_limit_minus_2, - "\tlz77_buffer::lz77_buffer(unsigned long,unsigned long)" - << "\n\ttotal_limit must be in the range 7 to 31 and \n\tlookahead_limit in the range 15 to 2^(total_limit-2)" - << "\n\tthis: " << this - << "\n\ttotal_limit: " << total_limit - << "\n\tlookahead_limit: " << lookahead_limit - ); - - return total_limit; - } - - }; - -// ---------------------------------------------------------------------------------------- -// ---------------------------------------------------------------------------------------- - // member function definitions -// ---------------------------------------------------------------------------------------- -// ---------------------------------------------------------------------------------------- - - template < - typename lz77_base - > - void lz77_buffer_kernel_c<lz77_base>:: - shift_buffers ( - unsigned long N - ) - { - // make sure requires clause is not broken - DLIB_CASSERT( N <= this->get_lookahead_buffer_size(), - "\tvoid lz77_buffer::shift_buffers(unsigned long)" - << "\n\tN must be <= the number of chars in the lookahead buffer" - << "\n\tthis: " << this - << "\n\tget_lookahead_buffer_size(): " << this->get_lookahead_buffer_size() - << "\n\tN: " << N - ); - - // call the real function - lz77_base::shift_buffers(N); - } - -// ---------------------------------------------------------------------------------------- - - template < - typename lz77_base - > - unsigned char lz77_buffer_kernel_c<lz77_base>:: - history_buffer ( - unsigned long index - ) const - { - // make sure requires clause is not broken - DLIB_CASSERT( index < this->get_history_buffer_size(), - "\tunsigned char lz77_buffer::history_buffer(unsigned long) const" - << "\n\tindex must be in the range 0 to get_history_buffer_size()-1" - << "\n\tthis: " << this - << "\n\tget_history_buffer_size(): " << this->get_history_buffer_size() - << "\n\tindex: " << index - ); - - // call the real function - return lz77_base::history_buffer(index); - } - -// ---------------------------------------------------------------------------------------- - - template < - typename lz77_base - > - unsigned char lz77_buffer_kernel_c<lz77_base>:: - lookahead_buffer ( - unsigned long index - ) const - { - // make sure requires clause is not broken - DLIB_CASSERT( index < this->get_lookahead_buffer_size(), - "\tunsigned char lz77_buffer::lookahead_buffer(unsigned long) const" - << "\n\tindex must be in the range 0 to get_lookahead_buffer_size()-1" - << "\n\tthis: " << this - << "\n\tget_lookahead_buffer_size(): " << this->get_lookahead_buffer_size() - << "\n\tindex: " << index - ); - - // call the real function - return lz77_base::lookahead_buffer(index); - } - -// ---------------------------------------------------------------------------------------- - - template < - typename lz77_base - > - lz77_buffer_kernel_c<lz77_base>:: - lz77_buffer_kernel_c ( - unsigned long total_limit, - unsigned long lookahead_limit - ) : - lz77_base(make_safe(total_limit,lookahead_limit),lookahead_limit) - { - } - -// ---------------------------------------------------------------------------------------- - -} - -#endif // DLIB_LZ77_BUFFER_KERNEl_C_ - |