basic support for builtins
[m6w6/ext-psi] / src / types / number.h
index cc5923ee4d46132aa490a75a373de2fa7692cd2a..b2a61cc9f2d91329733a35d5346bb70eba4919c1 100644 (file)
@@ -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;
@@ -77,11 +79,13 @@ void psi_number_free(struct psi_number **exp_ptr);
 void psi_number_dump(int fd, 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