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.
93 lines
2.6 KiB
93 lines
2.6 KiB
// ------------------------------------------------------------------------
|
|
// Project active2
|
|
// Active Thing (activething.com) git.activething.com/go
|
|
//
|
|
// File name active.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 "reflect"
|
|
|
|
const(
|
|
|
|
kindBits = 16
|
|
)
|
|
|
|
var (
|
|
|
|
G = struct {
|
|
|
|
ErrInvalidName ErrField
|
|
ErrDuplicateField ErrField
|
|
} {
|
|
|
|
ErrInvalidName : ErrField("invalid-field-name"),
|
|
ErrDuplicateField : ErrField("duplicated-field-name"),
|
|
}
|
|
|
|
g = struct {
|
|
kindNames []string
|
|
//pool pools.GPool[_deprecated.AFields]
|
|
|
|
} {
|
|
//pool : *pools.NewGPool[_deprecated.AFields](pools.WithNew(_deprecated.newAFields)),
|
|
kindNames : []string{
|
|
"any",
|
|
"bool",
|
|
"signed",
|
|
"unsigned",
|
|
"float",
|
|
"string",
|
|
"date",
|
|
"time",
|
|
"binary",
|
|
"error",
|
|
"reflect",
|
|
"defer",
|
|
},
|
|
}
|
|
|
|
)
|
|
|
|
func NewAField (name string, value any) AField {
|
|
switch t := value.(type) {
|
|
case bool :
|
|
return NewAFieldBool (name,t)
|
|
case []byte : return NewAFieldBinary(name,t)
|
|
case string : return NewAFieldString(name,t)
|
|
case int : return NewAFieldSigned(name,t)
|
|
case int8 : return NewAFieldSigned(name,int(t))
|
|
case int16 : return NewAFieldSigned(name,int(t))
|
|
case int32 : return NewAFieldSigned(name,int(t))
|
|
case int64 : return NewAFieldSigned(name,int(t))
|
|
case uint : return NewAFieldUnsigned(name,t)
|
|
case uint8 : return NewAFieldUnsigned(name,uint(t))
|
|
case uint16 : return NewAFieldUnsigned(name,uint(t))
|
|
case uint32 : return NewAFieldUnsigned(name,uint(t))
|
|
case uint64 : return NewAFieldUnsigned(name,uint(t))
|
|
case uintptr: return NewAFieldUnsigned(name,uint(t))
|
|
case float64: return NewAFieldFloat(name,t)
|
|
case float32: return NewAFieldFloat(name,float64(t))
|
|
case error : return NewAFieldError(name,t)
|
|
case reflect.Value : return NewAFieldReflect(name,t)
|
|
default:
|
|
return NewAFieldAny(name,value)
|
|
}
|
|
} |