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.

131 lines
2.3 KiB

// ------------------------------------------------------------------------
// Project active2
// Active Thing (activething.com) git.activething.com/go
//
// File name kind.go
// Created by DEV
// Modified 30/04/2024
//
// Copyright 2024 activething.com
// ------------------------------------------------------------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ------------------------------------------------------------------------
package flds
import (
"math/bits"
)
const(
KindAny Kind = 1 << iota
KindBool
KindSigned
KindUnsigned
KindFloat
KindString
KindDate
KindTime
KindBinary
KindError
KindReflect
KindDefer
)
type (
Kind uint16
)
func (k Kind) IsAny() bool {
return k&KindAny != 0 }
func (k Kind) IsBool() bool {
return k&KindBool != 0 }
func (k Kind) IsSigned() bool {
return k&KindSigned != 0 }
func (k Kind) IsUnsigned() bool {
return k&KindUnsigned != 0 }
func (k Kind) IsFloat() bool {
return k&KindFloat != 0 }
func (k Kind) IsString() bool {
return k&KindString != 0 }
func (k Kind) IsDate() bool {
return k&KindDate != 0 }
func (k Kind) IsTime() bool {
return k&KindTime != 0 }
func (k Kind) IsBinary() bool {
return k&KindBinary != 0 }
func (k Kind) IsError() bool {
return k&KindError != 0 }
func (k Kind) IsReflect() bool {
return k&KindReflect != 0 }
func (k Kind) IsDefer() bool {
return k&KindDefer != 0 }
func (k Kind) Count () int {
return bits.OnesCount16(uint16(k)) }
func (k Kind) Kinds () []Kind {
if k == 0 {
return nil
}
var ls []Kind
c := Kind(1)
for i:=0; i< kindBits; i++ {
c = 1 << i
if c&k != 0 {
ls = append(ls,c)
}
}
return ls
}
func (k Kind) KindNames () []string {
if k==0 {
return []string{""}
}
var ls []string
c := Kind(1)
for i:=0; i< kindBits; i++ {
c = 1 << i
if c&k != 0 {
ls = append(ls,g.kindNames[i])
}
}
return ls
}

Powered by TurnKey Linux.