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

3 years ago
// ------------------------------------------------------------------------
// Project active2
3 years ago
// Active Thing (activething.com) git.activething.com/go
//
// File name active.go
3 years ago
// Created by DEV
// Modified 30/04/2024
3 years ago
//
// Copyright 2024 activething.com
3 years ago
// ------------------------------------------------------------------------
// 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
3 years ago
import "reflect"
const(
kindBits = 16
)
var (
3 years ago
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]
3 years ago
} {
//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)
}
}

Powered by TurnKey Linux.