public override IoObject proto(IoState state) { IoMap pro = new IoMap(); pro.tag.state = state; pro.tag.cloneFunc = new IoTagCloneFunc(pro.clone); pro.tag.activateFunc = new IoTagActivateFunc(pro.activate); pro.createSlots(); pro.createProtos(); pro.map = new Hashtable(); state.registerProtoWithFunc(pro.name, new IoStateProto(pro.name, pro, new IoStateProtoFunc(pro.proto))); pro.protos.Add(state.protoWithInitFunc("Object")); IoCFunction[] methodTable = new IoCFunction[] { new IoCFunction("at", new IoMethodFunc(IoMap.slotAt)), new IoCFunction("atPut", new IoMethodFunc(IoMap.slotAtPut)), new IoCFunction("atIfAbsentPut", new IoMethodFunc(IoMap.slotAtIfAbsentPut)), new IoCFunction("empty", new IoMethodFunc(IoMap.slotEmpty)), new IoCFunction("size", new IoMethodFunc(IoMap.slotSize)), new IoCFunction("removeAt", new IoMethodFunc(IoMap.slotRemoveAt)), new IoCFunction("hasKey", new IoMethodFunc(IoMap.slotHasKey)), new IoCFunction("hasValue", new IoMethodFunc(IoMap.slotHasValue)), }; pro.addTaglessMethodTable(state, methodTable); return(pro); }
public override IoObject clone(IoState state) { IoObject proto = state.protoWithInitFunc(name); IoMap result = new IoMap(); uniqueIdCounter++; result.uniqueId = uniqueIdCounter; result.map = new Hashtable(); result.tag = proto.tag; result.createProtos(); result.createSlots(); result.protos.Add(proto); return(result); }
public override IoObject proto(IoState state) { IoMap pro = new IoMap(); pro.state = state; pro.createSlots(); pro.createProtos(); pro.map = new Hashtable(); state.registerProtoWithFunc(pro.name, new IoStateProto(pro.name, pro, new IoStateProtoFunc(pro.proto))); pro.protos.Add(state.protoWithInitFunc("Object")); IoCFunction[] methodTable = new IoCFunction[] { new IoCFunction("at", new IoMethodFunc(IoMap.slotAt)), new IoCFunction("atPut", new IoMethodFunc(IoMap.slotAtPut)), new IoCFunction("atIfAbsentPut", new IoMethodFunc(IoMap.slotAtIfAbsentPut)), new IoCFunction("empty", new IoMethodFunc(IoMap.slotEmpty)), new IoCFunction("size", new IoMethodFunc(IoMap.slotSize)), new IoCFunction("removeAt", new IoMethodFunc(IoMap.slotRemoveAt)), new IoCFunction("hasKey", new IoMethodFunc(IoMap.slotHasKey)), new IoCFunction("hasValue", new IoMethodFunc(IoMap.slotHasValue)), }; pro.addTaglessMethodTable(state, methodTable); return pro; }
public override IoObject clone(IoState state) { IoObject proto = state.protoWithInitFunc(name); IoMap result = new IoMap(); uniqueIdCounter++; result.uniqueId = uniqueIdCounter; result.map = new Hashtable(); result.tag = proto.tag; result.createProtos(); result.createSlots(); result.protos.Add(proto); return result; }