Annotation of 43BSD/contrib/B/src/bint/b1obj.h, revision 1.1

1.1     ! root        1: /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
        !             2: 
        !             3: /*
        !             4:   $Header: b1obj.h,v 1.4 85/08/22 16:42:02 timo Exp $
        !             5: */
        !             6: 
        !             7: /* B values, locations, environments: the B abstract machine */
        !             8: 
        !             9: /****************************** general ******************************/
        !            10: 
        !            11: typedef int relation; /* < 0, == 0, > 0 */
        !            12: relation compare();
        !            13: 
        !            14: #define Is_text(v) (Type(v) == Tex)
        !            15: #define Is_number(v) (Type(v) == Num)
        !            16: #define Is_compound(v) (Type(v) == Com)
        !            17: #define Is_list(v) (Type(v) == Lis || Type(v) == ELT)
        !            18: #define Is_table(v) (Type(v) == Tab || Type(v) == ELT)
        !            19: #define Is_tlt(v) (Type(v)==Tex || Type(v)==Lis || Type(v)==Tab || Type(v)==ELT)
        !            20: #define Is_ELT(v) (Type(v) == ELT)
        !            21: 
        !            22: #define Is_parsetree(v) (Type(v) == Ptn)
        !            23: #define Is_locloc(v) IsSmallInt(v)
        !            24: #define Is_simploc(v) (Type(v) == Sim)
        !            25: #define Is_tbseloc(v) (Type(v) == Tse)
        !            26: #define Is_trimloc(v) (Type(v) == Tri)
        !            27: #define Is_refinement(v) (Type(v) == Ref)
        !            28: #define Is_formal(v) (Type(v) == For)
        !            29: #define Is_filed(v) (Type(v) == Per)
        !            30: #define Is_function(v) (Type(v) == Fun)
        !            31: #define Is_predicate(v) (Type(v) == Prd)
        !            32: #define Is_howto(v) (Type(v) == How)
        !            33: 
        !            34: value grab_num();
        !            35: value regrab_num();
        !            36: value grab_rat();
        !            37: value grab_tex();
        !            38: value grab_com();
        !            39: value grab_elt();
        !            40: value grab_lis();
        !            41: value grab_tab();
        !            42: value grab_ptn();
        !            43: value grab_sim();
        !            44: value grab_tri();
        !            45: value grab_tse();
        !            46: value grab_how();
        !            47: value grab_for();
        !            48: value grab_per();
        !            49: value grab_fun();
        !            50: value grab_prd();
        !            51: value grab_ref();
        !            52: 
        !            53: value copy();
        !            54: /* Procedure release(); */
        !            55: /* Procedure uniql(); */
        !            56: /* Procedure uniq_assoc(); */
        !            57: double hash();
        !            58: 
        !            59: /****************************** Texts ******************************/
        !            60: string strcpy(), strncpy(), strcat(), sprintf(), index();
        !            61: 
        !            62: bool character();
        !            63: 
        !            64: value mk_text();
        !            65: char charval();
        !            66: string strval();
        !            67: 
        !            68: value concat();
        !            69: value behead();
        !            70: value curtail();
        !            71: #ifdef INTEGRATION
        !            72: value trim();
        !            73: #endif
        !            74: value repeat();
        !            75: 
        !            76: value adjleft();
        !            77: value centre();
        !            78: value adjright();
        !            79: 
        !            80: value convert();
        !            81: 
        !            82: /****************************** Numbers ******************************/
        !            83: 
        !            84: /* Predicates */
        !            85: bool integral();           /* is the value an integer? */
        !            86: bool large();      /* can a number be represented by a C int? */
        !            87: 
        !            88: /* Constants */
        !            89: #define zero MkSmallInt(0)
        !            90: #define one MkSmallInt(1)
        !            91: 
        !            92: /* Conversion of abstract values to concrete objects */
        !            93: double numval();     /* numeric value of any number */
        !            94: int intval();        /* numeric value of integral number */
        !            95: intlet propintlet(); /* converts int to intlet */
        !            96: string convnum();    /* character string approximation of any number */
        !            97: relation numcomp();  /* comparison of two numbers: yields -1, 0 or 1 */
        !            98: double numhash();    /* hashes any abstract number to a 'double' */
        !            99: 
        !           100: /* Conversion of concrete objects to abstract numbers */
        !           101: value numconst();    /* string argument */
        !           102: value mk_integer();  /* int argument */
        !           103: 
        !           104: /* Functions on numbers */
        !           105: value sum();
        !           106: value diff();
        !           107: value negated();
        !           108: value prod();
        !           109: value quot();
        !           110: value modulo();
        !           111: value floorf();
        !           112: value ceilf();
        !           113: value round1();
        !           114: value round2();
        !           115: value mod();
        !           116: value power();
        !           117: value absval();
        !           118: value signum();
        !           119: value numerator();
        !           120: value denominator();
        !           121: value approximate();
        !           122: value random();
        !           123: value root1();
        !           124: value sin1();
        !           125: value cos1();
        !           126: value tan1();
        !           127: value atn1();
        !           128: value exp1();
        !           129: value log1();
        !           130: value root2();
        !           131: value atn2();
        !           132: value log2();
        !           133: value pi();
        !           134: value e();
        !           135: 
        !           136: /****************************** Compounds ******************************/
        !           137: #define Nfields(c) Length(c)
        !           138: #define Field(c, i) ((Ats(c)+(i)))
        !           139: #define k_Overfields for (k= 0; k < len; k++)
        !           140: #define Lastfield(k) ((k) == len-1)
        !           141: 
        !           142: #define mk_compound(len) grab_com(len)
        !           143: 
        !           144: /****************************** Lists ******************************/
        !           145: value mk_numrange();
        !           146: value mk_charrange();
        !           147: 
        !           148: /* Procedure insert(); */
        !           149: /* Procedure remove(); */
        !           150: 
        !           151: /****************************** Tables ******************************/
        !           152: 
        !           153: value keys();
        !           154: bool in_keys();
        !           155: value associate();
        !           156: 
        !           157: /* Procedure replace(); */
        !           158: /* Procedure delete(); */
        !           159: 
        !           160: value* adrassoc();
        !           161: value* key();
        !           162: value* assoc();
        !           163: 
        !           164: /****************************** Texts, Lists, and Tables *******************/
        !           165: value mk_elt();
        !           166: 
        !           167: bool in();
        !           168: 
        !           169: value size();
        !           170: value size2();
        !           171: value min1();
        !           172: value min2();
        !           173: value max1();
        !           174: value max2();
        !           175: value th_of();
        !           176: value thof();
        !           177: 
        !           178: int length(); /* The same as size, temporary until part2 is written in B */
        !           179: bool empty(); /* whether #v=0: also temporary */
        !           180: 
        !           181: /****************************** Other kinds of value ************************/
        !           182: 
        !           183: #define Simploc(l) ((simploc *)Ats(l))
        !           184: #define Tbseloc(l) ((tbseloc *)Ats(l))
        !           185: #define Trimloc(l) ((trimloc *)Ats(l))
        !           186: #define Funprd(f)  ((funprd *)Ats(f))
        !           187: #define How_to(u)  ((how *)Ats(u))
        !           188: #define Formal(f)  ((formal *)Ats(f))
        !           189: #define Refinement(r) ((ref *)Ats(r))
        !           190: #define Perm(p) ((per *)Ats(p))
        !           191: 
        !           192: loc mk_simploc();
        !           193: loc mk_trimloc();
        !           194: loc mk_tbseloc();
        !           195: 
        !           196: value mk_per();
        !           197: fun mk_fun();
        !           198: prd mk_prd();
        !           199: value mk_how();
        !           200: value mk_ref();
        !           201: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.