Initial QSfera import

This commit is contained in:
Курнат Андрей
2026-06-07 10:20:04 +03:00
commit 2315f25754
16485 changed files with 4826827 additions and 0 deletions
@@ -0,0 +1,60 @@
// Copyright 2025 The NATS Authors
// 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 elastic
import (
"weak"
)
func Make[T any](ptr *T) *Pointer[T] {
return &Pointer[T]{
weak: weak.Make(ptr),
}
}
type Pointer[T any] struct {
weak weak.Pointer[T]
strong *T
}
func (e *Pointer[T]) Set(ptr *T) {
e.weak = weak.Make(ptr)
if e.strong != nil {
e.strong = ptr
}
}
func (e *Pointer[T]) Strengthen() {
if e == nil || e.strong != nil {
return
}
e.strong = e.weak.Value()
}
func (e *Pointer[T]) Weaken() {
if e == nil || e.strong == nil {
return
}
e.strong = nil
}
func (e *Pointer[T]) Value() *T {
if e == nil {
return nil
}
if e.strong != nil {
return e.strong
}
return e.weak.Value()
}