Esempio n. 1
0
 /// <summary>
 /// 条件 AND。
 /// </summary>
 /// <param name="l"></param>
 /// <param name="r"></param>
 /// <returns></returns>
 public static ET And(ET left, params ET[] rights)
 {
   return EnumOp(CodeBinaryOperatorType.BooleanAnd, left, rights);
 }
Esempio n. 2
0
 private static ET EnumOp(CodeBinaryOperatorType opType, ET left, params ET[] rights)
 {
   if (rights.Length == 0) return left;
   return EnumOpImpl(opType, left, rights, 0);
 }
Esempio n. 3
0
 private static ET EnumOpImpl(CodeBinaryOperatorType opType, ET l, ET[] rights, int index)
 {
   ET r;
   if (index == rights.Length - 1) r = rights[index];
   else r = EnumOpImpl(opType, rights[index], rights, index + 1);
   return new BuilderBinaryOperator(l, opType, r);
 }
Esempio n. 4
0
 /// <summary>
 /// フィールドへの参照を作成します。
 /// </summary>
 /// <param name="target"></param>
 /// <param name="name"></param>
 /// <returns></returns>
 private static ET BinaryOperator(ET l, CodeBinaryOperatorType op, ET r)
 {
   return new BuilderBinaryOperator(l, op, r);
 }
Esempio n. 5
0
 protected static CodeExpression[] GetExpresions(ET[] trees)
 {
   CodeExpression[] codes = new CodeExpression[trees.Length];
   for (int i = 0; i < codes.Length; i++) codes[i] = trees[i].Expression;
   return codes;
 }
Esempio n. 6
0
 /// <summary>
 /// 代入式ステートメントを作成します。
 /// </summary>
 /// <param name="target"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 public static CodeAssignStatement Assign(ET target, object value)
 {
   return Assign(target, V(value));
 }
Esempio n. 7
0
 public BuilderArrayIndex(ET target, params ET[] indexer)
 {
     this.Target = target;
     this.Indexer = indexer;
 }
Esempio n. 8
0
 /// <summary>
 /// フィールドへの参照を作成します。
 /// </summary>
 /// <param name="target"></param>
 /// <param name="name"></param>
 /// <returns></returns>
 public static ET F(ET target, string name)
 {
   return new BuilderField(target, name);
 }
Esempio n. 9
0
 /// <summary>
 /// フィールドへの参照を作成します。
 /// </summary>
 /// <param name="target"></param>
 /// <param name="name"></param>
 /// <returns></returns>
 public static ET P(ET target, string name)
 {
   return new BuilderProperty(target, name);
 }
Esempio n. 10
0
 /// <summary>
 /// プロパティに代入するステートメントを作成します。
 /// </summary>
 /// <param name="propertyName"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 public CodeAssignStatement AssignF(string fieldName, ET value)
 {
   return Assign(THIS.F(fieldName), value);
 }
Esempio n. 11
0
 /// <summary>
 /// 現在の式に値を代入する代入式ステートメントを作成します。
 /// </summary>
 /// <param name="value"></param>
 /// <returns></returns>
 public CodeAssignStatement Assign(ET value)
 {
   return Assign(this, value);
 }
Esempio n. 12
0
 public BuilderProperty(ET target, string name)
 {
     this.Target = target;
     this.Name = name;
 }
Esempio n. 13
0
 public BuilderField(ET target, string name)
 {
     this.Target = target;
     this.Name = name;
 }
Esempio n. 14
0
 public BuilderBinaryOperator(ET l, CodeBinaryOperatorType op, ET r)
 {
   this.Left = l;
   this.Operation = op;
   this.Right = r;
 }
Esempio n. 15
0
 /// <summary>
 /// 配列参照を作成します。
 /// </summary>
 /// <param name="target"></param>
 /// <param name="indexer"></param>
 /// <returns></returns>
 public static ET ArrayIndex(ET target, params ET[] indexer)
 {
   return new BuilderArrayIndex(target, indexer);
 }
Esempio n. 16
0
 /// <summary>
 /// メソッドへの参照を作成します。
 /// </summary>
 /// <param name="target"></param>
 /// <param name="name"></param>
 /// <returns></returns>
 public static ET RefMethod(ET target, string name)
 {
   return new BuilderMethodReference(target, name);
 }
Esempio n. 17
0
 /// <summary>
 /// 代入式ステートメントを作成します。
 /// </summary>
 /// <param name="target"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 public static CodeAssignStatement Assign(ET target, ET value)
 {
   return new CodeAssignStatement(target.Expression, value.Expression);
 }
Esempio n. 18
0
 /// <summary>
 /// メソッド呼び出しを作成します。
 /// </summary>
 /// <param name="target"></param>
 /// <param name="name"></param>
 /// <param name="parameters"></param>
 /// <returns></returns>
 public static ET M(ET target, string name, params ET[] parameters)
 {
   return new BuilderMethodInvoke(
     (BuilderMethodReference)target.RefMethod(name), 
     parameters);
 }
Esempio n. 19
0
 /// <summary>
 /// プロパティに代入するステートメントを作成します。
 /// </summary>
 /// <param name="propertyName"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 public CodeAssignStatement AssignP(string propertyName, ET value)
 {
   return Assign(THIS.P(propertyName), value);
 }
Esempio n. 20
0
 public BuilderMethodReference(ET target, string name, params CodeTypeReference[] genericTypes)
 {
   this.Target = target;
   this.Name = name;
   this.GenericTypes = genericTypes;
 }