public static IoObject localsUpdateSlot(IoObject target, IoObject locals, IoObject message) { IoMessage m = message as IoMessage; IoSeq slotName = m.localsSymbolArgAt(locals, 0); if (slotName == null) { return(target); } IoObject obj = target.rawGetSlot(slotName); if (obj != null) { IoObject slotValue = m.localsValueArgAt(locals, 1); target.slots[slotName.ToString()] = slotValue; return(slotValue); } else { IoObject theSelf = target.rawGetSlot(target.state.selfMessage.messageName); if (theSelf != null) { return(theSelf.perform(theSelf, locals, m)); } } return(target.state.ioNil); }
public static IoObject slotSetSlotWithType(IoObject target, IoObject locals, IoObject message) { IoMessage m = message as IoMessage; IoSeq slotName = m.localsSymbolArgAt(locals, 0); IoObject slotValue = m.localsValueArgAt(locals, 1); target.slots[slotName.ToString()] = slotValue; if (!slotValue.slots.ContainsKey(target.state.typeSymbol)) { slotValue.slots[target.state.typeSymbol.ToString()] = slotName; } return(slotValue); }
public static IoObject slotSetSlot(IoObject target, IoObject locals, IoObject message) { IoMessage m = message as IoMessage; IoSeq slotName = m.localsSymbolArgAt(locals, 0); IoObject slotValue = m.localsValueArgAt(locals, 1); if (slotName == null) { return(target); } target.slots[slotName.ToString()] = slotValue; return(slotValue); }
public static IoObject slotUpdateSlot(IoObject target, IoObject locals, IoObject message) { IoMessage m = message as IoMessage; IoSeq slotName = m.localsSymbolArgAt(locals, 0); IoObject slotValue = m.localsValueArgAt(locals, 1); if (slotName == null) { return(target); } if (target.rawGetSlot(slotName) != null) { target.slots[slotName.ToString()] = slotValue; } else { Console.WriteLine("Slot {0} not found. Must define slot using := operator before updating.", slotName.value); } return(slotValue); }
public override string ToString() { return(messageName.ToString());// +args.ToString(); }