/*#io
docCopyright("Steve Dekorte", 2002)
docLicense("BSD revised")
*/
#ifdef COLLECTORMARKER_C
#define IO_IN_C_FILE
#endif
#include "Common_inline.h"
#ifdef IO_DECLARE_INLINES
IOINLINE void CollectorMarker_insertAfter_(CollectorMarker *self, CollectorMarker *other)
{
self->color = other->color;
self->prev = other;
self->next = other->next;
other->next->prev = self;
other->next = self;
}
/*
IOINLINE void CollectorMarker_insertBefore_(CollectorMarker *self, CollectorMarker *other)
{
self->color = other->color;
self->prev = other->prev;
self->next = other;
other->prev->next = self;
other->prev = self;
}
*/
IOINLINE void CollectorMarker_remove(CollectorMarker *self)
{
self->prev->next = self->next;
self->next->prev = self->prev;
}
IOINLINE void CollectorMarker_removeAndInsertAfter_(CollectorMarker *self, CollectorMarker *other)
{
CollectorMarker_remove(self);
CollectorMarker_insertAfter_(self, other);
}
/*
IOINLINE void CollectorMarker_removeAndInsertBefore_(CollectorMarker *self, CollectorMarker *other)
{
CollectorMarker_remove(self);
CollectorMarker_insertBefore_(self, other);
}
*/
IOINLINE void CollectorMarker_removeIfNeededAndInsertAfter_(CollectorMarker *self, CollectorMarker *other)
{
if (self->prev)
{
CollectorMarker_remove(self);
}
CollectorMarker_insertAfter_(self, other);
}
IOINLINE int CollectorMarker_isEmpty(CollectorMarker *self)
{
return (self->color != self->next->color);
}
#undef IO_IN_C_FILE
#endif
syntax highlighted by Code2HTML, v. 0.9.1