build administrativa
[m6w6/ext-psi] / src / types / let_callback.c
index 45639f82449dbded4f8c76252f6a796915ea9e9d..f5c7a46299f63e44818d8bb00bda4e53388d03ab 100644 (file)
  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 "data.h"
 
 struct psi_let_callback *psi_let_callback_init(struct psi_let_func *func,
                struct psi_plist *args, struct psi_plist *cb_args)
 {
-       struct psi_let_callback *cb = calloc(1, sizeof(*cb));
+       struct psi_let_callback *cb = pecalloc(1, sizeof(*cb), 1);
        cb->func = func;
        cb->args = args;
        cb->cb_args = cb_args;
@@ -47,9 +51,7 @@ void psi_let_callback_free(struct psi_let_callback **cb_ptr)
                if (cb->cb_args) {
                        psi_plist_free(cb->cb_args);
                }
-               if (cb->token) {
-                       free(cb->token);
-               }
+               psi_token_free(&cb->token);
                free(cb);
        }
 }
@@ -67,7 +69,7 @@ static inline bool psi_let_callback_validate_decl_args(struct psi_data *data,
                        data->error(data, cb->token, PSI_WARNING,
                                        "Argument count of callback statement of implementation '%s'"
                                        "does not match argument count of callback declaration '%s'",
-                                       impl->func->name, cb_decl->func->var->name);
+                                       impl->func->name->val, cb_decl->func->var->name->val);
                        return false;
                }
 
@@ -91,7 +93,7 @@ bool psi_let_callback_validate(struct psi_data *data, struct psi_let_callback *c
        if (cb_type->type != PSI_T_FUNCTION) {
                data->error(data, cb_var->token, PSI_WARNING,
                                "Expected a function: %s",
-                               cb_var->name);
+                               cb_var->name->val);
                return false;
        }
        cb->decl = cb_type->real.func;
@@ -127,37 +129,37 @@ bool psi_let_callback_validate(struct psi_data *data, struct psi_let_callback *c
        return true;
 }
 
-void psi_let_callback_dump(int fd, struct psi_let_callback *callback,
+void psi_let_callback_dump(struct psi_dump *dump, struct psi_let_callback *callback,
                unsigned level)
 {
-       dprintf(fd, "callback(");
+       PSI_DUMP(dump, "callback(");
        if (callback->cb_args) {
                size_t i = 0;
                struct psi_decl_var *cb_arg;
 
                while (psi_plist_get(callback->cb_args, i++, &cb_arg)) {
                        if (i > 1) {
-                               dprintf(fd, ", ");
+                               PSI_DUMP(dump, ", ");
                        }
-                       psi_decl_var_dump(fd, cb_arg);
+                       psi_decl_var_dump(dump, cb_arg);
                }
        }
-       dprintf(fd, ") as %s(%s(",
-                       callback->func->name,
-                       callback->func->var->name);
+       PSI_DUMP(dump, ") as %s(%s(",
+                       callback->func->name->val,
+                       callback->func->var->name->val);
 
        if (callback->args) {
                size_t i = 0, last = psi_plist_count(callback->args);
                struct psi_set_exp *set;
 
-               dprintf(fd, "\n");
+               PSI_DUMP(dump, "\n");
                ++level;
                while (psi_plist_get(callback->args, i++, &set)) {
-                       psi_set_exp_dump(fd, set, level, i == last);
-                       dprintf(fd, "\n");
+                       psi_set_exp_dump(dump, set, level, i == last);
+                       PSI_DUMP(dump, "\n");
                }
                --level;
-               dprintf(fd, "%s", psi_t_indent(level));
+               PSI_DUMP(dump, "%s", psi_t_indent(level));
        }
-       dprintf(fd, "))");
+       PSI_DUMP(dump, "))");
 }