depth0.go 8.2 KB

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