/* docCopyright("Jeremy Tregunna", 2006) docLicense("BSD") */ #ifndef IORANGE_DEFINED #define IORANGE_DEFINED 1 #include "Common.h" #include "IoObject.h" #ifdef __cplusplus extern "C" { #endif #define ISRANGE(self) \ IoObject_hasCloneFunc_((self), (TagCloneFunc *)IoRange_rawClone) typedef IoObject IoRange; typedef struct { IoObject *start; IoObject *curr; IoObject *end; IoObject *increment; IoObject *index; } IoRangeData; IoRange *IoRange_rawClone(IoRange *self); IoRange *IoRange_proto(void *state); IoRange *IoRange_new(void *state); void IoRange_free(IoRange *self); void IoRange_mark(IoRange *self); /* ----------------------------------------------------------- */ IoObject *IoRange_first(IoRange *self, IoObject *locals, IoMessage *m); IoObject *IoRange_last(IoRange *self, IoObject *locals, IoMessage *m); IoObject *IoRange_next(IoRange *self, IoObject *locals, IoMessage *m); IoObject *IoRange_previous(IoRange *self, IoObject *locals, IoMessage *m); IoObject *IoRange_index(IoRange *self, IoObject *locals, IoMessage *m); IoObject *IoRange_value(IoRange *self, IoObject *locals, IoMessage *m); IoRange *IoRange_setRange(IoRange *self, IoObject *locals, IoMessage *m); IoRange *IoRange_rewind(IoRange *self, IoObject *locals, IoMessage *m); IoObject *IoRange_foreach(IoRange *self, IoObject *locals, IoMessage *m); IoObject *IoRange_select(IoRange *self, IoObject *locals, IoMessage *m); IoObject *IoRange_map(IoRange *self, IoObject *locals, IoMessage *m); /* ----------------------------------------------------------- */ #include "IoRange_inline.h" #ifdef __cplusplus } #endif #endif