2 //metadoc CollectorMarker copyright Steve Dekorte 2002
3 //metadoc CollectorMarker license BSD revised
5 #ifndef COLLECTORMARKER_DEFINED
6 #define COLLECTORMARKER_DEFINED 1
15 #if !defined(__MINGW32__) && defined(WIN32)
16 #if defined(BUILDING_COLLECTOR_DLL) || defined(BUILDING_IOVMALL_DLL)
17 #define COLLECTOR_API __declspec(dllexport)
19 #define COLLECTOR_API __declspec(dllimport)
26 typedef void (CollectorDoFunc
)(void *);
28 typedef struct CollectorMarker CollectorMarker
;
30 #define CollectorMarkerSansPointer \
31 CollectorMarker *prev; \
32 CollectorMarker *next; \
33 unsigned int color : 2;
36 #if !defined(COLLECTOROBJECTTYPE)
37 #define COLLECTOROBJECTTYPE void
41 typedef struct IoObjectData IoObjectData
;
42 #define IoObjectDataDefined 1
44 struct CollectorMarker
46 CollectorMarkerSansPointer
50 #define COLLECTOR_REF_TYPE(Type) \
53 CollectorMarkerSansPointer; \
57 #define CollectorMarker_setObject_(self, v) ((CollectorMarker *)self)->object = v;
58 #define CollectorMarker_object(self) (((CollectorMarker *)self)->object)
60 COLLECTOR_API CollectorMarker
*CollectorMarker_new(void);
62 CollectorMarker
*CollectorMarker_newWithColor_(unsigned int color
);
63 COLLECTOR_API
void CollectorMarker_free(CollectorMarker
*self
);
65 void CollectorMarker_loop(CollectorMarker
*self
);
66 void CollectorMarker_check(CollectorMarker
*self
);
68 void CollectorMarker_removeAndInsertAfter_(CollectorMarker
*self
, CollectorMarker
*other
);
69 void CollectorMarker_removeAndInsertBefore_(CollectorMarker
*self
, CollectorMarker
*other
);
70 void CollectorMarker_removeIfNeededAndInsertAfter_(CollectorMarker
*self
, CollectorMarker
*other
);
72 void CollectorMarker_remove(CollectorMarker
*self
);
73 int CollectorMarker_count(CollectorMarker
*self
);
74 int CollectorMarker_colorSetIsEmpty(CollectorMarker
*self
);
76 #define CollectorMarker_setColor_(self, c) ((CollectorMarker *)self)->color = c;
77 #define CollectorMarker_color(self) ((CollectorMarker *)self)->color;
79 #define CollectorMarker_num(self) (((CollectorMarker *)self)->num);
80 #define CollectorMarker_setNext_(self, v) ((CollectorMarker *)self)->next = v;
81 #define CollectorMarker_setPrev_(self, v) ((CollectorMarker *)self)->prev = v;
83 #define MARKER(v) ((CollectorMarker *)v)
85 #define COLLECTMARKER_FOREACH(self, v, code) \
87 CollectorMarker *v = self->next; \
88 CollectorMarker *_next; \
89 unsigned int c = self->color; \
91 while (v->color == c) \
99 #include "CollectorMarker_inline.h"