/*
 * Copyright (c) 2003, The Tendra Project <http://www.ten15.org/>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice unmodified, this list of conditions, and the following
 *    disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *
 *    		 Crown Copyright (c) 1997
 *    
 *    This TenDRA(r) Computer Program is subject to Copyright
 *    owned by the United Kingdom Secretary of State for Defence
 *    acting through the Defence Evaluation and Research Agency
 *    (DERA).  It is made available to Recipients with a
 *    royalty-free licence for its use, reproduction, transfer
 *    to other parties and amendment for any purpose not excluding
 *    product development provided that any such use et cetera
 *    shall be deemed to be acceptance of the following conditions:-
 *    
 *        (1) Its Recipients shall ensure that this Notice is
 *        reproduced upon any copies or amended versions of it;
 *    
 *        (2) Any amended version of it shall be clearly marked to
 *        show both the nature of and the organisation responsible
 *        for the relevant amendment or amendments;
 *    
 *        (3) Its onward transfer from a recipient to another
 *        party shall be deemed to be that party's acceptance of
 *        these conditions;
 *    
 *        (4) DERA gives no warranty or assurance as to its
 *        quality or suitability for any purpose and DERA accepts
 *        no liability whatsoever in relation to any use to which
 *        it may be put.
 *
 * $TenDRA: tendra/src/installers/common/templ/externs.h-tdf,v 1.3 2003/08/24 22:52:40 nonce Exp $
 */


/* AUTOMATICALLY GENERATED BY make_tdf VERSION 2.0 FROM TDF 4.1 */

#ifndef EXTERNS_INCLUDED
#define EXTERNS_INCLUDED


/* CONSTRUCTS FOR ACCESS */
extern access f_access_apply_token(token, bitstream);
extern access f_access_cond(exp, bitstream, bitstream);
extern access f_add_accesses(access, access);
extern access f_constant;
extern access f_long_jump_access;
extern access f_no_other_read;
extern access f_no_other_write;
extern access f_out_par;
extern access f_preserve;
extern access f_register;
extern access f_standard_access;
extern access f_used_as_volatile;
extern access f_visible;
extern access f_dummy_access;
extern void init_access(void);

/* CONSTRUCTS FOR ACCESS_OPTION */
extern access_option yes_access_option(access);
extern access_option no_access_option;
extern void init_access_option(void);

/* CONSTRUCTS FOR AL_TAG */
extern al_tag f_al_tag_apply_token(token, bitstream);
extern al_tag f_make_al_tag(tdfint);
extern al_tag f_dummy_al_tag;
extern void init_al_tag(void);

/* CONSTRUCTS FOR AL_TAGDEF */
extern al_tagdef f_make_al_tagdef(tdfint, alignment);
extern al_tagdef f_dummy_al_tagdef;
extern void init_al_tagdef(void);

/* CONSTRUCTS FOR AL_TAGDEF_LIST */
extern al_tagdef_list new_al_tagdef_list(int);
extern al_tagdef_list add_al_tagdef_list(al_tagdef_list, al_tagdef, int);
extern void init_al_tagdef_list(void);

/* CONSTRUCTS FOR AL_TAGDEF_PROPS */
extern al_tagdef_props f_make_al_tagdefs(tdfint, al_tagdef_list);
extern al_tagdef_props f_dummy_al_tagdef_props;
extern void init_al_tagdef_props(void);

/* CONSTRUCTS FOR ALIGNMENT */
extern alignment f_alignment_apply_token(token, bitstream);
extern alignment f_alignment_cond(exp, bitstream, bitstream);
extern alignment f_alignment(shape);
extern alignment f_alloca_alignment;
extern alignment f_callees_alignment(bool);
extern alignment f_callers_alignment(bool);
extern alignment f_code_alignment;
extern alignment f_locals_alignment;
extern alignment f_obtain_al_tag(al_tag);
extern alignment f_parameter_alignment(shape);
extern alignment f_unite_alignments(alignment, alignment);
extern alignment f_var_param_alignment;
extern alignment f_dummy_alignment;
extern void init_alignment(void);

/* CONSTRUCTS FOR BITFIELD_VARIETY */
extern bitfield_variety f_bfvar_apply_token(token, bitstream);
extern bitfield_variety f_bfvar_cond(exp, bitstream, bitstream);
extern bitfield_variety f_bfvar_bits(bool, nat);
extern bitfield_variety f_dummy_bitfield_variety;
extern void init_bitfield_variety(void);

/* CONSTRUCTS FOR BOOL */
extern bool f_bool_apply_token(token, bitstream);
extern bool f_bool_cond(exp, bitstream, bitstream);
extern bool f_false;
extern bool f_true;
extern bool f_dummy_bool;
extern void init_bool(void);

/* CONSTRUCTS FOR BOOL_OPTION */
extern bool_option yes_bool_option(bool);
extern bool_option no_bool_option;
extern void init_bool_option(void);

/* CONSTRUCTS FOR CALLEES */
extern callees f_make_callee_list(exp_list);
extern callees f_make_dynamic_callees(exp, exp);
extern callees f_same_callees;
extern callees f_dummy_callees;
extern void init_callees(void);

/* CONSTRUCTS FOR CAPSULE */
extern void start_make_capsule(tdfident_list, capsule_link_list);
extern capsule f_make_capsule(tdfident_list, capsule_link_list, extern_link_list, group_list);
extern capsule f_dummy_capsule;
extern void init_capsule(void);

/* CONSTRUCTS FOR CAPSULE_LINK */
extern capsule_link f_make_capsule_link(tdfident, tdfint);
extern capsule_link f_dummy_capsule_link;
extern void init_capsule_link(void);

/* CONSTRUCTS FOR CAPSULE_LINK_LIST */
extern capsule_link_list new_capsule_link_list(int);
extern capsule_link_list add_capsule_link_list(capsule_link_list, capsule_link, int);
extern void init_capsule_link_list(void);

/* CONSTRUCTS FOR CASELIM */
extern caselim f_make_caselim(label, signed_nat, signed_nat);
extern caselim f_dummy_caselim;
extern void init_caselim(void);

/* CONSTRUCTS FOR CASELIM_LIST */
extern caselim_list new_caselim_list(int);
extern caselim_list add_caselim_list(caselim_list, caselim, int);
extern void init_caselim_list(void);

/* CONSTRUCTS FOR DG */
extern dg f_dg_apply_token(token, bitstream);
extern dg f_make_tag_dg(dg_tag, dg);
extern dg f_abortable_part_dg(dg_sourcepos, bool);
extern dg f_accept_dg(dg_sourcepos, dg_tag, dg_name_list, bool, dg_tag_option);
extern dg f_barrier_dg(dg_sourcepos, dg_tag);
extern dg f_branch_dg(dg_sourcepos);
extern dg f_call_dg(dg_idname_option, dg_sourcepos, nat_option, dg_tag_option, dg_tag_option);
extern dg f_compilation_dg(dg_tag);
extern dg f_destructor_dg(dg_sourcepos, exp_option);
extern dg f_exception_handler_dg(dg_name_option);
extern dg f_exception_scope_dg(dg_tag_list);
extern dg f_inline_call_dg(dg_tag, dg_name_list, nat_option);
extern dg f_inline_result_dg(dg_tag);
extern dg f_inlined_dg(dg, dg_tag);
extern dg f_jump_dg(dg_sourcepos);
extern dg f_label_dg(dg_idname, dg_sourcepos);
extern dg f_lexical_block_dg(dg_idname_option, dg_sourcepos);
extern dg f_list_dg(dg_list);
extern dg f_long_jump_dg(dg_sourcepos);
extern dg f_name_decl_dg(dg_name);
extern dg f_params_dg(dg_name_list, exp_option);
extern dg f_raise_dg(dg_sourcepos, dg_type_option, exp_option);
extern dg f_requeue_dg(dg_sourcepos, dg_tag, bool);
extern dg f_rts_call_dg(dg_sourcepos, nat, dg_tag_option, dg_tag_option);
extern dg f_select_dg(dg_sourcepos, bool);
extern dg f_select_alternative_dg(dg_sourcepos, nat, bool, exp);
extern dg f_select_guard_dg(dg_sourcepos, dg_tag);
extern dg f_singlestep_dg(dg_sourcepos);
extern dg f_source_language_dg(nat);
extern dg f_sourcepos_dg(dg_sourcepos);
extern dg f_statement_part_dg(dg_tag);
extern dg f_test_dg(dg_sourcepos, bool);
extern dg f_triggering_alternative_dg(dg_sourcepos, nat, bool);
extern dg f_with_dg(dg_type, exp);
extern dg f_dummy_dg;
extern void init_dg(void);

