Example Code for CMetaFilterInfo
CMetaFilterInfo filterInfo; // one property filter entry
MetaFilterInfoVector propFilter; // property filter list
CMetaObject obj;
CMetaObjectVector objectList;
PrintHeader(23.02,
"Ok: get all Autos (by class loid, PID) w/ DesignDate = '1997-03-30'");
CLEARVECTOR(propFilter); filterInfo.Initialize();
filterInfo.Filter.SetPropertyID(3);
filterInfo.Filter.SetString(_TEXT("1997-03-30"));
filterInfo.SetComparisonOperator(EQUAL);
propFilter.push_back(filterInfo);
result = obj.GetClassObjectsByProperty(objectList, propFilter, NULLGUID, lClassID);
PrintHeader(23.03,
"Ok: get all Autos (by class GUID, PID) w/ BasePrice < 15480");
CLEARVECTOR(propFilter); filterInfo.Initialize();
filterInfo. Filter.SetPropertyID(2);
filterInfo. Filter.SetShort(15480);
filterInfo.SetComparisonOperator(LESS_THAN);
propFilter.push_back(filterInfo);
result = obj.GetClassObjectsByProperty(objectList, propFilter,
NULLGUID, lClassID);
// Composition showing AND binds tighter than OR. If the OR were //evaluated first, the result set would not contain the Avalon, //but since the AND is evaluated first, it does.
PrintHeader(23.20,
"Ok: get Autos w/ CarId = '1013abff'XBF OR Review = 'tbd'" \
" AND DesignDate >= '1997-08-01'");
CLEARVECTOR(propFilter); filterInfo.Initialize();
filterInfo.Filter.SetName(_TEXT("CarId"));
filterInfo.Filter.SetBinary(avalonId, 4);
filterInfo.SetComparisonOperator(EQUAL);
filterInfo.SetLogicalOperator(META_OR);
propFilter.push_back(filterInfo);
filterInfo.Initialize();
filterInfo.Filter.SetName(_TEXT("Review"));
filterInfo.Filter.SetString(_TEXT("tbd"));
filterInfo.SetComparisonOperator(EQUAL);
filterInfo.SetLogicalOperator(META_AND);
propFilter.push_back(filterInfo);
filterInfo.Initialize();
filterInfo.Filter.SetName(_TEXT("DesignDate"));
filterInfo.Filter.SetString(_TEXT("1997-08-01"));
filterInfo.SetComparisonOperator(GREATER_THAN_OR_EQUAL);
propFilter.push_back(filterInfo);
result = obj.GetClassObjectsByProperty(objectList, propFilter,
NULLGUID, lClassID);