void DesignatedInitExpr::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_EXPR); buffer << "DesignatedInitExpr "; Expr::print(buffer, 0); if (getDesignatorKind() == ARRAY_DESIGNATOR) { buffer << " array"; } else { buffer << " field"; } buffer << '\n'; buffer.indent(indent); buffer.setColor(COL_ATTR); if (getDesignatorKind() == ARRAY_DESIGNATOR) { buffer << "Designator = [" << index.getSExtValue() << "]\n"; designator->print(buffer, indent + INDENT); } else { buffer << "field = "; buffer.setColor(COL_VALUE); buffer << '\'' << field << '\'' << '\n'; } buffer.indent(indent); buffer.setColor(COL_ATTR); buffer << "InitValue=\n"; initValue->print(buffer, indent + INDENT); }
void LabelDecl::print(StringBuilder& buffer, unsigned indent) const { buffer.setColor(COL_DECL); buffer << "LabelDecl "; buffer.setColor(COL_VALUE); buffer << name << '\n'; if (TheStmt) TheStmt->print(buffer, indent+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 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 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 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 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 PointerType::fullDebugImpl(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::fullDebugImpl(buffer, indent); }
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 QualType::debugPrint(StringBuilder& buffer) const { if (isNull()) { buffer.setColor(ANSI_RED); buffer << "??"; buffer.setColor(ANSI_NORMAL); } else { printQualifiers(buffer); getTypePtr()->debugPrint(buffer); } }
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 AliasTypeDecl::print(StringBuilder& buffer, unsigned indent) const { buffer.setColor(COL_DECL); buffer << "AliasTypeDecl "; type.print(buffer); printPublic(buffer); buffer.setColor(COL_VALUE); buffer << ' ' << name; buffer.setColor(COL_ATTR); buffer << " refType: "; refType.print(buffer); buffer << '\n'; printAttributes(buffer, indent + INDENT); }
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 QualType::print(StringBuilder& buffer) const { buffer.setColor(COL_TYPE); buffer << '\''; debugPrint(buffer); buffer << '\''; const Type* T = getTypePtrOrNull(); if (T && T != T->canonicalType.getTypePtrOrNull()) { buffer.setColor(COL_CANON); buffer << "=>"; getCanonicalType().debugPrint(buffer); } }
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 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 FunctionDecl::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_DECL); buffer << "FunctionDecl "; type.print(buffer); printPublic(buffer); buffer.setColor(COL_VALUE); buffer << ' ' << name; buffer << '\n'; for (unsigned i=0; i<numArgs(); i++) { args[i]->print(buffer, indent + INDENT); } printAttributes(buffer, indent + INDENT); if (body) body->print(buffer, 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); } }
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 ImportDecl::print(StringBuilder& buffer, unsigned indent) const { buffer.setColor(COL_DECL); buffer << "ImportDecl "; buffer.setColor(COL_VALUE); buffer << modName; if (aliasLoc.isValid()) buffer << " as " << name; if (isLocal()) buffer << " local"; buffer.setColor(COL_ATTRIBUTES); buffer << " used=" << isUsed() << '/' << isUsedPublic(); if (getModule()) { buffer << " module=" << getModule()->getName(); } else { buffer << " NO MODULE"; } buffer << '\n'; }
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 VarDecl::print(StringBuilder& buffer, unsigned indent) const { buffer.indent(indent); buffer.setColor(COL_DECL); buffer << "VarDecl "; type.print(buffer); buffer.setColor(COL_ATTR); buffer << ' ' << VarDeclKind2Str(getVarKind()); printPublic(buffer); buffer.setColor(COL_VALUE); buffer << ' ' << name << '\n'; printAttributes(buffer, indent + INDENT); if (hasLocalQualifier()) buffer << " LOCAL"; indent += INDENT; if (initValue) initValue->print(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 Type::debugPrint(StringBuilder& buffer) const { // only used to print canonical type (called by Sub-Class::debugPrint()) buffer << " canonical="; if (canonicalType.isNull()) { buffer.setColor(ANSI_RED); buffer << "???"; } else { const Type* Canon = canonicalType.getTypePtr(); buffer.setColor(COL_ATTR); if (Canon == this) { buffer << "this"; } else { Canon->printName(buffer); } } buffer << '\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 UnresolvedType::debugPrint(StringBuilder& buffer) const { if (decl) { buffer << "(Unresolved)" << decl->getName(); } else { buffer.setColor(ANSI_RED); printLiteral(buffer); } }
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'; buffer.indent(indent + INDENT); buffer.setColor(COL_ATTR); buffer << "LHS=\n"; Base->print(buffer, indent + INDENT); buffer.indent(indent + INDENT); buffer.setColor(COL_ATTR); buffer << "RHS="; buffer.setColor(COL_VALUE); buffer << member << '\n'; buffer.indent(indent); buffer.setColor(COL_ATTR); buffer << "decl="; if (decl) { buffer << decl->getName(); } else { buffer.setColor(ANSI_RED); buffer << "NULL"; } buffer << '\n'; }