/* CONSTRUCTS FOR DG_ACCESSIBILITY */
extern dg_accessibility f_dg_local_accessibility;
extern dg_accessibility f_dg_private_accessibility;
extern dg_accessibility f_dg_protected_accessibility;
extern dg_accessibility f_dg_public_accessibility;
extern dg_accessibility f_dummy_dg_accessibility;
extern void init_dg_accessibility(void);

/* CONSTRUCTS FOR DG_ACCESSIBILITY_OPTION */
extern dg_accessibility_option yes_dg_accessibility_option(dg_accessibility);
extern dg_accessibility_option no_dg_accessibility_option;
extern void init_dg_accessibility_option(void);

/* CONSTRUCTS FOR DG_APPEND */
extern dg_append f_dg_name_append(dg_tag, dg_name);
extern dg_append f_dummy_dg_append;
extern void init_dg_append(void);

/* CONSTRUCTS FOR DG_APPEND_LIST */
extern dg_append_list new_dg_append_list(int);
extern dg_append_list add_dg_append_list(dg_append_list, dg_append, int);
extern void init_dg_append_list(void);

/* CONSTRUCTS FOR DG_BOUND */
extern dg_bound f_dg_dynamic_bound(dg_tag, shape);
extern dg_bound f_dg_static_bound(exp);
extern dg_bound f_dg_unknown_bound(shape);
extern dg_bound f_dummy_dg_bound;
extern void init_dg_bound(void);

/* CONSTRUCTS FOR DG_CLASS_BASE */
extern dg_class_base f_make_dg_class_base(dg_tag, dg_sourcepos_option, token_option, dg_accessibility_option, dg_virtuality_option);
extern dg_class_base f_dummy_dg_class_base;
extern void init_dg_class_base(void);

/* CONSTRUCTS FOR DG_CLASS_BASE_LIST */
extern dg_class_base_list new_dg_class_base_list(int);
extern dg_class_base_list add_dg_class_base_list(dg_class_base_list, dg_class_base, int);
extern void init_dg_class_base_list(void);

/* CONSTRUCTS FOR DG_CLASSMEM */
extern dg_classmem f_dg_tag_classmem(dg_tag, dg_classmem);
extern dg_classmem f_dg_field_classmem(dg_idname, dg_sourcepos, exp, dg_type, dg_accessibility_option, bool_option, dg_default_option);
extern dg_classmem f_dg_function_classmem(dg_name, exp_option);
extern dg_classmem f_dg_indirect_classmem(dg_idname, dg_sourcepos, token, dg_type);
extern dg_classmem f_dg_name_classmem(dg_name);
extern dg_classmem f_dummy_dg_classmem;
extern void init_dg_classmem(void);

/* CONSTRUCTS FOR DG_CLASSMEM_LIST */
extern dg_classmem_list new_dg_classmem_list(int);
extern dg_classmem_list add_dg_classmem_list(dg_classmem_list, dg_classmem, int);
extern void init_dg_classmem_list(void);

/* CONSTRUCTS FOR DG_COMP_PROPS */
extern dg_comp_props f_make_dg_compunit(tdfint, dg_compilation, dg_append_list);
extern dg_comp_props f_dummy_dg_comp_props;
extern void init_dg_comp_props(void);

/* CONSTRUCTS FOR DG_COMPILATION */
extern dg_compilation f_dg_tag_compilation(dg_tag, dg_compilation);
extern dg_compilation f_make_dg_compilation(dg_filename, string_list, dg_macro_list, dg_filename, nat, nat, nat, string, string_list, dg_namelist);
extern dg_compilation f_dummy_dg_compilation;
extern void init_dg_compilation(void);

/* CONSTRUCTS FOR DG_CONSTRAINT */
extern dg_constraint f_dg_type_constraint(dg_tag_option, dg_type);
extern dg_constraint f_dg_value_constraint(dg_tag_option, exp);
extern dg_constraint f_dummy_dg_constraint;
extern void init_dg_constraint(void);

/* CONSTRUCTS FOR DG_CONSTRAINT_LIST */
extern dg_constraint_list new_dg_constraint_list(int);
extern dg_constraint_list add_dg_constraint_list(dg_constraint_list, dg_constraint, int);
extern void init_dg_constraint_list(void);

/* CONSTRUCTS FOR DG_CONSTRAINT_LIST_OPTION */
extern dg_constraint_list_option yes_dg_constraint_list_option(dg_constraint_list);
extern dg_constraint_list_option no_dg_constraint_list_option;
extern void init_dg_constraint_list_option(void);

/* CONSTRUCTS FOR DG_DEFAULT */
extern dg_default f_make_dg_default(exp_option, dg_sourcepos_option);
extern dg_default f_dummy_dg_default;
extern void init_dg_default(void);

/* CONSTRUCTS FOR DG_DEFAULT_OPTION */
extern dg_default_option yes_dg_default_option(dg_default);
extern dg_default_option no_dg_default_option;
extern void init_dg_default_option(void);

/* CONSTRUCTS FOR DG_DIM */
extern dg_dim f_dg_dim_apply_token(token, bitstream);
extern dg_dim f_dg_tag_dim(dg_tag, dg_dim);
extern dg_dim f_dg_bounds_dim(dg_bound, dg_bound, dg_type);
extern dg_dim f_dg_count_dim(dg_bound, dg_bound, dg_type);
extern dg_dim f_dg_type_dim(dg_type, nat_option);
extern dg_dim f_dg_unspecified_dim;
extern dg_dim f_dummy_dg_dim;
extern void init_dg_dim(void);

/* CONSTRUCTS FOR DG_DIM_LIST */
extern dg_dim_list new_dg_dim_list(int);
extern dg_dim_list add_dg_dim_list(dg_dim_list, dg_dim, int);
extern void init_dg_dim_list(void);

/* CONSTRUCTS FOR DG_DIM_OPTION */
extern dg_dim_option yes_dg_dim_option(dg_dim);
extern dg_dim_option no_dg_dim_option;
extern void init_dg_dim_option(void);

/* CONSTRUCTS FOR DG_DISCRIM */
extern dg_discrim f_make_dg_discrim(exp, exp);
extern dg_discrim f_dummy_dg_discrim;
extern void init_dg_discrim(void);

/* CONSTRUCTS FOR DG_DISCRIM_LIST */
extern dg_discrim_list new_dg_discrim_list(int);
extern dg_discrim_list add_dg_discrim_list(dg_discrim_list, dg_discrim, int);
extern void init_dg_discrim_list(void);

/* CONSTRUCTS FOR DG_ENUM */
extern dg_enum f_dg_tag_enum(dg_tag, dg_enum);
extern dg_enum f_make_dg_enum(exp, dg_idname, dg_sourcepos);
extern dg_enum f_dg_char_enum(exp, nat, dg_sourcepos);
extern dg_enum f_dummy_dg_enum;
extern void init_dg_enum(void);

/* CONSTRUCTS FOR DG_ENUM_LIST */
extern dg_enum_list new_dg_enum_list(int);
extern dg_enum_list add_dg_enum_list(dg_enum_list, dg_enum, int);
extern void init_dg_enum_list(void);

/* CONSTRUCTS FOR DG_FILENAME */
extern dg_filename f_dg_filename_apply_token(token, bitstream);
extern dg_filename f_make_dg_filename(nat, string, string, string);
extern dg_filename f_dummy_dg_filename;
extern void init_dg_filename(void);

/* CONSTRUCTS FOR DG_FILENAME_OPTION */
extern dg_filename_option yes_dg_filename_option(dg_filename);
extern dg_filename_option no_dg_filename_option;
extern void init_dg_filename_option(void);

/* CONSTRUCTS FOR DG_IDNAME */
extern dg_idname f_dg_idname_apply_token(token, bitstream);
extern dg_idname f_dg_anonymous_idname(string_option);
extern dg_idname f_dg_artificial_idname(string_option);
extern dg_idname f_dg_external_idname(string);
extern dg_idname f_dg_instance_idname(dg_idname_option, dg_idname, dg_sourcepos, dg_name_list);
extern dg_idname f_dg_sourcestring_idname(string);
extern dg_idname f_dummy_dg_idname;
extern void init_dg_idname(void);

/* CONSTRUCTS FOR DG_IDNAME_LIST */
extern dg_idname_list new_dg_idname_list(int);
extern dg_idname_list add_dg_idname_list(dg_idname_list, dg_idname, int);
extern void init_dg_idname_list(void);

/* CONSTRUCTS FOR DG_IDNAME_OPTION */
extern dg_idname_option yes_dg_idname_option(dg_idname);
extern dg_idname_option no_dg_idname_option;
extern void init_dg_idname_option(void);

/* CONSTRUCTS FOR DG_LIST */
extern dg_list new_dg_list(int);
extern dg_list add_dg_list(dg_list, dg, int);
extern void init_dg_list(void);

/* CONSTRUCTS FOR DG_MACRO */
extern dg_macro f_dg_function_macro(dg_sourcepos, dg_idname, dg_idname_list, string);
extern dg_macro f_dg_include_macro(dg_sourcepos, dg_filename, dg_macro_list);
extern dg_macro f_dg_object_macro(dg_sourcepos, dg_idname, string);
extern dg_macro f_dg_undef_macro(dg_sourcepos, dg_idname);
extern dg_macro f_dummy_dg_macro;
extern void init_dg_macro(void);

/* CONSTRUCTS FOR DG_MACRO_LIST */
extern dg_macro_list new_dg_macro_list(int);
extern dg_macro_list add_dg_macro_list(dg_macro_list, dg_macro, int);
extern void init_dg_macro_list(void);

/* CONSTRUCTS FOR DG_NAME */
extern dg_name f_dg_name_apply_token(token, bitstream);
extern dg_name f_dg_tag_name(dg_tag, dg_name);
extern dg_name f_dg_constant_name(dg_name);
extern dg_name f_dg_entry_family_name(dg_name, dg_dim);
extern dg_name f_dg_entry_name(dg_idname, dg_sourcepos, dg_type, dg_accessibility_option, dg_dim_option);
extern dg_name f_dg_inlined_name(dg_name, dg_tag);
extern dg_name f_dg_is_spec_name(dg_name, bool_option);
extern dg_name f_dg_module_name(dg_idname, dg_sourcepos, dg_namelist, exp_option, dg_tag_option);
extern dg_name f_dg_namespace_name(dg_idname, dg_sourcepos, dg_namelist);
extern dg_name f_dg_object_name(dg_idname, dg_sourcepos, dg_type, exp_option, dg_accessibility_option);
extern dg_name f_dg_proc_name(dg_idname, dg_sourcepos, dg_type, exp_option, dg_accessibility_option, dg_virtuality_option, bool, dg_type_list_option, dg_tag_option);
extern dg_name f_dg_program_name(dg_idname, dg_sourcepos, exp);
extern dg_name f_dg_rep_clause_name(dg_name, exp);
extern dg_name f_dg_spec_ref_name(dg_tag, dg_name);
extern dg_name f_dg_subunit_name(dg_tag, dg_name, nat, dg_accessibility_option);
extern dg_name f_dg_type_name(dg_idname_option, dg_sourcepos, dg_accessibility_option, dg_type_option, bool, bool_option, dg_constraint_list_option);
extern dg_name f_dg_visibility_name(dg_tag, nat, dg_idname_option, dg_sourcepos_option, dg_accessibility_option, dg_type_option);
extern dg_name f_dummy_dg_name;
extern void init_dg_name(void);

/* CONSTRUCTS FOR DG_NAME_LIST */
extern dg_name_list new_dg_name_list(int);
extern dg_name_list add_dg_name_list(dg_name_list, dg_name, int);
extern void init_dg_name_list(void);

/* CONSTRUCTS FOR DG_NAME_OPTION */
extern dg_name_option yes_dg_name_option(dg_name);
extern dg_name_option no_dg_name_option;
extern void init_dg_name_option(void);

/* CONSTRUCTS FOR DG_NAMELIST */
extern dg_namelist f_dg_tag_namelist(dg_tag, dg_namelist);
extern dg_namelist f_make_dg_namelist(dg_name_list);
extern dg_namelist f_dummy_dg_namelist;
extern void init_dg_namelist(void);

/* CONSTRUCTS FOR DG_PARAM */
extern dg_param f_dg_object_param(dg_idname_option, dg_sourcepos_option, dg_param_mode_option, dg_type, dg_default_option);
extern dg_param f_dg_type_param(dg_idname_option, dg_sourcepos_option, dg_param_list);
extern dg_param f_dummy_dg_param;
extern void init_dg_param(void);

/* CONSTRUCTS FOR DG_PARAM_LIST */
extern dg_param_list new_dg_param_list(int);
extern dg_param_list add_dg_param_list(dg_param_list, dg_param, int);
extern void init_dg_param_list(void);

/* CONSTRUCTS FOR DG_PARAM_MODE */
extern dg_param_mode f_dg_in_mode;
extern dg_param_mode f_dg_inout_mode;
extern dg_param_mode f_dg_out_mode;
extern dg_param_mode f_dummy_dg_param_mode;
extern void init_dg_param_mode(void);

/* CONSTRUCTS FOR DG_PARAM_MODE_OPTION */
extern dg_param_mode_option yes_dg_param_mode_option(dg_param_mode);
extern dg_param_mode_option no_dg_param_mode_option;
extern void init_dg_param_mode_option(void);

/* CONSTRUCTS FOR DG_QUALIFIER */
extern dg_qualifier f_dg_aliased_qualifier;
extern dg_qualifier f_dg_class_wide_qualifier;
extern dg_qualifier f_dg_const_qualifier;
extern dg_qualifier f_dg_limited_qualifier;
extern dg_qualifier f_dg_volatile_qualifier;
extern dg_qualifier f_dummy_dg_qualifier;
extern void init_dg_qualifier(void);

