Exemple #1
0
        public void InitAct(SysInstance ins, opis specification)
        {
            instanse = ins;
            env      = ins.GetEnvirinmentForModel();

            modelSpec = specification;

            if (logopis == null)
            {
                logopis = new opis(name);
            }
        }
Exemple #2
0
        public void InitAct(SysInstance ins, opis specification)
        {
            //modelSpec = new opis();
            instanse = ins;
            env      = ins.GetEnvirinmentForModel();

            //thisins = env.W("thisins");
            //spec = env.W("spec");

            //o = env.W("currCont");

            //sharedVal = thisins["sharedVariablesContext"];
            modelSpec = specification;

            //if (CTX ==null)
            //CTX = new contex(spec.V(ModelNotion.canHandleParentRange));
            //CTX.Handle(o);

            if (logopis == null)
            {
                logopis = new opis(name);
            }
        }
Exemple #3
0
        //public static readonly string SUBJ = "SUBJ";


        public override void Process(opis message)
        {
            opis instLoc     = thisins;
            opis datacontext = instLoc[SysInstance.svcIdx][SysInstance.ldcIdx].W();
            int  idxInstr    = modelSpec.getPartitionIdx(instructions, false);

            if (idxInstr != -1)
            {
                opis currSpec = modelSpec;
                opis instr    = modelSpec[idxInstr].Duplicate();
                instanse.ExecActionModel(instr, instr);

                //opis messagerole = instr;

                modelSpec = currSpec;

                if (modelSpec.OptionActive(message_as_parameter_for_instructions))
                {
                    instanse.ExecActionResponceModelsList(instr, message);
                }
                else
                {
                    if (modelSpec.isHere(for_X_times) || modelSpec.isHere(While))
                    {
                        if (modelSpec.isHere(While))
                        {
                            opis chk = new opis();
                            chk.PartitionName = "chk";
                            chk.Vset("do", "");
                            opis tim = modelSpec[While].Duplicate();

                            SysInstance locInst = instanse;
                            locInst.ExecActionResponceModelsList(tim, chk);

                            while (chk.V("do") == "y")
                            {
                                locInst.ExecActionModelsList(instr.Duplicate());
                                chk.Vset("do", "");
                                locInst.ExecActionResponceModelsList(tim, chk);
                            }
                        }
                        else
                        {
                            SysInstance locInst = instanse;
                            opis        tim     = modelSpec[for_X_times].Duplicate();
                            locInst.ExecActionModel(tim, tim);

                            for (int i = 0; i < tim.intVal; i++)
                            {
                                locInst.ExecActionModelsList(instr.Duplicate());
                            }
                        }
                    }
                    else
                    {
                        instanse.ExecActionModelsList(instr);
                    }
                }
            }
            else
            {
                opis instr = message.Duplicate();
                instanse.ExecActionModelsList(instr);
            }

            instLoc[SysInstance.svcIdx][SysInstance.ldcIdx].Wrap(datacontext);
        }