REpsp2
PSP2 OS reverse engineering
Loading...
Searching...
No Matches
sysclib.c
Go to the documentation of this file.
1
2
#include <
sysmem/sysclib.h
>
3
4
/* ctype.h implementation */
5
#define NUM_ASCII_CHARS 128
6
#define IS_ASCII(ch) ((0 <= (ch)) && ((ch) < NUM_ASCII_CHARS))
7
8
static
const
unsigned
char
ctype_table[
NUM_ASCII_CHARS
] = {
9
/* 0x00~0x08: control codes */
10
CTYPE_CONTROL
,
CTYPE_CONTROL
,
CTYPE_CONTROL
,
11
CTYPE_CONTROL
,
CTYPE_CONTROL
,
CTYPE_CONTROL
,
12
CTYPE_CONTROL
,
CTYPE_CONTROL
,
CTYPE_CONTROL
,
13
14
/* 0x09~0x0D: tab + whitespaces */
15
CTYPE_SPACE
,
// 0x09: \t
16
CTYPE_SPACE
,
// 0x0A: \n
17
CTYPE_SPACE
,
// 0x0B: \v
18
CTYPE_SPACE
,
// 0x0C: \f
19
CTYPE_SPACE
,
// 0x0D: \r
20
21
/* 0x0E~0x1F: control codes */
22
CTYPE_CONTROL
,
CTYPE_CONTROL
,
CTYPE_CONTROL
,
23
CTYPE_CONTROL
,
CTYPE_CONTROL
,
CTYPE_CONTROL
,
24
CTYPE_CONTROL
,
CTYPE_CONTROL
,
CTYPE_CONTROL
,
25
CTYPE_CONTROL
,
CTYPE_CONTROL
,
CTYPE_CONTROL
,
26
CTYPE_CONTROL
,
CTYPE_CONTROL
,
CTYPE_CONTROL
,
27
CTYPE_CONTROL
,
CTYPE_CONTROL
,
CTYPE_CONTROL
,
28
29
/* 0x20: space */
30
(
CTYPE_PUNCT
|
CTYPE_SPACE
),
// bug(?): space is also punctuation?
31
32
/* 0x21~0x2F: punctuation */
33
CTYPE_PUNCT
,
// 0x21: !
34
CTYPE_PUNCT
,
// 0x22: "
35
CTYPE_PUNCT
,
// 0x23: #
36
CTYPE_PUNCT
,
// 0x24: $
37
CTYPE_PUNCT
,
// 0x25: %
38
CTYPE_PUNCT
,
// 0x26: &
39
CTYPE_PUNCT
,
// 0x27: '
40
CTYPE_PUNCT
,
// 0x28: (
41
CTYPE_PUNCT
,
// 0x29: )
42
CTYPE_PUNCT
,
// 0x2A: *
43
CTYPE_PUNCT
,
// 0x2B: +
44
CTYPE_PUNCT
,
// 0x2C: ,
45
CTYPE_PUNCT
,
// 0x2D: -
46
CTYPE_PUNCT
,
// 0x2E: .
47
CTYPE_PUNCT
,
// 0x2F: /
48
49
/* 0x30~0x39: digits */
50
CTYPE_DIGIT
,
// 0x30: 0
51
CTYPE_DIGIT
,
// 0x31: 1
52
CTYPE_DIGIT
,
// 0x32: 2
53
CTYPE_DIGIT
,
// 0x33: 3
54
CTYPE_DIGIT
,
// 0x34: 4
55
CTYPE_DIGIT
,
// 0x35: 5
56
CTYPE_DIGIT
,
// 0x36: 6
57
CTYPE_DIGIT
,
// 0x37: 7
58
CTYPE_DIGIT
,
// 0x38: 8
59
CTYPE_DIGIT
,
// 0x39: 9
60
61
/* 0x3A~0x40: punctuation */
62
CTYPE_PUNCT
,
// 0x3A: :
63
CTYPE_PUNCT
,
// 0x3B: ;
64
CTYPE_PUNCT
,
// 0x3C: <
65
CTYPE_PUNCT
,
// 0x3D: =
66
CTYPE_PUNCT
,
// 0x3E: >
67
CTYPE_PUNCT
,
// 0x3F: ?
68
CTYPE_PUNCT
,
// 0x40: @
69
70
/* 0x41~0x5A: uppercase letters */
71
(
CTYPE_UPPER
|
CTYPE_HEXDIGIT
),
// 0x41: A
72
(
CTYPE_UPPER
|
CTYPE_HEXDIGIT
),
// 0x42: B
73
(
CTYPE_UPPER
|
CTYPE_HEXDIGIT
),
// 0x43: C
74
(
CTYPE_UPPER
|
CTYPE_HEXDIGIT
),
// 0x44: D
75
(
CTYPE_UPPER
|
CTYPE_HEXDIGIT
),
// 0x45: E
76
(
CTYPE_UPPER
|
CTYPE_HEXDIGIT
),
// 0x46: F
77
CTYPE_UPPER
,
// 0x47: G
78
CTYPE_UPPER
,
// 0x48: H
79
CTYPE_UPPER
,
// 0x49: I
80
CTYPE_UPPER
,
// 0x4A: J
81
CTYPE_UPPER
,
// 0x4B: K
82
CTYPE_UPPER
,
// 0x4C: L
83
CTYPE_UPPER
,
// 0x4D: M
84
CTYPE_UPPER
,
// 0x4E: N
85
CTYPE_UPPER
,
// 0x4F: O
86
CTYPE_UPPER
,
// 0x50: P
87
CTYPE_UPPER
,
// 0x51: Q
88
CTYPE_UPPER
,
// 0x52: R
89
CTYPE_UPPER
,
// 0x53: S
90
CTYPE_UPPER
,
// 0x54: T
91
CTYPE_UPPER
,
// 0x55: U
92
CTYPE_UPPER
,
// 0x56: V
93
CTYPE_UPPER
,
// 0x57: W
94
CTYPE_UPPER
,
// 0x58: X
95
CTYPE_UPPER
,
// 0x59: Y
96
CTYPE_UPPER
,
// 0x5A: Z
97
98
/* 0x5B~0x60: punctuation */
99
CTYPE_PUNCT
,
// 0x5B: [
100
CTYPE_PUNCT
,
// 0x5C: \ (backslash)
101
CTYPE_PUNCT
,
// 0x5D: ]
102
CTYPE_PUNCT
,
// 0x5E: ^
103
CTYPE_PUNCT
,
// 0x5F: _
104
CTYPE_PUNCT
,
// 0x60: `
105
106
/* 0x61~0x7A: lowercase letters */
107
(
CTYPE_LOWER
|
CTYPE_HEXDIGIT
),
// 0x61: a
108
(
CTYPE_LOWER
|
CTYPE_HEXDIGIT
),
// 0x62: b
109
(
CTYPE_LOWER
|
CTYPE_HEXDIGIT
),
// 0x63: c
110
(
CTYPE_LOWER
|
CTYPE_HEXDIGIT
),
// 0x64: d
111
(
CTYPE_LOWER
|
CTYPE_HEXDIGIT
),
// 0x65: e
112
(
CTYPE_LOWER
|
CTYPE_HEXDIGIT
),
// 0x66: f
113
CTYPE_LOWER
,
// 0x67: g
114
CTYPE_LOWER
,
// 0x68: h
115
CTYPE_LOWER
,
// 0x69: i
116
CTYPE_LOWER
,
// 0x6A: j
117
CTYPE_LOWER
,
// 0x6B: k
118
CTYPE_LOWER
,
// 0x6C: l
119
CTYPE_LOWER
,
// 0x6D: m
120
CTYPE_LOWER
,
// 0x6E: n
121
CTYPE_LOWER
,
// 0x6F: o
122
CTYPE_LOWER
,
// 0x70: p
123
CTYPE_LOWER
,
// 0x71: q
124
CTYPE_LOWER
,
// 0x72: r
125
CTYPE_LOWER
,
// 0x73: s
126
CTYPE_LOWER
,
// 0x74: t
127
CTYPE_LOWER
,
// 0x75: u
128
CTYPE_LOWER
,
// 0x76: v
129
CTYPE_LOWER
,
// 0x77: w
130
CTYPE_LOWER
,
// 0x78: x
131
CTYPE_LOWER
,
// 0x79: y
132
CTYPE_LOWER
,
// 0x7A: z
133
134
/* 0x7B~0x7E: punctuation */
135
CTYPE_PUNCT
,
// 0x7B: {
136
CTYPE_PUNCT
,
// 0x7C: |
137
CTYPE_PUNCT
,
// 0x7D: }
138
CTYPE_PUNCT
,
// 0x7E: ~
139
140
/* 0x7F: control code (DEL) */
141
CTYPE_CONTROL
142
};
143
144
int
tolower
(
int
ch) {
145
if
(
IS_ASCII
(ch) && (ctype_table[ch] &
CTYPE_UPPER
) != 0)
146
return
ch + 0x20;
// 'a' - 'A' == 0x20
147
148
return
ch;
149
}
150
151
int
toupper
(
int
ch) {
152
if
(
IS_ASCII
(ch) && (ctype_table[ch] &
CTYPE_LOWER
) != 0)
153
return
ch - 0x20;
// 'a' - 'A' == 0x20
154
155
return
ch;
156
}
157
158
unsigned
look_ctype_table
(
int
ch) {
159
if
(
IS_ASCII
(ch))
160
return
ctype_table[ch];
161
162
return
0;
163
}
IS_ASCII
#define IS_ASCII(ch)
Definition
sysclib.c:6
NUM_ASCII_CHARS
#define NUM_ASCII_CHARS
Definition
sysclib.c:5
look_ctype_table
unsigned look_ctype_table(int ch)
Definition
sysclib.c:158
tolower
int tolower(int ch)
Definition
sysclib.c:144
toupper
int toupper(int ch)
Definition
sysclib.c:151
sysclib.h
CTYPE_CONTROL
#define CTYPE_CONTROL
Definition
sysclib.h:22
CTYPE_SPACE
#define CTYPE_SPACE
Definition
sysclib.h:20
CTYPE_PUNCT
#define CTYPE_PUNCT
Definition
sysclib.h:21
CTYPE_UPPER
#define CTYPE_UPPER
Definition
sysclib.h:17
CTYPE_HEXDIGIT
#define CTYPE_HEXDIGIT
Definition
sysclib.h:23
CTYPE_LOWER
#define CTYPE_LOWER
Definition
sysclib.h:18
CTYPE_DIGIT
#define CTYPE_DIGIT
Definition
sysclib.h:19
kernel
SceSysmem
sysclib.c
Generated by
1.16.1