/* CONSTRUCTS FOR DG_SOURCEPOS */
extern dg_sourcepos f_dg_file_sourcepos(dg_filename);
extern dg_sourcepos f_dg_global_sourcepos;
extern dg_sourcepos f_dg_mark_sourcepos(dg_filename, nat, nat);
extern dg_sourcepos f_dg_null_sourcepos;
extern dg_sourcepos f_dg_span_sourcepos(dg_filename, nat, nat, dg_filename_option, nat, nat);
extern dg_sourcepos f_dummy_dg_sourcepos;
extern void init_dg_sourcepos(void);

/* CONSTRUCTS FOR DG_SOURCEPOS_OPTION */
extern dg_sourcepos_option yes_dg_sourcepos_option(dg_sourcepos);
extern dg_sourcepos_option no_dg_sourcepos_option;
extern void init_dg_sourcepos_option(void);

/* CONSTRUCTS FOR DG_TAG */
extern dg_tag f_make_dg_tag(tdfint);
extern dg_tag f_dummy_dg_tag;
extern void init_dg_tag(void);

/* CONSTRUCTS FOR DG_TAG_LIST */
extern dg_tag_list new_dg_tag_list(int);
extern dg_tag_list add_dg_tag_list(dg_tag_list, dg_tag, int);
extern void init_dg_tag_list(void);

/* CONSTRUCTS FOR DG_TAG_OPTION */
extern dg_tag_option yes_dg_tag_option(dg_tag);
extern dg_tag_option no_dg_tag_option;
extern void init_dg_tag_option(void);

/* CONSTRUCTS FOR DG_TYPE */
extern dg_type f_dg_type_apply_token(token, bitstream);
extern dg_type f_dg_tag_type(dg_tag, dg_type);
extern dg_type f_dg_address_type(dg_idname, shape);
extern dg_type f_dg_array_type(dg_type, exp, bool_option, dg_dim_list);
extern dg_type f_dg_bitfield_type(dg_type, bitfield_variety, shape);
extern dg_type f_dg_boolean_type(dg_idname, variety);
extern dg_type f_dg_char_type(dg_idname, variety);
extern dg_type f_dg_class_type(dg_class_base_list, dg_classmem_list, dg_varpart_option, dg_tag_list, shape_option, dg_tag_option, dg_tag_option, dg_idname_option, dg_sourcepos_option, bool, dg_tag_option, dg_tag_option, bool, bool_option);
extern dg_type f_dg_complex_float_type(dg_idname, floating_variety);
extern dg_type f_dg_enum_type(dg_enum_list, dg_idname_option, dg_sourcepos_option, shape, bool);
extern dg_type f_dg_file_type(dg_type, shape);
extern dg_type f_dg_fixed_point_type(dg_type, exp, exp_option, exp_option);
extern dg_type f_dg_float_type(dg_idname, floating_variety);
extern dg_type f_dg_floating_digits_type(dg_type, exp);
extern dg_type f_dg_inlined_type(dg_type, dg_tag);
extern dg_type f_dg_integer_type(dg_idname, variety);
extern dg_type f_dg_is_spec_type(dg_type);
extern dg_type f_dg_modular_type(dg_type, exp);
extern dg_type f_dg_named_type(dg_tag);
extern dg_type f_dg_packed_type(dg_type, shape);
extern dg_type f_dg_pointer_type(dg_type, bool_option);
extern dg_type f_dg_proc_type(dg_param_list, dg_type, bool_option, nat_option, nat_option, procprops_option);
extern dg_type f_dg_ptr_memdata_type(dg_tag, dg_type, shape, dg_tag_option);
extern dg_type f_dg_ptr_memfn_type(dg_tag, dg_type, shape, dg_tag_option);
extern dg_type f_dg_qualified_type(dg_qualifier, dg_type);
extern dg_type f_dg_reference_type(dg_type);
extern dg_type f_dg_set_type(dg_type, shape);
extern dg_type f_dg_spec_ref_type(dg_tag, dg_type);
extern dg_type f_dg_string_type(dg_tag, exp, exp);
extern dg_type f_dg_struct_type(dg_classmem_list, shape_option, dg_idname_option, dg_sourcepos_option, dg_varpart_option, bool, bool);
extern dg_type f_dg_subrange_type(dg_type, dg_bound, dg_bound);
extern dg_type f_dg_synchronous_type(dg_idname, dg_sourcepos, dg_name_list, dg_tag, dg_classmem_list, dg_varpart_option, shape_option, bool, dg_tag_option);
extern dg_type f_dg_task_type(dg_idname, dg_sourcepos, dg_name_list, dg_tag, dg_tag, dg_classmem_list, dg_varpart_option, shape_option, bool, dg_tag_option);
extern dg_type f_dg_unknown_type(shape);
extern dg_type f_dg_void_type;
extern dg_type f_dummy_dg_type;
extern void init_dg_type(void);

/* CONSTRUCTS FOR DG_TYPE_LIST */
extern dg_type_list new_dg_type_list(int);
extern dg_type_list add_dg_type_list(dg_type_list, dg_type, int);
extern void init_dg_type_list(void);

/* CONSTRUCTS FOR DG_TYPE_LIST_OPTION */
extern dg_type_list_option yes_dg_type_list_option(dg_type_list);
extern dg_type_list_option no_dg_type_list_option;
extern void init_dg_type_list_option(void);

/* CONSTRUCTS FOR DG_TYPE_OPTION */
extern dg_type_option yes_dg_type_option(dg_type);
extern dg_type_option no_dg_type_option;
extern void init_dg_type_option(void);

/* CONSTRUCTS FOR DG_VARIANT */
extern dg_variant f_make_dg_variant(dg_discrim_list, dg_classmem_list);
extern dg_variant f_dummy_dg_variant;
extern void init_dg_variant(void);

/* CONSTRUCTS FOR DG_VARIANT_LIST */
extern dg_variant_list new_dg_variant_list(int);
extern dg_variant_list add_dg_variant_list(dg_variant_list, dg_variant, int);
extern void init_dg_variant_list(void);

/* CONSTRUCTS FOR DG_VARPART */
extern dg_varpart f_dg_discrim_varpart(dg_classmem, dg_variant_list);
extern dg_varpart f_dg_sibl_discrim_varpart(dg_tag, dg_variant_list);
extern dg_varpart f_dg_undiscrim_varpart(dg_type, dg_variant_list);
extern dg_varpart f_dummy_dg_varpart;
extern void init_dg_varpart(void);

/* CONSTRUCTS FOR DG_VARPART_OPTION */
extern dg_varpart_option yes_dg_varpart_option(dg_varpart);
extern dg_varpart_option no_dg_varpart_option;
extern void init_dg_varpart_option(void);

/* CONSTRUCTS FOR DG_VIRTUALITY */
extern dg_virtuality f_dg_abstract_virtuality;
extern dg_virtuality f_dg_virtual_virtuality;
extern dg_virtuality f_dummy_dg_virtuality;
extern void init_dg_virtuality(void);

/* CONSTRUCTS FOR DG_VIRTUALITY_OPTION */
extern dg_virtuality_option yes_dg_virtuality_option(dg_virtuality);
extern dg_virtuality_option no_dg_virtuality_option;
extern void init_dg_virtuality_option(void);

/* CONSTRUCTS FOR DIAG_DESCRIPTOR */
extern diag_descriptor f_diag_desc_id(tdfstring, sourcemark, exp, diag_type);
extern diag_descriptor f_diag_desc_struct(tdfstring, sourcemark, diag_type);
extern diag_descriptor f_diag_desc_typedef(tdfstring, sourcemark, diag_type);
extern diag_descriptor f_dummy_diag_descriptor;
extern void init_diag_descriptor(void);

