ComponentTransitPtr SceneNodeTreeComponentGenerator::getTreeComponent(Tree* const Parent, const boost::any& Value, bool IsSelected, bool Expanded, bool Leaf, UInt32 Row, bool HasFocus) { NodeUnrecPtr TheNode; try { TheNode = boost::any_cast<NodeUnrecPtr>(Value); } catch (boost::bad_any_cast &) { //Could not convert to FieldContinerFieldPath return ComponentTransitPtr(NULL); } //Get the text for the label std::string LabelText(""); if(TheNode != NULL) { const Char8* name(getName(TheNode)); if(name) { LabelText += std::string(name) + " "; } if(TheNode->getCore() != NULL) { LabelText += std::string("[") + TheNode->getCore()->getType().getCName() + "]"; } else { LabelText += "[NULL core]"; } } else { LabelText += "NULL"; } ComponentRecPtr GenComp = getTreeComponentText(Parent, LabelText, IsSelected, Expanded, Leaf, Row, HasFocus); if(TheNode != NULL && !(TheNode->getTravMask() & getTravMask())) { GenComp->setEnabled(false); } return ComponentTransitPtr(GenComp); }
ComponentTransitPtr FieldContainerFieldPathComponentGenerator::getTreeComponent(Tree* const Parent, const boost::any& Value, bool IsSelected, bool Expanded, bool Leaf, UInt32 Row, bool HasFocus) { FieldContainerTreeModel::ContainerFieldIdPair ThePair; try { ThePair = boost::any_cast<FieldContainerTreeModel::ContainerFieldIdPair>(Value); } catch (boost::bad_any_cast &) { //Could not convert to FieldContinerFieldPath return ComponentTransitPtr(NULL); } //Get the text for the label std::string LabelText(""); if(ThePair._FieldID == 0) { if(ThePair._Container != NULL) { if(ThePair._Container->getType().isDerivedFrom(AttachmentContainer::getClassType())) { const Char8* name(getName(dynamic_cast<AttachmentContainer*>(ThePair._Container))); if(name) { LabelText += std::string(name) + " "; } } LabelText += std::string("[") + ThePair._Container->getType().getCName() + "]"; } else { LabelText += "NULL"; } } else { LabelText = ThePair._Container->getFieldDescription(ThePair._FieldID)->getCName() + std::string(" [") + ThePair._Container->getFieldDescription(ThePair._FieldID)->getFieldType().getContentType().getCName() + "]"; } return getTreeComponentText(Parent, LabelText, IsSelected, Expanded, Leaf, Row, HasFocus); }
static void printAddr(EventProc proc, Addr addr) { Word label; label = AddrLabel(proc, addr); if (label != 0 && addr != 0) { /* We assume labelling zero is meant to record a point in time */ EventString sym = LabelText(proc, label); if (sym != NULL) { putchar(' '); printStr(sym, (style == 'C')); } else { printf((style == '\0') ? " sym%05lX" : " \"sym %lX\"", (ulong)label); } } else printf((style != 'C') ? " %08lX" : " %lu", (ulong)addr); }
static void readLog(EventProc proc) { EventCode c; Word bucketLimit = bucketSize; char *styleConv = NULL; /* suppress uninit warning */ /* Print event count header. */ if (reportEvents) { if (style == '\0') { printf(" bucket:"); for(c = 0; c <= EventCodeMAX; ++c) if (eventEnabled[c]) printf(" %04X", (unsigned)c); printf(" all\n"); } } /* Init event counts. */ for(c = 0; c <= EventCodeMAX; ++c) totalEventCount[c] = 0; clearBucket(); /* Init style. */ switch (style) { case '\0': styleConv = " %8lX"; break; case 'C': styleConv = ", %lu"; break; case 'L': styleConv = " %lX"; break; default: error("Unknown style code '%c'", style); } while (TRUE) { /* loop for each event */ char *eventFormat; int argCount, i; Event event; EventCode code; Res res; /* Read and parse event. */ res = EventRead(&event, proc); if (res == ResFAIL) break; /* eof */ if (res != ResOK) error("Truncated log"); eventTime = event->any.clock; code = EventGetCode(event); /* Output bucket, if necessary, and update counters */ if (bucketSize != 0 && eventTime >= bucketLimit) { reportBucketResults(bucketLimit-1); clearBucket(); do { bucketLimit += bucketSize; } while (eventTime >= bucketLimit); } if (reportEvents) { ++bucketEventCount[code]; ++totalEventCount[code]; } /* Output event. */ if (verbose) { eventFormat = EventCode2Format(code); argCount = strlen(eventFormat); if (eventFormat[0] == '0') argCount = 0; if (style == 'L') putchar('('); switch (style) { case '\0': case 'L': { printf("%-19s", EventCode2Name(code)); } break; case 'C': printf("%u", (unsigned)code); break; } switch (style) { case '\0': printf(" %8lu", (ulong)eventTime); break; case 'C': printf(", %lu", (ulong)eventTime); break; case 'L': printf(" %lX", (ulong)eventTime); break; } switch (event->any.code) { case EventLabel: { switch (style) { case '\0': case 'C': { EventString sym = LabelText(proc, event->aw.w1); printf((style == '\0') ? " %08lX " : ", %lu, ", (ulong)event->aw.a0); if (sym != NULL) { printStr(sym, (style == 'C')); } else { printf((style == '\0') ? "sym %05lX" : "sym %lX\"", (ulong)event->aw.w1); } } break; case 'L': { printf(" %lX %lX", (ulong)event->aw.a0, (ulong)event->aw.w1); } break; } } break; case EventMeterValues: { switch (style) { case '\0': { if (event->pddwww.w3 == 0) { printf(" %08lX 0 N/A N/A N/A N/A", (ulong)event->pddwww.p0); } else { double mean = event->pddwww.d1 / (double)event->pddwww.w3; /* .stddev: stddev = sqrt(meanSquared - mean^2), but see */ /* <code/meter.c#limitation.variance>. */ double stddev = sqrt(fabs(event->pddwww.d2 - (mean * mean))); printf(" %08lX %8u %8u %8u %#8.3g %#8.3g", (ulong)event->pddwww.p0, (uint)event->pddwww.w3, (uint)event->pddwww.w4, (uint)event->pddwww.w5, mean, stddev); } printAddr(proc, (Addr)event->pddwww.p0); } break; case 'C': { putchar(','); printAddr(proc, (Addr)event->pddwww.p0); printf(", %.10G, %.10G, %u, %u, %u", event->pddwww.d1, event->pddwww.d2, (uint)event->pddwww.w3, (uint)event->pddwww.w4, (uint)event->pddwww.w5); } break; case 'L': { printf(" %lX %#.10G %#.10G %X %X %X", (ulong)event->pddwww.p0, event->pddwww.d1, event->pddwww.d2, (uint)event->pddwww.w3, (uint)event->pddwww.w4, (uint)event->pddwww.w5); } break; } } break; case EventPoolInit: { /* pool, arena, class */ printf(styleConv, (ulong)event->ppp.p0); printf(styleConv, (ulong)event->ppp.p1); /* class is a Pointer, but we label them, so call printAddr */ if (style != 'L') { if (style == 'C') putchar(','); printAddr(proc, (Addr)event->ppp.p2); } else printf(styleConv, (ulong)event->ppp.p2); } break; default: for (i = 0; i < argCount; ++i) { switch(code) { #include "eventdef.h" #undef RELATION } } } if (style == 'L') putchar(')'); putchar('\n'); fflush(stdout); } processEvent(proc, event, eventTime); EventDestroy(proc, event); } /* while(!feof(input)) */ /* report last bucket (partial) */ if (bucketSize != 0) { reportBucketResults(eventTime); } if (reportEvents) { /* report totals */ switch (style) { case '\0': { printf("\n run:"); } break; case 'L': { printf("(t"); } break; case 'C': { printf("%lu", eventTime+1); } break; } reportEventResults(totalEventCount); /* explain event codes */ if (style == '\0') { printf("\n"); for(c = 0; c <= EventCodeMAX; ++c) if (eventEnabled[c]) printf(" %04X %s\n", (unsigned)c, EventCode2Name(c)); if (bucketSize == 0) printf("\nevent clock stopped at %lu\n", (ulong)eventTime); } } }