| Octane v1.01.20 - The Open Compression Toolkit for C++ | http://octane.sourceforge.net/ |
#include <symbolweightvector.hpp>
Inheritance diagram for SymbolWeightVector:

It provides basic functionality to save and load state and display debugging information, and report memory usage.
Definition at line 61 of file symbolweightvector.hpp.
Public Member Functions | |
| SymbolWeightVector () | |
| constructor | |
| virtual | ~SymbolWeightVector () |
| destructor | |
| virtual std::string | GetName () |
| provide a unique name for the coder, used in some cases to automatically register the object with a manager | |
| virtual std::string | GetDescription () |
| optionally provide a longer (maybe 20-60 characters) description | |
| virtual std::string | GetHelpInformation () |
| optionally provide more information about the object on request for help | |
| 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 bool | SaveState (bitwriter &to, bool fortempdecompressiononly) |
| Save state of object to output stream (if appropriate). | |
| virtual bool | LoadState (bitreader &from) |
| Load state of object from input stream (if appropriate). | |
| void | ResetWeights () |
| Reset all probabilities. | |
| void | NormalizeToProbabilityDistribution () |
| Normalize vector values into a probability distribution. | |
| void | SetSymbolCount (int newsize) |
| Set the number of symbols we should store weights for; can be called at any time to shrink or grow size. | |
| int | GetSymbolCount () |
| Get count of symbols. | |
| TSymbolWeightVectorWeight | GetSymbolWeight (int index) |
| Get the weight (probability or freq count) of a symbol. | |
| void | SetSymbolWeight (int index, TSymbolWeightVectorWeight weight) |
| Set the weight (probability or freq count) of a symbol. | |
| void | IncremementSymbolWeight (int index) |
| Increment the weight of a given entry. | |
| bool | CountSymbolFrequencies (OctaneParser *parserp, bitreader &from) |
| Higher level function for automatic setting of frequencies with help of parser. | |
| void | EnforceZeroCountFloor (TSymbolWeightVectorWeight symbolfloorval) |
| It's common that we may have symbols for characters we dont see for completeness and it's common to want to force these to some minimal value (like 1); some coders (like huffman), will break without this. | |
Protected Attributes | |
| int | symbolcount |
| size of vector (# of symbol probabilities) | |
| vector< TSymbolWeightVectorWeight > | weightvector |
| vector of probabilities | |
|
|
provide a unique name for the coder, used in some cases to automatically register the object with a manager
Reimplemented from OctaneClass. Definition at line 76 of file symbolweightvector.hpp.
00076 {return "SymbolWeightVector";}
|
|
|
optionally provide a longer (maybe 20-60 characters) description
Reimplemented from OctaneClass. Definition at line 77 of file symbolweightvector.hpp.
00077 {return "Symbol Weight Vector";}
|
|
|
optionally provide more information about the object on request for help
Reimplemented from OctaneClass. Definition at line 78 of file symbolweightvector.hpp.
00078 {return "";}
|
|
||||||||||||
|
Save state of object to output stream (if appropriate).
Reimplemented from OctaneClass. Definition at line 58 of file symbolweightvector.cpp. References bitwriter::put(), symbolcount, and weightvector. Referenced by OctaneModeler_WeightVectored::SaveState().
00059 {
00060 // save state
00061 // return true on success
00062 to.put(symbolcount);
00063 for (int count=0;count<symbolcount;++count)
00064 to.put(weightvector[count]);
00065 return true;
00066 }
|
|
|
Load state of object from input stream (if appropriate).
Reimplemented from OctaneClass. Definition at line 68 of file symbolweightvector.cpp. References bitreader::get(), SetSymbolCount(), symbolcount, and weightvector. Referenced by OctaneModeler_WeightVectored::LoadState().
00069 {
00070 // load state
00071 from.get(symbolcount);
00072 // force size of vector
00073 SetSymbolCount(symbolcount);
00074 // read weights
00075 for (int count=0;count<symbolcount;++count)
00076 from.get(weightvector[count]);
00077 // return true on success
00078 return true;
00079 }
|
|
||||||||||||
|
Higher level function for automatic setting of frequencies with help of parser. This will actually parse the input using the parser, and count frequency of each symbol, and then normalize it into a probability distribution.
Definition at line 116 of file symbolweightvector.cpp. References OctaneParser::GetSymbolCount(), IncremementSymbolWeight(), OctaneParser::ParseNextSymbolFromInput(), ResetWeights(), and SetSymbolCount(). Referenced by ZeroOrderModeler::CreateModelUsingStream().
00117 {
00118 // higher level function for automatic setting of frequencies with help of parser; returns true on success
00119 bool bretv=true;
00120 int symbolnumber;
00121
00122 // set our weight vector to size of symbolcount
00123 SetSymbolCount(parserp->GetSymbolCount());
00124 // reset probabilities
00125 ResetWeights();
00126
00127 // now parse input and count frequencies, OOP parsing a symbol from parser until we hit end
00128 while (parserp->ParseNextSymbolFromInput(from,symbolnumber))
00129 IncremementSymbolWeight(symbolnumber);
00130
00131 // return success
00132 return bretv;
00133
00134 }
|