/* CONSTRUCTS FOR DIAG_DESCRIPTOR_LIST */
extern diag_descriptor_list new_diag_descriptor_list(int);
extern diag_descriptor_list add_diag_descriptor_list(diag_descriptor_list, diag_descriptor, int);
extern void init_diag_descriptor_list(void);

/* CONSTRUCTS FOR DIAG_FIELD */
extern diag_field f_make_diag_field(tdfstring, exp, diag_type);
extern diag_field f_dummy_diag_field;
extern void init_diag_field(void);

/* CONSTRUCTS FOR DIAG_FIELD_LIST */
extern diag_field_list new_diag_field_list(int);
extern diag_field_list add_diag_field_list(diag_field_list, diag_field, int);
extern void init_diag_field_list(void);

/* CONSTRUCTS FOR DIAG_TAG */
extern diag_tag f_make_diag_tag(tdfint);
extern diag_tag f_dummy_diag_tag;
extern void init_diag_tag(void);

/* CONSTRUCTS FOR DIAG_TAGDEF */
extern diag_tagdef f_make_diag_tagdef(tdfint, diag_type);
extern diag_tagdef f_dummy_diag_tagdef;
extern void init_diag_tagdef(void);

/* CONSTRUCTS FOR DIAG_TAGDEF_LIST */
extern diag_tagdef_list new_diag_tagdef_list(int);
extern diag_tagdef_list add_diag_tagdef_list(diag_tagdef_list, diag_tagdef, int);
extern void init_diag_tagdef_list(void);

/* CONSTRUCTS FOR DIAG_TQ */
extern diag_tq f_add_diag_const(diag_tq);
extern diag_tq f_add_diag_volatile(diag_tq);
extern diag_tq f_diag_tq_null;
extern diag_tq f_dummy_diag_tq;
extern void init_diag_tq(void);

/* CONSTRUCTS FOR DIAG_TYPE */
extern diag_type f_diag_type_apply_token(token, bitstream);
extern diag_type f_diag_array(diag_type, exp, exp, exp, diag_type);
extern diag_type f_diag_bitfield(diag_type, nat);
extern diag_type f_diag_enum(diag_type, tdfstring, enum_values_list);
extern diag_type f_diag_floating_variety(floating_variety);
extern diag_type f_diag_loc(diag_type, diag_tq);
extern diag_type f_diag_proc(diag_type_list, bool, diag_type);
extern diag_type f_diag_ptr(diag_type, diag_tq);
extern diag_type f_diag_struct(shape, tdfstring, diag_field_list);
extern diag_type f_diag_type_null;
extern diag_type f_diag_union(shape, tdfstring, diag_field_list);
extern diag_type f_diag_variety(variety);
extern diag_type f_use_diag_tag(diag_tag);
extern diag_type f_dummy_diag_type;
extern void init_diag_type(void);

/* CONSTRUCTS FOR DIAG_TYPE_LIST */
extern diag_type_list new_diag_type_list(int);
extern diag_type_list add_diag_type_list(diag_type_list, diag_type, int);
extern void init_diag_type_list(void);

/* CONSTRUCTS FOR DIAG_TYPE_UNIT */
extern diag_type_unit f_build_diagtype_unit(tdfint, diag_tagdef_list);
extern diag_type_unit f_dummy_diag_type_unit;
extern void init_diag_type_unit(void);

/* CONSTRUCTS FOR DIAG_UNIT */
extern diag_unit f_build_diag_unit(tdfint, diag_descriptor_list);
extern diag_unit f_dummy_diag_unit;
extern void init_diag_unit(void);

/* CONSTRUCTS FOR ENUM_VALUES */
extern enum_values f_make_enum_values(exp, tdfstring);
extern enum_values f_dummy_enum_values;
extern void init_enum_values(void);

/* CONSTRUCTS FOR ENUM_VALUES_LIST */
extern enum_values_list new_enum_values_list(int);
extern enum_values_list add_enum_values_list(enum_values_list, enum_values, int);
extern void init_enum_values_list(void);

/* CONSTRUCTS FOR ERROR_CODE */
extern error_code f_nil_access;
extern error_code f_overflow;
extern error_code f_stack_overflow;
extern error_code f_dummy_error_code;
extern void init_error_code(void);

/* CONSTRUCTS FOR ERROR_CODE_LIST */
extern error_code_list new_error_code_list(int);
extern error_code_list add_error_code_list(error_code_list, error_code, int);
extern void init_error_code_list(void);

/* CONSTRUCTS FOR ERROR_TREATMENT */
extern error_treatment f_errt_apply_token(token, bitstream);
extern error_treatment f_errt_cond(exp, bitstream, bitstream);
extern error_treatment f_continue;
extern error_treatment f_error_jump(label);
extern error_treatment f_trap(error_code_list);
extern error_treatment f_wrap;
extern error_treatment f_impossible;
extern error_treatment f_dummy_error_treatment;
extern void init_error_treatment(void);

