-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patherrors.go
More file actions
91 lines (81 loc) · 1.99 KB
/
Copy patherrors.go
File metadata and controls
91 lines (81 loc) · 1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// Copyright 2026 The go-simdutf Authors.
//
// 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 simdutf
// Ported from simdutf commit 611becc2a08c27a4edc77d9a45ff74c97130129b,
// include/simdutf/error.h:7-124.
type ErrorCode uint8
const (
Success ErrorCode = iota
HeaderBits
TooShort
TooLong
Overlong
TooLarge
Surrogate
InvalidBase64Character
Base64InputRemainder
Base64ExtraBits
OutputBufferTooSmall
Other
)
func ErrorToString(code ErrorCode) string {
switch code {
case Success:
return "SUCCESS"
case HeaderBits:
return "HEADER_BITS"
case TooShort:
return "TOO_SHORT"
case TooLong:
return "TOO_LONG"
case Overlong:
return "OVERLONG"
case TooLarge:
return "TOO_LARGE"
case Surrogate:
return "SURROGATE"
case InvalidBase64Character:
return "INVALID_BASE64_CHARACTER"
case Base64InputRemainder:
return "BASE64_INPUT_REMAINDER"
case Base64ExtraBits:
return "BASE64_EXTRA_BITS"
case OutputBufferTooSmall:
return "OUTPUT_BUFFER_TOO_SMALL"
default:
return "OTHER"
}
}
type Result struct {
Error ErrorCode
Count int
}
func (result Result) IsOK() bool {
return result.Error == Success
}
func (result Result) IsErr() bool {
return result.Error != Success
}
type FullResult struct {
Error ErrorCode
InputCount int
OutputCount int
PaddingError bool
}
func (result FullResult) Result() Result {
if result.Error == Success {
return Result{Error: result.Error, Count: result.OutputCount}
}
return Result{Error: result.Error, Count: result.InputCount}
}