Abstract class to define an arbitrary condition between parameters. More...
#include <AbstractCondition.h>
Public Member Functions | |
virtual bool | adjustRanges () |
uint | checksum () const |
virtual void | getLimits (int parameterIndex, double &min, double &max) const =0 |
virtual void | humanInfo () const =0 |
int | indexOf (Parameter *p) const |
virtual bool | operator== (const AbstractCondition &o) const |
virtual const QString & | xml_tagName () const |
Static Public Attributes | |
static const QString | xmlAbstractConditionTag = "AbstractCondition" |
Protected Member Functions | |
void | addParameter (Parameter *p) |
int | count () const |
virtual uint | internalChecksum () const =0 |
Parameter & | parameter (int index) |
const Parameter & | parameter (int index) const |
QList< Parameter * > & | parameterList () |
virtual XMLMember | xml_member (XML_MEMBER_ARGS) |
virtual bool | xml_setProperty (XML_SETPROPERTY_ARGS) |
virtual void | xml_writeProperties (XML_WRITEPROPERTIES_ARGS) const |
Abstract class to define an arbitrary condition between parameters.
Implement function getLimits() to define your own type of condition
void DinverCore::AbstractCondition::addParameter | ( | Parameter * | p | ) | [inline, protected] |
Referenced by DinverCore::SimpleCondition::SimpleCondition().
{_paramList.append(p);}
bool DinverCore::AbstractCondition::adjustRanges | ( | ) | [inline, virtual] |
Return true if original ranges of parameter are touched. Ranges can be reduced, never enlarged
Reimplemented in DinverCore::SimpleCondition.
Referenced by DinverCore::RealSpace::adjustRanges().
{return false;}
uint DinverCore::AbstractCondition::checksum | ( | ) | const |
Return a number that uniquely identify this condition.
References internalChecksum(), DinverCore::qHash(), and TRACE.
{ TRACE; uint cs=0; for(QList<Parameter *>::const_iterator it=_paramList.begin(); it!=_paramList.end(); it++ ) { cs += qHash((*it)->name()); } cs+=internalChecksum(); return cs; }
int DinverCore::AbstractCondition::count | ( | ) | const [inline, protected] |
{return _paramList.count();}
virtual void DinverCore::AbstractCondition::getLimits | ( | int | parameterIndex, |
double & | min, | ||
double & | max | ||
) | const [pure virtual] |
Implemented in DinverDCCore::PoissonCondition, and DinverCore::SimpleCondition.
Referenced by DinverCore::ParamCondition::getLimits().
virtual void DinverCore::AbstractCondition::humanInfo | ( | ) | const [pure virtual] |
Implemented in DinverDCCore::PoissonCondition, and DinverCore::SimpleCondition.
int DinverCore::AbstractCondition::indexOf | ( | Parameter * | p | ) | const [inline] |
Referenced by DinverCore::Parameter::addCondition().
{return _paramList.indexOf(p);}
virtual uint DinverCore::AbstractCondition::internalChecksum | ( | ) | const [protected, pure virtual] |
Implemented in DinverDCCore::PoissonCondition, and DinverCore::SimpleCondition.
Referenced by checksum().
bool DinverCore::AbstractCondition::operator== | ( | const AbstractCondition & | o | ) | const [virtual] |
Reimplemented in DinverDCCore::PoissonCondition, and DinverCore::SimpleCondition.
References TRACE.
{ TRACE; return _paramList==o._paramList; }
Parameter& DinverCore::AbstractCondition::parameter | ( | int | index | ) | [inline, protected] |
Referenced by DinverCore::SimpleCondition::adjustRanges(), DinverCore::SimpleCondition::getLimits(), and DinverCore::SimpleCondition::humanInfo().
{return *_paramList.at(index);}
const Parameter& DinverCore::AbstractCondition::parameter | ( | int | index | ) | const [inline, protected] |
{return *_paramList.at(index);}
QList<Parameter *>& DinverCore::AbstractCondition::parameterList | ( | ) | [inline, protected] |
Referenced by DinverDCCore::PoissonCondition::PoissonCondition().
{return _paramList;}
XMLMember DinverCore::AbstractCondition::xml_member | ( | XML_MEMBER_ARGS | ) | [protected, virtual] |
Re-implement this function to offer XML restore (children and properties) support to your class.
From tag and map (with contains the attibute value) return a unique identifier under the format of a XMLMember. XMLMember is initialized with 3 types of contructors:
Map of attributes can be inspected in this way (can be achived also in xml_setProperty()):
static const QString tmp("childrenName"); XMLRestoreAttributeIterator it=map.find(tmp); if(it!=map.end()) { // found attribute "childrenName" }
If the map of attributes is not used:
Q_UNUSED(attributes); if(tag=="x1") return XMLMember(0); else if(tag=="y1") return XMLMember(1); else if(tag=="x2") return XMLMember(2); else if(tag=="y2") return XMLMember(3); else return XMLMember(XMLMember::Unknown);
Arithmetic operations + and - apply to XMLMember to avoid confusion of property id numbers between inherited objects. Offset 3 corresponds to the number of properties defined in this object.
if(tag=="anInteger") return XMLMember(0); else if(tag=="aString") return XMLMember(1); else if(tag=="aDouble") return XMLMember(2); return AbstractLine::xml_member(tag, attributes, context)+3;
For the arguments of this function use Macro XML_MEMBER_ARGS.
Reimplemented from QGpCoreTools::XMLClass.
Reimplemented in DinverCore::SimpleCondition.
References TRACE.
bool DinverCore::AbstractCondition::xml_setProperty | ( | XML_SETPROPERTY_ARGS | ) | [protected, virtual] |
Re-implement this function to offer XML restore properties support to your class.
From memberID set the corresponding property with value content. The map of attributes is given as a supplementary information (not useful in all cases).
For a general case:
Q_UNUSED(attributes); double val=content.toDouble(); switch (memberID) { case 0: _x1=val; return true; case 1: _y1=val; return true; case 2: _x2=val; return true; case 3: _y2=val; return true; default: return false; }
For classes inheriting other classes (see also xml_member())
switch (memberID) { case 0: _anInteger=content.toString(); return true; case 1: _aString=content.toInt(); return true; case 2: _aDouble=content.toDouble(); return true; default: return AbstractLine::xml_setProperty(memberID-3, map, content);
For the arguments of this function use Macro XML_SETPROPERTY_ARGS.
Reimplemented from QGpCoreTools::XMLClass.
Reimplemented in DinverCore::SimpleCondition.
References TRACE.
{ TRACE; Q_UNUSED(tag) Q_UNUSED(attributes) Q_UNUSED(context); switch (memberID) { case 0: _paramNameList.append(content.toString()); return true; default: return false; } }
virtual const QString& DinverCore::AbstractCondition::xml_tagName | ( | ) | const [inline, virtual] |
Implements QGpCoreTools::XMLClass.
Reimplemented in DinverDCCore::PoissonCondition, and DinverCore::SimpleCondition.
Referenced by DinverCore::SimpleCondition::operator==(), and DinverDCCore::PoissonCondition::operator==().
{return xmlAbstractConditionTag;}
void DinverCore::AbstractCondition::xml_writeProperties | ( | XML_WRITEPROPERTIES_ARGS | ) | const [protected, virtual] |
Reimplemented from QGpCoreTools::XMLClass.
Reimplemented in DinverCore::SimpleCondition.
References TRACE, and QGpCoreTools::XMLClass::writeProperty().
{ TRACE; Q_UNUSED(context); for(QList<Parameter *>::const_iterator it=_paramList.begin(); it!=_paramList.end(); it++ ) { writeProperty(s, "param", (*it)->name()); } }
const QString DinverCore::AbstractCondition::xmlAbstractConditionTag = "AbstractCondition" [static] |