Octane v1.01.20 - The Open Compression Toolkit for C++ | http://octane.sourceforge.net/ |
#include <samplecompressor.hpp>
Inheritance diagram for SampleCompressor:
Definition at line 34 of file samplecompressor.hpp.
Public Member Functions | |
SampleCompressor (bool registerme=false) | |
constructor | |
~SampleCompressor () | |
destructor | |
virtual std::string | GetClassName () |
Get the assigned name of an instantiated compressor. | |
virtual std::string | GetDescription () |
optionally provide a longer (maybe 20-60 characters) description | |
virtual OctaneCompressor * | MakeCompressorInstantiation () |
Instantiate a compressor from this class (like a factory). | |
virtual void | ShowDebuggingInfo () |
show any debugging info on request (used by various derived classes) [optional] | |
virtual unsigned int | GetMemoryUsed () |
Report actual current memory usage (in bytes). | |
virtual unsigned int | GetDiskspaceUsed (bool fortempdecompressiononly) |
Report disk space (in bytes) that would be used when saving state to file (in bytes). | |
virtual std::string | GetParametersInformation () |
Reports information about any parameters available. | |
virtual void | SetDefaultParameters () |
Reset any parameters to their default values. | |
virtual bool | SetParameter (const std::string ¶metername, const std::string ¶metervalue) |
This function is called to set a variable value. | |
virtual bool | IsReadyToCompress () |
is the compressor ready to compress? Normally this is false until a dictionary is built or loaded. | |
Protected Member Functions | |
virtual bool | DoProtectedCompress (bitreader &from, bitwriter &to) |
This is the member function which does the actual compression, and this is the function that should be subclasses by derived classes. | |
virtual bool | DoProtectedDecompress (bitreader &from, bitwriter &to) |
This is the member function which does the actual decompression, and this is the function that should be subclasses by derived classes. | |
virtual bool | DoProtectedCreateSymbolsAndModelsUsingStream (bitreader &from) |
This is the member function which does the actual training on an input in order to generate parsers/modelers/coders, and this is the function that should be subclasses by derived classes. | |
virtual bool | DoProtectedSaveState (bitwriter &to, bool fortempdecompressiononly) |
This is the member function which does the actual saving of state, and this is the function that should be subclasses by derived classes. | |
virtual bool | DoProtectedLoadState (bitreader &from) |
This is the member function which does the actual loading of state, and this is the function that should be subclasses by derived classes. | |
Protected Attributes | |
unsigned char | Parameter_xorbyte |
a byte which the sample compressor xors with incoming or outgoing bytes |
|
optionally provide a longer (maybe 20-60 characters) description
Reimplemented from OctaneCompressor. Definition at line 48 of file samplecompressor.hpp.
00048 {return "Sample Compressor";} |
|
This function is called to set a variable value.
Reimplemented from OctaneClass. Definition at line 87 of file samplecompressor.cpp. References Parameter_xorbyte, and OctaneClass::ParseParameter().
00088 { 00089 // Generic function for user-interactive modification of parameters 00090 // Return true if we know this variable and use it 00091 bool bretv=false; 00092 00093 // we have 1 variable we use, called xorbyte 00094 if (parametername=="xorbyte") 00095 bretv=ParseParameter(parametervalue,Parameter_xorbyte); 00096 00097 // return success 00098 return bretv; 00099 } |
|
is the compressor ready to compress? Normally this is false until a dictionary is built or loaded.
Reimplemented from OctaneCompressor. Definition at line 105 of file samplecompressor.cpp.
00106 { 00107 // Are we ready to compress? 00108 // This sample compressor is always ready (needs no training) 00109 return true; 00110 } |
|
This is the member function which does the actual compression, and this is the function that should be subclasses by derived classes. It is wrapped by the public API call Compress() which performs some measurements on compression speed and streamsize.
Implements OctaneCompressor. Definition at line 117 of file samplecompressor.cpp. References bitreader::empty(), bitreader::get_byte(), Parameter_xorbyte, and bitwriter::put_byte().
00118 { 00119 // Here is the main compression routine 00120 // Our sample compressor doesn't actually compress, instead it just xors 00121 00122 // loop through input and 'compress' (xor) it 00123 unsigned char c; 00124 while (!from.empty()) 00125 { 00126 // grab a character from input 00127 c=from.get_byte(); 00128 // xor it with our parameter 00129 c= c ^ Parameter_xorbyte; 00130 // send it to output 00131 to.put_byte(c); 00132 } 00133 00134 // return success 00135 return true; 00136 } |
|
This is the member function which does the actual decompression, and this is the function that should be subclasses by derived classes. It is wrapped by the public API call Decompress() which performs some measurements on decompression speed and streamsize.
Implements OctaneCompressor. Definition at line 139 of file samplecompressor.cpp. References bitreader::empty(), bitreader::get_byte(), Parameter_xorbyte, and bitwriter::put_byte().
00140 { 00141 // Here is the main decompression routine 00142 // Our sample compressor doesn't actually decompress, instead it just xors 00143 00144 // loop through input and 'compress' (xor) it 00145 unsigned char c; 00146 while (!from.empty()) 00147 { 00148 // grab a character from input 00149 c=from.get_byte(); 00150 // xor it with our parameter 00151 c= Parameter_xorbyte ^ c; 00152 // send it to output 00153 to.put_byte(c); 00154 } 00155 00156 // return success 00157 return true; 00158 } |
|
This is the member function which does the actual training on an input in order to generate parsers/modelers/coders, and this is the function that should be subclasses by derived classes. It is wrapped by the public API call CreateSymbolsAndModelsUsingStream() which performs some measurements on speed and streamsize.
Reimplemented from OctaneCompressor. Definition at line 165 of file samplecompressor.cpp. References bitreader::empty(), and bitreader::get_byte().
00166 { 00167 // OPTIONAL: this is called to 'train' a compressor, to let a compressor gather statistics from an input stream. 00168 // Our sample compressor does not need to implement this, but we include it here just for fun so you see what it looks like. 00169 // return false only on an error. 00170 00171 // let's read the training input stream, just to show you how its done. 00172 unsigned char c; 00173 while (!from.empty()) 00174 { 00175 // grab a character, but we dont do anything with it. 00176 c=from.get_byte(); 00177 } 00178 00179 // return success 00180 return true; 00181 } |
|
This is the member function which does the actual saving of state, and this is the function that should be subclasses by derived classes. It is wrapped by the public API call SaveState() which performs some measurements on speed and streamsize.
Reimplemented from OctaneCompressor. Definition at line 183 of file samplecompressor.cpp. References Parameter_xorbyte, and bitwriter::put().
00184 { 00185 // OPTIONAL: save any compressor internal state (like variables or learned statistics). 00186 // Many compressors have no interenal state to save, but this sample compressor has a variable 00187 // which should be saved. 00188 // The flag fortempdecompressiononly will be set if the state is being saved for decompression *only* 00189 // so that if there is some information is only needed for compression, we dont have to save it if we dont need it. 00190 00191 // just tell the bitwriter to save the variables 00192 to.put(Parameter_xorbyte); 00193 00194 // return true on success 00195 return true; 00196 } |
|
This is the member function which does the actual loading of state, and this is the function that should be subclasses by derived classes. It is wrapped by the public API call LoadState() which performs some measurements on speed and streamsize.
Reimplemented from OctaneCompressor. Definition at line 198 of file samplecompressor.cpp. References bitreader::get(), and Parameter_xorbyte.
00199 { 00200 // OPTIONAL: load any compressor internal state (like variables or learned statistics). 00201 // Many compressors have no interenal state to save, but this sample compressor has a variable 00202 // which should be saved. 00203 00204 // just tell the bitwriter to save the variables 00205 from.get(Parameter_xorbyte); 00206 00207 // return true on success 00208 return true; 00209 } |