// 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) } // IStr --интерфейс к гибкой строке. type IStr interface { // Str -- возвращает внутреннюю строку Str() AStr // String -- возвращает прямую строку String() string // Len -- возвращает длину внутренней строки Len() Int // Byte -- возвращает внутреннюю строку в виде байтов. Byte() []byte // Rune -- возвращает внутреннюю строку в виде рун. Rune() []rune } // Алиас для внутренней строки. type AStr string // Str -- создать новую строку. // //go:fix inline func Str(msg AStr, arg ...any) AStr { return AStr(fmt.Sprintf(string(msg), arg...)) } // NewStr -- создать новую строку. // //go:fix inline func NewStr(msg AStr) IStr { return msg } // Rune -- возвращает внутреннюю строку в виде рун. // //go:fix inline func (s AStr) Rune() []rune { return []rune(s) } // Byte -- возвращает внутреннюю строку в виде байтов. // //go:fix inline func (s AStr) Byte() []byte { return []byte(s) } // Len -- возвращает длину строки. // //go:fix inline func (s AStr) Len() Int { return Int(len(s)) } // Str -- возвращает внутреннюю строку. // //go:fix inline func (s AStr) Str() AStr { return s } // String -- возвращает строку по требованию. // //go:fix inline func (s AStr) String() string { return string(s) } // IErr -- алиас для error. type IErr interface { error IStr // IsErr -- возвращает true, если ошибка. IsErr() bool } // Err -- обёрнутая ошибка. type Err struct { err error } // NewErr -- создать новую обёрнутую ошибку. func NewErr(msg AStr, arg ...any) IErr { err := fmt.Errorf(string(msg), 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()) } // 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 // BucketName -- имя сущности. type BucketName AStr // 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) // }