Files
spl/stage1/spl_builtin.c
2026-08-06 19:26:30 +08:00

29 lines
946 B
C

/* 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])); }