An example of the linked object classes and their use.
#ifndef DEBUG
#define DEBUG
#endif
#include <stdio.h>
using namespace UCOMMON_NAMESPACE;
typedef linked_value<int> ints;
static OrderedIndex list;
class member : public DLinkedObject
{
public:
inline member(unsigned v) : DLinkedObject() {value = v;}
unsigned value;
};
extern "C" int main()
{
linked_pointer<ints> ptr;
unsigned count = 0;
int xv = 3, xn = 5;
ints v1(&list, xv);
ints v2(&list);
v2 = xn;
ptr = &list;
while(ptr) {
switch(++count)
{
case 1:
assert(ptr->value == 3);
break;
case 2:
assert(ptr->value == 5);
}
++ptr;
}
assert(count == 2);
member ov1 = 1, ov2 = 2, ov3 = 3;
assert(ov2.value == 2);
st.push(&ov1);
st.push(&ov2);
st.push(&ov3);
member *mv = (member *)st.pop();
assert(mv->value == 3);
st.pop();
st.pop();
assert(NULL == st.pop());
objqueue<member> que;
que.add(&ov1);
que.add(&ov2);
que.add(&ov3);
mv = que.pop();
assert(mv->value == 3);
mv = que.pull();
assert(mv != NULL);
return 0;
}