本文整理汇总了C++中DocNode类的典型用法代码示例。如果您正苦于以下问题:C++ DocNode类的具体用法?C++ DocNode怎么用?C++ DocNode使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了DocNode类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: li
void DocbookDocVisitor::visitPre(DocParamList *pl)
{
if (m_hide) return;
QListIterator<DocNode> li(pl->parameters());
DocNode *param;
m_t << " <row>" << endl;
if (!li.toFirst())
{
m_t << " <entry></entry>" << endl;
}
else
{
m_t << " <entry>";
int cnt = 0;
for (li.toFirst();(param=li.current());++li)
{
if (cnt)
{
m_t << ", ";
}
if (param->kind()==DocNode::Kind_Word)
{
visit((DocWord*)param);
}
else if (param->kind()==DocNode::Kind_LinkedWord)
{
visit((DocLinkedWord*)param);
}
cnt++;
}
m_t << "</entry>" << endl;
}
m_t << " <entry>";
}
示例2: generateBriefDoc
static void generateBriefDoc(FTextStream &t,Definition *def)
{
QCString brief = def->briefDescription(TRUE);
//printf("*** %p: generateBriefDoc(%s)='%s'\n",def,def->name().data(),brief.data());
if (!brief.isEmpty())
{
DocNode *root = validatingParseDoc(def->briefFile(),def->briefLine(),
def,0,brief,FALSE,FALSE,0,TRUE,TRUE);
QCString relPath = relativePathToRoot(def->getOutputFileBase());
HtmlCodeGenerator htmlGen(t,relPath);
HtmlDocVisitor *visitor = new HtmlDocVisitor(t,htmlGen,def);
root->accept(visitor);
delete visitor;
delete root;
}
}
示例3: DBG_RTF
void RTFDocVisitor::visitPre(DocParamList *pl)
{
if (m_hide) return;
DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocParamList)}\n");
// Put in the direction: in/out/in,out if specified.
if (pl->direction()!=DocParamSect::Unspecified)
{
m_t << "[";
if (pl->direction()==DocParamSect::In)
{
m_t << "in";
}
else if (pl->direction()==DocParamSect::Out)
{
m_t << "out";
}
else if (pl->direction()==DocParamSect::InOut)
{
m_t << "in,out";
}
m_t << "] ";
}
m_t << "{\\i ";
//QStrListIterator li(pl->parameters());
//const char *s;
QListIterator<DocNode> li(pl->parameters());
DocNode *param;
bool first=TRUE;
for (li.toFirst();(param=li.current());++li)
{
if (!first) m_t << ","; else first=FALSE;
if (param->kind()==DocNode::Kind_Word)
{
visit((DocWord*)param);
}
else if (param->kind()==DocNode::Kind_LinkedWord)
{
visit((DocLinkedWord*)param);
}
}
m_t << "} ";
m_lastIsPara=TRUE;
}
示例4: li
void XmlDocVisitor::visitPre(DocParamList *pl)
{
if (m_hide) return;
m_t << "<parameteritem>" << endl;
m_t << "<parameternamelist>" << endl;
//QStrListIterator li(pl->parameters());
//const char *s;
QListIterator<DocNode> li(pl->parameters());
DocNode *param;
for (li.toFirst();(param=li.current());++li)
{
m_t << "<parametername";
if (pl->direction()!=DocParamSect::Unspecified)
{
m_t << " direction=\"";
if (pl->direction()==DocParamSect::In)
{
m_t << "in";
}
else if (pl->direction()==DocParamSect::Out)
{
m_t << "out";
}
else if (pl->direction()==DocParamSect::InOut)
{
m_t << "inout";
}
m_t << "\"";
}
m_t << ">";
if (param->kind()==DocNode::Kind_Word)
{
visit((DocWord*)param);
}
else if (param->kind()==DocNode::Kind_LinkedWord)
{
visit((DocLinkedWord*)param);
}
m_t << "</parametername>" << endl;
}
m_t << "</parameternamelist>" << endl;
m_t << "<parameterdescription>" << endl;
}
示例5: if
void LatexDocVisitor::visitPre(DocParamList *pl)
{
if (m_hide) return;
m_t << "\\item[";
if (pl->direction()!=DocParamSect::Unspecified)
{
m_t << "\\mbox{";
if (pl->direction()==DocParamSect::In)
{
m_t << "$\\leftarrow$";
}
else if (pl->direction()==DocParamSect::Out)
{
m_t << "$\\rightarrow$";
}
else if (pl->direction()==DocParamSect::InOut)
{
m_t << "$\\leftrightarrow$";
}
m_t << "} ";
}
m_t << "{\\em ";
//QStrListIterator li(pl->parameters());
//const char *s;
QListIterator<DocNode> li(pl->parameters());
DocNode *param;
bool first=TRUE;
for (li.toFirst();(param=li.current());++li)
{
if (!first) m_t << ","; else first=FALSE;
m_insideItem=TRUE;
if (param->kind()==DocNode::Kind_Word)
{
visit((DocWord*)param);
}
else if (param->kind()==DocNode::Kind_LinkedWord)
{
visit((DocLinkedWord*)param);
}
m_insideItem=FALSE;
}
m_t << "}]";
}
示例6: li
void ManDocVisitor::visitPre(DocParamList *pl)
{
if (m_hide) return;
m_t << "\\fI";
//QStrListIterator li(pl->parameters());
//const char *s;
QListIterator<DocNode> li(pl->parameters());
DocNode *param;
bool first=TRUE;
for (li.toFirst();(param=li.current());++li)
{
if (!first) m_t << ","; else first=FALSE;
if (param->kind()==DocNode::Kind_Word)
{
visit((DocWord*)param);
}
else if (param->kind()==DocNode::Kind_LinkedWord)
{
visit((DocLinkedWord*)param);
}
}
m_t << "\\fP ";
}
示例7: generateBriefDoc
static void generateBriefDoc(QTextStream &t, QSharedPointer<Definition> def)
{
QString brief = def->briefDescription(true);
/* ( save for testing )
if (brief.isEmpty()) {
SortedList<QSharedPointer<GroupDef>> *groups = def->partOfGroups();
if (groups) {
for (auto gd : *groups) {
brief = gd->briefDescription(true);
if (! brief.isEmpty()) {
break;
}
}
}
}
*/
if (! brief.isEmpty()) {
DocNode *root = validatingParseDoc(def->briefFile(), def->briefLine(),
def, QSharedPointer<MemberDef>(), brief, false, false, "", true, true);
QString relPath = relativePathToRoot(def->getOutputFileBase());
HtmlCodeGenerator htmlGen(t, relPath);
HtmlDocVisitor *visitor = new HtmlDocVisitor(t, htmlGen, def);
root->accept(visitor);
delete visitor;
delete root;
}
}
示例8: DBG_RTF
void RTFDocVisitor::visitPre(DocParamList *pl)
{
static int columnPos[4][5] =
{ { 2, 25, 100, 100, 100 }, // no inout, no type
{ 3, 14, 35, 100, 100 }, // inout, no type
{ 3, 25, 50, 100, 100 }, // no inout, type
{ 4, 14, 35, 55, 100 }, // inout, type
};
int config=0;
if (m_hide) return;
DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocParamList)}\n");
DocParamSect::Type parentType = DocParamSect::Unknown;
DocParamSect *sect = 0;
if (pl->parent() && pl->parent()->kind()==DocNode::Kind_ParamSect)
{
parentType = ((DocParamSect*)pl->parent())->type();
sect=(DocParamSect*)pl->parent();
}
bool useTable = parentType==DocParamSect::Param ||
parentType==DocParamSect::RetVal ||
parentType==DocParamSect::Exception ||
parentType==DocParamSect::TemplateParam;
if (sect && sect->hasInOutSpecifier()) config+=1;
if (sect && sect->hasTypeSpecifier()) config+=2;
if (useTable)
{
int i;
m_t << "\\trowd \\trgaph108\\trleft426\\tblind426"
"\\trbrdrt\\brdrs\\brdrw10\\brdrcf15 "
"\\trbrdrl\\brdrs\\brdrw10\\brdrcf15 "
"\\trbrdrb\\brdrs\\brdrw10\\brdrcf15 "
"\\trbrdrr\\brdrs\\brdrw10\\brdrcf15 "
"\\trbrdrh\\brdrs\\brdrw10\\brdrcf15 "
"\\trbrdrv\\brdrs\\brdrw10\\brdrcf15 "<< endl;
for (i=0;i<columnPos[config][0];i++)
{
m_t << "\\clvertalt\\clbrdrt\\brdrs\\brdrw10\\brdrcf15 "
"\\clbrdrl\\brdrs\\brdrw10\\brdrcf15 "
"\\clbrdrb\\brdrs\\brdrw10\\brdrcf15 "
"\\clbrdrr \\brdrs\\brdrw10\\brdrcf15 "
"\\cltxlrtb "
"\\cellx" << (rtf_pageWidth*columnPos[config][i+1]/100) << endl;
}
m_t << "\\pard \\widctlpar\\intbl\\adjustright" << endl;
}
if (sect && sect->hasInOutSpecifier())
{
if (useTable)
{
m_t << "{";
}
// Put in the direction: in/out/in,out if specified.
if (pl->direction()!=DocParamSect::Unspecified)
{
if (pl->direction()==DocParamSect::In)
{
m_t << "in";
}
else if (pl->direction()==DocParamSect::Out)
{
m_t << "out";
}
else if (pl->direction()==DocParamSect::InOut)
{
m_t << "in,out";
}
}
if (useTable)
{
m_t << "\\cell }";
}
}
if (sect && sect->hasTypeSpecifier())
{
if (useTable)
{
m_t << "{";
}
QListIterator<DocNode> li(pl->paramTypes());
DocNode *type;
bool first=TRUE;
for (li.toFirst();(type=li.current());++li)
{
if (!first) m_t << " | "; else first=FALSE;
if (type->kind()==DocNode::Kind_Word)
{
visit((DocWord*)type);
}
else if (type->kind()==DocNode::Kind_LinkedWord)
{
visit((DocLinkedWord*)type);
}
}
if (useTable)
{
//.........这里部分代码省略.........
示例9: visitCaption
static void visitCaption(DocbookDocVisitor *parent, QList<DocNode> children)
{
QListIterator<DocNode> cli(children);
DocNode *n;
for (cli.toFirst();(n=cli.current());++cli) n->accept(parent);
}
示例10: MPReader
// Read a document from a binary msgpack blob.
// The blob data must remain valid for the lifetime of this Document (because a
// string object in the document contains a StringRef into the original blob).
// If Multi, then this sets root to an array and adds top-level objects to it.
// If !Multi, then it only reads a single top-level object, even if there are
// more, and sets root to that.
// Returns false if failed due to illegal format.
bool Document::readFromBlob(StringRef Blob, bool Multi) {
msgpack::Reader MPReader(Blob);
SmallVector<StackLevel, 4> Stack;
if (Multi) {
// Create the array for multiple top-level objects.
Root = getArrayNode();
Stack.push_back(StackLevel({Root, (size_t)-1, nullptr}));
}
do {
// On to next element (or key if doing a map key next).
// Read the value.
Object Obj;
if (!MPReader.read(Obj)) {
if (Multi && Stack.size() == 1) {
// OK to finish here as we've just done a top-level element with Multi
break;
}
return false; // Finished too early
}
// Convert it into a DocNode.
DocNode Node;
switch (Obj.Kind) {
case Type::Nil:
Node = getNode();
break;
case Type::Int:
Node = getNode(Obj.Int);
break;
case Type::UInt:
Node = getNode(Obj.UInt);
break;
case Type::Boolean:
Node = getNode(Obj.Bool);
break;
case Type::Float:
Node = getNode(Obj.Float);
break;
case Type::String:
Node = getNode(Obj.Raw);
break;
case Type::Map:
Node = getMapNode();
break;
case Type::Array:
Node = getArrayNode();
break;
default:
return false; // Raw and Extension not supported
}
// Store it.
if (Stack.empty())
Root = Node;
else if (Stack.back().Node.getKind() == Type::Array) {
// Reading an array entry.
auto &Array = Stack.back().Node.getArray();
Array.push_back(Node);
} else {
auto &Map = Stack.back().Node.getMap();
if (!Stack.back().MapEntry) {
// Reading a map key.
Stack.back().MapEntry = &Map[Node];
} else {
// Reading the value for the map key read in the last iteration.
*Stack.back().MapEntry = Node;
Stack.back().MapEntry = nullptr;
}
}
// See if we're starting a new array or map.
switch (Node.getKind()) {
case msgpack::Type::Array:
case msgpack::Type::Map:
Stack.push_back(StackLevel({Node, Obj.Length, nullptr}));
break;
default:
break;
}
// Pop finished stack levels.
while (!Stack.empty()) {
if (Stack.back().Node.getKind() == msgpack::Type::Array) {
if (Stack.back().Node.getArray().size() != Stack.back().Length)
break;
} else {
if (Stack.back().MapEntry ||
Stack.back().Node.getMap().size() != Stack.back().Length)
break;
}
Stack.pop_back();
}
} while (!Stack.empty());
return true;
//.........这里部分代码省略.........
示例11: OS
/// Write a MsgPack document to a binary MsgPack blob.
void Document::writeToBlob(std::string &Blob) {
Blob.clear();
raw_string_ostream OS(Blob);
msgpack::Writer MPWriter(OS);
SmallVector<WriterStackLevel, 4> Stack;
DocNode Node = getRoot();
for (;;) {
switch (Node.getKind()) {
case Type::Array:
MPWriter.writeArraySize(Node.getArray().size());
Stack.push_back(
{Node, DocNode::MapTy::iterator(), Node.getArray().begin(), false});
break;
case Type::Map:
MPWriter.writeMapSize(Node.getMap().size());
Stack.push_back(
{Node, Node.getMap().begin(), DocNode::ArrayTy::iterator(), true});
break;
case Type::Nil:
MPWriter.writeNil();
break;
case Type::Boolean:
MPWriter.write(Node.getBool());
break;
case Type::Int:
MPWriter.write(Node.getInt());
break;
case Type::UInt:
MPWriter.write(Node.getUInt());
break;
case Type::String:
MPWriter.write(Node.getString());
break;
default:
llvm_unreachable("unhandled msgpack object kind");
}
// Pop finished stack levels.
while (!Stack.empty()) {
if (Stack.back().Node.getKind() == Type::Map) {
if (Stack.back().MapIt != Stack.back().Node.getMap().end())
break;
} else {
if (Stack.back().ArrayIt != Stack.back().Node.getArray().end())
break;
}
Stack.pop_back();
}
if (Stack.empty())
break;
// Get the next value.
if (Stack.back().Node.getKind() == Type::Map) {
if (Stack.back().OnKey) {
// Do the key of a key,value pair in a map.
Node = Stack.back().MapIt->first;
Stack.back().OnKey = false;
} else {
Node = Stack.back().MapIt->second;
++Stack.back().MapIt;
Stack.back().OnKey = true;
}
} else {
Node = *Stack.back().ArrayIt;
++Stack.back().ArrayIt;
}
}
}