if (numOfCalls) {
quint64 binaryDataSize = 0;
QVector<ApiTraceCall*> calls(numOfCalls);
- const FrameOffset &frameOffset = m_frameOffsets[frameIdx];
+ const FrameBookmark &frameBookmark = m_frameBookmarks[frameIdx];
- m_parser.setCurrentOffset(frameOffset.start);
- m_parser.setCurrentCallNumber(frameOffset.callNumber);
+ m_parser.setBookmark(frameBookmark.start);
Trace::Call *call;
int parsedCalls = 0;
int TraceLoader::numberOfFrames() const
{
- return m_frameOffsets.size();
+ return m_frameBookmarks.size();
}
int TraceLoader::numberOfCallsInFrame(int frameIdx) const
{
- if (frameIdx > m_frameOffsets.size()) {
+ if (frameIdx > m_frameBookmarks.size()) {
return 0;
}
- FrameOffsets::const_iterator itr =
- m_frameOffsets.find(frameIdx);
+ FrameBookmarks::const_iterator itr =
+ m_frameBookmarks.find(frameIdx);
return itr->numberOfCalls;
}
ApiTraceFrame *currentFrame = 0;
Trace::Call *call;
- Trace::File::Offset startOffset;
+ Trace::ParseBookmark startBookmark;
int numOfFrames = 0;
int numOfCalls = 0;
- unsigned callNum = 0;
int lastPercentReport = 0;
- startOffset = m_parser.currentOffset();
- callNum = m_parser.currentCallNumber();
+ m_parser.getBookmark(startBookmark);
while ((call = m_parser.scan_call())) {
++numOfCalls;
if (isCallAFrameMarker(call)) {
- Trace::File::Offset endOffset = m_parser.currentOffset();
- FrameOffset frameOffset(startOffset);
- frameOffset.numberOfCalls = numOfCalls;
- frameOffset.callNumber = callNum;
+ FrameBookmark frameBookmark(startBookmark);
+ frameBookmark.numberOfCalls = numOfCalls;
currentFrame = new ApiTraceFrame();
currentFrame->number = numOfFrames;
currentFrame->setNumChildren(numOfCalls);
frames.append(currentFrame);
- m_frameOffsets[numOfFrames] = frameOffset;
+ m_frameBookmarks[numOfFrames] = frameBookmark;
++numOfFrames;
if (m_parser.percentRead() - lastPercentReport >= 5) {
emit parsed(m_parser.percentRead());
lastPercentReport = m_parser.percentRead();
}
- startOffset = endOffset;
- callNum = m_parser.currentCallNumber();
+ m_parser.getBookmark(startBookmark);
numOfCalls = 0;
}
delete call;
}
if (numOfCalls) {
- //Trace::File::Offset endOffset = m_parser.currentOffset();
- FrameOffset frameOffset(startOffset);
- frameOffset.numberOfCalls = numOfCalls;
- frameOffset.callNumber = callNum;
+ //Trace::File::Bookmark endBookmark = m_parser.currentBookmark();
+ FrameBookmark frameBookmark(startBookmark);
+ frameBookmark.numberOfCalls = numOfCalls;
currentFrame = new ApiTraceFrame();
currentFrame->number = numOfFrames;
currentFrame->setNumChildren(numOfCalls);
frames.append(currentFrame);
- m_frameOffsets[numOfFrames] = frameOffset;
+ m_frameBookmarks[numOfFrames] = frameBookmark;
++numOfFrames;
}
void frameLoaded(ApiTraceFrame *frame);
private:
- struct FrameOffset {
- FrameOffset()
+ struct FrameBookmark {
+ FrameBookmark()
: numberOfCalls(0)
{}
- FrameOffset(const Trace::File::Offset &s)
+ FrameBookmark(const Trace::ParseBookmark &s)
: start(s),
numberOfCalls(0)
{}
- Trace::File::Offset start;
+ Trace::ParseBookmark start;
int numberOfCalls;
- unsigned callNumber;
};
bool isCallAFrameMarker(const Trace::Call *call) const;
int numberOfFrames() const;
QString m_fileName;
ApiTrace::FrameMarker m_frameMarker;
- typedef QMap<int, FrameOffset> FrameOffsets;
- FrameOffsets m_frameOffsets;
+ typedef QMap<int, FrameBookmark> FrameBookmarks;
+ FrameBookmarks m_frameBookmarks;
QHash<QString, QUrl> m_helpHash;
int Loader::numberOfFrames() const
{
- return m_frameOffsets.size();
+ return m_frameBookmarks.size();
}
int Loader::numberOfCallsInFrame(int frameIdx) const
{
- if (frameIdx > m_frameOffsets.size()) {
+ if (frameIdx > m_frameBookmarks.size()) {
return 0;
}
- FrameOffsets::const_iterator itr =
- m_frameOffsets.find(frameIdx);
+ FrameBookmarks::const_iterator itr =
+ m_frameBookmarks.find(frameIdx);
return itr->second.numberOfCalls;
}
}
Trace::Call *call;
- File::Offset startOffset;
+ ParseBookmark startBookmark;
int numOfFrames = 0;
int numOfCalls = 0;
- unsigned callNum = 0;
int lastPercentReport = 0;
- startOffset = m_parser.currentOffset();
- callNum = m_parser.currentCallNumber();
+ m_parser.getBookmark(startBookmark);
while ((call = m_parser.scan_call())) {
++numOfCalls;
if (isCallAFrameMarker(call)) {
- File::Offset endOffset = m_parser.currentOffset();
- FrameOffset frameOffset(startOffset);
- frameOffset.numberOfCalls = numOfCalls;
- frameOffset.callNumber = callNum;
+ FrameBookmark frameBookmark(startBookmark);
+ frameBookmark.numberOfCalls = numOfCalls;
- m_frameOffsets[numOfFrames] = frameOffset;
+ m_frameBookmarks[numOfFrames] = frameBookmark;
++numOfFrames;
if (m_parser.percentRead() - lastPercentReport >= 5) {
<< "..."<<std::endl;
lastPercentReport = m_parser.percentRead();
}
- startOffset = endOffset;
- callNum = m_parser.currentCallNumber();
+
+ m_parser.getBookmark(startBookmark);
numOfCalls = 0;
}
//call->dump(std::cout, color);
{
int numOfCalls = numberOfCallsInFrame(idx);
if (numOfCalls) {
- const FrameOffset &frameOffset = m_frameOffsets[idx];
+ const FrameBookmark &frameBookmark = m_frameBookmarks[idx];
std::vector<Trace::Call*> calls(numOfCalls);
- m_parser.setCurrentOffset(frameOffset.start);
- m_parser.setCurrentCallNumber(frameOffset.callNumber);
+ m_parser.setBookmark(frameBookmark.start);
Trace::Call *call;
int parsedCalls = 0;
std::vector<Trace::Call*> frame(int idx);
private:
- struct FrameOffset {
- FrameOffset()
+ struct FrameBookmark {
+ FrameBookmark()
: numberOfCalls(0)
{}
- FrameOffset(const File::Offset &s)
+ FrameBookmark(const ParseBookmark &s)
: start(s),
numberOfCalls(0)
{}
- File::Offset start;
+ ParseBookmark start;
int numberOfCalls;
- unsigned callNumber;
};
bool isCallAFrameMarker(const Trace::Call *call) const;
Trace::Parser m_parser;
FrameMarker m_frameMarker;
- typedef std::map<int, FrameOffset> FrameOffsets;
- FrameOffsets m_frameOffsets;
+ typedef std::map<int, FrameBookmark> FrameBookmarks;
+ FrameBookmarks m_frameBookmarks;
};
}
namespace Trace {
+
+struct ParseBookmark
+{
+ File::Offset offset;
+ unsigned next_call_no;
+};
+
+
class Parser
{
protected:
return file->supportsOffsets();
}
- File::Offset currentOffset()
- {
- return file->currentOffset();
- }
-
- void setCurrentOffset(const File::Offset &offset)
- {
- file->setCurrentOffset(offset);
+ void getBookmark(ParseBookmark &bookmark) {
+ bookmark.offset = file->currentOffset();
+ bookmark.next_call_no = next_call_no;
}
- unsigned currentCallNumber() const
- {
- return next_call_no;
- }
-
- void setCurrentCallNumber(unsigned num)
- {
- next_call_no = num;
+ void setBookmark(const ParseBookmark &bookmark) {
+ file->setCurrentOffset(bookmark.offset);
+ next_call_no = bookmark.next_call_no;
}
int percentRead()