data.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package scope
  2. import (
  3. "fw/cp"
  4. "fw/cp/object"
  5. )
  6. type Operations interface {
  7. Sum(Value, Value) Value
  8. Sub(Value, Value) Value
  9. Eq(Value, Value) Value
  10. Neq(Value, Value) Value
  11. Lss(Value, Value) Value
  12. Leq(Value, Value) Value
  13. Gtr(Value, Value) Value
  14. Max(Value, Value) Value
  15. Min(Value, Value) Value
  16. Div(Value, Value) Value
  17. Mod(Value, Value) Value
  18. Mult(Value, Value) Value
  19. Divide(Value, Value) Value
  20. In(Value, Value) Value
  21. Ash(Value, Value) Value
  22. And(Value, Value) Value
  23. Or(Value, Value) Value
  24. Geq(Value, Value) Value
  25. Not(Value) Value
  26. Abs(Value) Value
  27. Odd(Value) Value
  28. Cap(Value) Value
  29. Bits(Value) Value //это не BITS из КП, BITS(x) = {x}
  30. Minus(Value) Value
  31. Is(Value, object.ComplexType) Value
  32. Conv(Value, object.Type, ...object.ComplexType) Value
  33. Len(object.Object, Value, Value) Value
  34. TypeOf(Value) (object.Type, object.ComplexType)
  35. }
  36. type Value interface {
  37. String() string
  38. }
  39. type Constant interface {
  40. Value
  41. }
  42. type Variable interface {
  43. Id() cp.ID
  44. Set(Value)
  45. Value
  46. }
  47. type Ref interface {
  48. Value
  49. }
  50. type Record interface {
  51. Variable
  52. Get(cp.ID) Value
  53. }
  54. type Array interface {
  55. Variable
  56. Get(Value) Value
  57. }
  58. type Pointer interface {
  59. Variable
  60. Get() Value
  61. }
  62. //средство обновления значенияx
  63. type ValueFor func(in Value) (out Value)
  64. type ValueOf func(in Value)
  65. func Simple(v Value) ValueFor {
  66. return func(Value) Value {
  67. return v
  68. }
  69. }
  70. var ValueFrom func(v Value) Value
  71. var GoTypeFrom func(v Value) interface{}
  72. var TypeFromGo func(v interface{}) Value
  73. var Ops Operations