Go to the first, previous, next, last section, table of contents.


11.1.6 Unsigned Integer Trait

C++ unsigned types (unsigned char, unsigned short, unsigned int, and unsigned long) represent unsigned integers with the same number of bits as their corresponding signed integer.

% @(#)$Id: unsigned.lsl,v 1.5 1995/07/26 21:16:23 leavens Exp $

unsigned: trait

  includes unsignedChar, unsignedShort, unsignedInt, unsignedLong

  introduces 
    to_unsignedShort: unsignedChar -> unsignedShort
    to_unsignedInt: unsignedShort -> unsignedInt
    to_unsignedLong: unsignedInt -> unsignedLong

  asserts
    \forall c: unsignedChar, s: unsignedShort, i: unsignedInt
      to_unsignedShort(0) == 0;
      to_unsignedShort(succ(c)) == succ(to_unsignedShort(c));
      to_unsignedInt(0) == 0;
      to_unsignedInt(succ(s)) == succ(to_unsignedInt(s));
      to_unsignedLong(0) == 0;
      to_unsignedLong(succ(i)) == succ(to_unsignedLong(i));
      to_unsignedShort(UCHAR_MAX) <= USHRT_MAX;
      to_unsignedInt(USHRT_MAX) <= UINT_MAX;
      to_unsignedLong(UINT_MAX) <= ULONG_MAX

The following traits specify the abstract values of the types unsigned char, unsigned short, unsigned int, and unsigned long. The included trait IntCycle(first,last,N) found in the LSL Handbook, defines a finite subrange of integers from first to last. The subrange includes 0 and wraps at succ(last), thus it obeys the laws of arithmetic modulo last.

% @(#)$Id: unsignedShort.lsl,v 1.4 1994/05/24 21:27:53 leavens Exp $
unsignedShort: trait
  includes IntCycle(0, USHRT_MAX, unsignedShort),
           NoContainedObjects(unsignedShort)

% @(#)$Id: unsignedChar.lsl,v 1.4 1994/05/24 21:27:53 leavens Exp $
unsignedChar: trait
  includes IntCycle(0, UCHAR_MAX, unsignedChar),
           NoContainedObjects(unsignedChar)

% @(#)$Id: unsignedInt.lsl,v 1.4 1994/05/24 21:27:53 leavens Exp $
unsignedInt: trait
  includes IntCycle(0, UINT_MAX, unsignedInt),
           NoContainedObjects(unsignedInt)

% @(#)$Id: unsignedLong.lsl,v 1.4 1994/05/24 21:27:53 leavens Exp $
unsignedLong: trait
  includes IntCycle(0, ULONG_MAX, unsignedLong),
           NoContainedObjects(unsignedLong)

A C++ unsigned integer constant, an integer constant with suffix u or U (see section 4.13 Literals) is a term of sort unsignedInt; for example, 2U is treated as a synonym of succ(succ(0)).


Go to the first, previous, next, last section, table of contents.