New doc system done for core
[io.git] / libs / iovm / source / IoMap.h
bloba14ccc36c51b7d5051ae87331b3075167eef1a70
1 //metadoc Map copyright Steve Dekorte 2002
2 //metadoc Map license BSD revised
4 #ifndef IoMap_DEFINED
5 #define IoMap_DEFINED 1
7 #include "Common.h"
8 #include "IoObject.h"
9 #include "IoList.h"
10 #include "PHash.h"
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
16 #define ISMAP(self) IoObject_hasCloneFunc_(self, (IoTagCloneFunc *)IoMap_rawClone)
18 typedef IoObject IoMap;
20 IoMap *IoMap_proto(void *state);
21 IoMap *IoMap_rawClone(IoMap *self);
22 IoMap *IoMap_new(void *state);
23 void IoMap_free(IoMap *self);
24 void IoMap_mark(IoMap *self);
25 PHash *IoMap_rawHash(IoMap *self);
27 void IoMap_writeToStream_(IoMap *self, BStream *stream);
28 void IoMap_readFromStream_(IoMap *self, BStream *stream);
30 // -----------------------------------------------------------
32 IoObject *IoMap_empty(IoMap *self, IoObject *locals, IoMessage *m);
34 IOVM_API IoObject *IoMap_rawAt(IoMap *self, IoSymbol *k);
35 IOVM_API IoObject *IoMap_at(IoMap *self, IoObject *locals, IoMessage *m);
37 void IoMap_rawAtPut(IoMap *self, IoSymbol *k, IoObject *v);
38 IoObject *IoMap_atPut(IoMap *self, IoObject *locals, IoMessage *m);
39 IoObject *IoMap_atIfAbsentPut(IoMap *self, IoObject *locals, IoMessage *m);
40 IoObject *IoMap_removeAt(IoMap *self, IoObject *locals, IoMessage *m);
41 IoObject *IoMap_size(IoMap *self, IoObject *locals, IoMessage *m);
43 IoObject *IoMap_hasKey(IoMap *self, IoObject *locals, IoMessage *m);
44 IoObject *IoMap_hasValue(IoMap *self, IoObject *locals, IoMessage *m);
46 IOVM_API IoList *IoMap_rawKeys(IoMap *self);
47 IoObject *IoMap_keys(IoMap *self, IoObject *locals, IoMessage *m);
49 IoObject *IoMap_values(IoMap *self, IoObject *locals, IoMessage *m);
50 IoObject *IoMap_foreach(IoMap *self, IoObject *locals, IoMessage *m);
52 #ifdef __cplusplus
54 #endif
55 #endif