Commit bcbc4eec authored by Michael Sherman's avatar Michael Sherman
Browse files

Fixed wrapper generation to work on Windows (mostly inolved dllexport issues).

Deleted all the old hand-generated wrappers.
parent 9438fa83
This diff is collapsed.
...@@ -17,18 +17,6 @@ SET(OpenMM_CWRAPPER "OpenMMCWrapper") ...@@ -17,18 +17,6 @@ SET(OpenMM_CWRAPPER "OpenMMCWrapper")
SET(OpenMM_FWRAPPER "OpenMMFortranWrapper") SET(OpenMM_FWRAPPER "OpenMMFortranWrapper")
SET(OpenMM_FMODULE "OpenMMFortranModule") SET(OpenMM_FMODULE "OpenMMFortranModule")
# CWrapper is always a static library but you need a different
# one if you want to link with the OpenMM static library.
SET(CWRAPPER_FOR_SHARED ${OpenMM_CWRAPPER})
SET(CWRAPPER_FOR_STATIC ${OpenMM_CWRAPPER}_static)
# Visual Studio will add "_d" to target names automatically
# but on Unix or Cygwin we have to add the suffix manually
IF (UNIX AND CMAKE_BUILD_TYPE MATCHES Debug)
SET(CWRAPPER_FOR_SHARED ${CWRAPPER_FOR_SHARED}_d)
SET(CWRAPPER_FOR_STATIC ${CWRAPPER_FOR_STATIC}_d)
ENDIF (UNIX AND CMAKE_BUILD_TYPE MATCHES Debug)
SET(CPP_EXAMPLES HelloArgon HelloSodiumChloride HelloEthane HelloWaterBox) SET(CPP_EXAMPLES HelloArgon HelloSodiumChloride HelloEthane HelloWaterBox)
SET(C_EXAMPLES HelloArgonInC HelloSodiumChlorideInC) SET(C_EXAMPLES HelloArgonInC HelloSodiumChlorideInC)
SET(F_EXAMPLES HelloArgonInFortran HelloSodiumChlorideInFortran) SET(F_EXAMPLES HelloArgonInFortran HelloSodiumChlorideInFortran)
...@@ -36,24 +24,7 @@ SET(F_EXAMPLES HelloArgonInFortran HelloSodiumChlorideInFortran) ...@@ -36,24 +24,7 @@ SET(F_EXAMPLES HelloArgonInFortran HelloSodiumChlorideInFortran)
SET(BUILD_TESTING_SHARED 1) SET(BUILD_TESTING_SHARED 1)
SET(BUILD_TESTING_STATIC 1) SET(BUILD_TESTING_STATIC 1)
ADD_LIBRARY(${CWRAPPER_FOR_SHARED}
${OpenMM_CWRAPPER}.cpp ${OpenMM_FWRAPPER}.cpp ${OpenMM_CWRAPPER}.h)
SET_TARGET_PROPERTIES(${CWRAPPER_FOR_SHARED}
PROPERTIES
PROJECT_LABEL "C Bindings")
TARGET_LINK_LIBRARIES(${CWRAPPER_FOR_SHARED} ${SHARED_TARGET})
ADD_LIBRARY(${CWRAPPER_FOR_STATIC}
${OpenMM_CWRAPPER}.cpp ${OpenMM_FWRAPPER}.cpp ${OpenMM_CWRAPPER}.h)
SET_TARGET_PROPERTIES(${CWRAPPER_FOR_STATIC}
PROPERTIES
COMPILE_FLAGS "-DOPENMM_USE_STATIC_LIBRARIES"
PROJECT_LABEL "C Bindings for static OpenMM")
INSTALL_TARGETS(/lib RUNTIME_DIRECTORY /lib ${CWRAPPER_FOR_SHARED})
INSTALL_TARGETS(/lib RUNTIME_DIRECTORY /lib ${CWRAPPER_FOR_STATIC})
FOREACH(EX_ROOT ${CPP_EXAMPLES}) FOREACH(EX_ROOT ${CPP_EXAMPLES})
IF (BUILD_TESTING_SHARED) IF (BUILD_TESTING_SHARED)
# Link with shared library # Link with shared library
...@@ -88,7 +59,7 @@ FOREACH(EX_ROOT ${C_EXAMPLES}) ...@@ -88,7 +59,7 @@ FOREACH(EX_ROOT ${C_EXAMPLES})
SET_TARGET_PROPERTIES(${EX_ROOT} SET_TARGET_PROPERTIES(${EX_ROOT}
PROPERTIES PROPERTIES
PROJECT_LABEL "Example C - ${EX_ROOT}") PROJECT_LABEL "Example C - ${EX_ROOT}")
TARGET_LINK_LIBRARIES(${EX_ROOT} ${CWRAPPER_FOR_SHARED} ${SHARED_TARGET}) TARGET_LINK_LIBRARIES(${EX_ROOT} ${SHARED_TARGET})
ENDIF (BUILD_TESTING_SHARED) ENDIF (BUILD_TESTING_SHARED)
IF (BUILD_TESTING_STATIC) IF (BUILD_TESTING_STATIC)
...@@ -101,7 +72,7 @@ FOREACH(EX_ROOT ${C_EXAMPLES}) ...@@ -101,7 +72,7 @@ FOREACH(EX_ROOT ${C_EXAMPLES})
PROPERTIES PROPERTIES
COMPILE_FLAGS "-DOPENMM_USE_STATIC_LIBRARIES" COMPILE_FLAGS "-DOPENMM_USE_STATIC_LIBRARIES"
PROJECT_LABEL "Example C - ${EX_STATIC}") PROJECT_LABEL "Example C - ${EX_STATIC}")
TARGET_LINK_LIBRARIES(${EX_STATIC} ${CWRAPPER_FOR_STATIC} ${STATIC_TARGET}) TARGET_LINK_LIBRARIES(${EX_STATIC} ${STATIC_TARGET})
ENDIF (BUILD_TESTING_STATIC) ENDIF (BUILD_TESTING_STATIC)
INSTALL(FILES ${EX_ROOT}.c DESTINATION examples) INSTALL(FILES ${EX_ROOT}.c DESTINATION examples)
...@@ -112,9 +83,6 @@ FOREACH(EX_ROOT ${F_EXAMPLES}) ...@@ -112,9 +83,6 @@ FOREACH(EX_ROOT ${F_EXAMPLES})
INSTALL(FILES ${EX_ROOT}.f90 DESTINATION examples) INSTALL(FILES ${EX_ROOT}.f90 DESTINATION examples)
ENDFOREACH(EX_ROOT ${F_EXAMPLES}) ENDFOREACH(EX_ROOT ${F_EXAMPLES})
INSTALL(FILES ${OpenMM_CWRAPPER}.h ${OpenMM_CWRAPPER}.cpp ${OpenMM_FWRAPPER}.cpp
DESTINATION examples)
INSTALL(FILES ${OpenMM_FMODULE}.f90 DESTINATION examples)
INSTALL(FILES README.txt DESTINATION examples) INSTALL(FILES README.txt DESTINATION examples)
INSTALL(FILES Makefile NMakefile DESTINATION examples) INSTALL(FILES Makefile NMakefile DESTINATION examples)
......
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
# Makefile for OpenMM Preview Release 3 workshop "hello world" examples. # Makefile for OpenMM Preview Release 4 workshop "hello world" examples.
# June 24, 2009. # August 18, 2009
# See https://simtk.org/home/openmm. # See https://simtk.org/home/openmm.
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
# This assumes you have gcc compilers for whatever language you are # This assumes you have gcc compilers for whatever language you are
# using: g++ for C++ and C, gfortran for Fortran 95. # using: g++ for C++ and C, gfortran for Fortran 95.
# #
# Note: the C Wrappers and Fortran Module are just prototypes. They are # For the C and Fortran examples, we're depending on your version of
# incomplete but have enough functionality to get through these examples. # OpenMM to have been built with the automatically-generated API
# We would like more complete and better-thought-out interfaces; if you # wrappers.
# have code or ideas please post to the OpenMM forum at the above URL
# (select "Advanced/Public Forums").
# #
# This has had only minimal testing, although it has been known to # This has had only minimal testing, although it has been known to
# work. It is likely to work fine for C and C++. For Fortran, you # work. It is likely to work fine for C and C++. For Fortran, you
...@@ -32,8 +30,6 @@ FCPPLIBS = -lstdc++ ...@@ -32,8 +30,6 @@ FCPPLIBS = -lstdc++
LIB_DIR=$(OpenMM_INSTALL_DIR)/lib LIB_DIR=$(OpenMM_INSTALL_DIR)/lib
INCLUDE_DIR=$(OpenMM_INSTALL_DIR)/include INCLUDE_DIR=$(OpenMM_INSTALL_DIR)/include
# assume local directory for C and Fortran wrappers
WRAPPER_DIR=.
LIBS= -lOpenMM LIBS= -lOpenMM
ALL_CPP_EXAMPLES = HelloArgon HelloSodiumChloride HelloEthane HelloWaterBox ALL_CPP_EXAMPLES = HelloArgon HelloSodiumChloride HelloEthane HelloWaterBox
...@@ -46,40 +42,30 @@ default: HelloArgon ...@@ -46,40 +42,30 @@ default: HelloArgon
all : $(ALL_PROGS) all : $(ALL_PROGS)
# Treat all .cpp source files the same way (except the one that # Treat all .cpp source files the same way.
# implements the C Wrappers).
.cpp : .cpp :
g++ $(CFLAGS) -I$(INCLUDE_DIR) $< -L$(LIB_DIR) $(LIBS) -o $* g++ $(CFLAGS) -I$(INCLUDE_DIR) $< -L$(LIB_DIR) $(LIBS) -o $*
HelloArgonInC: HelloArgonInC.c OpenMMCWrapper.o HelloArgonInC: HelloArgonInC.c
g++ $(CFLAGS) -I$(WRAPPER_DIR) HelloArgonInC.c OpenMMCWrapper.o \ g++ $(CFLAGS) HelloArgonInC.c \
-L$(LIB_DIR) $(LIBS) -o HelloArgonInC -L$(LIB_DIR) $(LIBS) -o HelloArgonInC
HelloSodiumChlorideInC: HelloSodiumChlorideInC.c OpenMMCWrapper.o HelloSodiumChlorideInC: HelloSodiumChlorideInC.c
g++ $(CFLAGS) -I$(WRAPPER_DIR) HelloSodiumChlorideInC.c OpenMMCWrapper.o \ g++ $(CFLAGS) HelloSodiumChlorideInC.c \
-L$(LIB_DIR) $(LIBS) -o HelloSodiumChlorideInC -L$(LIB_DIR) $(LIBS) -o HelloSodiumChlorideInC
HelloArgonInFortran: HelloArgonInFortran.f90 openmm.mod OpenMMFortranWrapper.o OpenMMCWrapper.o HelloArgonInFortran: HelloArgonInFortran.f90 openmm.mod
gfortran $(FFLAGS) HelloArgonInFortran.f90 OpenMMFortranWrapper.o OpenMMCWrapper.o \ gfortran $(FFLAGS) HelloArgonInFortran.f90 \
-L$(LIB_DIR) $(LIBS) $(FCPPLIBS) -o HelloArgonInFortran -L$(LIB_DIR) $(LIBS) $(FCPPLIBS) -o HelloArgonInFortran
HelloSodiumChlorideInFortran: HelloSodiumChlorideInFortran.f90 openmm.mod OpenMMFortranWrapper.o OpenMMCWrapper.o HelloSodiumChlorideInFortran: HelloSodiumChlorideInFortran.f90 openmm.mod
gfortran $(FFLAGS) HelloSodiumChlorideInFortran.f90 OpenMMFortranWrapper.o OpenMMCWrapper.o \ gfortran $(FFLAGS) HelloSodiumChlorideInFortran.f90 \
-L$(LIB_DIR) $(LIBS) $(FCPPLIBS) -o HelloSodiumChlorideInFortran -L$(LIB_DIR) $(LIBS) $(FCPPLIBS) -o HelloSodiumChlorideInFortran
# Build C Wrappers (Fortran depends on this too)
OpenMMCWrapper.o:
g++ -c $(CFLAGS) -I$(WRAPPER_DIR) -I$(INCLUDE_DIR) \
$(WRAPPER_DIR)/OpenMMCWrapper.cpp -o OpenMMCWrapper.o
# Build Fortran Wrappers
OpenMMFortranWrapper.o:
g++ -c $(CFLAGS) -I$(WRAPPER_DIR) -I$(INCLUDE_DIR) \
$(WRAPPER_DIR)/OpenMMFortranWrapper.cpp -o OpenMMFortranWrapper.o
# Build Fortran 95 Module file # Build Fortran 95 Module file
openmm.mod: openmm.mod:
gfortran -c $(FFLAGS) $(WRAPPER_DIR)/OpenMMFortranModule.f90 gfortran -c $(FFLAGS) $(INCLUDE_DIR)/OpenMMFortranModule.f90
clean : clean :
rm $(ALL_PROGS) *.o *.mod *.obj *.exe rm $(ALL_PROGS) *.o *.mod *.obj *.exe
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -19,7 +19,5 @@ ADD_CUSTOM_COMMAND(OUTPUT OpenMMFortranWrapper.cpp COMMAND ${JAVA_RUNTIME} -jar ...@@ -19,7 +19,5 @@ ADD_CUSTOM_COMMAND(OUTPUT OpenMMFortranWrapper.cpp COMMAND ${JAVA_RUNTIME} -jar
ADD_CUSTOM_TARGET(ApiWrappers DEPENDS OpenMMCWrapper.h OpenMMCWrapper.cpp OpenMMFortranModule.f90 OpenMMFortranWrapper.cpp) ADD_CUSTOM_TARGET(ApiWrappers DEPENDS OpenMMCWrapper.h OpenMMCWrapper.cpp OpenMMFortranModule.f90 OpenMMFortranWrapper.cpp)
ADD_DEPENDENCIES(${SHARED_TARGET} ApiWrappers)
ADD_DEPENDENCIES(${STATIC_TARGET} ApiWrappers)
INSTALL_FILES(/include FILES OpenMMCWrapper.h OpenMMFortranModule.f90) INSTALL_FILES(/include FILES OpenMMCWrapper.h OpenMMFortranModule.f90)
...@@ -28,6 +28,10 @@ ...@@ -28,6 +28,10 @@
#ifndef OPENMM_CWRAPPER_H_ #ifndef OPENMM_CWRAPPER_H_
#define OPENMM_CWRAPPER_H_ #define OPENMM_CWRAPPER_H_
#ifndef OPENMM_EXPORT
#define OPENMM_EXPORT
#endif
/* Global Constants */ /* Global Constants */
<xsl:for-each select="Variable[@context=$openmm_namespace_id]"> <xsl:for-each select="Variable[@context=$openmm_namespace_id]">
static <xsl:call-template name="wrap_type"><xsl:with-param name="type_id" select="@type"/></xsl:call-template><xsl:value-of select="concat(' OpenMM_', @name, ' = ', number(@init), ';')"/> static <xsl:call-template name="wrap_type"><xsl:with-param name="type_id" select="@type"/></xsl:call-template><xsl:value-of select="concat(' OpenMM_', @name, ' = ', number(@init), ';')"/>
...@@ -51,38 +55,38 @@ extern "C" { ...@@ -51,38 +55,38 @@ extern "C" {
#endif #endif
/* OpenMM_Vec3 */ /* OpenMM_Vec3 */
extern OpenMM_Vec3 OpenMM_Vec3_scale(const OpenMM_Vec3 vec, double scale); extern OPENMM_EXPORT OpenMM_Vec3 OpenMM_Vec3_scale(const OpenMM_Vec3 vec, double scale);
/* OpenMM_Vec3Array */ /* OpenMM_Vec3Array */
extern OpenMM_Vec3Array* OpenMM_Vec3Array_create(int size); extern OPENMM_EXPORT OpenMM_Vec3Array* OpenMM_Vec3Array_create(int size);
extern void OpenMM_Vec3Array_destroy(OpenMM_Vec3Array* array); extern OPENMM_EXPORT void OpenMM_Vec3Array_destroy(OpenMM_Vec3Array* array);
extern int OpenMM_Vec3Array_getSize(const OpenMM_Vec3Array* array); extern OPENMM_EXPORT int OpenMM_Vec3Array_getSize(const OpenMM_Vec3Array* array);
extern void OpenMM_Vec3Array_resize(OpenMM_Vec3Array* array, int size); extern OPENMM_EXPORT void OpenMM_Vec3Array_resize(OpenMM_Vec3Array* array, int size);
extern void OpenMM_Vec3Array_append(OpenMM_Vec3Array* array, const OpenMM_Vec3 vec); extern OPENMM_EXPORT 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 OPENMM_EXPORT 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); extern OPENMM_EXPORT const OpenMM_Vec3* OpenMM_Vec3Array_get(const OpenMM_Vec3Array* array, int index);
/* OpenMM_StringArray */ /* OpenMM_StringArray */
extern OpenMM_StringArray* OpenMM_StringArray_create(int size); extern OPENMM_EXPORT OpenMM_StringArray* OpenMM_StringArray_create(int size);
extern void OpenMM_StringArray_destroy(OpenMM_StringArray* array); extern OPENMM_EXPORT void OpenMM_StringArray_destroy(OpenMM_StringArray* array);
extern int OpenMM_StringArray_getSize(const OpenMM_StringArray* array); extern OPENMM_EXPORT int OpenMM_StringArray_getSize(const OpenMM_StringArray* array);
extern void OpenMM_StringArray_resize(OpenMM_StringArray* array, int size); extern OPENMM_EXPORT void OpenMM_StringArray_resize(OpenMM_StringArray* array, int size);
extern void OpenMM_StringArray_append(OpenMM_StringArray* array, const char* string); extern OPENMM_EXPORT void OpenMM_StringArray_append(OpenMM_StringArray* array, const char* string);
extern void OpenMM_StringArray_set(OpenMM_StringArray* array, int index, const char* string); extern OPENMM_EXPORT void OpenMM_StringArray_set(OpenMM_StringArray* array, int index, const char* string);
extern const char* OpenMM_StringArray_get(const OpenMM_StringArray* array, int index); extern OPENMM_EXPORT const char* OpenMM_StringArray_get(const OpenMM_StringArray* array, int index);
/* OpenMM_BondArray */ /* OpenMM_BondArray */
extern OpenMM_BondArray* OpenMM_BondArray_create(int size); extern OPENMM_EXPORT OpenMM_BondArray* OpenMM_BondArray_create(int size);
extern void OpenMM_BondArray_destroy(OpenMM_BondArray* array); extern OPENMM_EXPORT void OpenMM_BondArray_destroy(OpenMM_BondArray* array);
extern int OpenMM_BondArray_getSize(const OpenMM_BondArray* array); extern OPENMM_EXPORT int OpenMM_BondArray_getSize(const OpenMM_BondArray* array);
extern void OpenMM_BondArray_resize(OpenMM_BondArray* array, int size); extern OPENMM_EXPORT void OpenMM_BondArray_resize(OpenMM_BondArray* array, int size);
extern void OpenMM_BondArray_append(OpenMM_BondArray* array, int particle1, int particle2); extern OPENMM_EXPORT 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 OPENMM_EXPORT 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); extern OPENMM_EXPORT void OpenMM_BondArray_get(const OpenMM_BondArray* array, int index, int* particle1, int* particle2);
/* OpenMM_ParameterArray */ /* OpenMM_ParameterArray */
extern int OpenMM_ParameterArray_getSize(const OpenMM_ParameterArray* array); extern OPENMM_EXPORT int OpenMM_ParameterArray_getSize(const OpenMM_ParameterArray* array);
extern double OpenMM_ParameterArray_get(const OpenMM_ParameterArray* array, const char* name); extern OPENMM_EXPORT double OpenMM_ParameterArray_get(const OpenMM_ParameterArray* array, const char* name);
<xsl:call-template name="primitive_array"> <xsl:call-template name="primitive_array">
<xsl:with-param name="element_type" select="'double'"/> <xsl:with-param name="element_type" select="'double'"/>
<xsl:with-param name="name" select="'OpenMM_DoubleArray'"/> <xsl:with-param name="name" select="'OpenMM_DoubleArray'"/>
...@@ -90,8 +94,8 @@ extern double OpenMM_ParameterArray_get(const OpenMM_ParameterArray* array, cons ...@@ -90,8 +94,8 @@ extern double OpenMM_ParameterArray_get(const OpenMM_ParameterArray* array, cons
/* These methods need to be handled specially, since their C++ APIs cannot be directly translated to C. /* 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. */ 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_EXPORT OpenMM_State* OpenMM_Context_getState(const OpenMM_Context* target, int types);
extern OpenMM_StringArray* OpenMM_Platform_loadPluginsFromDirectory(const char* directory); extern OPENMM_EXPORT OpenMM_StringArray* OpenMM_Platform_loadPluginsFromDirectory(const char* directory);
<!-- Class members --> <!-- Class members -->
<xsl:for-each select="Class[@context=$openmm_namespace_id and empty(index-of($skip_classes, @name))]"> <xsl:for-each select="Class[@context=$openmm_namespace_id and empty(index-of($skip_classes, @name))]">
...@@ -110,13 +114,13 @@ extern OpenMM_StringArray* OpenMM_Platform_loadPluginsFromDirectory(const char* ...@@ -110,13 +114,13 @@ extern OpenMM_StringArray* OpenMM_Platform_loadPluginsFromDirectory(const char*
<xsl:param name="element_type"/> <xsl:param name="element_type"/>
<xsl:param name="name"/> <xsl:param name="name"/>
/* <xsl:value-of select="$name"/> */ /* <xsl:value-of select="$name"/> */
extern <xsl:value-of select="$name"/>* <xsl:value-of select="$name"/>_create(int size); extern OPENMM_EXPORT <xsl:value-of select="$name"/>* <xsl:value-of select="$name"/>_create(int size);
extern void <xsl:value-of select="$name"/>_destroy(<xsl:value-of select="$name"/>* array); extern OPENMM_EXPORT void <xsl:value-of select="$name"/>_destroy(<xsl:value-of select="$name"/>* array);
extern int <xsl:value-of select="$name"/>_getSize(const <xsl:value-of select="$name"/>* array); extern OPENMM_EXPORT int <xsl:value-of select="$name"/>_getSize(const <xsl:value-of select="$name"/>* array);
extern void <xsl:value-of select="$name"/>_resize(<xsl:value-of select="$name"/>* array, int size); extern OPENMM_EXPORT void <xsl:value-of select="$name"/>_resize(<xsl:value-of select="$name"/>* array, int size);
extern void <xsl:value-of select="$name"/>_append(<xsl:value-of select="$name"/>* array, <xsl:value-of select="$element_type"/> value); extern OPENMM_EXPORT void <xsl:value-of select="$name"/>_append(<xsl:value-of select="$name"/>* array, <xsl:value-of select="$element_type"/> value);
extern void <xsl:value-of select="$name"/>_set(<xsl:value-of select="$name"/>* array, int index, <xsl:value-of select="$element_type"/> value); extern OPENMM_EXPORT void <xsl:value-of select="$name"/>_set(<xsl:value-of select="$name"/>* array, int index, <xsl:value-of select="$element_type"/> value);
extern <xsl:value-of select="concat($element_type, ' ', $name)"/>_get(const <xsl:value-of select="$name"/>* array, int index); extern OPENMM_EXPORT <xsl:value-of select="concat($element_type, ' ', $name)"/>_get(const <xsl:value-of select="$name"/>* array, int index);
</xsl:template> </xsl:template>
<!-- Print out information for a class --> <!-- Print out information for a class -->
...@@ -140,7 +144,7 @@ extern <xsl:value-of select="concat($element_type, ' ', $name)"/>_get(const <xsl ...@@ -140,7 +144,7 @@ extern <xsl:value-of select="concat($element_type, ' ', $name)"/>_get(const <xsl
</xsl:call-template> </xsl:call-template>
</xsl:for-each> </xsl:for-each>
</xsl:if> </xsl:if>
extern void OpenMM_<xsl:value-of select="concat(@name, '_destroy(OpenMM_', @name, '* target);')"/> extern OPENMM_EXPORT void OpenMM_<xsl:value-of select="concat(@name, '_destroy(OpenMM_', @name, '* target);')"/>
<!-- Methods --> <!-- Methods -->
<xsl:variable name="methods" select="/GCC_XML/Method[@context=$class_id and @access='public']"/> <xsl:variable name="methods" select="/GCC_XML/Method[@context=$class_id and @access='public']"/>
<xsl:for-each select="$methods"> <xsl:for-each select="$methods">
...@@ -173,7 +177,7 @@ typedef enum { ...@@ -173,7 +177,7 @@ typedef enum {
<!-- Print out the declaration for a constructor --> <!-- Print out the declaration for a constructor -->
<xsl:template name="constructor"> <xsl:template name="constructor">
<xsl:param name="suffix"/> <xsl:param name="suffix"/>
extern OpenMM_<xsl:value-of select="concat(@name, '* OpenMM_', @name, '_create', $suffix, '(')"/> extern OPENMM_EXPORT OpenMM_<xsl:value-of select="concat(@name, '* OpenMM_', @name, '_create', $suffix, '(')"/>
<xsl:for-each select="Argument"> <xsl:for-each select="Argument">
<xsl:if test="position() > 1">, </xsl:if> <xsl:if test="position() > 1">, </xsl:if>
<xsl:call-template name="wrap_type"><xsl:with-param name="type_id" select="@type"/></xsl:call-template> <xsl:call-template name="wrap_type"><xsl:with-param name="type_id" select="@type"/></xsl:call-template>
...@@ -185,7 +189,7 @@ extern OpenMM_<xsl:value-of select="concat(@name, '* OpenMM_', @name, '_create', ...@@ -185,7 +189,7 @@ extern OpenMM_<xsl:value-of select="concat(@name, '* OpenMM_', @name, '_create',
<!-- Print out the declaration for a method --> <!-- Print out the declaration for a method -->
<xsl:template name="method"> <xsl:template name="method">
<xsl:param name="class_name"/> <xsl:param name="class_name"/>
extern <xsl:call-template name="wrap_type"><xsl:with-param name="type_id" select="@returns"/></xsl:call-template><xsl:value-of select="concat(' OpenMM_', $class_name, '_', @name, '(')"/> extern OPENMM_EXPORT <xsl:call-template name="wrap_type"><xsl:with-param name="type_id" select="@returns"/></xsl:call-template><xsl:value-of select="concat(' OpenMM_', $class_name, '_', @name, '(')"/>
<xsl:if test="not(@static='1')"> <xsl:if test="not(@static='1')">
<xsl:if test="@const='1'"> <xsl:if test="@const='1'">
<xsl:value-of select="'const '"/> <xsl:value-of select="'const '"/>
...@@ -293,4 +297,4 @@ extern <xsl:call-template name="wrap_type"><xsl:with-param name="type_id" select ...@@ -293,4 +297,4 @@ extern <xsl:call-template name="wrap_type"><xsl:with-param name="type_id" select
</xsl:choose> </xsl:choose>
</xsl:template> </xsl:template>
</xsl:stylesheet> </xsl:stylesheet>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment