[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

#### 8.2.10.1 Subrange Types

GNU Pascal supports Standard Pascal's subrange types:

    program SubrangeDemo;
    type
      MonthInt = 1 .. 12;
      Capital = 'A' .. 'Z';
      ControlChar = ^A .. ^Z;  { `^A' = `Chr (1)' is a BP extension }
    begin
    end.

Also possible: Subranges of enumerated types:

    program EnumSubrangeDemo;
    type
      { This is an enumerated type. }
      Days = (Mon, Tue, Wed, Thu, Fri, Sat, Sun);

      { This is a subrange of `Days'. }
      Working = Mon .. Fri;

    begin
    end.

To increase performance, variables of such a type are aligned in a way which makes them fastest to access by the CPU. As a result, ``1 .. 12'` occupies 4 bytes of storage on an IA32 CPU.

For the case you want to save storage at the expense of speed, GPC provides a ``packed'` variant of these as an extension:

    program PackedSubrangeDemo;
    type
      MonthInt = packed 1 .. 12;
    begin
    end.

A variable of this type occupies the shortest possible (i.e., addressable) space in memory -- one byte on an IA32 compatible CPU.

See also: section 9.188 packed.

This document was generated by Frank Heckenbach on May, 10 2002 using texi2html