stage1 初步实现
This commit is contained in:
28
stage1/spl_builtin.c
Normal file
28
stage1/spl_builtin.c
Normal file
@@ -0,0 +1,28 @@
|
||||
/* spl_builtin.c — 内置函数集中注册表实现 */
|
||||
|
||||
#include "spl_builtin.h"
|
||||
#include "../stage0/include/utils.h"
|
||||
#include <string.h>
|
||||
|
||||
static const spl_builtin_t k_builtins[] = {
|
||||
{"sizeof", SPL_BUILTIN_SIZE_OF, 1, 1, 0},
|
||||
{"bitsizeof", SPL_BUILTIN_BITSIZE_OF, 1, 1, 0},
|
||||
{"alignof", SPL_BUILTIN_ALIGN_OF, 1, 1, 0},
|
||||
{"offsetof", SPL_BUILTIN_OFFSET_OF, 2, 2, 0},
|
||||
{"field_count", SPL_BUILTIN_FIELD_COUNT, 1, 1, 0},
|
||||
{"dbg", SPL_BUILTIN_DBG, 0, -1, 1},
|
||||
{"assert", SPL_BUILTIN_ASSERT, 1, 1, 1},
|
||||
{"import", SPL_BUILTIN_IMPORT, 1, 1, 1},
|
||||
};
|
||||
|
||||
const spl_builtin_t *spl_builtin_lookup(const char *name) {
|
||||
if (!name)
|
||||
return NULL;
|
||||
for (usize i = 0; i < sizeof(k_builtins) / sizeof(k_builtins[0]); i++) {
|
||||
if (strcmp(k_builtins[i].name, name) == 0)
|
||||
return &k_builtins[i];
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int spl_builtin_count(void) { return (int)(sizeof(k_builtins) / sizeof(k_builtins[0])); }
|
||||
Reference in New Issue
Block a user