/*
 * Copyright (c) 2002-2004, 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/tools/tnc/templ/tdf.h-tdf,v 1.4 2004/09/05 03:47:06 bp Exp $
 */


#ifndef TDF_INCLUDED
#define TDF_INCLUDED


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

extern void init_constructs (void);
extern sortname find_sort (char);

extern node *de_access (void);
extern node *de_al_tag (void);
extern long de_al_tagdef_bits (void);
extern node *de_alignment (void);
extern node *de_bitfield_variety (void);
extern node *de_bool (void);
extern node *de_callees (void);
extern node *de_error_code (void);
extern node *de_error_treatment (void);
extern node *de_exp (void);
extern long de_external_bits (void);
extern node *de_floating_variety (void);
extern node *de_label (void);
extern node *de_nat (void);
extern node *de_ntest (void);
extern node *de_procprops (void);
extern node *de_rounding_mode (void);
extern node *de_shape (void);
extern node *de_signed_nat (void);
extern long de_sortname_bits (void);
extern node *de_string (void);
extern node *de_tag (void);
extern long de_tagdec_bits (void);
extern long de_tagdef_bits (void);
extern long de_tokdec_bits (void);
extern long de_tokdef_bits (void);
extern long de_token_bits (void);
extern long de_token_defn_bits (void);
extern node *de_transfer_mode (void);
extern node *de_variety (void);
extern long de_version_bits (void);

struct tdf_stream;
extern void enc_al_tag_bits (struct tdf_stream *, int);
extern void enc_al_tagdef_bits (struct tdf_stream *, int);
extern void enc_external_bits (struct tdf_stream *, int);
extern void enc_label_bits (struct tdf_stream *, int);
extern void enc_sortname_bits (struct tdf_stream *, int);
extern void enc_tag_bits (struct tdf_stream *, int);
extern void enc_tagdec_bits (struct tdf_stream *, int);
extern void enc_tagdef_bits (struct tdf_stream *, int);
extern void enc_tokdec_bits (struct tdf_stream *, int);
extern void enc_tokdef_bits (struct tdf_stream *, int);
extern void enc_token_bits (struct tdf_stream *, int);
extern void enc_token_defn_bits (struct tdf_stream *, int);
extern void enc_version_bits (struct tdf_stream *, int);

extern node *read_access (long);
extern node *read_al_tag (long);
extern node *read_alignment (long);
extern node *read_bitfield_variety (long);
extern node *read_bool (long);
extern node *read_callees (long);
extern node *read_error_code (long);
extern node *read_error_treatment (long);
extern node *read_exp (long);
extern node *read_floating_variety (long);
extern node *read_label (long);
extern node *read_nat (long);
extern node *read_ntest (long);
extern node *read_procprops (long);
extern node *read_rounding_mode (long);
extern node *read_shape (long);
extern node *read_signed_nat (long);
extern node *read_string (long);
extern node *read_tag (long);
extern node *read_transfer_mode (long);
extern node *read_variety (long);

#define VERSION_capsule				"TDFC"
#define VERSION_library				"TDFL"
#define VERSION_major				4
#define VERSION_minor				1

#define LINK_al_tagdef_props			"aldef"
#define LINK_tagdec_props			"tagdec"
#define LINK_tagdef_props			"tagdef"
#define LINK_tokdec_props			"tokdec"
#define LINK_tokdef_props			"tokdef"
#define LINK_version_props			"versions"
#define LINK_tld_props				"tld"

#define LINK_al_tag				"alignment"
#define LINK_tag				"tag"
#define LINK_token				"token"

#define SORT_access				1
#define SORT_al_tag				2
#define SORT_alignment				3
#define SORT_bitfield_variety			4
#define SORT_bool				5
#define SORT_error_treatment			6
#define SORT_exp				7
#define SORT_floating_variety			8
#define SORT_foreign_sort			9
#define SORT_label				10
#define SORT_nat				11
#define SORT_ntest				12
#define SORT_procprops				13
#define SORT_rounding_mode			14
#define SORT_shape				15
#define SORT_signed_nat				16
#define SORT_string				17
#define SORT_tag				18
#define SORT_transfer_mode			19
#define SORT_token				20
#define SORT_variety				21
#define SORT_foreign				ENC_foreign_sort
#define SORT_callees				22
#define SORT_error_code				23
#define SORT_sortname				0
#define SORT_unknown				0
#define SORT_repeat				(-1)
#define SORT_option				(-2)
#define SORT_completion				(-3)
#define SORT_small_tdfint			(-4)
#define SORT_bitstream				(-5)
#define SORT_bytestream				(-6)
#define SORT_tdfbool				(-7)
#define SORT_tdfident				(-8)
#define SORT_tdfint				(-9)
#define SORT_tdfstring				(-10)
#define SORT_max				21
#define SORT_no					24

