本文整理汇总了C++中ZTuple::GetTuple方法的典型用法代码示例。如果您正苦于以下问题:C++ ZTuple::GetTuple方法的具体用法?C++ ZTuple::GetTuple怎么用?C++ ZTuple::GetTuple使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ZTuple
的用法示例。
在下文中一共展示了ZTuple::GetTuple方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
static ZRef<ZTBQueryNode> sNodeFromTuple(const ZTuple& iTuple)
{
string nodeKind = iTuple.GetString("Kind");
if (false)
{}
else if (nodeKind == "All")
{
return new ZTBQueryNode_All;
}
else if (nodeKind == "Combo")
{
vector<ZTBQuery::SortSpec> theSort;
const vector<ZTupleValue>& vectorSort = iTuple.GetVector("Sort");
for (vector<ZTupleValue>::const_iterator i = vectorSort.begin(); i != vectorSort.end(); ++i)
{
const ZTuple& temp = (*i).GetTuple();
theSort.push_back(ZTBQuery::SortSpec(
temp.GetString("PropName"), temp.GetBool("Ascending"), temp.GetInt32("Strength")));
}
const vector<ZTupleValue>& sourceSect = iTuple.GetVector("Intersections");
vector<ZTBQueryNode_Combo::Intersection> theIntersections;
for (vector<ZTupleValue>::const_iterator i = sourceSect.begin(); i != sourceSect.end(); ++i)
theIntersections.push_back(ZTBQueryNode_Combo::Intersection((*i).GetTuple()));
return new ZTBQueryNode_Combo(theSort, theIntersections);
}
else if (nodeKind == "Difference")
{
ZRef<ZTBQueryNode> leftNode = sNodeFromTuple(iTuple.GetTuple("LeftNode"));
ZRef<ZTBQueryNode> rightNode = sNodeFromTuple(iTuple.GetTuple("RightNode"));
return new ZTBQueryNode_Difference(leftNode, rightNode);
}
else if (nodeKind == "First")
{
string propName = iTuple.GetString("PropName");
ZRef<ZTBQueryNode> sourceNode = sNodeFromTuple(iTuple.GetTuple("SourceNode"));
return new ZTBQueryNode_First(propName, sourceNode);
}
else if (nodeKind == "ID_Constant")
{
vector<uint64> theIDs;
iTuple.GetVector_T("IDs", back_inserter(theIDs), uint64());
return new ZTBQueryNode_ID_Constant(theIDs, true);
}
else if (nodeKind == "ID_FromSource")
{
ZRef<ZTBQueryNode> sourceNode = sNodeFromTuple(iTuple.GetTuple("SourceNode"));
string sourcePropName = iTuple.GetString("SourcePropName");
return new ZTBQueryNode_ID_FromSource(sourceNode, sourcePropName);
}
else if (nodeKind == "Property")
{
string propName = iTuple.GetString("PropName");
ZRef<ZTBQueryNode> sourceNode = sNodeFromTuple(iTuple.GetTuple("SourceNode"));
return new ZTBQueryNode_Property(propName, sourceNode);
}
throw runtime_error(string("ZTBQuery, sNodeFromTuple, unknown nodeKind: " + nodeKind));
}
示例2: sHandle_PROPFIND
bool ZWebDAV::sHandle_PROPFIND(const ZTrail& iPrefix, ZNode iRoot, const ZStreamR& iStreamR, const ZStreamW& iStreamW, const ZTuple& iHeader, const ZTrail& iTrail, const ZTuple& iParam)
{
int depth = sGetDepth(iHeader);
ZRef<ZStrimmerR> theStrimmerR = sMakeStrimmer(iHeader, iStreamR);
const ZStrimR& theStrimR = theStrimmerR->GetStrimR();
ZHTTP::Response r;
r.Set("Date", sAsString_WebDAV(ZTime::sNow()));
ZNode theNode = iRoot.Trail(iTrail);
if (!theNode.Exists())
{
theStrimR.SkipAll();
r.Set("Content-Length", 0);
r.SetResult(404);
r.Send(iStreamW);
}
else
{
ZTuple t = sReadTuple(theStrimR);
ZTuple results;
if (t.Empty() || t.Has("D:allprop"))
{
sHandle_PROPFIND_All(iPrefix, iRoot, theNode, depth, results);
}
else
{
ZTuple propT = t.GetTuple("D:prop");
vector<string> thePropNames;
for (ZTuple::const_iterator i = propT.begin(); i != propT.end(); ++i)
thePropNames.push_back(propT.NameOf(i));
sHandle_PROPFIND_Some(iPrefix, iRoot, theNode, depth, thePropNames, results);
}
if (const ZLog::S& s = ZLog::S(ZLog::eDebug, "ZWebDAV"))
{
s << "PropFind Request:" << t << "\n";
s << "PropFind Results:" << results << "\n";
}
r.SetResult(207, "Multi-Status");
r.Set("Content-Type", "text/xml; charset=\"utf-8\"");
r.Set("Transfer-Encoding", "chunked");
r.Send(iStreamW);
ZHTTP::StreamW_Chunked chunkedStream(iStreamW);
ZStrimW_StreamUTF8 theStrimW(chunkedStream);
ZStrimW_ML s(false, theStrimW);
s.PI("xml");
s.Attr("version", "1.0");
s.Attr("encoding", "utf-8");
s.Begin("D:multistatus");
s.Attr("xmlns:D", "DAV:");
sWriteAsXML(s, results);
s.End("D:multistatus");
}
return true;
}
示例3: ZTBSpec
ZTBQueryNode_Combo::Intersection::Intersection(const ZTuple& iTuple)
{
fFilter = ZTBSpec(iTuple.GetTuple("Filter"));
const vector<ZTupleValue>& nodes = iTuple.GetVector("Nodes");
for (vector<ZTupleValue>::const_iterator i = nodes.begin(); i != nodes.end(); ++i)
{
if (ZRef<ZTBQueryNode> aNode = sNodeFromTuple((*i).GetTuple()))
fNodes.push_back(aNode);
}
}