All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Member Functions | Static Public Attributes | Protected Member Functions
DinverCore::AbstractCondition Class Reference

Abstract class to define an arbitrary condition between parameters. More...

#include <AbstractCondition.h>

Inheritance diagram for DinverCore::AbstractCondition:
QGpCoreTools::XMLClass DinverCore::SimpleCondition DinverDCCore::PoissonCondition

List of all members.

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
Parameterparameter (int index)
const Parameterparameter (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

Detailed Description

Abstract class to define an arbitrary condition between parameters.

Implement function getLimits() to define your own type of condition


Member Function Documentation

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;}

Return a number that uniquely identify this condition.

See also:
internalChecksum()

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]
virtual void DinverCore::AbstractCondition::humanInfo ( ) const [pure virtual]

Referenced by DinverCore::Parameter::addCondition().

{return _paramList.indexOf(p);}
virtual uint DinverCore::AbstractCondition::internalChecksum ( ) const [protected, pure virtual]
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]
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;}

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:

  • An integer: id number of a property
  • A XMLClass * : a child of this object identified by tag
  • Default constructor: error, unknow child or property

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.

{
  TRACE;
  Q_UNUSED(attributes)
  Q_UNUSED(context);
  if(tag=="param" )
    return XMLMember(0);
  else
    return XMLMember(XMLMember::Unknown);
}

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]

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());
  }
}

Member Data Documentation

const QString DinverCore::AbstractCondition::xmlAbstractConditionTag = "AbstractCondition" [static]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines