#ifndef __FILTER_H__
#define __FILTER_H__ 1

#include "icode2ast.h"

extern IMPAST *assign_blocklevels(IMPAST *Program);
extern IMPAST *apply_aliases(IMPAST *Program);
extern IMPAST *assign_linenos(IMPAST *Program);
extern IMPAST *assign_formal_params(IMPAST *Program); // needs work
extern IMPAST *handle_dynamic_array_bounds(IMPAST *Program);
extern IMPAST *handle_dynamic_array_declarations(IMPAST *Program);
extern IMPAST *check_for_const_bounds_arrays(IMPAST *Program);
extern IMPAST *handle_recordformat_declarations(IMPAST *Program);
extern IMPAST *handle_missing_recordformat_specs(IMPAST *Program);
extern IMPAST *handle_proc_params(IMPAST *Program);
extern IMPAST *fixup_procparam_specs(IMPAST *Program);
extern IMPAST *propagate_types(IMPAST *Program);
extern IMPAST *separate_perms(IMPAST *Program);
extern IMPAST *fold_blocks(IMPAST *Program, IMPAST **what_follows);
extern IMPAST *reverse_array_index_declaration_order(IMPAST *Program);


extern IMPAST *reverse_bounds_list(FILE *out, IMPAST *list);
extern IMPAST *reverse_index_list(FILE *out, IMPAST *list);

#endif // !__FILTER_H__
