Put an array of extended doubles into the list of arguments for the function.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(flu_State) | :: | L | ||||
type(aot_fun_type) | :: | fun |
Handle of the function, this argument should be put into. |
|||
real(kind=xdble_k), | intent(in) | :: | arg(:) |
Actual argument to hand over to the Lua function. |
subroutine aot_fun_put_extdouble_v(L, fun, arg) type(flu_state) :: L !< Handle for the Lua script. !> Handle of the function, this argument should be put into. type(aot_fun_type) :: fun !> Actual argument to hand over to the Lua function. real(kind=xdble_k), intent(in) :: arg(:) real(kind=double_k) :: locarg(size(arg)) integer :: thandle ! Only do something, if the function is actually properly defined. if (fun%handle /= 0) then locarg = real(arg, kind=double_k) ! If the function was executed before this call, it has to be ! reset. if (fun%arg_count == -1) then ! Set the top of the stack to the reference of the function. ! Discarding anything above it. call flu_settop(L, fun%handle) ! Push a copy of the function itself on the stack again, before ! adding arguments, to savely survive popping of the function ! upon execution. call flu_pushvalue(L, fun%handle) ! Increase the argument count to 0 again (really start counting ! arguments afterwards. fun%arg_count = fun%arg_count+1 end if call aot_table_from_1Darray(L, thandle, locarg) fun%arg_count = fun%arg_count+1 end if end subroutine aot_fun_put_extdouble_v