00001 #ifndef __si_std_queuet_h__8da8b1de_a01b_49d0_b65c_68b52f1c2047
00002 #define __si_std_queuet_h__8da8b1de_a01b_49d0_b65c_68b52f1c2047
00003
00004
00005 #include <si_std/queue.h>
00006
00007
00028 #define sm_queueDecl(T) \
00029 typedef sc_queue T##Queue;\
00030 typedef sc_queueNode* T##QueueIterator;\
00031 sc_status T##Queue_construct(T##Queue*,\
00032 s_int32 initialCapacity);\
00033 sc_status T##Queue_pushBack(T##Queue*, T* pt);\
00034 sc_status T##Queue_popFront(T##Queue*, T* pt);\
00035 sc_status T##Queue_destruct(T##Queue* pq);\
00036 static T* T##QueueIterator_get(T##QueueIterator* it)\
00037 { return (T*)((*it)+1); }
00038
00045 #define sm_queueImpl(T) \
00046 sc_status T##Queue_construct(T##Queue* q,\
00047 s_int32 c)\
00048 { \
00049 static const sc_queueNodeDesc d = { sizeof(T),\
00050 (sc_queueNode_constructCopy_f)T##_constructCopy,\
00051 (sc_queueNode_assign_f)T##_assign,\
00052 (sc_queueNode_destruct_f)T##_destruct }; \
00053 return sc_queue_construct(q,&d,c); \
00054 } \
00055 sc_status T##Queue_pushBack(T##Queue* q, T* v) \
00056 { return sc_queue_pushBack(q,v); }\
00057 sc_status T##Queue_popFront(T##Queue* q, T* v) \
00058 { return sc_queue_popFront(q,v); }\
00059 sc_status T##Queue_destruct(T##Queue* q) \
00060 { return sc_queue_destruct(q); }
00061
00062 #endif