/* CONSTRUCTS FOR EXP */
extern exp f_exp_apply_token(token, bitstream);
extern exp f_exp_cond(exp, bitstream, bitstream);
extern exp f_abs(error_treatment, exp);
extern exp f_add_to_ptr(exp, exp);
extern exp f_and(exp, exp);
extern exp f_apply_proc(shape, exp, exp_list, exp_option);
extern void start_apply_general_proc(shape, procprops_option, exp, otagexp_list, callees);
extern exp f_apply_general_proc(shape, procprops_option, exp, otagexp_list, callees, exp);
extern exp f_assign(exp, exp);
extern exp f_assign_with_mode(transfer_mode, exp, exp);
extern exp f_bitfield_assign(exp, exp, exp);
extern exp f_bitfield_assign_with_mode(transfer_mode, exp, exp, exp);
extern exp f_bitfield_contents(bitfield_variety, exp, exp);
extern exp f_bitfield_contents_with_mode(transfer_mode, bitfield_variety, exp, exp);
extern exp f_case(bool, exp, caselim_list);
extern exp f_change_bitfield_to_int(variety, exp);
extern exp f_change_floating_variety(error_treatment, floating_variety, exp);
extern exp f_change_variety(error_treatment, variety, exp);
extern exp f_change_int_to_bitfield(bitfield_variety, exp);
extern exp f_complex_conjugate(exp);
extern exp f_component(shape, exp, exp);
extern exp f_concat_nof(exp, exp);
extern void start_conditional(label);
extern exp f_conditional(label, exp, exp);
extern exp f_contents(shape, exp);
extern exp f_contents_with_mode(transfer_mode, shape, exp);
extern exp f_current_env(void);
extern exp f_div0(error_treatment, error_treatment, exp, exp);
extern exp f_div1(error_treatment, error_treatment, exp, exp);
extern exp f_div2(error_treatment, error_treatment, exp, exp);
extern exp f_env_offset(alignment, alignment, tag);
extern exp f_env_size(tag);
extern exp f_fail_installer(string);
extern exp f_float_int(error_treatment, floating_variety, exp);
extern exp f_floating_abs(error_treatment, exp);
extern exp f_floating_div(error_treatment, exp, exp);
extern exp f_floating_minus(error_treatment, exp, exp);
extern exp f_floating_maximum(error_treatment, exp, exp);
extern exp f_floating_minimum(error_treatment, exp, exp);
extern exp f_floating_mult(error_treatment, exp_list);
extern exp f_floating_negate(error_treatment, exp);
extern exp f_floating_plus(error_treatment, exp_list);
extern exp f_floating_power(error_treatment, exp, exp);
extern exp f_floating_test(nat_option, error_treatment, ntest, label, exp, exp);
extern exp f_goto(label);
extern exp f_goto_local_lv(exp);
extern void start_identify(access_option, tag, exp);
extern exp f_identify(access_option, tag, exp, exp);
extern exp f_ignorable(exp);
extern exp f_imaginary_part(exp);
extern void start_initial_value(void);
extern exp f_initial_value(exp);
extern exp f_integer_test(nat_option, ntest, label, exp, exp);
extern void start_labelled(label_list);
extern exp f_labelled(label_list, exp, exp_list);
extern exp f_last_local(exp);
extern exp f_local_alloc(exp);
extern exp f_local_alloc_check(exp);
extern exp f_local_free(exp, exp);
extern exp f_local_free_all(void);
extern exp f_long_jump(exp, exp);
extern exp f_make_complex(floating_variety, exp, exp);
extern exp f_make_compound(exp, exp_list);
extern exp f_make_floating(floating_variety, rounding_mode, bool, string, nat, signed_nat);
extern void start_make_general_proc(shape, procprops_option, tagshacc_list, tagshacc_list);
extern exp f_make_general_proc(shape, procprops_option, tagshacc_list, tagshacc_list, exp);
extern exp f_make_int(variety, signed_nat);
extern exp f_make_local_lv(label);
extern exp f_make_nof(exp_list);
extern exp f_make_nof_int(variety, string);
extern exp f_make_null_local_lv(void);
extern exp f_make_null_proc(void);
extern exp f_make_null_ptr(alignment);
extern void start_make_proc(shape, tagshacc_list, tagacc_option);
extern exp f_make_proc(shape, tagshacc_list, tagacc_option, exp);
extern exp f_make_stack_limit(exp, exp, exp);
extern exp f_make_top(void);
extern exp f_make_value(shape);
extern exp f_maximum(exp, exp);
extern exp f_minimum(exp, exp);
extern exp f_minus(error_treatment, exp, exp);
extern exp f_move_some(transfer_mode, exp, exp, exp);
extern exp f_mult(error_treatment, exp, exp);
extern exp f_n_copies(nat, exp);
extern exp f_negate(error_treatment, exp);
extern exp f_not(exp);
extern exp f_obtain_tag(tag);
extern exp f_offset_add(exp, exp);
extern exp f_offset_div(variety, exp, exp);
extern exp f_offset_div_by_int(exp, exp);
extern exp f_offset_max(exp, exp);
extern exp f_offset_mult(exp, exp);
extern exp f_offset_negate(exp);
extern exp f_offset_pad(alignment, exp);
extern exp f_offset_subtract(exp, exp);
extern exp f_offset_test(nat_option, ntest, label, exp, exp);
extern exp f_offset_zero(alignment);
extern exp f_or(exp, exp);
extern exp f_plus(error_treatment, exp, exp);
extern exp f_pointer_test(nat_option, ntest, label, exp, exp);
extern exp f_power(error_treatment, exp, exp);
extern exp f_proc_test(nat_option, ntest, label, exp, exp);
extern exp f_profile(nat);
extern exp f_real_part(exp);
extern exp f_rem0(error_treatment, error_treatment, exp, exp);
extern exp f_rem1(error_treatment, error_treatment, exp, exp);
extern exp f_rem2(error_treatment, error_treatment, exp, exp);
extern void start_repeat(label);
extern exp f_repeat(label, exp, exp);
extern exp f_return(exp);
extern exp f_return_to_label(exp);
extern exp f_round_with_mode(error_treatment, rounding_mode, variety, exp);
extern exp f_rotate_left(exp, exp);
extern exp f_rotate_right(exp, exp);
extern exp f_sequence(exp_list, exp);
extern exp f_set_stack_limit(exp);
extern exp f_shape_offset(shape);
extern exp f_shift_left(error_treatment, exp, exp);
extern exp f_shift_right(exp, exp);
extern exp f_subtract_ptrs(exp, exp);
extern exp f_tail_call(procprops_option, exp, callees);
extern exp f_untidy_return(exp);
extern void start_variable(access_option, tag, exp);
extern exp f_variable(access_option, tag, exp, exp);
extern exp f_xor(exp, exp);
extern exp f_dummy_exp;
extern void init_exp(void);

/* CONSTRUCTS FOR EXP_LIST */
extern exp_list new_exp_list(int);
extern exp_list add_exp_list(exp_list, exp, int);
extern void init_exp_list(void);

/* CONSTRUCTS FOR EXP_OPTION */
extern exp_option yes_exp_option(exp);
extern exp_option no_exp_option;
extern void init_exp_option(void);

/* CONSTRUCTS FOR EXTERN_LINK */
extern extern_link f_make_extern_link(linkextern_list);
extern extern_link f_dummy_extern_link;
extern void init_extern_link(void);

/* CONSTRUCTS FOR EXTERN_LINK_LIST */
extern extern_link_list new_extern_link_list(int);
extern extern_link_list add_extern_link_list(extern_link_list, extern_link, int);
extern void init_extern_link_list(void);

/* CONSTRUCTS FOR EXTERNAL */
extern external f_string_extern(tdfident);
extern external f_unique_extern(unique);
extern external f_chain_extern(tdfident, tdfint);
extern external f_dummy_external;
extern void init_external(void);

/* CONSTRUCTS FOR FILENAME */
extern filename f_filename_apply_token(token, bitstream);
extern filename f_make_filename(nat, tdfstring, tdfstring);
extern filename f_dummy_filename;
extern void init_filename(void);

/* CONSTRUCTS FOR FLOATING_VARIETY */
extern floating_variety f_flvar_apply_token(token, bitstream);
extern floating_variety f_flvar_cond(exp, bitstream, bitstream);
extern floating_variety f_flvar_parms(nat, nat, nat, nat);
extern floating_variety f_complex_parms(nat, nat, nat, nat);
extern floating_variety f_float_of_complex(shape);
extern floating_variety f_complex_of_float(shape);
extern floating_variety f_dummy_floating_variety;
extern void init_floating_variety(void);

/* CONSTRUCTS FOR GROUP */
extern group f_make_group(unit_list);
extern group f_dummy_group;
extern void init_group(void);

/* CONSTRUCTS FOR GROUP_LIST */
extern group_list new_group_list(int);
extern group_list add_group_list(group_list, group, int);
extern void init_group_list(void);

/* CONSTRUCTS FOR LABEL */
extern label f_label_apply_token(token, bitstream);
extern label f_make_label(tdfint);
extern label f_dummy_label;
extern void init_label(void);

/* CONSTRUCTS FOR LABEL_LIST */
extern label_list new_label_list(int);
extern label_list add_label_list(label_list, label, int);
extern void init_label_list(void);

/* CONSTRUCTS FOR LINK */
extern link f_make_link(tdfint, tdfint);
extern link f_dummy_link;
extern void init_link(void);

/* CONSTRUCTS FOR LINK_LIST */
extern link_list new_link_list(int);
extern link_list add_link_list(link_list, link, int);
extern void init_link_list(void);

/* CONSTRUCTS FOR LINKEXTERN */
extern linkextern f_make_linkextern(tdfint, external);
extern linkextern f_dummy_linkextern;
extern void init_linkextern(void);

/* CONSTRUCTS FOR LINKEXTERN_LIST */
extern linkextern_list new_linkextern_list(int);
extern linkextern_list add_linkextern_list(linkextern_list, linkextern, int);
extern void init_linkextern_list(void);

