Esempio n. 1
0
 /// <summary>
 /// Initializes a variable with a variable name.
 /// </summary>
 protected VariableModel(BundleModel bundle, ModelName variableName)
     : base(variableName)
 {
     Workspace        = bundle.Workspace;
     Parent           = bundle;
     DomainExpression = new VariableDomainExpressionModel();
 }
Esempio n. 2
0
        /// <summary>
        /// Overrides a variable domain expression to a new domain expression.
        /// </summary>
        /// <param name="variableIndex">Variable index starts at zero.</param>
        /// <param name="newDomainExpression">New domain expression.</param>
        public void OverrideDomainTo(int variableIndex, VariableDomainExpressionModel newDomainExpression)
        {
            if (variableIndex >= Variables.Count() || variableIndex < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(variableIndex));
            }

            var variableToOverride = (SingletonVariableModel)GetVariableByIndex(variableIndex);
            var range    = variableToOverride.GetVariableBand();
            var newRange = GetRangeFrom(newDomainExpression);

            if (!range.IntersectsWith(newRange))
            {
                throw new ArgumentException(nameof(newDomainExpression));
            }
            variableToOverride.DomainExpression = newDomainExpression;
        }
Esempio n. 3
0
        /// <summary>
        /// Get the domain range from the domain expression.
        /// </summary>
        /// <param name="theDomainExpression">Domain expression.</param>
        /// <returns>Domain range.</returns>
        private DomainValue GetRangeFrom(VariableDomainExpressionModel theDomainExpression)
        {
            var evaluatorContext = new VariableDomainExpressionEvaluatorContext(theDomainExpression.Node, Workspace);

            return(VariableDomainExpressionEvaluator.Evaluate(evaluatorContext));
        }
Esempio n. 4
0
 /// <summary>
 /// Initializes a variable with a variable name.
 /// </summary>
 protected VariableModel(ModelModel theModel, ModelName variableName)
     : base(variableName)
 {
     Parent           = theModel;
     DomainExpression = new VariableDomainExpressionModel();
 }
Esempio n. 5
0
 /// <summary>
 /// Initialize a new inline domain with an empty expression.
 /// </summary>
 public InlineDomainModel()
 {
     Expression = new VariableDomainExpressionModel();
 }
Esempio n. 6
0
 /// <summary>
 /// Initialize a new inline domain with a domain expression.
 /// </summary>
 public InlineDomainModel(string theExpression)
 {
     Expression = new VariableDomainExpressionModel(theExpression);
 }