# aot_get_val Interface

## public interface aot_get_val

Get a value from the Lua script.

This is the central interface to retrieve values from a Lua script, its general shape looks like call aot_{top}_get_val(<outputs>, <id>, default). Where the "outputs" are val and errCode. While "id" is at least the Lua context L. For global variables there has to be a key to identify the variable.

The errCode returns an error code with various bits set for different errors that might happen while retrieving the variable. They can be checked by btest and the different error codes are:

For example a check for a fatal error can be done by btest(errCode, aoterr_fatal).

For the access to global variables in the Lua script the interface therefore, looks like: call aot_get_val(val, errCode, L, key, default).

The interface to access table values looks like: call aot_get_val(val, errCode, L, thandle, key, pos, default). Position pos and key are both optional, but one of them has to be provided. If both are provided the key takes precedence over the pos, and the pos will only be tried if the access to the key fails. See for example get_table_real for a more detailed description of the parameters.

## Module Procedures

### private subroutine get_table_real(val, ErrCode, L, thandle, key, pos, default)

Retrieve a single precision real value from a table.

#### Arguments

Type IntentOptional AttributesName
real(kind=single_k), intent(out) :: val

Value of the table entry if it exists.

integer, intent(out) :: ErrCode

Error code to indicate what kind of problem might have occured.

type(flu_State) :: L

Handle to the Lua script.

integer, intent(in), optional :: thandle

Handle to the table to look the value up in.

character(len=*), intent(in), optional :: key

Name of the entry to look for.

Key and pos are both optional, however at least one of them has to be supplied. The key takes precedence over the pos if both are given.

integer, intent(in), optional :: pos

Position of the entry to look for in the table.

real(kind=single_k), intent(in), optional :: default

Some default value, that should be used, if the variable is not set in the Lua script.

### private subroutine get_table_double(val, ErrCode, L, thandle, key, pos, default)

Retrieve a double precision real value from a table.

#### Arguments

Type IntentOptional AttributesName
real(kind=double_k), intent(out) :: val

Value of the table entry if it exists.

integer, intent(out) :: ErrCode

Error code to indicate what kind of problem might have occured.

type(flu_State) :: L

Handle to the Lua script.

integer, intent(in), optional :: thandle

Handle to the table to look the value up in.

character(len=*), intent(in), optional :: key

Name of the entry to look for.

Key and pos are both optional, however at least one of them has to be supplied. The key takes precedence over the pos if both are given.

integer, intent(in), optional :: pos

Position of the entry to look for in the table.

real(kind=double_k), intent(in), optional :: default

Some default value, that should be used, if the variable is not set in the Lua script.

### private subroutine get_table_integer(val, ErrCode, L, thandle, key, pos, default)

Retrieve a default integer value from a table.

#### Arguments

Type IntentOptional AttributesName
integer(kind=int_k), intent(out) :: val

Value of the table entry if it exists.

integer, intent(out) :: ErrCode

Error code to indicate what kind of problem might have occured.

type(flu_State) :: L

Handle to the Lua script.

integer, intent(in), optional :: thandle

Handle to the table to look the value up in.

character(len=*), intent(in), optional :: key

Name of the entry to look for.

Key and pos are both optional, however at least one of them has to be supplied. The key takes precedence over the pos if both are given.

integer, intent(in), optional :: pos

Position of the entry to look for in the table.

integer(kind=int_k), intent(in), optional :: default

Some default value, that should be used, if the variable is not set in the Lua script.

### private subroutine get_table_long(val, ErrCode, L, thandle, key, pos, default)

Retrieve a long integer value from a table.

#### Arguments

Type IntentOptional AttributesName
integer(kind=long_k), intent(out) :: val

Value of the table entry if it exists.

integer, intent(out) :: ErrCode

Error code to indicate what kind of problem might have occured.

type(flu_State) :: L

Handle to the Lua script.

integer, intent(in), optional :: thandle

Handle to the table to look the value up in.

character(len=*), intent(in), optional :: key

Name of the entry to look for.

Key and pos are both optional, however at least one of them has to be supplied. The key takes precedence over the pos if both are given.

integer, intent(in), optional :: pos

Position of the entry to look for in the table.

integer(kind=long_k), intent(in), optional :: default

Some default value, that should be used, if the variable is not set in the Lua script.

### private subroutine get_table_string(val, ErrCode, L, thandle, key, pos, default)

Retrieve a string from a table.

#### Arguments

Type IntentOptional AttributesName
character(len=*) :: val

Value of the table entry if it exists.

integer, intent(out) :: ErrCode

Error code to indicate what kind of problem might have occured.

type(flu_State) :: L

Handle to the Lua script.

integer, intent(in), optional :: thandle

Handle to the table to look the value up in.

character(len=*), intent(in), optional :: key

Name of the entry to look for.

Key and pos are both optional, however at least one of them has to be supplied. The key takes precedence over the pos if both are given.

integer, intent(in), optional :: pos

Position of the entry to look for in the table.

character(len=*), intent(in), optional :: default

Some default value, that should be used, if the variable is not set in the Lua script.

### private subroutine get_table_logical(val, ErrCode, L, thandle, key, pos, default)

Retrieve a logical value from a table.

#### Arguments

Type IntentOptional AttributesName
logical, intent(out) :: val

Value of the table entry if it exists.

integer, intent(out) :: ErrCode

Error code to indicate what kind of problem might have occured.

type(flu_State) :: L

Handle to the Lua script.

integer, intent(in), optional :: thandle

Handle to the table to look the value up in.

character(len=*), intent(in), optional :: key

Name of the entry to look for.

Key and pos are both optional, however at least one of them has to be supplied. The key takes precedence over the pos if both are given.

integer, intent(in), optional :: pos

Position of the entry to look for in the table.

logical, intent(in), optional :: default

Some default value, that should be used, if the variable is not set in the Lua script.

### private subroutine get_table_userdata(val, ErrCode, L, thandle, key, pos, default)

Retrieve a userdata value (generic C pointer) from a table.

#### Arguments

Type IntentOptional AttributesName
type(c_ptr), intent(out) :: val

Value of the table entry if it exists.

integer, intent(out) :: ErrCode

Error code to indicate what kind of problem might have occured.

type(flu_State) :: L

Handle to the Lua script.

integer, intent(in), optional :: thandle

Handle to the table to look the value up in.

character(len=*), intent(in), optional :: key

Name of the entry to look for.

Key and pos are both optional, however at least one of them has to be supplied. The key takes precedence over the pos if both are given.

integer, intent(in), optional :: pos

Position of the entry to look for in the table.