/* CONSTRUCTS FOR LINKINFO */
extern linkinfo f_static_name_def(exp, tdfstring);
extern linkinfo f_make_comment(tdfstring);
extern linkinfo f_make_weak_defn(exp, exp);
extern linkinfo f_make_weak_symbol(tdfstring, exp);
extern linkinfo f_dummy_linkinfo;
extern void init_linkinfo(void);

/* CONSTRUCTS FOR LINKINFO_LIST */
extern linkinfo_list new_linkinfo_list(int);
extern linkinfo_list add_linkinfo_list(linkinfo_list, linkinfo, int);
extern void init_linkinfo_list(void);

/* CONSTRUCTS FOR LINKINFO_PROPS */
extern linkinfo_props f_make_linkinfos(tdfint, linkinfo_list);
extern linkinfo_props f_dummy_linkinfo_props;
extern void init_linkinfo_props(void);

/* CONSTRUCTS FOR LINKS */
extern links f_make_links(link_list);
extern links f_dummy_links;
extern void init_links(void);

/* CONSTRUCTS FOR LINKS_LIST */
extern links_list new_links_list(int);
extern links_list add_links_list(links_list, links, int);
extern void init_links_list(void);

/* CONSTRUCTS FOR NAT */
extern nat f_nat_apply_token(token, bitstream);
extern nat f_nat_cond(exp, bitstream, bitstream);
extern nat f_computed_nat(exp);
extern nat f_error_val(error_code);
extern nat f_make_nat(tdfint);
extern nat f_dummy_nat;
extern void init_nat(void);

/* CONSTRUCTS FOR NAT_OPTION */
extern nat_option yes_nat_option(nat);
extern nat_option no_nat_option;
extern void init_nat_option(void);

/* CONSTRUCTS FOR NTEST */
extern ntest f_ntest_apply_token(token, bitstream);
extern ntest f_ntest_cond(exp, bitstream, bitstream);
extern ntest f_equal;
extern ntest f_greater_than;
extern ntest f_greater_than_or_equal;
extern ntest f_less_than;
extern ntest f_less_than_or_equal;
extern ntest f_not_equal;
extern ntest f_not_greater_than;
extern ntest f_not_greater_than_or_equal;
extern ntest f_not_less_than;
extern ntest f_not_less_than_or_equal;
extern ntest f_less_than_or_greater_than;
extern ntest f_not_less_than_and_not_greater_than;
extern ntest f_comparable;
extern ntest f_not_comparable;
extern ntest f_dummy_ntest;
extern void init_ntest(void);

/* CONSTRUCTS FOR OTAGEXP */
extern otagexp f_make_otagexp(tag_option, exp);
extern otagexp f_dummy_otagexp;
extern void init_otagexp(void);

/* CONSTRUCTS FOR OTAGEXP_LIST */
extern otagexp_list new_otagexp_list(int);
extern otagexp_list add_otagexp_list(otagexp_list, otagexp, int);
extern void init_otagexp_list(void);

/* CONSTRUCTS FOR PROCPROPS */
extern procprops f_procprops_apply_token(token, bitstream);
extern procprops f_procprops_cond(exp, bitstream, bitstream);
extern procprops f_add_procprops(procprops, procprops);
extern procprops f_check_stack;
extern procprops f_inline;
extern procprops f_no_long_jump_dest;
extern procprops f_untidy;
extern procprops f_var_callees;
extern procprops f_var_callers;
extern procprops f_dummy_procprops;
extern void init_procprops(void);

/* CONSTRUCTS FOR PROCPROPS_OPTION */
extern procprops_option yes_procprops_option(procprops);
extern procprops_option no_procprops_option;
extern void init_procprops_option(void);

/* CONSTRUCTS FOR ROUNDING_MODE */
extern rounding_mode f_rounding_mode_apply_token(token, bitstream);
extern rounding_mode f_rounding_mode_cond(exp, bitstream, bitstream);
extern rounding_mode f_round_as_state;
extern rounding_mode f_to_nearest;
extern rounding_mode f_toward_larger;
extern rounding_mode f_toward_smaller;
extern rounding_mode f_toward_zero;
extern rounding_mode f_dummy_rounding_mode;
extern void init_rounding_mode(void);

/* CONSTRUCTS FOR SHAPE */
extern shape f_shape_apply_token(token, bitstream);
extern shape f_shape_cond(exp, bitstream, bitstream);
extern shape f_bitfield(bitfield_variety);
extern shape f_bottom;
extern shape f_compound(exp);
extern shape f_floating(floating_variety);
extern shape f_integer(variety);
extern shape f_nof(nat, shape);
extern shape f_offset(alignment, alignment);
extern shape f_pointer(alignment);
extern shape f_proc;
extern shape f_top;
extern shape f_dummy_shape;
extern void init_shape(void);

/* CONSTRUCTS FOR SHAPE_OPTION */
extern shape_option yes_shape_option(shape);
extern shape_option no_shape_option;
extern void init_shape_option(void);

/* CONSTRUCTS FOR SIGNED_NAT */
extern signed_nat f_signed_nat_apply_token(token, bitstream);
extern signed_nat f_signed_nat_cond(exp, bitstream, bitstream);
extern signed_nat f_computed_signed_nat(exp);
extern signed_nat f_make_signed_nat(tdfbool, tdfint);
extern signed_nat f_snat_from_nat(bool, nat);
extern signed_nat f_dummy_signed_nat;
extern void init_signed_nat(void);

/* CONSTRUCTS FOR SORTNAME */
extern sortname f_access;
extern sortname f_al_tag;
extern sortname f_alignment_sort;
extern sortname f_bitfield_variety;
extern sortname f_bool;
extern sortname f_error_treatment;
extern sortname f_exp;
extern sortname f_floating_variety;
extern sortname f_foreign_sort(string);
extern sortname f_label;
extern sortname f_nat;
extern sortname f_ntest;
extern sortname f_procprops;
extern sortname f_rounding_mode;
extern sortname f_shape;
extern sortname f_signed_nat;
extern sortname f_string;
extern sortname f_tag;
extern sortname f_transfer_mode;
extern sortname f_token(sortname, sortname_list);
extern sortname f_variety;
extern sortname f_dummy_sortname;
extern void init_sortname(void);

/* CONSTRUCTS FOR SORTNAME_LIST */
extern sortname_list new_sortname_list(int);
extern sortname_list add_sortname_list(sortname_list, sortname, int);
extern void init_sortname_list(void);

/* CONSTRUCTS FOR SOURCEMARK */
extern sourcemark f_make_sourcemark(filename, nat, nat);
extern sourcemark f_dummy_sourcemark;
extern void init_sourcemark(void);

/* CONSTRUCTS FOR STRING */
extern string f_string_apply_token(token, bitstream);
extern string f_string_cond(exp, bitstream, bitstream);
extern string f_concat_string(string, string);
extern string f_make_string(tdfstring);
extern string f_dummy_string;
extern void init_string(void);

/* CONSTRUCTS FOR STRING_LIST */
extern string_list new_string_list(int);
extern string_list add_string_list(string_list, string, int);
extern void init_string_list(void);

/* CONSTRUCTS FOR STRING_OPTION */
extern string_option yes_string_option(string);
extern string_option no_string_option;
extern void init_string_option(void);

/* CONSTRUCTS FOR TAG */
extern tag f_tag_apply_token(token, bitstream);
extern tag f_make_tag(tdfint);
extern tag f_dummy_tag;
extern void init_tag(void);

/* CONSTRUCTS FOR TAG_OPTION */
extern tag_option yes_tag_option(tag);
extern tag_option no_tag_option;
extern void init_tag_option(void);

