本文整理汇总了C++中TraceFunction类的典型用法代码示例。如果您正苦于以下问题:C++ TraceFunction类的具体用法?C++ TraceFunction怎么用?C++ TraceFunction使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了TraceFunction类的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: clear
void CoverageView::refresh()
{
clear();
if (!_data || !_activeItem) return;
ProfileContext::Type t = _activeItem->type();
TraceFunction* f = 0;
if (t == ProfileContext::Function) f = (TraceFunction*) _activeItem;
if (t == ProfileContext::FunctionCycle) f = (TraceFunction*) _activeItem;
if (!f) return;
_hc.clear(GlobalConfig::maxListCount());
SubCost realSum = f->inclusive()->subCost(_eventType);
TraceFunctionList l;
if (_showCallers)
l = Coverage::coverage(f, Coverage::Caller, _eventType);
else
l = Coverage::coverage(f, Coverage::Called, _eventType);
foreach(TraceFunction* f2, l) {
Coverage* c = (Coverage*) f2->association(Coverage::Rtti);
if (c && (c->inclusive()>0.0))
_hc.addCost(f2, SubCost(realSum * c->inclusive()));
}
开发者ID:DeepCV,项目名称:kcachegrind,代码行数:28,代码来源:coverageview.cpp
示例2: QTreeWidgetItem
// for call lines
InstrItem::InstrItem(InstrView* iv, QTreeWidgetItem* parent, Addr addr,
TraceInstr* instr, TraceInstrCall* instrCall)
: QTreeWidgetItem(parent)
{
_view = iv;
_addr = addr;
_instr = instr;
_instrCall = instrCall;
_instrJump = 0;
_inside = true;
setTextAlignment(0, Qt::AlignRight);
setTextAlignment(1, Qt::AlignRight);
setTextAlignment(2, Qt::AlignRight);
//qDebug("InstrItem: (file %d, line %d) Linecall to %s",
// fileno, lineno, _lineCall->call()->called()->prettyName().toAscii());
SubCost cc = _instrCall->callCount();
QString callStr = " ";
if (cc==0)
callStr += QObject::tr("Active call to '%1'")
.arg(_instrCall->call()->calledName());
else
callStr += QObject::tr("%n call(s) to '%2'", "", (uint64)cc)
.arg(_instrCall->call()->calledName());
TraceFunction* calledF = _instrCall->call()->called();
calledF->addPrettyLocation(callStr);
setText(6, callStr);
updateGroup();
updateCost();
}
开发者ID:DeepCV,项目名称:kcachegrind,代码行数:36,代码来源:instritem.cpp
示例3: context
void SourceView::context(QListViewItem* i, const QPoint & p, int c)
{
QPopupMenu popup;
// Menu entry:
TraceLineCall* lc = i ? ((SourceItem*) i)->lineCall() : 0;
TraceLineJump* lj = i ? ((SourceItem*) i)->lineJump() : 0;
TraceFunction* f = lc ? lc->call()->called() : 0;
TraceLine* line = lj ? lj->lineTo() : 0;
if (f) {
QString name = f->name();
if ((int)name.length()>Configuration::maxSymbolLength())
name = name.left(Configuration::maxSymbolLength()) + "...";
popup.insertItem(i18n("Go to '%1'").arg(name), 93);
popup.insertSeparator();
}
else if (line) {
popup.insertItem(i18n("Go to Line %1").arg(line->name()), 93);
popup.insertSeparator();
}
if ((c == 1) || (c == 2)) {
addCostMenu(&popup);
popup.insertSeparator();
}
addGoMenu(&popup);
int r = popup.exec(p);
if (r == 93) {
if (f) activated(f);
if (line) activated(line);
}
}
开发者ID:serghei,项目名称:kde-kdesdk,代码行数:34,代码来源:sourceview.cpp
示例4: context
void CoverageView::context(QListViewItem* i, const QPoint & p, int c)
{
QPopupMenu popup;
TraceFunction* f = 0;
if (i) {
f = _showCallers ?
((CallerCoverageItem*)i)->function() :
((CalleeCoverageItem*)i)->function();
}
if (f) {
QString name = f->name();
if ((int)name.length()>Configuration::maxSymbolLength())
name = name.left(Configuration::maxSymbolLength()) + "...";
popup.insertItem(i18n("Go to '%1'").arg(name), 93);
popup.insertSeparator();
}
if ((c == 0) || (!_showCallers && c == 1)) {
addCostMenu(&popup, false);
popup.insertSeparator();
}
addGoMenu(&popup);
int r = popup.exec(p);
if (r == 93) activated(f);
}
开发者ID:serghei,项目名称:kde-kdesdk,代码行数:28,代码来源:coverageview.cpp
示例5: columnAt
void CoverageView::context(const QPoint & p)
{
int c = columnAt(p.x());
QTreeWidgetItem* i = itemAt(p);
QMenu popup;
TraceFunction* f = 0;
if (i) {
f = _showCallers ?
((CallerCoverageItem*)i)->function() :
((CalleeCoverageItem*)i)->function();
}
QAction* activateFunctionAction = 0;
if (f) {
QString menuText = tr("Go to '%1'").arg(GlobalConfig::shortenSymbol(f->prettyName()));
activateFunctionAction = popup.addAction(menuText);
popup.addSeparator();
}
if ((c == 0) || (!_showCallers && c == 1)) {
addEventTypeMenu(&popup, false);
popup.addSeparator();
}
addGoMenu(&popup);
QAction* a = popup.exec(mapToGlobal(p + QPoint(0,header()->height())));
if (a == activateFunctionAction)
TraceItemView::activated(f);
}
开发者ID:DeepCV,项目名称:kcachegrind,代码行数:30,代码来源:coverageview.cpp
示例6: contains
bool Stack::contains(TraceFunction* fn)
{
// cycles are listed on there own
if (fn->cycle() == fn) return false;
if (_top->cycle() == _top) return false;
if (fn == _top)
return true;
TraceFunction* f = _top;
TraceCall* c;
for (c=_calls.first();c;c=_calls.next()) {
f = c->called();
if (f == fn)
return true;
}
TraceCallList l;
// try to extend at bottom (even if callCount 0)
l = f->callings();
for (c=l.first();c;c=l.next()) {
f = c->called();
if (f == fn)
break;
}
if (c) {
_calls.append(c);
// extend at bottom after found one
extendBottom();
return true;
}
// try to extend at top (even if callCount 0)
l = _top->callers();
for (c=l.first();c;c=l.next()) {
f = c->caller();
if (f == fn)
break;
}
if (c) {
_calls.prepend(c);
// extend at top after found one
extendTop();
return true;
}
return false;
}
开发者ID:Zekom,项目名称:kcachegrind,代码行数:54,代码来源:stackbrowser.cpp
示例7: extendBottom
void Stack::extendBottom()
{
TraceCallList l;
TraceCall *c, *call;
SubCost most;
TraceFunction* f;
if (_calls.last())
f = _calls.last()->called();
else
f = _top;
if (!f) return;
// do not follow calls from cycles
if (f->cycle() == f) return;
int max = 30;
// try to extend to lower stack frames
while (f && (max-- >0)) {
l = f->callings();
call = 0;
most = 0;
for (c=l.first();c;c=l.next()) {
// no cycle calls in stack: could be deleted without notice
if (c->called()->cycle() == c->called()) continue;
// no simple recursions
if (c->called() == _top) continue;
if (c->called()->name().isEmpty()) continue;
SubCost sc = c->subCost(0); // FIXME
if (sc == 0) continue;
if (sc > most) {
most = sc;
call = c;
}
}
if (!call)
break;
_calls.append(call);
f = call->called();
}
}
开发者ID:Zekom,项目名称:kcachegrind,代码行数:46,代码来源:stackbrowser.cpp
示例8: columnAt
void CallView::context(const QPoint & p)
{
QMenu popup;
// p is in local coordinates
int col = columnAt(p.x());
QTreeWidgetItem* i = itemAt(p);
TraceCall* c = i ? ((CallItem*) i)->call() : 0;
TraceFunction *f = 0, *cycle = 0;
QAction* activateFunctionAction = 0;
QAction* activateCycleAction = 0;
if (c) {
QString name = _showCallers ? c->callerName(true) : c->calledName(true);
f = _showCallers ? c->caller(true) : c->called(true);
cycle = f->cycle();
QString menuText = tr("Go to '%1'").arg(GlobalConfig::shortenSymbol(name));
activateFunctionAction = popup.addAction(menuText);
if (cycle) {
name = GlobalConfig::shortenSymbol(cycle->prettyName());
QString menuText = tr("Go to '%1'").arg(name);
activateCycleAction = popup.addAction(menuText);
}
popup.addSeparator();
}
if ((col == 0) || (col == 1)) {
addEventTypeMenu(&popup);
popup.addSeparator();
}
addGoMenu(&popup);
QAction* a = popup.exec(mapToGlobal(p + QPoint(0,header()->height())));
if (a == activateFunctionAction)
TraceItemView::activated(f);
else if (a == activateCycleAction)
TraceItemView::activated(cycle);
}
开发者ID:Zekom,项目名称:kcachegrind,代码行数:41,代码来源:callview.cpp
示例9: clear
void CallView::refresh()
{
clear();
setColumnWidth(1, _eventType2 ? 50:0);
if (_eventType)
_headerLabels[0] = _eventType->name();
if (_eventType2)
_headerLabels[1] = _eventType2->name();
setHeaderLabels(_headerLabels);
if (!_data || !_activeItem) return;
TraceFunction* f = activeFunction();
if (!f) return;
TraceCall* call;
// In the call lists, we skip cycles to show the real call relations
TraceCallList l = _showCallers ? f->callers(true) : f->callings(true);
QList<QTreeWidgetItem*> items;
for (call=l.first();call;call=l.next())
if (call->subCost(_eventType)>0)
items.append(new CallItem(this, 0, call));
// when inserting, switch off sorting for performance reason
setSortingEnabled(false);
addTopLevelItems(items);
setSortingEnabled(true);
// enabling sorting switches on the indicator, but we want it off
header()->setSortIndicatorShown(false);
// resize to content now (section size still can be interactively changed)
header()->resizeSections(QHeaderView::ResizeToContents);
if (!_eventType2)
setColumnWidth(1, 0);
}
开发者ID:Zekom,项目名称:kcachegrind,代码行数:37,代码来源:callview.cpp
示例10: QTreeWidgetItem
// for call lines
SourceItem::SourceItem(SourceView* sv, QTreeWidgetItem* parent,
int fileno, unsigned int lineno,
TraceLine* line, TraceLineCall* lineCall)
: QTreeWidgetItem(parent)
{
_view = sv;
_lineno = lineno;
_fileno = fileno;
_inside = true;
_line = line;
_lineCall = lineCall;
_lineJump = 0;
setTextAlignment(0, Qt::AlignRight);
setTextAlignment(1, Qt::AlignRight);
setTextAlignment(2, Qt::AlignRight);
//qDebug("SourceItem: (file %d, line %d) Linecall to %s",
// fileno, lineno, _lineCall->call()->called()->prettyName().toAscii());
SubCost cc = _lineCall->callCount();
QString callStr = " ";
if (cc==0)
callStr += QObject::tr("Active call to '%1'")
.arg(_lineCall->call()->calledName());
else
callStr += QObject::tr("%n call(s) to '%2'", "", (uint64)cc)
.arg(_lineCall->call()->calledName());
TraceFunction* calledF = _lineCall->call()->called();
calledF->addPrettyLocation(callStr);
setText(4, callStr);
updateGroup();
updateCost();
}
开发者ID:ShermanHuang,项目名称:kdesdk,代码行数:38,代码来源:sourceitem.cpp
示例11: clear
void CoverageView::refresh()
{
clear();
setColumnWidth(0, 50);
if (!_showCallers)
setColumnWidth(1, 50);
if (!_data || !_activeItem) return;
TraceItem::CostType t = _activeItem->type();
TraceFunction* f = 0;
if (t == TraceItem::Function) f = (TraceFunction*) _activeItem;
if (t == TraceItem::FunctionCycle) f = (TraceFunction*) _activeItem;
if (!f) return;
TraceFunction* ff;
TraceFunctionList l;
_hc.clear(Configuration::maxListCount());
SubCost realSum = f->inclusive()->subCost(_costType);
if (_showCallers)
l = Coverage::coverage(f, Coverage::Caller, _costType);
else
l = Coverage::coverage(f, Coverage::Called, _costType);
for (ff=l.first();ff;ff=l.next()) {
Coverage* c = (Coverage*) ff->assoziation(Coverage::Rtti);
if (c && (c->inclusive()>0.0))
_hc.addCost(ff, SubCost(realSum * c->inclusive()));
}
for(int i=0;i<_hc.realCount();i++) {
ff = (TraceFunction*) _hc[i];
Coverage* c = (Coverage*) ff->assoziation(Coverage::Rtti);
if (_showCallers)
new CallerCoverageItem(this, c, f, _costType, _groupType);
else
new CalleeCoverageItem(this, c, f, _costType, _groupType);
}
if (_hc.hasMore()) {
// a placeholder for all the functions skipped ...
ff = (TraceFunction*) _hc[_hc.maxSize()-1];
Coverage* c = (Coverage*) ff->assoziation(Coverage::Rtti);
if (_showCallers)
new CallerCoverageItem(this, _hc.count() - _hc.maxSize(),
c, f, _costType, _groupType);
else
new CalleeCoverageItem(this, _hc.count() - _hc.maxSize(),
c, f, _costType, _groupType);
}
}
开发者ID:serghei,项目名称:kde-kdesdk,代码行数:52,代码来源:coverageview.cpp
示例12: loadStart
//.........这里部分代码省略.........
// update maximum of call cost
_data->callMax()->maxCost(partInstrCall);
_data->updateMaxCallCount(partInstrCall->callCount());
}
if (hasLineInfo) {
TraceLineCall* lineCall;
TracePartLineCall* partLineCall;
lineCall = calling->lineCall(currentLine);
partLineCall = lineCall->partLineCall(_part, partCalling);
partLineCall->addCallCount(currentCallCount);
partLineCall->addCost(mapping, line);
// update maximum of call cost
_data->callMax()->maxCost(partLineCall);
_data->updateMaxCallCount(partLineCall->callCount());
}
#endif
currentCalledFile = 0;
currentCalledPartFile = 0;
currentCalledObject = 0;
currentCalledPartObject = 0;
currentCallCount = 0;
if (!line.isEmpty()) {
error(QStringLiteral("Garbage at end of call cost line ('%1')").arg(line));
}
}
else { // (nextLineType == BoringJump || nextLineType == CondJump)
TraceFunctionSource* targetSource;
if (!currentJumpToFunction)
currentJumpToFunction = currentFunction;
targetSource = (currentJumpToFile) ?
currentJumpToFunction->sourceFile(currentJumpToFile, true) :
currentFunctionSource;
#if USE_FIXCOST
new (pool) FixJump(_part, pool,
/* source */
hasLineInfo ? currentPos.fromLine : 0,
hasAddrInfo ? currentPos.fromAddr : 0,
currentPartFunction,
currentFunctionSource,
/* target */
hasLineInfo ? targetPos.fromLine : 0,
hasAddrInfo ? targetPos.fromAddr : Addr(0),
currentJumpToFunction,
targetSource,
(nextLineType == CondJump),
jumpsExecuted, jumpsFollowed);
#else
if (hasAddrInfo) {
TraceInstr* jumpToInstr;
TraceInstrJump* instrJump;
TracePartInstrJump* partInstrJump;
jumpToInstr = currentJumpToFunction->instr(targetPos.fromAddr,
true);
instrJump = currentInstr->instrJump(jumpToInstr,
(nextLineType == CondJump));
开发者ID:KDE,项目名称:kcachegrind,代码行数:67,代码来源:cachegrindloader.cpp
示例13: clear
void SourceView::refresh()
{
clear();
setColumnWidth(0, 20);
setColumnWidth(1, 50);
setColumnWidth(2, _costType2 ? 50:0);
setColumnWidth(3, 0); // arrows, defaults to invisible
setSorting(0); // always reset to line number sort
if (_costType)
setColumnText(1, _costType->name());
if (_costType2)
setColumnText(2, _costType2->name());
_arrowLevels = 0;
if (!_data || !_activeItem) {
setColumnText(4, i18n("(No Source)"));
return;
}
TraceItem::CostType t = _activeItem->type();
TraceFunction* f = 0;
if (t == TraceItem::Function) f = (TraceFunction*) _activeItem;
if (t == TraceItem::Instr) {
f = ((TraceInstr*)_activeItem)->function();
if (!_selectedItem) _selectedItem = _activeItem;
}
if (t == TraceItem::Line) {
f = ((TraceLine*)_activeItem)->functionSource()->function();
if (!_selectedItem) _selectedItem = _activeItem;
}
if (!f) return;
// Allow resizing of column 2
setColumnWidthMode(2, QListView::Maximum);
TraceFunctionSource* mainSF = f->sourceFile();
// skip first source if there's no debug info and there are more sources
// (this is for a bug in GCC 2.95.x giving unknown source for prologs)
if (mainSF &&
(mainSF->firstLineno() == 0) &&
(mainSF->lastLineno() == 0) &&
(f->sourceFiles().count()>1) ) {
// skip
}
else
fillSourceFile(mainSF, 0);
TraceFunctionSource* sf;
int fileno = 1;
TraceFunctionSourceList l = f->sourceFiles();
for (sf=l.first();sf;sf=l.next(), fileno++)
if (sf != mainSF)
fillSourceFile(sf, fileno);
if (!_costType2) {
setColumnWidthMode(2, QListView::Manual);
setColumnWidth(2, 0);
}
}
开发者ID:serghei,项目名称:kde-kdesdk,代码行数:62,代码来源:sourceview.cpp
示例14: setText
void CostTypeItem::update()
{
TraceData* d = _costItem ? _costItem->data() : 0;
double total = d ? ((double)d->subCost(_costType)) : 0.0;
if (total == 0.0) {
setText(1, "-");
setPixmap(1, QPixmap());
setText(2, "-");
setPixmap(2, QPixmap());
return;
}
TraceFunction* f = (_costItem->type()==TraceCost::Function) ?
(TraceFunction*)_costItem : 0;
TraceCost* selfTotalCost = f ? f->data() : d;
if (f && Configuration::showExpanded()) {
switch(_groupType) {
case TraceCost::Object: selfTotalCost = f->object(); break;
case TraceCost::Class: selfTotalCost = f->cls(); break;
case TraceCost::File: selfTotalCost = f->file(); break;
case TraceCost::FunctionCycle: selfTotalCost = f->cycle(); break;
default: break;
}
}
if (_costItem->type()==TraceCost::FunctionCycle) {
f = (TraceFunction*)_costItem;
selfTotalCost = f->data();
}
double selfTotal = selfTotalCost->subCost(_costType);
// for all cost items there's a self cost
_pure = _costItem ? _costItem->subCost(_costType) : SubCost(0);
double pure = 100.0 * _pure / selfTotal;
if (Configuration::showPercentage()) {
setText(2, QString("%1")
.arg(pure, 0, 'f', Configuration::percentPrecision()));
}
else
setText(2, _costItem->prettySubCost(_costType));
setPixmap(2, costPixmap(_costType, _costItem, selfTotal, false));
if (!f) {
setText(1, "-");
setPixmap(1, QPixmap());
return;
}
_sum = f->inclusive()->subCost(_costType);
double sum = 100.0 * _sum / total;
if (Configuration::showPercentage()) {
setText(1, QString("%1")
.arg(sum, 0, 'f', Configuration::percentPrecision()));
}
else
setText(1, _sum.pretty());
setPixmap(1, costPixmap(_costType, f->inclusive(), total, false));
}
开发者ID:serghei,项目名称:kde-kdesdk,代码行数:62,代码来源:costtypeitem.cpp
示例15: setText
void EventTypeItem::update()
{
TraceData* d = _costItem ? _costItem->data() : 0;
double total = d ? ((double)d->subCost(_eventType)) : 0.0;
if (total == 0.0) {
setText(1, "-");
setIcon(1, QIcon());
setText(2, "-");
setIcon(2, QIcon());
return;
}
TraceFunction* f = (_costItem && _costItem->type()==ProfileContext::Function) ?
(TraceFunction*)_costItem : 0;
ProfileCostArray* selfTotalCost = f ? f->data() : d;
if (f && GlobalConfig::showExpanded()) {
ProfileCostArray* parent = 0;
switch(_groupType) {
case ProfileContext::Object:
parent = f->object();
break;
case ProfileContext::Class:
parent = f->cls();
break;
case ProfileContext::File:
parent = f->file();
break;
case ProfileContext::FunctionCycle:
parent = f->cycle();
break;
default:
break;
}
if (parent) selfTotalCost = parent;
}
if (_costItem && _costItem->type()==ProfileContext::FunctionCycle) {
f = (TraceFunction*)_costItem;
selfTotalCost = f->data();
}
double selfTotal = selfTotalCost->subCost(_eventType);
// for all cost items there is a self cost
_pure = _costItem ? _costItem->subCost(_eventType) : SubCost(0);
double pure = 100.0 * _pure / selfTotal;
if (GlobalConfig::showPercentage()) {
setText(2, QString("%1")
.arg(pure, 0, 'f', GlobalConfig::percentPrecision()));
}
else if (_costItem)
setText(2, _costItem->prettySubCost(_eventType));
setIcon(2, QIcon(costPixmap(_eventType, _costItem, selfTotal, false)));
if (!f) {
setText(1, "-");
setIcon(1, QIcon());
return;
}
_sum = f->inclusive()->subCost(_eventType);
double sum = 100.0 * _sum / total;
if (GlobalConfig::showPercentage()) {
setText(1, QString("%1")
.arg(sum, 0, 'f', GlobalConfig::percentPrecision()));
}
else
setText(1, _sum.pretty());
setIcon(1, QIcon(costPixmap(_eventType, f->inclusive(), total, false)));
}
开发者ID:Zekom,项目名称:kcachegrind,代码行数:73,代码来源:eventtypeitem.cpp
示例16: error
// Note: Callgrind gives different IDs even for same function
// when parts of the function are from different source files.
// Thus, it is no error when multiple indexes map to same function.
TraceFunction* CachegrindLoader::compressedFunction(const QString& name,
TraceFile* file,
TraceObject* object)
{
if ((name[0] != '(') || !name[1].isDigit())
return _data->function(checkUnknown(name), file, object);
// compressed format using _functionVector
int p = name.indexOf(')');
if (p<2) {
error(QStringLiteral("Invalid compressed function ('%1')").arg(name));
return 0;
}
int index = name.midRef(1, p-1).toUInt();
TraceFunction* f = 0;
p++;
while((name.length()>p) && name.at(p).isSpace()) p++;
if (name.length()>p) {
if (_functionVector.size() <= index) {
int newSize = index * 2;
#if TRACE_LOADER
qDebug() << " CachegrindLoader::functionVector enlarged to "
<< newSize;
#endif
_functionVector.resize(newSize);
}
QString realName = checkUnknown(name.mid(p));
f = (TraceFunction*) _functionVector.at(index);
if (f && (f->name() != realName)) {
error(QStringLiteral("Redefinition of compressed function index %1 (was '%2') to %3")
.arg(index).arg(f->name()).arg(realName));
}
f = _data->function(realName, file, object);
_functionVector.replace(index, f);
#if TRACE_LOADER
qDebug() << "compressedFunction: Inserted at Index " << index
<< "\n " << f->fullName()
<< "\n in " << f->cls()->fullName()
<< "\n in " << f->file()->fullName()
<< "\n in " << f->object()->fullName();
#endif
}
else {
if ((_functionVector.size() <= index) ||
( (f=(TraceFunction*)_functionVector.at(index)) == 0)) {
error(QStringLiteral("Undefined compressed function index %1").arg(index));
return 0;
}
// there was a check if the used function (returned from KCachegrinds
// model) has the same object and file as here given to us, but that was wrong:
// that holds only if we make this assumption on the model...
}
return f;
}
开发者ID:KDE,项目名称:kcachegrind,代码行数:65,代码来源:cachegrindloader.cpp
示例17: setFunction
void CachegrindLoader::setFunction(const QString& name)
{
ensureFile();
ensureObject();
currentFunction = compressedFunction( name,
currentFile,
currentObject);
if (!currentFunction) {
error(QStringLiteral("Invalid function specification, setting to unknown"));
currentFunction = _data->function(_emptyString,
currentFile,
currentObject);
}
currentPartFunction = currentFunction->partFunction(_part,
currentPartFile,
currentPartObject);
currentFunctionSource = 0;
currentLine = 0;
currentPartLine = 0;
}
开发者ID:KDE,项目名称:kcachegrind,代码行数:25,代码来源:cachegrindloader.cpp
示例18: setCalledFunction
void CachegrindLoader::setCalledFunction(const QString& name)
{
// if called object/file not set, use current object/file
if (!currentCalledObject) {
currentCalledObject = currentObject;
currentCalledPartObject = currentPartObject;
}
if (!currentCalledFile) {
// !=0 as functions needs file
currentCalledFile = currentFile;
currentCalledPartFile = currentPartFile;
}
currentCalledFunction = compressedFunction(name,
currentCalledFile,
currentCalledObject);
if (!currentCalledFunction) {
error(QStringLiteral("Invalid called function, setting to unknown"));
currentCalledFunction = _data->function(_emptyString,
currentCalledFile,
currentCalledObject);
}
currentCalledPartFunction =
currentCalledFunction->partFunction(_part,
currentCalledPartFile,
currentCalledPartObject);
}
开发者ID:KDE,项目名称:kcachegrind,代码行数:30,代码来源:cachegrindloader.cpp
示例19: ensureFunction
// make sure that a valid function is set, at least dummy with empty name
void CachegrindLoader::ensureFunction()
{
if (currentFunction) return;
error(QStringLiteral("Function not specified, setting to unknown"));
ensureFile();
ensureObject();
currentFunction = _data->function(_emptyString,
currentFile,
currentObject);
currentPartFunction = currentFunction->partFunction(_part,
currentPartFile,
currentPartObject);
}
开发者ID:KDE,项目名称:kcachegrind,代码行数:17,代码来源:cachegrindloader.cpp
注:本文中的TraceFunction类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论