public override void Initialise(MHParseNode p, MHEngine engine) { base.Initialise(p, engine); // Original value should be an object reference. MHParseNode pInitial = p.GetNamedArg(ASN1Codes.C_ORIGINAL_VALUE); // and this should be a ObjRef node. MHParseNode pArg = pInitial.GetNamedArg(ASN1Codes.C_OBJECT_REFERENCE); m_OriginalValue.Initialise(pArg.GetArgN(0), engine); }
public override void Initialise(MHParseNode p, MHEngine engine) { base.Initialise(p, engine); // Target m_Succeeded.Initialise(p.GetArgN(1), engine); // Call/fork succeeded flag // Arguments. MHParseNode args = p.GetArgN(2); for (int i = 0; i < args.GetSeqCount(); i++) { MHParameter pParm = new MHParameter(); m_Parameters.Append(pParm); pParm.Initialise(args.GetSeqN(i), engine); } }
public override void Initialise(MHParseNode p, MHEngine engine) { base.Initialise(p, engine); // Target m_Succeeded.Initialise(p.GetArgN(1), engine); MHParseNode pVarSeq = p.GetArgN(2); for (int i = 0; i < pVarSeq.GetSeqCount(); i++) { MHObjectRef pVar = new MHObjectRef(); m_Variables.Append(pVar); pVar.Initialise(pVarSeq.GetSeqN(i), engine); } m_FileName.Initialise(p.GetArgN(3), engine); }
public void Initialise(MHParseNode p, MHEngine engine) { // A pair consisting of an object reference and an optional action slot sequence. m_Object.Initialise(p.GetSeqN(0), engine); if (p.GetSeqCount() > 1) { MHParseNode pSlots = p.GetSeqN(1); for (int i = 0; i < pSlots.GetSeqCount(); i++) { MHParseNode pAct = pSlots.GetSeqN(i); MHActionSequence pActions = new MHActionSequence(); m_ActionSlots.Append(pActions); // The action slot entry may be NULL. if (pAct.NodeType != MHParseNode.PNNull) { pActions.Initialise(pAct, engine); } } } }
public override void Initialise(MHParseNode p, MHEngine engine) { base.Initialise(p, engine); // Original box size - two integer arguments. MHParseNode pOriginalBox = p.GetNamedArg(ASN1Codes.C_ORIGINAL_BOX_SIZE); if (pOriginalBox == null) p.Failure("OriginalBoxSize missing"); m_nOriginalBoxWidth = pOriginalBox.GetArgN(0).GetIntValue(); m_nOriginalBoxHeight = pOriginalBox.GetArgN(1).GetIntValue(); // Original position - two integer arguments. Optional MHParseNode pOriginalPos = p.GetNamedArg(ASN1Codes.C_ORIGINAL_POSITION); if (pOriginalPos != null) { m_nOriginalPosX = pOriginalPos.GetArgN(0).GetIntValue(); m_nOriginalPosY = pOriginalPos.GetArgN(1).GetIntValue(); } // OriginalPalette ref - optional. MHParseNode pOriginalPaletteRef = p.GetNamedArg(ASN1Codes.C_ORIGINAL_PALETTE_REF); if (pOriginalPaletteRef != null) m_OriginalPaletteRef.Initialise(pOriginalPaletteRef.GetArgN(0), engine); }
public override void Initialise(MHParseNode p, MHEngine engine) { base.Initialise(p, engine); m_ResultVar.Initialise(p.GetArgN(1), engine); }
public override void Initialise(MHParseNode p, MHEngine engine) { base.Initialise(p, engine); m_Feature.Initialise(p.GetArgN(1), engine); m_Answer.Initialise(p.GetArgN(2), engine); }
// Set this up from the parse tree. public override void Initialise(MHParseNode p, MHEngine engine) { base.Initialise(p, engine); // The link condition is encoded differently in the binary and text representations. MHParseNode pLinkCond = p.GetNamedArg(ASN1Codes.C_LINK_CONDITION); if (pLinkCond != null) { // Only in binary. m_EventSource.Initialise(pLinkCond.GetArgN(0), engine); // Event source m_nEventType = pLinkCond.GetArgN(1).GetEnumValue(); // Event type // The event data is optional and type-dependent. if (pLinkCond.GetArgCount() >= 3) { MHParseNode pEventData = pLinkCond.GetArgN(2); switch (pEventData.NodeType) { case MHParseNode.PNBool: m_EventData.Bool = pEventData.GetBoolValue(); m_EventData.Type = MHUnion.U_Bool; break; case MHParseNode.PNInt: m_EventData.Int = pEventData.GetIntValue(); m_EventData.Type = MHUnion.U_Int; break; case MHParseNode.PNString: pEventData.GetStringValue(m_EventData.String); m_EventData.Type = MHUnion.U_String; break; default: pEventData.Failure("Unknown type of event data"); break; } } } else { // Only in text. MHParseNode pEventSource = p.GetNamedArg(ASN1Codes.P_EVENT_SOURCE); // Event source if (pEventSource == null) { p.Failure("Missing :EventSource"); } m_EventSource.Initialise(pEventSource.GetArgN(0), engine); MHParseNode pEventType = p.GetNamedArg(ASN1Codes.P_EVENT_TYPE); // Event type if (pEventType == null) { p.Failure("Missing :EventType"); } m_nEventType = pEventType.GetArgN(0).GetEnumValue(); MHParseNode pEventData = p.GetNamedArg(ASN1Codes.P_EVENT_DATA); // Event data - optional if (pEventData != null) { MHParseNode pEventDataArg = pEventData.GetArgN(0); switch (pEventDataArg.NodeType) { case MHParseNode.PNBool: m_EventData.Bool = pEventDataArg.GetBoolValue(); m_EventData.Type = MHUnion.U_Bool; break; case MHParseNode.PNInt: m_EventData.Int = pEventDataArg.GetIntValue(); m_EventData.Type = MHUnion.U_Int; break; case MHParseNode.PNString: pEventDataArg.GetStringValue(m_EventData.String); m_EventData.Type = MHUnion.U_String; break; default: pEventDataArg.Failure("Unknown type of event data"); break; } } } MHParseNode pLinkEffect = p.GetNamedArg(ASN1Codes.C_LINK_EFFECT); m_LinkEffect.Initialise(pLinkEffect, engine); }