void printObject(Object* obj, int indent) { switch (obj->kind) { case OBJ_CONSTANT: pad(indent); printf("Const %s = ", obj->name); printConstantValue(obj->constAttrs->value); break; case OBJ_TYPE: pad(indent); printf("Type %s = ", obj->name); printType(obj->typeAttrs->actualType); break; case OBJ_VARIABLE: pad(indent); printf("Var %s : ", obj->name); printType(obj->varAttrs->type); break; case OBJ_PARAMETER: pad(indent); if (obj->paramAttrs->kind == PARAM_VALUE) printf("Param %s : ", obj->name); else printf("Param VAR %s : ", obj->name); printType(obj->paramAttrs->type); break; case OBJ_FUNCTION: pad(indent); printf("Function %s : ", obj->name); printType(obj->funcAttrs->returnType); printf("\n"); printScope(obj->funcAttrs->scope, indent + 4); break; case OBJ_PROCEDURE: pad(indent); printf("Procedure %s\n", obj->name); printScope(obj->procAttrs->scope, indent + 4); break; case OBJ_PROGRAM: pad(indent); printf("Program %s\n", obj->name); printScope(obj->progAttrs->scope, indent + 4); break; } }
void PrettyPrinter::printBlock(BlockNode *node) { printScope(node->scope()); std::string indentation(m_indent, ' '); for (uint32_t i = 0; i != node->nodes(); ++i) { m_out << indentation; node->nodeAt(i)->visit(this); if (!node->nodeAt(i)->isIfNode() && !node->nodeAt(i)->isForNode() && !node->nodeAt(i)->isWhileNode()) m_out << ";"; m_out << std::endl; } }
void printScope ( c_metaObject scope ) { if (scope->definedIn) { printScope (scope->definedIn); printf ("::%s", scope->name); } else { if (scope->name) { printf ("::%s", scope->name); } } }
static void printScope ( c_metaObject scope ) { if (scope == NULL) { return; } if (scope->definedIn) { printScope (scope->definedIn); printf ("::%s", scope->name); } else { if (scope->name) { printf ("::%s", scope->name); } } }
virtual void visitBlockNode(BlockNode* node) { if(indentationLevel >= 0){ os << "{" << endl; } indentationLevel++; printScope(node->scope()); for(uint32_t i = 0; i < node->nodes(); ++i) { os << indent(); node->nodeAt(i)->visit(this); if(needSemicolon(node->nodeAt(i))) { os << ';'; } os << endl; } indentationLevel--; if(indentationLevel >= 0) { os << indent() << "}" << endl; } }
static c_bool display_orc ( c_object o, c_voidp args ) { refLeaf ord = (refLeaf)o; monitor_orc trace = (monitor_orc)args; regmatch_t match[1]; if (ord->tr == nullType) { if (trace->delta) { if (abs(ord->rc - ord->prc) >= trace->extendCountLimit) { printf ("%6d <undefined>\r\n", (ord->rc - ord->prc)); } } else { if (ord->rc >= trace->extendCountLimit) { printf ("%6d <undefined>\r\n", ord->rc); } } } else { switch (c_baseObject(ord->tr)->kind) { case M_COLLECTION: switch (c_collectionType(ord->tr)->kind) { case C_UNDEFINED: case C_LIST: case C_ARRAY: case C_BAG: case C_SET: case C_MAP: case C_DICTIONARY: case C_SEQUENCE: case C_STRING: case C_WSTRING: case C_QUERY: case C_SCOPE: case C_COUNT: if (trace->delta) { if (abs(ord->rc - ord->prc) >= trace->extendCountLimit) { if (trace->filterExpression) { if (regexec (&trace->expression, c_metaObject(ord->tr)->name, 1, match, 0) == REG_NOMATCH) { break; } } printf ("%6d (%6d) %6d %10d %-15s %-15s ", ord->rc - ord->prc, ord->rc, (int)c_type(ord->tr)->size, (int)(c_type(ord->tr)->size * (ord->rc - ord->prc)), baseKind[c_baseObject(ord->tr)->kind], collectionKind[c_collectionType(ord->tr)->kind]); printScope (c_metaObject(ord->tr)->definedIn); printf ("::%s\r\n", c_metaObject(ord->tr)->name); trace->totalSizeCount += c_type(ord->tr)->size * (ord->rc - ord->prc); trace->totalObjectCount += ord->rc - ord->prc; } } else { if (ord->rc >= trace->extendCountLimit) { if (trace->filterExpression) { if (regexec (&trace->expression, c_metaObject(ord->tr)->name, 1, match, 0) == REG_NOMATCH) { break; } } printf ("%6d %6d %10d %-15s %-15s ", ord->rc, (int)c_type(ord->tr)->size, (int)(c_type(ord->tr)->size * ord->rc), baseKind[c_baseObject(ord->tr)->kind], collectionKind[c_collectionType(ord->tr)->kind]); printScope (c_metaObject(ord->tr)->definedIn); printf ("::%s\r\n", c_metaObject(ord->tr)->name); trace->totalSizeCount += c_type(ord->tr)->size * ord->rc; trace->totalObjectCount += ord->rc; } } break; } break; case M_PRIMITIVE: case M_TYPEDEF: case M_ENUMERATION: case M_UNION: case M_STRUCTURE: case M_INTERFACE: case M_CLASS: case M_EXCEPTION: case M_EXTENT: case M_EXTENTSYNC: if (trace->delta) { if (abs(ord->rc - ord->prc) >= trace->extendCountLimit) { if (trace->filterExpression) { if (regexec (&trace->expression, c_metaObject(ord->tr)->name, 1, match, 0) == REG_NOMATCH) { break; } } printf ("%6d (%6d) %6d %10d %-15s ", ord->rc - ord->prc, ord->rc, (int)c_type(ord->tr)->size, (int)(c_type(ord->tr)->size * (ord->rc - ord->prc)), baseKind[c_baseObject(ord->tr)->kind]); printf (" "); printScope (c_metaObject(ord->tr)->definedIn); printf ("::%s\r\n", c_metaObject(ord->tr)->name); trace->totalSizeCount += c_type(ord->tr)->size * (ord->rc - ord->prc); trace->totalObjectCount += ord->rc - ord->prc; } } else { if (ord->rc >= trace->extendCountLimit) { if (trace->filterExpression) { if (regexec (&trace->expression, c_metaObject(ord->tr)->name, 1, match, 0) == REG_NOMATCH) { break; } } printf ("%6d %6d %10d %-15s ", ord->rc, (int)c_type(ord->tr)->size, (int)(c_type(ord->tr)->size * ord->rc), baseKind[c_baseObject(ord->tr)->kind]); printf (" "); printScope (c_metaObject(ord->tr)->definedIn); printf ("::%s\r\n", c_metaObject(ord->tr)->name); trace->totalSizeCount += c_type(ord->tr)->size * ord->rc; trace->totalObjectCount += ord->rc; } } break; case M_UNDEFINED: case M_ATTRIBUTE: case M_CONSTANT: case M_CONSTOPERAND: case M_EXPRESSION: case M_LITERAL: case M_MEMBER: case M_OPERATION: case M_PARAMETER: case M_RELATION: case M_BASE: case M_UNIONCASE: case M_COUNT: case M_MODULE: break; } } ord->prc = ord->rc; ord->rc = 0; return TRUE; }
static void metaobject ( c_metaObject o, monitor_trc trace ) { refLeaf ted; if (c_baseObject(o)->kind < M_COUNT) { switch (c_baseObject(o)->kind) { case M_UNDEFINED: case M_ATTRIBUTE: case M_CONSTANT: case M_CONSTOPERAND: case M_EXPRESSION: case M_LITERAL: case M_MEMBER: case M_OPERATION: case M_PARAMETER: case M_RELATION: case M_BASE: case M_UNIONCASE: case M_COUNT: break; case M_COLLECTION: switch (c_collectionType(o)->kind) { case C_UNDEFINED: case C_LIST: case C_ARRAY: case C_BAG: case C_SET: case C_MAP: case C_DICTIONARY: case C_SEQUENCE: case C_STRING: case C_WSTRING: case C_QUERY: case C_SCOPE: case C_COUNT: if (trace->delta) { ted = monitor_typeExtent (c_type(o), trace); if (ted) { if ((ted->ec - ted->ecp) >= trace->objectCountLimit) { if (trace->filterExpression) { if (strstr (o->name, trace->filterExpression) == NULL) { break; } } printf ("%6d (%8d) %8d %12lld %-15s %-15s ", ted->ec - ted->ecp, ted->ec, c_type(o)->size, (long long)(c_type(o)->size * (long long)((int)ted->ec - (int)ted->ecp)), baseKind[c_baseObject(o)->kind], collectionKind[c_collectionType(o)->kind]); printScope (o->definedIn); printf ("::%s\r\n", o->name); trace->totalCount += c_type(o)->size * (ted->ec - ted->ecp); trace->totalExtentCount += ted->ec - ted->ecp; trace->index++; } } } else { if (c_type(o)->objectCount >= trace->objectCountLimit) { if (trace->filterExpression) { if (strstr (o->name, trace->filterExpression) == NULL) { break; } } printf ("%8d %8d %12lld %-15s %-15s ", c_type(o)->objectCount, c_type(o)->size, (long long)((long long)c_type(o)->size * c_type(o)->objectCount), baseKind[c_baseObject(o)->kind], collectionKind[c_collectionType(o)->kind]); printScope (o->definedIn); printf ("::%s\r\n", o->name); trace->totalCount += c_type(o)->size * c_type(o)->objectCount; trace->totalExtentCount += c_type(o)->objectCount; trace->index++; } } break; } break; case M_PRIMITIVE: case M_TYPEDEF: case M_ENUMERATION: case M_UNION: case M_STRUCTURE: case M_INTERFACE: case M_CLASS: case M_EXCEPTION: if (trace->delta) { ted = monitor_typeExtent (c_type(o), trace); if (ted) { if ((ted->ec - ted->ecp) >= trace->objectCountLimit) { if (trace->filterExpression) { if (strstr (o->name, trace->filterExpression) == NULL) { break; } } printf ("%6d (%8d) %8d %12lld %-15s ", ted->ec - ted->ecp, ted->ec, c_type(o)->size, (long long)(c_type(o)->size * (long long)((int)ted->ec - (int)ted->ecp)), baseKind[c_baseObject(o)->kind]); printf (" "); printScope (o->definedIn); printf ("::%s\r\n", o->name); trace->totalCount += c_type(o)->size * (ted->ec - ted->ecp); trace->totalExtentCount += ted->ec - ted->ecp; trace->index++; } } } else { if (c_type(o)->objectCount >= trace->objectCountLimit) { if (trace->filterExpression) { if (strstr (o->name, trace->filterExpression) == NULL) { break; } } printf ("%8d %8d %12lld %-15s ", c_type(o)->objectCount, c_type(o)->size, (long long)((long long)c_type(o)->size * c_type(o)->objectCount), baseKind[c_baseObject(o)->kind]); printf (" "); printScope (o->definedIn); printf ("::%s\r\n", o->name); trace->totalCount += c_type(o)->size * c_type(o)->objectCount; trace->totalExtentCount += c_type(o)->objectCount; trace->index++; } } break; case M_MODULE: c_metaWalk (o, metaobject, trace); } } }