MODULE OpenMM_Types implicit none ! Global Constants real*8 OpenMM_ parameter(OpenMM_ ! Type Declarations type OpenMM_ integer*8 :: handle = 0 end type type OpenMM_Vec3Array integer*8 :: handle = 0 end type type OpenMM_StringArray integer*8 :: handle = 0 end type type OpenMM_BondArray integer*8 :: handle = 0 end type type OpenMM_ParameterArray integer*8 :: handle = 0 end type type OpenMM_PropertyArray integer*8 :: handle = 0 end type type OpenMM_DoubleArray integer*8 :: handle = 0 end type ! Enumerations integer*4 OpenMM_False integer*4 OpenMM_True parameter(OpenMM_False=0) parameter(OpenMM_True=1) END MODULE OpenMM_Types MODULE OpenMM use OpenMM_Types; implicit none interface ! OpenMM_Vec3 subroutine OpenMM_Vec3_scale(vec, scale, result) use OpenMM_Types; implicit none real*8 vec(3) real*8 scale real*8 result(3) end ! OpenMM_Vec3Array subroutine OpenMM_Vec3Array_create(result, size) use OpenMM_Types; implicit none integer*4 size type (OpenMM_Vec3Array) result end subroutine OpenMM_Vec3Array_destroy(destroy) use OpenMM_Types; implicit none type (OpenMM_Vec3Array) destroy end function OpenMM_Vec3Array_getSize(target) use OpenMM_Types; implicit none type (OpenMM_Vec3Array) target integer*4 OpenMM_Vec3Array_getSize end subroutine OpenMM_Vec3Array_resize(target, size) use OpenMM_Types; implicit none type (OpenMM_Vec3Array) target integer*4 size end subroutine OpenMM_Vec3Array_append(target, vec) use OpenMM_Types; implicit none type (OpenMM_Vec3Array) target real*8 vec(3) end subroutine OpenMM_Vec3Array_set(target, index, vec) use OpenMM_Types; implicit none type (OpenMM_Vec3Array) target integer*4 index real*8 vec(3) end subroutine OpenMM_Vec3Array_get(target, index, result) use OpenMM_Types; implicit none type (OpenMM_Vec3Array) target integer*4 index real*8 result(3) end ! OpenMM_StringArray subroutine OpenMM_StringArray_create(result, size) use OpenMM_Types; implicit none integer*4 size type (OpenMM_StringArray) result end subroutine OpenMM_StringArray_destroy(destroy) use OpenMM_Types; implicit none type (OpenMM_StringArray) destroy end function OpenMM_StringArray_getSize(target) use OpenMM_Types; implicit none type (OpenMM_StringArray) target integer*4 OpenMM_StringArray_getSize end subroutine OpenMM_StringArray_resize(target, size) use OpenMM_Types; implicit none type (OpenMM_StringArray) target integer*4 size end subroutine OpenMM_StringArray_append(target, str) use OpenMM_Types; implicit none type (OpenMM_StringArray) target character(*) str end subroutine OpenMM_StringArray_set(target, index, str) use OpenMM_Types; implicit none type (OpenMM_StringArray) target integer*4 index character(*) str end subroutine OpenMM_StringArray_get(target, index, result) use OpenMM_Types; implicit none type (OpenMM_StringArray) target integer*4 index character(*) result end ! OpenMM_BondArray subroutine OpenMM_BondArray_create(result, size) use OpenMM_Types; implicit none integer*4 size type (OpenMM_BondArray) result end subroutine OpenMM_BondArray_destroy(destroy) use OpenMM_Types; implicit none type (OpenMM_BondArray) destroy end function OpenMM_BondArray_getSize(target) use OpenMM_Types; implicit none type (OpenMM_BondArray) target integer*4 OpenMM_BondArray_getSize end subroutine OpenMM_BondArray_resize(target, size) use OpenMM_Types; implicit none type (OpenMM_BondArray) target integer*4 size end subroutine OpenMM_BondArray_append(target, particle1, particle2) use OpenMM_Types; implicit none type (OpenMM_BondArray) target integer*4 particle1 integer*4 particle2 end subroutine OpenMM_BondArray_set(target, index, particle1, particle2) use OpenMM_Types; implicit none type (OpenMM_BondArray) target integer*4 index integer*4 particle1 integer*4 particle2 end subroutine OpenMM_BondArray_get(target, index, particle1, particle2) use OpenMM_Types; implicit none type (OpenMM_BondArray) target integer*4 index integer*4 particle1 integer*4 particle2 end ! OpenMM_ParameterArray function OpenMM_ParameterArray_getSize(target) use OpenMM_Types; implicit none type (OpenMM_ParameterArray) target integer*4 OpenMM_ParameterArray_getSize end subroutine OpenMM_ParameterArray_get(target, name, result) use OpenMM_Types; implicit none type (OpenMM_ParameterArray) target character(*) name character(*) result end ! OpenMM_PropertyArray function OpenMM_PropertyArray_getSize(target) use OpenMM_Types; implicit none type (OpenMM_ParameterArray) target integer*4 OpenMM_PropertyArray_getSize end subroutine OpenMM_PropertyArray_get(target, name, result) use OpenMM_Types; implicit none type (OpenMM_PropertyArray) target character(*) name character(*) result end end interface END MODULE OpenMM ! subroutine _create(result, size) use OpenMM_Types; implicit none integer*4 size type () result end subroutine _destroy(destroy) use OpenMM_Types; implicit none type () destroy end function _getSize(target) use OpenMM_Types; implicit none type () target integer*4 _getSize end subroutine _resize(target, size) use OpenMM_Types; implicit none type () target integer*4 size end subroutine _append(target, value) use OpenMM_Types; implicit none type () target value end subroutine _set(target, index, value) use OpenMM_Types; implicit none type () target integer*4 index value end subroutine _get(target, index, result) use OpenMM_Types; implicit none type () target integer*4 index result end ! OpenMM:: integer*4 OpenMM_ parameter(OpenMM_ subroutine OpenMM_ use OpenMM_Types; implicit none type (OpenMM_ subroutine OpenMM_ use OpenMM_Types; implicit none type (OpenMM_ function subroutine , , use OpenMM_Types; implicit none type (OpenMM_