| |
LCS-2016-026b |
| |
2 |
| |
24-Mar-2017 |
| |
Voting |
| |
Patrick Lehmann |
| |
Main.PatrickLehmann |
| |
Long Integers |
| |
Extends the range of integer types values. |
type SYSTEM_INTEGER is range <implementation_defined%gt;;
type INTEGER64 is -(2**63) to (2**63) - 1;
type INTEGER32 is -(2**31) to (2**31) - 1;
NOTE — The range of SYSTEM_INTEGER in a particular implementation is determinable from the values of its 'LOW and 'HIGH attributes. It represents
subtype NATURAL64 is INTEGER64 range 0 to INTEGER64'HIGH;
subtype POSITIVE64 is INTEGER64 range 1 to INTEGER64'HIGH;
subtype NATURAL32 is INTEGER32 range 0 to INTEGER32'HIGH;
subtype POSITIVE32 is INTEGER32 range 1 to INTEGER32'HIGH;
For compatibility, the following aliases are defined:
alias INTEGER is INTEGER32;
alias NATURAL is NATURAL32;
alias POSITIVE is POSITIVE32;
The values of the predefined types BOOLEAN_VECTOR, BIT_VECTOR, INTEGER64_VECTOR, INTEGER32_VECTOR, REAL_VECTOR, andsubtype POSITIVE is INTEGER range 1 to INTEGER'HIGH;type STRING is array (POSITIVE32 range <>) of CHARACTER;
For compatibility, the following aliases are defined:subtype NATURAL is INTEGER range 0 to INTEGER'HIGH;type BOOLEAN_VECTOR is array (NATURAL32 range <>) of BOOLEAN; type BIT_VECTOR is array (NATURAL32 range <>) of BIT; type INTEGER64_VECTOR is array (NATURAL32 range <>) of INTEGER64; type INTEGER32_VECTOR is array (NATURAL32 range <>) of INTEGER32; type REAL_VECTOR is array (NATURAL32 range <>) of REAL; type TIME_VECTOR is array (NATURAL32 range <>) of TIME;
alias INTEGER_VECTOR is INTEGER32_VECTOR;
| Operator | Operation | Left operand type | Right operand type | Result type |
|---|---|---|---|---|
| sll | Shift left logical |
Any one-dimensional array type whose element type is BIT or BOOLEAN |
INTEGER32 | Same as left |
| srl | Shift right logical |
Any one-dimensional array type whose element type is BIT or BOOLEAN |
INTEGER32 | Same as left |
| sla | Shift left arithmetic |
Any one-dimensional array type whose element type is BIT or BOOLEAN |
INTEGER32 | Same as left |
| sra | Shift right arithmetic |
Any one-dimensional array type whose element type is BIT or BOOLEAN |
INTEGER32 | Same as left |
| rol | Rotate left logical |
Any one-dimensional array type whose element type is BIT or BOOLEAN |
INTEGER32 | Same as left |
| ror | Rotate right logical |
Any one-dimensional array type whose element type is BIT or BOOLEAN |
INTEGER32 | Same as left |
| Operator | Operation | Left operand type | Right operand type | Result type |
|---|---|---|---|---|
| * | Multiplication | Any physical type | INTEGER32 | Same as left |
| Any physical type | INTEGER64 | Same as left | ||
| Any physical type | Universal integer | Same as left | ||
| Any physical type | REAL | Same as left | ||
| INTEGER32 | Any physical type | Same as right | ||
| INTEGER64 | Any physical type | Same as right | ||
| Universal integer | Any physical type | Same as right | ||
| REAL | Any physical type | Same as right | ||
| / | Division | Any physical type | INTEGER32 | Same as left |
| Any physical type | INTEGER64 | Same as left | ||
| Any physical type | Universal integer | Same as left | ||
| Any physical type | REAL | Same as left | ||
| Any physical type | The same type | Universal integer | ||
| mod | Modulus | Any physical type | Same type | Same type |
| rem | Remainder | Any physical type | Same type | Same type |
| Operator | Operation | Left operand type | Right operand type | Result type |
|---|---|---|---|---|
| ** | Exponentiation | Any integer type | INTEGER32 | Same as left |
| Any floating-point type | INTEGER32 | Same as left |
package STANDARD is [...] type SYSTEM_INTEGER is range implementation_defined; -- The predefined operations for this type are as follows: -- function "**"(anonymous: universal_integer; anonymous: SYSTEM_INTEGER) return universal_integer; -- function "**"(anonymous: universal_real; anonymous: SYSTEM_INTEGER) return universal_real; -- function "="(anonymous, anonymous: SYSTEM_INTEGER) return BOOLEAN; -- function "/="(anonymous, anonymous: SYSTEM_INTEGER) return BOOLEAN; -- function "<"(anonymous, anonymous: SYSTEM_INTEGER) return BOOLEAN; -- function "<="(anonymous, anonymous: SYSTEM_INTEGER) return BOOLEAN; -- function ">"(anonymous, anonymous: SYSTEM_INTEGER) return BOOLEAN; -- function ">="(anonymous, anonymous: SYSTEM_INTEGER) return BOOLEAN; -- function "+"(anonymous: SYSTEM_INTEGER) return SYSTEM_INTEGER; -- function "-"(anonymous: SYSTEM_INTEGER) return SYSTEM_INTEGER; -- function "abs"(anonymous: SYSTEM_INTEGER) return SYSTEM_INTEGER; -- function "+"(anonymous, anonymous: SYSTEM_INTEGER) return SYSTEM_INTEGER; -- function "-"(anonymous, anonymous: SYSTEM_INTEGER) return SYSTEM_INTEGER; -- function "*"(anonymous, anonymous: SYSTEM_INTEGER) return SYSTEM_INTEGER; -- function "/"(anonymous, anonymous: SYSTEM_INTEGER) return SYSTEM_INTEGER; -- function "mod"(anonymous, anonymous: SYSTEM_INTEGER) return SYSTEM_INTEGER; -- function "rem"(anonymous, anonymous: SYSTEM_INTEGER) return SYSTEM_INTEGER; -- function "**"(anonymous: SYSTEM_INTEGER; anonymous: SYSTEM_INTEGER) return SYSTEM_INTEGER; -- function MINIMUM (L, R: SYSTEM_INTEGER) return SYSTEM_INTEGER; -- function MAXIMUM (L, R: SYSTEM_INTEGER) return SYSTEM_INTEGER; type INTEGER64 is range implementation_defined; -- The predefined operations for this type are as follows: -- function "**"(anonymous: universal_integer; anonymous: INTEGER64) return universal_integer; -- function "**"(anonymous: universal_real; anonymous: INTEGER64) return universal_real; -- function "="(anonymous, anonymous: INTEGER64) return BOOLEAN; -- function "/="(anonymous, anonymous: INTEGER64) return BOOLEAN; -- function "<"(anonymous, anonymous: INTEGER64) return BOOLEAN; -- function "<="(anonymous, anonymous: INTEGER64) return BOOLEAN; -- function ">"(anonymous, anonymous: INTEGER64) return BOOLEAN; -- function ">="(anonymous, anonymous: INTEGER64) return BOOLEAN; -- function "+"(anonymous: INTEGER64) return INTEGER64; -- function "-"(anonymous: INTEGER64) return INTEGER64; -- function "abs"(anonymous: INTEGER64) return INTEGER64; -- function "+"(anonymous, anonymous: INTEGER64) return INTEGER64; -- function "-"(anonymous, anonymous: INTEGER64) return INTEGER64; -- function "*"(anonymous, anonymous: INTEGER64) return INTEGER64; -- function "/"(anonymous, anonymous: INTEGER64) return INTEGER64; -- function "mod"(anonymous, anonymous: INTEGER64) return INTEGER64; -- function "rem"(anonymous, anonymous: INTEGER64) return INTEGER64; -- function "**"(anonymous: INTEGER64; anonymous: INTEGER64) return INTEGER64; -- function MINIMUM (L, R: INTEGER64) return INTEGER64; -- function MAXIMUM (L, R: INTEGER64) return INTEGER64; type INTEGER32 is range implementation_defined; -- The predefined operations for this type are as follows: -- function "**"(anonymous: universal_integer; anonymous: INTEGER32) return universal_integer; -- function "**"(anonymous: universal_real; anonymous: INTEGER32) return universal_real; -- function "="(anonymous, anonymous: INTEGER32) return BOOLEAN; -- function "/="(anonymous, anonymous: INTEGER32) return BOOLEAN; -- function "<"(anonymous, anonymous: INTEGER32) return BOOLEAN; -- function "<="(anonymous, anonymous: INTEGER32) return BOOLEAN; -- function ">"(anonymous, anonymous: INTEGER32) return BOOLEAN; -- function ">="(anonymous, anonymous: INTEGER32) return BOOLEAN; -- function "+"(anonymous: INTEGER32) return INTEGER32; -- function "-"(anonymous: INTEGER32) return INTEGER32; -- function "abs"(anonymous: INTEGER32) return INTEGER32; -- function "+"(anonymous, anonymous: INTEGER32) return INTEGER32; -- function "-"(anonymous, anonymous: INTEGER32) return INTEGER32; -- function "*"(anonymous, anonymous: INTEGER32) return INTEGER32; -- function "/"(anonymous, anonymous: INTEGER32) return INTEGER32; -- function "mod"(anonymous, anonymous: INTEGER32) return INTEGER32; -- function "rem"(anonymous, anonymous: INTEGER32) return INTEGER32; -- function "**"(anonymous: INTEGER32; anonymous: INTEGER32) return INTEGER32; -- function MINIMUM (L, R: INTEGER32) return INTEGER32; -- function MAXIMUM (L, R: INTEGER32) return INTEGER32; [...] -- Predefined type TIME: type TIME is range implementation_defined units fs; -- femtosecond ps = 1000 fs; -- picosecond ns = 1000 ps; -- nanosecond us = 1000 ns; -- microsecond ms = 1000 us; -- millisecond sec = 1000 ms; -- second min = 60 sec; -- minute hr = 60 min; -- hour end units; -- The predefined operations for this type are as follows: -- function "="(anonymous, anonymous: TIME) return BOOLEAN; -- function "/="(anonymous, anonymous: TIME) return BOOLEAN; -- function "<"(anonymous, anonymous: TIME) return BOOLEAN; -- function "<="(anonymous, anonymous: TIME) return BOOLEAN; -- function ">"(anonymous, anonymous: TIME) return BOOLEAN; -- function ">="(anonymous, anonymous: TIME) return BOOLEAN; -- function "+"(anonymous: TIME) return TIME; -- function "- (anonymous: TIME) return TIME; -- function "abs"(anonymous: TIME) return TIME; -- function "+"(anonymous, anonymous: TIME) return TIME; -- function "-"(anonymous, anonymous: TIME) return TIME; -- function "*"(anonymous: TIME; anonymous: INTEGER32) return TIME; -- function "*"(anonymous: TIME; anonymous: INTEGER64) return TIME; -- function "*"(anonymous: TIME; anonymous: REAL) return TIME; -- function "*"(anonymous: INTEGER32; anonymous: TIME) return TIME; -- function "*"(anonymous: INTEGER64; anonymous: TIME) return TIME; -- function "*"(anonymous: REAL; anonymous: TIME) return TIME; -- function "/"(anonymous: TIME; anonymous: INTEGER32) return TIME; -- function "/"(anonymous: TIME; anonymous: INTEGER64) return TIME; -- function "/"(anonymous: TIME; anonymous: REAL) return TIME; -- function "/"(anonymous, anonymous: TIME) return universal_integer; -- function "mod"(anonymous, anonymous: TIME) return TIME; -- function "rem"(anonymous, anonymous: TIME) return TIME; -- function MINIMUM (L, R: TIME) return TIME; -- function MAXIMUM (L, R: TIME) return TIME; [...] -- Predefined numeric subtypes: subtype NATURAL64 is INTEGER64 range 0 to INTEGER64'HIGH; subtype POSITIVE64 is INTEGER64 range 1 to INTEGER64'HIGH; subtype NATURAL32 is INTEGER32 range 0 to INTEGER32'HIGH; subtype POSITIVE32 is INTEGER32 range 1 to INTEGER32'HIGH; alias INTEGER is INTEGER32; alias NATURAL is NATURAL32; alias POSITIVE is POSITIVE32; [...] -- Predefined array types: type STRING is array (POSITIVE32 range <>) of CHARACTER; -- The predefined operations for these types are as follows: [...] type BOOLEAN_VECTOR is array (NATURAL32 range <>) of BOOLEAN; -- The predefined operations for this type are as follows: [...] type BIT_VECTOR is array (NATURAL32 range <>) of BIT; -- The predefined operations for this type are as follows: [...] type INTEGER64_VECTOR is array (NATURAL64 range <>) of INTEGER64; -- The predefined operations for this type are as follows: -- function "="(anonymous, anonymous: INTEGER64_VECTOR) return BOOLEAN; -- function "/="(anonymous, anonymous: INTEGER64_VECTOR) return BOOLEAN; -- function "<"(anonymous, anonymous: INTEGER64_VECTOR) return BOOLEAN; -- function "<="(anonymous, anonymous: INTEGER64_VECTOR) return BOOLEAN; -- function ">"(anonymous, anonymous: INTEGER64_VECTOR) return BOOLEAN; -- function ">="(anonymous, anonymous: INTEGER64_VECTOR) return BOOLEAN; -- function "&"(anonymous: INTEGER64_VECTOR; anonymous: INTEGER64_VECTOR) return INTEGER64_VECTOR; -- function "&"(anonymous: INTEGER64_VECTOR; anonymous: INTEGER64) return INTEGER64_VECTOR; -- function "&"(anonymous: INTEGER64; anonymous: INTEGER64_VECTOR) return INTEGER64_VECTOR; -- function "&"(anonymous: INTEGER64; anonymous: INTEGER64) return INTEGER64_VECTOR; -- function MINIMUM (L, R: INTEGER64_VECTOR) return INTEGER64_VECTOR; -- function MAXIMUM (L, R: INTEGER64_VECTOR) return INTEGER64_VECTOR; -- function MINIMUM (L: INTEGER64_VECTOR) return INTEGER64; -- function MAXIMUM (L: INTEGER64_VECTOR) return INTEGER64; type INTEGER32_VECTOR is array (NATURAL32 range <>) of INTEGER32; -- The predefined operations for this type are as follows: -- function "="(anonymous, anonymous: INTEGER32_VECTOR) return BOOLEAN; -- function "/="(anonymous, anonymous: INTEGER32_VECTOR) return BOOLEAN; -- function "<"(anonymous, anonymous: INTEGER32_VECTOR) return BOOLEAN; -- function "<="(anonymous, anonymous: INTEGER32_VECTOR) return BOOLEAN; -- function ">"(anonymous, anonymous: INTEGER32_VECTOR) return BOOLEAN; -- function ">="(anonymous, anonymous: INTEGER32_VECTOR) return BOOLEAN; -- function "&"(anonymous: INTEGER32_VECTOR; anonymous: INTEGER32_VECTOR) return INTEGER32_VECTOR; -- function "&"(anonymous: INTEGER32_VECTOR; anonymous: INTEGER32) return INTEGER32_VECTOR; -- function "&"(anonymous: INTEGER32; anonymous: INTEGER32_VECTOR) return INTEGER32_VECTOR; -- function "&"(anonymous: INTEGER32; anonymous: INTEGER32) return INTEGER32_VECTOR; -- function MINIMUM (L, R: INTEGER32_VECTOR) return INTEGER32_VECTOR; -- function MAXIMUM (L, R: INTEGER32_VECTOR) return INTEGER32_VECTOR; -- function MINIMUM (L: INTEGER32_VECTOR) return INTEGER32; -- function MAXIMUM (L: INTEGER32_VECTOR) return INTEGER32; alias INTEGER_VECTOR is INTEGER32_VECTOR; [...] type REAL_VECTOR is array (NATURAL32 range <>) of REAL; -- The predefined operations for this type are as follows: [...] type TIME_VECTOR is array (NATURAL32 range <>) of TIME; -- The predefined operations for this type are as follows: [...] -- Predefined TO_STRING operations on scalar types -- function TO_STRING (VALUE: BOOLEAN) return STRING; -- function TO_STRING (VALUE: BIT) return STRING; -- function TO_STRING (VALUE: CHARACTER) return STRING; -- function TO_STRING (VALUE: SEVERITY_LEVEL) return STRING; -- function TO_STRING (VALUE: universal_integer) return STRING; -- function TO_STRING (VALUE: universal_real) return STRING; -- function TO_STRING (VALUE: SYSTEM_INTEGER) return STRING; -- function TO_STRING (VALUE: INTEGER32) return STRING; -- function TO_STRING (VALUE: INTEGER64) return STRING; -- function TO_STRING (VALUE: REAL) return STRING; -- function TO_STRING (VALUE: TIME) return STRING; -- function TO_STRING (VALUE: FILE_OPEN_KIND) return STRING; -- function TO_STRING (VALUE: FILE_OPEN_STATUS) return STRING; -- Predefined overloaded TO_STRING operations -- function TO_STRING (VALUE: REAL; DIGITS: NATURAL32) return STRING; -- function TO_STRING (VALUE: REAL; FORMAT: STRING) return STRING; -- function TO_STRING (VALUE: TIME; UNIT: TIME) return STRING;