| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- // package defs -- предметные типы ядра.
- package defs
- import (
- "fmt"
- )
- // "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/stream_name"
- // Int -- алиас для int.
- type Int int
- // Int -- возвращает целое число по требованию.
- func (i Int) Int() int {
- return int(i)
- }
- // ITxtFix -- интерфейс к фиксированной внутренней строке.
- type ITxtFix interface {
- // Get -- возвращает внутреннюю строку
- Get() ATxt
- // String -- возвращает строку
- String() string
- // Len -- возвращает длину внутренней строки
- Len() Int
- // Byte -- возвращает внутреннюю строку в виде байтов.
- Byte() []byte
- // Rune -- возвращает внутреннюю строку в виде рун.
- Rune() []rune
- }
- // ITxtMut -- интерфейс к изменяемой внутренней строке.
- type ITxtMut interface {
- ITxtFix
- // Set -- устанавливает внутреннюю строку
- Set(ATxt)
- }
- // ATxt -- алиас для внутренней строки.
- type ATxt string
- // KTxt -- алиас для внутренней строки.
- type KTxt struct {
- val ATxt
- }
- // TxtConstraint -- разрешает string и любые типы на его основе (например, ATxt).
- type TxtConstraint interface {
- ~string
- }
- // Txt -- создать новую строку.
- func Txt[T TxtConstraint](msg T, arg ...any) *KTxt {
- _msg := fmt.Sprintf(string(msg), arg...)
- sf := &KTxt{
- val: ATxt(_msg),
- }
- return sf
- }
- // TxtFix -- создать новую строку.
- func TxtFix(msg ATxt, arg ...any) ITxtFix {
- sf := Txt(msg, arg...)
- return sf
- }
- // TxtMut -- создать новую мутабельную строку.
- func TxtMut(msg ATxt, arg ...any) ITxtMut {
- _msg := fmt.Sprintf(string(msg), arg...)
- sf := &KTxt{
- val: ATxt(_msg),
- }
- return sf
- }
- // Get -- возвращает внутреннюю строку.
- func (sf KTxt) Get() ATxt {
- return sf.val
- }
- // Set -- изменение внутренней строки
- func (sf *KTxt) Set(msg ATxt) {
- sf.val = msg
- }
- // Rune -- возвращает внутреннюю строку в виде рун.
- func (sf KTxt) Rune() []rune {
- return []rune(sf.val)
- }
- // Byte -- возвращает внутреннюю строку в виде байтов.
- func (sf KTxt) Byte() []byte {
- return []byte(sf.val)
- }
- // Len -- возвращает длину строки.
- func (sf KTxt) Len() Int {
- return Int(len(sf.val))
- }
- // String -- возвращает строку по требованию.
- func (sf KTxt) String() string {
- return string(sf.val)
- }
- // IErr -- алиас для error.
- type IErr interface {
- error
- ITxtFix
- // IsErr -- возвращает true, если ошибка.
- IsErr() bool
- }
- // KErr -- обёрнутая ошибка.
- type KErr struct {
- err error
- }
- // Err -- создать новую обёрнутую ошибку.
- func Err(msg ATxt, arg ...any) IErr {
- err := fmt.Errorf(string(msg), arg...)
- return &KErr{err}
- }
- // WrapErr -- возвращает обёрнутую ошибку.
- func WrapErr(err error) IErr {
- return &KErr{err}
- }
- // Rune -- возвращает внутреннюю строку в виде рун.
- func (e *KErr) Rune() []rune {
- return []rune(e.err.Error())
- }
- // Byte -- возвращает байты из ошибки.
- func (e *KErr) Byte() []byte {
- return []byte(e.err.Error())
- }
- // IsErr -- возвращает true, если ошибка.
- func (e *KErr) IsErr() bool {
- return e.err != nil
- }
- // String -- возвращает строковое представление ошибки.
- func (e *KErr) String() string {
- return e.err.Error()
- }
- // Error -- возвращает хранимую ошибку.
- func (e *KErr) Error() string {
- return e.err.Error()
- }
- // Get -- возвращает строку по требованию для ошибки.
- func (e *KErr) Get() ATxt {
- return ATxt(e.err.Error())
- }
- // Len -- возвращает длину ошибки.
- func (e *KErr) Len() Int {
- return Int(len(e.err.Error()))
- }
- // ITimeFix -- метка времени.
- // Вывод: "2006-01-02 15:04:05.000 -07 MST".
- type ITimeFix ITxtFix
- // BucketName -- имя сущности.
- type BucketName KTxt
- // StreamName -- имя потока для ожидания.
- // type StreamName = stream_name.AStreamName
- // NewStreamName -- создать новое имя потока.
- // func NewStreamName(val Str) *stream_name.AStreamName {
- // return stream_name.NewAStreamName(val)
- // }
|