Phil Nelson wrote:
> 
> >type TComparisonResult=(Less value -1, Equals, Greater, Strange value 10);
> >
> >i.e. Ord(Less)=-1, Ord(Equals)=0, Ord(Greater)=1, Ord(Strange)=10.
> 
> Another problem ... it will make pred() and succ() harder if they must
> do succ(Greater) => Strange and pred(Strange) => Greater.  I think 
> setting the initial value would be reasonable, but not allowing a
> jump in the values.
Only allowing to set the initial offset would make this kind of fetaure
useless. Implementing succ and pred functions using a simple table will
not cause much trouble.
 
Imagine this (for me very actual) problem:
Type assembler_instructions = ( add_x, sub_y, mul_a_x) ; 
                             (* course more complex*)
     register_type          = ( ax, bx, dx, bc, de, hl );
     objectfile = record 
                    ai     : assembler_instruction;
                    p1, p2 : register_type;
                  end;
(* using some ada-style for making the example *)
    
for assembler_instructions use 
 ( add_x => 27, 
   sub_y => 37,
   mul_a_x => 127);
for register_type use
 ( ax => 12,
   bx => 22, 
   dx => 32,
   bc => 01,
   de => 17,
   hl => 33);
The ord-function will, assuming you order the register-names in a simple
index only cause code to extract the real ord number from a table, i.e. 
ord_values : array (.enumeration_type.) of integer; 
(* the array keeping the values*)
Just suggesting :)
/Jakob :)
mailto:Jakob.Heinemann@ericsson.com
Ericsson Saab Avionics AB Linköping
+46 13 284249