PreviousUpNext

15.3.568  src/lib/std/src/unt.api

## unt.api

# Compiled by:
#     src/lib/std/src/standard-core.sublib



###                 "Words are, of course, the most
###                  powerful drug used by mankind."
###
###                             -- Rudyard Kipling



stipulate
    package mwi =  multiword_int;                               # multiword_int         is from   src/lib/std/types-only/basis-structs.pkg
    package nst =  number_string;                               # number_string         is from   src/lib/std/src/number-string.pkg
herein

    # This api is implemented in:
    #
    #     src/lib/std/src/one-word-unt-guts.pkg
    #     src/lib/std/src/one-byte-unt-guts.pkg
    #     src/lib/std/src/tagged-unt-guts.pkg
    #     src/lib/std/src/two-word-unt.pkg
    #
    api Unt {
        #
        eqtype Unt;

        unt_size:  Int;

        to_large_unt:     Unt -> large_unt::Unt;
        to_large_unt_x:   Unt -> large_unt::Unt;
        from_large_unt:   large_unt::Unt -> Unt;

        to_multiword_int:     Unt -> mwi::Int;
        to_multiword_int_x:   Unt -> mwi::Int;
        from_multiword_int:   mwi::Int -> Unt;

        to_int:     Unt -> Int;
        to_int_x:   Unt -> Int;
        from_int:   Int -> Unt;

        bitwise_or:   (Unt, Unt) -> Unt;
        bitwise_xor:  (Unt, Unt) -> Unt;
        bitwise_and:  (Unt, Unt) -> Unt;
        bitwise_not:  Unt -> Unt;

        <<  : (Unt, unt::Unt) -> Unt;
        >>  : (Unt, unt::Unt) -> Unt;
        >>> : (Unt, unt::Unt) -> Unt;

        + : (Unt, Unt) -> Unt;
        - : (Unt, Unt) -> Unt;
        * : (Unt, Unt) -> Unt;
        / : (Unt, Unt) -> Unt;
        % : (Unt, Unt) -> Unt;

        compare:  (Unt, Unt) -> Order;

        >  : (Unt, Unt) -> Bool;
        >= : (Unt, Unt) -> Bool;
        <  : (Unt, Unt) -> Bool;
        <= : (Unt, Unt) -> Bool;

        (-_):  Unt -> Unt;
         min:  (Unt, Unt) -> Unt;
         max:  (Unt, Unt) -> Unt;

        sum:      List( Unt ) -> Unt;
        product:  List( Unt ) -> Unt;

        list_min: List( Unt ) -> Unt;                                   # Raises an exception if list is empty.
        list_max: List( Unt ) -> Unt;                                   # Raises an exception if list is empty.

        sort:                           List( Unt ) -> List( Unt );
        sort_and_drop_duplicates:       List( Unt ) -> List( Unt );

        scan:   nst::Radix
                 -> nst::Reader (Char, X)
                 -> nst::Reader (Unt,  X);

        from_string:  String -> Null_Or( Unt );

        format:  nst::Radix -> Unt -> String;
        to_string:    Unt -> String;

    };
end;



## COPYRIGHT (c) 1995 AT&T Bell Laboratories.
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2015,
## released per terms of SMLNJ-COPYRIGHT.


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext