Interpret topmost entry on Lua stack as a single precision real.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*) | :: | val | Value of the Variable in the script |
|||
integer, | intent(out) | :: | ErrCode | Error code to indicate what kind of problem might have occured. |
||
type(flu_State) | :: | L | Handle to the Lua script |
|||
character(len=*), | intent(in), | optional | :: | default | Some default value, that should be used, if the variable is not set in the Lua script. |
subroutine aot_top_get_string(val, ErrCode, L, default)
type(flu_State) :: L !! Handle to the Lua script
!> Value of the Variable in the script
character(len=*) :: val
!> Error code to indicate what kind of problem might have occured.
integer, intent(out) :: ErrCode
!> Some default value, that should be used, if the variable is not set in
!! the Lua script.
character(len=*), optional, intent(in) :: default
logical :: not_retrievable
character, pointer :: cstring(:)
integer :: i, StrLen, StrLimit
ErrCode = 0
not_retrievable = .false.
if (flu_isNoneOrNil(L, -1)) then
ErrCode = ibSet(ErrCode, aoterr_NonExistent)
not_retrievable = .true.
else
if (flu_isString(L, -1)) then
cstring => flu_toLString(L, -1, StrLen)
StrLimit = min(StrLen, len(val))
val = ''
do i=1,StrLimit
val(i:i) = cstring(i)
end do
else
ErrCode = ibSet(ErrCode, aoterr_WrongType)
ErrCode = ibSet(ErrCode, aoterr_Fatal)
not_retrievable = .true.
end if
end if
if (not_retrievable) then
if (present(default)) then
val = default
else
ErrCode = ibSet(ErrCode, aoterr_Fatal)
end if
end if
call flu_pop(L)
end subroutine aot_top_get_string