summaryrefslogtreecommitdiff
path: root/vendor/github.com/bytedance/sonic/internal/encoder/prim/primitives.go
diff options
context:
space:
mode:
authorLibravatar kim <grufwub@gmail.com>2025-10-13 16:49:53 +0200
committerLibravatar tobi <tobi.smethurst@protonmail.com>2025-10-17 15:32:55 +0200
commitea7eeada77a52fd58a9e1a949a39eccc7bce955a (patch)
treeede9f651d0bd7782b565883f9384341530f8320f /vendor/github.com/bytedance/sonic/internal/encoder/prim/primitives.go
parent[bugfix] repeated posts on timeline endpoints (#4494) (diff)
downloadgotosocial-ea7eeada77a52fd58a9e1a949a39eccc7bce955a.tar.xz
[chore] update dependencies (#4495)
- github.com/coreos/go-oidc/v3: v3.15.0 -> v3.16.0 - github.com/go-playground/form/v4: v4.2.1 -> v4.3.0 - github.com/go-swagger/go-swagger: v0.32.3 -> v0.33.1 - golang.org/x/crypto: v0.42.0 -> v0.43.0 - golang.org/x/image: v0.31.0 -> v0.32.0 - golang.org/x/net: v0.45.0 -> v0.46.0 - golang.org/x/oauth2: v0.31.0 -> v0.32.0 - golang.org/x/sys: v0.36.0 -> v0.37.0 - golang.org/x/text: v0.29.0 -> v0.30.0 - modernc.org/sqlite: v1.39.0 -> v1.39.1 (w/ concurrency workaround) Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4495 Co-authored-by: kim <grufwub@gmail.com> Co-committed-by: kim <grufwub@gmail.com>
Diffstat (limited to 'vendor/github.com/bytedance/sonic/internal/encoder/prim/primitives.go')
-rw-r--r--vendor/github.com/bytedance/sonic/internal/encoder/prim/primitives.go105
1 files changed, 105 insertions, 0 deletions
diff --git a/vendor/github.com/bytedance/sonic/internal/encoder/prim/primitives.go b/vendor/github.com/bytedance/sonic/internal/encoder/prim/primitives.go
new file mode 100644
index 000000000..ec4d2f5ca
--- /dev/null
+++ b/vendor/github.com/bytedance/sonic/internal/encoder/prim/primitives.go
@@ -0,0 +1,105 @@
+/**
+ * Copyright 2024 ByteDance Inc.
+ *
+ * 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 prim
+
+import (
+ "encoding"
+ "encoding/json"
+ "reflect"
+ "unsafe"
+
+ "github.com/bytedance/sonic/internal/encoder/alg"
+ "github.com/bytedance/sonic/internal/encoder/vars"
+ "github.com/bytedance/sonic/internal/resolver"
+ "github.com/bytedance/sonic/internal/rt"
+)
+
+func Compact(p *[]byte, v []byte) error {
+ buf := vars.NewBuffer()
+ err := json.Compact(buf, v)
+
+ /* check for errors */
+ if err != nil {
+ return err
+ }
+
+ /* add to result */
+ v = buf.Bytes()
+ *p = append(*p, v...)
+
+ /* return the buffer into pool */
+ vars.FreeBuffer(buf)
+ return nil
+}
+
+func EncodeNil(rb *[]byte) error {
+ *rb = append(*rb, 'n', 'u', 'l', 'l')
+ return nil
+}
+
+// func Make_EncodeTypedPointer(computor func(*rt.GoType, ...interface{}) (interface{}, error)) func(*[]byte, *rt.GoType, *unsafe.Pointer, *vars.Stack, uint64) error {
+// return func(buf *[]byte, vt *rt.GoType, vp *unsafe.Pointer, sb *vars.Stack, fv uint64) error {
+// if vt == nil {
+// return EncodeNil(buf)
+// } else if fn, err := vars.FindOrCompile(vt, (fv&(1<<BitPointerValue)) != 0, computor); err != nil {
+// return err
+// } else if vt.Indirect() {
+// err := fn(buf, *vp, sb, fv)
+// return err
+// } else {
+// err := fn(buf, unsafe.Pointer(vp), sb, fv)
+// return err
+// }
+// }
+// }
+
+func EncodeJsonMarshaler(buf *[]byte, val json.Marshaler, opt uint64) error {
+ if ret, err := val.MarshalJSON(); err != nil {
+ return err
+ } else {
+ if opt&(1<<alg.BitCompactMarshaler) != 0 {
+ return Compact(buf, ret)
+ }
+ if opt&(1<<alg.BitNoValidateJSONMarshaler) == 0 {
+ if ok, s := alg.Valid(ret); !ok {
+ return vars.Error_marshaler(ret, s)
+ }
+ }
+ *buf = append(*buf, ret...)
+ return nil
+ }
+}
+
+func EncodeTextMarshaler(buf *[]byte, val encoding.TextMarshaler, opt uint64) error {
+ if ret, err := val.MarshalText(); err != nil {
+ return err
+ } else {
+ if opt&(1<<alg.BitNoQuoteTextMarshaler) != 0 {
+ *buf = append(*buf, ret...)
+ return nil
+ }
+ *buf = alg.Quote(*buf, rt.Mem2Str(ret), false)
+ return nil
+ }
+}
+
+func IsZero(val unsafe.Pointer, fv *resolver.FieldMeta) bool {
+ rv := reflect.NewAt(fv.Type, val).Elem()
+ b1 := fv.IsZero == nil && rv.IsZero()
+ b2 := fv.IsZero != nil && fv.IsZero(rv)
+ return b1 || b2
+}