From: <ag...@us...> - 2010-04-09 17:35:41
|
Revision: 1279 http://zoolib.svn.sourceforge.net/zoolib/?rev=1279&view=rev Author: agreen Date: 2010-04-09 17:35:34 +0000 (Fri, 09 Apr 2010) Log Message: ----------- Move operators and pseudo constructors into their associated relation expr's file. Add ZQL_RelOps which pulls in a bunch of headers, making the suite of relational operators available. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/tql/ZTQLTest.cpp trunk/zoolib/source/cxx/more/zoolib/tql/ZTQL_Optimize.cpp trunk/zoolib/source/cxx/more/zoolib/tql/ZUtil_TQLConvert.cpp trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel.cpp trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel.h trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Intersect.cpp trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Intersect.h trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Join.cpp trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Join.h trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Union.cpp trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Union.h trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Project.cpp trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Project.h trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Rename.cpp trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Rename.h trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Restrict.h trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Restrict_T.h trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Select.cpp trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Select.h trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Util_Strim_Query.cpp trunk/zoolib/source/cxx/zoolib/ZExpr_Logic_ValCondition_T.h trunk/zoolib/source/cxx/zoolib/ZValCondition_T.h Added Paths: ----------- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_RelOps.cpp trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_RelOps.h Modified: trunk/zoolib/source/cxx/more/zoolib/tql/ZTQLTest.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/tql/ZTQLTest.cpp 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/tql/ZTQLTest.cpp 2010-04-09 17:35:34 UTC (rev 1279) @@ -1,11 +1,11 @@ #include "zoolib/tql/ZTQL_Optimize.h" -#include "zoolib/zql/ZQL_Expr_Rel_Unary_Restrict.h" -#include "zoolib/zql/ZQL_Expr_Rel_Unary_Select.h" +//#include "zoolib/zql/ZQL_Expr_Rel_Unary_Restrict.h" +//#include "zoolib/zql/ZQL_Expr_Rel_Unary_Select.h" #include "zoolib/zql/ZQL_Util_Strim_Query.h" #include "zoolib/tql/ZUtil_TQLConvert.h" -#include "zoolib/ZExpr_Logic_ValCondition.h" +//#include "zoolib/ZExpr_Logic_ValCondition.h" #include "zoolib/ZUtil_Strim_Tuple.h" @@ -33,6 +33,8 @@ #include "zoolib/ZYadSeq_Expr_Logic.h" #include "zoolib/zqe/ZQE_Result_Any.h" +#include "zoolib/zql/ZQL_RelOps.h" + NAMESPACE_ZOOLIB_USING using namespace ZQL; @@ -41,19 +43,19 @@ using std::string; typedef ZRef<ZExpr_Logic> Spec; -typedef ZRef<Expr_Rel> Query; +typedef Rel Query; typedef ZMap_Expr Map; typedef ZRelHead RelHead; typedef ZVal_Expr Val; typedef ZValCondition Condition; -ZRef<Expr_Rel> sAll(const ZRelHead& iRelHead) +Query sAll(const ZRelHead& iRelHead) { return ZValBase::sConcrete(iRelHead); } -ZRef<Expr_Rel> sAllID(const std::string& iIDName) +Query sAllID(const std::string& iIDName) { return ZValBase::sConcrete(ZRelHead(true) | iIDName); } -ZRef<Expr_Rel> sAllID(const std::string& iIDName, const ZRelHead& iRelHead) +Query sAllID(const std::string& iIDName, const ZRelHead& iRelHead) { return ZValBase::sConcrete(iRelHead | iIDName); } // ================================================================================================= @@ -81,16 +83,14 @@ static Query J(const Query& iQuery1, const Query& iQuery2) { return sJoin(iQuery1, iQuery2); } -//static Query P(const string& iPropName0, const Query& iQuery) -// { return sProject(iQuery, iPropName0); } -static Query P(const RelHead& iRelHead, const Query& iQuery) - { return sProject(iRelHead, iQuery); } +static Query P(const Query& iQuery, const RelHead& iRelHead) + { return sProject(iQuery, iRelHead); } -static Query R(const string& iOldPropName, const string& iNewPropName, const Query& iQuery) - { return sRename(iOldPropName, iNewPropName, iQuery); } +static Query R(const Query& iQuery, const string& iNewPropName, const string& iOldPropName) + { return sRename(iQuery, iNewPropName, iOldPropName); } -static Query S(const Spec& iSpec, const Query& iQuery) - { return sSelect(iSpec, iQuery); } +static Query S(const Query& iQuery, const Spec& iSpec) + { return sSelect(iQuery, iSpec); } static Query U(const Query& iQuery1, const Query& iQuery2) { return sUnion(iQuery1, iQuery2); } @@ -152,21 +152,20 @@ | CName("pass") == CName("unam") ); */ - return new ZExpr_Logic_ValCondition(theSpec); + return true & theSpec; } static Query badPassword() { return A("authorID") & sBadAuthors(); - return P(RelHead("authorID"), - A("authorID") & sBadAuthors()); + return P(A("authorID") & sBadAuthors(), RelHead("authorID")); } static Query badPassword2() { // return (A("authorID") & sBadAuthors()).Project("authorID"); - return sProject(string("authorID"), A("authorID") & sBadAuthors()); + return sProject(A("authorID") & sBadAuthors(), string("authorID")); } // S(A(@authorID), @Object == "author" & (@fnam == @pass | @lnam == @pass | @unam == @pass)); @@ -193,7 +192,7 @@ { if (iIgnore.Contains(*i)) continue; - iQuery = sRename(*i, iPrefix + *i, iQuery); + iQuery = sRename(iQuery, iPrefix + *i, *i); } return iQuery; } @@ -212,7 +211,7 @@ { RelHead theRelHead = iQuery->GetRelHead(); if (theRelHead.Contains(iTName)) - return sProject(theRelHead - iTName, iQuery); + return sProject(iQuery, theRelHead - iTName); return iQuery; } @@ -253,16 +252,16 @@ static Query sQueryNoHead() { - Query allViews = sRename("$ID$", "from", sAllViewsNoHead()); - Query allNotes = sRename("$ID$", "to", sAllNotesNoHead()); + Query allViews = sRename(sAllViewsNoHead(), "from", "$ID$"); + Query allNotes = sRename(sAllNotesNoHead(), "to", "$ID$"); Query allContains = sAllContains(); return allViews * (allContains * allNotes); } static Query sQuery() { - Query allViews = sRename("$ID$", "from", sAllViews()); - Query allNotes = sRename("$ID$", "to", sAllNotes()); + Query allViews = sRename(sAllViews(), "from", "$ID$"); + Query allNotes = sRename(sAllNotes(), "to", "$ID$"); Query allContains = sAllContains(); return sPrefix("view.", RelHead("from"), allViews) @@ -283,7 +282,7 @@ // % // ^ - return sRename("$ID$", "from", sAllViews()) * sRename("to", "$ID$", sAllContains()) * sRename("titl", "noteTitle", sAllNotes()); + return sRename(sAllViews(), "from", "$ID$") * sRename(sAllContains(), "$ID$", "to") * sRename(sAllNotes(), "noteTitle", "titl"); } static void sDumpQuery(const ZStrimW& s, Query iQuery) @@ -363,7 +362,7 @@ // ZExpr_ValCondition theSpec1 = CVal() > CConst(10); // Spec theSpec = Spec(false) | (CVal() > CConst(10)); // Spec theSpec = (); - Spec theSpec = new ZExpr_Logic_ValCondition(CTrail("inner/field") < CConst(10)); + Spec theSpec = true & CTrail("inner/field") < CConst(10); thePhys = thePhys & theSpec; Util_Strim_Query::sToStrim(thePhys, s); @@ -394,7 +393,7 @@ return; Spec theSpec = CVar("TestVar1") == CConst(1) | CVar("TestVar2") == CConst(2); - Query theExp = sSelect(theSpec, sAll(ZRelHead(true))); + Query theExp = sSelect(sAll(ZRelHead(true)), theSpec); sDumpQuery(s, theExp); @@ -404,12 +403,12 @@ theMap.Set("name", ZMap_Expr().Set("last", string("fred"))); // Spec theSpec = CTrail("name/last") < CConst("fred1"); - if (sMatches(new ZExpr_Logic_ValCondition(CTrail("name/last") < CConst("fred1")), theMap)) + if (sMatches(true & (CTrail("name/last") < CConst("fred1")), theMap)) s << "Matches\n"; else s << "Doesn't\n"; - if (sMatches(new ZExpr_Logic_ValCondition(CTrail("name/last") >= CConst("fred1")), theMap)) + if (sMatches(true & (CTrail("name/last") >= CConst("fred1")), theMap)) s << "Matches\n"; else s << "Doesn't\n"; Modified: trunk/zoolib/source/cxx/more/zoolib/tql/ZTQL_Optimize.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/tql/ZTQL_Optimize.cpp 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/tql/ZTQL_Optimize.cpp 2010-04-09 17:35:34 UTC (rev 1279) @@ -176,6 +176,10 @@ } // anonymous namespace +// ================================================================================================= +#pragma mark - +#pragma mark * ZQL::sOptimize + namespace ZQL { ZRef<Expr_Rel> sOptimize(ZRef<Expr_Rel> iRep) Modified: trunk/zoolib/source/cxx/more/zoolib/tql/ZUtil_TQLConvert.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/tql/ZUtil_TQLConvert.cpp 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/tql/ZUtil_TQLConvert.cpp 2010-04-09 17:35:34 UTC (rev 1279) @@ -19,8 +19,7 @@ ------------------------------------------------------------------------------------------------- */ #include "zoolib/tql/ZUtil_TQLConvert.h" -#include "zoolib/zql/ZQL_Expr_Rel_Unary_Select.h" -#include "zoolib/ZExpr_Logic_ValCondition.h" +#include "zoolib/zql/ZQL_RelOps.h" #include "zoolib/valbase/ZValBase.h" NAMESPACE_ZOOLIB_BEGIN @@ -137,19 +136,19 @@ Query theQ; if (iName) { - theQ = sSelect(*iFilter, sAll(filterRelHead | *iName)); + theQ = sSelect(sAll(filterRelHead | *iName), *iFilter); if (iVerbose) - theQ = sProject(RelHead(*iName) | "$$All_Name$$", theQ); + theQ = sProject(theQ, RelHead(*iName) | "$$All_Name$$"); else - theQ = sProject(*iName, theQ); + theQ = sProject(theQ, *iName); } else { - theQ = sSelect(*iFilter, sAllID(sIDName, filterRelHead)); + theQ = sSelect(sAllID(sIDName, filterRelHead), *iFilter); if (iVerbose) - theQ = sProject(RelHead(sIDName) | "$$All$$", theQ); + theQ = sProject(theQ, RelHead(sIDName) | "$$All$$"); else - theQ = sProject(sIDName, theQ); + theQ = sProject(theQ, sIDName); } return theQ; } @@ -211,14 +210,14 @@ if (iName) { if (iVerbose) - return sProject(RelHead(*iName) | "$$ComboReturn_Name$$", outerQ); + return sProject(outerQ, RelHead(*iName) | "$$ComboReturn_Name$$"); else return outerQ;//.Project(*iName); } else { if (iVerbose) - return sProject(RelHead(sIDName) | "$$ComboReturn$$", outerQ); + return sProject(outerQ, RelHead(sIDName) | "$$ComboReturn$$"); else return outerQ;//.Project(sIDName); } @@ -250,7 +249,7 @@ Query theQ = spConvert(sourceNode, &sourcePropName, nullptr, iVerbose); // Rename it to sIDName. - theQ = sRename(sourcePropName, sIDName, theQ); + theQ = sRename(theQ, sIDName, sourcePropName); // Get the referenced tuples and filter them if (iFilter) @@ -258,19 +257,19 @@ const RelHead filterRelHead = sGetRelHead(*iFilter); if (iName) { - theQ = sJoin(theQ, sSelect(*iFilter, sAllID(sIDName, filterRelHead | *iName))); + theQ = sJoin(theQ, sSelect(sAllID(sIDName, filterRelHead | *iName), *iFilter)); if (iVerbose) - theQ = sProject(RelHead(*iName) | "$$FromSource_Name_Filter$$", theQ); + theQ = sProject(theQ, RelHead(*iName) | "$$FromSource_Name_Filter$$"); else - theQ = sProject(*iName, theQ); + theQ = sProject(theQ, *iName); } else { - theQ = sJoin(theQ, sSelect(*iFilter, sAllID(sIDName, filterRelHead))); + theQ = sJoin(theQ, sSelect(sAllID(sIDName, filterRelHead), *iFilter)); if (iVerbose) - theQ = sProject(RelHead(sIDName) | "$$FromSource_Filter$$", theQ); + theQ = sProject(theQ, RelHead(sIDName) | "$$FromSource_Filter$$"); else - theQ = sProject(sIDName, theQ); + theQ = sProject(theQ, sIDName); } } else @@ -279,15 +278,15 @@ { theQ = sJoin(theQ, sAllID(sIDName, *iName)); if (iVerbose) - theQ = sProject(RelHead(*iName) | "$$FromSource_Name$$", theQ); + theQ = sProject(theQ, RelHead(*iName) | "$$FromSource_Name$$"); else - theQ = sProject(*iName, theQ); + theQ = sProject(theQ, *iName); } else { // Do nothing -- already have the IDs. if (iVerbose) - theQ = sProject("$$FromSource$$", theQ); + theQ = sProject(theQ, "$$FromSource$$"); } } return theQ; @@ -302,7 +301,7 @@ Query theQ = spConvert(sourceNode, nullptr, nullptr, iVerbose); // Renamed to thePropName; - theQ = sRename(sIDName, thePropName, theQ); + theQ = sRename(theQ, thePropName, sIDName); // Get tuples whose property 'thePropName' match the IDs and filter them if (iFilter) @@ -311,22 +310,22 @@ if (iName) { theQ = sJoin(theQ, sAllID(sIDName, filterRelHead | *iName | thePropName)); - theQ = sProject(filterRelHead | *iName, theQ); - theQ = sSelect(*iFilter, theQ); + theQ = sProject(theQ, filterRelHead | *iName); + theQ = sSelect(theQ, *iFilter); if (iVerbose) - theQ = sProject(RelHead(*iName) | "$$Property_Name_Filter$$", theQ); + theQ = sProject(theQ, RelHead(*iName) | "$$Property_Name_Filter$$"); else - theQ = sProject(*iName, theQ); + theQ = sProject(theQ, *iName); } else { theQ = sJoin(theQ, sAllID(sIDName, filterRelHead | thePropName)); - theQ = sProject(filterRelHead, theQ); - theQ = sSelect(*iFilter, theQ); + theQ = sProject(theQ, filterRelHead); + theQ = sSelect(theQ, *iFilter); if (iVerbose) - theQ = sProject(RelHead(sIDName) | "$$Property_Filter$$", theQ); + theQ = sProject(theQ, RelHead(sIDName) | "$$Property_Filter$$"); else - theQ = sProject(sIDName, theQ); + theQ = sProject(theQ, sIDName); } } else @@ -335,17 +334,17 @@ { theQ = sJoin(theQ, sAllID(sIDName, RelHead(*iName) | thePropName)); if (iVerbose) - theQ = sProject(RelHead(*iName) | "$$Property_Name", theQ); + theQ = sProject(theQ, RelHead(*iName) | "$$Property_Name"); else - theQ = sProject(*iName, theQ); + theQ = sProject(theQ, *iName); } else { theQ = sJoin(theQ, sAllID(sIDName, thePropName)); if (iVerbose) - theQ = sProject(RelHead(sIDName) | "$$Property", theQ); + theQ = sProject(theQ, RelHead(sIDName) | "$$Property"); else - theQ = sProject(sIDName, theQ); + theQ = sProject(theQ, sIDName); } } return theQ; Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel.cpp 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel.cpp 2010-04-09 17:35:34 UTC (rev 1279) @@ -19,14 +19,7 @@ ------------------------------------------------------------------------------------------------- */ #include "zoolib/zql/ZQL_Expr_Rel.h" -#include "zoolib/zql/ZQL_Expr_Rel_Binary_Intersect.h" -#include "zoolib/zql/ZQL_Expr_Rel_Binary_Join.h" -#include "zoolib/zql/ZQL_Expr_Rel_Binary_Union.h" -#include "zoolib/zql/ZQL_Expr_Rel_Unary_Project.h" -#include "zoolib/zql/ZQL_Expr_Rel_Unary_Rename.h" -using std::string; - NAMESPACE_ZOOLIB_BEGIN namespace ZQL { @@ -60,40 +53,5 @@ void Visitor_Expr_Rel::Visit_Expr_Rel(ZRef<Expr_Rel> iRep) { ZVisitor_Expr::Visit_Expr(iRep); } -// ================================================================================================= -#pragma mark - -#pragma mark * Relational operators - -ZRef<Expr_Rel> sIntersect( - const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS) - { return new Expr_Rel_Binary_Intersect(iLHS, iRHS); } - -ZRef<Expr_Rel> sJoin( - const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS) - { return new Expr_Rel_Binary_Join(iLHS, iRHS); } - -ZRef<Expr_Rel> sProject(const ZRelHead& iRelHead, const ZRef<Expr_Rel>& iExpr) - { return new Expr_Rel_Unary_Project(iExpr, iRelHead); } - -ZRef<Expr_Rel> sRename(const string& iOldPropName, const string& iNewPropName, - const ZRef<Expr_Rel>& iExpr) - { return new Expr_Rel_Unary_Rename(iExpr, iOldPropName, iNewPropName); } - -ZRef<Expr_Rel> sUnion( - const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS) - { return new Expr_Rel_Binary_Union(iLHS, iRHS); } - -ZRef<Expr_Rel> operator&( - const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS) - { return new Expr_Rel_Binary_Intersect(iLHS, iRHS); } - -ZRef<Expr_Rel> operator*( - const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS) - { return new Expr_Rel_Binary_Join(iLHS, iRHS); } - -ZRef<Expr_Rel> operator|( - const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS) - { return new Expr_Rel_Binary_Union(iLHS, iRHS); } - } // namespace ZQL NAMESPACE_ZOOLIB_END Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel.h 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel.h 2010-04-09 17:35:34 UTC (rev 1279) @@ -63,34 +63,11 @@ // ================================================================================================= #pragma mark - -#pragma mark * Relational operators +#pragma mark * Rel -ZRef<Expr_Rel> sIntersect( - const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS); +// A useful typedef. +typedef ZRef<Expr_Rel> Rel; -ZRef<Expr_Rel> sJoin( - const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS); - -ZRef<Expr_Rel> sProject(const ZRelHead& iRelHead, const ZRef<Expr_Rel>& iExpr); - -ZRef<Expr_Rel> sRename(const std::string& iOldPropName, const std::string& iNewPropName, - const ZRef<Expr_Rel>& iExpr); - -ZRef<Expr_Rel> sUnion( - const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS); - -ZRef<Expr_Rel> operator&( - const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS); - -ZRef<Expr_Rel> operator&( - const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS); - -ZRef<Expr_Rel> operator*( - const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS); - -ZRef<Expr_Rel> operator|( - const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS); - } // namespace ZQL NAMESPACE_ZOOLIB_END Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Intersect.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Intersect.cpp 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Intersect.cpp 2010-04-09 17:35:34 UTC (rev 1279) @@ -67,5 +67,17 @@ ZRef<Expr_Rel_Binary_Intersect> iRep) { Visitor_Expr_Rel_Binary::Visit_Expr_Rel_Binary(iRep); } +// ================================================================================================= +#pragma mark - +#pragma mark * Relational operators + +ZRef<Expr_Rel_Binary_Intersect> sIntersect( + const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS) + { return new Expr_Rel_Binary_Intersect(iLHS, iRHS); } + +ZRef<Expr_Rel_Binary_Intersect> operator&( + const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS) + { return new Expr_Rel_Binary_Intersect(iLHS, iRHS); } + } // namespace ZQL NAMESPACE_ZOOLIB_END Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Intersect.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Intersect.h 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Intersect.h 2010-04-09 17:35:34 UTC (rev 1279) @@ -64,6 +64,16 @@ ZRef<Expr_Rel_Binary_Intersect> iRep); }; +// ================================================================================================= +#pragma mark - +#pragma mark * Relational operators + +ZRef<Expr_Rel_Binary_Intersect> sIntersect( + const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS); + +ZRef<Expr_Rel_Binary_Intersect> operator&( + const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS); + } // namespace ZQL NAMESPACE_ZOOLIB_END Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Join.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Join.cpp 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Join.cpp 2010-04-09 17:35:34 UTC (rev 1279) @@ -70,5 +70,17 @@ ZRef<Expr_Rel_Binary_Join> iRep) { Visitor_Expr_Rel_Binary::Visit_Expr_Rel_Binary(iRep); } +// ================================================================================================= +#pragma mark - +#pragma mark * Relational operators + +ZRef<Expr_Rel_Binary_Join> sJoin( + const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS) + { return new Expr_Rel_Binary_Join(iLHS, iRHS); } + +ZRef<Expr_Rel_Binary_Join> operator*( + const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS) + { return new Expr_Rel_Binary_Join(iLHS, iRHS); } + } // namespace ZQL NAMESPACE_ZOOLIB_END Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Join.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Join.h 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Join.h 2010-04-09 17:35:34 UTC (rev 1279) @@ -63,6 +63,16 @@ virtual void Visit_Expr_Rel_Binary_Join(ZRef<Expr_Rel_Binary_Join> iRep); }; +// ================================================================================================= +#pragma mark - +#pragma mark * Relational operators + +ZRef<Expr_Rel_Binary_Join> sJoin( + const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS); + +ZRef<Expr_Rel_Binary_Join> operator*( + const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS); + } // namespace ZQL NAMESPACE_ZOOLIB_END Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Union.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Union.cpp 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Union.cpp 2010-04-09 17:35:34 UTC (rev 1279) @@ -70,5 +70,17 @@ ZRef<Expr_Rel_Binary_Union> iRep) { Visitor_Expr_Rel_Binary::Visit_Expr_Rel_Binary(iRep); } +// ================================================================================================= +#pragma mark - +#pragma mark * Relational operators + +ZRef<Expr_Rel_Binary_Union> sUnion( + const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS) + { return new Expr_Rel_Binary_Union(iLHS, iRHS); } + +ZRef<Expr_Rel_Binary_Union> operator|( + const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS) + { return new Expr_Rel_Binary_Union(iLHS, iRHS); } + } // namespace ZQL NAMESPACE_ZOOLIB_END Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Union.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Union.h 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Binary_Union.h 2010-04-09 17:35:34 UTC (rev 1279) @@ -63,6 +63,16 @@ virtual void Visit_Expr_Rel_Binary_Union(ZRef<Expr_Rel_Binary_Union> iRep); }; +// ================================================================================================= +#pragma mark - +#pragma mark * Relational operators + +ZRef<Expr_Rel_Binary_Union> sUnion( + const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS); + +ZRef<Expr_Rel_Binary_Union> operator|( + const ZRef<Expr_Rel>& iLHS, const ZRef<Expr_Rel>& iRHS); + } // namespace ZQL NAMESPACE_ZOOLIB_END Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Project.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Project.cpp 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Project.cpp 2010-04-09 17:35:34 UTC (rev 1279) @@ -74,5 +74,12 @@ ZRef<Expr_Rel_Unary_Project> iRep) { Visitor_Expr_Rel_Unary::Visit_Expr_Rel_Unary(iRep); } +// ================================================================================================= +#pragma mark - +#pragma mark * Relational operators + +ZRef<Expr_Rel_Unary_Project> sProject(const ZRef<Expr_Rel>& iExpr, const ZRelHead& iRelHead) + { return new Expr_Rel_Unary_Project(iExpr, iRelHead); } + } // namespace ZQL NAMESPACE_ZOOLIB_END Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Project.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Project.h 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Project.h 2010-04-09 17:35:34 UTC (rev 1279) @@ -69,6 +69,12 @@ virtual void Visit_Expr_Rel_Unary_Project(ZRef<Expr_Rel_Unary_Project> iRep); }; +// ================================================================================================= +#pragma mark - +#pragma mark * Relational operators + +ZRef<Expr_Rel_Unary_Project> sProject(const ZRef<Expr_Rel>& iExpr, const ZRelHead& iRelHead); + } // namespace ZQL NAMESPACE_ZOOLIB_END Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Rename.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Rename.cpp 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Rename.cpp 2010-04-09 17:35:34 UTC (rev 1279) @@ -29,11 +29,11 @@ #pragma mark - #pragma mark * Expr_Rel_Unary_Rename -Expr_Rel_Unary_Rename::Expr_Rel_Unary_Rename( - ZRef<Expr_Rel> iExpr_Rel, const std::string& iOld, const std::string& iNew) +Expr_Rel_Unary_Rename::Expr_Rel_Unary_Rename(ZRef<Expr_Rel> iExpr_Rel, + const std::string& iNew, const std::string& iOld) : Expr_Rel_Unary(iExpr_Rel) +, fNew(iNew) , fOld(iOld) -, fNew(iNew) {} Expr_Rel_Unary_Rename::~Expr_Rel_Unary_Rename() @@ -66,18 +66,18 @@ ZRef<Expr_Rel_Unary> Expr_Rel_Unary_Rename::Clone( ZRef<Expr_Rel> iExpr_Rel) - { return new Expr_Rel_Unary_Rename(iExpr_Rel, fOld, fNew); } + { return new Expr_Rel_Unary_Rename(iExpr_Rel, fNew, fOld); } void Expr_Rel_Unary_Rename::Accept_Expr_Rel_Unary_Rename( Visitor_Expr_Rel_Unary_Rename& iVisitor) { iVisitor.Visit_Expr_Rel_Unary_Rename(this); } +const string& Expr_Rel_Unary_Rename::GetNew() + { return fNew; } + const string& Expr_Rel_Unary_Rename::GetOld() { return fOld; } -const string& Expr_Rel_Unary_Rename::GetNew() - { return fNew; } - // ================================================================================================= #pragma mark - #pragma mark * Visitor_Expr_Rel_Unary_Rename @@ -86,5 +86,13 @@ ZRef<Expr_Rel_Unary_Rename> iRep) { Visitor_Expr_Rel_Unary::Visit_Expr_Rel_Unary(iRep); } +// ================================================================================================= +#pragma mark - +#pragma mark * Relational operators + +ZRef<Expr_Rel_Unary_Rename> sRename(const ZRef<Expr_Rel>& iExpr, + const string& iNewPropName, const string& iOldPropName) + { return new Expr_Rel_Unary_Rename(iExpr, iNewPropName, iOldPropName); } + } // namespace ZQL NAMESPACE_ZOOLIB_END Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Rename.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Rename.h 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Rename.h 2010-04-09 17:35:34 UTC (rev 1279) @@ -37,7 +37,7 @@ { public: Expr_Rel_Unary_Rename(ZRef<Expr_Rel> iExpr_Rel, - const std::string& iOld, const std::string& iNew); + const std::string& iNew, const std::string& iOld); virtual ~Expr_Rel_Unary_Rename(); @@ -53,12 +53,12 @@ virtual void Accept_Expr_Rel_Unary_Rename( Visitor_Expr_Rel_Unary_Rename& iVisitor); + const std::string& GetNew(); const std::string& GetOld(); - const std::string& GetNew(); private: + const std::string fNew; const std::string fOld; - const std::string fNew; }; // ================================================================================================= @@ -71,6 +71,13 @@ virtual void Visit_Expr_Rel_Unary_Rename(ZRef<Expr_Rel_Unary_Rename> iRep); }; +// ================================================================================================= +#pragma mark - +#pragma mark * Relational operators + +ZRef<Expr_Rel_Unary_Rename> sRename(const ZRef<Expr_Rel>& iExpr, + const std::string& iNewPropName, const std::string& iOldPropName); + } // namespace ZQL NAMESPACE_ZOOLIB_END Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Restrict.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Restrict.h 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Restrict.h 2010-04-09 17:35:34 UTC (rev 1279) @@ -22,8 +22,8 @@ #define __ZQL_Expr_Rel_Unary_Restrict__ 1 #include "zconfig.h" -#include "zoolib/zql/ZQL_Expr_Rel_Unary_Restrict_T.h" #include "zoolib/ZValCondition.h" +#include "zoolib/zql/ZQL_Expr_Rel_Unary_Restrict_T.h" NAMESPACE_ZOOLIB_BEGIN namespace ZQL { @@ -34,8 +34,7 @@ typedef Expr_Rel_Unary_Restrict_T<ZVal_Expr> Expr_Rel_Unary_Restrict; -typedef Visitor_Expr_Rel_Unary_Restrict_T<ZVal_Expr> - Visitor_Expr_Rel_Unary_Restrict; +typedef Visitor_Expr_Rel_Unary_Restrict_T<ZVal_Expr> Visitor_Expr_Rel_Unary_Restrict; } // namespace ZQL NAMESPACE_ZOOLIB_END Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Restrict_T.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Restrict_T.h 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Restrict_T.h 2010-04-09 17:35:34 UTC (rev 1279) @@ -22,8 +22,8 @@ #define __ZQL_Expr_Rel_Unary_Restrict_T__ 1 #include "zconfig.h" +#include "zoolib/ZValCondition_T.h" #include "zoolib/zql/ZQL_Expr_Rel_Unary.h" -#include "zoolib/ZValCondition_T.h" NAMESPACE_ZOOLIB_BEGIN namespace ZQL { Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Select.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Select.cpp 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Select.cpp 2010-04-09 17:35:34 UTC (rev 1279) @@ -84,18 +84,18 @@ // ================================================================================================= #pragma mark - -#pragma mark * +#pragma mark * Relational operators ZRef<Expr_Rel_Unary_Select> sSelect( - const ZRef<ZExpr_Logic>& iExpr_Logic, const ZRef<Expr_Rel>& iExpr_Rel) + const ZRef<Expr_Rel>& iExpr_Rel, const ZRef<ZExpr_Logic>& iExpr_Logic) { return new Expr_Rel_Unary_Select(iExpr_Rel, iExpr_Logic); } ZRef<Expr_Rel_Unary_Select> operator&( - const ZRef<ZExpr_Logic>& iExpr_Logic, const ZRef<Expr_Rel>& iExpr_Rel) + const ZRef<Expr_Rel>& iExpr_Rel, const ZRef<ZExpr_Logic>& iExpr_Logic) { return new Expr_Rel_Unary_Select(iExpr_Rel, iExpr_Logic); } ZRef<Expr_Rel_Unary_Select> operator&( - const ZRef<Expr_Rel>& iExpr_Rel, const ZRef<ZExpr_Logic>& iExpr_Logic) + const ZRef<ZExpr_Logic>& iExpr_Logic, const ZRef<Expr_Rel>& iExpr_Rel) { return new Expr_Rel_Unary_Select(iExpr_Rel, iExpr_Logic); } } // namespace ZQL Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Select.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Select.h 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Expr_Rel_Unary_Select.h 2010-04-09 17:35:34 UTC (rev 1279) @@ -73,16 +73,16 @@ // ================================================================================================= #pragma mark - -#pragma mark * Query operators +#pragma mark * Relational operators ZRef<Expr_Rel_Unary_Select> sSelect( - const ZRef<ZExpr_Logic>& iExpr_Logic, const ZRef<Expr_Rel>& iExpr_Rel); + const ZRef<Expr_Rel>& iExpr_Rel, const ZRef<ZExpr_Logic>& iExpr_Logic); ZRef<Expr_Rel_Unary_Select> operator&( - const ZRef<ZExpr_Logic>& iExpr_Logic, const ZRef<Expr_Rel>& iExpr_Rel); + const ZRef<Expr_Rel>& iExpr_Rel, const ZRef<ZExpr_Logic>& iExpr_Logic); ZRef<Expr_Rel_Unary_Select> operator&( - const ZRef<Expr_Rel>& iExpr_Rel, const ZRef<ZExpr_Logic>& iExpr_Logic); + const ZRef<ZExpr_Logic>& iExpr_Logic, const ZRef<Expr_Rel>& iExpr_Rel); } // namespace ZQL NAMESPACE_ZOOLIB_END Added: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_RelOps.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_RelOps.cpp (rev 0) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_RelOps.cpp 2010-04-09 17:35:34 UTC (rev 1279) @@ -0,0 +1,21 @@ +/* ------------------------------------------------------------------------------------------------- +Copyright (c) 2010 Andrew Green +http://www.zoolib.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------------------------- */ + +#include "zoolib/zql/ZQL_RelOps.h" Added: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_RelOps.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_RelOps.h (rev 0) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_RelOps.h 2010-04-09 17:35:34 UTC (rev 1279) @@ -0,0 +1,36 @@ +/* ------------------------------------------------------------------------------------------------- +Copyright (c) 2010 Andrew Green +http://www.zoolib.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------------------------- */ + +#ifndef __ZQL_RelOps__ +#define __ZQL_RelOps__ 1 +#include "zconfig.h" + +#include "zoolib/ZExpr_Logic.h" +#include "zoolib/ZExpr_Logic_ValCondition.h" // For ValCondition/Logic operators +#include "zoolib/zql/ZQL_Expr_Rel.h" +#include "zoolib/zql/ZQL_Expr_Rel_Binary_Intersect.h" +#include "zoolib/zql/ZQL_Expr_Rel_Binary_Join.h" +#include "zoolib/zql/ZQL_Expr_Rel_Binary_Union.h" +#include "zoolib/zql/ZQL_Expr_Rel_Unary_Project.h" +#include "zoolib/zql/ZQL_Expr_Rel_Unary_Restrict.h" // For restrict templated operators +#include "zoolib/zql/ZQL_Expr_Rel_Unary_Rename.h" +#include "zoolib/zql/ZQL_Expr_Rel_Unary_Select.h" + +#endif // __ZQL_RelOps__ Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Util_Strim_Query.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Util_Strim_Query.cpp 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_Util_Strim_Query.cpp 2010-04-09 17:35:34 UTC (rev 1279) @@ -196,9 +196,9 @@ spWrite("(", w); this->pWriteLFIndent(); + spWrite_PropName(iRep->GetNew(), w); + spWrite("<--", w); spWrite_PropName(iRep->GetOld(), w); - spWrite("-->", w); - spWrite_PropName(iRep->GetNew(), w); spWrite(",", w); this->pWriteLFIndent(); Modified: trunk/zoolib/source/cxx/zoolib/ZExpr_Logic_ValCondition_T.h =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZExpr_Logic_ValCondition_T.h 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/zoolib/ZExpr_Logic_ValCondition_T.h 2010-04-09 17:35:34 UTC (rev 1279) @@ -106,40 +106,66 @@ #pragma mark * Operators template <class Val> -ZRef<ZExpr_Logic> operator&( - const ZValCondition_T<Val>& iLHS, - const ZValCondition_T<Val>& iRHS) +ZRef<ZExpr_Logic> operator!(const ZValCondition_T<Val>& iValCondition) + { return new ZExpr_Logic_Not(new ZExpr_Logic_ValCondition_T<Val>(iValCondition)); } + +template <class Val> +ZRef<ZExpr_Logic> operator&(bool iBool, const ZValCondition_T<Val>& iValCondition) { + if (iBool) + return new ZExpr_Logic_ValCondition_T<Val>(iValCondition); + return new ZExpr_Logic_False; + } + +template <class Val> +ZRef<ZExpr_Logic> operator&(const ZValCondition_T<Val>& iValCondition, bool iBool) + { + if (iBool) + return new ZExpr_Logic_ValCondition_T<Val>(iValCondition); + return new ZExpr_Logic_False; + } + +template <class Val> +ZRef<ZExpr_Logic> operator|(bool iBool, const ZValCondition_T<Val>& iValCondition) + { + if (iBool) + return new ZExpr_Logic_True; + return new ZExpr_Logic_ValCondition_T<Val>(iValCondition); + } + +template <class Val> +ZRef<ZExpr_Logic> operator|(const ZValCondition_T<Val>& iValCondition, bool iBool) + { + if (iBool) + return new ZExpr_Logic_True; + return new ZExpr_Logic_ValCondition_T<Val>(iValCondition); + } + +template <class Val> +ZRef<ZExpr_Logic> operator&(const ZValCondition_T<Val>& iLHS, const ZValCondition_T<Val>& iRHS) + { return new ZExpr_Logic_And( new ZExpr_Logic_ValCondition_T<Val>(iLHS), new ZExpr_Logic_ValCondition_T<Val>(iRHS)); } template <class Val> -ZRef<ZExpr_Logic> operator&( - const ZValCondition_T<Val>& iLHS, - const ZRef<ZExpr_Logic>& iRHS) +ZRef<ZExpr_Logic> operator&(const ZValCondition_T<Val>& iLHS, const ZRef<ZExpr_Logic>& iRHS) { return new ZExpr_Logic_And(new ZExpr_Logic_ValCondition_T<Val>(iLHS), iRHS); } template <class Val> -ZRef<ZExpr_Logic> operator&( - const ZRef<ZExpr_Logic>& iLHS, - const ZValCondition_T<Val>& iRHS) +ZRef<ZExpr_Logic> operator&(const ZRef<ZExpr_Logic>& iLHS, const ZValCondition_T<Val>& iRHS) { return new ZExpr_Logic_And(new ZExpr_Logic_ValCondition_T<Val>(iRHS), iLHS); } template <class Val> -ZRef<ZExpr_Logic>& operator&=( - ZRef<ZExpr_Logic>& iLHS, - const ZValCondition_T<Val>& iRHS) +ZRef<ZExpr_Logic>& operator&=(ZRef<ZExpr_Logic>& iLHS, const ZValCondition_T<Val>& iRHS) { iLHS = iLHS & iRHS; return iLHS; } template <class Val> -ZRef<ZExpr_Logic> operator|( - const ZValCondition_T<Val>& iLHS, - const ZValCondition_T<Val>& iRHS) +ZRef<ZExpr_Logic> operator|(const ZValCondition_T<Val>& iLHS, const ZValCondition_T<Val>& iRHS) { return new ZExpr_Logic_Or( new ZExpr_Logic_ValCondition_T<Val>(iLHS), @@ -147,23 +173,15 @@ } template <class Val> -ZRef<ZExpr_Logic> operator|( - const ZValCondition_T<Val>& iLHS, - const ZRef<ZExpr_Logic>& iRHS) +ZRef<ZExpr_Logic> operator|(const ZValCondition_T<Val>& iLHS, const ZRef<ZExpr_Logic>& iRHS) { return new ZExpr_Logic_Or(new ZExpr_Logic_ValCondition_T<Val>(iLHS), iRHS); } template <class Val> -ZRef<ZExpr_Logic> operator|( - const ZRef<ZExpr_Logic>& iLHS, - const ZValCondition_T<Val>& iRHS) - { - return new ZExpr_Logic_Or(new ZExpr_Logic_ValCondition_T<Val>(iRHS), iLHS); - } +ZRef<ZExpr_Logic> operator|(const ZRef<ZExpr_Logic>& iLHS, const ZValCondition_T<Val>& iRHS) + { return new ZExpr_Logic_Or(new ZExpr_Logic_ValCondition_T<Val>(iRHS), iLHS); } template <class Val> -ZRef<ZExpr_Logic>& operator|=( - ZRef<ZExpr_Logic>& iLHS, - const ZValCondition_T<Val>& iRHS) +ZRef<ZExpr_Logic>& operator|=(ZRef<ZExpr_Logic>& iLHS, const ZValCondition_T<Val>& iRHS) { iLHS = iLHS | iRHS; return iLHS; @@ -216,14 +234,14 @@ #pragma mark * Matches template <class Val> -class ZVisitor_Expr_Logic_ValCondition_Matches_T +class ZVisitor_Expr_Logic_ValCondition_DoEval_Matches_T : public virtual ZVisitor_Expr_Logic_DoEval , public virtual ZVisitor_Expr_Logic_ValCondition_T<Val> { typedef ZVisitor_Expr_Logic_ValCondition_T<Val> inherited; public: - ZVisitor_Expr_Logic_ValCondition_Matches_T(const Val& iVal); + ZVisitor_Expr_Logic_ValCondition_DoEval_Matches_T(const Val& iVal); // From ZVisitor_Expr_Logic_ValCondition_T virtual void Visit_Logic_ValCondition(ZRef<ZExpr_Logic_ValCondition_T<Val> > iRep); @@ -234,13 +252,13 @@ }; template <class Val> -ZVisitor_Expr_Logic_ValCondition_Matches_T<Val>::ZVisitor_Expr_Logic_ValCondition_Matches_T( - const Val& iVal) +ZVisitor_Expr_Logic_ValCondition_DoEval_Matches_T<Val>:: +ZVisitor_Expr_Logic_ValCondition_DoEval_Matches_T(const Val& iVal) : fVal(iVal) {} template <class Val> -void ZVisitor_Expr_Logic_ValCondition_Matches_T<Val>::Visit_Logic_ValCondition( +void ZVisitor_Expr_Logic_ValCondition_DoEval_Matches_T<Val>::Visit_Logic_ValCondition( ZRef<ZExpr_Logic_ValCondition_T<Val> > iRep) { fResult = iRep->GetValCondition().Matches(fValContext, fVal); } @@ -248,7 +266,7 @@ bool sMatches_T(const ZRef<ZExpr_Logic>& iRep, const Val& iVal) { if (iRep) - return ZVisitor_Expr_Logic_ValCondition_Matches_T<Val>(iVal).DoEval(iRep); + return ZVisitor_Expr_Logic_ValCondition_DoEval_Matches_T<Val>(iVal).DoEval(iRep); return false; } Modified: trunk/zoolib/source/cxx/zoolib/ZValCondition_T.h =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZValCondition_T.h 2010-04-09 17:16:55 UTC (rev 1278) +++ trunk/zoolib/source/cxx/zoolib/ZValCondition_T.h 2010-04-09 17:35:34 UTC (rev 1279) @@ -598,22 +598,22 @@ template <class Val> ZValComparand_T<Val> CConst_T(const char* iVal) - { return ZValComparand_T<Val>( new ZValComparandRep_Const_T<Val>(std::string(iVal))); } + { return ZValComparand_T<Val>(new ZValComparandRep_Const_T<Val>(std::string(iVal))); } template <class Val> ZValComparand_T<Val> CConst_T(const Val& iVal) - { return ZValComparand_T<Val>( new ZValComparandRep_Const_T<Val>(iVal)); } + { return ZValComparand_T<Val>(new ZValComparandRep_Const_T<Val>(iVal)); } template <class Val> ZValComparand_T<Val> CName_T(const std::string& iName) - { return ZValComparand_T<Val>( new ZValComparandRep_Trail_T<Val>(ZTrail(&iName, &iName + 1))); } + { return ZValComparand_T<Val>(new ZValComparandRep_Trail_T<Val>(ZTrail(&iName, &iName + 1))); } template <class Val> ZValComparand_T<Val> CTrail_T(const ZTrail& iTrail) - { return ZValComparand_T<Val>( new ZValComparandRep_Trail_T<Val>(iTrail)); } + { return ZValComparand_T<Val>(new ZValComparandRep_Trail_T<Val>(iTrail)); } template <class Val> ZValComparand_T<Val> @@ -628,7 +628,7 @@ template <class Val> ZValComparand_T<Val> CVar_T(const std::string& iVarName) - { return ZValComparand_T<Val>( new ZValComparandRep_Var_T<Val>(iVarName)); } + { return ZValComparand_T<Val>(new ZValComparandRep_Var_T<Val>(iVarName)); } NAMESPACE_ZOOLIB_END This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |