X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Ftypes%2Fnumber.h;h=5d73b5e420a750b0cfbff5f1256e884c92355246;hb=698841dfdd4d70d24e0b7af25ac7100bc2cb26a4;hp=cc5923ee4d46132aa490a75a373de2fa7692cd2a;hpb=ba906e039ffe9e57842ce5135aa43efa00b8a4c6;p=m6w6%2Fext-psi diff --git a/src/types/number.h b/src/types/number.h index cc5923e..5d73b5e 100644 --- a/src/types/number.h +++ b/src/types/number.h @@ -26,9 +26,9 @@ #ifndef PSI_TYPES_NUMBER_H #define PSI_TYPES_NUMBER_H - struct psi_data; struct psi_token; +struct psi_cpp; struct psi_impl; struct psi_const; struct psi_decl_enum_item; @@ -36,6 +36,7 @@ struct psi_let_exp; struct psi_set_exp; struct psi_call_frame; struct psi_cpp_macro_call; +struct psi_validate_scope; enum psi_number_suffix { PSI_NUMBER_U = 0x0100, @@ -62,10 +63,11 @@ struct psi_number { token_t type; unsigned flags; union { - char *numb; + zend_string *numb; impl_val ival; struct psi_const *cnst; struct psi_decl_var *dvar; + struct psi_decl_type *dtyp; struct psi_decl_enum_item *enm; struct psi_cpp_macro_call *call; } data; @@ -74,14 +76,16 @@ struct psi_number { struct psi_number *psi_number_init(token_t t, void *num, unsigned flags); struct psi_number *psi_number_copy(struct psi_number *exp); void psi_number_free(struct psi_number **exp_ptr); -void psi_number_dump(int fd, struct psi_number *exp); +void psi_number_dump(struct psi_dump *dump, struct psi_number *exp); bool psi_number_validate(struct psi_data *data, struct psi_number *exp, - struct psi_impl *impl, struct psi_decl *cb_decl, - struct psi_let_exp *current_let, struct psi_set_exp *current_set, - struct psi_decl_enum *current_enum); + struct psi_validate_scope *scope); token_t psi_number_eval(struct psi_number *exp, impl_val *res, - struct psi_call_frame *frame, HashTable *defs); + struct psi_call_frame *frame, struct psi_cpp *cpp, + struct psi_num_exp *rec_guard); + +struct psi_plist *psi_number_tokens(struct psi_number *exp, + struct psi_plist *list); #endif