get_table_quadruple_v Subroutine

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

This routine obtains a vectorial quantity with fixed length from a Lua table as a whole.

It is intented to ease the reading of vectors on the Fortran side by capsulating the parsing of the Lua table internally. Components which are not found are filled with the data given in the default vector. For each component an error code will be returned to indicate the success when reading it. If the vector is not defined at all, all components will be indicated as non-existent. Components, which are neither defined in the Lua script, nor in the default will be marked with the aoterr_Fatal flag.

Arguments

Type IntentOptional Attributes Name
real(kind=quad_k), intent(out) :: val(:)

Vector read from the Lua table.

integer, intent(out) :: ErrCode(:)

Error code describing problems encountered in each of the components. This array has to have the same length as val.

type(flu_State) :: L
integer, intent(in), optional :: thandle
character(len=*), intent(in), optional :: key

Name of the variable (vector) to read.

integer, intent(in), optional :: pos

Position of the (vector) to read.

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

A default vector to use, if no proper definition is found. Components will be filled with the help of this default definition.


Calls

proc~~get_table_quadruple_v~~CallsGraph proc~get_table_quadruple_v get_table_quadruple_v interface~aot_top_get_val~8 aot_top_get_val proc~get_table_quadruple_v->interface~aot_top_get_val~8 proc~aot_table_push aot_table_push proc~get_table_quadruple_v->proc~aot_table_push proc~flu_getglobal flu_getglobal proc~get_table_quadruple_v->proc~flu_getglobal proc~aot_top_get_extdouble aot_top_get_extdouble interface~aot_top_get_val~8->proc~aot_top_get_extdouble proc~aot_table_push->proc~flu_getglobal interface~flu_pushinteger flu_pushinteger proc~aot_table_push->interface~flu_pushinteger proc~flu_getfield flu_getfield proc~aot_table_push->proc~flu_getfield proc~flu_gettable flu_gettable proc~aot_table_push->proc~flu_gettable proc~flu_pop flu_pop proc~aot_table_push->proc~flu_pop proc~flu_pushnil flu_pushnil proc~aot_table_push->proc~flu_pushnil proc~flu_type flu_type proc~aot_table_push->proc~flu_type interface~lua_getglobal lua_getglobal proc~flu_getglobal->interface~lua_getglobal proc~flu_pushint flu_pushint interface~flu_pushinteger->proc~flu_pushint proc~flu_pushlong flu_pushlong interface~flu_pushinteger->proc~flu_pushlong proc~aot_top_get_extdouble->proc~flu_pop proc~flu_isnoneornil flu_isNoneOrNil proc~aot_top_get_extdouble->proc~flu_isnoneornil proc~flu_isnumber flu_isnumber proc~aot_top_get_extdouble->proc~flu_isnumber proc~flu_todouble flu_todouble proc~aot_top_get_extdouble->proc~flu_todouble interface~lua_getfield lua_getfield proc~flu_getfield->interface~lua_getfield interface~lua_gettable lua_gettable proc~flu_gettable->interface~lua_gettable interface~lua_settop lua_settop proc~flu_pop->interface~lua_settop interface~lua_pushnil lua_pushnil proc~flu_pushnil->interface~lua_pushnil interface~lua_type lua_type proc~flu_type->interface~lua_type proc~flu_isnoneornil->interface~lua_type interface~lua_isnumber lua_isNumber proc~flu_isnumber->interface~lua_isnumber interface~lua_pushinteger lua_pushinteger proc~flu_pushint->interface~lua_pushinteger proc~flu_pushlong->interface~lua_pushinteger interface~lua_tonumberx lua_tonumberx proc~flu_todouble->interface~lua_tonumberx

Called by

proc~~get_table_quadruple_v~~CalledByGraph proc~get_table_quadruple_v get_table_quadruple_v interface~aot_get_val~3 aot_get_val interface~aot_get_val~3->proc~get_table_quadruple_v interface~aot_table_get_val~3 aot_table_get_val interface~aot_table_get_val~3->proc~get_table_quadruple_v

Source Code

  subroutine get_table_quadruple_v(val, ErrCode, L, thandle, key, &
    &                              pos, default)
    type(flu_State) :: L !< Handle to the lua script
    integer, intent(in), optional :: thandle !< Handle of the parent table

    !> Vector read from the Lua table.
    real(kind=quad_k), intent(out) :: val(:)

    !> Error code describing problems encountered in each of the components.
    !! This array has to have the same length as val.
    integer, intent(out) :: ErrCode(:)

    !> Name of the variable (vector) to read.
    character(len=*), intent(in), optional :: key

    !> Position of the (vector) to read.
    integer, intent(in), optional :: pos

    !> A default vector to use, if no proper definition is found.
    !! Components will be filled with the help of this default definition.
    real(kind=quad_k), intent(in), optional :: default(:)

    logical :: valid_args
    integer :: toptype

    valid_args = .true.
    if (present(thandle)) then
      ! Get the requested value from the provided table
      call aot_table_push(L=L, thandle=thandle, &
        &                 key=key, pos=pos)
    else
      if (present(key)) then
        ! Get the requeseted global variable
        toptype = flu_getglobal(L, key)
      else
        valid_args = .false.
      end if
    end if
    if (valid_args) then
      call aot_top_get_val(val, ErrCode, L, default)
    else
      ErrCode = ibSet(0, aoterr_NonExistent)
      ErrCode = ibSet(ErrCode, aoterr_Fatal)
    end if

  end subroutine get_table_quadruple_v