/** * 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 alg import ( "encoding" "encoding/json" "github.com/bytedance/sonic/internal/encoder/vars" "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<