예제 #1
0
        public ComplexBinaryOpDelegate FindComplexBinaryOpIntrinsic(BinaryOpKey key, bool checkDependencies = true)
        {
            var result = ComplexBinaryOpIntrinsics.GetValueOrDefault(key, null);

            if (result == null && mDependencies != null)
            {
                foreach (var dependency in mDependencies)
                {
                    result = dependency.FindComplexBinaryOpIntrinsic(key, checkDependencies);
                    if (result != null)
                    {
                        break;
                    }
                }
            }
            return(result);
        }
예제 #2
0
 //---------------------------------------------------------------BinaryOpIntrinsics
 public void CreateBinaryOpIntrinsic(BinaryOpKey key, BinaryOpDelegate intrinsic)
 {
     BinaryOpIntrinsics.TryAdd(key, intrinsic);
 }
예제 #3
0
 //---------------------------------------------------------------ComplexBinaryOpIntrinsics
 // Very rarely a binary intrinsic needs to operate on on the underlying CSharp SyntaxNode.
 // This can't be the norm due to how assignment binary ops need to work (e.g. '+='). The only cases that
 // need to do this are binary ops that become more than a binary op, in particular this is any operator requiring short circuit evaluation.
 public void CreateComplexBinaryOpIntrinsic(BinaryOpKey key, ComplexBinaryOpDelegate intrinsic)
 {
     ComplexBinaryOpIntrinsics.TryAdd(key, intrinsic);
 }