summaryrefslogtreecommitdiff
path: root/vendor/github.com/bytedance/sonic/internal/encoder/stream.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/bytedance/sonic/internal/encoder/stream.go')
-rw-r--r--vendor/github.com/bytedance/sonic/internal/encoder/stream.go91
1 files changed, 0 insertions, 91 deletions
diff --git a/vendor/github.com/bytedance/sonic/internal/encoder/stream.go b/vendor/github.com/bytedance/sonic/internal/encoder/stream.go
deleted file mode 100644
index c2d026a0c..000000000
--- a/vendor/github.com/bytedance/sonic/internal/encoder/stream.go
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright 2021 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 encoder
-
-import (
- "encoding/json"
- "io"
-
- "github.com/bytedance/sonic/internal/encoder/vars"
-)
-
-// StreamEncoder uses io.Writer as input.
-type StreamEncoder struct {
- w io.Writer
- Encoder
-}
-
-// NewStreamEncoder adapts to encoding/json.NewDecoder API.
-//
-// NewStreamEncoder returns a new encoder that write to w.
-func NewStreamEncoder(w io.Writer) *StreamEncoder {
- return &StreamEncoder{w: w}
-}
-
-// Encode encodes interface{} as JSON to io.Writer
-func (enc *StreamEncoder) Encode(val interface{}) (err error) {
- out := vars.NewBytes()
-
- /* encode into the buffer */
- err = EncodeInto(out, val, enc.Opts)
- if err != nil {
- goto free_bytes
- }
-
- if enc.indent != "" || enc.prefix != "" {
- /* indent the JSON */
- buf := vars.NewBuffer()
- err = json.Indent(buf, *out, enc.prefix, enc.indent)
- if err != nil {
- vars.FreeBuffer(buf)
- goto free_bytes
- }
-
- // according to standard library, terminate each value with a newline...
- if enc.Opts & NoEncoderNewline == 0 {
- buf.WriteByte('\n')
- }
-
- /* copy into io.Writer */
- _, err = io.Copy(enc.w, buf)
- if err != nil {
- vars.FreeBuffer(buf)
- goto free_bytes
- }
-
- } else {
- /* copy into io.Writer */
- var n int
- buf := *out
- for len(buf) > 0 {
- n, err = enc.w.Write(buf)
- buf = buf[n:]
- if err != nil {
- goto free_bytes
- }
- }
-
- // according to standard library, terminate each value with a newline...
- if enc.Opts & NoEncoderNewline == 0 {
- enc.w.Write([]byte{'\n'})
- }
- }
-
-free_bytes:
- vars.FreeBytes(out)
- return err
-}