depth0.go 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  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. // MutTimeAuto -- автоматическое изменяемое время
  43. func MutTimeAuto(owner *LOwner) *MTime {
  44. return defs.MutTimeAuto(owner)
  45. }
  46. // Num -- внутренне представление числа.
  47. type Num = defs.Num
  48. // LNum -- внутреннее неизменяемое число.
  49. type LNum = defs.LNum
  50. // LOwner -- неизменяемый владелец.
  51. type LOwner = defs.LOwner
  52. func LetOwner[T NumConstraint, U TxtConstraint](id T, name U) *LOwner {
  53. return defs.LetOwner(id, name)
  54. }
  55. // OwnerPass -- паспорт владельца объекта.
  56. type OwnerPass = defs.OwnerPass
  57. // LetNum -- возвращает новое внутреннее неизменяемое число.
  58. func LetNum[T NumConstraint](owner *LOwner, val T) *LNum {
  59. return defs.LetNum(owner, val)
  60. }
  61. // MNum -- внутреннее изменяемое число.
  62. type MNum = defs.MNum
  63. // NumConstraint -- ограничение внутреннего целого.
  64. type NumConstraint = defs.NumConstraint
  65. // MutNum -- возвращает новое внутреннее изменяемое число.
  66. func MutNum[T NumConstraint](owner *LOwner, val T) *MNum {
  67. return defs.MutNum(owner, val)
  68. }
  69. // TxtConstraint -- разрешает строки и любые типы на его основе (например, ATxt).
  70. type TxtConstraint = defs.TxtConstraint
  71. // LTxt -- внутренний неизменяемый текст.
  72. type LTxt = defs.LTxt
  73. // LetTxt -- создать новый неизменяемый текст.
  74. func LetTxt[T TxtConstraint](owner *LOwner, msgFormat T, arg ...any) *LTxt {
  75. return defs.LetTxt(owner, msgFormat, arg...)
  76. }
  77. // MTxt -- внутренний изменяемый текст.
  78. type MTxt = defs.MTxt
  79. // MutTxt -- создать новый изменяемый текст.
  80. func MutTxt[T TxtConstraint](owner *LOwner, msgFormat T, arg ...any) *MTxt {
  81. return defs.MutTxt(owner, msgFormat, arg...)
  82. }
  83. // Result — обёртка вокруг результата с возможной ошибкой.
  84. type Result[T any] = defs.Result[T]
  85. // ResOk -- возвращает успешный Result с значением.
  86. func ResOk[T any](res T) *Result[T] {
  87. return defs.ResOk(res)
  88. }
  89. // ResErr -- возвращает Result с ошибкой.
  90. func ResErr[T any](err error) *Result[T] {
  91. return defs.ResErr[T](err)
  92. }
  93. // WrapErr -- оборачивает существующий Result с ошибкой с новой ошибкой.
  94. func WrapErr[T any](res *Result[T], err error) *Result[T] {
  95. return defs.WrapErr(res, err)
  96. }
  97. // Option — обёртка вокруг результата с возможной пустотой.
  98. type Option[T any] = defs.Option[T]
  99. // NewSome -- возвращает новый не пустой результат операции.
  100. func NewSome[T any](some T) *Option[T] {
  101. return defs.NewSome(some)
  102. }
  103. // NewNone -- возвращает новый пустой результат операции.
  104. func NewNone[T any]() *Option[T] {
  105. return defs.NewNone[T]()
  106. }
  107. // AssertAction -- хранит состояние для проверки.
  108. type AssertAction[T ~bool] = helpers.AssertAction[T]
  109. // If -- условие для проверки.
  110. func If[T ~bool](isOk T) *AssertAction[T] {
  111. return helpers.If(isOk)
  112. }
  113. // SleepMs -- задержка в миллисекундах.
  114. func SleepMs() {
  115. helpers.SleepMs()
  116. }
  117. // LErr -- внутренняя неизменяемая ошибка.
  118. type LErr = defs.LErr
  119. // LetErr -- создать новую обёрнутую ошибку.
  120. func LetErr[T TxtConstraint](owner *LOwner, msg T, arg ...any) *LErr {
  121. return defs.LetErr(owner, msg, arg...)
  122. }
  123. // SafeChan -- умный безопасный канал.
  124. type SafeChan[T any] = safe_chan.SafeChan[T]
  125. // safe_chan.SafeChanParam[T]
  126. type SafeChanParam[T any] = safe_chan.SafeChanParam[T]
  127. func MutSafeChan[T any](param *safe_chan.SafeChanParam[T]) *SafeChan[T] {
  128. return safe_chan.MutSafeChan(param)
  129. }
  130. // Sprintf -- форматирует строку с помощью fmt.Sprintf.
  131. func Sprintf[T TxtConstraint](val T, arg ...any) Txt {
  132. return defs.Sprintf(val, arg...)
  133. }
  134. // BucketName -- имя сущности.
  135. type BucketName = defs.BucketName
  136. // Atoi -- возвращает возможное число.
  137. func Atoi(val Txt) *Result[Num] {
  138. return defs.Atoi(val)
  139. }
  140. // MSafeNum -- потокобезопасное число.
  141. type MSafeNum = defs.MSafeNum
  142. // MutSafeNumFromTxt -- возвращает новое потокобезопасное число из текста.
  143. func MutSafeNumFromTxt[T TxtConstraint](owner *LOwner, strVal T) *Result[*MSafeNum] {
  144. return defs.MutSafeNumFromTxt(owner, strVal)
  145. }
  146. // MutSafeNumFromEnv -- возвращает новое потокобезопасное число из окружения.
  147. func MutSafeNumFromEnv(owner *LOwner, env *LTxt) *Result[*MSafeNum] {
  148. return defs.MutSafeNumFromEnv(owner, env)
  149. }
  150. // MutSafeNum -- возвращает новое потокобезопасное число.
  151. func MutSafeNum[T NumConstraint](owner *LOwner, val T) *MSafeNum {
  152. val_ := defs.MutSafeNum(owner, val)
  153. return val_
  154. }
  155. // MSafeTxt -- потокобезопасный внутренний текст.
  156. type MSafeTxt = defs.MSafeTxt
  157. // MutSafeTxt -- возвращает новый потокобезопасный текст.
  158. func MutSafeTxt[T TxtConstraint](owner *LOwner, txt T, arg ...any) *MSafeTxt {
  159. str := defs.MutSafeTxt(owner, txt, arg...)
  160. return str
  161. }
  162. // MutSafeTxt -- возвращает новый потокобезопасный текст.
  163. func MutSafeTxtFromEnv(owner *LOwner, env *LTxt) *Result[*MSafeTxt] {
  164. str := defs.MutSafeTxtFromEnv(owner, env)
  165. return str
  166. }
  167. // MSafeBool -- потокобезопасный булевый признак.
  168. type MSafeBool = defs.MSafeBool
  169. // MutSafeBool -- возвращает новый потокобезопасный булевый признак.
  170. func MutSafeBool[T BoolConstraint](owner *LOwner, val T) *MSafeBool {
  171. sf := defs.MutSafeBool(owner, val)
  172. return sf
  173. }
  174. // MSafeBoolReact -- потокобезопасный булевый признак с реакцией на своё изменение.
  175. type MSafeBoolReact = defs.MSafeBoolReact
  176. // MutSafeBoolReact -- возвращает новую потокобезопасную реактивную булеву переменную.
  177. func MutSafeBoolReact[T BoolConstraint](owner *LOwner, val T) *MSafeBoolReact {
  178. sf := defs.MutSafeBoolReact(owner, val)
  179. return sf
  180. }
  181. // MSafeMutex -- безопасный мьютекс.
  182. type MSafeMutex = defs.MSafeMutex
  183. // MutSafeMutex -- возвращает новый потокобезопасный мьютекс.
  184. func MutSafeMutex() *MSafeMutex {
  185. sf := defs.MutSafeMutex()
  186. return sf
  187. }