PLearn 0.1
|
#include <PLearnDiff.h>
Public Member Functions | |
PLearnDiff () | |
Default constructor. | |
virtual string | classname () const |
virtual OptionList & | getOptionList () const |
virtual OptionMap & | getOptionMap () const |
virtual RemoteMethodMap & | getRemoteMethodMap () const |
virtual PLearnDiff * | deepCopy (CopiesMap &copies) const |
virtual void | build () |
Post-constructor. | |
virtual void | makeDeepCopyFromShallowCopy (CopiesMap &copies) |
Transforms a shallow copy into a deep copy. | |
int | diff (const string &refer, const string &other, const string &name) |
If 'refer' != 'other' return 1 and add the difference 'name' with the corresponding reference and other values. | |
void | forget () |
Empty the 'diffs' matrix. | |
void | addDiffPrefix (const string &prefix, int n) |
Add 'prefix' in front of the last 'n' difference names in 'diffs'. | |
void | printDiffs (PStream &out=pout, unsigned int indent=2, unsigned int tab_step=20, unsigned int max_width=120) |
Display the differences that were found. | |
int | nDiffs () |
Return the number of differences found. | |
void | setSaveDiffs (bool save_diffs, bool *save_diffs_backup=0) |
Set 'save_diffs' option. | |
Static Public Member Functions | |
static string | _classname_ () |
static OptionList & | _getOptionList_ () |
static RemoteMethodMap & | _getRemoteMethodMap_ () |
static Object * | _new_instance_for_typemap_ () |
static bool | _isa_ (const Object *o) |
static void | _static_initialize_ () |
static const PPath & | declaringFile () |
Public Attributes | |
real | absolute_tolerance |
real | relative_tolerance |
bool | save_diffs |
Static Public Attributes | |
static StaticInitializer | _static_initializer_ |
Static Protected Member Functions | |
static void | declareOptions (OptionList &ol) |
Declares this class' options. | |
Protected Attributes | |
TMat< string > | diffs |
Private Types | |
typedef Object | inherited |
Private Member Functions | |
void | build_ () |
This does the actual building. |
Definition at line 54 of file PLearnDiff.h.
typedef Object PLearn::PLearnDiff::inherited [private] |
Reimplemented from PLearn::Object.
Definition at line 59 of file PLearnDiff.h.
PLearn::PLearnDiff::PLearnDiff | ( | ) |
Default constructor.
Definition at line 50 of file PLearnDiff.cc.
References build_(), and forget().
: absolute_tolerance(ABSOLUTE_TOLERANCE), relative_tolerance(RELATIVE_TOLERANCE), save_diffs(true) { build_(); forget(); }
string PLearn::PLearnDiff::_classname_ | ( | ) | [static] |
Reimplemented from PLearn::Object.
Definition at line 62 of file PLearnDiff.cc.
OptionList & PLearn::PLearnDiff::_getOptionList_ | ( | ) | [static] |
Reimplemented from PLearn::Object.
Definition at line 62 of file PLearnDiff.cc.
RemoteMethodMap & PLearn::PLearnDiff::_getRemoteMethodMap_ | ( | ) | [static] |
Reimplemented from PLearn::Object.
Definition at line 62 of file PLearnDiff.cc.
Reimplemented from PLearn::Object.
Definition at line 62 of file PLearnDiff.cc.
Object * PLearn::PLearnDiff::_new_instance_for_typemap_ | ( | ) | [static] |
Reimplemented from PLearn::Object.
Definition at line 62 of file PLearnDiff.cc.
StaticInitializer PLearnDiff::_static_initializer_ & PLearn::PLearnDiff::_static_initialize_ | ( | ) | [static] |
Reimplemented from PLearn::Object.
Definition at line 62 of file PLearnDiff.cc.
void PLearn::PLearnDiff::addDiffPrefix | ( | const string & | prefix, |
int | n | ||
) |
Add 'prefix' in front of the last 'n' difference names in 'diffs'.
Definition at line 100 of file PLearnDiff.cc.
References diffs, j, PLearn::TMat< T >::length(), n, and PLASSERT.
Referenced by PLearn::addDiffPrefix().
{ PLASSERT( n >= 0 && n <= diffs.length() ); int l = diffs.length() - 1; for (int j = 0; j < n; j++) diffs(l - j, 0) = prefix + diffs(l - j, 0); }
void PLearn::PLearnDiff::build | ( | ) | [virtual] |
Post-constructor.
The normal implementation should call simply inherited::build(), then this class's build_(). This method should be callable again at later times, after modifying some option fields to change the "architecture" of the object.
Reimplemented from PLearn::Object.
Definition at line 91 of file PLearnDiff.cc.
References PLearn::Object::build(), and build_().
{ inherited::build(); build_(); }
void PLearn::PLearnDiff::build_ | ( | ) | [private] |
This does the actual building.
Reimplemented from PLearn::Object.
Definition at line 83 of file PLearnDiff.cc.
References diffs, PLearn::TMat< T >::length(), and PLearn::TMat< T >::resize().
Referenced by build(), and PLearnDiff().
string PLearn::PLearnDiff::classname | ( | ) | const [virtual] |
Reimplemented from PLearn::Object.
Definition at line 62 of file PLearnDiff.cc.
void PLearn::PLearnDiff::declareOptions | ( | OptionList & | ol | ) | [static, protected] |
Declares this class' options.
Reimplemented from PLearn::Object.
Definition at line 64 of file PLearnDiff.cc.
References absolute_tolerance, PLearn::OptionBase::buildoption, PLearn::declareOption(), PLearn::Object::declareOptions(), relative_tolerance, and save_diffs.
{ declareOption(ol, "absolute_tolerance", &PLearnDiff::absolute_tolerance, OptionBase::buildoption, "The absolute tolerance used when comparing real numbers less than 1."); declareOption(ol, "relative_tolerance", &PLearnDiff::relative_tolerance, OptionBase::buildoption, "The relative tolerance used when comparing real numbers and one is more than 1."); declareOption(ol, "save_diffs", &PLearnDiff::save_diffs, OptionBase::buildoption, "If set to 1, each call to 'diff' will save any difference found.\n" "Otherwise, differences will not be saved."); // Now call the parent class' declareOptions inherited::declareOptions(ol); }
static const PPath& PLearn::PLearnDiff::declaringFile | ( | ) | [inline, static] |
Reimplemented from PLearn::Object.
Definition at line 100 of file PLearnDiff.h.
{ return diffs.length(); }
PLearnDiff * PLearn::PLearnDiff::deepCopy | ( | CopiesMap & | copies | ) | const [virtual] |
Reimplemented from PLearn::Object.
Definition at line 62 of file PLearnDiff.cc.
int PLearn::PLearnDiff::diff | ( | const string & | refer, |
const string & | other, | ||
const string & | name | ||
) |
If 'refer' != 'other' return 1 and add the difference 'name' with the corresponding reference and other values.
Otherwise, do nothing and just return 0.
Definition at line 117 of file PLearnDiff.cc.
References PLearn::TMat< T >::appendRow(), diffs, PLearn::TVec< T >::resize(), and save_diffs.
Referenced by PLearn::diff().
{ static TVec<string> diff_row; diff_row.resize(3); if (refer != other) { if (save_diffs) { diff_row[0] = name; diff_row[1] = refer; diff_row[2] = other; diffs.appendRow(diff_row); } return 1; } else return 0; }
void PLearn::PLearnDiff::forget | ( | ) |
Empty the 'diffs' matrix.
Definition at line 142 of file PLearnDiff.cc.
References diffs, PLearn::TMat< T >::resize(), and PLearn::TMat< T >::width().
Referenced by PLearnDiff().
OptionList & PLearn::PLearnDiff::getOptionList | ( | ) | const [virtual] |
Reimplemented from PLearn::Object.
Definition at line 62 of file PLearnDiff.cc.
OptionMap & PLearn::PLearnDiff::getOptionMap | ( | ) | const [virtual] |
Reimplemented from PLearn::Object.
Definition at line 62 of file PLearnDiff.cc.
RemoteMethodMap & PLearn::PLearnDiff::getRemoteMethodMap | ( | ) | const [virtual] |
Reimplemented from PLearn::Object.
Definition at line 62 of file PLearnDiff.cc.
void PLearn::PLearnDiff::makeDeepCopyFromShallowCopy | ( | CopiesMap & | copies | ) | [virtual] |
Transforms a shallow copy into a deep copy.
Reimplemented from PLearn::Object.
Definition at line 168 of file PLearnDiff.cc.
References PLearn::Object::makeDeepCopyFromShallowCopy(), and PLERROR.
{ inherited::makeDeepCopyFromShallowCopy(copies); // ### Call deepCopyField on all "pointer-like" fields // ### that you wish to be deepCopied rather than // ### shallow-copied. // ### ex: // deepCopyField(trainvec, copies); // ### Remove this line when you have fully implemented this method. PLERROR("PLearnDiff::makeDeepCopyFromShallowCopy not fully (correctly) implemented yet!"); }
int PLearn::PLearnDiff::nDiffs | ( | ) | [inline] |
Return the number of differences found.
Definition at line 130 of file PLearnDiff.h.
References diffs, and PLearn::TMat< T >::length().
Referenced by printDiffs().
{ return diffs.length(); }
void PLearn::PLearnDiff::printDiffs | ( | PStream & | out = pout , |
unsigned int | indent = 2 , |
||
unsigned int | tab_step = 20 , |
||
unsigned int | max_width = 120 |
||
) |
Display the differences that were found.
'indent' specifies the number of whitespaces to add before each line. 'tab_step' specifies the canonical length of each element (name and values for each difference), in order to obtain a fancy output. 'max_width' specifies the maximum number of characters printed on each line (note that a long option value or name that exceeds this number will still be printed unchanged).
Definition at line 185 of file PLearnDiff.cc.
References diffs, PLearn::endl(), i, n, and nDiffs().
{ int n = nDiffs(); for (int i = 0; i < n; i++) { const string& diff_name = diffs(i, 0); const string& diff_val1 = diffs(i, 1); const string& diff_val2 = diffs(i, 2); unsigned int n_blanks_after_name = tab_step - (unsigned int)(diff_name.size()) % tab_step; unsigned int n_blanks_after_val1 = tab_step - (unsigned int)(diff_val1.size()) % tab_step; if (indent + diff_name.size() + n_blanks_after_name + 3 + diff_val1.size() + n_blanks_after_val1 + 7 + diff_val2.size() < max_width) { out << string(indent, ' ') << diff_name << string(n_blanks_after_name, ' ') << ": " << diff_val1 << string(n_blanks_after_val1, ' ') << " --> " << diff_val2 << endl; } else { out << string(indent, ' ') << diff_name << ":" << endl << diff_val1 << endl << " --> " << endl << diff_val2 << endl; } } }
Set 'save_diffs' option.
If 'save_diffs_backup' is provided, copy the old value of 'save_diffs' in it.
Definition at line 220 of file PLearnDiff.cc.
References save_diffs.
Referenced by PLearn::setSaveDiffs().
{ if (save_diffs_backup) *save_diffs_backup = this->save_diffs; this->save_diffs = save_diffs; }
Reimplemented from PLearn::Object.
Definition at line 100 of file PLearnDiff.h.
Definition at line 75 of file PLearnDiff.h.
Referenced by declareOptions(), and PLearn::get_absolute_tolerance().
TMat<string> PLearn::PLearnDiff::diffs [protected] |
Definition at line 67 of file PLearnDiff.h.
Referenced by addDiffPrefix(), build_(), diff(), forget(), nDiffs(), and printDiffs().
Definition at line 76 of file PLearnDiff.h.
Referenced by declareOptions(), and PLearn::get_relative_tolerance().
Definition at line 77 of file PLearnDiff.h.
Referenced by declareOptions(), diff(), and setSaveDiffs().