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

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

unix.superglobalmegacorp.com

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