本文整理汇总了C#中ICondition.Decompose方法的典型用法代码示例。如果您正苦于以下问题:C# ICondition.Decompose方法的具体用法?C# ICondition.Decompose怎么用?C# ICondition.Decompose使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ICondition
的用法示例。
在下文中一共展示了ICondition.Decompose方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TransitionCondition
public TransitionCondition(ICondition lcond, ICondition rcond)
{
if (lcond.ContainsTransitions() || rcond.ContainsTransitions())
{
throw new CompilerException(ErrorCode.BadCondition,
"arguments to transition condition must not include transitions.");
}
// right hand must be a product
var r = rcond.Decompose(ConditionMode.Static);
if(r.Type == GateType.OR)
{
throw new CompilerException(ErrorCode.BadCondition,
"right side of a transition must be a product.");
}
_rgate = r;
var rvclist = r.GetVariableConditions().ToArray();
var l = lcond.Decompose(ConditionMode.Static);
// split left side into terms ...
IEnumerable<IGate> terms = new[] { l };
if(l.Type == GateType.OR)
{
terms = l.GetInputs();
}
// construct the transition set from the left side terms and the right side product.
var tset = BuildTransitionSet(terms, rvclist);
Left = lcond;
Right = rcond;
Transitions = tset;
}
示例2: AddAssertion
/// <summary>
/// Adds an assertion rule to the state machine.
/// </summary>
/// <param name="assertion"></param>
public void AddAssertion(ICondition assertion)
{
// mark all combination of states where the condition is not true
/*var senum = new StateEnumerator(this);
foreach(var s in senum.GetStates(new InvertCondition(assertion)))
{
GetState(s).Unallowed = true;
}*/
_assertions.Add(assertion.Decompose(ConditionMode.Static));
}