author | unC0Rr |
Sat, 28 Sep 2024 22:27:13 +0200 | |
changeset 16037 | 2b4f361e3891 |
parent 15361 | 5c0479d0ed5b |
permissions | -rw-r--r-- |
10015 | 1 |
#ifndef _FPCRTL_MISC_H_ |
2 |
#define _FPCRTL_MISC_H_ |
|
3 |
||
4 |
#include "pas2c.h" |
|
5 |
#include <assert.h> |
|
6 |
#include <stdbool.h> |
|
7 |
||
15361
5c0479d0ed5b
Remove last vestiges of GLEW
raptor <buckyballreaction@gmail.com>
parents:
14159
diff
changeset
|
8 |
#include "GL.h" |
10015 | 9 |
|
10 |
#define VA_NUM_ARGS(...) VA_NUM_ARGS_IMPL(__VA_ARGS__, 5,4,3,2,1) |
|
11 |
#define VA_NUM_ARGS_IMPL(_1,_2,_3,_4,_5,N,...) N |
|
12 |
||
13 |
#define macro_dispatcher(func, ...) macro_dispatcher_(func, VA_NUM_ARGS(__VA_ARGS__)) |
|
14 |
#define macro_dispatcher_(func, nargs) macro_dispatcher__(func, nargs) |
|
15 |
#define macro_dispatcher__(func, nargs) func ## nargs |
|
16 |
||
10128 | 17 |
//#define FPCRTL_DEBUG |
10015 | 18 |
|
14159 | 19 |
#define FIX_STRING(s) do { s.str[s.len == 255 ? 254 : s.len] = 0; } while (0) |
20 |
#define FIX_STRINGA(s) do { s.str[s.len == MAX_ANSISTRING_LENGTH ? MAX_ANSISTRING_LENGTH - 1 : s.len] = 0; } while (0) |
|
10015 | 21 |
//#define fpcrtl_check_string(s) do{ if(strlen((s).str) != (s).len){ \ |
22 |
// printf("String %s internal inconsistency error. Length should be %d but actually is %d.\n", (s).str, strlen((s).str), (s).len); \ |
|
23 |
// assert(0);\ |
|
24 |
// }}while(0) |
|
25 |
||
26 |
void fpcrtl_assert(int); |
|
27 |
void fpcrtl_print_trace (void); |
|
28 |
||
29 |
int fpcrtl_round(double number); |
|
30 |
void fpcrtl_printf(const char* format, ...); |
|
31 |
||
32 |
string255 fpcrtl_make_string(const char* s); |
|
33 |
||
34 |
string255 fpcrtl_strconcat(string255 str1, string255 str2); |
|
35 |
string255 fpcrtl_strappend(string255 s, char c); |
|
36 |
string255 fpcrtl_strprepend(char c, string255 s); |
|
37 |
string255 fpcrtl_chrconcat(char a, char b); |
|
38 |
||
10124
aabd1b75d5a3
Even more explicit type conversions and other stuff to help pas2c use ansistrings
unc0rr
parents:
10121
diff
changeset
|
39 |
astring fpcrtl_strconcatA(astring str1, astring str2); |
10128 | 40 |
astring fpcrtl_strappendA(astring s, char c); |
10124
aabd1b75d5a3
Even more explicit type conversions and other stuff to help pas2c use ansistrings
unc0rr
parents:
10121
diff
changeset
|
41 |
|
10015 | 42 |
// return true if str1 == str2 |
43 |
bool fpcrtl_strcompare(string255 str1, string255 str2); |
|
44 |
bool fpcrtl_strcomparec(string255 a, char b); |
|
45 |
bool fpcrtl_strncompare(string255 a, string255 b); |
|
10127 | 46 |
bool fpcrtl_strncompareA(astring a, astring b); |
10015 | 47 |
|
10128 | 48 |
#define fpcrtl__pchar(s) fpcrtl__pchar__vars(&(s)) |
49 |
#define fpcrtl__pcharA(s) fpcrtl__pcharA__vars(&(s)) |
|
10131
4b4a043111f4
- pas2c recognizes typecasts in initialization expressions
unc0rr
parents:
10129
diff
changeset
|
50 |
char* fpcrtl__pchar__vars(const string255 * s); |
10129
cd2a64a1f4aa
- Pas2C: make use of 'external' function decorator
unc0rr
parents:
10128
diff
changeset
|
51 |
char* fpcrtl__pcharA__vars(astring * s); |
10128 | 52 |
string255 fpcrtl_pchar2str(const char *s); |
53 |
astring fpcrtl_pchar2astr(const char *s); |
|
10131
4b4a043111f4
- pas2c recognizes typecasts in initialization expressions
unc0rr
parents:
10129
diff
changeset
|
54 |
astring fpcrtl_str2astr(const string255 s); |
4b4a043111f4
- pas2c recognizes typecasts in initialization expressions
unc0rr
parents:
10129
diff
changeset
|
55 |
string255 fpcrtl_astr2str(const astring s); |
10015 | 56 |
#define fpcrtl_TypeInfo sizeof // dummy |
57 |
||
58 |
#endif |