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(); } } }
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(); } }
public StateCondition(Variable v, int stateindex) : this(v) { StateIndexes.Add(stateindex); }
public void SetPreStates(IEnumerable <int> indexes) { StateIndexes.AddRange(indexes); }
/// <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; }