Mercurial
comparison third_party/luajit/src/lj_cparse.h @ 178:94705b5986b3
[ThirdParty] Added WRK and luajit for load testing.
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Thu, 22 Jan 2026 20:10:30 -0800 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 177:24fe8ff94056 | 178:94705b5986b3 |
|---|---|
| 1 /* | |
| 2 ** C declaration parser. | |
| 3 ** Copyright (C) 2005-2023 Mike Pall. See Copyright Notice in luajit.h | |
| 4 */ | |
| 5 | |
| 6 #ifndef _LJ_CPARSE_H | |
| 7 #define _LJ_CPARSE_H | |
| 8 | |
| 9 #include "lj_obj.h" | |
| 10 #include "lj_ctype.h" | |
| 11 | |
| 12 #if LJ_HASFFI | |
| 13 | |
| 14 /* C parser limits. */ | |
| 15 #define CPARSE_MAX_BUF 32768 /* Max. token buffer size. */ | |
| 16 #define CPARSE_MAX_DECLSTACK 100 /* Max. declaration stack depth. */ | |
| 17 #define CPARSE_MAX_DECLDEPTH 20 /* Max. recursive declaration depth. */ | |
| 18 #define CPARSE_MAX_PACKSTACK 7 /* Max. pack pragma stack depth. */ | |
| 19 | |
| 20 /* Flags for C parser mode. */ | |
| 21 #define CPARSE_MODE_MULTI 1 /* Process multiple declarations. */ | |
| 22 #define CPARSE_MODE_ABSTRACT 2 /* Accept abstract declarators. */ | |
| 23 #define CPARSE_MODE_DIRECT 4 /* Accept direct declarators. */ | |
| 24 #define CPARSE_MODE_FIELD 8 /* Accept field width in bits, too. */ | |
| 25 #define CPARSE_MODE_NOIMPLICIT 16 /* Reject implicit declarations. */ | |
| 26 #define CPARSE_MODE_SKIP 32 /* Skip definitions, ignore errors. */ | |
| 27 | |
| 28 typedef int CPChar; /* C parser character. Unsigned ext. from char. */ | |
| 29 typedef int CPToken; /* C parser token. */ | |
| 30 | |
| 31 /* C parser internal value representation. */ | |
| 32 typedef struct CPValue { | |
| 33 union { | |
| 34 int32_t i32; /* Value for CTID_INT32. */ | |
| 35 uint32_t u32; /* Value for CTID_UINT32. */ | |
| 36 }; | |
| 37 CTypeID id; /* C Type ID of the value. */ | |
| 38 } CPValue; | |
| 39 | |
| 40 /* C parser state. */ | |
| 41 typedef struct CPState { | |
| 42 CPChar c; /* Current character. */ | |
| 43 CPToken tok; /* Current token. */ | |
| 44 CPValue val; /* Token value. */ | |
| 45 GCstr *str; /* Interned string of identifier/keyword. */ | |
| 46 CType *ct; /* C type table entry. */ | |
| 47 const char *p; /* Current position in input buffer. */ | |
| 48 SBuf sb; /* String buffer for tokens. */ | |
| 49 lua_State *L; /* Lua state. */ | |
| 50 CTState *cts; /* C type state. */ | |
| 51 TValue *param; /* C type parameters. */ | |
| 52 const char *srcname; /* Current source name. */ | |
| 53 BCLine linenumber; /* Input line counter. */ | |
| 54 int depth; /* Recursive declaration depth. */ | |
| 55 uint32_t tmask; /* Type mask for next identifier. */ | |
| 56 uint32_t mode; /* C parser mode. */ | |
| 57 uint8_t packstack[CPARSE_MAX_PACKSTACK]; /* Stack for pack pragmas. */ | |
| 58 uint8_t curpack; /* Current position in pack pragma stack. */ | |
| 59 } CPState; | |
| 60 | |
| 61 LJ_FUNC int lj_cparse(CPState *cp); | |
| 62 | |
| 63 LJ_FUNC int lj_cparse_case(GCstr *str, const char *match); | |
| 64 | |
| 65 #endif | |
| 66 | |
| 67 #endif |