/* CONSTRUCTS FOR TAGACC */
extern tagacc f_make_tagacc(tag, access_option);
extern tagacc f_dummy_tagacc;
extern void init_tagacc(void);

/* CONSTRUCTS FOR TAGACC_OPTION */
extern tagacc_option yes_tagacc_option(tagacc);
extern tagacc_option no_tagacc_option;
extern void init_tagacc_option(void);

/* CONSTRUCTS FOR TAGDEC */
extern tagdec f_make_id_tagdec(tdfint, access_option, string_option, shape);
extern tagdec f_make_var_tagdec(tdfint, access_option, string_option, shape);
extern tagdec f_common_tagdec(tdfint, access_option, string_option, shape);
extern tagdec f_dummy_tagdec;
extern void init_tagdec(void);

/* CONSTRUCTS FOR TAGDEC_LIST */
extern tagdec_list new_tagdec_list(int);
extern tagdec_list add_tagdec_list(tagdec_list, tagdec, int);
extern void init_tagdec_list(void);

/* CONSTRUCTS FOR TAGDEC_PROPS */
extern tagdec_props f_make_tagdecs(tdfint, tagdec_list);
extern tagdec_props f_dummy_tagdec_props;
extern void init_tagdec_props(void);

/* CONSTRUCTS FOR TAGDEF */
extern void start_make_id_tagdef(tdfint);
extern tagdef f_make_id_tagdef(tdfint, string_option, exp);
extern void start_make_var_tagdef(tdfint);
extern tagdef f_make_var_tagdef(tdfint, access_option, string_option, exp);
extern void start_common_tagdef(tdfint);
extern tagdef f_common_tagdef(tdfint, access_option, string_option, exp);
extern tagdef f_dummy_tagdef;
extern void init_tagdef(void);

/* CONSTRUCTS FOR TAGDEF_LIST */
extern tagdef_list new_tagdef_list(int);
extern tagdef_list add_tagdef_list(tagdef_list, tagdef, int);
extern void init_tagdef_list(void);

/* CONSTRUCTS FOR TAGDEF_PROPS */
extern tagdef_props f_make_tagdefs(tdfint, tagdef_list);
extern tagdef_props f_dummy_tagdef_props;
extern void init_tagdef_props(void);

/* CONSTRUCTS FOR TAGSHACC */
extern tagshacc f_make_tagshacc(shape, access_option, tag);
extern tagshacc f_dummy_tagshacc;
extern void init_tagshacc(void);

/* CONSTRUCTS FOR TAGSHACC_LIST */
extern tagshacc_list new_tagshacc_list(int);
extern tagshacc_list add_tagshacc_list(tagshacc_list, tagshacc, int);
extern void init_tagshacc_list(void);

/* CONSTRUCTS FOR TDFIDENT_LIST */
extern tdfident_list new_tdfident_list(int);
extern tdfident_list add_tdfident_list(tdfident_list, tdfident, int);
extern void init_tdfident_list(void);

/* CONSTRUCTS FOR TDFINT_LIST */
extern tdfint_list new_tdfint_list(int);
extern tdfint_list add_tdfint_list(tdfint_list, tdfint, int);
extern void init_tdfint_list(void);

/* CONSTRUCTS FOR TOKDEC */
extern tokdec f_make_tokdec(tdfint, string_option, sortname);
extern tokdec f_dummy_tokdec;
extern void init_tokdec(void);

/* CONSTRUCTS FOR TOKDEC_LIST */
extern tokdec_list new_tokdec_list(int);
extern tokdec_list add_tokdec_list(tokdec_list, tokdec, int);
extern void init_tokdec_list(void);

/* CONSTRUCTS FOR TOKDEC_PROPS */
extern tokdec_props f_make_tokdecs(tokdec_list);
extern tokdec_props f_dummy_tokdec_props;
extern void init_tokdec_props(void);

/* CONSTRUCTS FOR TOKDEF */
extern tokdef f_make_tokdef(tdfint, string_option, bitstream);
extern tokdef f_dummy_tokdef;
extern void init_tokdef(void);

/* CONSTRUCTS FOR TOKDEF_LIST */
extern tokdef_list new_tokdef_list(int);
extern tokdef_list add_tokdef_list(tokdef_list, tokdef, int);
extern void init_tokdef_list(void);

/* CONSTRUCTS FOR TOKDEF_PROPS */
extern tokdef_props f_make_tokdefs(tdfint, tokdef_list);
extern tokdef_props f_dummy_tokdef_props;
extern void init_tokdef_props(void);

/* CONSTRUCTS FOR TOKEN */
extern token f_token_apply_token(token, bitstream);
extern token f_make_tok(tdfint);
extern token f_use_tokdef(bitstream);
extern token f_dummy_token;
extern void init_token(void);

/* CONSTRUCTS FOR TOKEN_DEFN */
extern token_defn f_token_definition(sortname, tokformals_list);
extern token_defn f_dummy_token_defn;
extern void init_token_defn(void);

/* CONSTRUCTS FOR TOKEN_OPTION */
extern token_option yes_token_option(token);
extern token_option no_token_option;
extern void init_token_option(void);

/* CONSTRUCTS FOR TOKFORMALS */
extern tokformals f_make_tokformals(sortname, tdfint);
extern tokformals f_dummy_tokformals;
extern void init_tokformals(void);

/* CONSTRUCTS FOR TOKFORMALS_LIST */
extern tokformals_list new_tokformals_list(int);
extern tokformals_list add_tokformals_list(tokformals_list, tokformals, int);
extern void init_tokformals_list(void);

/* CONSTRUCTS FOR TRANSFER_MODE */
extern transfer_mode f_transfer_mode_apply_token(token, bitstream);
extern transfer_mode f_transfer_mode_cond(exp, bitstream, bitstream);
extern transfer_mode f_add_modes(transfer_mode, transfer_mode);
extern transfer_mode f_overlap;
extern transfer_mode f_standard_transfer_mode;
extern transfer_mode f_trap_on_nil;
extern transfer_mode f_volatile;
extern transfer_mode f_complete;
extern transfer_mode f_dummy_transfer_mode;
extern void init_transfer_mode(void);

/* CONSTRUCTS FOR UNIQUE */
extern unique f_make_unique(tdfident_list);
extern unique f_dummy_unique;
extern void init_unique(void);

/* CONSTRUCTS FOR UNIT */
extern void start_make_unit(tdfint_list);
extern unit f_make_unit(tdfint_list, links_list, bytestream);
extern unit f_dummy_unit;
extern void init_unit(void);

/* CONSTRUCTS FOR UNIT_LIST */
extern unit_list new_unit_list(int);
extern unit_list add_unit_list(unit_list, unit, int);
extern void init_unit_list(void);

/* CONSTRUCTS FOR VARIETY */
extern variety f_var_apply_token(token, bitstream);
extern variety f_var_cond(exp, bitstream, bitstream);
extern variety f_var_limits(signed_nat, signed_nat);
extern variety f_var_width(bool, nat);
extern variety f_dummy_variety;
extern void init_variety(void);

/* CONSTRUCTS FOR VERSION */
extern version f_make_version(tdfint, tdfint);
extern version f_user_info(string);
extern version f_dummy_version;
extern void init_version(void);

/* CONSTRUCTS FOR VERSION_LIST */
extern version_list new_version_list(int);
extern version_list add_version_list(version_list, version, int);
extern void init_version_list(void);

/* CONSTRUCTS FOR VERSION_PROPS */
extern version_props f_make_versions(version_list);
extern version_props f_dummy_version_props;
extern void init_version_props(void);


#endif


syntax highlighted by Code2HTML, v. 0.9.1