瀏覽代碼

SVI Рабочее сохранение

SVI 4 月之前
父節點
當前提交
cbd02267f2
共有 100 個文件被更改,包括 401 次插入 和 1391 次删除
  1. 27 27
      v4/kern.go
  2. 1 1
      v4/kern_test.go
  3. 5 0
      v4/lev0/core_spec/core_spec.go
  4. 2 2
      v4/lev0/core_spec/estr.go
  5. 3 3
      v4/lev0/core_spec/ikernel_int.go
  6. 2 2
      v4/lev0/core_spec/ioption.go
  7. 3 3
      v4/lev0/core_spec/iresult.go
  8. 2 2
      v4/lev0/core_spec/isafe_bool.go
  9. 2 2
      v4/lev0/core_spec/isafe_bool_react.go
  10. 3 3
      v4/lev0/core_spec/isafe_string.go
  11. 34 55
      v4/lev0/defs/defs.go
  12. 4 4
      v4/lev0/defs/stream_name/stream_name.go
  13. 3 3
      v4/lev0/etypes/ebool/ebool.go
  14. 7 9
      v4/lev0/etypes/estr/estr.go
  15. 1 1
      v4/lev0/etypes/etypes.go
  16. 6 6
      v4/lev0/helpers/helpers.go
  17. 5 5
      v4/lev0/lev0.go
  18. 2 2
      v4/lev0/option/option.go
  19. 13 13
      v4/lev0/option/option_test.go
  20. 0 74
      v4/lev0/quark/contract/contract.go
  21. 0 31
      v4/lev0/quark/quark.go
  22. 0 78
      v4/lev0/quark/quark_base/quark_base.go
  23. 0 57
      v4/lev0/quark/quark_base/quark_base_test.go
  24. 0 46
      v4/lev0/quark/quark_bool/quark_bool.go
  25. 0 72
      v4/lev0/quark/quark_bool/quark_bool_test.go
  26. 0 85
      v4/lev0/quark/quark_byte/quark_byte.go
  27. 0 116
      v4/lev0/quark/quark_byte/quark_byte_test.go
  28. 0 64
      v4/lev0/quark/quark_float/quark_float.go
  29. 0 57
      v4/lev0/quark/quark_float/quark_float_test.go
  30. 0 61
      v4/lev0/quark/quark_int/quark_int.go
  31. 0 54
      v4/lev0/quark/quark_int/quark_int_test.go
  32. 0 47
      v4/lev0/quark/quark_str/quark_str.go
  33. 0 39
      v4/lev0/quark/quark_str/quark_str_test.go
  34. 0 46
      v4/lev0/quark/quark_val/quark_val.go
  35. 0 48
      v4/lev0/quark/quark_val/quark_val_test.go
  36. 15 15
      v4/lev0/result/result.go
  37. 4 4
      v4/lev0/result/result_test.go
  38. 3 3
      v4/lev0/voc/voc.go
  39. 3 3
      v4/lev1/comp_spec/ilocal_ctx.go
  40. 6 7
      v4/lev1/kint/kint.go
  41. 8 8
      v4/lev1/lev1.go
  42. 7 7
      v4/lev1/local_ctx/ctx_value/ctx_value.go
  43. 2 2
      v4/lev1/local_ctx/ctx_value/ctx_value_test.go
  44. 15 15
      v4/lev1/local_ctx/local_ctx.go
  45. 4 4
      v4/lev1/local_ctx/local_ctx_test.go
  46. 13 13
      v4/lev1/log_buf/log_buf.go
  47. 5 5
      v4/lev1/log_buf/log_buf_test.go
  48. 5 7
      v4/lev1/log_buf/log_msg/log_msg.go
  49. 1 1
      v4/lev1/lst_sort/lst_sort.go
  50. 8 8
      v4/lev1/lst_sort/lst_sort_test.go
  51. 5 5
      v4/lev1/safe_bool/safe_bool.go
  52. 9 9
      v4/lev1/safe_bool_react/safe_bool_react.go
  53. 7 7
      v4/lev1/safe_int/safe_int.go
  54. 7 7
      v4/lev1/safe_string/safe_string.go
  55. 6 6
      v4/lev2/kernel_keeper/kernel_keeper.go
  56. 1 1
      v4/lev2/kmodule/kmodule.go
  57. 8 8
      v4/lev2/kmonolit/kmonolit.go
  58. 1 1
      v4/lev2/kmonolit/kmonolit_test.go
  59. 9 9
      v4/lev2/kserv_http/kserv_http.go
  60. 1 1
      v4/lev2/kserv_http/kserv_http_test.go
  61. 3 3
      v4/lev2/kserv_http_std/kserv_http_std.go
  62. 6 6
      v4/lev2/kwg/kwg.go
  63. 3 3
      v4/lev2/lsi/store_ent/rec_key/store_key.go
  64. 5 5
      v4/lev2/lsi/store_ent/rec_meta/rec_meta.go
  65. 4 4
      v4/lev2/lsi/store_ent/store_ent.go
  66. 2 2
      v4/lev2/lsi/store_spec/ibucket_base.go
  67. 3 3
      v4/lev2/lti/bus_ent/bus_ent.go
  68. 15 4
      v4/lev2/lti/bus_ent/handler_name/handler_name.go
  69. 3 3
      v4/lev2/lti/bus_ent/topic/topic.go
  70. 1 1
      v4/lev2/lti/bus_mock/mock_hand_sub_http/mock_hand_sub_http_test.go
  71. 3 3
      v4/lev2/lti/dot/msg_serve/msg_serve.go
  72. 3 3
      v4/lev2/lti/dot/msg_unsub/msg_unsub.go
  73. 4 4
      v4/lev2/lti/kbus/dict_sub_hook/dict_sub_hook.go
  74. 0 1
      v4/lev2/lti/kbus_base/kbus_base_test.go
  75. 2 2
      v4/lev2/lti/kbus_http/client_bus_http/client_bus_http.go
  76. 1 2
      v4/lev2/lti/kbus_http/client_bus_http/client_bus_http_test.go
  77. 6 6
      v4/lev2/lti/kbus_http/kbus_http.go
  78. 1 1
      v4/lev2/lti/kbus_local/client_bus_local/client_bus_local_test.go
  79. 1 1
      v4/lev2/wui/hx_url/hx_url.go
  80. 3 3
      v4/lev2/wui/hx_url_method/hx_url_method.go
  81. 4 4
      v4/lev2/wui/hx_url_patch/hx_url_patch.go
  82. 1 1
      v4/lev2/wui/wui.go
  83. 3 3
      v4/lev2/wui/wui_button/wui_button.go
  84. 1 1
      v4/lev2/wui/wui_button/wui_button_test.go
  85. 1 1
      v4/lev2/wui/wui_hx/wui_hx.go
  86. 3 3
      v4/lev2/wui/wui_label/wui_label.go
  87. 6 6
      v4/lev2/wui/wui_text/wui_text.go
  88. 2 2
      v4/lev2/wui/wui_types/ihx_url_method.go
  89. 2 2
      v4/lev2/wui/wui_types/ihx_url_patch.go
  90. 2 2
      v4/lev2/wui/wui_types/iwui_text.go
  91. 3 3
      v4/lev2/wui/wui_types/iwui_widget.go
  92. 6 6
      v4/lev2/wui/wui_widget/wui_widget.go
  93. 5 5
      v4/lev3/mod_ent/mod_ent.go
  94. 2 2
      v4/lev3/mod_ent/mod_num/mod_num.go
  95. 7 10
      v4/lev3/mod_ent/module_name/module_name.go
  96. 2 2
      v4/lev3/mod_ent/module_name/module_name_test.go
  97. 1 1
      v4/lev3/mod_kctx/mod_kctx.go
  98. 1 1
      v4/lev3/mod_kctx/mod_kctx_test.go
  99. 1 1
      v4/lev3/mod_keeper/mod_keeper_test.go
  100. 1 1
      v4/lev3/mod_serv_http/btn_modules/btn_modules.go

+ 27 - 27
v4/kern.go

