diff options
| author | spicyjpeg <thatspicyjpeg@gmail.com> | 2023-05-11 19:11:35 +0200 |
|---|---|---|
| committer | spicyjpeg <thatspicyjpeg@gmail.com> | 2023-05-11 19:11:35 +0200 |
| commit | 3b696fc431a9c3f2aa7ea4f27aec20ce5dd67859 (patch) | |
| tree | 3cf2dc24f38ad1b532f0ec913c3604d334e79872 /libpsn00b/include | |
| parent | ca6b54f3c15a7b00a5ede64ba452f2955a421a1e (diff) | |
| download | psn00bsdk-3b696fc431a9c3f2aa7ea4f27aec20ce5dd67859.tar.gz | |
Add C++ standard library headers, update beginner/cppdemo
Diffstat (limited to 'libpsn00b/include')
| -rw-r--r-- | libpsn00b/include/cassert | 8 | ||||
| -rw-r--r-- | libpsn00b/include/cctype | 22 | ||||
| -rw-r--r-- | libpsn00b/include/cstdint | 34 | ||||
| -rw-r--r-- | libpsn00b/include/cstdio | 32 | ||||
| -rw-r--r-- | libpsn00b/include/cstdlib | 59 | ||||
| -rw-r--r-- | libpsn00b/include/cstring | 38 |
6 files changed, 193 insertions, 0 deletions
diff --git a/libpsn00b/include/cassert b/libpsn00b/include/cassert new file mode 100644 index 0000000..0923486 --- /dev/null +++ b/libpsn00b/include/cassert @@ -0,0 +1,8 @@ +/* + * PSn00bSDK assert macro and internal logging + * (C) 2022-2023 spicyjpeg - MPL licensed + */ + +#pragma once + +#include <assert.h> diff --git a/libpsn00b/include/cctype b/libpsn00b/include/cctype new file mode 100644 index 0000000..b73ad34 --- /dev/null +++ b/libpsn00b/include/cctype @@ -0,0 +1,22 @@ +/* + * PSn00bSDK standard library + * (C) 2019-2023 PSXSDK authors, Lameguy64, spicyjpeg - MPL licensed + */ + +#pragma once + +namespace std { +extern "C" { + +int isprint(int ch); +int isgraph(int ch); +int isspace(int ch); +int isblank(int ch); +int isalpha(int ch); +int isdigit(int ch); + +int tolower(int ch); +int toupper(int ch); + +} +} diff --git a/libpsn00b/include/cstdint b/libpsn00b/include/cstdint new file mode 100644 index 0000000..3b1bc4a --- /dev/null +++ b/libpsn00b/include/cstdint @@ -0,0 +1,34 @@ +/* + * PSn00bSDK standard library + * (C) 2019-2023 Lameguy64, spicyjpeg - MPL licensed + * + * This is a replacement for the <cstdint> header included with GCC, which seems + * to be broken (at least in GCC 12.2.0) as it requires some macros to be set. + */ + +#pragma once + +#include <stdint.h> + +namespace std { + +#define _DEF_TYPE(bits, prefix) \ + using ::prefix##bits##_t; \ + using ::prefix##_fast##bits##_t; \ + using ::prefix##_least##bits##_t; + +_DEF_TYPE( 8, int) +_DEF_TYPE( 8, uint) +_DEF_TYPE(16, int) +_DEF_TYPE(16, uint) +_DEF_TYPE(32, int) +_DEF_TYPE(32, uint) + +#undef _DEF_TYPE + +using ::intmax_t; +using ::uintmax_t; +using ::intptr_t; +using ::uintptr_t; + +} diff --git a/libpsn00b/include/cstdio b/libpsn00b/include/cstdio new file mode 100644 index 0000000..800d1a2 --- /dev/null +++ b/libpsn00b/include/cstdio @@ -0,0 +1,32 @@ +/* + * PSn00bSDK standard library + * (C) 2019-2023 Lameguy64, spicyjpeg - MPL licensed + */ + +#pragma once + +#include <cstdarg> + +namespace std { +extern "C" { + +/* String I/O API (provided by BIOS) */ + +int printf(const char *fmt, ...); +char *gets(char *str); +void puts(const char *str); +int getchar(void); +void putchar(int ch); + +/* String formatting API (built-in) */ + +int vsnprintf(char *string, unsigned int size, const char *fmt, va_list ap); +int vsprintf(char *string, const char *fmt, va_list ap); +int sprintf(char *string, const char *fmt, ...); +int snprintf(char *string, unsigned int size, const char *fmt, ...); + +int vsscanf(const char *str, const char *format, va_list ap); +int sscanf(const char *str, const char *fmt, ...); + +} +} diff --git a/libpsn00b/include/cstdlib b/libpsn00b/include/cstdlib new file mode 100644 index 0000000..4fa859d --- /dev/null +++ b/libpsn00b/include/cstdlib @@ -0,0 +1,59 @@ +/* + * PSn00bSDK standard library + * (C) 2019-2023 PSXSDK authors, Lameguy64, spicyjpeg - MPL licensed + */ + +#pragma once + +#include <cstddef> + +namespace std { + +/* Definitions */ + +static constexpr int RAND_MAX = 0x7fff; + +/* Structure definitions */ + +struct HeapUsage { + size_t total; // Total size of heap + stack + size_t heap; // Amount of memory currently reserved for heap + size_t stack; // Amount of memory currently reserved for stack + size_t alloc; // Amount of memory currently allocated + size_t alloc_max; // Maximum amount of memory ever allocated +}; + +/* API */ + +extern "C" { + +extern int __argc; +extern const char **__argv; + +void abort(void); + +int rand(void); +void srand(int seed); + +int abs(int j); +long labs(long i); + +long strtol(const char *str, char **str_end, int base); +long long strtoll(const char *str, char **str_end, int base); +//float strtof(const char *str, char **str_end); +//double strtod(const char *str, char **str_end); +//long double strtold(const char *str, char **str_end); + +void InitHeap(void *addr, size_t size); +void *sbrk(ptrdiff_t incr); + +void TrackHeapUsage(ptrdiff_t alloc_incr); +void GetHeapUsage(HeapUsage *usage); + +void *malloc(size_t size); +void *calloc(size_t num, size_t size); +void *realloc(void *ptr, size_t size); +void free(void *ptr); + +} +} diff --git a/libpsn00b/include/cstring b/libpsn00b/include/cstring new file mode 100644 index 0000000..1ce7246 --- /dev/null +++ b/libpsn00b/include/cstring @@ -0,0 +1,38 @@ +/* + * PSn00bSDK standard library + * (C) 2019-2023 PSXSDK authors, Lameguy64, spicyjpeg - MPL licensed + */ + +#pragma once + +#include <cstddef> + +namespace std { +extern "C" { + +void *memset(void *dest, int ch, size_t count); +void *memcpy(void *dest, const void *src, size_t count); +void *memccpy(void *dest, const void *src, int ch, size_t count); +void *memmove(void *dest, const void *src, size_t count); +int memcmp(const void *lhs, const void *rhs, size_t count); +void *memchr(const void *ptr, int ch, size_t count); + +char *strcpy(char *dest, const char *src); +char *strncpy(char *dest, const char *src, size_t count); +int strcmp(const char *lhs, const char *rhs); +int strncmp(const char *lhs, const char *rhs, size_t count); +char *strchr(const char *str, int ch); +char *strrchr(const char *str, int ch); +char *strpbrk(const char *str, const char *breakset); +char *strstr(const char *str, const char *substr); + +size_t strlen(const char *str); +char *strcat(char *dest, const char *src); +char *strncat(char *dest, const char *src, size_t count); +char *strdup(const char *str); +char *strndup(const char *str, size_t count); + +char *strtok(char *str, const char *delim); + +} +} |
