# set_table_logical Subroutine

## private subroutine set_table_logical(val, L, thandle, key, pos)

Put a logical value into a table.

### Arguments

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

Value to set in the table.

type(flu_State) :: L

Handle to the Lua script.

integer, intent(in) :: thandle

Handle to the table to look the value up in.

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

Name of the entry to set.

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 set in the table.

## Source Code

  subroutine set_table_logical(val, L, thandle, key, pos)
type(flu_State) :: L !! Handle to the Lua script.

!> Handle to the table to look the value up in.
integer, intent(in) :: thandle

!> Value to set in the table.
logical, intent(in) :: val

!> Name of the entry to set.
!!
!! 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.
character(len=*), intent(in), optional :: key

!> Position of the entry to set in the table.
!!
!! It allows the access to unnamed arrays in the Lua tables.
integer, intent(in), optional :: pos

if (thandle > 0) then
if (present(key)) then
! If there is a key, use that.
! First put the value on the top of the stack
call flu_pushBoolean(L, val)
! Now put it into the table
call flu_setField(L, thandle, trim(key))
else
! No key given, try to put the value by position
if (present(pos)) then
! First put the index, where to write the value into the table, on the
! stack.
call flu_pushInteger(L, pos)
! Now put the actual value on the top of the stack.
call flu_pushBoolean(L, val)
! Get the two entries from the stack into the table.
call flu_setTable(L, thandle)
end if
end if
end if

end subroutine set_table_logical