X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Ftypes%2Fcpp_exp.c;h=6b21b75ec6f281e361d603cd64c8c9dbe3f48a02;hp=aa70c639df763955c5cea756c618dc150490218c;hb=93d6b7f962a82b725d1918684297d68221b0b733;hpb=a0f437f26cd0f121ee911a55327a68a3544bf15f diff --git a/src/types/cpp_exp.c b/src/types/cpp_exp.c index aa70c63..6b21b75 100644 --- a/src/types/cpp_exp.c +++ b/src/types/cpp_exp.c @@ -23,12 +23,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *******************************************************************************/ -#include "php_psi_stdinc.h" +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# include "php_config.h" +#endif #include #include "data.h" #include "cpp.h" +#include "debug.h" struct psi_cpp_exp *psi_cpp_exp_init(token_t type, void *data) { @@ -46,6 +51,7 @@ struct psi_cpp_exp *psi_cpp_exp_init(token_t type, void *data) exp->data.tok = data; break; case PSI_T_DEFINE: + case PSI_T_PRAGMA: exp->data.decl = data; break; case PSI_T_IF: @@ -54,7 +60,6 @@ struct psi_cpp_exp *psi_cpp_exp_init(token_t type, void *data) break; case PSI_T_ENDIF: case PSI_T_ELSE: - case PSI_T_PRAGMA_ONCE: break; default: assert(0); @@ -82,6 +87,7 @@ void psi_cpp_exp_free(struct psi_cpp_exp **exp_ptr) psi_token_free(&exp->data.tok); break; case PSI_T_DEFINE: + case PSI_T_PRAGMA: psi_cpp_macro_decl_free(&exp->data.decl); break; case PSI_T_IF: @@ -126,6 +132,7 @@ void psi_cpp_exp_dump(struct psi_dump *dump, struct psi_cpp_exp *exp) } break; case PSI_T_DEFINE: + case PSI_T_PRAGMA: psi_cpp_macro_decl_dump(dump, exp->data.decl); break; case PSI_T_IF: @@ -213,6 +220,11 @@ void psi_cpp_exp_exec(struct psi_cpp_exp *exp, struct psi_cpp *cpp, struct psi_d exp->data.decl = NULL; } break; + case PSI_T_PRAGMA: + if (!cpp->skip) { + psi_cpp_pragma(cpp, exp->data.decl); + } + break; case PSI_T_IFDEF: ++cpp->level; if (!cpp->skip) {