a simple list template that uses realtime memory
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3756 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
e08165bb6f
commit
20789329c3
64
src/add-ons/media/media-add-ons/mixer/RtList.h
Normal file
64
src/add-ons/media/media-add-ons/mixer/RtList.h
Normal file
@ -0,0 +1,64 @@
|
||||
#ifndef _MEDIA_RT_LIST_H
|
||||
#define _MEDIA_RT_LIST_H
|
||||
/* Copyright (C) 2003 Marcus Overhagen
|
||||
* Released under terms of the MIT license.
|
||||
*
|
||||
* A simple list template that uses realtime
|
||||
* memory and does no error checking. Since
|
||||
* it doesn't call constructors ot destructors,
|
||||
* don't use it to store objects.
|
||||
*/
|
||||
|
||||
#include <RealtimeAlloc.h>
|
||||
|
||||
template<class value> class RtList
|
||||
{
|
||||
public:
|
||||
RtList()
|
||||
: item_max(INIT_COUNT),
|
||||
item_count(0),
|
||||
items((value *)rtm_alloc(NULL, sizeof(value) * INIT_COUNT))
|
||||
{
|
||||
}
|
||||
|
||||
~RtList()
|
||||
{
|
||||
rtm_free(items);
|
||||
}
|
||||
|
||||
value *Create()
|
||||
{
|
||||
if (item_count == item_max) {
|
||||
item_max += INC_COUNT;
|
||||
rtm_realloc((void **)&items, sizeof(value) * item_max);
|
||||
}
|
||||
return &items[item_count++];
|
||||
}
|
||||
|
||||
value *ItemAt(int index)
|
||||
{
|
||||
return &items[index];
|
||||
}
|
||||
|
||||
int CountItems()
|
||||
{
|
||||
return item_count;
|
||||
}
|
||||
|
||||
void MakeEmpty()
|
||||
{
|
||||
item_count = 0;
|
||||
}
|
||||
|
||||
private:
|
||||
RtList(const RtList<value> &other);
|
||||
RtList<value> &operator=(const RtList<value> &other);
|
||||
|
||||
private:
|
||||
enum { INIT_COUNT = 8, INC_COUNT = 16 };
|
||||
int item_max;
|
||||
int item_count;
|
||||
value *items;
|
||||
};
|
||||
|
||||
#endif // _MEDIA_RT_LIST_H
|
Loading…
Reference in New Issue
Block a user