defs.go 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. // package defs -- предметные типы ядра.
  2. package defs
  3. import (
  4. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_bool"
  5. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_err"
  6. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_num"
  7. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_spec_base"
  8. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_spec_fn"
  9. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_time"
  10. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_txt"
  11. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/safe_bool"
  12. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/safe_bool_react"
  13. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/safe_mutex"
  14. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/safe_num"
  15. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/safe_txt"
  16. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/table/owner"
  17. "gitp78su.ipnodns.ru/svi/kern/v4/d0/option"
  18. "gitp78su.ipnodns.ru/svi/kern/v4/d0/result"
  19. )
  20. // Bool -- внутренне представление логического значения.
  21. type Bool = def_spec_base.Bool
  22. // LBool -- неизменяемое булево значение.
  23. type LBool = def_bool.LBool
  24. //BoolConstraint -- ограничение внутреннего логического значения.
  25. type BoolConstraint = def_spec_base.BoolConstraint
  26. // LetBool -- возвращает новое внутреннее логическое значение.
  27. func LetBool[T BoolConstraint](owner *LOwner, val T) *LBool {
  28. return def_bool.LetBool(owner, val)
  29. }
  30. // MBool -- изменяемое булево значение.
  31. type MBool = def_bool.MBool
  32. // MutBool -- возвращает новый изменяемый Bool.
  33. func MutBool[T BoolConstraint](owner *LOwner, val T) *MBool {
  34. return def_bool.MutBool(owner, val)
  35. }
  36. // Num -- внутренне представление числа.
  37. type Num = def_spec_base.Num
  38. // LNum -- внутренне неизменяемое число.
  39. type LNum = def_num.LNum
  40. // LOwner -- неизменяемый владелец.
  41. type LOwner = owner.LOwner
  42. func LetOwner[T NumConstraint, U TxtConstraint](id T, name U) *LOwner {
  43. return owner.LetOwner(id, name)
  44. }
  45. // OwnerPass -- паспорт владельца объекта.
  46. type OwnerPass = owner.OwnerPass
  47. // LetNum -- возвращает новое внутреннее неизменяемое число.
  48. func LetNum[T NumConstraint](owner *LOwner, val T) *LNum {
  49. return def_num.LetNum(owner, val)
  50. }
  51. // MNum -- внутреннее изменяемое число.
  52. type MNum = def_num.MNum
  53. // NumConstraint -- ограничение внутреннего целого.
  54. type NumConstraint = def_spec_base.NumConstraint
  55. // MutNum -- возвращает новое внутреннее изменяемое число.
  56. func MutNum[T NumConstraint](owner *LOwner, val T) *MNum {
  57. return def_num.MutNum(owner, val)
  58. }
  59. // Txt -- внутренее представление текста.
  60. type Txt = def_spec_base.Txt
  61. // TxtConstraint -- разрешает строки и любые типы на его основе (например, ATxt).
  62. type TxtConstraint = def_spec_fn.TxtConstraint
  63. // LTxt -- внутренний неизменяемый текст.
  64. type LTxt = def_txt.LTxt
  65. // LetTxt -- создать новую неизменяемый текст.
  66. func LetTxt[T TxtConstraint](msg T, arg ...any) *LTxt {
  67. return def_txt.LetTxt(msg, arg...)
  68. }
  69. // MTxt -- внутренний изменяемый текст.
  70. type MTxt = def_txt.MTxt
  71. // MutTxt -- создать новый внутрениий изменяемый текст.
  72. func MutTxt[T TxtConstraint](msg T, arg ...any) *MTxt {
  73. return def_txt.MutTxt(msg, arg...)
  74. }
  75. // LErr -- внутренняя неизменяемая ошибка.
  76. type LErr = def_err.LErr
  77. // LetErr -- создать новую обёрнутую ошибку.
  78. func LetErr[T TxtConstraint](msg T, arg ...any) *LErr {
  79. return def_err.LetErr(msg, arg...)
  80. }
  81. // BucketName -- имя сущности.
  82. type BucketName *LTxt
  83. // Result -- результат выполнения.
  84. type Result[T any] = result.Result[T]
  85. // ResOk -- возвращает успешный Result с значением.
  86. func ResOk[T any](val T) *Result[T] {
  87. return result.ResOk(val)
  88. }
  89. // ResErr -- возвращает Result с ошибкой.
  90. func ResErr[T any](err error) *Result[T] {
  91. return result.ResErr[T](err)
  92. }
  93. // WrapErr -- оборачивает существующий Result с ошибкой с новой ошибкой.
  94. func WrapErr[T any](res *Result[T], err error) *Result[T] {
  95. return result.WrapErr(res, err)
  96. }
  97. // Option -- опциональный результат.
  98. type Option[T any] = option.Option[T]
  99. // NewSome -- создать новый опциональный результат.
  100. func NewSome[T any](val T) *Option[T] {
  101. return option.NewSome(val)
  102. }
  103. // NewNone -- создать новый опциональный результат.
  104. func NewNone[T any]() *Option[T] {
  105. return option.NewNone[T]()
  106. }
  107. // Time -- внутренее представление времени.
  108. type Time = def_spec_base.Time
  109. // LTime -- внутренее неизменяемое время.
  110. //
  111. // Вывод: "2006-01-02 15:04:05.000 -07 MST".
  112. type LTime = def_time.LTime
  113. // LetTimeAuto -- возвращает новое автоматическое внутреннее неизменяемое время.
  114. //
  115. // Вывод: "2006-01-02 15:04:05.000 -07 MST".
  116. func LetTimeAuto() *LTime {
  117. return def_time.LetTimeAuto()
  118. }
  119. // MTime -- внутренее изменяемое время.
  120. //
  121. // Вывод: "2006-01-02 15:04:05.000 -07 MST".
  122. type MTime = def_time.MTime
  123. // MutTimeAuto -- возвращает новое автоматическое внутреннее изменяемое время.
  124. //
  125. // Вывод: "2006-01-02 15:04:05.000 -07 MST".
  126. func MutTimeAuto() *MTime {
  127. return def_time.MutTimeAuto()
  128. }
  129. // Sprintf -- форматирует строку с помощью fmt.Sprintf.
  130. func Sprintf[T TxtConstraint](val T, arg ...any) Txt {
  131. return def_spec_fn.Sprintf(val, arg...)
  132. }
  133. // Atoi -- возвращает возможное число.
  134. func Atoi(val Txt) *Result[Num] {
  135. return def_spec_fn.Atoi(val)
  136. }
  137. // MSafeNum -- потокобезопасное число.
  138. type MSafeNum = safe_num.MSafeNum
  139. // MutSafeNumFromTxt -- возвращает новое потокобезопасное число из текста.
  140. func MutSafeNumFromTxt[T TxtConstraint](owner *LOwner, strVal T) *Result[*MSafeNum] {
  141. return safe_num.MutSafeNumFromTxt(owner, strVal)
  142. }
  143. // MutSafeNumFromEnv -- возвращает новое потокобезопасное число из окружения.
  144. func MutSafeNumFromEnv(owner *LOwner, env *LTxt) *Result[*MSafeNum] {
  145. return safe_num.MutSafeNumFromEnv(owner, env)
  146. }
  147. // MutSafeNum -- возвращает новое потокобезопасное число.
  148. func MutSafeNum[T NumConstraint](owner *LOwner, val T) *MSafeNum {
  149. val_ := safe_num.MutSafeNum(owner, val)
  150. return val_
  151. }
  152. // MSafeTxt -- потокобезопасный внутренний текст.
  153. type MSafeTxt = safe_txt.MSafeTxt
  154. // MutSafeTxt -- возвращает новый потокобезопасный текст.
  155. func MutSafeTxt[T TxtConstraint](txt T, arg ...any) *MSafeTxt {
  156. str := safe_txt.MutSafeTxt(txt, arg...)
  157. return str
  158. }
  159. // MutSafeTxt -- возвращает новый потокобезопасный текст.
  160. func MutSafeTxtFromEnv(env *LTxt) *Result[*MSafeTxt] {
  161. str := safe_txt.MutSafeTxtFromEnv(env)
  162. return str
  163. }
  164. // MSafeBool -- потокобезопасный булевый признак.
  165. type MSafeBool = safe_bool.MSafeBool
  166. // MutSafeBool -- возвращает новый потокобезопасный булевый признак.
  167. func MutSafeBool[T BoolConstraint](owner *owner.LOwner, val T) *MSafeBool {
  168. sf := safe_bool.MutSafeBool(owner, val)
  169. return sf
  170. }
  171. // MSafeBoolReact -- потокобезопасный булевый признак с реакцией на своё изменение.
  172. type MSafeBoolReact = safe_bool_react.MSafeBoolReact
  173. // MutSafeBoolReact -- возвращает новую потокобезопасную реактивную булеву переменную.
  174. func MutSafeBoolReact[T BoolConstraint](owner *owner.LOwner, val T) *MSafeBoolReact {
  175. sf := safe_bool_react.MutSafeBoolReact(owner, val)
  176. return sf
  177. }
  178. // MSafeMutex -- безопасный мьютекс.
  179. type MSafeMutex = safe_mutex.MSafeMutex
  180. // MutSafeMutex -- возвращает новый потокобезопасный мьютекс.
  181. func MutSafeMutex() *MSafeMutex {
  182. sf := safe_mutex.MutSafeMutex()
  183. return sf
  184. }