#define PSI_TYPES_IMPL_DEF_VAL_H
#include "token.h"
+#include "types/impl_val.h"
-typedef struct impl_def_val {
- token_t type;
- char *text;
-} impl_def_val;
-
-impl_def_val *init_impl_def_val(token_t t, const char *text);
-void free_impl_def_val(impl_def_val *def);
-void dump_impl_def_val(int fd, impl_def_val *val);
+struct psi_data;
+struct psi_impl_type;
+struct psi_dump;
+struct psi_impl_def_val {
+ struct psi_token *token;
+ token_t type;
+ union {
+ struct psi_num_exp *num;
+ } data;
+ token_t ityp;
+ impl_val ival;
+};
+
+struct psi_impl_def_val *psi_impl_def_val_init(token_t t, void *data);
+void psi_impl_def_val_free(struct psi_impl_def_val **def_ptr);
+void psi_impl_def_val_dump(struct psi_dump *dump, struct psi_impl_def_val *val);
+bool psi_impl_def_val_validate(struct psi_data *data, struct psi_impl_def_val *def,
+ struct psi_impl_type *cmp, struct psi_validate_scope *scope);
+void psi_impl_def_val_get_zval(struct psi_impl_def_val *val, token_t typ, zval *z);
#endif