1: /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 2: 3: /* 4: $Header: b2tcP.h,v 1.4 85/08/22 16:43:20 timo Exp $ 5: */ 6: 7: /* polytype representation */ 8: 9: typedef value typekind; 10: typedef value polytype; 11: 12: /* accessing, NOT giving new values */ 13: 14: typekind kind(); /* polytype u */ 15: intlet nsubtypes(); /* polytype u */ 16: polytype subtype(); /* polytype u, intlet i */ 17: polytype asctype(); /* polytype u */ 18: polytype keytype(); /* polytype u */ 19: value ident(); /* polytype u */ 20: 21: /* MaKe Types, where subtypes are "eaten" */ 22: 23: polytype mkt_polytype(); /* typekind k; intlet nsub */ 24: /* visible only in bunif.c */ 25: /* Procedure putsubtype(); */ /* polytype sub, *pcomp; intlet isub */ 26: /* to be used after mkt_polytype or 27: * mkt_compound */ 28: 29: polytype mkt_number(); 30: polytype mkt_text(); 31: polytype mkt_tn(); 32: polytype mkt_error(); 33: polytype mkt_list(); /* polytype s */ 34: polytype mkt_table(); /* polytype k, a */ 35: polytype mkt_lt(); /* polytype s */ 36: polytype mkt_tlt(); /* polytype s */ 37: /* next to be used with putsubtype() calls */ 38: polytype mkt_compound(); /* intlet nsub */ 39: polytype mkt_var(); /* value id */ 40: polytype mkt_newvar(); 41: 42: polytype p_copy(); /* polytype u */ 43: /* Procedure p_release(); */ /* polytype u */ 44: 45: /* predicates */ 46: 47: bool are_same_types(); /* polytype u, v */ 48: bool have_same_structure();/* polytype u, v */ 49: 50: bool t_is_number(); /* typekind k */ 51: bool t_is_text(); /* typekind k */ 52: bool t_is_tn(); /* typekind k */ 53: bool t_is_error(); /* typekind k */ 54: bool t_is_list(); /* typekind k */ 55: bool t_is_table(); /* typekind k */ 56: bool t_is_lt(); /* typekind k */ 57: bool t_is_tlt(); /* typekind k */ 58: bool t_is_compound(); /* typekind k */ 59: bool t_is_var(); /* typekind k */ 60: bool has_number(); /* typekind k */ 61: bool has_text(); /* typekind k */ 62: bool has_lt(); /* typekind k */ 63: 64: /* typetable */ 65: 66: /* Procedure repl_type_of(); */ /* polytype u, tu */ 67: bool table_has_type_of(); /* polytype u */ 68: polytype type_of(); /* polytype u */ 69: polytype bottom_var(); /* polytype u */ 70: 71: /* Procedure usetypetable(); */ /* value t */ 72: /* Procedure deltypetable(); */ 73: 74: /* init */ 75: 76: /* Procedure initpol(); */ /* */