TYPES.DEF 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. (* ========================================================= *)
  2. (* Preliminary library module for Gardens Point Modula *)
  3. (* ========================================================= *)
  4. DEFINITION MODULE Types;
  5. (* this module supplies some traditional identifiers *)
  6. (* subranges occupy as much storage space as needed *)
  7. (* ************************************************** *)
  8. (* NOTE: This is a definition icluding 64 bit *)
  9. (* representations on the DEC Alpha *)
  10. (* On 32 bit platforms (non Alpha) MIDINT and *)
  11. (* INTEGER map to 32 bits. *)
  12. (* ************************************************** *)
  13. (* Type Mapping Table
  14. * ==================
  15. * Size
  16. * Data Type Alpha Unix PC
  17. * ---------------+-----------+-----------+-----------+
  18. * short int | 16 | 16 | 8 |
  19. * short unsigned | 16 | 16 | 8 |
  20. * | | | |
  21. * int | 32 | 32 | 16 |
  22. * unsigned int | 32 | 32 | 16 |
  23. * | | | |
  24. * long int | 64 | 32 | 32 |
  25. * unsigned long | 64 | 32 | 32 |
  26. * ---------------+-----------+-----------+-----------+
  27. *)
  28. CONST
  29. maxInt32 = 2147483647;
  30. minInt32 = (-maxInt32 - 1);
  31. (* avoids asymmetric nature of integers, and that an
  32. explicit -2147483648 is out of range in 32 bits *)
  33. maxCrd32 = 4294967295;
  34. TYPE
  35. (* INTEGER and CARDINAL Types *)
  36. (* Signed Types - Integers *) (* "c" type mapping *)
  37. (* --------------------------------------------------------- *)
  38. BYTEINT = [-128 .. 127]; (* => signed char *)
  39. SHORTINT = [-32768 .. 32767]; (* => short int *)
  40. MIDINT = [minInt32 .. maxInt32]; (* => int *)
  41. LONGINT = INTEGER; (* => long int *)
  42. (* Unsigned Types - Cardinals *) (* "c" type mapping *)
  43. (* --------------------------------------------------------- *)
  44. BYTECARD = [0 .. 255]; (* => unsigned char *)
  45. SHORTCARD = [0 .. 65535]; (* => short unsigned int *)
  46. MIDCARD = [0 .. maxCrd32]; (* => unsigned int *)
  47. LONGCARD = CARDINAL; (* => unsigned long int *)
  48. (* Alternative Type Names *)
  49. (* ---------------------- *)
  50. Int8 = BYTEINT;
  51. Card8 = BYTECARD;
  52. Int16 = SHORTINT;
  53. Card16 = SHORTCARD;
  54. Int32 = MIDINT;
  55. Card32 = MIDCARD;
  56. END Types.