podman

Форк
0
65 строк · 1.7 Кб
1
/*
2
 * Copyright 2021 ByteDance Inc.
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at
7
 *
8
 *     http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16

17
package encoder
18

19
import (
20
    `encoding/json`
21
    `fmt`
22
    `reflect`
23
    `strconv`
24
    `unsafe`
25

26
    `github.com/bytedance/sonic/internal/rt`
27
)
28

29
var _ERR_too_deep = &json.UnsupportedValueError {
30
    Str   : "Value nesting too deep",
31
    Value : reflect.ValueOf("..."),
32
}
33

34
var _ERR_nan_or_infinite = &json.UnsupportedValueError {
35
    Str   : "NaN or ±Infinite",
36
    Value : reflect.ValueOf("NaN or ±Infinite"),
37
}
38

39
func error_type(vtype reflect.Type) error {
40
    return &json.UnsupportedTypeError{Type: vtype}
41
}
42

43
func error_number(number json.Number) error {
44
    return &json.UnsupportedValueError {
45
        Str   : "invalid number literal: " + strconv.Quote(string(number)),
46
        Value : reflect.ValueOf(number),
47
    }
48
}
49

50
func error_marshaler(ret []byte, pos int) error {
51
    return fmt.Errorf("invalid Marshaler output json syntax at %d: %q", pos, ret)
52
}
53

54
const (
55
    panicNilPointerOfNonEmptyString int = 1 + iota
56
)
57

58
func goPanic(code int, val unsafe.Pointer) {
59
    switch(code){
60
    case panicNilPointerOfNonEmptyString:
61
        panic(fmt.Sprintf("val: %#v has nil pointer while its length is not zero!", (*rt.GoString)(val)))
62
    default:
63
        panic("encoder error!")
64
    }
65
}
66

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.