diff options
| author | Mistivia <i@mistivia.com> | 2025-06-24 19:50:12 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-06-24 19:50:12 +0800 |
| commit | a19d0c8bc99948af39b43cc8291abfa89e5a57f8 (patch) | |
| tree | 3c29d474b6e93c85190c5758af88b470eca5e9af /src/sexp.h | |
| parent | ec5910bea4db98b40db374a2484380fe1892c563 (diff) | |
add list funcs
Diffstat (limited to 'src/sexp.h')
| -rw-r--r-- | src/sexp.h | 14 |
1 files changed, 12 insertions, 2 deletions
@@ -75,6 +75,14 @@ typedef enum { kTailcallSExp, } SExpType; +VECTOR_DEF(SExpRef); + +typedef struct { + SExpRef type; + void (*free)(void *self); + void (*gcmark)(SExpRefVector *gcstack, void *self); +} LispUserdataMeta; + struct sexp { bool marked; SExpType type; @@ -84,7 +92,10 @@ struct sexp { bool boolean; char character; const char *str; - const void *userdata; + struct { + const void *userdata; + LispUserdataMeta *userdata_meta; + }; SExpPair pair; SExpFunc func; LispUserFunc userfunc; @@ -101,7 +112,6 @@ void SExp_show(SExp self, FILE* fp); void SExpRef_show(SExpRef self, FILE* fp); VECTOR_DEF(SExp); -VECTOR_DEF(SExpRef); #endif |
