#ifndef AST_H
#define AST_H
#include <nidl.h>
#include <be_pvt.h>
#include <ir_pvt.h>
#include <fe_pvt.h>
#include <nametbl.h>
#define AST_IN_LINE 0x0001
#define AST_OUT_OF_LINE 0x0002
#define AST_CODE 0x0004
#define AST_NO_CODE 0x0008
#define AST_EXPLICIT_HANDLE 0x10000
#define AST_DECODE 0x100000
#define AST_ENCODE 0x200000
#define AST_OBJECT 0x00400
#define AST_NO_CANCEL 0x1000000
#define AST_BROADCAST 0x0001
#define AST_MAYBE 0x0002
#define AST_IDEMPOTENT 0x0010
#define AST_HAS_INS 0x0020
#define AST_HAS_IN_PIPES 0x0040
#define AST_HAS_OUTS 0x0080
#define AST_HAS_OUT_PIPES 0x0100
#define AST_HAS_IN_CTX 0x0200
#define AST_HAS_IN_PTRS 0x0400
#define AST_HAS_OUT_PTRS 0x0800
#define AST_HAS_OUT_CTX 0x1000
#define AST_HAS_OUT_OOLS 0x2000
#define AST_HAS_IN_OOLS 0x4000
#define AST_HAS_IN_OUT_CTX 0x8000
#define AST_ENABLE_ALLOCATE 0x20000
#define AST_HAS_FULL_PTRS 0x40000
#define AST_HAS_XMIT_AS 0x80000
#define AST_REFLECT_DELETIONS 0x400000
#define AST_AUTO_HANDLE 0x0010
#define AST_LOCAL 0x0020
#define AST_NPB 0x0040
#define AST_IMPLICIT_HANDLE_G 0x0080
#define AST_DOUBLE_USED 0x00100
#define AST_HAS_ENCODE_OPS 0x00200
#define AST_STRING 0x0004
#define AST_STRING0 0x0008
#define AST_IGNORE 0x0040
#define AST_SMALL 0x0080
#define AST_HEAP 0x20000
#define AST_HANDLE 0x0100
#define AST_SELF_POINTER 0x1000
#define AST_CONFORMANT 0x2000
#define AST_DEF_AS_TAG 0x4000
#define AST_REF 0x0020
#define AST_UNIQUE 0x0010
#define AST_PTR 0x10000
#define AST_UNALIGN 0x8000
#define AST_V1_ENUM 0x40000
#define AST_OUT_PA_REF 0x80000
#define AST_IN_FIXED 0x100000
#define AST_IN_VARYING 0x200000
#define AST_OUT_FIXED 0x400000
#define AST_OUT_VARYING 0x800000
#define AST_CONTEXT_RD 0x1000000
#define AST_IN_PA_STUB 0x4000000
#define AST_OUT_PA_STUB 0x8000000
#define AST_IN 0x0400
#define AST_OUT 0x0800
#define AST_COMM_STATUS 0x1000
#define AST_IN_SHAPE 0x2000
#define AST_OUT_SHAPE 0x4000
#define AST_ADD_COMM_STATUS 0x8000
#define AST_FAULT_STATUS 0x40000
#define AST_ADD_FAULT_STATUS 0x80000
#define AST_CS_STAG 0x100000
#define AST_CS_DRTAG 0x200000
#define AST_CS_RTAG 0x400000
#define AST_HIDDEN 0x800000
#define AST_CONTEXT 0x0100
#define AST_VARYING 0x0200
#define AST_FIXED_LOWER 0x0001
#define AST_FIXED_UPPER 0x0002
#define AST_EXTERN 0x0001
#define AST_CLR_FLAGS(np) (np)->flags = 0
#define AST_DOUBLE_USED_SET(np) (AST_DOUBLE_USED & (np)->flags)
#define AST_CLR_DOUBLE_USED(np) (np)->flags &= ~AST_DOUBLE_USED
#define AST_SET_DOUBLE_USED(np) (np)->flags |= AST_DOUBLE_USED
#define AST_HAS_ENCODE_OPS_SET(np) (AST_HAS_ENCODE_OPS & (np)->flags)
#define AST_CLR_HAS_ENCODE_OPS(np) (np)->flags &= ~AST_HAS_ENCODE_OPS
#define AST_SET_HAS_ENCODE_OPS(np) (np)->flags |= AST_HAS_ENCODE_OPS
#define AST_UNALIGN_SET(np) (AST_UNALIGN & (np)->flags)
#define AST_CLR_UNALIGN(np) (np)->flags &= ~AST_UNALIGN
#define AST_SET_UNALIGN(np) (np)->flags |= AST_UNALIGN
#define AST_V1_ENUM_SET(np) (AST_V1_ENUM & (np)->flags)
#define AST_CLR_V1_ENUM(np) (np)->flags &= ~AST_V1_ENUM
#define AST_SET_V1_ENUM(np) (np)->flags |= AST_V1_ENUM
#define AST_HEAP_SET(np) (AST_HEAP & (np)->flags)
#define AST_CLR_HEAP(np) (np)->flags &= ~AST_HEAP
#define AST_SET_HEAP(np) (np)->flags |= AST_HEAP
#define AST_IN_LINE_SET(np) (AST_IN_LINE & (np)->flags)
#define AST_CLR_IN_LINE(np) (np)->flags &= ~AST_IN_LINE
#define AST_SET_IN_LINE(np) (np)->flags |= AST_IN_LINE
#define AST_OUT_OF_LINE_SET(np) (AST_OUT_OF_LINE & (np)->flags)
#define AST_CLR_OUT_OF_LINE(np) (np)->flags &= ~AST_OUT_OF_LINE
#define AST_SET_OUT_OF_LINE(np) (np)->flags |= AST_OUT_OF_LINE
#define AST_STRING_SET(np) (AST_STRING & (np)->flags)
#define AST_CLR_STRING(np) (np)->flags &= ~(AST_STRING)
#define AST_SET_STRING(np) (np)->flags |= AST_STRING
#define AST_STRING0_SET(np) (AST_STRING0 & (np)->flags)
#define AST_CLR_STRING0(np) (np)->flags &= ~AST_STRING0
#define AST_SET_STRING0(np) (np)->flags |= AST_STRING0
#define AST_UNIQUE_SET(np) (AST_UNIQUE & (np)->flags)
#define AST_CLR_UNIQUE(np) (np)->flags &= ~AST_UNIQUE
#define AST_SET_UNIQUE(np) (np)->flags |= AST_UNIQUE
#define AST_REF_SET(np) (AST_REF & (np)->flags)
#define AST_CLR_REF(np) (np)->flags &= ~AST_REF
#define AST_SET_REF(np) (np)->flags |= AST_REF
#define AST_PTR_SET(np) (AST_PTR & (np)->flags)
#define AST_CLR_PTR(np) (np)->flags &= ~AST_PTR
#define AST_SET_PTR(np) (np)->flags |= AST_PTR
#define AST_IGNORE_SET(np) (AST_IGNORE & (np)->flags)
#define AST_CLR_IGNORE(np) (np)->flags &= ~AST_IGNORE
#define AST_SET_IGNORE(np) (np)->flags |= AST_IGNORE
#define AST_SMALL_SET(np) (AST_SMALL & (np)->flags)
#define AST_CLR_SMALL(np) (np)->flags &= ~AST_SMALL
#define AST_SET_SMALL(np) (np)->flags |= AST_SMALL
#define AST_CODE_SET(np) (AST_CODE & (np)->flags)
#define AST_CLR_CODE(np) (np)->flags &= ~AST_CODE
#define AST_SET_CODE(np) (np)->flags |= AST_CODE
#define AST_NO_CODE_SET(np) (AST_NO_CODE & (np)->flags)
#define AST_CLR_NO_CODE(np) (np)->flags &= ~AST_NO_CODE
#define AST_SET_NO_CODE(np) (np)->flags |= AST_NO_CODE
#define AST_DECODE_SET(np) (AST_DECODE & (np)->flags)
#define AST_CLR_DECODE(np) (np)->flags &= ~AST_DECODE
#define AST_SET_DECODE(np) (np)->flags |= AST_DECODE
#define AST_ENCODE_SET(np) (AST_ENCODE & (np)->flags)
#define AST_CLR_ENCODE(np) (np)->flags &= ~AST_ENCODE
#define AST_SET_ENCODE(np) (np)->flags |= AST_ENCODE
#define AST_EXPLICIT_HANDLE_SET(np) (AST_EXPLICIT_HANDLE & (np)->flags)
#define AST_CLR_EXPLICIT_HANDLE(np) (np)->flags &= ~AST_EXPLICIT_HANDLE
#define AST_SET_EXPLICIT_HANDLE(np) (np)->flags |= AST_EXPLICIT_HANDLE
#define AST_AUTO_HANDLE_SET(np) (AST_AUTO_HANDLE & (np)->flags)
#define AST_CLR_AUTO_HANDLE(np) (np)->flags &= ~AST_AUTO_HANDLE
#define AST_SET_AUTO_HANDLE(np) (np)->flags |= AST_AUTO_HANDLE
#define AST_LOCAL_SET(np) (AST_LOCAL & (np)->flags)
#define AST_CLR_LOCAL(np) (np)->flags &= ~AST_LOCAL
#define AST_SET_LOCAL(np) (np)->flags |= AST_LOCAL
#define AST_OBJECT_SET(np) (AST_OBJECT & (np)->flags)
#define AST_CLR_OBJECT(np) ((np)->flags &= ~AST_OBJECT
#define AST_SET_OBJECT(np) (np)->flags |= AST_OBJECT
#define AST_NO_CANCEL_SET(np) (AST_NO_CANCEL & (np)->flags)
#define AST_CLR_NO_CANCEL(np) (np)->flags &= ~AST_NO_CANCEL
#define AST_SET_NO_CANCEL(np) (np)->flags |= AST_NO_CANCEL
#define AST_NPB_SET(np) (AST_NPB & (np)->flags)
#define AST_CLR_NPB(np) (np)->flags &= ~AST_NPB
#define AST_SET_NPB(np) (np)->flags |= AST_NPB
#define AST_IMPLICIT_HANDLE_G_SET(np) (AST_IMPLICIT_HANDLE_G & (np)->flags)
#define AST_CLR_IMPLICIT_HANDLE_G(np) (np)->flags &= ~AST_IMPLICIT_HANDLE_G
#define AST_SET_IMPLICIT_HANDLE_G(np) (np)->flags |= AST_IMPLICIT_HANDLE_G
#define AST_BROADCAST_SET(np) (AST_BROADCAST & (np)->flags)
#define AST_CLR_BROADCAST(np) (np)->flags &= ~AST_BROADCAST
#define AST_SET_BROADCAST(np) (np)->flags |= AST_BROADCAST
#define AST_ENABLE_ALLOCATE_SET(np) (AST_ENABLE_ALLOCATE & (np)->flags)
#define AST_CLR_ENABLE_ALLOCATE(np) (np)->flags &= ~AST_ENABLE_ALLOCATE
#define AST_SET_ENABLE_ALLOCATE(np) (np)->flags |= AST_ENABLE_ALLOCATE
#define AST_HAS_FULL_PTRS_SET(np) (AST_HAS_FULL_PTRS & (np)->flags)
#define AST_CLR_HAS_FULL_PTRS(np) (np)->flags &= ~AST_HAS_FULL_PTRS
#define AST_SET_HAS_FULL_PTRS(np) (np)->flags |= AST_HAS_FULL_PTRS
#define AST_MAYBE_SET(np) (AST_MAYBE & (np)->flags)
#define AST_CLR_MAYBE(np) (np)->flags &= ~AST_MAYBE
#define AST_SET_MAYBE(np) (np)->flags |= AST_MAYBE
#define AST_IDEMPOTENT_SET(np) (AST_IDEMPOTENT & (np)->flags)
#define AST_CLR_IDEMPOTENT(np) (np)->flags &= ~AST_IDEMPOTENT
#define AST_SET_IDEMPOTENT(np) (np)->flags |= AST_IDEMPOTENT
#define AST_REFLECT_DELETIONS_SET(np) (AST_REFLECT_DELETIONS & (np)->flags)
#define AST_CLR_REFLECT_DELETIONS(np) (np)->flags &= ~AST_REFLECT_DELETIONS
#define AST_SET_REFLECT_DELETIONS(np) (np)->flags |= AST_REFLECT_DELETIONS
#define AST_HAS_INS_SET(np) (AST_HAS_INS & (np)->flags)
#define AST_CLR_HAS_INS(np) (np)->flags &= ~AST_HAS_INS
#define AST_SET_HAS_INS(np) (np)->flags |= AST_HAS_INS
#define AST_HAS_IN_PIPES_SET(np) (AST_HAS_IN_PIPES & (np)->flags)
#define AST_CLR_HAS_IN_PIPES(np) (np)->flags &= ~AST_HAS_IN_PIPES
#define AST_SET_HAS_IN_PIPES(np) (np)->flags |= AST_HAS_IN_PIPES
#define AST_HAS_IN_PTRS_SET(np) (AST_HAS_IN_PTRS & (np)->flags)
#define AST_CLR_HAS_IN_PTRS(np) (np)->flags &= ~AST_HAS_IN_PTRS
#define AST_SET_HAS_IN_PTRS(np) (np)->flags |= AST_HAS_IN_PTRS
#define AST_HAS_IN_CTX_SET(np) (AST_HAS_IN_CTX & (np)->flags)
#define AST_CLR_HAS_IN_CTX(np) (np)->flags &= ~AST_HAS_IN_CTX
#define AST_SET_HAS_IN_CTX(np) (np)->flags |= AST_HAS_IN_CTX
#define AST_HAS_OUT_CTX_SET(np) (AST_HAS_OUT_CTX & (np)->flags)
#define AST_CLR_HAS_OUT_CTX(np) (np)->flags &= ~AST_HAS_OUT_CTX
#define AST_SET_HAS_OUT_CTX(np) (np)->flags |= AST_HAS_OUT_CTX
#define AST_HAS_IN_OUT_CTX_SET(np) (AST_HAS_IN_OUT_CTX & (np)->flags)
#define AST_CLR_HAS_IN_OUT_CTX(np) (np)->flags &= ~AST_HAS_IN_OUT_CTX
#define AST_SET_HAS_IN_OUT_CTX(np) (np)->flags |= AST_HAS_IN_OUT_CTX
#define AST_HAS_OUTS_SET(np) (AST_HAS_OUTS & (np)->flags)
#define AST_CLR_HAS_OUTS(np) (np)->flags &= ~AST_HAS_OUTS
#define AST_SET_HAS_OUTS(np) (np)->flags |= AST_HAS_OUTS
#define AST_HAS_OUT_PIPES_SET(np) (AST_HAS_OUT_PIPES & (np)->flags)
#define AST_CLR_HAS_OUT_PIPES(np) (np)->flags &= ~AST_HAS_OUT_PIPES
#define AST_SET_HAS_OUT_PIPES(np) (np)->flags |= AST_HAS_OUT_PIPES
#define AST_HAS_OUT_PTRS_SET(np) (AST_HAS_OUT_PTRS & (np)->flags)
#define AST_CLR_HAS_OUT_PTRS(np) (np)->flags &= ~AST_HAS_OUT_PTRS
#define AST_SET_HAS_OUT_PTRS(np) (np)->flags |= AST_HAS_OUT_PTRS
#define AST_HAS_OUT_OOLS_SET(np) (AST_HAS_OUT_OOLS & (np)->flags)
#define AST_CLR_HAS_OUT_OOLS(np) (np)->flags &= ~AST_HAS_OUT_OOLS
#define AST_SET_HAS_OUT_OOLS(np) (np)->flags |= AST_HAS_OUT_OOLS
#define AST_HAS_IN_OOLS_SET(np) (AST_HAS_IN_OOLS & (np)->flags)
#define AST_CLR_HAS_IN_OOLS(np) (np)->flags &= ~AST_HAS_IN_OOLS
#define AST_SET_HAS_IN_OOLS(np) (np)->flags |= AST_HAS_IN_OOLS
#define AST_HAS_XMIT_AS_SET(np) (AST_HAS_XMIT_AS & (np)->flags)
#define AST_CLR_HAS_XMIT_AS(np) (np)->flags &= ~AST_HAS_XMIT_AS
#define AST_SET_HAS_XMIT_AS(np) (np)->flags |= AST_HAS_XMIT_AS
#define AST_OUT_PA_REF_SET(np) (AST_OUT_PA_REF & (np)->flags)
#define AST_CLR_OUT_PA_REF(np) (np)->flags &= ~AST_OUT_PA_REF
#define AST_SET_OUT_PA_REF(np) (np)->flags |= AST_OUT_PA_REF
#define AST_IN_SET(np) (AST_IN & (np)->flags)
#define AST_CLR_IN(np) (np)->flags &= ~AST_IN
#define AST_SET_IN(np) (np)->flags |= AST_IN
#define AST_OUT_SET(np) (AST_OUT & (np)->flags)
#define AST_CLR_OUT(np) (np)->flags &= ~AST_OUT
#define AST_SET_OUT(np) (np)->flags |= AST_OUT
#define AST_IN_SHAPE_SET(np) (AST_IN_SHAPE & (np)->flags)
#define AST_CLR_IN_SHAPE(np) (np)->flags &= ~AST_IN_SHAPE
#define AST_SET_IN_SHAPE(np) (np)->flags |= AST_IN_SHAPE
#define AST_OUT_SHAPE_SET(np) (AST_OUT_SHAPE & (np)->flags)
#define AST_CLR_OUT_SHAPE(np) (np)->flags &= ~AST_OUT_SHAPE
#define AST_SET_OUT_SHAPE(np) (np)->flags |= AST_OUT_SHAPE
#define AST_COMM_STATUS_SET(np) (AST_COMM_STATUS & (np)->flags)
#define AST_CLR_COMM_STATUS(np) (np)->flags &= ~AST_COMM_STATUS
#define AST_SET_COMM_STATUS(np) (np)->flags |= AST_COMM_STATUS
#define AST_ADD_COMM_STATUS_SET(np) (AST_ADD_COMM_STATUS & (np)->flags)
#define AST_CLR_ADD_COMM_STATUS(np) (np)->flags &= ~AST_ADD_COMM_STATUS
#define AST_SET_ADD_COMM_STATUS(np) (np)->flags |= AST_ADD_COMM_STATUS
#define AST_FAULT_STATUS_SET(np) (AST_FAULT_STATUS & (np)->flags)
#define AST_CLR_FAULT_STATUS(np) (np)->flags &= ~AST_FAULT_STATUS
#define AST_SET_FAULT_STATUS(np) (np)->flags |= AST_FAULT_STATUS
#define AST_ADD_FAULT_STATUS_SET(np) (AST_ADD_FAULT_STATUS & (np)->flags)
#define AST_CLR_ADD_FAULT_STATUS(np) (np)->flags &= ~AST_ADD_FAULT_STATUS
#define AST_SET_ADD_FAULT_STATUS(np) (np)->flags |= AST_ADD_FAULT_STATUS
#define AST_CS_STAG_SET(np) (AST_CS_STAG & (np)->flags)
#define AST_CLR_CS_STAG(np) (np)->flags &= ~AST_CS_STAG
#define AST_SET_CS_STAG(np) (np)->flags |= AST_CS_STAG
#define AST_CS_DRTAG_SET(np) (AST_CS_DRTAG & (np)->flags)
#define AST_CLR_CS_DRTAG(np) (np)->flags &= ~AST_CS_DRTAG
#define AST_SET_CS_DRTAG(np) (np)->flags |= AST_CS_DRTAG
#define AST_CS_RTAG_SET(np) (AST_CS_RTAG & (np)->flags)
#define AST_CLR_CS_RTAG(np) (np)->flags &= ~AST_CS_RTAG
#define AST_SET_CS_RTAG(np) (np)->flags |= AST_CS_RTAG
#define AST_HIDDEN_SET(np) (AST_HIDDEN & (np)->flags)
#define AST_CLR_HIDDEN(np) (np)->flags &= ~AST_HIDDEN
#define AST_SET_HIDDEN(np) (np)->flags |= AST_HIDDEN
#define AST_HANDLE_SET(np) (AST_HANDLE & (np)->flags)
#define AST_CLR_HANDLE(np) (np)->flags &= ~AST_HANDLE
#define AST_SET_HANDLE(np) (np)->flags |= AST_HANDLE
#define AST_CONTEXT_RD_SET(np) (AST_CONTEXT_RD & (np)->flags)
#define AST_CLR_CONTEXT_RD(np) (np)->flags &= ~AST_CONTEXT_RD
#define AST_SET_CONTEXT_RD(np) (np)->flags |= AST_CONTEXT_RD
#define AST_SELF_POINTER_SET(np) (AST_SELF_POINTER & (np)->flags)
#define AST_CLR_SELF_POINTER(np) (np)->flags &= ~AST_SELF_POINTER
#define AST_SET_SELF_POINTER(np) (np)->flags |= AST_SELF_POINTER
#define AST_CONTEXT_SET(np) (AST_CONTEXT & (np)->flags)
#define AST_CLR_CONTEXT(np) (np)->flags &= ~AST_CONTEXT
#define AST_SET_CONTEXT(np) (np)->flags |= AST_CONTEXT
#define AST_FIXED_LOWER_SET(np) (AST_FIXED_LOWER & (np)->flags)
#define AST_CLR_FIXED_LOWER(np) (np)->flags &= ~AST_FIXED_LOWER
#define AST_SET_FIXED_LOWER(np) (np)->flags |= AST_FIXED_LOWER
#define AST_FIXED_UPPER_SET(np) (AST_FIXED_UPPER & (np)->flags)
#define AST_CLR_FIXED_UPPER(np) (np)->flags &= ~AST_FIXED_UPPER
#define AST_SET_FIXED_UPPER(np) (np)->flags |= AST_FIXED_UPPER
#define AST_CONFORMANT_SET(np) (AST_CONFORMANT & (np)->flags)
#define AST_CLR_CONFORMANT(np) (np)->flags &= ~AST_CONFORMANT
#define AST_SET_CONFORMANT(np) (np)->flags |= AST_CONFORMANT
#define AST_VARYING_SET(np) (AST_VARYING & (np)->flags)
#define AST_CLR_VARYING(np) (np)->flags &= ~AST_VARYING
#define AST_SET_VARYING(np) (np)->flags |= AST_VARYING
#define AST_DEF_AS_TAG_SET(np) (AST_DEF_AS_TAG & (np)->flags)
#define AST_CLR_DEF_AS_TAG(np) (np)->flags &= ~AST_DEF_AS_TAG
#define AST_SET_DEF_AS_TAG(np) (np)->flags |= AST_DEF_AS_TAG
#define AST_IN_FIXED_SET(np) (AST_IN_FIXED & (np)->flags)
#define AST_CLR_IN_FIXED(np) (np)->flags &= ~AST_IN_FIXED
#define AST_SET_IN_FIXED(np) (np)->flags |= AST_IN_FIXED
#define AST_IN_VARYING_SET(np) (AST_IN_VARYING & (np)->flags)
#define AST_CLR_IN_VARYING(np) (np)->flags &= ~AST_IN_VARYING
#define AST_SET_IN_VARYING(np) (np)->flags |= AST_IN_VARYING
#define AST_OUT_FIXED_SET(np) (AST_OUT_FIXED & (np)->flags)
#define AST_CLR_OUT_FIXED(np) (np)->flags &= ~AST_OUT_FIXED
#define AST_SET_OUT_FIXED(np) (np)->flags |= AST_OUT_FIXED
#define AST_OUT_VARYING_SET(np) (AST_OUT_VARYING & (np)->flags)
#define AST_CLR_OUT_VARYING(np) (np)->flags &= ~AST_OUT_VARYING
#define AST_SET_OUT_VARYING(np) (np)->flags |= AST_OUT_VARYING
#define AST_IN_PA_STUB_SET(np) (AST_IN_PA_STUB & (np)->flags)
#define AST_CLR_IN_PA_STUB(np) (np)->flags &= ~AST_IN_PA_STUB
#define AST_SET_IN_PA_STUB(np) (np)->flags |= AST_IN_PA_STUB
#define AST_OUT_PA_STUB_SET(np) (AST_OUT_PA_STUB & (np)->flags)
#define AST_CLR_OUT_PA_STUB(np) (np)->flags &= ~AST_OUT_PA_STUB
#define AST_SET_OUT_PA_STUB(np) (np)->flags |= AST_OUT_PA_STUB
#define AST_EXTERN_SET(np) (AST_EXTERN & (np)->flags)
#define AST_CLR_EXTERN(np) (np)->flags &= ~AST_EXTERN
#define AST_SET_EXTERN(np) (np)->flags |= AST_EXTERN
#define AST_MUTABLE_SET(np) (((np)->flags & (AST_UNIQUE|AST_REF)) == 0)
#define AST_SET_MUTABLE(np) ((np) == (np))
typedef unsigned long AST_flags_t;
typedef struct AST_interface_n_t {
fe_info_t *fe_info;
be_info_t be_info;
NAMETABLE_id_t name;
nidl_uuid_t uuid;
unsigned long int version;
int number_of_ports;
STRTAB_str_t *protocol;
STRTAB_str_t *endpoints;
NAMETABLE_id_t implicit_handle_name;
NAMETABLE_id_t implicit_handle_type_name;
struct AST_type_n_t *implicit_handle_type;
int op_count;
AST_flags_t flags;
struct AST_type_p_n_t *pipe_types;
struct AST_type_p_n_t *ool_types;
struct AST_type_p_n_t *ra_types;
struct AST_type_p_n_t *cs_types;
struct AST_type_p_n_t *sp_types;
struct AST_type_p_n_t *pa_types;
struct AST_type_p_n_t *up_types;
struct AST_include_n_t *includes;
struct AST_import_n_t *imports;
struct AST_export_n_t *exports;
struct AST_exception_n_t *exceptions;
NAMETABLE_id_t cs_tag_rtn_name;
struct AST_name_n_t *cs_tag_rtns;
NAMETABLE_id_t binding_callout_name;
NAMETABLE_id_t inherited_interface_name;
int pointer_default;
struct AST_type_n_t * orpc_intf_type;
struct AST_interface_n_t *prev;
} AST_interface_n_t;
typedef struct AST_type_p_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_type_p_n_t *next;
struct AST_type_p_n_t *last;
struct AST_type_n_t *type;
} AST_type_p_n_t;
typedef struct AST_include_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_include_n_t *next;
struct AST_include_n_t *last;
STRTAB_str_t file_name;
STRTAB_str_t simple_file_name;
} AST_include_n_t;
typedef struct AST_exception_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_exception_n_t *next;
struct AST_exception_n_t *last;
NAMETABLE_id_t name;
AST_flags_t flags;
} AST_exception_n_t;
typedef struct AST_name_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_name_n_t *next;
struct AST_name_n_t *last;
NAMETABLE_id_t name;
} AST_name_n_t;
typedef struct AST_import_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_import_n_t *next;
struct AST_import_n_t *last;
STRTAB_str_t file_name;
AST_interface_n_t *interface;
} AST_import_n_t;
typedef enum {
AST_constant_k,
AST_operation_k,
AST_type_k,
AST_cpp_quote_k
} AST_export_k_t;
typedef struct AST_export_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_export_n_t *next;
struct AST_export_n_t *last;
AST_export_k_t kind;
union {
struct AST_constant_n_t *exported_constant;
struct AST_type_n_t *exported_type;
struct AST_operation_n_t *exported_operation;
struct AST_cpp_quote_n_t *exported_cpp_quote;
} thing_p;
} AST_export_n_t;
typedef struct AST_cpp_quote_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_cpp_quotes_n_t *next;
struct AST_cpp_quotes_n_t *last;
STRTAB_str_t text;
} AST_cpp_quote_n_t;
typedef enum {
AST_nil_const_k,
AST_int_const_k,
AST_hyper_int_const_k,
AST_char_const_k,
AST_string_const_k,
AST_boolean_const_k
} AST_constant_k_t;
#define AST_EXP_CONSTANT 0x000000000
#define AST_EXP_SUB_EXP 0x000000001
#define AST_EXP_UNARY_NOT 0x000000002
#define AST_EXP_UNARY_TILDE 0x000000004
#define AST_EXP_UNARY_PLUS 0x000000008
#define AST_EXP_UNARY_MINUS 0x000000010
#define AST_EXP_UNARY_STAR 0x000000020
#define AST_EXP_1_OP_MASK 0x000000fff
#define AST_EXP_BINARY_PERCENT 0x000001000
#define AST_EXP_BINARY_SLASH 0x000002000
#define AST_EXP_BINARY_STAR 0x000004000
#define AST_EXP_BINARY_MINUS 0x000008000
#define AST_EXP_BINARY_PLUS 0x000010000
#define AST_EXP_BINARY_RSHIFT 0x000020000
#define AST_EXP_BINARY_LSHIFT 0x000040000
#define AST_EXP_BINARY_GE 0x000080000
#define AST_EXP_BINARY_LE 0x000100000
#define AST_EXP_BINARY_GT 0x000200000
#define AST_EXP_BINARY_LT 0x000400000
#define AST_EXP_BINARY_NE 0x000800000
#define AST_EXP_BINARY_EQUAL 0x001000000
#define AST_EXP_BINARY_AND 0x002000000
#define AST_EXP_BINARY_OR 0x004000000
#define AST_EXP_BINARY_XOR 0x008000000
#define AST_EXP_BINARY_LOG_OR 0x010000000
#define AST_EXP_BINARY_LOG_AND 0x020000000
#define AST_EXP_TUPLE 0x040000000
#define AST_EXP_2_OP_MASK 0x0fffff000
#define AST_EXP_TERNARY_OP 0x000000001
#define AST_EXP_3_OP_MASK 0x100000000ULL
typedef struct AST_constant_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_constant_n_t *next;
struct AST_constant_n_t *last;
NAMETABLE_id_t name;
struct AST_constant_n_t *defined_as;
AST_constant_k_t kind;
union {
STRTAB_str_t string_val;
char char_val;
boolean boolean_val;
long int int_val;
struct {
long int high;
unsigned long int low;
} hyper_int_val;
} value;
boolean int_signed;
} AST_constant_n_t;
typedef enum {
AST_handle_k,
AST_boolean_k, AST_byte_k, AST_character_k,
AST_small_integer_k, AST_short_integer_k, AST_long_integer_k,
AST_hyper_integer_k,
AST_small_unsigned_k, AST_short_unsigned_k, AST_long_unsigned_k,
AST_hyper_unsigned_k,
AST_short_float_k, AST_long_float_k,
AST_array_k, AST_structure_k, AST_pipe_k, AST_pointer_k, AST_void_k,
AST_function_k, AST_disc_union_k, AST_enum_k,
AST_null_k, AST_interface_k
} AST_type_k_t;
typedef struct AST_type_n_t {
fe_info_t *fe_info;
be_info_t be_info;
NAMETABLE_id_t name;
struct AST_type_n_t *defined_as;
AST_type_k_t kind;
union {
struct AST_array_n_t *array;
struct AST_disc_union_n_t *disc_union;
struct AST_enumeration_n_t *enumeration;
struct AST_pipe_n_t *pipe;
struct AST_pointer_n_t *pointer;
struct AST_operation_n_t *function;
struct AST_structure_n_t *structure;
struct AST_interface_n_t *interface;
} type_structure;
AST_flags_t flags;
struct AST_type_n_t *xmit_as_type;
struct AST_rep_as_n_t *rep_as_type;
struct AST_cs_char_n_t *cs_char_type;
int ndr_size;
int alignment_size;
struct AST_type_n_t *array_rep_type;
IR_info_t ir_info;
struct IR_tup_n_t *data_tups;
NAMETABLE_id_t iid_is_name;
} AST_type_n_t;
typedef struct AST_rep_as_n_t {
fe_info_t *fe_info;
be_info_t be_info;
NAMETABLE_id_t type_name;
STRTAB_str_t file_name;
IR_info_t ir_info;
struct IR_tup_n_t *data_tups;
} AST_rep_as_n_t;
typedef struct AST_cs_char_n_t {
fe_info_t *fe_info;
be_info_t be_info;
NAMETABLE_id_t type_name;
IR_info_t ir_info;
struct IR_tup_n_t *data_tups;
} AST_cs_char_n_t;
typedef struct AST_array_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_type_n_t *element_type;
unsigned short index_count;
struct AST_array_index_n_t *index_vec;
} AST_array_n_t;
typedef struct AST_array_index_n_t {
fe_info_t *fe_info;
be_info_t be_info;
AST_flags_t flags;
AST_constant_n_t *lower_bound;
AST_constant_n_t *upper_bound;
} AST_array_index_n_t;
typedef struct AST_disc_union_n_t {
fe_info_t *fe_info;
be_info_t be_info;
NAMETABLE_id_t tag_name;
NAMETABLE_id_t union_name;
NAMETABLE_id_t discrim_name;
struct AST_type_n_t *discrim_type;
struct AST_arm_n_t *arms;
} AST_disc_union_n_t;
#if 0
typedef struct AST_arm_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_arm_n_t *next;
struct AST_arm_n_t *last;
AST_flags_t flags;
struct AST_case_label_n_t *labels;
NAMETABLE_id_t name;
AST_type_n_t *type;
} AST_arm_n_t;
#endif
typedef struct AST_arm_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_arm_n_t *next;
struct AST_arm_n_t *last;
AST_type_n_t *type;
struct AST_field_attr_n_t *field_attrs;
NAMETABLE_id_t name;
AST_flags_t flags;
IR_info_t ir_info;
struct AST_case_label_n_t *labels;
} AST_arm_n_t;
typedef struct AST_case_label_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_case_label_n_t *next;
struct AST_case_label_n_t *last;
boolean default_label;
AST_constant_n_t *value;
} AST_case_label_n_t;
typedef struct AST_enumeration_n_t {
fe_info_t *fe_info;
be_info_t be_info;
AST_constant_n_t *enum_constants;
} AST_enumeration_n_t;
typedef struct AST_pipe_n_t {
fe_info_t *fe_info;
be_info_t be_info;
AST_type_n_t *base_type;
} AST_pipe_n_t;
typedef struct AST_pointer_n_t {
fe_info_t *fe_info;
be_info_t be_info;
AST_type_n_t *pointee_type;
} AST_pointer_n_t;
typedef struct AST_structure_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_field_n_t *fields;
NAMETABLE_id_t tag_name;
} AST_structure_n_t;
#if 0
typedef struct AST_field_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_field_n_t *next;
struct AST_field_n_t *last;
AST_flags_t flags;
NAMETABLE_id_t name;
struct AST_type_n_t *type;
struct AST_field_attr_n_t *field_attrs;
} AST_field_n_t;
#endif
typedef struct AST_field_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_field_n_t *next;
struct AST_field_n_t *last;
struct AST_type_n_t *type;
struct AST_field_attr_n_t *field_attrs;
NAMETABLE_id_t name;
AST_flags_t flags;
IR_info_t ir_info;
int field_num;
} AST_field_n_t;
typedef struct AST_tuple_n_t {
long value[2];
} AST_tuple_n_t;
typedef struct AST_field_attr_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_field_ref_n_t *first_is_vec;
struct AST_field_ref_n_t *last_is_vec;
struct AST_field_ref_n_t *length_is_vec;
struct AST_field_ref_n_t *min_is_vec;
struct AST_field_ref_n_t *max_is_vec;
struct AST_field_ref_n_t *size_is_vec;
struct AST_field_ref_n_t *switch_is;
struct AST_field_ref_n_t *iid_is;
struct AST_tuple_n_t *range;
} AST_field_attr_n_t;
typedef struct AST_exp_n_t {
unsigned long long exp_type;
union {
struct {
AST_constant_k_t type;
union {
int integer;
AST_constant_n_t *other;
} val;
boolean int_signed;
NAMETABLE_id_t name;
} constant;
struct {
struct AST_exp_n_t * oper1;
struct AST_exp_n_t * oper2;
struct AST_exp_n_t * oper3;
} expression;
} exp;
} AST_exp_n_t;
typedef struct AST_field_ref_n_t {
fe_info_t *fe_info;
be_info_t be_info;
boolean valid;
boolean constant;
union {
struct AST_field_n_t *f_ref;
struct AST_parameter_n_t *p_ref;
int integer;
} ref;
unsigned long xtra_opcode;
unsigned long xtra_argument;
} AST_field_ref_n_t;
#if 0
typedef struct AST_parameter_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_parameter_n_t *next;
struct AST_parameter_n_t *last;
NAMETABLE_id_t name;
struct AST_type_n_t *type;
struct AST_field_attr_n_t *field_attrs;
AST_flags_t flags;
struct AST_operation_n_t *uplink;
} AST_parameter_n_t;
#endif
typedef struct AST_parameter_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_parameter_n_t *next;
struct AST_parameter_n_t *last;
struct AST_type_n_t *type;
struct AST_field_attr_n_t *field_attrs;
NAMETABLE_id_t name;
AST_flags_t flags;
IR_info_t ir_info;
struct IR_tup_n_t *data_tups;
int param_num;
struct AST_operation_n_t *uplink;
} AST_parameter_n_t;
typedef struct AST_operation_n_t {
fe_info_t *fe_info;
be_info_t be_info;
AST_flags_t flags;
NAMETABLE_id_t name;
AST_parameter_n_t* parameters;
AST_parameter_n_t* result;
int op_number;
IR_info_t ir_info;
struct IR_tup_n_t *init_tups;
struct IR_tup_n_t *clean_tups;
NAMETABLE_id_t cs_tag_rtn_name;
} AST_operation_n_t;
typedef struct AST_instance_n_t {
fe_info_t *fe_info;
be_info_t be_info;
struct AST_instance_n_t *next;
struct AST_instance_n_t *last;
struct AST_type_n_t *type;
struct AST_field_attr_n_t *field_attrs;
NAMETABLE_id_t name;
AST_flags_t flags;
IR_info_t ir_info;
} AST_instance_n_t;
#endif