raising the head after a three-weeks refactoring
[m6w6/ext-psi] / src / types / impl_func.h
index 740a7aa77217e271d8f9afb6ffa62bc08cbaf786..52c4a66f3637248111d9f9c3cf67b76dedb7fc36 100644 (file)
 #ifndef PSI_TYPES_IMPL_FUNC_H
 #define PSI_TYPES_IMPL_FUNC_H
 
-#include "impl_args.h"
-#include "impl_type.h"
-
-typedef struct impl_func {
+struct psi_data;
+struct psi_token;
+struct psi_plist;
+struct psi_impl;
+struct psi_impl_arg;
+struct psi_impl_type;
+
+struct psi_impl_func {
        struct psi_token *token;
        char *name;
-       impl_args *args;
-       impl_type *return_type;
+       struct psi_plist *args;
+       struct psi_impl_arg *vararg;
+       struct psi_impl_type *return_type;
        unsigned return_reference:1;
-} impl_func;
+       unsigned static_memory:1;
+};
 
-impl_func *init_impl_func(char *name, impl_args *args, impl_type *type,
-               int ret_reference);
-void free_impl_func(impl_func *f);
-void dump_impl_func(int fd, impl_func *func);
+struct psi_impl_func *psi_impl_func_init(const char *name, struct psi_plist *args, struct psi_impl_type *return_type);
+void psi_impl_func_free(struct psi_impl_func **f_ptr);
+void psi_impl_func_dump(int fd, struct psi_impl_func *func);
+bool psi_impl_func_validate(struct psi_data *data, struct psi_impl_func *func);
 
 #endif