10 use,
INTRINSIC :: iso_c_binding, only: c_ptr, c_int, c_null_ptr,c_size_t
28 TYPE(c_ptr),
PRIVATE :: begin=c_null_ptr
29 INTEGER(C_SIZE_T),
PRIVATE ::
size=0
30 TYPE(c_ptr),
PRIVATE :: cptr=c_null_ptr
31 INTEGER(C_SIZE_T),
PRIVATE :: offset=0
55 use,
INTRINSIC :: iso_c_binding, only: c_ptr, c_size_t
57 INTEGER(C_SIZE_T),
VALUE :: BYTES
61 use,
INTRINSIC :: iso_c_binding, only: c_ptr, c_size_t
63 INTEGER(C_SIZE_T),
VALUE :: BYTES
67 use,
INTRINSIC :: iso_c_binding, only: c_ptr
68 TYPE(c_ptr),
INTENT(IN) :: PTR
77 use,
INTRINSIC :: iso_c_binding, only: c_ptr, c_size_t, c_f_pointer
79 TYPE(c_ptr) ,
INTENT(IN) :: CPTR
80 INTEGER(C_SIZE_T),
INTENT(IN) :: BYTES
84 handle%CPTR = handle%BEGIN
90 use,
INTRINSIC :: iso_c_binding, only: c_size_t
92 INTEGER(C_SIZE_T),
INTENT(IN) :: BYTES
93 INTEGER(C_SIZE_T) :: SIZE
98 handle%CPTR = handle%BEGIN
113 use,
INTRINSIC :: iso_c_binding
115 INTEGER(C_INT),
INTENT(OUT) :: VALUE
116 LOGICAL,
OPTIONAL,
INTENT(IN) :: ADVANCE
117 INTEGER(C_INT),
POINTER :: FPTR(:)
120 CALL c_f_pointer ( handle%CPTR , fptr , (/1/) )
123 IF(
PRESENT(advance) )
THEN 126 handle%OFFSET = handle%OFFSET+c_sizeof(k)
133 use,
INTRINSIC :: iso_c_binding
135 REAL(C_FLOAT),
INTENT(OUT) :: VALUE
136 LOGICAL,
OPTIONAL,
INTENT(IN) :: ADVANCE
137 REAL(C_FLOAT),
POINTER :: FPTR(:)
140 CALL c_f_pointer ( handle%CPTR , fptr , (/1/) )
143 IF(
PRESENT(advance) )
THEN 146 handle%OFFSET = handle%OFFSET+c_sizeof(r)
154 use,
INTRINSIC :: iso_c_binding
156 REAL(C_DOUBLE),
INTENT(OUT) :: VALUE
157 LOGICAL,
OPTIONAL,
INTENT(IN) :: ADVANCE
158 REAL(C_DOUBLE),
POINTER :: FPTR(:)
161 CALL c_f_pointer ( handle%CPTR , fptr , (/1/) )
164 IF(
PRESENT(advance) )
THEN 167 handle%OFFSET = handle%OFFSET+c_sizeof(r)
175 use,
INTRINSIC :: iso_c_binding
177 INTEGER(C_INT),
INTENT(IN) :: SIZE
178 INTEGER(KIND=JPIM),
POINTER,
INTENT(OUT) :: FPTR(:)
179 LOGICAL,
OPTIONAL,
INTENT(IN) :: ADVANCE
182 CALL c_f_pointer ( handle%CPTR , fptr , (/size/) )
184 IF(
PRESENT(advance) )
THEN 187 handle%OFFSET = handle%OFFSET+size*c_sizeof(k)
195 use,
INTRINSIC :: iso_c_binding
197 INTEGER(C_INT),
INTENT(IN) :: SIZE
198 REAL(C_FLOAT),
POINTER,
INTENT(OUT) :: FPTR(:)
199 LOGICAL,
OPTIONAL,
INTENT(IN) :: ADVANCE
202 CALL c_f_pointer ( handle%CPTR , fptr , (/size/) )
204 IF(
PRESENT(advance) )
THEN 207 handle%OFFSET = handle%OFFSET+size*c_sizeof(r)
215 use,
INTRINSIC :: iso_c_binding
217 INTEGER(C_INT),
INTENT(IN) :: SIZE
218 REAL(C_DOUBLE),
POINTER,
INTENT(OUT) :: FPTR(:)
219 LOGICAL,
OPTIONAL,
INTENT(IN) :: ADVANCE
222 CALL c_f_pointer ( handle%CPTR , fptr , (/size/) )
224 IF(
PRESENT(advance) )
THEN 227 handle%OFFSET = handle%OFFSET+size*c_sizeof(r)
234 use,
INTRINSIC :: iso_c_binding
236 INTEGER(C_INT),
INTENT(IN) :: DIM1,DIM2
237 INTEGER(C_INT),
POINTER,
INTENT(OUT) :: FPTR(:,:)
238 LOGICAL,
OPTIONAL,
INTENT(IN) :: ADVANCE
241 CALL c_f_pointer ( handle%CPTR , fptr , (/dim1,dim2/) )
243 IF(
PRESENT(advance) )
THEN 246 handle%OFFSET = handle%OFFSET+dim1*dim2*c_sizeof(k)
254 use,
INTRINSIC :: iso_c_binding
256 INTEGER(C_INT),
INTENT(IN) :: DIM1,DIM2
257 REAL(C_FLOAT),
POINTER,
INTENT(OUT) :: FPTR(:,:)
258 LOGICAL,
OPTIONAL,
INTENT(IN) :: ADVANCE
261 CALL c_f_pointer ( handle%CPTR , fptr , (/dim1,dim2/) )
263 IF(
PRESENT(advance) )
THEN 266 handle%OFFSET = handle%OFFSET+dim1*dim2*c_sizeof(r)
274 use,
INTRINSIC :: iso_c_binding
276 INTEGER(C_INT),
INTENT(IN) :: DIM1,DIM2
277 REAL(C_DOUBLE),
POINTER,
INTENT(OUT) :: FPTR(:,:)
278 LOGICAL,
OPTIONAL,
INTENT(IN) :: ADVANCE
281 CALL c_f_pointer ( handle%CPTR , fptr , (/dim1,dim2/) )
283 IF(
PRESENT(advance) )
THEN 286 handle%OFFSET = handle%OFFSET+dim1*dim2*c_sizeof(r)
293 use,
INTRINSIC :: iso_c_binding
295 INTEGER(C_INT),
INTENT(IN) :: BYTES
296 INTEGER(C_SIZE_T) :: SIZE
299 handle%OFFSET = handle%OFFSET+bytes
subroutine, public sharedmem_delete(HANDLE)
subroutine, public sharedmem_allocate(HANDLE, BYTES)
subroutine sharedmem_associate1_int32(HANDLE, SIZE, FPTR, ADVANCE)
subroutine, public sharedmem_advance(HANDLE, BYTES)
subroutine sharedmem_associate1_real32(HANDLE, SIZE, FPTR, ADVANCE)
subroutine sharedmem_associate0_int32(HANDLE, VALUE, ADVANCE)
subroutine sharedmem_associate0_real64(HANDLE, VALUE, ADVANCE)
subroutine sharedmem_associate2_int32(HANDLE, DIM1, DIM2, FPTR, ADVANCE)
subroutine sharedmem_associate2_real64(HANDLE, DIM1, DIM2, FPTR, ADVANCE)
void sharedmem_malloc_bytes(void **ptr, size_t bytes)
void sharedmem_free(void **ptr)
subroutine, public sharedmem_create(HANDLE, CPTR, BYTES)
subroutine sharedmem_associate0_real32(HANDLE, VALUE, ADVANCE)
subroutine sharedmem_associate1_real64(HANDLE, SIZE, FPTR, ADVANCE)
void sharedmem_advance_bytes(void **ptr, size_t bytes)
subroutine sharedmem_associate2_real32(HANDLE, DIM1, DIM2, FPTR, ADVANCE)