ExprObject.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. using System.Collections;
  2. using IwbZero.ToolCommon.StringModel;
  3. namespace IwbZero.Expr
  4. {
  5. public class ExprObject
  6. {
  7. // Fields
  8. // Methods
  9. public ExprObject(string pcExpr)
  10. {
  11. Expr = "";
  12. Value = "";
  13. ChildNodes = new ArrayList();
  14. Expr = pcExpr;
  15. ElementType = ExprElements.Expression;
  16. }
  17. public ExprObject(string pcExpr, ExprElements poElementType)
  18. {
  19. Expr = "";
  20. Value = "";
  21. ChildNodes = new ArrayList();
  22. Expr = pcExpr;
  23. ElementType = poElementType;
  24. }
  25. public void AddChild(ExprObject poNode)
  26. {
  27. ChildNodes.Add(poNode);
  28. }
  29. public ExprObject Clone()
  30. {
  31. ExprObject exprObject = new ExprObject(Expr, ElementType);
  32. foreach (ExprObject expr2 in ChildNodes)
  33. {
  34. exprObject.ChildNodes.Add(expr2.Clone());
  35. }
  36. return exprObject;
  37. }
  38. public bool ContainOp(string pcOpId)
  39. {
  40. for (int i = 0; i < ChildCount; i++)
  41. {
  42. ExprOperator @operator = GetChild(i).GetOperator();
  43. if ((@operator != null) && (@operator.Id.UAndT() == pcOpId.UAndT()))
  44. {
  45. return true;
  46. }
  47. }
  48. return false;
  49. }
  50. public ExprObject GetChild(int piIndex)
  51. {
  52. ExprObject exprObject = null;
  53. if ((piIndex >= 0) && (piIndex < ChildNodes.Count))
  54. {
  55. exprObject = (ExprObject)ChildNodes[piIndex];
  56. }
  57. return exprObject;
  58. }
  59. public ExprOperator GetOperator()
  60. {
  61. ExprOperator @operator = null;
  62. if (ElementType == ExprElements.Operator)
  63. {
  64. @operator = (ExprOperator)EvalExpr.Operators[Expr];
  65. }
  66. return @operator;
  67. }
  68. public void InsertChildAt(ExprObject poNode, int piIndex)
  69. {
  70. ChildNodes.Insert(piIndex, poNode);
  71. }
  72. public void RemoveChildAt(int piIndex)
  73. {
  74. ChildNodes.RemoveAt(piIndex);
  75. }
  76. public override string ToString()
  77. {
  78. return (ElementType.ToString() + "---" + Expr);
  79. }
  80. public int ChildCount => ChildNodes.Count;
  81. public ArrayList ChildNodes { get; }
  82. public ExprElements ElementType { get; set; }
  83. public string Expr { get; set; }
  84. public bool IsOperator => (GetOperator() != null);
  85. public string Value { get; set; }
  86. }
  87. }