PreviousUpNext

15.3.357  src/lib/src/bool-vector.api

## bool-vector.api

# Compiled by:
#     src/lib/std/standard.lib



api Bool_Vector = api {                 # No, this cannot be changed to just   "api Bool_Vector {"   -- see bottom of file.

    include api Typelocked_Vector;      # Typelocked_Vector     is from   src/lib/std/src/typelocked-vector.api
/**
      where type Element = Bool
**/

    from_string:  String -> Vector;
        #
        # The string argument gives a hexadecimal
        # representation of the bits set in the
        # vector. Characters 0-9, a-f and A-F are
        # allowed. For example,
        #  from_string "1af8" = 0001101011111000
        #  (by convention, 0 corresponds to FALSE and 1 corresponds
        #  to TRUE, bit 0 appears on the right,
        #  and indices increase to the left)
        # The length of the vector will be 4*(size string).
        # Raises LibBase::BadArg if a non-hexadecimal character
        # appears in the string.


    bits:  (Int, List(Int)) -> Vector;
        #
        # Create vector of the given length with the indices of its set bits 
        # given by the list argument.
        # Raises INDEX_OUT_OF_BOUNDS if a list item is < 0 or >= length.


    get_bits:  Vector -> List( Int );
        #
        # Returns list of bits set in bit rw_vector, in increasing
        # order of indices.


    to_string:  Vector -> String;
      # Inverse of stringToBits.
      # The bit rw_vector is zero-padded to the next
      # length that is a multiple of 4. 


    is_zero:   Vector -> Bool;
        #
        # Returns TRUE if and only if no bits are set. 

    extend0:  (Vector, Int) -> Vector;
    extend1:  (Vector, Int) -> Vector;
        #
        # Extend bit rw_vector by 0's or 1's to given length.
        # If bit rw_vector is already >= argument length, return a copy
        # of the bit rw_vector.
        # Raises SIZE if length < 0.


    eq_bits:  (Vector, Vector) -> Bool;
        #
        # TRUE if set bits are identical 

    equal:  (Vector, Vector) -> Bool;
        #
        # TRUE if same length and same set bits 

    bitwise_and:  (Vector, Vector, Int) -> Vector;
    bitwise_or:   (Vector, Vector, Int) -> Vector;
    bitwise_xor:  (Vector, Vector, Int) -> Vector;
        #
        # Create new vector of the given length
        # by logically combining bits of original 
        # vectors using and, or and xor, respectively. 
        # If necessary, the vectors are
        # implicitly extended by 0 to be the same length 
        # as the new vector.


    bitwise_not:   Vector -> Vector;
        #
        # Create new vector with all bits of original
        # vector inverted.


    lshift:   (Vector, Int) -> Vector;
        #
        # lshift (ba, n) creates a new vector by
        # inserting n 0's on the right of ba.
        # The new vector has length n + length ba.


    rshift:   (Vector, Int) -> Vector;
        #
        # rshift (ba, n) creates a new vector of
        # of length max (0, length ba - n) consisting
        # of bits n, n+1, ..., length ba - 1 of ba.
        # If n >= length ba, the new vector has length 0.


  }
    where  Element == Bool;


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


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext