#ifndef _TYPE_UTIL_H_
#define _TYPE_UTIL_H_

/*
 * IS A ... functions
 */
extern int is_typedef _ANSI_PROTO_((symbol_t*));
extern int is_array _ANSI_PROTO_((typeinfo_t*));
extern int is_access _ANSI_PROTO_((typeinfo_t*));
extern int is_aggregate _ANSI_PROTO_((typeinfo_t*));
extern int is_access_to_record _ANSI_PROTO_((typeinfo_t*));
extern int is_enum_literal _ANSI_PROTO_((symbol_t*));
extern int is_function_pointer _ANSI_PROTO_((typeinfo_t *));
extern int is_static_function _ANSI_PROTO_((typeinfo_t *));

extern int alignto _ANSI_PROTO_((int,int));

/*
 * Allocation, copy and concatination
 */
extern typeinfo_t *new_type _ANSI_PROTO_((typekind_t));
extern typeinfo_t *copy_type _ANSI_PROTO_((typeinfo_t*));
extern typeinfo_t *concat_types _ANSI_PROTO_((typeinfo_t*, typeinfo_t*));

/*
 * Functions to modify types
 */
extern typeinfo_t *set_signed_type _ANSI_PROTO_((typeinfo_t*));
extern typeinfo_t *set_unsigned_type _ANSI_PROTO_((typeinfo_t*));
extern typeinfo_t *add_pointer_type _ANSI_PROTO_((typeinfo_t*));
extern typeinfo_t *add_function_type _ANSI_PROTO_((typeinfo_t*));
extern typeinfo_t *add_array_type _ANSI_PROTO_((typeinfo_t*, host_int_t));

/*
 * Type sizeof() and alignof() functions
 */
extern int type_sizeof _ANSI_PROTO_((typeinfo_t*));
extern int type_alignof _ANSI_PROTO_((typeinfo_t*));

/*
 * Routines for maintaining type tables and comparing types
 */
extern unsigned int set_hash_for_type _ANSI_PROTO_((typeinfo_t*));
extern int equal_types _ANSI_PROTO_((typeinfo_t*, typeinfo_t*));

#endif /* _TYPE_UTIL_H_ */


syntax highlighted by Code2HTML, v. 0.9.1