#define ENC_access_apply_token			1
#define ENC_access_cond				2
#define ENC_add_accesses			3
#define ENC_constant				4
#define ENC_long_jump_access			5
#define ENC_no_other_read			6
#define ENC_no_other_write			7
#define ENC_out_par				8
#define ENC_preserve				9
#define ENC_register				10
#define ENC_standard_access			11
#define ENC_used_as_volatile			12
#define ENC_visible				13
#define ENC_al_tag_apply_token			2
#define ENC_make_al_tag				1
#define ENC_make_al_tagdef			1
#define ENC_alignment_apply_token		1
#define ENC_alignment_cond			2
#define ENC_alignment				3
#define ENC_alloca_alignment			4
#define ENC_callees_alignment			5
#define ENC_callers_alignment			6
#define ENC_code_alignment			7
#define ENC_locals_alignment			8
#define ENC_obtain_al_tag			9
#define ENC_parameter_alignment			10
#define ENC_unite_alignments			11
#define ENC_var_param_alignment			12
#define ENC_bfvar_apply_token			1
#define ENC_bfvar_cond				2
#define ENC_bfvar_bits				3
#define ENC_bool_apply_token			1
#define ENC_bool_cond				2
#define ENC_false				3
#define ENC_true				4
#define ENC_make_callee_list			1
#define ENC_make_dynamic_callees		2
#define ENC_same_callees			3
#define ENC_nil_access				1
#define ENC_overflow				2
#define ENC_stack_overflow			3
#define ENC_errt_apply_token			1
#define ENC_errt_cond				2
#define ENC_continue				3
#define ENC_error_jump				4
#define ENC_trap				5
#define ENC_wrap				6
#define ENC_impossible				7
#define ENC_exp_apply_token			1
#define ENC_exp_cond				2
#define ENC_abs					3
#define ENC_add_to_ptr				4
#define ENC_and					5
#define ENC_apply_proc				6
#define ENC_apply_general_proc			7
#define ENC_assign				8
#define ENC_assign_with_mode			9
#define ENC_bitfield_assign			10
#define ENC_bitfield_assign_with_mode		11
#define ENC_bitfield_contents			12
#define ENC_bitfield_contents_with_mode		13
#define ENC_case				14
#define ENC_change_bitfield_to_int		15
#define ENC_change_floating_variety		16
#define ENC_change_variety			17
#define ENC_change_int_to_bitfield		18
#define ENC_complex_conjugate			19
#define ENC_component				20
#define ENC_concat_nof				21
#define ENC_conditional				22
#define ENC_contents				23
#define ENC_contents_with_mode			24
#define ENC_current_env				25
#define ENC_div0				26
#define ENC_div1				27
#define ENC_div2				28
#define ENC_env_offset				29
#define ENC_env_size				30
#define ENC_fail_installer			31
#define ENC_float_int				32
#define ENC_floating_abs			33
#define ENC_floating_div			34
#define ENC_floating_minus			35
#define ENC_floating_maximum			36
#define ENC_floating_minimum			37
#define ENC_floating_mult			38
#define ENC_floating_negate			39
#define ENC_floating_plus			40
#define ENC_floating_power			41
#define ENC_floating_test			42
#define ENC_goto				43
#define ENC_goto_local_lv			44
#define ENC_identify				45
#define ENC_ignorable				46
#define ENC_imaginary_part			47
#define ENC_initial_value			48
#define ENC_integer_test			49
#define ENC_labelled				50
#define ENC_last_local				51
#define ENC_local_alloc				52
#define ENC_local_alloc_check			53
#define ENC_local_free				54
#define ENC_local_free_all			55
#define ENC_long_jump				56
#define ENC_make_complex			57
#define ENC_make_compound			58
#define ENC_make_floating			59
#define ENC_make_general_proc			60
#define ENC_make_int				61
#define ENC_make_local_lv			62
#define ENC_make_nof				63
#define ENC_make_nof_int			64
#define ENC_make_null_local_lv			65
#define ENC_make_null_proc			66
#define ENC_make_null_ptr			67
#define ENC_make_proc				68
#define ENC_make_stack_limit			116
#define ENC_make_top				69
#define ENC_make_value				70
#define ENC_maximum				71
#define ENC_minimum				72
#define ENC_minus				73
#define ENC_move_some				74
#define ENC_mult				75
#define ENC_n_copies				76
#define ENC_negate				77
#define ENC_not					78
#define ENC_obtain_tag				79
#define ENC_offset_add				80
#define ENC_offset_div				81
#define ENC_offset_div_by_int			82
#define ENC_offset_max				83
#define ENC_offset_mult				84
#define ENC_offset_negate			85
#define ENC_offset_pad				86
#define ENC_offset_subtract			87
#define ENC_offset_test				88
#define ENC_offset_zero				89
#define ENC_or					90
#define ENC_plus				91
#define ENC_pointer_test			92
#define ENC_power				93
#define ENC_proc_test				94
#define ENC_profile				95
#define ENC_real_part				96
#define ENC_rem0				97
#define ENC_rem1				98
#define ENC_rem2				99
#define ENC_repeat				100
#define ENC_return				101
#define ENC_return_to_label			102
#define ENC_round_with_mode			103
#define ENC_rotate_left				104
#define ENC_rotate_right			105
#define ENC_sequence				106
#define ENC_set_stack_limit			107
#define ENC_shape_offset			108
#define ENC_shift_left				109
#define ENC_shift_right				110
#define ENC_subtract_ptrs			111
#define ENC_tail_call				112
#define ENC_untidy_return			113
#define ENC_variable				114
#define ENC_xor					115
#define ENC_string_extern			1
#define ENC_unique_extern			2
#define ENC_chain_extern			3
#define ENC_flvar_apply_token			1
#define ENC_flvar_cond				2
#define ENC_flvar_parms				3
#define ENC_complex_parms			4
#define ENC_float_of_complex			5
#define ENC_complex_of_float			6
#define ENC_label_apply_token			2
#define ENC_make_label				1
#define ENC_nat_apply_token			1
#define ENC_nat_cond				2
#define ENC_computed_nat			3
#define ENC_error_val				4
#define ENC_make_nat				5
#define ENC_ntest_apply_token			1
#define ENC_ntest_cond				2
#define ENC_equal				3
#define ENC_greater_than			4
#define ENC_greater_than_or_equal		5
#define ENC_less_than				6
#define ENC_less_than_or_equal			7
#define ENC_not_equal				8
#define ENC_not_greater_than			9
#define ENC_not_greater_than_or_equal		10
#define ENC_not_less_than			11
#define ENC_not_less_than_or_equal		12
#define ENC_less_than_or_greater_than		13
#define ENC_not_less_than_and_not_great		14
#define ENC_comparable				15
#define ENC_not_comparable			16
#define ENC_procprops_apply_token		1
#define ENC_procprops_cond			2
#define ENC_add_procprops			3
#define ENC_check_stack				4
#define ENC_inline				5
#define ENC_no_long_jump_dest			6
#define ENC_untidy				7
#define ENC_var_callees				8
#define ENC_var_callers				9
#define ENC_rounding_mode_apply_token		1
#define ENC_rounding_mode_cond			2
#define ENC_round_as_state			3
#define ENC_to_nearest				4
#define ENC_toward_larger			5
#define ENC_toward_smaller			6
#define ENC_toward_zero				7
#define ENC_shape_apply_token			1
#define ENC_shape_cond				2
#define ENC_bitfield				3
#define ENC_bottom				4
#define ENC_compound				5
#define ENC_floating				6
#define ENC_integer				7
#define ENC_nof					8
#define ENC_offset				9
#define ENC_pointer				10
#define ENC_proc				11
#define ENC_top					12
#define ENC_shape_none				13
#define ENC_signed_nat_apply_token		1
#define ENC_signed_nat_cond			2
#define ENC_computed_signed_nat			3
#define ENC_make_signed_nat			4
#define ENC_snat_from_nat			5
#define ENC_access				1
#define ENC_al_tag				2
#define ENC_alignment_sort			3
#define ENC_bitfield_variety			4
#define ENC_bool				5
#define ENC_error_treatment			6
#define ENC_exp					7
#define ENC_floating_variety			8
#define ENC_foreign_sort			9
#define ENC_label				10
#define ENC_nat					11
#define ENC_ntest				12
#define ENC_procprops				13
#define ENC_rounding_mode			14
#define ENC_shape				15
#define ENC_signed_nat				16
#define ENC_string				17
#define ENC_tag					18
#define ENC_transfer_mode			19
#define ENC_token				20
#define ENC_variety				21
#define ENC_string_apply_token			1
#define ENC_string_cond				2
#define ENC_concat_string			3
#define ENC_make_string				4
#define ENC_tag_apply_token			2
#define ENC_make_tag				1
#define ENC_make_id_tagdec			1
#define ENC_make_var_tagdec			2
#define ENC_common_tagdec			3
#define ENC_make_id_tagdef			1
#define ENC_make_var_tagdef			2
#define ENC_common_tagdef			3
#define ENC_make_tokdec				1
#define ENC_make_tokdef				1
#define ENC_token_apply_token			1
#define ENC_make_tok				2
#define ENC_use_tokdef				3
#define ENC_token_definition			1
#define ENC_transfer_mode_apply_token		1
#define ENC_transfer_mode_cond			2
#define ENC_add_modes				3
#define ENC_overlap				4
#define ENC_standard_transfer_mode		5
#define ENC_trap_on_nil				6
#define ENC_volatile				7
#define ENC_complete				8
#define ENC_var_apply_token			1
#define ENC_var_cond				2
#define ENC_var_limits				3
#define ENC_var_width				4
#define ENC_make_version			1
#define ENC_user_info				2


#endif


syntax highlighted by Code2HTML, v. 0.9.1