#include <ZTBSpec.h>
| Canonical methods | |
| ZTBSpec () | |
| Constructs a spec that will match no tuple. | |
| ZTBSpec (const ZTBSpec &iOther) | |
| Copy-construct from iOther. | |
| ZTBSpec & | operator= (const ZTBSpec &iOther) | 
| Assign from iOther. | |
| ~ZTBSpec () | |
| Destructor. | |
| Constructors | |
| ZTBSpec (bool iAny) | |
| Construct a spec that matches any (iAny == true) or no tuple. | |
| ZTBSpec (const Criterion &iCriterion) | |
| Construct a spec which appropriately matches a single property of a tuple. | |
| ZTBSpec (const ZTuplePropName &iPropName, ERel iRel, const ZTupleValue &iTV) | |
| ZTBSpec (const ZTuplePropName &iPropName, ERel iRel, int iStrength, const ZTupleValue &iTV) | |
| ZTBSpec (const ZTuplePropName &iPropName, Comparator iComparator, const ZTupleValue &iTV) | |
| ZTBSpec (const CriterionSect &iCriterionSect) | |
| Directly construct a spec which checks an intersection of criteria. | |
| Conversion and assignment | |
| ZTBSpec (const ZTuple &iTuple) | |
| Construct from tuple-ized representation. | |
| ZTBSpec (const ZStreamR &iStreamR) | |
| Construct from serialized representation. | |
| ZTuple | AsTuple () const | 
| Return tuple-ized representation. | |
| void | ToStream (const ZStreamW &iStreamW) const | 
| Write serialized representation. | |
| Combining operators | |
| ZTBSpec | operator & (const ZTBSpec &iOther) const | 
| Return a ZTBSpec being the intersection of this and iOther. | |
| ZTBSpec & | operator &= (const ZTBSpec &iOther) | 
| Update this to be the intersection of this and iOther. | |
| ZTBSpec | operator| (const ZTBSpec &iOther) const | 
| Return a ZTBSpec being the union of this and iOther. | |
| ZTBSpec & | operator|= (const ZTBSpec &iOther) | 
| Update this to be the union of this and iOther. | |
| Pseudo constructors | |
| Each returns a ZTBSpec that will match tuples satisfying the desired constraint. They're basically more readable wrappers for the ZTBSpec constructor taking a property name, comparator and ZTupleValue. Because ZTupleValue has conversion constructors taking the various supported types we don't suffer combinatorial explosion. | |
| static ZTBSpec | sAny () | 
| Any tuple. | |
| static ZTBSpec | sNone () | 
| No tuple. | |
| static ZTBSpec | sHas (const ZTuplePropName &iPropName) | 
| Tuples which have a property iPropName. | |
| static ZTBSpec | sHas (const ZTuplePropName &iPropName, ZType iType) | 
| Tuples which have a property iPropName of type iType. | |
| static ZTBSpec | sLacks (const ZTuplePropName &iPropName) | 
| Tuples which do not have a property iPropName. | |
| static ZTBSpec | sLacks (const ZTuplePropName &iPropName, ZType iType) | 
| Tuples which do not have a property iPropName or it is not of type iType. | |
| static ZTBSpec | sEquals (const ZTuplePropName &iPropName, const ZTupleValue &iValue) | 
| Tuples whose property iPropName has the value iValue. | |
| static ZTBSpec | sNotEqual (const ZTuplePropName &iPropName, const ZTupleValue &iValue) | 
| Tuples whose property iPropName is not the value iValue. | |
| static ZTBSpec | sLess (const ZTuplePropName &iPropName, const ZTupleValue &iValue) | 
| Tuples whose property iPropName is less than the value iValue. | |
| static ZTBSpec | sLessEqual (const ZTuplePropName &iPropName, const ZTupleValue &iValue) | 
| Tuples whose property iPropName is less than or equal to the value iValue. | |
| static ZTBSpec | sGreater (const ZTuplePropName &iPropName, const ZTupleValue &iValue) | 
| Tuples whose property iPropName is greater than the value iValue. | |
| static ZTBSpec | sGreaterEqual (const ZTuplePropName &iPropName, const ZTupleValue &iValue) | 
| Tuples whose property iPropName is greater than or equal to the value iValue. | |
| static ZTBSpec | sStringContains (const ZTuplePropName &iPropName, const std::string &iString, int iStrength) | 
| Tuples whose string property iPropName contains iString. | |
| static ZTBSpec | sVectorContains (const ZTuplePropName &iPropName, const ZTupleValue &iValue) | 
| Tuples whose vector property iPropName contains a value matching iValue. | |
| static ZTBSpec | sRegex (const ZTuplePropName &iPropName, const std::string &iRegex, int iStrength) | 
| Tuples whose string property iPropName matches the regex iRegex. | |
| Public Types | |
| typedef std::vector< Criterion > | CriterionSect | 
| List of Criterion, all of which must match a tuple. | |
| typedef std::vector< CriterionSect > | CriterionUnion | 
| List of CriterionSect, one or more of which must match a tuple. | |
| enum | ERel | 
| Enum for designation of a relationship. | |
| Public Member Functions | |
| bool | Matches (const ZTuple &iTuple) const | 
| Return true if the spec matches iTuple. | |
| bool | IsAny () const | 
| Returns true if the spec will match any tuple. | |
| bool | IsNone () const | 
| Returns true if the spec will match no tuple. | |
| Classes | |
| class | Comparator | 
| Holds a <ZTBSpec::ERel, strength> pair.  More... | |
| class | Criterion | 
| Holds a <property name, ZTBSpec::Comparator, ZTupleValue> triple.  More... | |
A Criterion holds a property name, a comparator, and for binary comparators a value to be passed to it. The simplest comparators are Has and Lacks. They are unary, and simply check that the candidate tuple has, or lacks, a property with that name. All other comparators are binary, and check a candidate tuple's named property against a particular value.
The group documentation Tuplebase discusses in more detail how to construct ZTBSpecs from primitive values and comparators, and then to combine them using intersection (operator&) and union (operator|).
The underlying representation is a single ZTBSpec::CriterionUnion, which itself holds a list of ZTBSpec::CriterionSect, which holds a list of Criterion; it's the union of intersections of criteria.
A ZTBSpec::CriterionSect matches a tuple if all of its Criterion match the tuple, so if its list is empty then it matches any tuple.
A ZTBSpec::CriterionUnion matches a tuple if at least one of its ZTBSpec::CriterionSect matches the tuple. So a ZTBSpec::CriterionUnion containing no ZTBSpec::CriterionSect will match no tuples. A ZTBSpec::CriterionUnion containing a single ZTBSpec::CriterionSect which itself contains no Criterion will match any tuple.
The default ZTBSpec constructor creates a 'none' ZTBSpec, as does ZTBSpec::sNone, and ZTBSpec(bool iAny) with iAny = false.
An 'any' ZTBSpec can be constructed by calling ZTBSpec::sAny, or ZTBSpec(bool iAny) with iAny = true.
Some useful identities:
| ZTBSpec::ZTBSpec | ( | const Criterion & | iCriterion | ) |  [explicit] | 
Construct a spec which appropriately matches a single property of a tuple.
Creates a spec which returns true from ZTBSpec::Matches when that candidate tuple's satisfies Criterion iCriterion.
| ZTBSpec::ZTBSpec | ( | const ZTuplePropName & | iPropName, | |
| ERel | iRel, | |||
| const ZTupleValue & | iTV | |||
| ) | 
Creates a spec which returns true from ZTBSpec::Matches when the candidate tuple's property named iPropName satisfies relationship iRel with respect to iTV.
| ZTBSpec::ZTBSpec | ( | const ZTuplePropName & | iPropName, | |
| ERel | iRel, | |||
| int | iStrength, | |||
| const ZTupleValue & | iTV | |||
| ) | 
Creates a spec which returns true from ZTBSpec::Matches when the candidate tuple's property named iPropName satisfies relationship iRel with strength iStrength with respect to iTV.
| ZTBSpec::ZTBSpec | ( | const ZTuplePropName & | iPropName, | |
| Comparator | iComparator, | |||
| const ZTupleValue & | iTV | |||
| ) | 
Creates a spec which returns true from ZTBSpec::Matches when the candidate tuple's property named iPropName satisfies Comparator iComparator with respect to iTV.
| ZTBSpec::ZTBSpec | ( | const CriterionSect & | iCriterionSect | ) |  [explicit] | 
Directly construct a spec which checks an intersection of criteria.
Creates a spec which returns true from ZTBSpec::Matches when that candidate tuple's satisfies CriterionSect iCriterionSect.
 1.4.7
 1.4.7