void PointerType::fullDebug(StringBuilder& buffer, int indent) const { buffer.indent(indent); buffer.setColor(COL_STMT); buffer << "[PointerType] " << (void*)this << '\n'; buffer.indent(indent); buffer.setColor(COL_ATTR); buffer << "pointee=\n"; PointeeType.fullDebug(buffer, indent+INDENT); Type::fullDebug(buffer, indent); }
void ExplicitCastExpr::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_EXPR); buffer << "ExplicitCastExpr "; Expr::print(buffer, 0); buffer << '\n'; buffer.setColor(COL_ATTR); buffer.indent(indent + INDENT); buffer << "DEST: "; destType.print(buffer); buffer << '\n'; inner->print(buffer, indent + INDENT); }
void DepGenerator::write(const std::string& title, const std::string& path) const { int indent = 0; StringBuilder output; output << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; output << "<dsm name='" << title << "'>\n"; indent += INDENT; output.indent(indent); output << "<model>\n"; indent += INDENT; for (unsigned i=0; i<modules.size(); i++) { const ModInfo* P = modules[i]; output.indent(indent); output << "<group name='" << P->name << "' full='module:" << P->name << "' collapsed='1'>\n"; indent += INDENT; for (unsigned j=0; j<P->files.size(); j++) { const DepFile* F = P->files[j]; if (showFiles) { output.indent(indent); const char* fname = getFileName(F->name); output << "<group name='" << fname << "' full='file:" << F->name << "' collapsed='1'>\n"; indent += INDENT; } writeAST(F->ast, output, indent); if (showFiles) { indent -= INDENT; output.indent(indent); output << "</group>\n"; } } indent -= INDENT; output.indent(indent); output << "</group>\n"; } if (showExternals) { output.indent(indent); output << "<group name='Externals' full='Externals' collapsed='1'>\n"; indent += INDENT; for (unsigned i=0; i<externals.size(); i++) { writeExternal(externals[i], output, indent); } indent -= INDENT; output.indent(indent); output << "</group>\n"; } indent -= INDENT; output.indent(indent); output << "</model>\n"; indent -= INDENT; output << "</dsm>\n"; FileUtils::writeFile(path.c_str(), path + "deps.xml", output); }
void FunctionTypeDecl::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_DECL); buffer << "FunctionTypeDecl\n"; printAttributes(buffer, indent + INDENT); func->print(buffer, indent + INDENT); }
void QualType::fullDebug(StringBuilder& buffer, int indent) const { buffer.indent(indent); buffer.setColor(COL_EXPR); buffer << "[QualType] " << (void*)this; buffer.setColor(COL_ATTR); buffer << " qualifiers="; printQualifiers(buffer); buffer << '\n'; if (isNull()) { buffer.indent(indent); buffer.setColor(ANSI_RED); buffer << "type=NULL\n"; } else { getTypePtr()->fullDebug(buffer, indent); } }
void FunctionType::fullDebugImpl(StringBuilder& buffer, int indent) const { buffer.indent(indent); buffer.setColor(COL_STMT); buffer << "[FunctionType] " << (void*)this << '\n'; buffer << "TODO\n"; Type::fullDebugImpl(buffer, indent); }
void BitOffsetExpr::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_EXPR); buffer << "BitOffsetExpr "; Expr::print(buffer, 0); buffer << '\n'; buffer.indent(indent + INDENT); buffer.setColor(COL_ATTR); buffer << "LHS=\n"; lhs->print(buffer, indent + INDENT); buffer.indent(indent + INDENT); buffer.setColor(COL_ATTR); buffer << "RHS=\n"; rhs->print(buffer, indent + INDENT); }
void EnumType::fullDebug(StringBuilder& buffer, int indent) const { buffer.indent(indent); buffer.setColor(COL_STMT); buffer << "[EnumType] " << (void*)this << '\n'; buffer << "TODO\n"; Type::fullDebug(buffer, indent); }
void ArrayValueDecl::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_DECL); buffer << "ArrayValueDecl "; buffer.setColor(COL_VALUE); buffer << name << '\n'; value->print(buffer, INDENT); }
void StringLiteral::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_EXPR); buffer << "StringLiteral "; Expr::print(buffer, 0); buffer.setColor(COL_VALUE); buffer << " '" << value << "'\n"; }
void ParenExpr::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_EXPR); buffer << "ParenExpr "; Expr::print(buffer, 0); buffer << '\n'; Val->print(buffer, indent + INDENT); }
void BooleanLiteral::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_EXPR); buffer << "BooleanLiteral "; Expr::print(buffer, 0); buffer.setColor(COL_VALUE); buffer << ' ' << getValue() << '\n'; }
void ArraySubscriptExpr::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_EXPR); buffer << "ArraySubscriptExpr "; Expr::print(buffer, 0); buffer << '\n'; base->print(buffer, indent + INDENT); idx->print(buffer, indent + INDENT); }
void BinaryOperator::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_EXPR); buffer << "BinaryOperator "; Expr::print(buffer, 0); buffer.setColor(COL_VALUE); buffer << " '" << OpCode2str(opc) << '\''; buffer << '\n'; buffer.indent(indent + INDENT); buffer.setColor(COL_ATTR); buffer << "LHS=\n"; lhs->print(buffer, indent + INDENT); buffer.indent(indent + INDENT); buffer.setColor(COL_ATTR); buffer << "RHS=\n"; rhs->print(buffer, indent + INDENT); }
void UnresolvedType::fullDebug(StringBuilder& buffer, int indent) const { buffer.indent(indent); buffer.setColor(COL_STMT); buffer << "[UnresolvedType] " << (void*)this << '\n'; buffer.indent(indent); buffer.setColor(COL_ATTR); buffer << "decl="; if (decl) { buffer << decl->getName() << '\n'; } else { buffer << "NULL\n"; } buffer.indent(indent); buffer.setColor(COL_ATTR); buffer << "expr="; printLiteral(buffer); buffer << '\n'; }
void EnumConstantDecl::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_DECL); buffer << "EnumConstantDecl "; buffer.setColor(COL_VALUE); buffer << name; buffer.setColor(COL_ATTR); buffer << ' ' << Val.getSExtValue() << '\n'; if (InitVal) InitVal->print(buffer, indent+INDENT); }
void FloatingLiteral::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_EXPR); buffer << "FloatingLiteral "; Expr::print(buffer, 0); char temp[20]; sprintf(temp, "%f", Value.convertToFloat()); buffer.setColor(COL_VALUE); buffer << ' ' << temp << '\n'; }
void ConditionalOperator::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_EXPR); buffer << "ConditionalOperator "; Expr::print(buffer, 0); buffer << '\n'; cond->print(buffer, indent + INDENT); lhs->print(buffer, indent + INDENT); rhs->print(buffer, indent + INDENT); }
void CharacterLiteral::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_EXPR); buffer << "CharacterLiteral "; Expr::print(buffer, 0); buffer << ' '; buffer.setColor(COL_VALUE); printLiteral(buffer); buffer << '\n'; }
void IntegerLiteral::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_EXPR); buffer << "IntegerLiteral "; Expr::print(buffer, 0); buffer.setColor(COL_VALUE); buffer << ' '; buffer.radix(getRadix(), Value.getSExtValue()); buffer << '\n'; }
void DepGenerator::writeExternal(const Module* P, StringBuilder& output, unsigned indent) const { output.indent(indent); output << "<group name='" << P->getName() << "' full='module:" << P->getName() << "' collapsed='1'>\n"; indent += INDENT; const Module::Symbols& symbols = P->getSymbols(); for (Module::SymbolsConstIter iter=symbols.begin(); iter!=symbols.end(); ++iter) { const Decl* D = iter->second; output.indent(indent); output << "<atom name='" << D->getName(); if (isa<FunctionDecl>(D)) output << "()"; output << "' full='"; fullName(D, output); output << "' />\n"; } indent -= INDENT; output.indent(indent); output << "</group>\n"; }
void BuiltinExpr::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_EXPR); buffer << "BuiltinExpr "; Expr::print(buffer, 0); buffer.setColor(COL_ATTR); if (isSizeof()) buffer << " sizeof"; else buffer << " elemsof"; buffer << '\n'; expr->print(buffer, indent + INDENT); }
void IdentifierExpr::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_EXPR); buffer << "IdentifierExpr "; Expr::print(buffer, 0); buffer.setColor(COL_VALUE); buffer << ' ' << getName(); buffer.setColor(COL_ATTR); if (decl) buffer << " <RESOLVED>"; else buffer << " <UNRESOLVED>"; buffer << '\n'; }
void AliasType::fullDebugImpl(StringBuilder& buffer, int indent) const { buffer.indent(indent); buffer.setColor(COL_STMT); buffer << "[AliasType] " << (void*)this << '\n'; Type::fullDebugImpl(buffer, indent); buffer.indent(indent); buffer.setColor(COL_ATTR); buffer << "decl="; if (decl) { buffer << decl->getName() << '\n'; } else { buffer << "NULL\n"; } buffer.indent(indent); buffer.setColor(COL_ATTR); buffer << "refType=\n"; // Dont print fullDebugImpl() to avoid possible circular deps refType.fullDebug(buffer, indent+INDENT); //buffer.indent(indent+INDENT); //refType.debugPrint(buffer); }
void Decl::printAttributes(StringBuilder& buffer, unsigned indent) const { if (isExported()) { buffer.indent(indent); buffer.setColor(COL_ATTRIBUTES); buffer << "exported\n"; } if (!hasAttributes()) return; buffer.indent(indent); buffer.setColor(COL_ATTRIBUTES); buffer << "Attributes: "; if (mod) { const AttrList& AL = mod->getAttributes(this); for (AttrListConstIter iter = AL.begin(); iter != AL.end(); ++iter) { if (iter != AL.begin()) buffer << ", "; (*iter)->print(buffer); } } else { buffer << "<NO MODULE>"; } buffer << '\n'; }
void MemberExpr::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_EXPR); buffer << "MemberExpr"; buffer.setColor(COL_ATTR); if (isModulePrefix()) buffer << " mod-prefix"; buffer << ' '; Expr::print(buffer, 0); buffer << '\n'; Base->print(buffer, indent + INDENT); member->print(buffer, indent + INDENT); buffer.indent(indent + INDENT); buffer.setColor(COL_ATTR); buffer << "decl="; if (decl) { buffer << decl->getName(); } else { buffer.setColor(ANSI_RED); buffer << "NULL"; } buffer << '\n'; }
void InitListExpr::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_EXPR); buffer << "InitListExpr "; Expr::print(buffer, 0); if (hasDesignators()) { buffer << " designators=1"; } buffer << '\n'; for (unsigned i=0; i<values.size(); i++) { values[i]->print(buffer, indent + INDENT); } }
void ArrayType::fullDebugImpl(StringBuilder& buffer, int indent) const { buffer.indent(indent); buffer.setColor(COL_STMT); buffer << "[ArrayType] " << (void*)this; buffer.setColor(COL_ATTR); buffer << " hasSize=" << arrayTypeBits.hasSize; buffer << " size=" << (int)Size.getZExtValue(); buffer << " isIncremental=" << arrayTypeBits.incremental << '\n'; buffer.indent(indent); buffer << "sizeExpr="; if (sizeExpr) { buffer << '\n'; sizeExpr->print(buffer, indent+INDENT); } else { buffer << "NULL\n"; } buffer.indent(indent); buffer.setColor(COL_ATTR); buffer << "element=\n"; ElementType.fullDebug(buffer, indent+INDENT); Type::fullDebugImpl(buffer, indent); }
void CallExpr::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_EXPR); buffer << "CallExpr "; Expr::print(buffer, 0); buffer.setColor(COL_VALUE); buffer << ' '; Fn->printLiteral(buffer); buffer << '\n'; Fn->print(buffer, indent + INDENT); for (unsigned i=0; i<args.size(); i++) { args[i]->print(buffer, indent + INDENT); } }
void EnumTypeDecl::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_DECL); buffer << "EnumTypeDecl "; type.print(buffer); printPublic(buffer); buffer.setColor(COL_VALUE); buffer << ' ' << name; if (isIncremental()) buffer << " incremental"; buffer << '\n'; printAttributes(buffer, indent + INDENT); for (unsigned i=0; i<numConstants(); i++) { constants[i]->print(buffer, indent + INDENT); } }