data.go 900 B

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