rawhelpers.go

 1// Copyright The OpenTelemetry Authors
 2// SPDX-License-Identifier: Apache-2.0
 3
 4package internal // import "go.opentelemetry.io/otel/internal"
 5
 6import (
 7	"math"
 8	"unsafe"
 9)
10
11func BoolToRaw(b bool) uint64 { // nolint:revive  // b is not a control flag.
12	if b {
13		return 1
14	}
15	return 0
16}
17
18func RawToBool(r uint64) bool {
19	return r != 0
20}
21
22func Int64ToRaw(i int64) uint64 {
23	// Assumes original was a valid int64 (overflow not checked).
24	return uint64(i) // nolint: gosec
25}
26
27func RawToInt64(r uint64) int64 {
28	// Assumes original was a valid int64 (overflow not checked).
29	return int64(r) // nolint: gosec
30}
31
32func Float64ToRaw(f float64) uint64 {
33	return math.Float64bits(f)
34}
35
36func RawToFloat64(r uint64) float64 {
37	return math.Float64frombits(r)
38}
39
40func RawPtrToFloat64Ptr(r *uint64) *float64 {
41	// Assumes original was a valid *float64 (overflow not checked).
42	return (*float64)(unsafe.Pointer(r)) // nolint: gosec
43}
44
45func RawPtrToInt64Ptr(r *uint64) *int64 {
46	// Assumes original was a valid *int64 (overflow not checked).
47	return (*int64)(unsafe.Pointer(r)) // nolint: gosec
48}