Пример #1
0
        protected override void BeforeFreeze()
        {
            // extend state conditions with complementary indexes
            var s0 = this.ToString();

            if (!StateIndexes.Any())
            {
                Debug.Assert(PreWildcard);
                if (!PostStateIndexes.Any())
                {
                    throw new CompilerException(ErrorCode.BadCondition, "wildcard requires transition.");
                }

                // Debug.Assert(PostStateIndexes.Any());

                StateIndexes = Variable.Type.GetExcluding(PostStateIndexes).ToList();
            }
            else if (!PostStateIndexes.Any())
            {
                if (PostWildcard)
                {
                    Debug.Assert(StateIndexes.Any());
                    PostStateIndexes = Variable.Type.GetExcluding(StateIndexes).ToList();
                }
            }
        }
Пример #2
0
 public override IEnumerable <Transition> GetTransitions()
 {
     if (PostStateIndexes.Any())
     {
         yield return(new Transition(this)
         {
             PreStateIndexes = StateIndexes.ToArray(),
             NewStateIndexes = PostStateIndexes.ToArray()
         });
     }
     else if (null != Parent)
     {
         /*foreach (var e in Parent.GetTransitions())
          * {
          *  yield return e;
          * }*/
         throw new NotImplementedException();
     }
 }
Пример #3
0
 public StateCondition(Variable v, int stateindex)
     : this(v)
 {
     StateIndexes.Add(stateindex);
 }
Пример #4
0
 public void SetPreStates(IEnumerable <int> indexes)
 {
     StateIndexes.AddRange(indexes);
 }
Пример #5
0
 /// <summary>
 /// Sets the PRE states of a state transition condition.
 /// </summary>
 /// <param name="names"></param>
 public void SetPreStates(IdList names)
 {
     StateIndexes.AddRange(Variable.Type.GetIndexesOfNames(names));
     PreWildcard = names.Wildcard;
 }