gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

encoder_amd64.go (4173B)


      1 // +build amd64,go1.15,!go1.21
      2 
      3 /*
      4  * Copyright 2023 ByteDance Inc.
      5  *
      6  * Licensed under the Apache License, Version 2.0 (the "License");
      7  * you may not use this file except in compliance with the License.
      8  * You may obtain a copy of the License at
      9  *
     10  *     http://www.apache.org/licenses/LICENSE-2.0
     11  *
     12  * Unless required by applicable law or agreed to in writing, software
     13  * distributed under the License is distributed on an "AS IS" BASIS,
     14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     15  * See the License for the specific language governing permissions and
     16  * limitations under the License.
     17  */
     18 
     19 package encoder
     20 
     21 import (
     22     `github.com/bytedance/sonic/internal/encoder`
     23 )
     24 
     25 
     26 // Encoder represents a specific set of encoder configurations.
     27 type Encoder = encoder.Encoder
     28 
     29 // StreamEncoder uses io.Writer as input.
     30 type StreamEncoder = encoder.StreamEncoder
     31 
     32 // Options is a set of encoding options.
     33 type Options = encoder.Options
     34 
     35 const (
     36     // SortMapKeys indicates that the keys of a map needs to be sorted
     37     // before serializing into JSON.
     38     // WARNING: This hurts performance A LOT, USE WITH CARE.
     39     SortMapKeys Options = encoder.SortMapKeys
     40 
     41     // EscapeHTML indicates encoder to escape all HTML characters
     42     // after serializing into JSON (see https://pkg.go.dev/encoding/json#HTMLEscape).
     43     // WARNING: This hurts performance A LOT, USE WITH CARE.
     44     EscapeHTML Options = encoder.EscapeHTML
     45 
     46     // CompactMarshaler indicates that the output JSON from json.Marshaler
     47     // is always compact and needs no validation
     48     CompactMarshaler Options = encoder.CompactMarshaler
     49 
     50     // NoQuoteTextMarshaler indicates that the output text from encoding.TextMarshaler
     51     // is always escaped string and needs no quoting
     52     NoQuoteTextMarshaler Options = encoder.NoQuoteTextMarshaler
     53 
     54     // NoNullSliceOrMap indicates all empty Array or Object are encoded as '[]' or '{}',
     55     // instead of 'null'
     56     NoNullSliceOrMap Options = encoder.NoNullSliceOrMap
     57 
     58     // ValidateString indicates that encoder should validate the input string
     59     // before encoding it into JSON.
     60     ValidateString Options = encoder.ValidateString
     61 
     62     // CompatibleWithStd is used to be compatible with std encoder.
     63     CompatibleWithStd Options = encoder.CompatibleWithStd
     64 )
     65 
     66 
     67 var (
     68     // Encode returns the JSON encoding of val, encoded with opts.
     69     Encode = encoder.Encode
     70 
     71     // EncodeInto is like Encode but uses a user-supplied buffer instead of allocating a new one.
     72     EncodeIndented = encoder.EncodeIndented
     73 
     74     // EncodeIndented is like Encode but applies Indent to format the output.
     75     // Each JSON element in the output will begin on a new line beginning with prefix
     76     // followed by one or more copies of indent according to the indentation nesting.
     77     EncodeInto = encoder.EncodeInto
     78 
     79     // HTMLEscape appends to dst the JSON-encoded src with <, >, &, U+2028 and U+2029
     80     // characters inside string literals changed to \u003c, \u003e, \u0026, \u2028, \u2029
     81     // so that the JSON will be safe to embed inside HTML <script> tags.
     82     // For historical reasons, web browsers don't honor standard HTML
     83     // escaping within <script> tags, so an alternative JSON encoding must
     84     // be used.
     85     HTMLEscape = encoder.HTMLEscape
     86 
     87     // Pretouch compiles vt ahead-of-time to avoid JIT compilation on-the-fly, in
     88     // order to reduce the first-hit latency.
     89     //
     90     // Opts are the compile options, for example, "option.WithCompileRecursiveDepth" is
     91     // a compile option to set the depth of recursive compile for the nested struct type.
     92     Pretouch = encoder.Pretouch
     93 
     94     // Quote returns the JSON-quoted version of s.
     95     Quote = encoder.Quote
     96 
     97     // Valid validates json and returns first non-blank character position,
     98     // if it is only one valid json value.
     99     // Otherwise returns invalid character position using start.
    100     //
    101     // Note: it does not check for the invalid UTF-8 characters.
    102     Valid = encoder.Valid
    103 
    104     // NewStreamEncoder adapts to encoding/json.NewDecoder API.
    105     //
    106     // NewStreamEncoder returns a new encoder that write to w.
    107     NewStreamEncoder = encoder.NewStreamEncoder
    108 )