#include <cobjectlist.h>


Public Member Functions | |
| virtual CObjectList & | append (const CObject *object) |
| CObject * | at (CMachine::bit32 n) |
| CObjectList () | |
| CMachine::ubit32 | count () |
| CMachine::bit32 | indexOf (const CObject *object) |
| virtual CObjectList & | insert (const CObject *object, CMachine::bit32 pos) |
| CObjectList & | operator+= (const CObject *object) |
| CObjectList & | operator-= (const CObject *object) |
| CObject * | operator[] (int n) |
| virtual CObjectList & | remove (const CObject *object) |
| ~CObjectList () | |
Private Attributes | |
| CMachine::bit32 | mCount |
| CObject ** | mObjectList |
Definition at line 31 of file cobjectlist.h.
| PikeAero::CObjectList::CObjectList | ( | ) |
TODO - make these list classes templace classes TODO - use const where applicable TODO - test insert at end of list
Definition at line 25 of file cobjectlist.cpp.
00026 : CObject() 00027 , mObjectList(NULL) 00028 , mCount(0) 00029 { 00030 }
| PikeAero::CObjectList::~CObjectList | ( | ) |
| CObjectList & PikeAero::CObjectList::append | ( | const CObject * | object | ) | [virtual] |
Append an object to the list
Definition at line 54 of file cobjectlist.cpp.
References mCount, mObjectList, and PikeAero::CMemHeap::realloc().
Referenced by PikeAero::CTaskScheduler::append(), PikeAero::CEventQueue::enqueue(), insert(), PikeAero::CEventQueue::installListener(), PikeAero::CMachine::installVectorIRQ(), and operator+=().
00055 { 00056 mObjectList = (CObject**)CMemHeap::realloc( mObjectList, ( mCount + 1 ) * sizeof(CObject*) ); 00057 if ( mObjectList != NULL ) 00058 { 00059 mObjectList[mCount++] = (CObject*)object; 00060 } 00061 return *this; 00062 }


| CObject* PikeAero::CObjectList::at | ( | CMachine::bit32 | n | ) | [inline] |
Definition at line 50 of file cobjectlist.h.
References mObjectList.
Referenced by PikeAero::CTaskScheduler::at(), PikeAero::CObjectQueue::dequeue(), PikeAero::CEventQueue::dispatch(), PikeAero::CTaskScheduler::find(), PikeAero::CTaskQueue::initialize(), PikeAero::CMachine::irq(), PikeAero::CTaskQueue::next(), operator[](), PikeAero::CTaskScheduler::start(), PikeAero::CTaskScheduler::tasksEventDriven(), PikeAero::CTaskScheduler::tasksRunning(), and PikeAero::CTaskScheduler::tasksSleeping().
00050 {return mObjectList[n];}

| CMachine::ubit32 PikeAero::CObjectList::count | ( | ) | [inline] |
Definition at line 49 of file cobjectlist.h.
References mCount.
Referenced by PikeAero::CTaskScheduler::count(), PikeAero::CEventQueue::dequeue(), PikeAero::CEventQueue::dispatch(), PikeAero::CEventQueue::enqueue(), PikeAero::CTaskScheduler::find(), indexOf(), PikeAero::CTaskQueue::initialize(), PikeAero::CMachine::irq(), PikeAero::CTaskScheduler::start(), PikeAero::CTaskScheduler::tasksEventDriven(), PikeAero::CTaskScheduler::tasksRunning(), PikeAero::CTaskScheduler::tasksSleeping(), and PikeAero::CTaskScheduler::yield().
00049 {return mCount;}

| CMachine::bit32 PikeAero::CObjectList::indexOf | ( | const CObject * | object | ) |
find an object by pointer value and return it's index
Definition at line 38 of file cobjectlist.cpp.
References count(), and mObjectList.
Referenced by PikeAero::CTaskScheduler::append(), PikeAero::CMachine::installVectorIRQ(), and remove().
00039 { 00040 if ( object != NULL ) 00041 { 00042 for( CMachine::ubit32 n=0; n < count(); n++ ) 00043 { 00044 if ( mObjectList[n] == object ) 00045 { 00046 return n; 00047 } 00048 } 00049 } 00050 return -1; 00051 }


| CObjectList & PikeAero::CObjectList::insert | ( | const CObject * | object, | |
| CMachine::bit32 | pos | |||
| ) | [virtual] |
Insert an object into the list
Definition at line 77 of file cobjectlist.cpp.
References append(), mCount, memmove, mObjectList, and PikeAero::CMemHeap::realloc().
Referenced by PikeAero::CEventQueue::enqueue().
00078 { 00079 if ( pos < 0 || pos >= mCount ) 00080 { 00081 mObjectList = (CObject**)CMemHeap::realloc( mObjectList, ( mCount + 1 ) * sizeof(CObject*) ); 00082 memmove( &mObjectList[pos], &mObjectList[pos+1], ((mCount++) - pos) * sizeof(CObject*) ); 00083 } 00084 else 00085 { 00086 return append( object ); 00087 } 00088 return *this; 00089 }


| CObjectList& PikeAero::CObjectList::operator+= | ( | const CObject * | object | ) | [inline] |
Definition at line 44 of file cobjectlist.h.
References append().
00044 {return append(object);}

| CObjectList& PikeAero::CObjectList::operator-= | ( | const CObject * | object | ) | [inline] |
| CObject* PikeAero::CObjectList::operator[] | ( | int | n | ) | [inline] |
Definition at line 46 of file cobjectlist.h.
References at().
00046 {return at(n);}

| CObjectList & PikeAero::CObjectList::remove | ( | const CObject * | object | ) | [virtual] |
Remove an object from the list
Definition at line 65 of file cobjectlist.cpp.
References indexOf(), mCount, memmove, mObjectList, and PikeAero::CMemHeap::realloc().
Referenced by PikeAero::CEventQueue::removeListener(), and PikeAero::CMachine::removeVectorIRQ().
00066 { 00067 CMachine::bit32 i = indexOf( object ); 00068 if ( i >= 0 ) 00069 { 00070 memmove( &mObjectList[i], &mObjectList[i+1], ( mCount - i ) * sizeof(CObject*) ); 00071 mObjectList = (CObject**)CMemHeap::realloc( mObjectList, (mCount--) * sizeof(CObject*) ); 00072 } 00073 return *this; 00074 }


CMachine::bit32 PikeAero::CObjectList::mCount [private] |
CObject** PikeAero::CObjectList::mObjectList [private] |
1.5.8