#ifndef OPENMM_CWRAPPER_H_ #define OPENMM_CWRAPPER_H_ /* Global Constants */ static /* Type Declarations */ typedef struct OpenMM_ typedef struct OpenMM_Vec3Array_struct OpenMM_Vec3Array; typedef struct OpenMM_StringArray_struct OpenMM_StringArray; typedef struct OpenMM_BondArray_struct OpenMM_BondArray; typedef struct OpenMM_ParameterArray_struct OpenMM_ParameterArray; typedef struct {double x, y, z;} OpenMM_Vec3; typedef enum {OpenMM_False = 0, OpenMM_True = 1} OpenMM_Boolean; #if defined(__cplusplus) extern "C" { #endif /* OpenMM_Vec3 */ extern OpenMM_Vec3 OpenMM_Vec3_scale(const OpenMM_Vec3 vec, double scale); /* OpenMM_Vec3Array */ extern OpenMM_Vec3Array* OpenMM_Vec3Array_create(int size); extern void OpenMM_Vec3Array_destroy(OpenMM_Vec3Array* array); extern int OpenMM_Vec3Array_getSize(const OpenMM_Vec3Array* array); extern void OpenMM_Vec3Array_resize(OpenMM_Vec3Array* array, int size); extern void OpenMM_Vec3Array_append(OpenMM_Vec3Array* array, const OpenMM_Vec3 vec); extern void OpenMM_Vec3Array_set(OpenMM_Vec3Array* array, int index, const OpenMM_Vec3 vec); extern const OpenMM_Vec3* OpenMM_Vec3Array_get(const OpenMM_Vec3Array* array, int index); /* OpenMM_StringArray */ extern OpenMM_StringArray* OpenMM_StringArray_create(int size); extern void OpenMM_StringArray_destroy(OpenMM_StringArray* array); extern int OpenMM_StringArray_getSize(const OpenMM_StringArray* array); extern void OpenMM_StringArray_resize(OpenMM_StringArray* array, int size); extern void OpenMM_StringArray_append(OpenMM_StringArray* array, const char* string); extern void OpenMM_StringArray_set(OpenMM_StringArray* array, int index, const char* string); extern const char* OpenMM_StringArray_get(const OpenMM_StringArray* array, int index); /* OpenMM_BondArray */ extern OpenMM_BondArray* OpenMM_BondArray_create(int size); extern void OpenMM_BondArray_destroy(OpenMM_BondArray* array); extern int OpenMM_BondArray_getSize(const OpenMM_BondArray* array); extern void OpenMM_BondArray_resize(OpenMM_BondArray* array, int size); extern void OpenMM_BondArray_append(OpenMM_BondArray* array, int particle1, int particle2); extern void OpenMM_BondArray_set(OpenMM_BondArray* array, int index, int particle1, int particle2); extern void OpenMM_BondArray_get(const OpenMM_BondArray* array, int index, int* particle1, int* particle2); /* OpenMM_ParameterArray */ extern int OpenMM_ParameterArray_getSize(const OpenMM_ParameterArray* array); extern double OpenMM_ParameterArray_get(const OpenMM_ParameterArray* array, const char* name); /* These methods need to be handled specially, since their C++ APIs cannot be directly translated to C. Unlike the C++ versions, the return value is allocated on the heap, and you must delete it yourself. */ extern OpenMM_State* OpenMM_Context_getState(const OpenMM_Context* target, int types); extern OpenMM_StringArray* OpenMM_Platform_loadPluginsFromDirectory(const char* directory); #if defined(__cplusplus) } #endif #endif /*OPENMM_CWRAPPER_H_*/ /* OpenMM:: extern void OpenMM_ typedef enum { , } OpenMM_ extern OpenMM_ , extern , 1