From: <ag...@us...> - 2010-04-23 14:53:04
|
Revision: 1332 http://zoolib.svn.sourceforge.net/zoolib/?rev=1332&view=rev Author: agreen Date: 2010-04-23 14:52:57 +0000 (Fri, 23 Apr 2010) Log Message: ----------- Use Rename_t rather than map<string, string>. Modified Paths: -------------- trunk/zoolib/source/cxx/more/zoolib/tql/ZTQLTest.cpp trunk/zoolib/source/cxx/more/zoolib/zqe/ZQE_Visitor_Expr_Rel_DoMakeIterator.cpp trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_RelHead.cpp trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_RelHead.h trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_SQL.cpp trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_SQL.h trunk/zoolib/source/cxx/zoolib/ZValCondition_T.h Modified: trunk/zoolib/source/cxx/more/zoolib/tql/ZTQLTest.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/tql/ZTQLTest.cpp 2010-04-23 14:51:53 UTC (rev 1331) +++ trunk/zoolib/source/cxx/more/zoolib/tql/ZTQLTest.cpp 2010-04-23 14:52:57 UTC (rev 1332) @@ -46,9 +46,9 @@ ZVisitor_DoToStrim::Options theOptions; theOptions.fInitialIndent = 1; - const map<string8, string8>& theMap = iExpr->GetRenameMap(); + const Rename_t& theRename = iExpr->GetRename(); s << "Renames:\n"; - for (map<string8, string8>::const_iterator i = theMap.begin(); i != theMap.end(); ++i) + for (Rename_t::const_iterator i = theRename.begin(); i != theRename.end(); ++i) s << " " << (*i).second << "<--" << (*i).first << "\n" ; s << "Relhead:\n "; Modified: trunk/zoolib/source/cxx/more/zoolib/zqe/ZQE_Visitor_Expr_Rel_DoMakeIterator.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zqe/ZQE_Visitor_Expr_Rel_DoMakeIterator.cpp 2010-04-23 14:51:53 UTC (rev 1331) +++ trunk/zoolib/source/cxx/more/zoolib/zqe/ZQE_Visitor_Expr_Rel_DoMakeIterator.cpp 2010-04-23 14:52:57 UTC (rev 1332) @@ -29,7 +29,9 @@ void Visitor_Expr_Rel_DoMakeIterator::Visit_Expr_Rel_Difference( ZRef<ZQL::Expr_Rel_Difference> iExpr) - {} + { + ZUnimplemented(); + } void Visitor_Expr_Rel_DoMakeIterator::Visit_Expr_Rel_Intersect(ZRef<ZQL::Expr_Rel_Intersect> iExpr) { Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_RelHead.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_RelHead.cpp 2010-04-23 14:51:53 UTC (rev 1331) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_RelHead.cpp 2010-04-23 14:52:57 UTC (rev 1332) @@ -23,7 +23,19 @@ NAMESPACE_ZOOLIB_BEGIN namespace ZQL { +// ================================================================================================= +#pragma mark - +#pragma mark * Rename_t +Rename_t sInvert(const Rename_t& iRename) + { + Rename_t result; + for (Rename_t::const_iterator i = iRename.begin(); i != iRename.end(); ++i) + result[(*i).second] = (*i).first; + + return result; + } + } // namespace ZQL NAMESPACE_ZOOLIB_END Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_RelHead.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_RelHead.h 2010-04-23 14:51:53 UTC (rev 1331) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_RelHead.h 2010-04-23 14:52:57 UTC (rev 1332) @@ -25,6 +25,7 @@ #include "zoolib/ZUniSet_T.h" #include <string> +#include <map> NAMESPACE_ZOOLIB_BEGIN namespace ZQL { @@ -56,6 +57,14 @@ inline RelHead operator^(const RelHead& iRelHead, const char* iElem) { return iRelHead ^ std::string(iElem); } +// ================================================================================================= +#pragma mark - +#pragma mark * Rename_t + +typedef std::map<std::string, std::string> Rename_t; + +Rename_t sInvert(const Rename_t& iRename); + } // namespace ZQL NAMESPACE_ZOOLIB_END Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_SQL.cpp =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_SQL.cpp 2010-04-23 14:51:53 UTC (rev 1331) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_SQL.cpp 2010-04-23 14:52:57 UTC (rev 1332) @@ -18,13 +18,13 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------------------------- */ -#include "zoolib/ZVisitor_Expr_Logic_ValCondition_DoToStrim.h" -#include "zoolib/ZVisitor_Expr_Op_DoTransform_T.h" #include "zoolib/ZExpr_Logic_ValCondition.h" #include "zoolib/ZStrim.h" #include "zoolib/ZStrim_Escaped.h" #include "zoolib/ZTime.h" #include "zoolib/ZUtil_Strim.h" +#include "zoolib/ZVisitor_Expr_Logic_ValCondition_DoToStrim.h" +#include "zoolib/ZVisitor_Expr_Op_DoTransform_T.h" #include "zoolib/zql/ZQL_Expr_Rel_Join.h" #include "zoolib/zql/ZQL_Expr_Rel_Project.h" @@ -45,12 +45,10 @@ // ================================================================================================= #pragma mark - -#pragma mark * Anonymous +#pragma mark * DoRename namespace ZANONYMOUS { -typedef map<string8, string8> Rename_t; - class DoRename : public virtual ZVisitor_Expr_Op_DoTransform_T<ZExpr_Logic> , public virtual ZVisitor_Expr_Logic_ValCondition @@ -76,6 +74,14 @@ this->pSetResult(iExpr); } +} // anonymous namespace + +// ================================================================================================= +#pragma mark - +#pragma mark * Doer + +namespace ZANONYMOUS { + class Doer : public virtual ZVisitor_Expr_Op_DoTransform_T<Expr_Rel_SFW> , public virtual ZQL::Visitor_Expr_Rel_Join @@ -118,8 +124,8 @@ ZRef<Expr_Rel_SFW> sfw0 = this->Do(iExpr->GetOp0()); ZRef<Expr_Rel_SFW> sfw1 = this->Do(iExpr->GetOp1()); - Rename_t theRename = sfw0->GetRenameMap(); - const Rename_t& theRename1 = sfw1->GetRenameMap(); + Rename_t theRename = sfw0->GetRename(); + const Rename_t& theRename1 = sfw1->GetRename(); theRename.insert(theRename1.begin(), theRename1.end()); vector<ZRef<Expr_Rel_Concrete> > rels = sfw0->GetRels(); @@ -152,7 +158,7 @@ ZRef<Expr_Rel_SFW> sfw0 = this->Do(iExpr->GetOp0()); ZRef<Expr_Rel_SFW> result = new Expr_Rel_SFW( - sfw0->GetRenameMap(), + sfw0->GetRename(), sfw0->GetRelHead() & iExpr->GetRelHead(), sfw0->GetCondition(), sfw0->GetRels()); @@ -176,7 +182,7 @@ const string8& oldName = iExpr->GetOld(); const string8& newName = iExpr->GetNew(); - Rename_t theRename = sfw0->GetRenameMap(); + Rename_t theRename = sfw0->GetRename(); bool foundIt = false; for (Rename_t::iterator i = theRename.begin(); i != theRename.end(); /*no inc*/) { @@ -199,33 +205,24 @@ this->pSetResult(result); } -static Rename_t spInvert(const Rename_t& iRename) - { - Rename_t result; - for (Rename_t::const_iterator i = iRename.begin(); i != iRename.end(); ++i) - result[(*i).second] = (*i).first; - - return result; - } - static ZValCondition spRenamedInverse( const ZValCondition& iValCondition, const Rename_t& iRename) { ZValCondition result; - if (iValCondition.Renamed(spInvert(iRename), result)) + if (iValCondition.Renamed(sInvert(iRename), result)) return result; return iValCondition; } static ZRef<ZExpr_Logic> spRenamedInverse( ZRef<ZExpr_Logic> iExpr_Logic, const Rename_t& iRename) - { return DoRename(spInvert(iRename)).Do(iExpr_Logic); } + { return DoRename(sInvert(iRename)).Do(iExpr_Logic); } void Doer::Visit_Expr_Rel_Restrict(ZRef<Expr_Rel_Restrict> iExpr) { ZRef<Expr_Rel_SFW> sfw0 = this->Do(iExpr->GetOp0()); - const Rename_t& theRename = sfw0->GetRenameMap(); + const Rename_t& theRename = sfw0->GetRename(); ZRef<Expr_Rel_SFW> result = new Expr_Rel_SFW( theRename, sfw0->GetRelHead(), @@ -239,7 +236,7 @@ { ZRef<Expr_Rel_SFW> sfw0 = this->Do(iExpr->GetOp0()); - const Rename_t& theRename = sfw0->GetRenameMap(); + const Rename_t& theRename = sfw0->GetRename(); ZRef<Expr_Rel_SFW> result = new Expr_Rel_SFW( theRename, sfw0->GetRelHead(), @@ -249,17 +246,17 @@ this->pSetResult(result); } -} // namespace ZANONYMOUS +} // anonymous namespace // ================================================================================================= #pragma mark - #pragma mark * Expr_Rel_SFW -Expr_Rel_SFW::Expr_Rel_SFW(const map<string8, string8>& iRenameMap, +Expr_Rel_SFW::Expr_Rel_SFW(const Rename_t& iRename, const RelHead& iRelHead, ZRef<ZExpr_Logic> iCondition, const vector<ZRef<Expr_Rel_Concrete> >& iRels) -: fRenameMap(iRenameMap) +: fRename(iRename) , fRelHead(iRelHead) , fCondition(iCondition) , fRels(iRels) @@ -268,8 +265,8 @@ RelHead Expr_Rel_SFW::GetRelHead() { return fRelHead; } -const map<string8, string8>& Expr_Rel_SFW::GetRenameMap() - { return fRenameMap; } +const Rename_t& Expr_Rel_SFW::GetRename() + { return fRename; } ZRef<ZExpr_Logic> Expr_Rel_SFW::GetCondition() { return fCondition; } @@ -279,11 +276,15 @@ // ================================================================================================= #pragma mark - -#pragma mark * ZQL::SQL +#pragma mark * ZQL::SQL::sConvert ZRef<Expr_Rel_SFW> sConvert(ZRef<Expr_Rel> iExpr) { return Doer().Do(iExpr); } +// ================================================================================================= +#pragma mark - +#pragma mark * ToStrim_SQL + namespace ZANONYMOUS { class ToStrim_SQL @@ -481,16 +482,18 @@ } // anonymous namespace -string8 sAsSQL(ZRef<Expr_Rel_SFW> iSFW) +// ================================================================================================= +#pragma mark - +#pragma mark * ZQL::SQL::sConvert + +void sAsSQL(ZRef<Expr_Rel_SFW> iSFW, const ZStrimW& s) { - string8 result; - ZStrimW_String s(result); if (iSFW) { s << "SELECT"; const RelHead& theRelHead = iSFW->GetRelHead(); - const Rename_t theRename = spInvert(iSFW->GetRenameMap()); + const Rename_t theRename = sInvert(iSFW->GetRename()); bool universal; const set<string8>& names = theRelHead.GetElems(universal); @@ -542,6 +545,12 @@ ToStrim_SQL().DoToStrim(ToStrim_SQL::Options(), s, iSFW->GetCondition()); s << ";"; } + } + +string8 sAsSQL(ZRef<Expr_Rel_SFW> iSFW) + { + string8 result; + sAsSQL(iSFW, ZStrimW_String(result)); return result; } Modified: trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_SQL.h =================================================================== --- trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_SQL.h 2010-04-23 14:51:53 UTC (rev 1331) +++ trunk/zoolib/source/cxx/more/zoolib/zql/ZQL_SQL.h 2010-04-23 14:52:57 UTC (rev 1332) @@ -39,7 +39,7 @@ class Expr_Rel_SFW : public Expr_Rel_Concrete { public: - Expr_Rel_SFW(const std::map<string8, string8>& iRenameMap, + Expr_Rel_SFW(const Rename_t& iRename, const RelHead& iRelHead, ZRef<ZExpr_Logic> iCondition, const std::vector<ZRef<Expr_Rel_Concrete> >& iRels); @@ -48,12 +48,12 @@ virtual RelHead GetRelHead(); // Our protocol - const std::map<string8, string8>& GetRenameMap(); + const Rename_t& GetRename(); ZRef<ZExpr_Logic> GetCondition(); const std::vector<ZRef<Expr_Rel_Concrete> >& GetRels(); public: - const std::map<string8, string8> fRenameMap; + const Rename_t fRename; const RelHead fRelHead; const ZRef<ZExpr_Logic> fCondition; const std::vector<ZRef<Expr_Rel_Concrete> > fRels; @@ -65,6 +65,7 @@ ZRef<Expr_Rel_SFW> sConvert(ZRef<Expr_Rel> iExpr); +void sAsSQL(ZRef<Expr_Rel_SFW> iSFW, const ZStrimW& s); string8 sAsSQL(ZRef<Expr_Rel_SFW> iSFW); } // namespace SQL Modified: trunk/zoolib/source/cxx/zoolib/ZValCondition_T.h =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZValCondition_T.h 2010-04-23 14:51:53 UTC (rev 1331) +++ trunk/zoolib/source/cxx/zoolib/ZValCondition_T.h 2010-04-23 14:52:57 UTC (rev 1332) @@ -30,6 +30,10 @@ NAMESPACE_ZOOLIB_BEGIN +// There is an equivalent typedef in ZQL_RelHead, and it's possible that it +// should be promoted to its own file, but for now that seems excessive. +typedef std::map<std::string, std::string> Rename_t; + class ZValContext {}; @@ -176,7 +180,7 @@ virtual Val Imp_GetVal(ZValContext& iContext, const Val& iVal) = 0; virtual std::set<std::string> GetNames(); - virtual ZRef<ZValComparandRep_T> Renamed(const std::map<std::string, std::string>& iRenameMap); + virtual ZRef<ZValComparandRep_T> Renamed(const Rename_t& iRename); }; template <class Val> @@ -192,8 +196,7 @@ { return std::set<std::string>(); } template <class Val> -ZRef<ZValComparandRep_T<Val> > ZValComparandRep_T<Val>::Renamed( - const std::map<std::string, std::string>& iRenameMap) +ZRef<ZValComparandRep_T<Val> > ZValComparandRep_T<Val>::Renamed(const Rename_t& iRename) { return this; } // ================================================================================================= @@ -243,7 +246,7 @@ virtual Val Imp_GetVal(ZValContext& iContext, const Val& iVal); virtual std::set<std::string> GetNames(); virtual ZRef<ZValComparandRep_T<Val> > Renamed( - const std::map<std::string, std::string>& iRenameMap); + const Rename_t& iRename); // Our protocol const ZTrail& GetTrail(); @@ -282,13 +285,13 @@ template <class Val> ZRef<ZValComparandRep_T<Val> > ZValComparandRep_Trail_T<Val>::Renamed( - const std::map<std::string, std::string>& iRenameMap) + const Rename_t& iRename) { if (fTrail.Count()) { std::string theName = fTrail.At(0); - std::map<std::string, std::string>::const_iterator i = iRenameMap.find(theName); - if (i != iRenameMap.end()) + Rename_t::const_iterator i = iRename.find(theName); + if (i != iRename.end()) return new ZValComparandRep_Trail_T((*i).second + fTrail.SubTrail(1)); } return this; @@ -388,8 +391,7 @@ std::set<std::string> GetNames() const; - bool Renamed( - const std::map<std::string, std::string>& iRenameMap, ZValCondition_T& oResult) const; + bool Renamed(const Rename_t& iRename, ZValCondition_T& oResult) const; private: ZValComparand_T<Val> fLHS; @@ -456,11 +458,10 @@ { return ZUtil_STL_set::sOr(fLHS.GetNames(), fRHS.GetNames()); } template <class Val> -bool ZValCondition_T<Val>::Renamed( - const std::map<std::string, std::string>& iRenameMap, ZValCondition_T& oResult) const +bool ZValCondition_T<Val>::Renamed(const Rename_t& iRename, ZValCondition_T& oResult) const { - ZRef<ZValComparandRep_T<Val> > newLHS = fLHS->Renamed(iRenameMap); - ZRef<ZValComparandRep_T<Val> > newRHS = fRHS->Renamed(iRenameMap); + ZRef<ZValComparandRep_T<Val> > newLHS = fLHS->Renamed(iRename); + ZRef<ZValComparandRep_T<Val> > newRHS = fRHS->Renamed(iRename); if (newLHS == fLHS && newRHS == fRHS) return false; oResult = ZValCondition_T(newLHS, fComparator, newRHS); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |