29 lines
946 B
C
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])); }
|