## Type Limits for Call-ins and Call-outs

Depending on the direction (I, O, or IO) of a particular type, both call-ins and call-outs may transfer a value in two directions as follows:

```Call-out: GT.M -> C -> GT.M       Call-in:     C -> GT.M -> C
|     |     |                      |     |     |
'-----'-----'                      '-----'-----'
1     2                            2     1```

In the following table, the GT.M->C limit applies to 1 and the C->GT.M limit applies to 2. In other words, GT.M->C applies to I direction for call-outs and O direction for call-ins and C->GT.M applies to I direction for call-ins and O direction for call-outs.

GTM->C

C->GT.M

Type

Precision

Range

Precision

Range

gtm_int_t, gtm_int_t *

Full

[-2^31+1, 2^31-1]

Full

[-2^31, 2^31-1]

gtm_uint_t, gtm_uint_t *

Full

[0, 2^32-1]

Full

[0, 2^32-1]

gtm_long_t, gtm_long_t * (64-bit)

18 digits

[-2^63+1, 2^63-1]

18 digits

[-2^63, 2^63-1]

gtm_long_t, gtm_long_t * (32-bit)

Full

[-2^31+1, 2^31-1]

Full

[-2^31, 2^31-1]

gtm_ulong_t, gtm_ulong_t * (64-bit)

18 digits

[0, 2^64-1]

18 digits

[0, 2^64-1]

gtm_ulong_t, gtm_ulong_t * (32-bit)

Full

[0, 2^32-1]

Full

[0, 2^32-1]

gtm_float_t, gtm_float_t *

6-9 digits

[1E-43, 3.4028235E38]

6 digits

[1E-43, 3.4028235E38]

gtm_double_t, gtm_double_t *

15-17 digits

[1E-43, 1E47]

15 digits

[1E-43, 1E47]

gtm_char_t *

N/A

["", 1MiB]

N/A

["", 1MiB]

gtm_char_t **

N/A

["", 1MiB]

N/A

["", 1MiB]

gtm_string_t *

N/A

["", 1MiB]

N/A

["", 1MiB]

Notes gtm_char_t ** is not supported for call-ins but they are included for IO and O direction usage with call-outs. For call-out use of gtm_char_t * and gtm_string_t *, the specification in the interface definition for preallocation sets the range for IO and O, with a maximum of 1MiB.