X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fcpp.h;h=9d98abddbfe9ce6e5fcb29470da2abcaef3c945c;hp=671d2da17c89927c437e9a2e4d88fce4ff29f554;hb=93d6b7f962a82b725d1918684297d68221b0b733;hpb=a0f437f26cd0f121ee911a55327a68a3544bf15f diff --git a/src/cpp.h b/src/cpp.h index 671d2da..9d98abd 100644 --- a/src/cpp.h +++ b/src/cpp.h @@ -39,7 +39,9 @@ struct psi_cpp { struct { struct psi_plist *iter; struct psi_plist *next; + struct psi_plist *exec; } tokens; + HashTable expanding; const char *search; size_t index; unsigned level; @@ -47,10 +49,13 @@ struct psi_cpp { unsigned seen; unsigned expanded; unsigned counter; + unsigned include_level; + bool do_cpp; }; struct psi_cpp *psi_cpp_init(struct psi_parser *parser); -bool psi_cpp_process(struct psi_cpp *cpp, struct psi_plist **tokens); +bool psi_cpp_process(struct psi_cpp *cpp, struct psi_plist **tokens, + struct psi_token *expanding); void psi_cpp_free(struct psi_cpp **cpp_ptr); bool psi_cpp_if(struct psi_cpp *cpp, struct psi_cpp_exp *exp); @@ -65,6 +70,8 @@ bool psi_cpp_undef(struct psi_cpp *cpp, struct psi_token *tok); bool psi_cpp_has_include(struct psi_cpp *cpp, const struct psi_token *file, unsigned flags, char *path); bool psi_cpp_include(struct psi_cpp *cpp, const struct psi_token *file, unsigned flags); +bool psi_cpp_pragma(struct psi_cpp *cpp, struct psi_cpp_macro_decl *decl); + void psi_cpp_tokiter_reset(struct psi_cpp *cpp); bool psi_cpp_tokiter_seek(struct psi_cpp *cpp, size_t index); #if PSI_CPP_DEBUG > 1