PS2SDK
PS2 Homebrew Libraries
sysclib.h
Go to the documentation of this file.
1 /*
2 # _____ ___ ____ ___ ____
3 # ____| | ____| | | |____|
4 # | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5 #-----------------------------------------------------------------------
6 # Copyright (c) 2003 Marcus R. Brown <mrbrown@0xd6.org>
7 # Licenced under Academic Free License version 2.0
8 # Review ps2sdk README & LICENSE files for further details.
9 */
10 
16 #ifndef __SYSCLIB_H__
17 #define __SYSCLIB_H__
18 
19 #include <types.h>
20 #include <irx.h>
21 #include <stdarg.h>
22 #include <setjmp.h>
23 #include <ctype.h>
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
29 typedef void (*print_callback_t)(void *context, int c);
30 
31 /* setjmp/longjmp are already defined in setjmp.h */
32 
33 /* These functions are non-standardized (IOP-only functions operating on 32-bit integers instead of wchar_t) */
34 extern void *_wmemcopy(u32 *dest, const u32 *src, size_t size);
35 extern void *_wmemset(u32 *dest, u32 c, size_t size);
36 #ifdef SYSCLIB_ENABLE_NONSTD_WIDE_MEMCOPY
37 #define wmemcopy _wmemcopy
38 #define wmemset _wmemset
39 #endif
40 
41 /* This function is non-standard. */
42 extern int prnt(print_callback_t, void *context, const char * format, va_list ap);
43 
44 /* This function is non-standard. */
45 extern char *atob(char *s, int *i);
46 
47 extern void *memchr(const void *s, int c, size_t n);
48 extern int memcmp(const void *p, const void *q, size_t size);
49 extern void * memcpy(void *dest, const void *src, size_t size);
50 extern void *memmove(void *dest, const void *src, size_t size);
51 extern void * memset(void *ptr, int c, size_t size);
52 extern int bcmp(const void *, const void *, size_t);
53 extern void bcopy(const void *, void *, size_t);
54 extern void bzero(void *, size_t);
55 extern int sprintf(char *str, const char *format, ...);
56 extern char *strcat(char *dest, const char *src);
57 extern char *strchr(const char *s, int c);
58 extern int strcmp(const char *p, const char *q);
59 extern char *strcpy(char *dest, const char *src);
60 extern size_t strcspn(const char *s, const char *reject);
61 extern char *index(const char *s, int c);
62 extern char *rindex(const char *s, int c);
63 extern size_t strlen(const char *s);
64 extern char *strncat(char *dest, const char *src, size_t size);
65 extern int strncmp(const char *p, const char *q, size_t size);
66 extern char *strncpy(char *dest, const char *src, size_t size);
67 extern char *strpbrk(const char *s, const char *accept);
68 extern char *strrchr(const char *s, int c);
69 extern size_t strspn(const char *s, const char *accept);
70 extern char *strstr(const char *haystack, const char *needle);
71 extern char *strtok(char *s, const char *delim);
72 extern long strtol(const char *s, char **endptr, int base);
73 extern unsigned long strtoul(const char *s, char **endptr, int base);
74 
75 // The following was introduced in export version 1.2 (around SDK 2.3)
76 extern int vsprintf(char *, const char *, va_list);
77 
78 // The following was introduced in export version 1.4 (around SDK 2.8)
79 extern char *strtok_r(char *s, const char *delim, char **lasts);
80 
81 #ifndef SYSCLIB_DISABLE_BUILTINS
82 #ifndef memchr
83 #define memchr __builtin_memchr
84 #endif
85 #ifndef memcmp
86 #define memcmp __builtin_memcmp
87 #endif
88 #ifndef memcpy
89 #define memcpy __builtin_memcpy
90 #endif
91 #ifndef memset
92 #define memset __builtin_memset
93 #endif
94 #ifndef bcmp
95 #define bcmp __builtin_bcmp
96 #endif
97 #ifndef bzero
98 #define bzero __builtin_bzero
99 #endif
100 #ifndef sprintf
101 #define sprintf __builtin_sprintf
102 #endif
103 #ifndef strcat
104 #define strcat __builtin_strcat
105 #endif
106 #ifndef strchr
107 #define strchr __builtin_strchr
108 #endif
109 #ifndef strcmp
110 #define strcmp __builtin_strcmp
111 #endif
112 #ifndef strcpy
113 #define strcpy __builtin_strcpy
114 #endif
115 #ifndef strcspn
116 #define strcspn __builtin_strcspn
117 #endif
118 #ifndef index
119 #define index __builtin_index
120 #endif
121 #ifndef rindex
122 #define rindex __builtin_rindex
123 #endif
124 #ifndef strlen
125 #define strlen __builtin_strlen
126 #endif
127 #ifndef strncat
128 #define strncat __builtin_strncat
129 #endif
130 #ifndef strncmp
131 #define strncmp __builtin_strncmp
132 #endif
133 #ifndef strncpy
134 #define strncpy __builtin_strncpy
135 #endif
136 #ifndef strpbrk
137 #define strpbrk __builtin_strpbrk
138 #endif
139 #ifndef strrchr
140 #define strrchr __builtin_strrchr
141 #endif
142 #ifndef strspn
143 #define strspn __builtin_strspn
144 #endif
145 #ifndef strstr
146 #define strstr __builtin_strstr
147 #endif
148 #ifndef vsprintf
149 #define vsprintf __builtin_vsprintf
150 #endif
151 #endif
152 
153 #define sysclib_IMPORTS_start DECLARE_IMPORT_TABLE(sysclib, 1, 1)
154 #define sysclib_IMPORTS_end END_IMPORT_TABLE
155 
156 #define I_setjmp DECLARE_IMPORT(4, setjmp)
157 #define I_longjmp DECLARE_IMPORT(5, longjmp)
158 #define I_toupper DECLARE_IMPORT(6, _toupper)
159 #define I_tolower DECLARE_IMPORT(7, _tolower)
160 #define I_look_ctype_table DECLARE_IMPORT(8, look_ctype_table)
161 #define I_get_ctype_table DECLARE_IMPORT(9, get_ctype_table)
162 #define I_memchr DECLARE_IMPORT(10, memchr)
163 #define I_memcmp DECLARE_IMPORT(11, memcmp)
164 #define I_memcpy DECLARE_IMPORT(12, memcpy)
165 #define I_memmove DECLARE_IMPORT(13, memmove)
166 #define I_memset DECLARE_IMPORT(14, memset)
167 #define I_bcmp DECLARE_IMPORT(15, bcmp);
168 #define I_bcopy DECLARE_IMPORT(16, bcopy);
169 #define I_bzero DECLARE_IMPORT(17, bzero);
170 #define I_prnt DECLARE_IMPORT(18, prnt)
171 #define I_sprintf DECLARE_IMPORT(19, sprintf)
172 #define I_strcat DECLARE_IMPORT(20, strcat)
173 #define I_strchr DECLARE_IMPORT(21, strchr)
174 #define I_strcmp DECLARE_IMPORT(22, strcmp)
175 #define I_strcpy DECLARE_IMPORT(23, strcpy)
176 #define I_strcspn DECLARE_IMPORT(24, strcspn)
177 #define I_index DECLARE_IMPORT(25, index)
178 #define I_rindex DECLARE_IMPORT(26, rindex)
179 #define I_strlen DECLARE_IMPORT(27, strlen)
180 #define I_strncat DECLARE_IMPORT(28, strncat)
181 #define I_strncmp DECLARE_IMPORT(29, strncmp)
182 #define I_strncpy DECLARE_IMPORT(30, strncpy)
183 #define I_strpbrk DECLARE_IMPORT(31, strpbrk)
184 #define I_strrchr DECLARE_IMPORT(32, strrchr)
185 #define I_strspn DECLARE_IMPORT(33, strspn)
186 #define I_strstr DECLARE_IMPORT(34, strstr)
187 #define I_strtok DECLARE_IMPORT(35, strtok)
188 #define I_strtol DECLARE_IMPORT(36, strtol)
189 #define I_atob DECLARE_IMPORT(37, atob)
190 #define I_strtoul DECLARE_IMPORT(38, strtoul)
191 #define I_wmemcopy DECLARE_IMPORT(40, _wmemcopy)
192 #define I_wmemset DECLARE_IMPORT(41, _wmemset)
193 #define I_vsprintf DECLARE_IMPORT(42, vsprintf)
194 #define I_strtok_r DECLARE_IMPORT(43, strtok_r)
195 
196 #ifdef __cplusplus
197 }
198 #endif
199 
200 #endif /* __SYSCLIB_H__ */
setjmp.h
ctype.h
irx.h