blob: 5bbc059a9c1a28a4f138a140399a2584042b08fd [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 ptr
import "fmt"
func Of[T any](t T) *T {
return &t
}
func Empty[T any]() T {
var empty T
return empty
}
func Flatten[T any](t **T) *T {
if t == nil {
return nil
}
return *t
}
func TypeName[T any]() string {
var empty T
return fmt.Sprintf("%T", empty)
}
func Equal[T comparable](a, b *T) bool {
if (a == nil) != (b == nil) {
return false
}
if a == nil {
return true
}
return *a == *b
}
func NonEmptyOrDefault[T comparable](t T, def T) T {
var empty T
if t != empty {
return t
}
return def
}