@@ -34,7 +34,7 @@ import (
 
 // GetKernelCtx -- возвращает контекст ядра.
 //
-//go:fix inline
+
 func GetKernelCtx() kspec.IKernelCtx {
 	ctx := kctx.GetKernelCtx()
 	return ctx
@@ -57,7 +57,7 @@ func WrapErr[T any](res mL0.IResult[T], err defs.IErr) mL0.IResult[T] {
 
 // GetKernelStoreKv -- возвращает быстрое key-value хранилище ядра.
 //
-//go:fix inline
+
 func GetKernelStoreKv() store_spec.IKernelStoreKv {
 	store := kstore_kv.GetKernelStore()
 	return store
@@ -65,7 +65,7 @@ func GetKernelStoreKv() store_spec.IKernelStoreKv {
 
 // GetKernelServerHttp -- возвращает веб-сервер ядра.
 //
-//go:fix inline
+
 func GetKernelServerHttp() kspec.IKernelServerHttp {
 	kernServHttp := kserv_http.GetKernelServHttp()
 	return kernServHttp
@@ -75,7 +75,7 @@ type ISafeBool = core_spec.ISafeBool
 
 // NewSafeBool -- возвращает новый потокобезопасный булевый признак.
 //
-//go:fix inline
+
 func NewSafeBool(val bool) ISafeBool {
 	sb := mL1.NewSafeBool(val)
 	return sb
@@ -84,14 +84,14 @@ func NewSafeBool(val bool) ISafeBool {
 // GetKernelBusLocal -- возвращает локальную шину данных.
 func GetKernelBusLocal() bus_spec.IKernelBus {
 	kCtx := kctx.GetKernelCtx()
-	kCtx.Set(defs.Str("monolitName"), "unknown monolit", defs.Str("GetKernelBusLocal()"))
+	kCtx.Set(defs.Txt("monolitName"), "unknown monolit", defs.Txt("GetKernelBusLocal()"))
 	lBus := kbus_local.GetKernelBusLocal()
 	return lBus
 }
 
 // GetKernelBusHttp -- возвращает HTTP шину данных.
 //
-//go:fix inline
+
 func GetKernelBusHttp() bus_spec.IKernelBus {
 	bus := kbus_http.GetKernelBusHttp()
 	return bus
@@ -99,7 +99,7 @@ func GetKernelBusHttp() bus_spec.IKernelBus {
 
 // SleepMs -- спит миллисекунду.
 //
-//go:fix inline
+
 func SleepMs() {
 	time.Sleep(time.Millisecond * 1)
 }
@@ -107,10 +107,10 @@ func SleepMs() {
 // GetMonolitLocal -- возвращает монолит с локальной шиной.
 func GetMonolitLocal(name mod_ent.AModuleName) mod_spec.IKernelMonolit {
 	kCtx := kctx.GetKernelCtx()
-	kCtx.Set(defs.Str("isLocal"), true, defs.Str("bus type"))
+	kCtx.Set(defs.Txt("isLocal"), true, defs.Txt("bus type"))
 	for {
 		time.Sleep(time.Millisecond * 1)
-		optIsLocal := kCtx.Get(defs.Str("isLocal"))
+		optIsLocal := kCtx.Get(defs.Txt("isLocal"))
 		if optIsLocal.IsSome() {
 			break
 		}
@@ -124,10 +124,10 @@ func GetMonolitLocal(name mod_ent.AModuleName) mod_spec.IKernelMonolit {
 func GetMonolitHttp(name mod_ent.AModuleName) mod_spec.IKernelMonolit {
 	kCtx := kctx.GetKernelCtx()
 	_ = kbus_http.GetKernelBusHttp()
-	kCtx.Set(defs.Str("isLocal"), false, defs.Str("bus type"))
+	kCtx.Set(defs.Txt("isLocal"), false, defs.Txt("bus type"))
 	for {
 		time.Sleep(time.Millisecond * 1)
-		optIsLocal := kCtx.Get(defs.Str("isLocal"))
+		optIsLocal := kCtx.Get(defs.Txt("isLocal"))
 		if optIsLocal.IsSome() {
 			break
 		}
@@ -138,7 +138,7 @@ func GetMonolitHttp(name mod_ent.AModuleName) mod_spec.IKernelMonolit {
 
 // NewKernelModule -- возвращает новый модуль на ядре.
 //
-//go:fix inline
+
 func NewKernelModule(name module_name.IModuleNameFix) mod_spec.IKernelModule {
 	resMod := kmodule.NewKernelModule(name)
 	return resMod
@@ -146,7 +146,7 @@ func NewKernelModule(name module_name.IModuleNameFix) mod_spec.IKernelModule {
 
 // NewClientBusLocal -- возвращает клиент для работы с локальной шиной.
 //
-//go:fix inline
+
 func NewClientBusLocal() bus_spec.IBusClient {
 	lClient := client_bus_local.NewClientBusLocal()
 	return lClient
@@ -154,15 +154,15 @@ func NewClientBusLocal() bus_spec.IBusClient {
 
 // NewClientBusHttp -- возвращает клиент для работы с шиной поверх HTTP.
 //
-//go:fix inline
-func NewClientBusHttp(url defs.AStr) bus_spec.IBusClient {
+
+func NewClientBusHttp(url defs.ATxt) bus_spec.IBusClient {
 	client := client_bus_http.NewClientBusHttp(url.String())
 	return client
 }
 
 // GetModuleServHttp -- возвращает модуль для IKernelServHttp.
 //
-//go:fix inline
+
 func GetModuleServHttp() mod_spec.IKernelModule {
 	modServHttp := mod_serv_http.GetModuleServHttp()
 	return modServHttp
@@ -170,7 +170,7 @@ func GetModuleServHttp() mod_spec.IKernelModule {
 
 // GetModuleKernelCtx -- возвращает модуль для IKernelCtx.
 //
-//go:fix inline
+
 func GetModuleKernelCtx() mod_spec.IKernelModule {
 	kModCtx := mod_kctx.GetModuleKernelCtx()
 	return kModCtx
@@ -178,7 +178,7 @@ func GetModuleKernelCtx() mod_spec.IKernelModule {
 
 // GetModuleKernelKeeper -- возвращает модуль для IKernelKeeper.
 //
-//go:fix inline
+
 func GetModuleKernelKeeper() mod_spec.IKernelModule {
 	modKernelKeeper := mod_keeper.GetModuleKeeper()
 	return modKernelKeeper
@@ -186,7 +186,7 @@ func GetModuleKernelKeeper() mod_spec.IKernelModule {
 
 // GetModuleWui -- возвращает модуль для WUI.
 //
-//go:fix inline
+
 func GetModuleWui() mod_spec.IKernelModule {
 	modWui := mod_wui.GetModuleWui()
 	return modWui
@@ -200,7 +200,7 @@ type LogBufParam = mL1.LogBufParam
 
 // NewLogBuf -- возвращает новый буферизованный лог.
 //
-//go:fix inline
+
 func NewLogBuf(param *LogBufParam) ILogBuf {
 	log := mL1.NewLogBuf(param)
 	return log
@@ -208,7 +208,7 @@ func NewLogBuf(param *LogBufParam) ILogBuf {
 
 // NewSafeBoolReact -- возвращает новую потокобезопасную реактивную булеву переменную.
 //
-//go:fix inline
+
 func NewSafeBoolReact() core_spec.ISafeBoolReact {
 	val := mL1.NewSafeBoolReact()
 	return val
@@ -216,7 +216,7 @@ func NewSafeBoolReact() core_spec.ISafeBoolReact {
 
 // NewSafeInt -- возвращает новую потокобезопасную целочисленную переменную.
 //
-//go:fix inline
+
 func NewSafeInt(val defs.Int) core_spec.ISafeInt {
 	val_ := mL1.NewSafeInt(val)
 	return val_
@@ -224,7 +224,7 @@ func NewSafeInt(val defs.Int) core_spec.ISafeInt {
 
 // NewInt -- возвращает новую целочисленную переменную.
 //
-//go:fix inline
+
 func NewInt(val defs.Int) core_spec.Int {
 	val_ := mL1.NewInt(val)
 	return val_
@@ -232,7 +232,7 @@ func NewInt(val defs.Int) core_spec.Int {
 
 // NewLocalCtx -- возвращает новый локальный контекст.
 //
-//go:fix inline
+
 func NewLocalCtx(ctx context.Context) comp_spec.ILocalCtx {
 	lCtx := mL1.NewLocalCtx(ctx)
 	return lCtx
@@ -240,7 +240,7 @@ func NewLocalCtx(ctx context.Context) comp_spec.ILocalCtx {
 
 // NewSafeString -- возвращает новую потокобезопасную строку.
 //
-//go:fix inline
+
 func NewSafeString() core_spec.ISafeString {
 	str := mL1.NewSafeString()
 	return str
@@ -261,7 +261,7 @@ type FnHassert = mL1.FnHassert
 
 // Hassert -- возвращает ссылку на функцию Hassert.
 //
-//go:fix inline
+
 func Hassert() FnHassert {
 	return mL1.FnHassert(helpers.Hassert)
 }
@@ -271,7 +271,7 @@ type FnAssert = mL1.FnAssert
 
 // Assert -- возвращает ссылку на функцию Hassert.
 //
-//go:fix inline
+
 func Assert() FnAssert {
 	return mL1.FnAssert(helpers.Assert)
 }

+ 1 - 1
v4/kern_test.go

@@ -153,7 +153,7 @@ func (sf *tester) new1() {
 	if clientLocal == nil {
 		sf.t.Fatalf("new1(): (local) IBusClient==nil")
 	}
-	clientHttp := NewClientBusHttp(defs.Str("test_url"))
+	clientHttp := NewClientBusHttp(defs.Txt("test_url"))
 	if clientHttp == nil {
 		sf.t.Fatalf("new1(): (http) IBusClient==nil")
 	}

+ 5 - 0
v4/lev0/core_spec/core_spec.go

@@ -1,2 +1,7 @@
 // package core_spec -- типы ядра
 package core_spec
+
+import "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
+
+// ITxtFix -- интерфейс для внутренней неизменямой строки.
+type ITxtFix = defs.ITxtFix

+ 2 - 2
v4/lev0/core_spec/estr.go

@@ -7,12 +7,12 @@ type EStr interface {
 	// SelfCheck -- выполняет самопроверку строки.
 	SelfCheck()
 	// Get -- возвращает строку.
-	Get() defs.AStr
+	Get() defs.ATxt
 }
 
 // EStrMut -- мутабельная расширенная строка.
 type EStrMut interface {
 	EStr
 	// Set -- устанавливает строку.
-	Set(defs.AStr)
+	Set(defs.ATxt)
 }

+ 3 - 3
v4/lev0/core_spec/ikernel_int.go

@@ -15,9 +15,9 @@ type Int interface {
 	// Dec -- уменьшает число на 1
 	Dec()
 	// FromStr -- устанавливает значение из строки
-	FromStr(defs.AStr) IResult[defs.Int]
+	FromStr(defs.ATxt) IResult[defs.Int]
 	// ToStr -- возвращает как строку
-	ToStr() defs.AStr
+	ToStr() defs.ATxt
 	// FromByte -- устанавливает значение из байтов
 	FromByte([]byte) IResult[defs.Int]
 	// ToByte -- возвращает как срез байт
@@ -27,5 +27,5 @@ type Int interface {
 	// ToBool -- возвращает как булево значение
 	ToBool() bool
 	// Getenv -- устанавливает значение из окружения
-	Getenv(defs.AStr) IResult[defs.Int]
+	Getenv(defs.ATxt) IResult[defs.Int]
 }

+ 2 - 2
v4/lev0/core_spec/ioption.go

@@ -15,7 +15,7 @@ type IOption[T any] interface {
 	// SomeOrFn -- возвращает значение, если оно есть, или результат выполнения функции.
 	SomeOrFn(fn func() T) T
 	// Hassert -- проверяет, что не пустое значение (с паникой).
-	Hassert(msgFormat defs.AStr, args ...any) T
+	Hassert(msgFormat defs.ATxt, args ...any) T
 	// Assert -- проверяет, что нет ошибки (с паникой только на локальном стенде).
-	Assert(msgFormat defs.AStr, args ...any) T
+	Assert(msgFormat defs.ATxt, args ...any) T
 }

+ 3 - 3
v4/lev0/core_spec/iresult.go

@@ -15,11 +15,11 @@ type IResult[T any] interface {
 	// OkOrFn -- возвращает значение, если оно есть, или результат выполнения функции.
 	OkOrFn(fn func() T) T
 	// Err -- возвращает ошибку, если она есть.
-	Err() error
+	Err() defs.IErr
 	// Error -- возвращает строковое представление ошибки, если она есть.
 	Error() string
 	// Hassert -- проверяет, что нет ошибки (с паникой).
-	Hassert(msgFormat defs.AStr, args ...any) T
+	Hassert(msgFormat defs.ATxt, args ...any) T
 	// Assert -- проверяет, что нет ошибки (с паникой только на локальном стенде).
-	Assert(msgFormat defs.AStr, args ...any) T
+	Assert(msgFormat defs.ATxt, args ...any) T
 }

+ 2 - 2
v4/lev0/core_spec/isafe_bool.go

@@ -11,7 +11,7 @@ type ISafeBool interface {
 	// Reset -- сбрасывает хранимое потокобезопасное значение
 	Reset()
 	// FromStr -- устанавливает значение из строки
-	FromStr(defs.AStr) IResult[EBool]
+	FromStr(defs.ATxt) IResult[EBool]
 	// Getenv -- получает значение из окружения
-	Getenv(defs.AStr) IResult[EBool]
+	Getenv(defs.ATxt) IResult[EBool]
 }

+ 2 - 2
v4/lev0/core_spec/isafe_bool_react.go

@@ -8,7 +8,7 @@ import (
 type ISafeBoolReact interface {
 	ISafeBool
 	// Add -- добавляет функцию обратного вызова
-	Add(key defs.AStr, fn func(EBoolMut)) IResult[EBool]
+	Add(key defs.ATxt, fn func(EBoolMut)) IResult[EBool]
 	// Delete -- удаляет функцию обратного вызова по ключу
-	Delete(key defs.AStr)
+	Delete(key defs.ATxt)
 }

+ 3 - 3
v4/lev0/core_spec/isafe_string.go

@@ -5,13 +5,13 @@ import "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
 // ISafeString -- интерфейс к потокобезопасной переменной.
 type ISafeString interface {
 	// Get -- возвращает хранимое значение потокобезопасной переменной
-	Get() defs.AStr
+	Get() defs.ATxt
 	// Set -- устанавливает хранимое потокобезопасное значение
-	Set(defs.AStr)
+	Set(defs.ATxt)
 	// Reset -- сбрасывает хранимое потокобезопасное значение
 	Reset()
 	// Byte -- возвращает байтовое представление строки
 	Byte() []byte
 	// Getenv -- устанавливает строку из переменной окружения
-	Getenv(defs.AStr) IResult[defs.AStr]
+	Getenv(defs.ATxt) IResult[defs.ATxt]
 }

+ 34 - 55
v4/lev0/defs/defs.go

@@ -15,11 +15,11 @@ func (i Int) Int() int {
 	return int(i)
 }
 
-// IStr --интерфейс к гибкой строке.
-type IStr interface {
-	// Str -- возвращает внутреннюю строку
-	Str() AStr
-	// String -- возвращает прямую строку
+// ITxtFix --интерфейс к гибкой строке.
+type ITxtFix interface {
+	// Get -- возвращает внутреннюю строку
+	Get() ATxt
+	// String -- возвращает строку
 	String() string
 	// Len -- возвращает длину внутренней строки
 	Len() Int
@@ -29,62 +29,54 @@ type IStr interface {
 	Rune() []rune
 }
 
-// Алиас для внутренней строки.
-type AStr string
+// ATxt -- алиас для внутренней строки.
+type ATxt string
 
-// Str -- создать новую строку.
-//
-//go:fix inline
-func Str(msg AStr, arg ...any) AStr {
-	return AStr(fmt.Sprintf(string(msg), arg...))
+// Txt -- создать новую строку.
+func Txt(msg ATxt, arg ...any) ATxt {
+	return ATxt(fmt.Sprintf(msg.String(), arg...))
 }
 
-// NewStr -- создать новую строку.
-//
-//go:fix inline
-func NewStr(msg AStr) IStr {
+// ToTxt -- создать новую строку.
+func ToTxt(msg ATxt) ITxtFix {
 	return msg
 }
 
 // Rune -- возвращает внутреннюю строку в виде рун.
-//
-//go:fix inline
-func (s AStr) Rune() []rune {
+func (s ATxt) Rune() []rune {
 	return []rune(s)
 }
 
 // Byte -- возвращает внутреннюю строку в виде байтов.
 //
-//go:fix inline
-func (s AStr) Byte() []byte {
+
+func (s ATxt) Byte() []byte {
 	return []byte(s)
 }
 
 // Len -- возвращает длину строки.
 //
-//go:fix inline
-func (s AStr) Len() Int {
+
+func (s ATxt) Len() Int {
 	return Int(len(s))
 }
 
-// Str -- возвращает внутреннюю строку.
-//
-//go:fix inline
-func (s AStr) Str() AStr {
+// Get -- возвращает внутреннюю строку.
+func (s ATxt) Get() ATxt {
 	return s
 }
 
 // String -- возвращает строку по требованию.
 //
-//go:fix inline
-func (s AStr) String() string {
+
+func (s ATxt) String() string {
 	return string(s)
 }
 
 // IErr -- алиас для error.
 type IErr interface {
 	error
-	IStr
+	ITxtFix
 	// IsErr -- возвращает true, если ошибка.
 	IsErr() bool
 }
@@ -95,82 +87,69 @@ type Err struct {
 }
 
 // NewErr -- создать новую обёрнутую ошибку.
-func NewErr(msg AStr, arg ...any) IErr {
-	err := fmt.Errorf(string(msg), arg...)
+func NewErr(msg ATxt, arg ...any) IErr {
+	err := fmt.Errorf(msg.String(), arg...)
 	return &Err{err}
 }
 
 // WrapErr -- возвращает обёрнутую ошибку.
 //
-//go:fix inline
+
 func WrapErr(err error) IErr {
 	return &Err{err}
 }
 
 // Rune -- возвращает внутреннюю строку в виде рун.
 //
-//go:fix inline
+
 func (e *Err) Rune() []rune {
 	return []rune(e.err.Error())
 }
 
 // Byte -- возвращает байты из ошибки
-//
-//go:fix inline
 func (e *Err) Byte() []byte {
 	return []byte(e.err.Error())
 }
 
 // IsErr -- возвращает true, если ошибка.
-//
-//go:fix inline
 func (e *Err) IsErr() bool {
 	return e.err != nil
 }
 
 // String -- возвращает строковое представление ошибки.
-//
-//go:fix inline
 func (e *Err) String() string {
 	return e.err.Error()
 }
 
 // Error -- возвращает хранимую ошибку.
-//
-//go:fix inline
 func (e *Err) Error() string {
 	return e.err.Error()
 }
 
-// Str -- возвращает строку по требованию для ошибки.
-//
-//go:fix inline
-func (e *Err) Str() AStr {
-	return AStr(e.err.Error())
+// Get -- возвращает строку по требованию для ошибки.
+func (e *Err) Get() ATxt {
+	return ATxt(e.err.Error())
 }
 
 // Len -- возвращает длину ошибки.
-//
-//go:fix inline
 func (e *Err) Len() Int {
 	return Int(len(e.err.Error()))
 }
 
 // Time -- метка времени.
 // Вывод: "2006-01-02 15:04:05.000 -07 MST".
-type Time AStr
+type Time ATxt
 
 // BucketName -- имя сущности.
-type BucketName AStr
+type BucketName ATxt
 
 // StreamName -- имя потока для ожидания.
-//
-//go:fix inline
+
 // type StreamName = stream_name.AStreamName
 
 // NewStreamName -- создать новое имя потока.
-//
-//go:fix inline
+
+
 // func NewStreamName(val Str) *stream_name.AStreamName {
 // 	return stream_name.NewAStreamName(val)
 // }

+ 4 - 4
v4/lev0/defs/stream_name/stream_name.go

@@ -7,11 +7,11 @@ import (
 
 // AStreamName -- имя потока для ожидания.
 type AStreamName struct {
-	val defs.AStr
+	val defs.ATxt
 }
 
 // NewAStreamName -- создать новое имя потока.
-func NewAStreamName(val defs.AStr) *AStreamName {
+func NewAStreamName(val defs.ATxt) *AStreamName {
 	helpers.Hassert(val != "", "NewAStreamName(): val is empty")
 	sf := &AStreamName{
 		val: val,
@@ -21,12 +21,12 @@ func NewAStreamName(val defs.AStr) *AStreamName {
 
 // String -- строковое представление.
 //
-//go:fix inline
+
 func (sf *AStreamName) String() string {
 	return sf.val.String()
 }
 
 // Get -- получить значение.
-func (sf *AStreamName) Get() defs.AStr {
+func (sf *AStreamName) Get() defs.ATxt {
 	return sf.val
 }

+ 3 - 3
v4/lev0/etypes/ebool/ebool.go

@@ -31,21 +31,21 @@ func NewEBoolMut(val bool) mKs.EBoolMut {
 
 // IsNot -- проверяет на false.
 //
-//go:fix inline
+
 func (sf *EBool) IsNot() bool {
 	return !sf.val
 }
 
 // IsOk -- проверяет на true.
 //
-//go:fix inline
+
 func (sf *EBool) IsOk() bool {
 	return sf.val
 }
 
 // IsMut -- возвращает признак мутабельности.
 //
-//go:fix inline
+
 func (sf *EBool) IsMut() bool {
 	return sf.isMut
 }

+ 7 - 9
v4/lev0/etypes/estr/estr.go

@@ -9,7 +9,7 @@ import (
 
 // EStr -- расширенная строка.
 type EStr struct {
-	val    defs.AStr // Хранимое значение
+	val    defs.ATxt // Хранимое значение
 	lenMin defs.Int  // Минимальная длина строки
 	lenMax defs.Int  // Максимальная длина строки
 	isMut  bool      // Признак мутабельности
@@ -18,8 +18,7 @@ type EStr struct {
 // FnOptStr -- опции расширенной строки.
 type FnOptStr func(*EStr)
 
-//go:fix inline
-var msg1 = defs.AStr("EStr.OptStrMinLen: мин длина строки должна быть >= 0")
+var msg1 = defs.ATxt("EStr.OptStrMinLen: мин длина строки должна быть >= 0")
 
 // OptStrMinLen -- устанавливает минимальную длину строки.
 func OptStrMinLen(lenMin defs.Int) FnOptStr {
@@ -29,8 +28,7 @@ func OptStrMinLen(lenMin defs.Int) FnOptStr {
 	}
 }
 
-//go:fix inline
-var msg2 = defs.AStr("EStr.OptStrMaxLen: макс длина строки должна быть >= 0")
+var msg2 = defs.ATxt("EStr.OptStrMaxLen: макс длина строки должна быть >= 0")
 
 // OptStrMaxLen -- устанавливает максимальную длину строки.
 func OptStrMaxLen(lenMax defs.Int) FnOptStr {
@@ -41,7 +39,7 @@ func OptStrMaxLen(lenMax defs.Int) FnOptStr {
 }
 
 // OptStr -- устанавливает начальное значение строки.
-func OptStr(val defs.AStr) FnOptStr {
+func OptStr(val defs.ATxt) FnOptStr {
 	return func(sf *EStr) {
 		sf.val = val
 	}
@@ -82,10 +80,10 @@ func NewStrMut(opt ...FnOptStr) mKs.EStrMut {
 }
 
 // Set -- устанавливает значение расширенной строки.
-func (sf *EStr) Set(val defs.AStr) {
+func (sf *EStr) Set(val defs.ATxt) {
 	mHp.Hassert(sf.isMut,
 		"EStrMut.Set(): нельзя изменить значение расширенной строки, если она не мутабельна, val=%q",
-		val.Str())
+		val.Get())
 	sf.val = val
 	sf.SelfCheck()
 }
@@ -100,6 +98,6 @@ func (sf *EStr) SelfCheck() {
 }
 
 // Get -- возвращает хранимое значение расширенной строки.
-func (sf *EStr) Get() defs.AStr {
+func (sf *EStr) Get() defs.ATxt {
 	return sf.val
 }

+ 1 - 1
v4/lev0/etypes/etypes.go

@@ -27,7 +27,7 @@ func OptStrMaxLen(lenMax defs.Int) FnOptStr {
 }
 
 // OptStr -- устанавливает начальное значение строки.
-func OptStr(val defs.AStr) FnOptStr {
+func OptStr(val defs.ATxt) FnOptStr {
 	return estr.OptStr(val)
 }
 

+ 6 - 6
v4/lev0/helpers/helpers.go

@@ -20,10 +20,10 @@ var (
 // FnAssert -- проверка на правильность утверждения с падением в панику на локальном стенде (soft assert).
 //
 //	(isCond bool, msgFormat defs.Str, args ...any)
-type FnAssert func(isCond bool, msgFormat defs.AStr, args ...any)
+type FnAssert func(isCond bool, msgFormat defs.ATxt, args ...any)
 
 // Assert -- проверка на правильность утверждения с падением в панику на локальном стенде (soft assert).
-func Assert(isCond bool, msgFormat defs.AStr, args ...any) {
+func Assert(isCond bool, msgFormat defs.ATxt, args ...any) {
 	if isCond {
 		return
 	}
@@ -37,10 +37,10 @@ func Assert(isCond bool, msgFormat defs.AStr, args ...any) {
 // FnHassert -- проверяет с жёстким падением условие.
 //
 //	(isCond bool, msgFormat defs.Str, args ...any)
-type FnHassert func(isCond bool, msgFormat defs.AStr, args ...any)
+type FnHassert func(isCond bool, msgFormat defs.ATxt, args ...any)
 
 // Hassert -- проверка на правильность утверждения с безусловным падением в панику (hard assert).
-func Hassert(isCond bool, msgFormat defs.AStr, args ...any) {
+func Hassert(isCond bool, msgFormat defs.ATxt, args ...any) {
 	if isCond {
 		return
 	}
@@ -50,7 +50,7 @@ func Hassert(isCond bool, msgFormat defs.AStr, args ...any) {
 
 // TimeNow -- возвращает локальное Unix сейчас-время (мсек, не зависит от положения).
 //
-//go:fix inline
+
 func TimeNow() int64 {
 	timeNow := time.Now().Local().UnixMilli()
 	return timeNow
@@ -58,7 +58,7 @@ func TimeNow() int64 {
 
 // SleepMs -- спит миллисекунду (иногда бывает полезно).
 //
-//go:fix inline
+
 func SleepMs() {
 	time.Sleep(time.Millisecond * 1)
 }

+ 5 - 5
v4/lev0/lev0.go

@@ -50,21 +50,21 @@ func NewNone[T any]() IOption[T] {
 
 // Hassert -- проверка на правильность утверждения с безусловным падением в панику (hard assert).
 //
-//go:fix inline
-func Hassert(isCond bool, msgFormat defs.AStr, args ...any) {
+
+func Hassert(isCond bool, msgFormat defs.ATxt, args ...any) {
 	helpers.Hassert(isCond, msgFormat, args)
 }
 
 // Assert -- проверка на правильность утверждения с падением в панику на локальном стенде (soft assert).
 //
-//go:fix inline
-func Assert(isCond bool, msgFormat defs.AStr, args ...any) {
+
+func Assert(isCond bool, msgFormat defs.ATxt, args ...any) {
 	helpers.Assert(isCond, msgFormat, args)
 }
 
 // SleepMs -- задержка в миллисекундах.
 //
-//go:fix inline
+
 func SleepMs() {
 	time.Sleep(time.Millisecond * 1)
 }

+ 2 - 2
v4/lev0/option/option.go

@@ -67,13 +67,13 @@ func (sf *Option[T]) SomeOrFn(fn func() T) T {
 }
 
 // Hassert -- проверяет, что не пустое значение (с паникой).
-func (sf *Option[T]) Hassert(msgFormat defs.AStr, args ...any) T {
+func (sf *Option[T]) Hassert(msgFormat defs.ATxt, args ...any) T {
 	mH.Hassert(sf.some != nil, msgFormat, args...)
 	return *sf.some
 }
 
 // Assert -- проверяет, что нет ошибки (с паникой только на локальном стенде).
-func (sf *Option[T]) Assert(msgFormat defs.AStr, args ...any) T {
+func (sf *Option[T]) Assert(msgFormat defs.ATxt, args ...any) T {
 	mH.Assert(sf.some != nil, msgFormat, args...)
 	return *sf.some
 }

+ 13 - 13
v4/lev0/option/option_test.go

@@ -33,29 +33,29 @@ func (sf *testerOption) createNoneGood1() {
 			sf.t.Fatalf("createNoneGood1(): panic=%v", _panic)
 		}
 	}()
-	opt := NewNone[defs.AStr]()
+	opt := NewNone[defs.ATxt]()
 	if opt.IsSome() {
 		sf.t.Fatalf("createNoneGood1(): is ok")
 	}
 	if !opt.IsNone() {
 		sf.t.Fatalf("createNoneGood1(): not err")
 	}
-	if val := opt.SomeOr("test2"); val.Str() != "test2" {
+	if val := opt.SomeOr("test2"); val.Get() != "test2" {
 		sf.t.Fatalf("createNoneGood1(): val bad")
 	}
-	if val := opt.SomeOr("test1"); val.Str() != "test1" {
+	if val := opt.SomeOr("test1"); val.Get() != "test1" {
 		sf.t.Fatalf("createNoneGood1(): val bad")
 	}
-	if val := opt.SomeOrFn(sf.fnWrap2); val.Str() != "test5" {
+	if val := opt.SomeOrFn(sf.fnWrap2); val.Get() != "test5" {
 		sf.t.Fatalf("createNoneGood1(): val bad")
 	}
-	_opt := opt.(*Option[defs.AStr])
+	_opt := opt.(*Option[defs.ATxt])
 	sf.unwrapErr(_opt)
 	sf.hassert(_opt)
 	sf.assert(_opt)
 }
 
-func (sf *testerOption) assert(res *Option[defs.AStr]) {
+func (sf *testerOption) assert(res *Option[defs.ATxt]) {
 	sf.t.Log("assert")
 	defer func() {
 		if _panic := recover(); _panic == nil {
@@ -65,7 +65,7 @@ func (sf *testerOption) assert(res *Option[defs.AStr]) {
 	res.Hassert("test assert")
 }
 
-func (sf *testerOption) hassert(res *Option[defs.AStr]) {
+func (sf *testerOption) hassert(res *Option[defs.ATxt]) {
 	sf.t.Log("hassert")
 	defer func() {
 		if _panic := recover(); _panic == nil {
@@ -75,7 +75,7 @@ func (sf *testerOption) hassert(res *Option[defs.AStr]) {
 	res.Hassert("test hassert")
 }
 
-func (sf *testerOption) unwrapErr(res *Option[defs.AStr]) {
+func (sf *testerOption) unwrapErr(res *Option[defs.ATxt]) {
 	sf.t.Log("unwrapErr")
 	defer func() {
 		if _panic := recover(); _panic == nil {
@@ -86,7 +86,7 @@ func (sf *testerOption) unwrapErr(res *Option[defs.AStr]) {
 }
 
 var (
-	str = defs.AStr("test val")
+	str = defs.ATxt("test val")
 )
 
 func (sf *testerOption) createSomeGood2() {
@@ -106,7 +106,7 @@ func (sf *testerOption) createSomeGood2() {
 	if val := opt.Some(); val != str {
 		sf.t.Fatalf("createSomeGood2(): val bad")
 	}
-	strTest1 := defs.AStr("test1")
+	strTest1 := defs.ATxt("test1")
 	if val := opt.SomeOr(strTest1); val != str {
 		sf.t.Fatalf("createSomeGood2(): val bad")
 	}
@@ -121,12 +121,12 @@ func (sf *testerOption) createSomeGood2() {
 }
 
 // Функция высшего порядка для замещения ошибки.
-func (sf *testerOption) fnWrap2() defs.AStr {
+func (sf *testerOption) fnWrap2() defs.ATxt {
 	return "test5"
 }
 
 // Функция высшего порядка для замещения ошибки.
-func (sf *testerOption) fnWrap() defs.AStr {
+func (sf *testerOption) fnWrap() defs.ATxt {
 	return "test1"
 }
 
@@ -149,6 +149,6 @@ func (sf *testerOption) createSomeBad1() {
 			sf.t.Fatalf("createSomeBad1(): panic==nil")
 		}
 	}()
-	var str defs.AStr
+	var str defs.ATxt
 	_ = NewSome(str)
 }

+ 0 - 74
v4/lev0/quark/contract/contract.go

@@ -1,74 +0,0 @@
-// package contract -- контракт каждого протона и нейтрона.
-package contract
-
-import (
-	"os"
-
-	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-)
-
-// isContractDisabled -- признак включённости контрактов.
-// По умолчанию определяется переменной окружения IS_CONTRACT (любое непустое значение включает контракты).
-var isContractDisabled = os.Getenv("IS_CONTRACT") == ""
-
-// stage -- значение переменной окружения STAGE.
-// Если STAGE != "prod", контракты всегда включены.
-var stage = os.Getenv("STAGE")
-
-// Contract -- контракт каждого протона и нейтрона.
-// T -- тип контекста, передаваемого в пред-, ин- и постусловия.
-type Contract struct {
-	// fnPre -- предусловие: должно быть истинно перед выполнением операции
-	fnPre func()
-	// fnPost -- постусловие: должно быть истинно после выполнения операции
-	fnPost func()
-}
-
-// ContractOpt -- опция для настройки контракта.
-type ContractOpt func(*Contract)
-
-// ContractOptPre -- задать предусловие.
-func ContractOptPre(fn func()) ContractOpt {
-	return func(sf *Contract) {
-		sf.fnPre = fn
-	}
-}
-
-// ContractOptPost -- задать постусловие.
-func ContractOptPost(fn func()) ContractOpt {
-	return func(sf *Contract) {
-		sf.fnPost = fn
-	}
-}
-
-// NewContract -- создать новый контракт с опциями.
-func NewContract(opts ...ContractOpt) *Contract {
-	sf := &Contract{}
-	for _, opt := range opts {
-		opt(sf)
-	}
-	return sf
-}
-
-// Wrap -- оборачивает произвольную функцию выполнением контракта.
-// Схема вызова: Pre(ctx) -> fn(ctx) -> Post(ctx).
-// Если соответствующее условие не задано, оно пропускается.
-func (sf *Contract) Wrap(fn func()) func() {
-	mKh.Hassert(fn != nil, "Contract[T].Wrap(): fn==nil")
-	// В непроизводственных окружениях (STAGE != "prod") всегда оборачиваем
-	if stage == "prod" && isContractDisabled {
-		// В prod оборачиваем только если явно включены контракты
-		return fn
-	}
-	return func() {
-		if sf.fnPre != nil {
-			sf.fnPre()
-		}
-
-		fn()
-
-		if sf.fnPost != nil {
-			sf.fnPost()
-		}
-	}
-}

+ 0 - 31
v4/lev0/quark/quark.go

@@ -1,31 +0,0 @@
-// package quark -- кварки ядра
-package quark
-
-import (
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_str"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val"
-)
-
-// Fix -- фиксированное значение.
-type Fix = quark_val.Fix
-
-// Mut -- мутабельное значение.
-type Mut = quark_val.Mut
-
-// CMod -- ограничитель модификации.
-type CMod = quark_val.CMod
-
-type QStr[M CMod] = quark_str.QStr[M]
-
-// NewQStr -- создает новый экземпляр QStr.
-func NewQStr(val defs.AStr) *QStr[Fix] {
-	val_ := quark_str.NewQStr(val)
-	return val_
-}
-
-// NewQStrMut -- создает новый экземпляр QStrMut.
-func NewQStrMut(val defs.AStr) *QStr[Mut] {
-	val_ := quark_str.NewQStrMut(val)
-	return val_
-}

+ 0 - 78
v4/lev0/quark/quark_base/quark_base.go

@@ -1,78 +0,0 @@
-// package quark_base -- базовый кварк.
-package quark_base
-
-import (
-	// mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers".
-	"fmt"
-
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val"
-)
-
-// QBase -- базовый кварк.
-type QBase[M quark_val.CMod, T any] struct {
-	mass int                  // Масса кварка
-	val  *quark_val.Val[M, T] // хранимое значение
-}
-
-// QBaseOpt -- опции для базового кварка.
-type QBaseOpt[M quark_val.CMod, T any] func(qBase *QBase[M, T])
-
-// QBaseOptMass -- опция для массы кварка.
-func QBaseOptMass[M quark_val.CMod, T any](mass int) QBaseOpt[M, T] {
-	return func(sf *QBase[M, T]) {
-		sf.mass = mass
-	}
-}
-
-// QBaseOptVal -- опция для значения кварка.
-func QBaseOptVal[M quark_val.Fix, T any](val T) QBaseOpt[quark_val.Fix, T] {
-	return func(qBase *QBase[quark_val.Fix, T]) {
-		qBase.val = quark_val.NewVal(val)
-	}
-}
-
-// QBaseOptValMut -- опция для изменяемого значения кварка.
-func QBaseOptValMut[M quark_val.Mut, T any](val T) QBaseOpt[quark_val.Mut, T] {
-	return func(sf *QBase[quark_val.Mut, T]) {
-		sf.val = quark_val.NewValMut(val)
-	}
-}
-
-// NewQBase -- создать новый фиксированный базовый кварк.
-func NewQBase[M quark_val.Fix, T any](opts ...QBaseOpt[M, T]) *QBase[M, T] {
-	sf := &QBase[M, T]{}
-	for _, opt := range opts {
-		opt(sf)
-	}
-	if sf.mass <= 0 {
-		panic(fmt.Sprintf("NewQBase(): нулевая масса запрещена! mass=%v\n", sf.mass))
-	}
-	if sf.val == nil {
-		panic("NewQBase(): значение не создано! val==nil\n")
-	}
-	return sf
-}
-
-// NewQBaseMut -- создать новый мутабельный базовый кварк.
-func NewQBaseMut[M quark_val.Mut, T any](opts ...QBaseOpt[M, T]) *QBase[M, T] {
-	sf := &QBase[M, T]{}
-	for _, opt := range opts {
-		opt(sf)
-	}
-	if sf.mass <= 0 {
-		panic("NewQBaseMut(): нулевая масса запрещена!\n")
-	}
-	return sf
-}
-
-// Mass -- получить массу кварка.
-//
-//go:fix inline
-func (sf *QBase[M, T]) Mass() int {
-	return sf.mass
-}
-
-// Val -- возвращает хранимое значение.
-func (sf *QBase[M, T]) Val() *quark_val.Val[M, T] {
-	return sf.val
-}

+ 0 - 57
v4/lev0/quark/quark_base/quark_base_test.go

@@ -1,57 +0,0 @@
-package quark_base
-
-import (
-	"testing"
-
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val"
-)
-
-type tester struct {
-	t *testing.T
-}
-
-func TestQuarkBase(t *testing.T) {
-	sf := &tester{
-		t: t,
-	}
-	sf.new()
-	sf.newMut()
-	sf.newMass()
-}
-
-// Создаёт новый базовый кварк.
-func (sf *tester) new() {
-	sf.t.Log("new")
-	optMass := QBaseOptMass[quark_val.Fix, int](1)
-	optVal := QBaseOptVal(5)
-	qb := NewQBase(optMass, optVal)
-	if qb.Mass() <= 0 {
-		sf.t.Fatalf("new(): некорректная масса, получили %d, ожидали > 0", qb.Mass())
-	}
-}
-
-// Создаёт мутировавший базовый кварк.
-func (sf *tester) newMut() {
-	sf.t.Log("newMut")
-	optMass := QBaseOptMass[quark_val.Mut, string](10)
-	optVal := QBaseOptValMut("test")
-	qb := NewQBaseMut(optMass, optVal)
-	if qb.Mass() != 10 {
-		sf.t.Fatalf("newMut(): некорректная масса, получили %d, ожидали %d", qb.Mass(), 10)
-	}
-	quark_val.Set(qb.Val(), "test_new")
-}
-
-// Создаёт базовый кварк с заданной массой.
-func (sf *tester) newMass() {
-	sf.t.Log("newMass")
-	const wantMass = 42
-	optMass := QBaseOptMass[quark_val.Fix, int](wantMass)
-	optVal := QBaseOptVal(22)
-	qb := NewQBase(optMass, optVal)
-	if qb.Mass() != wantMass {
-		sf.t.Fatalf("newMass(): некорректная масса, получили %d, ожидали %d", qb.Mass(), wantMass)
-	}
-	// Это не пройдёт -- кварк фиксированный
-	// quark_val.Set(qb.Val(), 20)
-}

+ 0 - 46
v4/lev0/quark/quark_bool/quark_bool.go

@@ -1,46 +0,0 @@
-// package quark_bool -- кварк булево.
-package quark_bool
-
-import (
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_base"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val"
-)
-
-// QBool -- кварк булево (типизированный модификатором базового кварка).
-type QBool[M quark_val.CMod] struct {
-	*quark_base.QBase[M, bool] // базовый кварк
-}
-
-// NewQBool -- создать фиксированный кварк булево.
-func NewQBool(val bool) *QBool[quark_val.Fix] {
-	optMass := quark_base.QBaseOptMass[quark_val.Fix, bool](1)
-	optVal := quark_base.QBaseOptVal(val)
-	sf := &QBool[quark_val.Fix]{
-		QBase: quark_base.NewQBase(optMass, optVal),
-	}
-	return sf
-}
-
-// NewQBoolMut -- создать мутируемый кварк булево.
-func NewQBoolMut(val bool) *QBool[quark_val.Mut] {
-	optMass := quark_base.QBaseOptMass[quark_val.Mut, bool](1)
-	optVal := quark_base.QBaseOptValMut(val)
-	sf := &QBool[quark_val.Mut]{
-		QBase: quark_base.NewQBaseMut(optMass, optVal),
-	}
-	return sf
-}
-
-// Get -- Возвращает хранимое значение.
-//
-//go:fix inline
-func (sf *QBool[M]) Get() bool {
-	return sf.Val().Get()
-}
-
-// Set -- устанавливает хранимое значение.
-//
-//go:fix inline
-func Set(sf *QBool[quark_val.Mut], val bool) {
-	quark_val.Set(sf.Val(), val)
-}

+ 0 - 72
v4/lev0/quark/quark_bool/quark_bool_test.go

@@ -1,72 +0,0 @@
-package quark_bool
-
-import (
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val"
-	"testing"
-)
-
-type tester struct {
-	t *testing.T
-}
-
-func TestQBool(t *testing.T) {
-	sf := &tester{
-		t: t,
-	}
-	sf.newTrueMut()
-	sf.newFalseNotMut()
-	sf.setValue()
-}
-
-// Создаёт булевый кварк со значением true и мутацией.
-func (sf *tester) newTrueMut() {
-	sf.t.Log("создание булевого кварка: true, мутировавший")
-	qb := NewQBoolMut(true)
-	if qb == nil {
-		sf.t.Fatalf("newTrueMut(): кварк не создан (nil)")
-	}
-	if !qb.Get() {
-		sf.t.Fatalf("newTrueMut(): некорректное значение, получили %v, ожидали %v", qb.Get(), true)
-	}
-	if qb.Mass() != 1 {
-		sf.t.Fatalf("newTrueMut(): некорректная масса, получили %d, ожидали %d", qb.Mass(), 1)
-	}
-}
-
-// Создаёт булевый кварк со значением false без мутации.
-func (sf *tester) newFalseNotMut() {
-	sf.t.Log("создание булевого кварка: false, без мутации")
-	qb := NewQBool(false)
-	if qb == nil {
-		sf.t.Fatalf("newFalseNotMut(): кварк не создан (nil)")
-	}
-	if qb.Get() {
-		sf.t.Fatalf("newFalseNotMut(): некорректное значение, получили %v, ожидали %v", qb.Get(), false)
-	}
-	if qb.Mass() != 1 {
-		sf.t.Fatalf("newFalseNotMut(): некорректная масса, получили %d, ожидали %d", qb.Mass(), 1)
-	}
-}
-
-// Проверяет установку значения через Set.
-func (sf *tester) setValue() {
-	sf.t.Log("setValue")
-	// Для изменения значения кварк должен быть мутируемым (isMut = true)
-	qb := NewQBoolMut(false)
-	if qb == nil {
-		sf.t.Fatalf("setValue(): кварк не создан (nil)")
-	}
-	if qb.Get() {
-		sf.t.Fatalf("setValue(): начальное значение некорректно, ожидается false")
-	}
-
-	quark_val.Set(qb.Val(), true)
-	if !qb.Get() {
-		sf.t.Fatalf("setValue(): значение после Set(true) некорректно, ожидается true")
-	}
-
-	quark_val.Set(qb.Val(), false)
-	if qb.Get() {
-		sf.t.Fatalf("setValue(): значение после Set(false) некорректно, ожидается false")
-	}
-}

+ 0 - 85
v4/lev0/quark/quark_byte/quark_byte.go

@@ -1,85 +0,0 @@
-// package quark_byte -- кварк байт.
-package quark_byte
-
-import (
-	"fmt"
-	"strconv"
-
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
-	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_base"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val"
-)
-
-// QByte -- кварк байт.
-type QByte[M quark_val.CMod] struct {
-	*quark_base.QBase[M, byte] // базовый кварк
-}
-
-// NewQByte -- создать фиксированный кварк байт.
-func NewQByte(val byte) *QByte[quark_val.Fix] {
-	optMass := quark_base.QBaseOptMass[quark_val.Fix, byte](1)
-	optVal := quark_base.QBaseOptVal(val)
-	sf := &QByte[quark_val.Fix]{
-		QBase: quark_base.NewQBase(optMass, optVal),
-	}
-	return sf
-}
-
-// NewQByteMut -- создать мутируемый кварк байт.
-func NewQByteMut(val byte) *QByte[quark_val.Mut] {
-	optMass := quark_base.QBaseOptMass[quark_val.Mut, byte](1)
-	optVal := quark_base.QBaseOptValMut(val)
-	sf := &QByte[quark_val.Mut]{
-		QBase: quark_base.NewQBaseMut(optMass, optVal),
-	}
-	return sf
-}
-
-// Get -- получить значение.
-//
-//go:fix inline
-func (sf *QByte[T]) Get() byte {
-	return sf.Val().Get()
-}
-
-// Set -- установить значение.
-//
-//go:fix inline
-func Set(sf *QByte[quark_val.Mut], val byte) {
-	quark_val.Set(sf.Val(), val)
-}
-
-// ToInt -- представить значение как int.
-//
-//go:fix inline
-func (sf *QByte[T]) ToInt() int {
-	return int(sf.Val().Get())
-}
-
-// ToStr -- представить значение как строку из одного байта.
-//
-//go:fix inline
-func (sf *QByte[T]) ToStr() string {
-	return fmt.Sprint(sf.Val().Get())
-}
-
-// FromInt -- установить значение из int.
-func FromInt(sf *QByte[quark_val.Mut], v int) {
-	mKh.Hassert(v >= 0 && v <= 255,
-		defs.Str("QByte.FromInt(): значение вне диапазона байта"))
-	quark_val.Set(sf.Val(), byte(v))
-}
-
-// FromStr -- установить значение из строки (как из целого числа).
-//
-//go:fix inline
-func FromStr(sf *QByte[quark_val.Mut], s string) {
-	// Конвертируем строку в int и используем FromInt для всех проверок
-	v, err := strconv.Atoi(s)
-	mKh.Hassert(err == nil,
-		defs.Str("QByte.FromStr(): не удалось преобразовать строку в int, err=\n\t%v", err))
-	mKh.Hassert(v >= 0 && v <= 255,
-		defs.Str("QByte.FromInt(): значение вне диапазона байта"))
-	quark_val.Set(sf.Val(), byte(v))
-}

+ 0 - 116
v4/lev0/quark/quark_byte/quark_byte_test.go

@@ -1,116 +0,0 @@
-package quark_byte
-
-import (
-	"strconv"
-	"testing"
-
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
-	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val"
-)
-
-type tester struct {
-	t *testing.T
-}
-
-func TestQByte(t *testing.T) {
-	sf := &tester{
-		t: t,
-	}
-	sf.newMut()
-	sf.newFix()
-	sf.convertInt()
-	sf.convertStr()
-}
-
-// Создаёт мутируемый кварк байта и проверяет базовые свойства.
-func (sf *tester) newMut() {
-	sf.t.Log("newMut")
-	const wantVal byte = 42
-
-	qb := NewQByteMut(wantVal)
-	if qb == nil {
-		sf.t.Fatalf("newMut(): кварк не создан (nil)")
-	}
-	if qb.Mass() != 1 {
-		sf.t.Fatalf("newMut(): некорректная масса, получили %d, ожидали %d", qb.Mass(), 1)
-	}
-	if qb.Get() != wantVal {
-		sf.t.Fatalf("newMut(): некорректное значение, получили %d, ожидали %d", qb.Get(), wantVal)
-	}
-
-	// Проверяем, что Set меняет значение для мутируемого кварка
-	const newVal byte = 7
-	quark_val.Set(qb.Val(), newVal)
-	if qb.Get() != newVal {
-		sf.t.Fatalf("newMut(): значение после Set() некорректно, получили %d, ожидали %d", qb.Get(), newVal)
-	}
-}
-
-// Создаёт  кварк байта и проверяет базовые свойства (без изменения значения).
-func (sf *tester) newFix() {
-	sf.t.Log("newFix")
-	const wantVal byte = 10
-
-	qb := NewQByte(wantVal)
-	if qb == nil {
-		sf.t.Fatalf("newFix(): кварк не создан (nil)")
-	}
-	if qb.Mass() != 1 {
-		sf.t.Fatalf("newFix(): некорректная масса, получили %d, ожидали %d", qb.Mass(), 1)
-	}
-	if qb.Get() != wantVal {
-		sf.t.Fatalf("newFix(): некорректное значение, получили %d, ожидали %d", qb.Get(), wantVal)
-	}
-}
-
-// Проверяет преобразование в/из int.
-func (sf *tester) convertInt() {
-	sf.t.Log("convertInt")
-
-	const srcVal byte = 100
-	qb := NewQByteMut(srcVal)
-	if qb == nil {
-		sf.t.Fatalf("convertInt(): кварк не создан (nil)")
-	}
-
-	if qb.ToInt() != int(srcVal) {
-		sf.t.Fatalf("convertInt(): ToInt() вернул %d, ожидали %d", qb.ToInt(), int(srcVal))
-	}
-
-	const newIntVal = 200
-	mKh.Hassert(newIntVal >= 0 && newIntVal <= 255,
-		defs.Str("QByte.FromInt(): значение вне диапазона байта"))
-	quark_val.Set(qb.Val(), byte(newIntVal))
-	if qb.Get() != byte(newIntVal) {
-		sf.t.Fatalf("convertInt(): FromInt() установил %d, ожидали %d", qb.Get(), byte(newIntVal))
-	}
-}
-
-// Проверяет преобразование в/из строки.
-func (sf *tester) convertStr() {
-	sf.t.Log("проверка преобразования в/из строки")
-
-	const srcVal byte = 5
-	qb := NewQByteMut(srcVal)
-	if qb == nil {
-		sf.t.Fatalf("convertStr(): кварк не создан (nil)")
-	}
-
-	// ToStr должен возвращать строковое представление байта как числа
-	strVal := qb.ToStr()
-	if strVal != "5" {
-		sf.t.Fatalf("convertStr(): ToStr() вернул %q, ожидали 5", strVal)
-	}
-
-	// FromStr использует StrToInt, поэтому передаём числовую строку
-	const newIntVal = 13
-	v, err := strconv.Atoi("13")
-	mKh.Hassert(err == nil,
-		defs.Str("QByte.FromStr(): не удалось преобразовать строку в int, err=\n\t%v", err))
-	//go:fix inline
-	FromInt(qb, v)
-	if qb.Get() != byte(newIntVal) {
-		sf.t.Fatalf("convertStr(): FromStr() установил %d, ожидали %d", qb.Get(), byte(newIntVal))
-	}
-}

+ 0 - 64
v4/lev0/quark/quark_float/quark_float.go

@@ -1,64 +0,0 @@
-// package quark_float -- кварк вещественное.
-package quark_float
-
-import (
-	"fmt"
-	"strconv"
-
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
-	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_base"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val"
-)
-
-// QFloat -- кварк вещественное.
-type QFloat[M quark_val.CMod] struct {
-	*quark_base.QBase[M, float64]
-}
-
-// NewQFloat -- создание фиксированного кварка вещественное.
-func NewQFloat(val float64) *QFloat[quark_val.Fix] {
-	optMass := quark_base.QBaseOptMass[quark_val.Fix, float64](8)
-	optVal := quark_base.QBaseOptVal(val)
-	sf := &QFloat[quark_val.Fix]{
-		QBase: quark_base.NewQBase(optMass, optVal),
-	}
-	return sf
-}
-
-// NewQFloatMut -- создание мутабельного кварка вещественное.
-func NewQFloatMut(val float64) *QFloat[quark_val.Mut] {
-	optMass := quark_base.QBaseOptMass[quark_val.Mut, float64](8)
-	optVal := quark_base.QBaseOptValMut(val)
-	sf := &QFloat[quark_val.Mut]{
-		QBase: quark_base.NewQBaseMut(optMass, optVal),
-	}
-	return sf
-}
-
-// Get -- возвращает хранимое значение.
-func (sf *QFloat[M]) Get() float64 {
-	return sf.Val().Get()
-}
-
-// Set -- устанавливает хранимое значение.
-func Set(sf *QFloat[quark_val.Mut], val float64) {
-	quark_val.Set(sf.Val(), val)
-}
-
-// FromStr -- устанавливает из строки.
-//
-//go:fix inline
-func FromStr(sf *QFloat[quark_val.Mut], str string) {
-	fVal, err := strconv.ParseFloat(str, 64)
-	mKh.Hassert(err == nil,
-		defs.Str("QFloat.FromStr(): str=%q, err=\n\t%v", str, err))
-	quark_val.Set(sf.Val(), fVal)
-}
-
-// ToStr -- конвертирует в строку.
-//
-//go:fix inline
-func (sf *QFloat[M]) ToStr() string {
-	return fmt.Sprint(sf.Get())
-}

+ 0 - 57
v4/lev0/quark/quark_float/quark_float_test.go

@@ -1,57 +0,0 @@
-package quark_float
-
-import (
-	"strconv"
-
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val"
-
-	"testing"
-
-	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-)
-
-type tester struct {
-	t *testing.T
-}
-
-func TestQuarkFloat(t *testing.T) {
-	sf := &tester{
-		t: t,
-	}
-	sf.new()
-	sf.newMut()
-}
-
-// Новое мутабельное значение.
-func (sf *tester) newMut() {
-	sf.t.Log("newMut")
-	qf := NewQFloatMut(123.456)
-	if qf.Get() != 123.456 {
-		sf.t.Fatalf("NewQFloatMut(123.456): qf.Get()=%v", qf.Get())
-	}
-	Set(qf, 12.34)
-	if qf.Get() != 12.34 {
-		sf.t.Fatalf("Set(qf, 12.34): qf.Get()=%v", qf.Get())
-	}
-	var str = "12.1"
-	fVal, err := strconv.ParseFloat(str, 64)
-	mKh.Hassert(err == nil,
-		defs.Str("QFloat.FromStr(): str=%q, err=\n\t%v", str, err))
-	quark_val.Set(qf.Val(), fVal)
-	if qf.Get() != 12.1 {
-		sf.t.Fatalf("FromStr(qf, \"12.1\"): qf.Get()=%v", qf.Get())
-	}
-	if str := qf.ToStr(); str != "12.1" {
-		sf.t.Fatalf("qf.ToStr(): qf.Get()=%v", str)
-	}
-}
-
-// Новое фиксированное значение.
-func (sf *tester) new() {
-	sf.t.Log("new")
-	qf := NewQFloat(123.456)
-	if qf.Get() != 123.456 {
-		sf.t.Fatalf("NewQFloat(123.456): qf.Get()=%v", qf.Get())
-	}
-}

+ 0 - 61
v4/lev0/quark/quark_int/quark_int.go

@@ -1,61 +0,0 @@
-// package quark_int -- кварк целое.
-package quark_int
-
-import (
-	"strconv"
-
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
-	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_base"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val"
-)
-
-// QInt -- кварк целое.
-type QInt[M quark_val.CMod] struct {
-	*quark_base.QBase[M, int]
-}
-
-// NewQInt -- создать новый фиксированный кварк целое.
-func NewQInt(v int) *QInt[quark_val.Fix] {
-	optMass := quark_base.QBaseOptMass[quark_val.Fix, int](8)
-	optVal := quark_base.QBaseOptVal(v)
-	sf := &QInt[quark_val.Fix]{
-		QBase: quark_base.NewQBase(optMass, optVal),
-	}
-	return sf
-}
-
-// NewQIntMut -- создать новый изменяемый кварк целое.
-func NewQIntMut(v int) *QInt[quark_val.Mut] {
-	optMass := quark_base.QBaseOptMass[quark_val.Mut, int](8)
-	optVal := quark_base.QBaseOptValMut(v)
-	sf := &QInt[quark_val.Mut]{
-		QBase: quark_base.NewQBaseMut(optMass, optVal),
-	}
-	return sf
-}
-
-// Get -- возвращает хранимое значение.
-//
-//go:fix inline
-func (sf *QInt[M]) Get() int {
-	return sf.Val().Get()
-}
-
-// Set -- установить значение.
-//
-//go:fix inline
-func Set(sf *QInt[quark_val.Mut], v int) {
-	quark_val.Set(sf.Val(), v)
-}
-
-// FromStr -- установить значение из строки.
-//
-//go:fix inline
-func FromStr(sf *QInt[quark_val.Mut], s string) {
-	iVal, err := strconv.Atoi(s)
-	mKh.Hassert(err == nil,
-		defs.Str("QInt.FromStr(): не удалось преобразовать строку(%v) в int, err=\n\t%v",
-			s, err))
-	quark_val.Set(sf.Val(), iVal)
-}

+ 0 - 54
v4/lev0/quark/quark_int/quark_int_test.go

@@ -1,54 +0,0 @@
-package quark_int
-
-import (
-	"strconv"
-
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val"
-
-	"testing"
-
-	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-)
-
-type tester struct {
-	t *testing.T
-}
-
-func TestQuarkInt(t *testing.T) {
-	sf := &tester{
-		t: t,
-	}
-	sf.new()
-	sf.newMut()
-}
-
-// Новое мутабельное целое.
-func (sf *tester) newMut() {
-	sf.t.Log("newMut")
-	qi := NewQIntMut(100)
-	if qi.Get() != 100 {
-		sf.t.Fatalf("newMut(): qi.Get()=%d", qi.Get())
-	}
-	quark_val.Set(qi.Val(), 200)
-	if qi.Get() != 200 {
-		sf.t.Fatalf("newMut(): qi.Get()=%d", qi.Get())
-	}
-	var s = "300"
-	iVal, err := strconv.Atoi(s)
-	mKh.Hassert(err == nil,
-		defs.Str("QInt.FromStr(): не удалось преобразовать строку(%v) в int, err=\n\t%v", s, err))
-	quark_val.Set(qi.Val(), iVal)
-	if qi.Get() != 300 {
-		sf.t.Fatalf("newMut(): qi.Get()=%d", qi.Get())
-	}
-}
-
-// Новое фиксированное целое.
-func (sf *tester) new() {
-	sf.t.Log("new")
-	qi := NewQInt(100)
-	if qi.Get() != 100 {
-		sf.t.Fatalf("new(): qi.Get()=%d", qi.Get())
-	}
-}

+ 0 - 47
v4/lev0/quark/quark_str/quark_str.go

@@ -1,47 +0,0 @@
-// package quark_str -- кварк строки.
-package quark_str
-
-import (
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_base"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val"
-)
-
-// QStr -- кварк строки.
-type QStr[M quark_val.CMod] struct {
-	*quark_base.QBase[M, defs.AStr]
-}
-
-// NewQStr -- создает фиксированную новую кварк строку.
-func NewQStr(val defs.AStr) *QStr[quark_val.Fix] {
-	optMass := quark_base.QBaseOptMass[quark_val.Fix, defs.AStr](val.Len().Int())
-	optVal := quark_base.QBaseOptVal(val)
-	sf := &QStr[quark_val.Fix]{
-		QBase: quark_base.NewQBase(optMass, optVal),
-	}
-	return sf
-}
-
-// NewQStrMut -- создает мутабельную новую кварк строку.
-func NewQStrMut(val defs.AStr) *QStr[quark_val.Mut] {
-	optMass := quark_base.QBaseOptMass[quark_val.Mut, defs.AStr](val.Len().Int())
-	optVal := quark_base.QBaseOptValMut(val)
-	sf := &QStr[quark_val.Mut]{
-		QBase: quark_base.NewQBaseMut(optMass, optVal),
-	}
-	return sf
-}
-
-// Get -- возвращает хранимое значение.
-//
-//go:fix inline
-func (sf *QStr[M]) Get() defs.AStr {
-	return sf.Val().Get()
-}
-
-// Set -- устанавливает хранимое значение.
-//
-//go:fix inline
-func Set(sf *QStr[quark_val.Mut], val defs.AStr) {
-	quark_val.Set(sf.Val(), val)
-}

+ 0 - 39
v4/lev0/quark/quark_str/quark_str_test.go

@@ -1,39 +0,0 @@
-package quark_str
-
-import (
-	"testing"
-
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val"
-)
-
-type tester struct {
-	t *testing.T
-}
-
-func TestQStr(t *testing.T) {
-	sf := &tester{
-		t: t,
-	}
-	sf.new()
-	sf.newMut()
-}
-
-// Создание строки с мутацией.
-func (sf *tester) newMut() {
-	sf.t.Log("newMut")
-	qs := NewQStrMut("test")
-	quark_val.Set(qs.Val(), "test")
-	if qs.Get().Str() != "test2" {
-		sf.t.Fatalf("newMut(): bad value")
-	}
-}
-
-// Создание неизменяемой строки.
-func (sf *tester) new() {
-	sf.t.Log("new")
-	qs := NewQStr(defs.Str("test"))
-	if qs.Get().Str() != "test" {
-		sf.t.Fatalf("new(): bad value")
-	}
-}

+ 0 - 46
v4/lev0/quark/quark_val/quark_val.go

@@ -1,46 +0,0 @@
-// package quark_val -- кварк значения.
-package quark_val
-
-// Fix -- фиксированное значение.
-type Fix struct{}
-
-// Mut -- изменяемое значение.
-type Mut struct{}
-
-// CMod -- ограничитель модификации.
-type CMod interface {
-	Fix | Mut
-}
-
-// Val -- кварк поля.
-type Val[M CMod, T any] struct {
-	val T // Значение поля
-}
-
-// NewVal -- возвращает новое фиксированное значение.
-func NewVal[T any](val T) *Val[Fix, T] {
-	sf := &Val[Fix, T]{
-		val: val,
-	}
-	return sf
-}
-
-// NewValMut -- возвращает новое мутабельное значение.
-func NewValMut[T any](val T) *Val[Mut, T] {
-	sf := &Val[Mut, T]{
-		val: val,
-	}
-	return sf
-}
-
-// Get -- получить значение поля.
-//
-//go:fix inline
-func (sf *Val[M, T]) Get() T {
-	return sf.val
-}
-
-// Set -- установить мутабельное значение.
-func Set[T any](sf *Val[Mut, T], val T) {
-	sf.val = val
-}

+ 0 - 48
v4/lev0/quark/quark_val/quark_val_test.go

@@ -1,48 +0,0 @@
-package quark_val
-
-import "testing"
-
-type tester struct {
-	t *testing.T
-}
-
-func TestQuarkVal(t *testing.T) {
-	sf := &tester{
-		t: t,
-	}
-	sf.newFix()
-	sf.newMut()
-}
-
-// Создание нового мутабельного значения.
-func (sf *tester) newMut() {
-	sf.t.Log("newMut")
-	f := NewValMut(10)
-	if f == nil {
-		sf.t.Fatalf("newMut(): f==nil")
-	}
-	if v := f.Get(); v != 10 {
-		sf.t.Fatalf("newMut(): v!=10")
-	}
-	Set(f, 32)
-	if v := f.Get(); v != 32 {
-		sf.t.Fatalf("newMut(): v(%v)!=32", v)
-	}
-}
-
-// Создание нового фиксированного значения.
-func (sf *tester) newFix() {
-	sf.t.Log("newFix")
-	f := NewVal(10)
-	if f == nil {
-		sf.t.Fatalf("newFix(): f==nil")
-	}
-	if v := f.Get(); v != 10 {
-		sf.t.Fatalf("newFix(): v!=10")
-	}
-	// Эту функцию вызвать нельзя -- тип другой
-	// Set(f, 34)
-	// if v := f.Get(); v != 10 {
-	// 	sf.t.Fatalf("newFix(): v(%v)!=10", v)
-	// }
-}

+ 15 - 15
v4/lev0/result/result.go

@@ -19,7 +19,7 @@ type Result[T any] struct {
 }
 
 var (
-	str5 = defs.AStr("NewOk(): result==nil")
+	str5 = defs.ATxt("NewOk(): result==nil")
 )
 
 // NewOk -- возвращает успешный Result с значением.
@@ -38,7 +38,7 @@ func NewOk[T any](result T) mKs.IResult[T] {
 }
 
 var (
-	str6 = defs.AStr("NewErr(): err==nil")
+	str6 = defs.ATxt("NewErr(): err==nil")
 )
 
 // NewErr -- возвращает Result с ошибкой.
@@ -52,8 +52,8 @@ func NewErr[T any](err defs.IErr) mKs.IResult[T] {
 }
 
 var (
-	str7 = defs.AStr("WrapErr(): result not have error")
-	str8 = defs.AStr("WrapErr(): err==nil")
+	str7 = defs.ATxt("WrapErr(): result not have error")
+	str8 = defs.ATxt("WrapErr(): err==nil")
 )
 
 // WrapErr -- оборачивает существующий Result с ошибкой с новой ошибкой.
@@ -67,7 +67,7 @@ func WrapErr[T any](res mKs.IResult[T], err defs.IErr) mKs.IResult[T] {
 }
 
 var (
-	str9 = defs.AStr("Result[T].destroy(): err not checked")
+	str9 = defs.ATxt("Result[T].destroy(): err not checked")
 )
 
 func (sf *Result[T]) destroy(res *Result[T]) {
@@ -106,7 +106,7 @@ func (sf *Result[T]) OkOr(defaultValue T) T {
 }
 
 var (
-	str11 = defs.AStr("Result[T].OkOrFn(): fn==nil")
+	str11 = defs.ATxt("Result[T].OkOrFn(): fn==nil")
 )
 
 // OkOrFn -- возвращает значение, если оно есть, или результат выполнения функции.
@@ -121,11 +121,11 @@ func (sf *Result[T]) OkOrFn(fn func() T) T {
 }
 
 var (
-	str12 = defs.AStr("Result[T].Err(): err==nil")
+	str12 = defs.ATxt("Result[T].Err(): err==nil")
 )
 
 // Err -- возвращает ошибку, если она есть.
-func (sf *Result[T]) Err() error {
+func (sf *Result[T]) Err() defs.IErr {
 	mKh.Hassert(sf.err != nil, str12)
 	sf.isCheck = true
 	return sf.err
@@ -141,22 +141,22 @@ func (sf *Result[T]) Error() string {
 }
 
 // Hassert -- проверяет, что нет ошибки (с паникой).
-func (sf *Result[T]) Hassert(msgFormat defs.AStr, args ...any) T {
-	strErr := defs.AStr("")
+func (sf *Result[T]) Hassert(msgFormat defs.ATxt, args ...any) T {
+	strErr := defs.ATxt("")
 	if !sf.isCheck {
-		strErr = defs.Str("Result[T].Hassert(): not check error, err=\n\t%v", sf.err)
+		strErr = defs.Txt("Result[T].Hassert(): not check error, err=\n\t%v", sf.err)
 	}
-	strErr = defs.Str(msgFormat+strErr, args...)
+	strErr = defs.Txt(msgFormat+strErr, args...)
 	mKh.Hassert(sf.err == nil, strErr)
 	sf.isCheck = true
 	return sf.val
 }
 
 // Assert -- проверяет, что нет ошибки (с паникой только на локальном стенде).
-func (sf *Result[T]) Assert(msgFormat defs.AStr, args ...any) T {
-	strErr := defs.AStr("")
+func (sf *Result[T]) Assert(msgFormat defs.ATxt, args ...any) T {
+	strErr := defs.ATxt("")
 	if !sf.isCheck {
-		strErr = defs.Str("Result[T].Assert(): not check error, , err=\n\t%v", sf.err).Str()
+		strErr = defs.Txt("Result[T].Assert(): not check error, , err=\n\t%v", sf.err)
 	}
 	mKh.Assert(sf.err == nil, msgFormat+strErr, args...)
 	sf.isCheck = true

+ 4 - 4
v4/lev0/result/result_test.go

@@ -22,7 +22,7 @@ func TestResult(t *testing.T) {
 }
 
 const (
-	str1 = defs.AStr("test result")
+	str1 = defs.ATxt("test result")
 )
 
 // Создаёт новый результат и не проверяет его.
@@ -42,7 +42,7 @@ func (sf *tester) notCheck() {
 	}
 	runtime.Gosched()
 	runtime.GC()
-	_res := res.(*Result[defs.AStr])
+	_res := res.(*Result[defs.ATxt])
 	_res.destroy(_res)
 }
 
@@ -103,7 +103,7 @@ func (sf *tester) createErrGood1() {
 }
 
 const (
-	str2 = defs.AStr("test assert2")
+	str2 = defs.ATxt("test assert2")
 )
 
 func (sf *tester) assert2() {
@@ -202,7 +202,7 @@ func (sf *tester) createOkGood2() {
 	if err := res0.Err(); err == nil {
 		sf.t.Fatalf("createOkGood1(): err==nil")
 	}
-	str1 := defs.Str("test assert")
+	str1 := defs.ATxt("test assert")
 	res.Hassert(str1)
 	res.Assert(str1)
 }

+ 3 - 3
v4/lev0/voc/voc.go

@@ -9,21 +9,21 @@ import (
 
 // NewETime -- создать новую метку времени.
 //
-//go:fix inline
+
 func NewETime(val defs.Time) mKs.ITime {
 	return etime.NewETime(val)
 }
 
 // NewETimeAuto -- создать новую фиксированную авто-метку
 //
-//go:fix inline
+
 func NewETimeAuto() mKs.ITime {
 	return etime.NewETimeAuto()
 }
 
 // NewETimeAutoMut -- создать новую фиксированную авто-метку
 //
-//go:fix inline
+
 func NewETimeAutoMut() mKs.ITimeMut {
 	return etime.NewETimeAutoMut()
 }

+ 3 - 3
v4/lev1/comp_spec/ilocal_ctx.go

@@ -15,11 +15,11 @@ type ICtxValue = ctx_value.ICtxValue
 type ILocalCtx interface {
 	core_spec.IRWMutex
 	// Get -- извлекает значение из контекста
-	Get(key defs.AStr) core_spec.IOption[ICtxValue]
+	Get(key defs.ATxt) core_spec.IOption[ICtxValue]
 	// Del -- удаляет значение из контекста
-	Del(key defs.AStr)
+	Del(key defs.ATxt)
 	// Set -- добавляет значение в контекст
-	Set(key defs.AStr, val any, comment defs.AStr)
+	Set(key defs.ATxt, val any, comment defs.ATxt)
 	// Size -- возвращает размер словаря контекста
 	Size() defs.Int
 	// SortedList -- возвращает сортированный список объектов контекста

+ 6 - 7
v4/lev1/kint/kint.go

@@ -9,7 +9,6 @@ import (
 
 	mL0 "gitp78su.ipnodns.ru/svi/kern/v4/lev0"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
-	mKs "gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
 )
 
@@ -19,7 +18,7 @@ type KernInt struct {
 }
 
 // NewInt -- возвращает новое целое ядра.
-func NewInt(val defs.Int) mKs.Int {
+func NewInt(val defs.Int) core_spec.Int {
 	sf := &KernInt{
 		val: val,
 	}
@@ -52,7 +51,7 @@ func (sf *KernInt) Reset() {
 }
 
 // FromStr -- устанавливает значение из строки.
-func (sf *KernInt) FromStr(strVal defs.AStr) mL0.IResult[defs.Int] {
+func (sf *KernInt) FromStr(strVal defs.ATxt) mL0.IResult[defs.Int] {
 	iVal, err := strconv.Atoi(strVal.String())
 	if err != nil {
 		err := defs.NewErr("KInt.FromStr(): vak(%v) bad, err=\n\t%w", strVal, err)
@@ -63,8 +62,8 @@ func (sf *KernInt) FromStr(strVal defs.AStr) mL0.IResult[defs.Int] {
 }
 
 // ToStr -- возвращает как строку.
-func (sf *KernInt) ToStr() defs.AStr {
-	return defs.Str("%v", sf.val)
+func (sf *KernInt) ToStr() defs.ATxt {
+	return defs.Txt("%v", sf.val)
 }
 
 // FromByte -- устанавливает значение из байтов (BigEndian, net order).
@@ -108,9 +107,9 @@ func (sf *KernInt) ToBool() bool {
 }
 
 // Getenv -- устанавливает значение из окружения.
-func (sf *KernInt) Getenv(env defs.AStr) core_spec.IResult[defs.Int] {
+func (sf *KernInt) Getenv(env defs.ATxt) core_spec.IResult[defs.Int] {
 	strVal := os.Getenv(env.String())
-	res := sf.FromStr(defs.AStr(strVal))
+	res := sf.FromStr(defs.ATxt(strVal))
 	if res.IsErr() {
 		err := defs.NewErr("safeInt.Getenv(): from env %v, err=\n\t%w", env, res.Err())
 		return mL0.NewErr[defs.Int](err)

+ 8 - 8
v4/lev1/lev1.go

@@ -45,18 +45,18 @@ func NewSafeString() mKs.ISafeString {
 }
 
 // NewSafeIntFromStr -- возвращает новое потокобезопасное целое из строки.
-func NewSafeIntFromStr(strVal defs.AStr) mL0.IResult[mKs.ISafeInt] {
+func NewSafeIntFromStr(strVal defs.ATxt) mL0.IResult[mKs.ISafeInt] {
 	return safe_int.NewSafeIntFromStr(strVal)
 }
 
 // NewSafeIntGetenv -- возвращает новое потокобезопасное целое из окружения.
-func NewSafeIntGetenv(env defs.AStr) mL0.IResult[mKs.ISafeInt] {
+func NewSafeIntGetenv(env defs.ATxt) mL0.IResult[mKs.ISafeInt] {
 	return safe_int.NewSafeIntGetenv(env)
 }
 
 // NewSafeInt -- возвращает новую потокобезопасную целочисленную переменную.
 //
-//go:fix inline
+
 func NewSafeInt(val defs.Int) mKs.ISafeInt {
 	val_ := safe_int.NewSafeInt(val)
 	return val_
@@ -79,7 +79,7 @@ type FnHassert = helpers.FnHassert
 
 // Hassert -- возвращает ссылку на функцию Hassert.
 //
-//go:fix inline
+
 func Hassert() FnHassert {
 	return helpers.Hassert
 }
@@ -89,21 +89,21 @@ type FnAssert = helpers.FnAssert
 
 // Assert -- возвращает ссылку на функцию Assert.
 //
-//go:fix inline
+
 func Assert() FnAssert {
 	return helpers.Assert
 }
 
 // SleepMs -- спит миллисекунду.
 //
-//go:fix inline
+
 func SleepMs() {
 	time.Sleep(time.Millisecond * 1)
 }
 
 // NewInt -- возвращает новую целочисленную переменную.
 //
-//go:fix inline
+
 func NewInt(val defs.Int) mKs.Int {
 	val_ := kint.NewInt(val)
 	return val_
@@ -111,7 +111,7 @@ func NewInt(val defs.Int) mKs.Int {
 
 // NewLocalCtx -- возвращает новый локальный контекст.
 //
-//go:fix inline
+
 func NewLocalCtx(ctx context.Context) comp_spec.ILocalCtx {
 	lCtx := local_ctx.NewLocalCtx(ctx)
 	return lCtx

+ 7 - 7
v4/lev1/local_ctx/ctx_value/ctx_value.go

@@ -14,7 +14,7 @@ import (
 type ICtxValue interface {
 	core_spec.IRWMutex
 	// Key -- возвращает ключ значения
-	Key() defs.AStr
+	Key() defs.ATxt
 	// Val -- возвращает хранимое значение
 	Val() any
 	// CreateAt -- возвращает метку времени создания
@@ -22,21 +22,21 @@ type ICtxValue interface {
 	// UpdateAt -- возвращает метку времени обновления
 	UpdateAt() core_spec.ITimeMut
 	// Comment -- возвращает комментарий значения
-	Comment() defs.AStr
+	Comment() defs.ATxt
 }
 
 // CtxValue -- потокобезопасное значение локального контекста.
 type CtxValue struct {
 	sync.RWMutex
-	key       defs.AStr
+	key       defs.ATxt
 	createAt  core_spec.ITime
 	Val_      any
 	UpdateAt_ core_spec.ITimeMut
-	Comment_  defs.AStr
+	Comment_  defs.ATxt
 }
 
 // NewCtxValue -- возвращает новое потокобезопасное значение локального контекста.
-func NewCtxValue(key defs.AStr, val any, comment defs.AStr) ICtxValue {
+func NewCtxValue(key defs.ATxt, val any, comment defs.ATxt) ICtxValue {
 	helpers.Hassert(key != "", "NewCtxValue(): key is empty", []any{})
 	sf := &CtxValue{
 		key:       key,
@@ -49,7 +49,7 @@ func NewCtxValue(key defs.AStr, val any, comment defs.AStr) ICtxValue {
 }
 
 // Key -- возвращает ключ значения.
-func (sf *CtxValue) Key() defs.AStr {
+func (sf *CtxValue) Key() defs.ATxt {
 	return sf.key
 }
 
@@ -73,7 +73,7 @@ func (sf *CtxValue) CreateAt() core_spec.ITime {
 }
 
 // Comment -- возвращает комментарий значения.
-func (sf *CtxValue) Comment() defs.AStr {
+func (sf *CtxValue) Comment() defs.ATxt {
 	sf.RLock()
 	defer sf.RUnlock()
 	return sf.Comment_

+ 2 - 2
v4/lev1/local_ctx/ctx_value/ctx_value_test.go

@@ -34,10 +34,10 @@ func (sf *tester) new() {
 		sf.t.Fatalf("new(): create is empty")
 	}
 	sf.createdAt = create
-	if comment := sf.val.Comment(); comment.Str() != "test_value" {
+	if comment := sf.val.Comment(); comment != "test_value" {
 		sf.t.Fatalf("new(): comment(%v)!='test_value'", comment)
 	}
-	if key := sf.val.Key(); key.Str() != "test_key" {
+	if key := sf.val.Key(); key != "test_key" {
 		sf.t.Fatalf("new(): key(%v)!='test_key'", key)
 	}
 	if update := sf.val.UpdateAt(); update.Get() != "" {

+ 15 - 15
v4/lev1/local_ctx/local_ctx.go

@@ -22,11 +22,11 @@ import (
 type ILocalCtx interface {
 	core_spec.IRWMutex
 	// Get -- извлекает значение из контекста
-	Get(key defs.AStr) core_spec.IOption[comp_spec.ICtxValue]
+	Get(key defs.ATxt) core_spec.IOption[comp_spec.ICtxValue]
 	// Del -- удаляет значение из контекста
-	Del(key defs.AStr)
+	Del(key defs.ATxt)
 	// Set -- добавляет значение в контекст
-	Set(key defs.AStr, val any, comment defs.AStr)
+	Set(key defs.ATxt, val any, comment defs.ATxt)
 	// Size -- возвращает размер словаря контекста
 	Size() defs.Int
 	// SortedList -- возвращает сортированный список объектов контекста
@@ -47,7 +47,7 @@ type LocalCtx struct {
 	ctx      context.Context // Отменяемый контекст
 	fnCancel func()          // Функция отмены контекста
 
-	dictVal map[defs.AStr]comp_spec.ICtxValue // Словарь различных значений
+	dictVal map[defs.ATxt]comp_spec.ICtxValue // Словарь различных значений
 	lstSort *lst_sort.LstSort                 // Сортированный список значений
 	log     comp_spec.ILogBuf                 // Локальный буфер
 }
@@ -63,7 +63,7 @@ func NewLocalCtx(ctx context.Context) ILocalCtx {
 	sf := &LocalCtx{
 		ctx:      _ctx,
 		fnCancel: fnCancel,
-		dictVal:  map[defs.AStr]comp_spec.ICtxValue{},
+		dictVal:  map[defs.ATxt]comp_spec.ICtxValue{},
 		lstSort:  lst_sort.NewLstSort(),
 		log:      log_buf.NewLogBuf(paramLogBuf),
 	}
@@ -93,13 +93,13 @@ func (sf *LocalCtx) Log() comp_spec.ILogBuf {
 }
 
 // Get -- возвращает хранимое значение.
-func (sf *LocalCtx) Get(key defs.AStr) mL0.IOption[comp_spec.ICtxValue] {
+func (sf *LocalCtx) Get(key defs.ATxt) mL0.IOption[comp_spec.ICtxValue] {
 	sf.RLock()
 	defer sf.RUnlock()
 	if key == "" {
 		return mL0.NewNone[comp_spec.ICtxValue]()
 	}
-	msg := defs.Str("Get(): key='%v'", key)
+	msg := defs.Txt("Get(): key='%v'", key)
 	sf.log.Debug(msg)
 	val, isOk := sf.dictVal[key]
 	if !isOk {
@@ -109,21 +109,21 @@ func (sf *LocalCtx) Get(key defs.AStr) mL0.IOption[comp_spec.ICtxValue] {
 }
 
 // Del -- удаляет значение из контекста.
-func (sf *LocalCtx) Del(key defs.AStr) {
+func (sf *LocalCtx) Del(key defs.ATxt) {
 	sf.Lock()
 	defer sf.Unlock()
-	msg := defs.Str("Del(): key='%v'", key)
+	msg := defs.Txt("Del(): key='%v'", key)
 	sf.log.Debug(msg)
-	val := sf.dictVal[key.Str()]
-	delete(sf.dictVal, key.Str())
+	val := sf.dictVal[key]
+	delete(sf.dictVal, key)
 	sf.lstSort.Del(val)
 }
 
 // Set -- добавляет значение в контекст.
-func (sf *LocalCtx) Set(key defs.AStr, val any, comment defs.AStr) {
+func (sf *LocalCtx) Set(key defs.ATxt, val any, comment defs.ATxt) {
 	sf.Lock()
 	defer sf.Unlock()
-	msg := defs.Str("Set(): key='%v'", key)
+	msg := defs.Txt("Set(): key='%v'", key)
 	sf.log.Debug(msg)
 	_val, isOk := sf.dictVal[key]
 	if isOk {
@@ -135,7 +135,7 @@ func (sf *LocalCtx) Set(key defs.AStr, val any, comment defs.AStr) {
 		return
 	}
 	_val = ctx_value.NewCtxValue(key, val, comment)
-	sf.dictVal[key.Str()] = _val
+	sf.dictVal[key] = _val
 	sf.lstSort.Add(_val)
 }
 
@@ -146,6 +146,6 @@ func (sf *LocalCtx) Wait() {
 
 // Cancel -- отменяет контекст.
 func (sf *LocalCtx) Cancel() {
-	sf.log.Warn(defs.Str("Cancel()"))
+	sf.log.Warn(defs.Txt("Cancel()"))
 	sf.fnCancel()
 }

+ 4 - 4
v4/lev1/local_ctx/local_ctx_test.go

@@ -34,14 +34,14 @@ func (sf *tester) done() {
 // Удаляет несуществующий ключ из локального контекста.
 func (sf *tester) del() {
 	sf.t.Log("del")
-	sf.lCtx.Del(defs.Str("123"))
-	sf.lCtx.Del(defs.Str("count"))
+	sf.lCtx.Del(defs.Txt("123"))
+	sf.lCtx.Del(defs.Txt("count"))
 }
 
 // Возвращает хранимое значение.
 func (sf *tester) get() {
 	sf.t.Log("get")
-	optRes := sf.lCtx.Get(defs.Str("count"))
+	optRes := sf.lCtx.Get(defs.Txt("count"))
 	ctxVal := optRes.Hassert("get()")
 	count := ctxVal.Val().(int)
 	if count == 15 {
@@ -52,7 +52,7 @@ func (sf *tester) get() {
 // Устанавливает значение.
 func (sf *tester) set() {
 	sf.t.Log("set")
-	msg := defs.AStr("count")
+	msg := defs.ATxt("count")
 	sf.lCtx.Set(msg, 5, "test_val")
 	sf.lCtx.Set(msg, 15, "test_val1")
 }

+ 13 - 13
v4/lev1/log_buf/log_buf.go

@@ -17,13 +17,13 @@ import (
 //	Буфер для Error -- отдельный.
 type ILogBuf interface {
 	// Debug -- сообщение отладки
-	Debug(fMsg defs.AStr, args ...any)
+	Debug(fMsg defs.ATxt, args ...any)
 	// LogBus -- возвращает объект публикации в шину
 	// LogBus()ILogBus
 	// Info -- информационные сообщения
-	Info(fMsg defs.AStr, args ...any)
+	Info(fMsg defs.ATxt, args ...any)
 	// Warn -- предупреждающие сообщения
-	Warn(fMsg defs.AStr, args ...any)
+	Warn(fMsg defs.ATxt, args ...any)
 	// Err -- сообщения об ошибках
 	Err(fMsg defs.IErr, args ...any)
 	// Get -- возвращает сообщение по номеру (0..99)
@@ -42,7 +42,7 @@ var (
 
 // LogBufParam -- параметры логирующего буфера.
 type LogBufParam struct {
-	Prefix_ defs.AStr           // Префикс для сообщений
+	Prefix_ defs.ATxt           // Префикс для сообщений
 	IsTerm_ core_spec.ISafeBool // Признак вывода в терминал
 }
 
@@ -110,12 +110,12 @@ func (sf *LogBuf) Get(num defs.Int) log_msg.ILogMsg {
 }
 
 type tMsg struct {
-	text defs.AStr
+	text defs.ATxt
 	args []any
 }
 
 // Debug -- сообщение отладки.
-func (sf *LogBuf) Debug(fMsg defs.AStr, args ...any) {
+func (sf *LogBuf) Debug(fMsg defs.ATxt, args ...any) {
 	sf.Lock()
 	defer sf.Unlock()
 	msg := tMsg{
@@ -123,14 +123,14 @@ func (sf *LogBuf) Debug(fMsg defs.AStr, args ...any) {
 		args: args,
 	}
 	strMsg := fmt.Sprintf(msg.text.String(), msg.args...)
-	_msg := log_msg.NewLogMsg(log_msg.DEBUG, sf.Prefix_+defs.AStr(strMsg))
+	_msg := log_msg.NewLogMsg(log_msg.DEBUG, sf.Prefix_+defs.ATxt(strMsg))
 	sf.lst = append(sf.lst, _msg)
 	sf.checkLen()
 	sf.printTerm(_msg)
 }
 
 // Info -- информационные сообщения.
-func (sf *LogBuf) Info(fMsg defs.AStr, args ...any) {
+func (sf *LogBuf) Info(fMsg defs.ATxt, args ...any) {
 	sf.Lock()
 	defer sf.Unlock()
 	msg := tMsg{
@@ -138,14 +138,14 @@ func (sf *LogBuf) Info(fMsg defs.AStr, args ...any) {
 		args: args,
 	}
 	strMsg := fmt.Sprintf(msg.text.String(), msg.args...)
-	_msg := log_msg.NewLogMsg(log_msg.INFO, sf.Prefix_+defs.AStr(strMsg))
+	_msg := log_msg.NewLogMsg(log_msg.INFO, sf.Prefix_+defs.ATxt(strMsg))
 	sf.lst = append(sf.lst, _msg)
 	sf.checkLen()
 	sf.printTerm(_msg)
 }
 
 // Warn -- предупреждающие сообщения.
-func (sf *LogBuf) Warn(fMsg defs.AStr, args ...any) {
+func (sf *LogBuf) Warn(fMsg defs.ATxt, args ...any) {
 	sf.Lock()
 	defer sf.Unlock()
 	msg := tMsg{
@@ -153,7 +153,7 @@ func (sf *LogBuf) Warn(fMsg defs.AStr, args ...any) {
 		args: args,
 	}
 	strMsg := fmt.Sprintf(msg.text.String(), msg.args...)
-	_msg := log_msg.NewLogMsg(log_msg.WARN, sf.Prefix_+defs.AStr(strMsg))
+	_msg := log_msg.NewLogMsg(log_msg.WARN, sf.Prefix_+defs.ATxt(strMsg))
 	sf.lst = append(sf.lst, _msg)
 	sf.checkLen()
 	sf.printTerm(_msg)
@@ -164,11 +164,11 @@ func (sf *LogBuf) Err(fMsg defs.IErr, args ...any) {
 	sf.Lock()
 	defer sf.Unlock()
 	msg := tMsg{
-		text: fMsg.Str(),
+		text: fMsg.Get(),
 		args: args,
 	}
 	strMsg := fmt.Sprintf(msg.text.String(), msg.args...)
-	_msg := log_msg.NewLogMsg(log_msg.ERROR, sf.Prefix_+defs.AStr(strMsg))
+	_msg := log_msg.NewLogMsg(log_msg.ERROR, sf.Prefix_+defs.ATxt(strMsg))
 	sf.lst = append(sf.lst, _msg)
 	sf.lstErr = append(sf.lstErr, _msg)
 	sf.checkLen()

+ 5 - 5
v4/lev1/log_buf/log_buf_test.go

@@ -36,11 +36,11 @@ func (sf *tester) new() {
 	if msg == nil {
 		sf.t.Fatalf("new(): msg==nil")
 	}
-	_msg := defs.Str("test msg: %v", 45)
+	_msg := defs.Txt("test msg: %v", 45)
 	sf.log.Debug(_msg)
-	_msg = defs.Str("test msg: %v", 46)
+	_msg = defs.Txt("test msg: %v", 46)
 	sf.log.Info(_msg)
-	_msg = defs.Str("test msg: %v", 47)
+	_msg = defs.Txt("test msg: %v", 47)
 	sf.log.Warn(_msg)
 	for i := range 120 {
 		err := defs.NewErr("test err: %v", i)
@@ -57,7 +57,7 @@ func (sf *tester) new() {
 	_ = sf.log.Size()
 
 	sf.log.IsTerm().Reset()
-	_msg = defs.Str("test msg: %v", 47)
+	_msg = defs.Txt("test msg: %v", 47)
 	sf.log.Warn(_msg)
 
 	sf.log.IsTerm().Set()
@@ -65,5 +65,5 @@ func (sf *tester) new() {
 
 	helpers.IsStageProd = true
 	sf.log.Warn(_msg)
-	sf.log.Debug(defs.Str("test msg: %v", 45))
+	sf.log.Debug(defs.Txt("test msg: %v", 45))
 }

+ 5 - 7
v4/lev1/log_buf/log_msg/log_msg.go

@@ -7,8 +7,6 @@ import (
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/voc/etime"
 )
 
@@ -17,9 +15,9 @@ type ILogMsg interface {
 	// CreateAt -- когда создано
 	CreateAt() core_spec.ITime
 	// Level -- уровень сообщения
-	Level() *quark.QStr[quark.Mut]
+	Level() core_spec.ITxtFix
 	// Msg -- текст сообщения
-	Msg() *quark.QStr[quark.Fix]
+	Msg() core_spec.ITxtFix
 	// String -- форматированная строка
 	String() string
 }
@@ -33,13 +31,13 @@ const (
 
 // logMsg -- сообщение логгера.
 type logMsg struct {
-	level     *quark.QStr[quark.Mut]
+	level     core_spec.ITxtFixMut
 	createdAt core_spec.ITime
-	msg       *quark.QStr[quark.Fix]
+	msg       core_spec.ITxtFix
 }
 
 // NewLogMsg -- возвращает новое сообщение логгера.
-func NewLogMsg(level int, msg defs.AStr) ILogMsg {
+func NewLogMsg(level int, msg defs.ATxt) ILogMsg {
 	sf := &logMsg{
 		createdAt: etime.NewETimeAuto(),
 		msg:       quark.NewQStr(msg),

+ 1 - 1
v4/lev1/lst_sort/lst_sort.go

@@ -110,7 +110,7 @@ func (sf *LstSort) Swap(ind1, ind2 int) {
 
 // Less -- НЕ ИСПОЛЬЗОВАТЬ сравнивает элементы по индексам.
 func (sf *LstSort) Less(ind1, ind2 int) bool {
-	return sf.lstVal[ind1].Key().Str() < sf.lstVal[ind2].Key().Str()
+	return sf.lstVal[ind1].Key() < sf.lstVal[ind2].Key()
 }
 
 // Len -- НЕ ИСПОЛЬЗОВАТЬ возвращает длину списка.

+ 8 - 8
v4/lev1/lst_sort/lst_sort_test.go

@@ -26,7 +26,7 @@ func TestLstSort(t *testing.T) {
 // Нет такого элемента.
 func (sf *tester) del3() {
 	sf.t.Log("del3")
-	val5 := ctx_value.NewCtxValue(defs.Str("val5"), 5, defs.Str("test 5"))
+	val5 := ctx_value.NewCtxValue(defs.Txt("val5"), 5, defs.Txt("test 5"))
 	sf.lst.Del(val5)
 	sf.lst.Del(nil)
 }
@@ -40,7 +40,7 @@ func (sf *tester) del2() {
 		sf.t.Fatalf("del2(): len(%v)!=4", _len)
 	}
 	val4 := sf.lst.Get(3)
-	if val4.Key().Str() != "val4" {
+	if val4.Key() != "val4" {
 		sf.t.Fatalf("del2(): key(%v)!='val4'", val4.Key())
 	}
 	sf.lst.Add(val3)
@@ -60,7 +60,7 @@ func (sf *tester) del() {
 		sf.t.Fatalf("del(): len(%v)!=4", _len)
 	}
 	val3 := sf.lst.Get(3)
-	if val3.Key().Str() != "val3" {
+	if val3.Key() != "val3" {
 		sf.t.Fatalf("del(): key(%v)!='val3'", val3.Key())
 	}
 	sf.lst.Add(val4)
@@ -73,11 +73,11 @@ func (sf *tester) del() {
 // Добавление элементов в список.
 func (sf *tester) add() {
 	sf.t.Log("add")
-	val0 := ctx_value.NewCtxValue(defs.Str("val0"), 0, defs.Str("test 0"))
-	val1 := ctx_value.NewCtxValue(defs.Str("val1"), 1, defs.Str("test 1"))
-	val2 := ctx_value.NewCtxValue(defs.Str("val2"), 2, defs.Str("test 2"))
-	val3 := ctx_value.NewCtxValue(defs.Str("val3"), 3, defs.Str("test 3"))
-	val4 := ctx_value.NewCtxValue(defs.Str("val4"), 4, defs.Str("test 4"))
+	val0 := ctx_value.NewCtxValue(defs.Txt("val0"), 0, defs.Txt("test 0"))
+	val1 := ctx_value.NewCtxValue(defs.Txt("val1"), 1, defs.Txt("test 1"))
+	val2 := ctx_value.NewCtxValue(defs.Txt("val2"), 2, defs.Txt("test 2"))
+	val3 := ctx_value.NewCtxValue(defs.Txt("val3"), 3, defs.Txt("test 3"))
+	val4 := ctx_value.NewCtxValue(defs.Txt("val4"), 4, defs.Txt("test 4"))
 	sf.lst.Add(val1)
 	sf.lst.Add(val4)
 	sf.lst.Add(val0)

+ 5 - 5
v4/lev1/safe_bool/safe_bool.go

@@ -27,7 +27,7 @@ func NewSafeBool(val bool) core_spec.ISafeBool {
 }
 
 // NewSafeBoolFromStr -- возвращает новое потокобезопасное булево из строки.
-func NewSafeBoolFromStr(strVal defs.AStr) mL0.IResult[core_spec.ISafeBool] {
+func NewSafeBoolFromStr(strVal defs.ATxt) mL0.IResult[core_spec.ISafeBool] {
 	sf := NewSafeBool(false)
 	res := sf.FromStr(strVal)
 	if res.IsErr() {
@@ -38,7 +38,7 @@ func NewSafeBoolFromStr(strVal defs.AStr) mL0.IResult[core_spec.ISafeBool] {
 }
 
 // NewSafeBoolGetenv -- возвращает новое потокобезопасное целое из окружения.
-func NewSafeBoolGetenv(env defs.AStr) core_spec.IResult[core_spec.ISafeBool] {
+func NewSafeBoolGetenv(env defs.ATxt) core_spec.IResult[core_spec.ISafeBool] {
 	sf := NewSafeBool(false)
 	res := sf.Getenv(env)
 	if res.IsErr() {
@@ -70,7 +70,7 @@ func (sf *safeBool) Reset() {
 }
 
 // FromStr -- получает число из строки.
-func (sf *safeBool) FromStr(strVal defs.AStr) core_spec.IResult[core_spec.EBool] {
+func (sf *safeBool) FromStr(strVal defs.ATxt) core_spec.IResult[core_spec.EBool] {
 	_strVal := strings.ToLower(strVal.String())
 	sf.Lock()
 	defer sf.Unlock()
@@ -87,9 +87,9 @@ func (sf *safeBool) FromStr(strVal defs.AStr) core_spec.IResult[core_spec.EBool]
 }
 
 // Getenv -- получает значение из окружения.
-func (sf *safeBool) Getenv(env defs.AStr) mL0.IResult[core_spec.EBool] {
+func (sf *safeBool) Getenv(env defs.ATxt) mL0.IResult[core_spec.EBool] {
 	strVal := os.Getenv(env.String())
-	res := sf.FromStr(defs.AStr(strVal))
+	res := sf.FromStr(defs.ATxt(strVal))
 	if res.IsErr() {
 		err := defs.NewErr("safeBool.Getenv(): from env %v, err=\n\t%w", env, res.Err())
 		return mL0.NewErr[core_spec.EBool](err)

+ 9 - 9
v4/lev1/safe_bool_react/safe_bool_react.go

@@ -15,20 +15,20 @@ import (
 // safeBoolReact -- потокобезопасный булевый признак с реакцией на своё изменение.
 type safeBoolReact struct {
 	sync.RWMutex
-	dict map[defs.AStr]func(core_spec.EBoolMut) // Словарь обратных вызовов
+	dict map[defs.ATxt]func(core_spec.EBoolMut) // Словарь обратных вызовов
 	val  bool
 }
 
 // NewSafeBoolReact -- возвращает новый потокобезопасный булевый признак с реакцией на своё изменение.
 func NewSafeBoolReact() core_spec.ISafeBoolReact {
 	sf := &safeBoolReact{
-		dict: map[defs.AStr]func(core_spec.EBoolMut){},
+		dict: map[defs.ATxt]func(core_spec.EBoolMut){},
 	}
 	return sf
 }
 
 // NewSafeBoolReactFromStr -- возвращает новое потокобезопасное булево с реакцией из строки.
-func NewSafeBoolReactFromStr(strVal defs.AStr) mL0.IResult[core_spec.ISafeBoolReact] {
+func NewSafeBoolReactFromStr(strVal defs.ATxt) mL0.IResult[core_spec.ISafeBoolReact] {
 	sf := NewSafeBoolReact()
 	res := sf.FromStr(strVal)
 	if res.IsErr() {
@@ -39,7 +39,7 @@ func NewSafeBoolReactFromStr(strVal defs.AStr) mL0.IResult[core_spec.ISafeBoolRe
 }
 
 // NewSafeBoolGetenv -- возвращает новое потокобезопасное целое с реакцией из окружения.
-func NewSafeBoolGetenv(env defs.AStr) mL0.IResult[core_spec.ISafeBoolReact] {
+func NewSafeBoolGetenv(env defs.ATxt) mL0.IResult[core_spec.ISafeBoolReact] {
 	sf := NewSafeBoolReact()
 	res := sf.Getenv(env)
 	if res.IsErr() {
@@ -50,14 +50,14 @@ func NewSafeBoolGetenv(env defs.AStr) mL0.IResult[core_spec.ISafeBoolReact] {
 }
 
 // Delete -- удаляет функцию обратного вызова из наблюдения.
-func (sf *safeBoolReact) Delete(key defs.AStr) {
+func (sf *safeBoolReact) Delete(key defs.ATxt) {
 	sf.Lock()
 	defer sf.Unlock()
 	delete(sf.dict, key)
 }
 
 // Add -- добавляет функцию обратного вызова.
-func (sf *safeBoolReact) Add(key defs.AStr, fn func(core_spec.EBoolMut)) mL0.IResult[core_spec.EBool] {
+func (sf *safeBoolReact) Add(key defs.ATxt, fn func(core_spec.EBoolMut)) mL0.IResult[core_spec.EBool] {
 	sf.Lock()
 	defer sf.Unlock()
 	if key == "" {
@@ -101,7 +101,7 @@ func (sf *safeBoolReact) Reset() {
 }
 
 // FromStr -- получает число из строки.
-func (sf *safeBoolReact) FromStr(strVal defs.AStr) core_spec.IResult[core_spec.EBool] {
+func (sf *safeBoolReact) FromStr(strVal defs.ATxt) core_spec.IResult[core_spec.EBool] {
 	_strVal := strings.ToLower(strVal.String())
 	sf.Lock()
 	defer sf.Unlock()
@@ -118,9 +118,9 @@ func (sf *safeBoolReact) FromStr(strVal defs.AStr) core_spec.IResult[core_spec.E
 }
 
 // Getenv -- получает значение из окружения.
-func (sf *safeBoolReact) Getenv(env defs.AStr) mL0.IResult[core_spec.EBool] {
+func (sf *safeBoolReact) Getenv(env defs.ATxt) mL0.IResult[core_spec.EBool] {
 	strVal := os.Getenv(env.String())
-	res := sf.FromStr(defs.AStr(strVal))
+	res := sf.FromStr(defs.ATxt(strVal))
 	if res.IsErr() {
 		err := defs.NewErr("safeBoolReact.Getenv(): from env %v, err=\n\t%w", env, res.Err())
 		return mL0.NewErr[core_spec.EBool](err)

+ 7 - 7
v4/lev1/safe_int/safe_int.go

@@ -25,7 +25,7 @@ func NewSafeInt(val defs.Int) mKs.ISafeInt {
 }
 
 // NewSafeIntFromStr -- возвращает новое потокобезопасное целое из строки.
-func NewSafeIntFromStr(strVal defs.AStr) mL0.IResult[mKs.ISafeInt] {
+func NewSafeIntFromStr(strVal defs.ATxt) mL0.IResult[mKs.ISafeInt] {
 	sf := NewSafeInt(0)
 	res := sf.FromStr(strVal)
 	if res.IsErr() {
@@ -36,7 +36,7 @@ func NewSafeIntFromStr(strVal defs.AStr) mL0.IResult[mKs.ISafeInt] {
 }
 
 // NewSafeIntGetenv -- возвращает новое потокобезопасное целое из окружения.
-func NewSafeIntGetenv(env defs.AStr) mL0.IResult[mKs.ISafeInt] {
+func NewSafeIntGetenv(env defs.ATxt) mL0.IResult[mKs.ISafeInt] {
 	sf := NewSafeInt(0)
 	res := sf.Getenv(env)
 	if res.IsErr() {
@@ -48,7 +48,7 @@ func NewSafeIntGetenv(env defs.AStr) mL0.IResult[mKs.ISafeInt] {
 
 // FromBool -- устанавливает значение из булева значения.
 //
-//go:fix inline
+
 func (sf *safeInt) FromBool(val bool) defs.Int {
 	sf.Lock()
 	defer sf.Unlock()
@@ -57,7 +57,7 @@ func (sf *safeInt) FromBool(val bool) defs.Int {
 
 // Get -- возвращает хранимое целое.
 //
-//go:fix inline
+
 func (sf *safeInt) Get() defs.Int {
 	sf.RLock()
 	defer sf.RUnlock()
@@ -93,7 +93,7 @@ func (sf *safeInt) Reset() {
 }
 
 // FromStr -- получает число из строки.
-func (sf *safeInt) FromStr(strVal defs.AStr) mL0.IResult[defs.Int] {
+func (sf *safeInt) FromStr(strVal defs.ATxt) mL0.IResult[defs.Int] {
 	sf.Lock()
 	defer sf.Unlock()
 	return sf.val.FromStr(strVal)
@@ -121,14 +121,14 @@ func (sf *safeInt) ToBool() bool {
 }
 
 // ToStr -- конвертирует число в строку.
-func (sf *safeInt) ToStr() defs.AStr {
+func (sf *safeInt) ToStr() defs.ATxt {
 	sf.RLock()
 	defer sf.RUnlock()
 	return sf.val.ToStr()
 }
 
 // Getenv -- получает значение из окружения.
-func (sf *safeInt) Getenv(env defs.AStr) mL0.IResult[defs.Int] {
+func (sf *safeInt) Getenv(env defs.ATxt) mL0.IResult[defs.Int] {
 	sf.Lock()
 	defer sf.Unlock()
 	return sf.val.Getenv(env)

+ 7 - 7
v4/lev1/safe_string/safe_string.go

@@ -13,7 +13,7 @@ import (
 // safeString -- потокобезопасная строка.
 type safeString struct {
 	sync.RWMutex
-	val defs.AStr
+	val defs.ATxt
 }
 
 // NewSafeString -- возвращает новую потокобезопасную строку.
@@ -23,7 +23,7 @@ func NewSafeString() mKs.ISafeString {
 }
 
 // NewSafeStringGetenv -- возвращает новую потокобезопасную строку из окружения.
-func NewSafeStringGetenv(env defs.AStr) mL0.IResult[mKs.ISafeString] {
+func NewSafeStringGetenv(env defs.ATxt) mL0.IResult[mKs.ISafeString] {
 	sf := NewSafeString()
 	res := sf.Getenv(env)
 	if res.IsErr() {
@@ -41,14 +41,14 @@ func (sf *safeString) Byte() []byte {
 }
 
 // Get -- возвращает хранимую строку.
-func (sf *safeString) Get() defs.AStr {
+func (sf *safeString) Get() defs.ATxt {
 	sf.RLock()
 	defer sf.RUnlock()
 	return sf.val
 }
 
 // Set -- устанавливает строку.
-func (sf *safeString) Set(val defs.AStr) {
+func (sf *safeString) Set(val defs.ATxt) {
 	sf.Lock()
 	defer sf.Unlock()
 	sf.val = val
@@ -62,12 +62,12 @@ func (sf *safeString) Reset() {
 }
 
 // Getenv -- получает значение из окружения.
-func (sf *safeString) Getenv(env defs.AStr) mL0.IResult[defs.AStr] {
+func (sf *safeString) Getenv(env defs.ATxt) mL0.IResult[defs.ATxt] {
 	strVal := os.Getenv(env.String())
 	if strVal == "" {
 		err := defs.NewErr("safeString.Getenv(): from env(%v), val is empty", env)
-		return mL0.NewErr[defs.AStr](err)
+		return mL0.NewErr[defs.ATxt](err)
 	}
-	sf.val = defs.AStr(strVal)
+	sf.val = defs.ATxt(strVal)
 	return mL0.NewOk(sf.val)
 }

+ 6 - 6
v4/lev2/kernel_keeper/kernel_keeper.go

@@ -38,7 +38,7 @@ func GetKernelKeeper(ctx context.Context, fnCancel func(),
 	block.Lock()
 	defer block.Unlock()
 	if kernKeep != nil {
-		kernKeep.log.Debug(defs.Str("GetKernelKeeper()"))
+		kernKeep.log.Debug(defs.Txt("GetKernelKeeper()"))
 		return kernKeep
 	}
 	helpers.Hassert(ctx != nil, "NewKernelCtx(): ctx==nil", []any{})
@@ -57,7 +57,7 @@ func GetKernelKeeper(ctx context.Context, fnCancel func(),
 		log:      mL1.NewLogBuf(paramLogBuf),
 		chSys_:   make(chan os.Signal, 2),
 	}
-	sf.log.Debug(defs.Str("GetKernelKeeper(): first run"))
+	sf.log.Debug(defs.Txt("GetKernelKeeper(): first run"))
 	sf.wg.Add(qName)
 
 	go sf.run(sf.chSys_)
@@ -73,7 +73,7 @@ func (sf *kernelKeeper) Log() comp_spec.ILogBuf {
 
 // Работает в отдельном потоке и ждёт сигналов прерываний работы.
 func (sf *kernelKeeper) run(chSys chan os.Signal) {
-	sf.log.Debug(defs.Str("run()"))
+	sf.log.Debug(defs.Txt("run()"))
 
 	// Регистрируем сигналы SIGINT (Ctrl+C) и SIGTERM (завершение процесса)
 	// syscall.SIGHUP: Сигнал, отправляемый при закрытии терминала.
@@ -81,11 +81,11 @@ func (sf *kernelKeeper) run(chSys chan os.Signal) {
 	signal.Notify(chSys, syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP, syscall.SIGQUIT)
 	select {
 	case sig := <-chSys: // системный сигнал
-		sf.log.Debug(defs.Str("run(): system signal, sig=%v\n"), sig)
+		sf.log.Debug(defs.Txt("run(): system signal, sig=%v\n"), sig)
 		sf.fnCancel()
 	case <-sf.ctx.Done(): // сигнал от приложения
-		sf.log.Debug(defs.Str("run(): cancel app context, err=\n\t%v\n"), sf.ctx.Err())
+		sf.log.Debug(defs.Txt("run(): cancel app context, err=\n\t%v\n"), sf.ctx.Err())
 	}
 	sf.wg.Done(qName)
-	sf.log.Debug(defs.Str("run(): end"))
+	sf.log.Debug(defs.Txt("run(): end"))
 }

+ 1 - 1
v4/lev2/kmodule/kmodule.go

@@ -82,7 +82,7 @@ func (sf *kModule) IsWork() core_spec.EBool {
 }
 
 // Live -- возвращает индикатор жизни модуля.
-func (sf *kModule) Live() defs.AStr {
+func (sf *kModule) Live() defs.ATxt {
 	return sf.strLive.Get()
 }
 

+ 8 - 8
v4/lev2/kmonolit/kmonolit.go

@@ -57,8 +57,8 @@ func GetMonolit(name mod_ent.AModuleName) *kMonolit {
 		isLocal: ebool.NewEBool(isLocal),
 	}
 	sf.log = sf.lCtx.Log()
-	sf.kCtx.Set(defs.Str("monolitName"), name, defs.Str("name of monolit"))
-	sf.kCtx.Set(defs.Str("monolit"), sf, defs.Str("monolit-app"))
+	sf.kCtx.Set(defs.Txt("monolitName"), name, defs.Txt("name of monolit"))
+	sf.kCtx.Set(defs.Txt("monolit"), sf, defs.Txt("monolit-app"))
 	mon = sf
 	_ = mod_spec.IKernelMonolit(sf)
 	return sf
@@ -87,14 +87,14 @@ func (sf *kMonolit) Add(module mod_spec.IKernelModule) {
 	_, isOk := sf.dict[module.Name().Get()]
 	mKh.Hassert(!isOk, "kMonolit.Add(): module(%v) already exists", []any{module.Name()})
 	sf.dict[module.Name().Get()] = module
-	sf.log.Debug(defs.Str("kMonolit.Add(): module='%v'", module.Name()))
+	sf.log.Debug(defs.Txt("kMonolit.Add(): module='%v'", module.Name()))
 	if sf.isWork.Get() {
 		go module.Run()
-		sf.log.Debug(defs.Str("kMonolit.Add(): module='%v' is run", module.Name()))
+		sf.log.Debug(defs.Txt("kMonolit.Add(): module='%v' is run", module.Name()))
 	}
-	key := defs.Str("module_%v", len(sf.dict))
+	key := defs.Txt("module_%v", len(sf.dict))
 	moduleName := module.Name()
-	comment := defs.Str("kMonolit.Add(): module=" + moduleName.Str())
+	comment := defs.ATxt("kMonolit.Add(): module=" + moduleName.Get())
 	sf.lCtx.Set(key, module, comment)
 }
 
@@ -112,7 +112,7 @@ func (sf *kMonolit) Run() {
 	for _, module := range sf.dict {
 		go module.Run()
 	}
-	sf.log.Debug(defs.Str("kMonolit.Run()"))
+	sf.log.Debug(defs.Txt("kMonolit.Run()"))
 }
 
 // IsLocal -- возвращает признак локальной шины.
@@ -134,5 +134,5 @@ func (sf *kMonolit) Wait() {
 	defer sf.kCtx.Unlock()
 	sf.isWork.Reset()
 	sf.isEnd.Set()
-	sf.log.Debug(defs.Str("kMonolit.close(): end"))
+	sf.log.Debug(defs.Txt("kMonolit.close(): end"))
 }

+ 1 - 1
v4/lev2/kmonolit/kmonolit_test.go

@@ -110,7 +110,7 @@ func (sf *tester) newGood1() {
 		}
 	}()
 	kCtx := kctx.GetKernelCtx()
-	kCtx.Set(strIsLocal, true, defs.Str("type bus"))
+	kCtx.Set(strIsLocal, true, defs.Txt("type bus"))
 	for {
 		time.Sleep(time.Millisecond * 1)
 		if kCtx.Get(strIsLocal) != nil {

+ 9 - 9
v4/lev2/kserv_http/kserv_http.go

@@ -59,7 +59,7 @@ func getParams() (string, comp_spec.ILogBuf, kspec.IKernelCtx) {
 		Prefix_: "kServHttp",
 	}
 	log := mL1.NewLogBuf(param)
-	log.Debug(defs.Str("GetKernelServHttp(): first run"))
+	log.Debug(defs.Txt("GetKernelServHttp(): first run"))
 	strLocalUrl := os.Getenv("LOCAL_HTTP_URL")
 	hassert(strLocalUrl != "", "getParams(): env LOCAL_HTTP_URL not set")
 	kCtx := kctx.GetKernelCtx()
@@ -71,12 +71,12 @@ func GetKernelServHttp() kspec.IKernelServerHttp {
 	block.Lock()
 	defer block.Unlock()
 	if kernServHttp != nil {
-		kernServHttp.log.Debug(defs.Str("GetKernelServHttp()"))
+		kernServHttp.log.Debug(defs.Txt("GetKernelServHttp()"))
 		return kernServHttp
 	}
 	strLocalUrl, log, kCtx := getParams()
 
-	optMonolit := kCtx.Get(defs.Str("monolitName"))
+	optMonolit := kCtx.Get(defs.Txt("monolitName"))
 	optMonolit.Hassert("GetKernelServHttp(): not have monolit name from kCtx")
 	strMonolit := optMonolit.Some().Val().(string)
 	confFiber := fiber.Config{
@@ -110,9 +110,9 @@ func GetKernelServHttp() kspec.IKernelServerHttp {
 		Title: fmt.Sprintf("Страница метрик %q", strMonolit),
 	}))
 	sf.kCtx.Wg().Add(streamName)
-	kCtx.Set(defs.Str("fiberApp"), sf.fiberApp, defs.Str("GetKernelServHttp() internal fiber app"))
+	kCtx.Set(defs.Txt("fiberApp"), sf.fiberApp, defs.Txt("GetKernelServHttp() internal fiber app"))
 	kernServHttp = sf
-	kCtx.Set(defs.Str("kServHttp"), kernServHttp, defs.Str("kServHttp"))
+	kCtx.Set(defs.Txt("kServHttp"), kernServHttp, defs.Txt("kServHttp"))
 	return kernServHttp
 }
 
@@ -142,7 +142,7 @@ func (sf *kServHttp) Run() {
 	if sf.isWork.Get() {
 		return
 	}
-	sf.log.Debug(defs.Str("Run(): url='%v'", sf.strUrl))
+	sf.log.Debug(defs.Txt("Run(): url='%v'", sf.strUrl))
 	lstPort := strings.Split(sf.strUrl, ":")
 	strPort := lstPort[len(lstPort)-1]
 	strPort = strings.ReplaceAll(strPort, "/", "")
@@ -158,7 +158,7 @@ func (sf *kServHttp) Run() {
 	fnCheckServer := func() error {
 		client := &http.Client{Timeout: 5 * time.Millisecond}
 		url := sf.strUrl + "monitor"
-		sf.log.Debug(defs.Str("url=%v", url))
+		sf.log.Debug(defs.Txt("url=%v", url))
 		var (
 			resp *http.Response
 			err  error
@@ -184,7 +184,7 @@ func (sf *kServHttp) Run() {
 // В отдельном потоке ждёт закрытия канала.
 func (sf *kServHttp) fnChErr(chErr <-chan defs.IErr) {
 	err := <-chErr
-	if err.Str() != "<nil>" {
+	if err.Get() != "<nil>" {
 		err := defs.NewErr("kServHttp.fnChErr(): in listen, err=\n\t%w", err)
 		sf.log.Err(err)
 		sf.kCtx.Cancel()
@@ -202,5 +202,5 @@ func (sf *kServHttp) close() {
 	err := sf.fiberApp.Server().Shutdown()
 	assert(err == nil, "kServHttp.close(): in close server, err=\n\t%v", err)
 	sf.kCtx.Wg().Done(streamName)
-	sf.log.Debug(defs.Str("close(): end"))
+	sf.log.Debug(defs.Txt("close(): end"))
 }

+ 1 - 1
v4/lev2/kserv_http/kserv_http_test.go

@@ -80,7 +80,7 @@ func (sf *tester) newGood1() {
 	sf.me = mock_env.MakeEnv()
 	_ = os.Unsetenv("LOCAL_HTTP_URL")
 	_ = os.Setenv("LOCAL_HTTP_URL", baseUrl)
-	sf.kCtx.Set(defs.Str("monolitName"), "test_monolit", defs.Str("comment"))
+	sf.kCtx.Set(defs.Txt("monolitName"), "test_monolit", defs.Txt("comment"))
 	serv := GetKernelServHttp().(*kServHttp)
 	if serv != kernServHttp {
 		sf.t.Fatalf("newGood1(): bad IKernelServHttp")

+ 3 - 3
v4/lev2/kserv_http_std/kserv_http_std.go

@@ -42,7 +42,7 @@ func GetKservHttpStd() mL0.IResult[*kServHttpStd] {
 		Prefix_: "kServHttpStd",
 	}
 	log := mL1.NewLogBuf(logBufParam)
-	log.Debug(defs.Str("GetKservHttpStd()"))
+	log.Debug(defs.Txt("GetKservHttpStd()"))
 	resPort := mL1.NewSafeIntGetenv("SERV_HTTP_STD_PORT")
 	resPort.Hassert("in get env SERV_HTTP_STD_PORT")
 	sf := &kServHttpStd{
@@ -65,7 +65,7 @@ func (sf *kServHttpStd) Run() {
 	}
 	// Запуск сервера в горутине
 	go func() {
-		msg := defs.Str("kServHttpStd.Run().fn(): run on http://%v", sf.server.Addr)
+		msg := defs.Txt("kServHttpStd.Run().fn(): run on http://%v", sf.server.Addr)
 		sf.log.Debug(msg)
 		if err := sf.server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
 			err := defs.NewErr("kServHttpStd.Run.fn(): in work, err=\n\t%v", err)
@@ -74,7 +74,7 @@ func (sf *kServHttpStd) Run() {
 	}()
 	go sf.close()
 	if err := sf.server.Shutdown(sf.kCtx.Ctx()); err != nil {
-		msgErr := defs.Str("kServHttpStd.Run(): ошибка при graceful shutdown, err=\n\t%v", err)
+		msgErr := defs.Txt("kServHttpStd.Run(): ошибка при graceful shutdown, err=\n\t%v", err)
 		sf.log.Debug(msgErr)
 	}
 

+ 6 - 6
v4/lev2/kwg/kwg.go

@@ -39,7 +39,7 @@ func GetKernelWg(ctx context.Context) kspec.IKernelWg {
 	block.Lock()
 	defer block.Unlock()
 	if kernWg != nil {
-		kernWg.log.Debug(defs.Str("GetKernelWg()"))
+		kernWg.log.Debug(defs.Txt("GetKernelWg()"))
 		return kernWg
 	}
 	mKh.Hassert(ctx != nil, "GetKernelWg(): ctx==nil")
@@ -53,7 +53,7 @@ func GetKernelWg(ctx context.Context) kspec.IKernelWg {
 		isWork:     mL1.NewSafeBool(false),
 		log:        mL1.NewLogBuf(paramLogBuf),
 	}
-	sf.log.Debug(defs.Str("GetKernelWg(): run"))
+	sf.log.Debug(defs.Txt("GetKernelWg(): run"))
 	go sf.close()
 	sf.isWork.Set()
 	kernWg = sf
@@ -94,7 +94,7 @@ func (sf *kernelWg) Done(name *stream_name.AStreamName) {
 	sf.Lock()
 	defer sf.Unlock()
 	delete(sf.dictStream, name)
-	msg := defs.Str("Done(): stream(%v) done", name)
+	msg := defs.Txt("Done(): stream(%v) done", name)
 	sf.log.Debug(msg)
 }
 
@@ -106,14 +106,14 @@ func (sf *kernelWg) Wait() {
 			break
 		}
 	}
-	sf.log.Debug(defs.Str("Wait(): done"))
+	sf.log.Debug(defs.Txt("Wait(): done"))
 }
 
 // Add -- добавляет поток в ожидание.
 func (sf *kernelWg) Add(name *stream_name.AStreamName) {
 	sf.Lock()
 	defer sf.Unlock()
-	msg := defs.Str("Add(): stream('%v') done", name)
+	msg := defs.Txt("Add(): stream('%v') done", name)
 	sf.log.Debug(msg)
 	mKh.Hassert(sf.isWork.Get(), "Add(): stream=%v, work end", []any{name})
 	mKh.Hassert(name.Get() != "", "Add(): name stream is empty")
@@ -142,5 +142,5 @@ func (sf *kernelWg) close() {
 		return
 	}
 	sf.isWork.Reset()
-	sf.log.Debug(defs.Str("close(): end"))
+	sf.log.Debug(defs.Txt("close(): end"))
 }

+ 3 - 3
v4/lev2/lsi/store_ent/rec_key/store_key.go

@@ -33,21 +33,21 @@ func NewRecKey(val ARecKey) *RecKey {
 
 // Byte -- получить значение ключа хранилища в виде байтов.
 //
-//go:fix inline
+
 func (sf *RecKey) Byte() []byte {
 	return []byte(sf.val)
 }
 
 // String -- строковое представление.
 //
-//go:fix inline
+
 func (sf *RecKey) String() string {
 	return string(sf.val)
 }
 
 // Get -- получить значение.
 //
-//go:fix inline
+
 func (sf *RecKey) Get() ARecKey {
 	return sf.val
 }

+ 5 - 5
v4/lev2/lsi/store_ent/rec_meta/rec_meta.go

@@ -58,35 +58,35 @@ func NewRecMeta(key rec_key.IRecKeyFix) *RecMeta {
 
 // Key -- ключ записи.
 //
-//go:fix inline
+
 func (sf *RecMeta) Key() rec_key.IRecKeyFix {
 	return rec_key.NewRecKey(sf.Key_)
 }
 
 // Vers -- версия записи.
 //
-//go:fix inline
+
 func (sf *RecMeta) Vers() int64 {
 	return sf.Vers_
 }
 
 // Operation -- тип операции над записью.
 //
-//go:fix inline
+
 func (sf *RecMeta) Operation() string {
 	return sf.Operation_
 }
 
 // CreatedAt -- дата создания записи.
 //
-//go:fix inline
+
 func (sf *RecMeta) CreatedAt() core_spec.ITime {
 	return sf.createdAt_
 }
 
 // UpdateAt -- дата последнего обновления.
 //
-//go:fix inline
+
 func (sf *RecMeta) UpdateAt() core_spec.ITimeMut {
 	return sf.updateAt_
 }

+ 4 - 4
v4/lev2/lsi/store_ent/store_ent.go

@@ -12,7 +12,7 @@ type IStoreKeyFix = rec_key.IRecKeyFix
 
 // NewStoreKey -- создать новый ключ хранилища.
 //
-//go:fix inline
+
 func NewStoreKeyFix(val rec_key.ARecKey) IStoreKeyFix {
 	return rec_key.NewRecKey(val)
 }
@@ -22,7 +22,7 @@ type IDictRec = dict_rec.IDictRec
 
 // NewDictRec -- возвращает новый словарь записей.
 //
-//go:fix inline
+
 func NewDictRec() IDictRec {
 	return dict_rec.NewDictRec()
 }
@@ -35,7 +35,7 @@ type AStoreKey = rec_key.ARecKey
 
 // NewRecValFix -- возвращает новое значение ключа хранилища.
 //
-//go:fix inline
+
 func NewRecValFix(val []byte) IRecValFix {
 	return rec_val.NewRecVal(val)
 }
@@ -45,7 +45,7 @@ type IRecKvFix = rec_kv.IRecKvFix
 
 // NewRecKvFix -- возвращает новую запись хранилища.
 //
-//go:fix inline
+
 func NewRecKvFix(key IStoreKeyFix, val IRecValFix) IRecKvFix {
 	return rec_kv.NewRecKv(key, val)
 }

+ 2 - 2
v4/lev2/lsi/store_spec/ibucket_base.go

@@ -18,9 +18,9 @@ type IBucketBase interface {
 	// SizeLimit -- лимит размера бакета
 	SizeLimit() int64
 	// CreatedAt -- время создания бакета
-	CreatedAt() defs.AStr
+	CreatedAt() defs.ATxt
 	// UpdatedAt -- время обновления бакета
-	UpdatedAt() defs.AStr
+	UpdatedAt() defs.ATxt
 	// Vers -- версия бакета
 	Vers() defs.Int
 	// DictRec -- словарь для хранения данных

+ 3 - 3
v4/lev2/lti/bus_ent/bus_ent.go

@@ -17,14 +17,14 @@ type ITopicMut = topic.ITopicMut
 
 // NewTopicFix -- создать новое имя топика.
 //
-//go:fix inline
+
 func NewTopicFix(name topic.ATopic) ITopicFix {
 	return topic.NewTopic(name)
 }
 
 // NewTopicMut -- создать новое изменяемое имя топика.
 //
-//go:fix inline
+
 func NewTopicMut(name topic.ATopic) ITopicMut {
 	return topic.NewTopic(name)
 }
@@ -37,7 +37,7 @@ type IHandlerNameFix = handler_name.IHandlerNameFix
 
 // NewHandlerNameFix -- создать новое неизменяемое имя функции обработчика.
 //
-//go:fix inline
+
 func NewHandlerNameFix(name AHandlerName) IHandlerNameFix {
 	return handler_name.NewHandlerName(name)
 }

+ 15 - 4
v4/lev2/lti/bus_ent/handler_name/handler_name.go

@@ -11,23 +11,24 @@ type AHandlerName string
 
 // IHandlerNameFix -- неизменяемое имя функции обработчика.
 type IHandlerNameFix interface {
-	defs.IStr
 	// String -- строковое представление имени функции обработчика.
 	String() string
 	// Get -- возвращает имя функции обработчика.
 	Get() AHandlerName
+	// Txt -- внутренне представление имени функции обработчика.
+	Txt() defs.ATxt
 }
 
 // HandlerName -- имя функции обработчика.
 type HandlerName struct {
-	defs.AStr
+	val defs.ATxt
 }
 
 // NewHandlerName -- создать новое имя функции обработчика.
 func NewHandlerName(val AHandlerName) *HandlerName {
 	helpers.Assert(val != "", "NewAHandlerName: val is empty")
 	sf := &HandlerName{
-		AStr: defs.AStr(val),
+		val: defs.ATxt(val),
 	}
 	_ = IHandlerNameFix(sf)
 	return sf
@@ -35,5 +36,15 @@ func NewHandlerName(val AHandlerName) *HandlerName {
 
 // Get -- получить значение.
 func (sf *HandlerName) Get() AHandlerName {
-	return AHandlerName(sf.AStr)
+	return AHandlerName(sf.val)
+}
+
+// String -- строковое представление.
+func (sf *HandlerName) String() string {
+	return string(sf.val)
+}
+
+// Txt -- внутренне представление имени функции обработчика.
+func (sf *HandlerName) Txt() defs.ATxt {
+	return sf.val
 }

+ 3 - 3
v4/lev2/lti/bus_ent/topic/topic.go

@@ -39,21 +39,21 @@ func NewTopic(val ATopic) *Topic {
 
 // String -- строковое представление топика.
 //
-//go:fix inline
+
 func (sf *Topic) String() string {
 	return string(sf.val)
 }
 
 // Get -- получить строковое представление топика.
 //
-//go:fix inline
+
 func (sf *Topic) Get() ATopic {
 	return sf.val
 }
 
 // Set -- установить строковое представление топика.
 //
-//go:fix inline
+
 func (sf *Topic) Set(val ATopic) {
 	helpers.Hassert(val != "", "Topic.Set(): val is empty")
 	sf.val = val

+ 1 - 1
v4/lev2/lti/bus_mock/mock_hand_sub_http/mock_hand_sub_http_test.go

@@ -46,7 +46,7 @@ func TestHandlerHttpSub(t *testing.T) {
 	}
 	fnClear()
 	defer fnClear()
-	sf.ctx.Set(defs.Str("monolitName"), "test_monolit", "comment")
+	sf.ctx.Set(defs.Txt("monolitName"), "test_monolit", "comment")
 	sf.new()
 	sf.back()
 	sf.ctx.Cancel()

+ 3 - 3
v4/lev2/lti/dot/msg_serve/msg_serve.go

@@ -10,7 +10,7 @@ import (
 // ServeReq -- входящий запрос на обслуживание.
 type ServeReq struct {
 	Topic_  bus_ent.ATopic `json:"topic"`
-	Uuid_   defs.AStr      `json:"uuid"`
+	Uuid_   defs.ATxt      `json:"uuid"`
 	BinReq_ []byte         `json:"req"`
 }
 
@@ -22,8 +22,8 @@ func (sf *ServeReq) SelfCheck() {
 
 // ServeResp -- ответ на входящий запрос.
 type ServeResp struct {
-	Status_  defs.AStr `json:"status"`
-	Uuid_    defs.AStr `json:"uuid"`
+	Status_  defs.ATxt `json:"status"`
+	Uuid_    defs.ATxt `json:"uuid"`
 	BinResp_ []byte    `json:"resp"`
 }
 

+ 3 - 3
v4/lev2/lti/dot/msg_unsub/msg_unsub.go

@@ -10,7 +10,7 @@ import (
 // UnsubReq -- запрос на отписку от топика.
 type UnsubReq struct {
 	HandlerName_ bus_ent.AHandlerName `json:"name"` // Уникальная метка подписки
-	Uuid_        defs.AStr            `json:"uuid"`
+	Uuid_        defs.ATxt            `json:"uuid"`
 }
 
 // SelfCheck -- проверка запроса на правильность полей.
@@ -21,8 +21,8 @@ func (sf *UnsubReq) SelfCheck() {
 
 // UnsubResp -- ответ на запрос отписки.
 type UnsubResp struct {
-	Status_ defs.AStr `json:"status"`
-	Uuid_   defs.AStr `json:"uuid"`
+	Status_ defs.ATxt `json:"status"`
+	Uuid_   defs.ATxt `json:"uuid"`
 }
 
 // SelfCheck -- проверяет правильность своих полей.

+ 4 - 4
v4/lev2/lti/kbus/dict_sub_hook/dict_sub_hook.go

@@ -39,7 +39,7 @@ func (sf *dictSubHook) Unsubscribe(handler bus_spec.IBusHandlerSubscribe) {
 	}
 	handlerName := handler.Name()
 	delete(sf.dict, handlerName.Get())
-	sf.kCtx.Del(handlerName.Str())
+	sf.kCtx.Del(defs.ATxt(handler.Name().Get()))
 }
 
 // Subscribe -- добавляет в словарь подписки новый обработчик.
@@ -49,7 +49,7 @@ func (sf *dictSubHook) Subscribe(handler bus_spec.IBusHandlerSubscribe) {
 	helpers.Hassert(handler != nil, "dictSubHook.Subscribe(): handler==nil", []any{})
 	handlerName := handler.Name()
 	sf.dict[handlerName.Get()] = struct{}{}
-	sf.kCtx.Set(handlerName.Str(), handler, "subscribe handler")
+	sf.kCtx.Set(handlerName.Txt(), handler, "subscribe handler")
 }
 
 // Read -- вызывает все обработчики словаря подписок.
@@ -57,9 +57,9 @@ func (sf *dictSubHook) Read(binMsg []byte) {
 	sf.block.RLock()
 	defer sf.block.RUnlock()
 	for handlerName := range sf.dict {
-		optHand := sf.kCtx.Get(defs.AStr(handlerName))
+		optHand := sf.kCtx.Get(defs.ATxt(handlerName))
 		if optHand.IsNone() {
-			sf.kCtx.Del(defs.AStr(handlerName))
+			sf.kCtx.Del(defs.ATxt(handlerName))
 			continue
 		}
 		handler := optHand.Some().Val().(bus_spec.IBusHandlerSubscribe)

+ 0 - 1
v4/lev2/lti/kbus_base/kbus_base_test.go

@@ -19,7 +19,6 @@ type tester struct {
 }
 
 var (
-	//go:fix inline
 	qNameSub   = bus_ent.ITopicFix(topic.NewTopic("topic_hand_sub"))
 	qNameServe = bus_ent.ITopicFix(topic.NewTopic("topic_hand_serv"))
 )

+ 2 - 2
v4/lev2/lti/kbus_http/client_bus_http/client_bus_http.go

@@ -68,7 +68,7 @@ func (sf *ClientBusHttp) Unsubscribe(handler bus_spec.IBusHandlerSubscribe) {
 
 	req := &dot.UnsubReq{
 		HandlerName_: handler.Name().Get(),
-		Uuid_:        defs.Str(defs.AStr(_uuid.String())),
+		Uuid_:        defs.Txt(defs.ATxt(_uuid.String())),
 	}
 	req.SelfCheck()
 	binReq, err := json.MarshalIndent(req, "", "  ")
@@ -145,7 +145,7 @@ func (sf *ClientBusHttp) SendRequest(topic bus_ent.ITopicFix, binReq []byte) mL0
 	mL1.FnHassert(helpers.Hassert)(err == nil, "ClientBusHttp.SendRequest(): in generate UUID v6, err=\n\t%v", err)
 	req := &dot.ServeReq{
 		Topic_:  topic.Get(),
-		Uuid_:   defs.AStr(_uuid.String()),
+		Uuid_:   defs.ATxt(_uuid.String()),
 		BinReq_: binReq,
 	}
 	req.SelfCheck()

+ 1 - 2
v4/lev2/lti/kbus_http/client_bus_http/client_bus_http_test.go

@@ -35,9 +35,8 @@ type tester struct {
 }
 
 var (
-	//go:fix inline
 	qNameSub = bus_ent.ITopicFix(topic.NewTopic("test_topic_sub"))
-	//go:fix inline
+
 	qNameServ = bus_ent.ITopicFix(topic.NewTopic("test_topic_serv"))
 )
 

+ 6 - 6
v4/lev2/lti/kbus_http/kbus_http.go

@@ -156,7 +156,7 @@ func (sf *kBusHttp) postSendRequest(ctx fiber.Ctx) error {
 	err := ctx.Bind().Body(req)
 	if err != nil {
 		resp := &dot.ServeResp{
-			Status_: defs.Str("kernelBusHttp.postSendRequest(): err=\n\t%v", err),
+			Status_: defs.Txt("kernelBusHttp.postSendRequest(): err=\n\t%v", err),
 			Uuid_:   req.Uuid_,
 		}
 		resp.SelfCheck()
@@ -180,7 +180,7 @@ func (sf *kBusHttp) processSendRequest(req *dot.ServeReq) *dot.ServeResp {
 		Uuid_:   req.Uuid_,
 	}
 	if res.IsErr() {
-		resp.Status_ = defs.Str("kernelBusHttp.processSendRequest(): err=\n\t%v", res.Err())
+		resp.Status_ = defs.Txt("kernelBusHttp.processSendRequest(): err=\n\t%v", res.Err())
 		return resp
 	}
 	resp.BinResp_ = res.Ok()
@@ -197,7 +197,7 @@ func (sf *kBusHttp) postUnsub(ctx fiber.Ctx) error {
 	err := ctx.Bind().Body(req)
 	if err != nil {
 		resp := &dot.ServeResp{
-			Status_: defs.Str("kernelBusHttp.postSendRequest(): err=\n\t%v", err),
+			Status_: defs.Txt("kernelBusHttp.postSendRequest(): err=\n\t%v", err),
 			Uuid_:   req.Uuid_,
 		}
 		resp.SelfCheck()
@@ -218,14 +218,14 @@ func (sf *kBusHttp) processUnsubRequest(req *dot.UnsubReq) *dot.UnsubResp {
 		Status_: "ok",
 		Uuid_:   req.Uuid_,
 	}
-	optHandler := sf.KCtx_.Get(defs.AStr(req.HandlerName_))
+	optHandler := sf.KCtx_.Get(defs.ATxt(req.HandlerName_))
 	if optHandler.IsNone() {
-		resp.Status_ = defs.Str("kernelBusHttp.processUnsubRequest(): not get handler(%v) from kernel ctx",
+		resp.Status_ = defs.Txt("kernelBusHttp.processUnsubRequest(): not get handler(%v) from kernel ctx",
 			req.HandlerName_)
 		return resp
 	}
 	if optHandler == nil {
-		resp.Status_ = defs.Str("kernelBusHttp.processUnsubRequest(): handler(%v) not exists", req.HandlerName_)
+		resp.Status_ = defs.Txt("kernelBusHttp.processUnsubRequest(): handler(%v) not exists", req.HandlerName_)
 		return resp
 	}
 	hand := optHandler.Some().Val().(bus_spec.IBusHandlerSubscribe)

+ 1 - 1
v4/lev2/lti/kbus_local/client_bus_local/client_bus_local_test.go

@@ -23,7 +23,7 @@ func TestClientBusLocal(t *testing.T) {
 // Создание нового клиента.
 func (sf *tester) new() {
 	sf.t.Log("new")
-	//go:fix inline
+
 	qTopicLocal := bus_ent.ITopicFix(topic.NewTopic("local_topic"))
 	sf.lClient = NewClientBusLocal()
 	if sf.lClient == nil {

+ 1 - 1
v4/lev2/wui/hx_url/hx_url.go

@@ -15,7 +15,7 @@ type HxUrl struct {
 }
 
 // NewHxUrl -- возвращает новый URL запроса.
-func NewHxUrl(patch defs.AStr) *HxUrl {
+func NewHxUrl(patch defs.ATxt) *HxUrl {
 	sf := &HxUrl{
 		method: hx_url_method.NewHxUrlMethod(),
 		patch:  hx_url_patch.NewHxUrlPatch(patch),

+ 3 - 3
v4/lev2/wui/hx_url_method/hx_url_method.go

@@ -11,7 +11,7 @@ import (
 // HxSwap -- атрибут HTMX (метод запроса, внеполосная замена).
 type HxSwap struct {
 	sync.RWMutex
-	val defs.AStr
+	val defs.ATxt
 }
 
 // NewHxUrlMethod -- возвращает новый метод запроса.
@@ -24,14 +24,14 @@ func NewHxUrlMethod() *HxSwap {
 }
 
 // Get -- возвращает хранимое значение метода запроса.
-func (sf *HxSwap) Get() defs.AStr {
+func (sf *HxSwap) Get() defs.ATxt {
 	sf.RLock()
 	defer sf.RUnlock()
 	return sf.val
 }
 
 // Set -- устанавливает значение метода запроса.
-func (sf *HxSwap) Set(val defs.AStr) {
+func (sf *HxSwap) Set(val defs.ATxt) {
 	sf.Lock()
 	defer sf.Unlock()
 	sf.val = val

+ 4 - 4
v4/lev2/wui/hx_url_patch/hx_url_patch.go

@@ -12,11 +12,11 @@ import (
 // HxUrlPatch -- атрибут HTMX (путь запроса).
 type HxUrlPatch struct {
 	sync.RWMutex
-	val defs.AStr
+	val defs.ATxt
 }
 
 // NewHxUrlPatch -- возвращает новый путь запроса.
-func NewHxUrlPatch(patch defs.AStr) *HxUrlPatch {
+func NewHxUrlPatch(patch defs.ATxt) *HxUrlPatch {
 	mKh.Hassert(patch != "", "NewHxUrlPatch(): patch isempty")
 	sf := &HxUrlPatch{
 		val: patch,
@@ -26,14 +26,14 @@ func NewHxUrlPatch(patch defs.AStr) *HxUrlPatch {
 }
 
 // Get -- возвращает хранимое значение пути запроса.
-func (sf *HxUrlPatch) Get() defs.AStr {
+func (sf *HxUrlPatch) Get() defs.ATxt {
 	sf.RLock()
 	defer sf.RUnlock()
 	return sf.val
 }
 
 // Set -- устанавливает значение пути запроса.
-func (sf *HxUrlPatch) Set(val defs.AStr) {
+func (sf *HxUrlPatch) Set(val defs.ATxt) {
 	sf.Lock()
 	defer sf.Unlock()
 	sf.val = val

+ 1 - 1
v4/lev2/wui/wui.go

@@ -10,7 +10,7 @@ import (
 )
 
 // NewWuiButton -- возвращает новую WUI-кнопку.
-func NewWuiButton(text defs.AStr, fnClick func(map[string]string) mL0.IResult[string]) mWt.IWuiButton {
+func NewWuiButton(text defs.ATxt, fnClick func(map[string]string) mL0.IResult[string]) mWt.IWuiButton {
 	wBtn := wui_button.NewWuiButton(text, fnClick)
 	return wBtn
 }

+ 3 - 3
v4/lev2/wui/wui_button/wui_button.go

@@ -26,7 +26,7 @@ type WuiButton struct {
 type FnBtnBack func(map[string]string) mL0.IResult[string]
 
 // NewWuiButton -- возвращает новую WUI-кнопку.
-func NewWuiButton(text defs.AStr, fnBack FnBtnBack) *WuiButton {
+func NewWuiButton(text defs.ATxt, fnBack FnBtnBack) *WuiButton {
 	helpers.Hassert(fnBack != nil, "NewWuiButton(): text=%q, fnBack==nil", []any{text})
 	sf := &WuiButton{
 		IWuiWidget: wui_widget.NewWuiWidget(),
@@ -60,9 +60,9 @@ const (
 )
 
 // Html -- возвращает HTML-представление текста.
-func (sf *WuiButton) Html() defs.AStr {
+func (sf *WuiButton) Html() defs.ATxt {
 	strRes := strings.ReplaceAll(strBeg, "{.id}", sf.Id().String())
 	strRes = strings.ReplaceAll(strRes, "{.txt}", sf.text.Get().String())
 	strRes = strings.ReplaceAll(strRes, "{.hx}", sf.hx.String())
-	return defs.AStr(strRes)
+	return defs.ATxt(strRes)
 }

+ 1 - 1
v4/lev2/wui/wui_button/wui_button_test.go

@@ -29,7 +29,7 @@ func (sf *tester) new() {
 	if txt := btn.Text(); txt == nil {
 		sf.t.Fatalf("new(): IWuiText==nil")
 	}
-	if html := btn.Html(); html.Str() == "" {
+	if html := btn.Html(); html.Get() == "" {
 		sf.t.Fatalf("new(): html is empty")
 	}
 	if hx := btn.Hx(); hx == nil {

+ 1 - 1
v4/lev2/wui/wui_hx/wui_hx.go

@@ -23,7 +23,7 @@ type WuiHx struct {
 }
 
 // NewWuiHx -- возвращает новые атрибуты HTMX для WUI-объекта.
-func NewWuiHx(path defs.AStr) *WuiHx {
+func NewWuiHx(path defs.ATxt) *WuiHx {
 	sf := &WuiHx{
 		url:     hx_url.NewHxUrl(path),
 		trigger: hx_trigger.NewHxTrigger(),

+ 3 - 3
v4/lev2/wui/wui_label/wui_label.go

@@ -19,7 +19,7 @@ type WuiLabel struct {
 }
 
 // NewWuiLabel -- возвращает новую метку.
-func NewWuiLabel(text defs.AStr) mL0.IResult[*WuiLabel] {
+func NewWuiLabel(text defs.ATxt) mL0.IResult[*WuiLabel] {
 	sf := &WuiLabel{
 		IWuiWidget: wui_widget.NewWuiWidget(),
 		text:       wui_text.NewWuiText(text),
@@ -40,8 +40,8 @@ const (
 )
 
 // Html -- возвращает HTML-представление текста.
-func (sf *WuiLabel) Html() defs.AStr {
+func (sf *WuiLabel) Html() defs.ATxt {
 	strRes := strings.ReplaceAll(strBeg, "{.id}", sf.Id().String())
 	strRes = strings.ReplaceAll(strRes, "{.txt}", sf.text.Get().String())
-	return defs.AStr(strRes)
+	return defs.ATxt(strRes)
 }

+ 6 - 6
v4/lev2/wui/wui_text/wui_text.go

@@ -14,11 +14,11 @@ import (
 type WuiText struct {
 	mWt.IWuiWidget
 	sync.RWMutex
-	val defs.AStr
+	val defs.ATxt
 }
 
 // NewWuiText -- возвращает новый текст WUI.
-func NewWuiText(val defs.AStr) *WuiText {
+func NewWuiText(val defs.ATxt) *WuiText {
 	sf := &WuiText{
 		IWuiWidget: wui_widget.NewWuiWidget(),
 		val:        val,
@@ -32,23 +32,23 @@ const (
 )
 
 // Html -- возвращает HTML-представление текста.
-func (sf *WuiText) Html() defs.AStr {
+func (sf *WuiText) Html() defs.ATxt {
 	sf.RLock()
 	defer sf.RUnlock()
 	strRes := strings.ReplaceAll(strBeg, "{.id}", sf.Id().String())
 	strRes = strings.ReplaceAll(strRes, "{.txt}", sf.val.String())
-	return defs.AStr(strRes)
+	return defs.ATxt(strRes)
 }
 
 // Set -- устанавливает хранимое значение.
-func (sf *WuiText) Set(val defs.AStr) {
+func (sf *WuiText) Set(val defs.ATxt) {
 	sf.Lock()
 	defer sf.Unlock()
 	sf.val = val
 }
 
 // Get -- возвращает хранимое значение.
-func (sf *WuiText) Get() defs.AStr {
+func (sf *WuiText) Get() defs.ATxt {
 	sf.RLock()
 	defer sf.RUnlock()
 	return sf.val

+ 2 - 2
v4/lev2/wui/wui_types/ihx_url_method.go

@@ -11,7 +11,7 @@ import "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
 // hx-delete // DELETE.
 type IHxUrlMethod interface {
 	// Get -- возвращает метод атрибута
-	Get() defs.AStr
+	Get() defs.ATxt
 	// Set -- устанавливает метод атрибута
-	Set(defs.AStr)
+	Set(defs.ATxt)
 }

+ 2 - 2
v4/lev2/wui/wui_types/ihx_url_patch.go

@@ -5,7 +5,7 @@ import "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
 // IHxUrlPatch -- атрибут пути HTMX.
 type IHxUrlPatch interface {
 	// Get -- возвращает путь атрибута
-	Get() defs.AStr
+	Get() defs.ATxt
 	// Set -- устанавливает путь атрибута
-	Set(defs.AStr)
+	Set(defs.ATxt)
 }

+ 2 - 2
v4/lev2/wui/wui_types/iwui_text.go

@@ -6,7 +6,7 @@ import "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
 type IWuiText interface {
 	IWuiWidget
 	// Get -- возвращает текст
-	Get() defs.AStr
+	Get() defs.ATxt
 	// Set -- устанавливает текст
-	Set(defs.AStr)
+	Set(defs.ATxt)
 }

+ 3 - 3
v4/lev2/wui/wui_types/iwui_widget.go

@@ -4,9 +4,9 @@ import "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
 
 // IWuiWidget -- WUI виджет.
 type IWuiWidget interface {
-	defs.IStr
+	defs.ITxtFix
 	// Id -- возвращает Id виджета
-	Id() defs.AStr
+	Id() defs.ATxt
 	// Html -- возвращает HTML-представление виджета
-	Html() defs.AStr
+	Html() defs.ATxt
 }

+ 6 - 6
v4/lev2/wui/wui_widget/wui_widget.go

@@ -11,21 +11,21 @@ import (
 
 // WuiWidget -- базовый виджет WUI.
 type WuiWidget struct {
-	defs.AStr
+	defs.ATxt
 }
 
 // NewWuiWidget -- возвращает новый базовый виджет WUI.
 func NewWuiWidget() *WuiWidget {
 	sf := &WuiWidget{
-		AStr: "wui_" + defs.AStr(rand.Text()),
+		ATxt: "wui_" + defs.ATxt(rand.Text()),
 	}
 	_ = mWt.IWuiWidget(sf)
 	return sf
 }
 
 // Id - возвращает ID виджета.
-func (sf *WuiWidget) Id() defs.AStr {
-	return sf.AStr
+func (sf *WuiWidget) Id() defs.ATxt {
+	return sf.ATxt
 }
 
 const (
@@ -33,7 +33,7 @@ const (
 )
 
 // Html -- возвращает HTML представление виджета.
-func (sf *WuiWidget) Html() defs.AStr {
+func (sf *WuiWidget) Html() defs.ATxt {
 	strRes := strings.ReplaceAll(strBeg, "{.id}", sf.String())
-	return defs.AStr(strRes)
+	return defs.ATxt(strRes)
 }

+ 5 - 5
v4/lev3/mod_ent/mod_ent.go

@@ -9,24 +9,24 @@ import (
 
 // IModEnt -- сущность уровня модуля
 //
-//go:fix inline
+
 type AModNum = mod_num.AModNum
 
 // IModNumFix -- фиксированный модуль номера.
 //
-//go:fix inline
+
 type IModNumFix = mod_num.IModNumFix
 
 // NewModuleNumFix -- возвращает новый модуль номера.
 //
-//go:fix inline
+
 func NewModuleNumFix() mod_num.IModNumFix {
 	return mod_num.NewModuleNumFix()
 }
 
 // ModuleNumFromStr -- возвращает номер модуля из строки
 //
-//go:fix inline
+
 func ModuleNumFromStr(str string) core_spec.IResult[mod_num.IModNumFix] {
 	return mod_num.FromStr(str)
 }
@@ -41,7 +41,7 @@ type IModuleNameFix = module_name.IModuleNameFix
 
 // NewModuleNameFix -- создать новое уникальное имя модуля.
 //
-//go:fix inline
+
 func NewModuleNameFix(name AModuleName) IModuleNameFix {
 	return module_name.NewModuleName(name)
 }

+ 2 - 2
v4/lev3/mod_ent/mod_num/mod_num.go

@@ -58,14 +58,14 @@ func FromStr(strNumMod string) core_spec.IResult[IModNumFix] {
 
 // Get -- получить номер модуля
 //
-//go:fix inline
+
 func (sf *moduleNum) Get() AModNum {
 	return sf.num
 }
 
 // String -- строковое представление номера модуля
 //
-//go:fix inline
+
 func (sf *moduleNum) String() string {
 	return fmt.Sprint(sf.num)
 }

+ 7 - 10
v4/lev3/mod_ent/module_name/module_name.go

@@ -11,7 +11,6 @@ type AModuleName string
 
 // IModuleNameFix -- фиксированное имя модуля.
 type IModuleNameFix interface {
-	defs.IStr
 	// Get -- получить имя модуля
 	Get() AModuleName
 	// String -- строковое представление имени модуля
@@ -19,34 +18,32 @@ type IModuleNameFix interface {
 }
 
 type ModuleName struct {
-	name AModuleName
+	name defs.ATxt
 }
 
 // NewModuleName -- создать новое имя модуля.
 func NewModuleName(val AModuleName) *ModuleName {
 	helpers.Hassert(val != "", "NewAModuleName(): val is empty")
 	sf := &ModuleName{
-		name: val,
+		name: defs.ATxt(val),
 	}
 	_ = IModuleNameFix(sf)
 	return sf
 }
 
-// Str -- возвращает внутреннюю строку.
-func (sf *ModuleName) Str() defs.AStr {
-	return defs.AStr(sf.name)
+// Txt -- возвращает внутренне представление имени модуля.
+func (sf *ModuleName) Txt() defs.ATxt {
+	return sf.name
 }
 
 // String -- строковое представление.
-//
-//go:fix inline
 func (sf *ModuleName) String() string {
 	return string(sf.name)
 }
 
-// Get -- получить строковое представление.
+// Get -- возвращает имя модуля.
 func (sf *ModuleName) Get() AModuleName {
-	return sf.name
+	return AModuleName(sf.name)
 }
 
 // Byte -- возвращает байты.

+ 2 - 2
v4/lev3/mod_ent/module_name/module_name_test.go

@@ -19,10 +19,10 @@ func TestNewAModuleName_ok(t *testing.T) {
 			if mn == nil {
 				t.Fatalf("NewAModuleName(): nil")
 			}
-			if mn.name != tc {
+			if mn.Get() != tc {
 				t.Fatalf("Get(): got=%q want=%q", mn.name, tc)
 			}
-			if mn.name != tc {
+			if mn.Get() != tc {
 				t.Fatalf("String(): got=%q want=%q", mn.name, tc)
 			}
 		})

+ 1 - 1
v4/lev3/mod_kctx/mod_kctx.go

@@ -55,7 +55,7 @@ func GetModuleKernelCtx() *ModuleKernelCtx {
 
 // Run -- запускает модуль в работу.
 func (sf *ModuleKernelCtx) Run() {
-	msg := defs.Str("ModuleKernelCtx.Run(): module=%v, is run", sf.Name())
+	msg := defs.Txt("ModuleKernelCtx.Run(): module=%v, is run", sf.Name())
 	sf.log.Info(msg)
 	go sf.kServHttp.Run()
 }

+ 1 - 1
v4/lev3/mod_kctx/mod_kctx_test.go

@@ -40,7 +40,7 @@ func TestModKernelCtx(t *testing.T) {
 	}
 	fnClear()
 	defer fnClear()
-	sf.kCtx.Set(defs.Str("monolitName"), "test_monolit", defs.Str("test"))
+	sf.kCtx.Set(defs.Txt("monolitName"), "test_monolit", defs.Txt("test"))
 	sf.new()
 	sf.done()
 }

+ 1 - 1
v4/lev3/mod_keeper/mod_keeper_test.go

@@ -40,7 +40,7 @@ func TestModKeeper(t *testing.T) {
 	}
 	fnClear()
 	defer fnClear()
-	sf.kCtx.Set(defs.Str("monolitName"), "test_monolit", defs.Str("test"))
+	sf.kCtx.Set(defs.Txt("monolitName"), "test_monolit", defs.Txt("test"))
 	sf.new()
 	sf.done()
 }

+ 1 - 1
v4/lev3/mod_serv_http/btn_modules/btn_modules.go

@@ -31,7 +31,7 @@ func NewBtnModules() *BtnModules {
 }
 
 // Html -- возвращает HTML-представление кнопки.
-func (sf *BtnModules) Html() defs.AStr {
+func (sf *BtnModules) Html() defs.ATxt {
 	return sf.btn.Html()
 }
 

部分文件因文件數量過多而無法顯示