コード例 #1
0
ファイル: OperationsSigned.cs プロジェクト: AxFab/amy
 public void Div(Operand result, Operand left, Operand right)
 {
     Primitive type = (Primitive)Math.Max((int)left.PType, (int)right.PType);
       if (!right.AsBoolean)
     result.Set(Primitive.Error, false, right.IsConst);
       else
     result.Set(type, left.AsSigned / right.AsSigned, left.IsConst && right.IsConst);
 }
コード例 #2
0
ファイル: OperatorAction.cs プロジェクト: AxFab/amy
 private static void orLogic(Operand result, Operand left, Operand right)
 {
     if (left.PType == Primitive.Error)
     result.Set(Primitive.Error, false, left.IsConst);
       else if (left.AsBoolean)
     result.Set(Primitive.Boolean, true, left.IsConst);
       else if (right.PType == Primitive.Error)
     result.Set(Primitive.Error, false, left.IsConst && right.IsConst);
       else
     result.Set(Primitive.Boolean, right.AsBoolean, left.IsConst && right.IsConst);
 }
コード例 #3
0
ファイル: OperatorAction.cs プロジェクト: AxFab/amy
 private static void isError(Operand result, Operand left, Operand right)
 {
     result.Set(Primitive.Error, false, left.IsConst && right.IsConst);
 }
コード例 #4
0
ファイル: OperationsSigned.cs プロジェクト: AxFab/amy
 public void Sub(Operand result, Operand left, Operand right)
 {
     Primitive type = (Primitive)Math.Max((int)left.PType, (int)right.PType);
       result.Set(type, left.AsSigned - right.AsSigned, left.IsConst && right.IsConst);
 }
コード例 #5
0
ファイル: OperationsSigned.cs プロジェクト: AxFab/amy
 public void NotEquals(Operand result, Operand left, Operand right)
 {
     result.Set(Primitive.Boolean, left.AsSigned != right.AsSigned, left.IsConst && right.IsConst);
 }
コード例 #6
0
ファイル: OperationsSigned.cs プロジェクト: AxFab/amy
 public void Not(Operand result, Operand left, Operand right)
 {
     result.Set(Primitive.Boolean, !right.AsBoolean, right.IsConst);
 }
コード例 #7
0
ファイル: OperationsSigned.cs プロジェクト: AxFab/amy
 public void MoreEq(Operand result, Operand left, Operand right)
 {
     result.Set(Primitive.Boolean, left.AsSigned >= right.AsSigned, left.IsConst && right.IsConst);
 }
コード例 #8
0
ファイル: OperationsBoolean.cs プロジェクト: AxFab/amy
 public void Sub(Operand result, Operand left, Operand right)
 {
     result.Set(Primitive.Error, false, left.IsConst && right.IsConst);
 }
コード例 #9
0
ファイル: OperationsBoolean.cs プロジェクト: AxFab/amy
 public void Equals(Operand result, Operand left, Operand right)
 {
     result.Set(Primitive.Boolean, left.AsBoolean == right.AsBoolean, left.IsConst && right.IsConst);
 }
コード例 #10
0
ファイル: OperationsBoolean.cs プロジェクト: AxFab/amy
 public void Add(Operand result, Operand left, Operand right)
 {
     // TODO IsConst -> likely to be const type so const.
       result.Set(Primitive.Error, false, left.IsConst && right.IsConst);
 }
コード例 #11
0
ファイル: OperationsUnsigned.cs プロジェクト: AxFab/amy
 public void LessEq(Operand result, Operand left, Operand right)
 {
     result.Set(Primitive.Boolean, left.AsUnsigned <= right.AsUnsigned, left.IsConst && right.IsConst);
 }
コード例 #12
0
ファイル: OperationsDecimal.cs プロジェクト: AxFab/amy
 public void Mul(Operand result, Operand left, Operand right)
 {
     Primitive type = (Primitive)Math.Max((int)left.PType, (int)right.PType);
       result.Set(type, left.AsDecimal * right.AsDecimal, left.IsConst && right.IsConst);
 }
コード例 #13
0
ファイル: OperationsDecimal.cs プロジェクト: AxFab/amy
 public void More(Operand result, Operand left, Operand right)
 {
     result.Set(Primitive.Boolean, left.AsDecimal > right.AsDecimal, left.IsConst && right.IsConst);
 }