Example #1
0
        internal FunctionCalculator CompileCalculation(CalculationSchema schema)
        {
            _runtimeParameter = Expression.Parameter(typeof(GraspRuntime), "runtime");

            var lambdaBody = Visit(schema.Expression);

            return new FunctionCalculator(schema.OutputVariable, CompileFunction(lambdaBody));
        }
Example #2
0
 private void EnsureAssignableToOutputVariable(CalculationSchema calculation)
 {
     if(!calculation.OutputVariable.Type.IsAssignableFrom(calculation.Expression.Type))
     {
         throw new InvalidCalculationResultTypeException(
             calculation.Source,
             Resources.InvalidCalculationResultType.FormatInvariant(
                 calculation.Expression.Type,
                 calculation,
                 calculation.OutputVariable.Type,
                 calculation.OutputVariable));
     }
 }
Example #3
0
 private void EnsureVariablesExistInSchema(CalculationSchema calculation)
 {
     foreach(var variable in calculation.Variables)
     {
         if(!_variables.Contains(variable))
         {
             throw new InvalidCalculationVariableException(
                 variable,
                 calculation.Source,
                 _schema,
                 Resources.InvalidCalculationVariable.FormatInvariant(variable, calculation));
         }
     }
 }
Example #4
0
 private static ICalculator GetCalculator(CalculationSchema schema)
 {
     return new CalculationCompiler().CompileCalculation(schema);
 }
Example #5
0
 internal DependencyNode(CalculationSchema calculation, IEnumerable<CalculationSchema> dependencies)
 {
     Calculation = calculation;
     Dependencies = dependencies.ToList().AsReadOnly();
 }
Example #6
0
 private static bool IsDependency(CalculationSchema calculation, CalculationSchema possibleDependency)
 {
     return calculation.Variables.Contains(possibleDependency.OutputVariable);
 }