mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-03 18:52:24 -06:00 
			
		
		
		
	- github.com/KimMachineGun/automemlimit v0.7.2 => v0.7.3
- github.com/gin-contrib/cors v1.7.5 => v1.7.6
- github.com/minio/minio-go/v7 v7.0.92 => v7.0.94
- github.com/spf13/cast v1.8.0 => v1.9.2
- github.com/uptrace/bun{,/*} v1.2.11 => v1.2.14
- golang.org/x/image v0.27.0 => v0.28.0
- golang.org/x/net v0.40.0 => v0.41.0
- code.superseriousbusiness.org/go-swagger v0.31.0-gts-go1.23-fix => v0.32.3-gts-go1.23-fix
Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4304
Co-authored-by: kim <grufwub@gmail.com>
Co-committed-by: kim <grufwub@gmail.com>
		
	
			
		
			
				
	
	
		
			97 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright (c) 2012-2020 Ugorji Nwoke. All rights reserved.
 | 
						|
// Use of this source code is governed by a MIT license found in the LICENSE file.
 | 
						|
 | 
						|
package codec
 | 
						|
 | 
						|
import (
 | 
						|
	"reflect"
 | 
						|
)
 | 
						|
 | 
						|
const (
 | 
						|
	_               uint8 = iota
 | 
						|
	simpleVdNil           = 1
 | 
						|
	simpleVdFalse         = 2
 | 
						|
	simpleVdTrue          = 3
 | 
						|
	simpleVdFloat32       = 4
 | 
						|
	simpleVdFloat64       = 5
 | 
						|
 | 
						|
	// each lasts for 4 (ie n, n+1, n+2, n+3)
 | 
						|
	simpleVdPosInt = 8
 | 
						|
	simpleVdNegInt = 12
 | 
						|
 | 
						|
	simpleVdTime = 24
 | 
						|
 | 
						|
	// containers: each lasts for 8 (ie n, n+1, n+2, ... n+7)
 | 
						|
	simpleVdString    = 216
 | 
						|
	simpleVdByteArray = 224
 | 
						|
	simpleVdArray     = 232
 | 
						|
	simpleVdMap       = 240
 | 
						|
	simpleVdExt       = 248
 | 
						|
)
 | 
						|
 | 
						|
var simpledescNames = map[byte]string{
 | 
						|
	simpleVdNil:     "null",
 | 
						|
	simpleVdFalse:   "false",
 | 
						|
	simpleVdTrue:    "true",
 | 
						|
	simpleVdFloat32: "float32",
 | 
						|
	simpleVdFloat64: "float64",
 | 
						|
 | 
						|
	simpleVdPosInt: "+int",
 | 
						|
	simpleVdNegInt: "-int",
 | 
						|
 | 
						|
	simpleVdTime: "time",
 | 
						|
 | 
						|
	simpleVdString:    "string",
 | 
						|
	simpleVdByteArray: "binary",
 | 
						|
	simpleVdArray:     "array",
 | 
						|
	simpleVdMap:       "map",
 | 
						|
	simpleVdExt:       "ext",
 | 
						|
}
 | 
						|
 | 
						|
func simpledesc(bd byte) (s string) {
 | 
						|
	s = simpledescNames[bd]
 | 
						|
	if s == "" {
 | 
						|
		s = "unknown"
 | 
						|
	}
 | 
						|
	return
 | 
						|
}
 | 
						|
 | 
						|
//------------------------------------
 | 
						|
 | 
						|
// SimpleHandle is a Handle for a very simple encoding format.
 | 
						|
//
 | 
						|
// simple is a simplistic codec similar to binc, but not as compact.
 | 
						|
//   - Encoding of a value is always preceded by the descriptor byte (bd)
 | 
						|
//   - True, false, nil are encoded fully in 1 byte (the descriptor)
 | 
						|
//   - Integers (intXXX, uintXXX) are encoded in 1, 2, 4 or 8 bytes (plus a descriptor byte).
 | 
						|
//     There are positive (uintXXX and intXXX >= 0) and negative (intXXX < 0) integers.
 | 
						|
//   - Floats are encoded in 4 or 8 bytes (plus a descriptor byte)
 | 
						|
//   - Length of containers (strings, bytes, array, map, extensions)
 | 
						|
//     are encoded in 0, 1, 2, 4 or 8 bytes.
 | 
						|
//     Zero-length containers have no length encoded.
 | 
						|
//     For others, the number of bytes is given by pow(2, bd%3)
 | 
						|
//   - maps are encoded as [bd] [length] [[key][value]]...
 | 
						|
//   - arrays are encoded as [bd] [length] [value]...
 | 
						|
//   - extensions are encoded as [bd] [length] [tag] [byte]...
 | 
						|
//   - strings/bytearrays are encoded as [bd] [length] [byte]...
 | 
						|
//   - time.Time are encoded as [bd] [length] [byte]...
 | 
						|
//
 | 
						|
// The full spec will be published soon.
 | 
						|
type SimpleHandle struct {
 | 
						|
	binaryEncodingType
 | 
						|
	notJsonType
 | 
						|
	BasicHandle
 | 
						|
 | 
						|
	// EncZeroValuesAsNil says to encode zero values for numbers, bool, string, etc as nil
 | 
						|
	EncZeroValuesAsNil bool
 | 
						|
}
 | 
						|
 | 
						|
// Name returns the name of the handle: simple
 | 
						|
func (h *SimpleHandle) Name() string { return "simple" }
 | 
						|
 | 
						|
func (h *SimpleHandle) desc(bd byte) string { return simpledesc(bd) }
 | 
						|
 | 
						|
// SetBytesExt sets an extension
 | 
						|
func (h *SimpleHandle) SetBytesExt(rt reflect.Type, tag uint64, ext BytesExt) (err error) {
 | 
						|
	return h.SetExt(rt, tag, makeExt(ext))
 | 
						|
}
 |