Ejemplo n.º 1
0
 public Primitive PerformOperation(BiOperand type, Primitive a, Primitive b)
 {
     if (!BiOperations.ContainsKey(type) ||
         !BiOperations[type].ContainsKey(a.GetPrimitiveType()) ||
         !BiOperations[type][a.GetPrimitiveType()].ContainsKey(b.GetPrimitiveType()))
     {
         throw new Exception("Cannot perform operation: " + type + " on types: " + a.GetPrimitiveType() + ", " + b.GetPrimitiveType());
     }
     return(BiOperations[type][a.GetPrimitiveType()][b.GetPrimitiveType()](a, b));
 }
Ejemplo n.º 2
0
 void AddBiOperation <T, U>(BiOperand type, Func <T, U, object> resolver)
 {
     if (!BiOperations.ContainsKey(type))
     {
         BiOperations[type] = new Dictionary <Return, Dictionary <Return, BiOperation> >();
     }
     foreach (Return a in GetTypes(typeof(T)))
     {
         foreach (Return b in GetTypes(typeof(U)))
         {
             if (!BiOperations[type].ContainsKey(a))
             {
                 BiOperations[type][a] = new Dictionary <Return, BiOperation>();
             }
             BiOperations[type][a][b] = SimpleBiOperand(resolver);
         }
     }
 }
Ejemplo n.º 3
0
 public BiOperandVariable(BiOperand operand, Variable a, Variable b)
 {
     this.operand = operand;
     this.a       = a;
     this.b       = b;
 }