cb22561995-10-11Fredrik Hübinette (Hubbe) /*\
06983f1996-09-22Fredrik Hübinette (Hubbe) ||| This file a part of Pike, and is copyright by Fredrik Hubinette ||| Pike is distributed as GPL (General Public License)
cb22561995-10-11Fredrik Hübinette (Hubbe) ||| See the files COPYING and DISCLAIMER for more information. \*/
5267b71995-08-09Fredrik Hübinette (Hubbe) #ifndef ADD_EFUN_H #define ADD_EFUN_H #include "svalue.h" #include "hashtable.h"
cb22561995-10-11Fredrik Hübinette (Hubbe) #include "las.h" /* For OPT_SIDE_EFFECT etc. */
5267b71995-08-09Fredrik Hübinette (Hubbe)  struct efun { struct svalue function; struct hash_entry link; }; typedef void (*c_fun)(INT32);
7bd0ea1996-02-19Fredrik Hübinette (Hubbe) typedef int (*docode_fun)(node *n);
6930181996-02-25Fredrik Hübinette (Hubbe) typedef node *(*optimize_fun)(node *n);
5267b71995-08-09Fredrik Hübinette (Hubbe)  struct callable { INT32 refs; c_fun function;
06983f1996-09-22Fredrik Hübinette (Hubbe)  struct pike_string *type; struct pike_string *name;
5267b71995-08-09Fredrik Hübinette (Hubbe)  INT16 flags;
7bd0ea1996-02-19Fredrik Hübinette (Hubbe)  optimize_fun optimize; docode_fun docode;
5267b71995-08-09Fredrik Hübinette (Hubbe) }; /* Prototypes begin here */
06983f1996-09-22Fredrik Hübinette (Hubbe) struct efun *lookup_efun(struct pike_string *name); void low_add_efun(struct pike_string *name, struct svalue *fun);
7bd0ea1996-02-19Fredrik Hübinette (Hubbe) struct callable *make_callable(c_fun fun, char *name, char *type, INT16 flags, optimize_fun optimize, docode_fun docode);
5267b71995-08-09Fredrik Hübinette (Hubbe) void really_free_callable(struct callable *fun);
7bd0ea1996-02-19Fredrik Hübinette (Hubbe) void add_efun2(char *name, c_fun fun, char *type, INT16 flags, optimize_fun optimize, docode_fun docode);
5267b71995-08-09Fredrik Hübinette (Hubbe) void add_efun(char *name, c_fun fun, char *type, INT16 flags); void push_all_efuns_on_stack(); void cleanup_added_efuns(); /* Prototypes end here */ #endif