def_spec.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. // package def_spec -- внутренние спецификации типы
  2. package def_spec
  3. import (
  4. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_let_bool"
  5. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_let_int"
  6. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_let_time"
  7. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_let_txt"
  8. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_mut_bool"
  9. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_mut_time"
  10. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_mut_txt"
  11. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec_base"
  12. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec_fn"
  13. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/result"
  14. )
  15. // ATxt -- алиас для внутренней строки.
  16. type ATxt = def_spec_base.ATxt
  17. // Int -- алиас для int.
  18. type Int = def_spec_base.Int
  19. // LInt -- внутренне неизменяемое целое.
  20. type LInt=def_let_int.LInt
  21. // Bool -- внутренее представление логического значения.
  22. type Bool = def_spec_base.Bool
  23. // LBool -- неизменяемое булево значение
  24. type LBool = def_let_bool.LBool
  25. // LetBool -- возвращает новый неизменяемый Bool
  26. func LetBool(val def_spec_base.Bool) *LBool {
  27. return def_let_bool.LetBool(val)
  28. }
  29. // MBool -- изменяемое булево значение
  30. type MBool = def_mut_bool.MBool
  31. // MutBool -- возвращает новый изменяемый Bool
  32. func MutBool(val def_spec_base.Bool) *MBool {
  33. return def_mut_bool.MutBool(val)
  34. }
  35. // IString -- интерфейс к стандартной строке.
  36. type IString = def_spec_fn.IString
  37. // TxtConstraint -- разрешает строки и любые типы на его основе (например, ATxt).
  38. type TxtConstraint = def_spec_fn.TxtConstraint
  39. // LTxt -- внутренний неизменяемый текст.
  40. type LTxt = def_let_txt.LTxt
  41. // LetTxt -- создать новую неизменяемую строку.
  42. func LetTxt[T TxtConstraint](msg T, arg ...any) *LTxt {
  43. return def_let_txt.LetTxt(msg, arg...)
  44. }
  45. // MTxt -- внутренний изменяемый текст.
  46. type MTxt = def_mut_txt.MTxt
  47. // MutTxt -- создать новый внутрениий изменяемый текст.
  48. func MutTxt[T TxtConstraint](msg T, arg ...any) *MTxt {
  49. return def_mut_txt.MutTxt(msg, arg...)
  50. }
  51. // Result — обёртка вокруг результата с возможной ошибкой.
  52. //
  53. // Может быть либо только полезное значение, либо только ошибка.
  54. type Result[T any] = result.Result[T]
  55. // NewOk -- возвращает успешный Result с значением.
  56. func NewOk[T any](value T) *Result[T] {
  57. return result.NewOk(value)
  58. }
  59. // NewErr -- возвращает Result с ошибкой.
  60. func NewErr[T any](err error) *Result[T] {
  61. return result.NewErr[T](err)
  62. }
  63. // Sprintf -- форматирует базовуб строку
  64. func Sprintf[T def_spec_fn.TxtConstraint](format T, args ...any) ATxt {
  65. return def_spec_fn.Sprintf(format, args...)
  66. }
  67. // Time -- внутренее представление времени.
  68. type Time = def_spec_base.Time
  69. // LTime -- внутренее неизменяемое время.
  70. //
  71. // Вывод: "2006-01-02 15:04:05.000 -07 MST".
  72. type LTime = def_let_time.LTime
  73. // LetTime -- возвращает новое внутреннее неизменяемое время.
  74. func LetTime[T TxtConstraint](val T) *LTime {
  75. return def_let_time.LetTime(val)
  76. }
  77. // MTime -- внутренее изменяемое время.
  78. //
  79. // Вывод: "2006-01-02 15:04:05.000 -07 MST".
  80. type MTime = def_mut_time.MTime
  81. // MutTime -- возвращает новое внутреннее изменяемое время
  82. func MutTime[T TxtConstraint](val T) *MTime {
  83. return def_mut_time.MutTime(val)
  84. }