/*
 * This file is generated by aisc_mkpt.
 * Any changes you make here will be overwritten later!
 *
 */

#ifndef AISC_PROTO_H
#define AISC_PROTO_H

#ifndef P_
# if defined(__STDC__) || defined(__cplusplus)
#  define P_(s) s
# else
#  define P_(s) ()
# endif
#else
# error P_ already defined elsewhere
#endif

/* define ARB attributes: */
#ifndef ATTRIBUTES_H
# include <attributes.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif


/* aisc.c */
char *read_aisc_file P_((char *path));
CL *make_CL P_((void));
AD *read_aisc P_((char **in));

/* aisc_commands.c */
void print_error_internal P_((const char *err, const char *launcher_file, int launcher_line));
void print_warning_internal P_((const char *err, const char *launcher_file, int launcher_line));
const char *formatted P_((const char *format, ...)) __ATTR__FORMAT(1);
void aisc_remove_files P_((void));
int do_com_push P_((const char *str));
int run_prg P_((void));

/* aisc_mix.c */
CL *aisc_calc_blocks P_((CL *co, CL *afor, CL *aif, int up));
int aisc_calc_special_commands P_((void));
struct hash_struct *create_hash P_((int size));
char *read_hash_local P_((char *key, struct hash_struct **hs));
char *read_hash P_((struct hash_struct *hs, char *key));
char *write_hash P_((struct hash_struct *hs, const char *key, const char *val));
int free_hash P_((struct hash_struct *hs));

/* aisc_var_ref.c */
AD *aisc_find_var_hier P_((AD *cursor, char *str, int next, int extended, int goup));
AD *aisc_find_var P_((AD *cursor, char *str, int next, int extended, int goup));
char *get_var_string P_((char *var));

#ifdef __cplusplus
}
#endif

#undef P_

#else
#error aisc_proto.h included twice
#endif /* AISC_PROTO_H */
