Net2/usr/src/contrib/isode/pepsy/pepy-refs.h

/*
 * data structure(s) for module T3 (t3.py)
 */

/* bits to use for optional fields */
#define OPT_REAL1	0
#define OPT_INT1	1
#define OPT_INT2	2
#define OPT_ENUM1	3
#define OPT_ENUM2	4
#define OPT_BOOL1	5
#define OPT_BOOL2	6
#define OPT_REAL2	7
#define NUMOPT		8

struct pepy_refs {
    integer		t_int;
    integer		t_enum;
    struct qbuf		*t_qbuf;
    char		*t_string;
    char		*t_ostring;
    char		*t_bstring;
    int			t_blen;
    int			t_olen;
    char		t_bool;
    double		t_real;
    OID			t_oid;
    PE			t_pe;
    PE			t_any;
    struct pepy_refs1	*t_def;
    struct pepy_refs1	*t_opt;
    char	opt_set[NBITS2NCHARS(NUMOPT)]
	};

struct pepy_refs1 {
    integer		t_int;
    integer		t_int1;
    integer		t_enum;
    integer		t_enum1;
    struct qbuf		*t_qbuf;
    struct qbuf		*t_qbuf1;
    char		*t_string;
    char		*t_string1;
    char		*t_ostring;
    char		*t_ostring1;
    char		*t_bstring;
    int			t_blen;
    char		*t_bstring1;
    int			t_blen1;
    int			t_olen;
    int			t_olen1;
    char		t_bool;
    char		t_bool1;
    double		t_real;
    double		t_real1;
    OID			t_oid;
    OID			t_oid1;
    PE			t_pe;
    PE			t_pe1;
    PE			t_any;
    char	opt_set[NBITS2NCHARS(NUMOPT)]
	};

struct rep_elem {
	int		r_int;
	char		*r_ostring;
	char		*r_bstring;
	struct rep_elem	*r_next;
    };
#define NULLREP_ELEM	(struct rep_elem *)0

struct rep_int {
	int		i;
	struct rep_int	*r;
	};
#define NULLREP_INT	(struct rep_int *)0


struct repeats {
	struct rep_int	*rp_sq1;	/* SEQUECE of INTEGER */
	struct rep_elem	*rp_sq2;	/* SEQUENCE OF Rep-elem */
	struct rep_int	*rp_st1;	/* SET OF INTEGER */
	struct rep_elem	*rp_st2;	/* SET OF Rep-elem */

	int	rp_choice;
#define RP_INT		1	/* INTEGER */
#define RP_BOOL		2	/* BOOLEAN */
#define RP_OSTRING	3	/* OCTET STRING */
	int	rp_int;		/* integer or boolean */
	char	rp_bool;	/* integer or boolean */
	char	*rp_ostring;
};

#define CD_INT		0
#define CD_C		1
#define CD_D		2
#define NCD_OPT		3

struct codedata {
	PE	cd_a;
	PE	cd_b;
	PE	cd_c;
	PE	cd_d;
	integer	cd_int;
	integer	cd_int1;
	integer	cd_int2;
	char	*cd_string;
	char	*cd_string1;
	char	*cd_string2;
	struct codedata *cd_left;
	struct codedata *cd_right;
	char	cd_opt_set[NBITS2NCHARS(NCD_OPT)];
	char	cd_bool;
	double	cd_real;
	OID	cd_oid;
	OID	cd_oid1;
	OID	cd_oid2;
	PE	cd_bit;
};