* Made TraceEntryIterator available in the kernel.

* Fixed TraceEntryIterator::Current(): If fEntry was NULL, it would
  return 0x4.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26955 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2008-08-12 21:16:15 +00:00
parent b31df46fd2
commit ef7102fa29
2 changed files with 121 additions and 98 deletions
+45
View File
@@ -63,6 +63,7 @@ class TraceOutput {
bigtime_t fLastEntryTime;
};
class TraceEntry {
public:
TraceEntry();
@@ -89,6 +90,7 @@ class TraceEntry {
}
};
class AbstractTraceEntry : public TraceEntry {
public:
AbstractTraceEntry();
@@ -108,6 +110,7 @@ class AbstractTraceEntry : public TraceEntry {
bigtime_t fTime;
};
class LazyTraceOutput : public TraceOutput {
public:
LazyTraceOutput(char* buffer, size_t bufferSize, uint32 flags)
@@ -126,6 +129,7 @@ public:
}
};
class TraceFilter {
public:
virtual ~TraceFilter();
@@ -145,11 +149,52 @@ public:
};
};
class WrapperTraceFilter : public TraceFilter {
public:
virtual void Init(TraceFilter* filter, int direction, bool continued) = 0;
};
class TraceEntryIterator {
public:
TraceEntryIterator()
:
fEntry(NULL),
fIndex(0)
{
}
void Reset()
{
fEntry = NULL;
fIndex = 0;
}
int32 Index() const
{
return fIndex;
}
TraceEntry* Current() const
{
return fEntry != NULL ? TraceEntry::FromTraceEntry(fEntry) : NULL;
}
TraceEntry* Next();
TraceEntry* Previous();
TraceEntry* MoveTo(int32 index);
private:
trace_entry* _NextNonBufferEntry(trace_entry* entry);
trace_entry* _PreviousNonBufferEntry(trace_entry* entry);
private:
trace_entry* fEntry;
int32 fIndex;
};
#endif // __cplusplus
#ifdef __cplusplus