|
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;