data.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. Not(Value) Value
  15. Abs(Value) Value
  16. Odd(Value) Value
  17. Cap(Value) Value
  18. Bits(Value) Value
  19. Is(Value, object.ComplexType) Value
  20. Conv(Value, object.Type) Value
  21. Len(object.Object, Value, Value) Value
  22. }
  23. type Value interface {
  24. String() string
  25. }
  26. type Constant interface {
  27. Value
  28. }
  29. type Variable interface {
  30. Id() cp.ID
  31. Set(Value)
  32. Value
  33. }
  34. type Ref interface {
  35. Value
  36. }
  37. type Record interface {
  38. Variable
  39. Get(cp.ID) Value
  40. }
  41. type Array interface {
  42. Variable
  43. Get(Value) Value
  44. }
  45. //средство обновления значенияx
  46. type ValueFor func(in Value) (out Value)
  47. type ValueOf func(in Value)
  48. func Simple(v Value) ValueFor {
  49. return func(Value) Value {
  50. return v
  51. }
  52. }
  53. var ValueFrom func(v Value) Value
  54. var GoTypeFrom func(v Value) interface{}
  55. var TypeFromGo func(v interface{}) Value
  56. var Ops Operations