Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
/* Type representation data structure for PCAT.
(Includes support for reals and records.) */
typedef struct TyperepS *Typerep;
typedef struct ProductS *Product;
struct TyperepS {
enum {Base = 0, Array, Procedure, Record} kind; /* type operator */
union {
struct { /* for Base types: */
char *name; /* type name */
} base;
struct { /* for Array types: */
Typerep etype; /* element type */
} array;
struct { /* for Procedure types: */
Typerep rtype; /* return type */
Product args; /* argument list */
} proc;
struct { /* for Record types: */
Product fields; /* record fields in name-sorted order */
} record;
} u;
};
struct ProductS { /* labelled list of types */
char *name; /* element name */
Typerep type; /* element type */
Product link; /* next element of product */
};
/* Constructors */
Typerep mk_BaseTyperep(char *name);
Typerep mk_ArrayTyperep(Typerep etype);
Typerep mk_ProcTyperep(Typerep rtype,Product args);
Typerep mk_RecordTyperep(Product fields);
Product mk_Product(char *name, Typerep type, Product link);
/* Declare the built-in types. */
extern Typerep void_type;
extern Typerep int_type;
extern Typerep bool_type;
extern Typerep string_type;
extern Typerep real_type;
extern Typerep nil_type; /* a polymorphic record type */
/* Handy for printing error messages; debugging. */
void printtype(Typerep, FILE * fp);