Example #1
0
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);
}
Example #2
0
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);
}
Example #3
0
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);
}
Example #4
0
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);
}
Example #5
0
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);
    }
}
Example #6
0
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);
}
Example #7
0
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);
}
Example #8
0
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);
}
Example #9
0
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);
}
Example #10
0
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";
}
Example #11
0
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);
}
Example #12
0
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';
}
Example #13
0
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);
}
Example #14
0
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);
}
Example #15
0
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';
}
Example #16
0
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);
}
Example #17
0
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';
}
Example #18
0
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);
}
Example #19
0
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';
}
Example #20
0
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';
}
Example #21
0
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";
}
Example #22
0
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);
}
Example #23
0
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';
}
Example #24
0
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);
}
Example #25
0
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';
}
Example #26
0
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';
}
Example #27
0
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);
    }
}
Example #28
0
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);
}
Example #29
0
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);
    }
}
Example #30
0
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);
    }
}