X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=idl%2Ftypes.h;h=e3a0eade8eb133cbabb9406f2fea54e0c97bdf39;hp=7225b5d7966f847e043778e2fc27882e34ee7db4;hb=ca787916893fd2124a4dd72d326e3435fad5b9c8;hpb=059fffcaee65cf92b95bdbe91e5a156b89b2cf71 diff --git a/idl/types.h b/idl/types.h index 7225b5d..e3a0ead 100644 --- a/idl/types.h +++ b/idl/types.h @@ -1,17 +1,12 @@ -typedef struct PSI_Data { - decl_typedefs *defs; - decls *decls; - impls *impls; - char *lib; - char *fn; -} PSI_Data; -static inline void PSI_DataExchange(PSI_Data *dest, PSI_Data *src) { - memcpy(dest, src, sizeof(*dest)); - memset(src, 0, sizeof(*src)); -} +typedef int token_t; -struct decl_typedef; +typedef struct PSI_Token { + token_t type; + unsigned line; + size_t size; + char text[1]; +} PSI_Token; typedef struct decl_type { char *name; @@ -592,3 +587,31 @@ static void free_impls(impls *impls) { free(impls->list); free(impls); } + +typedef struct PSI_Data { + decl_typedefs *defs; + decls *decls; + impls *impls; + char *lib; + char *fn; +} PSI_Data; + +EXPORT static inline void PSI_DataExchange(PSI_Data *dest, PSI_Data *src) { + memcpy(dest, src, sizeof(*dest)); + memset(src, 0, sizeof(*src)); +} + +EXPORT static inline void PSI_DataDtor(PSI_Data *data) { + if (data->defs) { + free_decl_typedefs(data->defs); + } + if (data->decls) { + free_decls(data->decls); + } + if (data->impls) { + free_impls(data->impls); + } + if (data->fn) { + free(data->fn); + } +}