You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
4.2 KiB
76 lines
4.2 KiB
/* ——————————————————————————————————————————————————————————————————————————
|
|
Proyecto goat
|
|
—————————————————————————————————————————————————————————————————————————————
|
|
Fichero attr.go
|
|
Package chrs
|
|
Autor Juan V. Navarro juanvnl@activething.com
|
|
Creado 02/02/2026
|
|
—————————————————————————————————————————————————————————————————————————————
|
|
|
|
LICENSES AND TERMS OF USE
|
|
-------------------------
|
|
|
|
This software is licensed under the Elastic License v2.0 (the "License").
|
|
For full terms and additional information regarding permitted and prohibited
|
|
uses, please visit:
|
|
https://activething.com/ATGO/licenses
|
|
|
|
You may use, copy, modify, and redistribute this software internally within
|
|
your organization for any purpose, including research, development, and
|
|
testing, subject to the terms of this License.
|
|
|
|
You may NOT, however, use, provide, distribute, or make this software
|
|
available to any third party as part of a hosted service, SaaS offering, or
|
|
commercial product without first obtaining a commercial license from
|
|
Active Thing.
|
|
|
|
You may combine this software with other code, provided that such
|
|
combination does not circumvent the restrictions of this License.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. In no event shall
|
|
the authors or copyright holders be liable for any claim, damages, or other
|
|
liability arising from the use of this software.
|
|
|
|
—————————————————————————————————————————————————————————————————————————————
|
|
|
|
Web : activething.com | activething.com/goat
|
|
git : g.activething.com | github.com/activething/goat
|
|
Correo : dev@activething.com
|
|
|
|
—————————————————————————————————————————————————————————————————————————————
|
|
No deseo caminar sobre el agua", dijo Siddhartha.
|
|
Que los antiguos chamanes se contenten con tales habilidades.
|
|
—— Hermann Hesse, Siddhartha
|
|
—————————————————————————————————————————————————————————————————————————————
|
|
Copyright (c) 2026 Active Thing
|
|
————————————————————————————————————————————————————————————————————————————— */
|
|
|
|
package btes
|
|
|
|
// Attr representa una máscara de bits (bitmask) de 8 bits para propiedades ASCII.
|
|
// Este diseño permite almacenar hasta 8 características booleanas distintas
|
|
// en un solo byte, optimizando el uso de la memoria caché del CPU.
|
|
type Attr uint8
|
|
|
|
// HasAll comprueba si el atributo contiene TODAS las propiedades indicadas en la máscara.
|
|
// Se utiliza para validaciones restrictivas.
|
|
//
|
|
// Ejemplo:
|
|
//
|
|
// attr.HasAll(IsAlpha | IsUpper) // ¿Es una letra Y además es mayúscula?
|
|
//
|
|
// Matemáticamente: (a & attr) == attr
|
|
func (a Attr) HasAll(attr Attr) bool { return a&attr == attr }
|
|
|
|
// HasAny comprueba si el atributo contiene AL MENOS UNA de las propiedades
|
|
// indicadas en la máscara. Se utiliza para validaciones de pertenencia a grupos.
|
|
//
|
|
// Ejemplo:
|
|
//
|
|
// attr.HasAny(IsDigit | IsAlpha) // ¿Es un número O una letra?
|
|
//
|
|
// Matemáticamente: (a & attr) != 0
|
|
func (a Attr) HasAny(attr Attr) bool { return a&attr != 0 }
|