Commit 576751ba authored by Michael Sherman's avatar Michael Sherman
Browse files

Remove trailing blanks from Fortran strings.

parent 3a132503
...@@ -109,6 +109,12 @@ static void copyAndPadString(char* dest, const char* source, int length) { ...@@ -109,6 +109,12 @@ static void copyAndPadString(char* dest, const char* source, int length) {
dest[i] = (reachedEnd ? ' ' : source[i]); dest[i] = (reachedEnd ? ' ' : source[i]);
} }
} }
/* copy blank-trimmed Fortran string into an std::string */
static string makeString(const char* fsrc, int length) {
while (length && fsrc[length-1]==' ')
--length;
return string(fsrc, length);
}
OPENMM_EXPORT void openmm_stringarray_create_(OpenMM_StringArray*& result, const int& size) { OPENMM_EXPORT void openmm_stringarray_create_(OpenMM_StringArray*& result, const int& size) {
result = OpenMM_StringArray_create(size); result = OpenMM_StringArray_create(size);
} }
...@@ -136,16 +142,16 @@ OPENMM_EXPORT void OPENMM_STRINGARRAY_RESIZE(OpenMM_StringArray* const& arra ...@@ -136,16 +142,16 @@ OPENMM_EXPORT void OPENMM_STRINGARRAY_RESIZE(OpenMM_StringArray* const& arra
OpenMM_StringArray_resize(array, size); OpenMM_StringArray_resize(array, size);
} }
OPENMM_EXPORT void openmm_stringarray_append_(OpenMM_StringArray* const& array, const char* str, int length) { OPENMM_EXPORT void openmm_stringarray_append_(OpenMM_StringArray* const& array, const char* str, int length) {
OpenMM_StringArray_append(array, string(str, length).c_str()); OpenMM_StringArray_append(array, makeString(str, length).c_str());
} }
OPENMM_EXPORT void OPENMM_STRINGARRAY_APPEND(OpenMM_StringArray* const& array, const char* str, int length) { OPENMM_EXPORT void OPENMM_STRINGARRAY_APPEND(OpenMM_StringArray* const& array, const char* str, int length) {
OpenMM_StringArray_append(array, string(str, length).c_str()); OpenMM_StringArray_append(array, makeString(str, length).c_str());
} }
OPENMM_EXPORT void openmm_stringarray_set_(OpenMM_StringArray* const& array, const int& index, const char* str, int length) { OPENMM_EXPORT void openmm_stringarray_set_(OpenMM_StringArray* const& array, const int& index, const char* str, int length) {
OpenMM_StringArray_set(array, index-1, string(str, length).c_str()); OpenMM_StringArray_set(array, index-1, makeString(str, length).c_str());
} }
OPENMM_EXPORT void OPENMM_STRINGARRAY_SET(OpenMM_StringArray* const& array, const int& index, const char* str, int length) { OPENMM_EXPORT void OPENMM_STRINGARRAY_SET(OpenMM_StringArray* const& array, const int& index, const char* str, int length) {
OpenMM_StringArray_set(array, index-1, string(str, length).c_str()); OpenMM_StringArray_set(array, index-1, makeString(str, length).c_str());
} }
OPENMM_EXPORT void openmm_stringarray_get_(const OpenMM_StringArray* const& array, const int& index, char* result, int length) { OPENMM_EXPORT void openmm_stringarray_get_(const OpenMM_StringArray* const& array, const int& index, char* result, int length) {
const char* str = OpenMM_StringArray_get(array, index-1); const char* str = OpenMM_StringArray_get(array, index-1);
...@@ -210,10 +216,10 @@ OPENMM_EXPORT int OPENMM_PARAMETERARRAY_GETSIZE(const OpenMM_ParameterArray* con ...@@ -210,10 +216,10 @@ OPENMM_EXPORT int OPENMM_PARAMETERARRAY_GETSIZE(const OpenMM_ParameterArray* con
return OpenMM_ParameterArray_getSize(array); return OpenMM_ParameterArray_getSize(array);
} }
OPENMM_EXPORT double openmm_parameterarray_get_(const OpenMM_ParameterArray* const& array, const char* name, int length) { OPENMM_EXPORT double openmm_parameterarray_get_(const OpenMM_ParameterArray* const& array, const char* name, int length) {
return OpenMM_ParameterArray_get(array, string(name, length).c_str()); return OpenMM_ParameterArray_get(array, makeString(name, length).c_str());
} }
OPENMM_EXPORT double OPENMM_PARAMETERARRAY_GET(const OpenMM_ParameterArray* const& array, const char* name, int length) { OPENMM_EXPORT double OPENMM_PARAMETERARRAY_GET(const OpenMM_ParameterArray* const& array, const char* name, int length) {
return OpenMM_ParameterArray_get(array, string(name, length).c_str()); return OpenMM_ParameterArray_get(array, makeString(name, length).c_str());
} }
<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'"/>
...@@ -229,10 +235,10 @@ OPENMM_EXPORT void OPENMM_CONTEXT_GETSTATE(const OpenMM_Context*&amp; target, in ...@@ -229,10 +235,10 @@ OPENMM_EXPORT void OPENMM_CONTEXT_GETSTATE(const OpenMM_Context*&amp; target, in
result = OpenMM_Context_getState(target, types); result = OpenMM_Context_getState(target, types);
}; };
OPENMM_EXPORT void openmm_platform_loadpluginsfromdirectory_(const char* directory, OpenMM_StringArray*&amp; result, int length) { OPENMM_EXPORT void openmm_platform_loadpluginsfromdirectory_(const char* directory, OpenMM_StringArray*&amp; result, int length) {
result = OpenMM_Platform_loadPluginsFromDirectory(string(directory, length).c_str()); result = OpenMM_Platform_loadPluginsFromDirectory(makeString(directory, length).c_str());
}; };
OPENMM_EXPORT void OPENMM_PLATFORM_LOADPLUGINSFROMDIRECTORY(const char* directory, OpenMM_StringArray*&amp; result, int length) { OPENMM_EXPORT void OPENMM_PLATFORM_LOADPLUGINSFROMDIRECTORY(const char* directory, OpenMM_StringArray*&amp; result, int length) {
result = OpenMM_Platform_loadPluginsFromDirectory(string(directory, length).c_str()); result = OpenMM_Platform_loadPluginsFromDirectory(makeString(directory, length).c_str());
}; };
<!-- Class members --> <!-- Class members -->
...@@ -384,7 +390,7 @@ OPENMM_EXPORT <xsl:value-of select="concat('void ', $function_name, '(OpenMM_', ...@@ -384,7 +390,7 @@ OPENMM_EXPORT <xsl:value-of select="concat('void ', $function_name, '(OpenMM_',
<xsl:if test="position() > 1">, </xsl:if> <xsl:if test="position() > 1">, </xsl:if>
<xsl:choose> <xsl:choose>
<xsl:when test="@type=$const_ref_string_type_id"> <xsl:when test="@type=$const_ref_string_type_id">
<xsl:value-of select="concat('string(', @name, ', ', @name, '_length).c_str()')"/> <xsl:value-of select="concat('makeString(', @name, ', ', @name, '_length).c_str()')"/>
</xsl:when> </xsl:when>
<xsl:otherwise> <xsl:otherwise>
<xsl:value-of select="@name"/> <xsl:value-of select="@name"/>
...@@ -484,7 +490,7 @@ OPENMM_EXPORT <xsl:if test="$has_return"> ...@@ -484,7 +490,7 @@ OPENMM_EXPORT <xsl:if test="$has_return">
<xsl:variable name="type_node" select="/GCC_XML/*[@id=$type_id]"/> <xsl:variable name="type_node" select="/GCC_XML/*[@id=$type_id]"/>
<xsl:choose> <xsl:choose>
<xsl:when test="@type=$const_ref_string_type_id or @type=$ptr_const_char_type_id"> <xsl:when test="@type=$const_ref_string_type_id or @type=$ptr_const_char_type_id">
<xsl:value-of select="concat('string(', @name, ', ', @name, '_length).c_str()')"/> <xsl:value-of select="concat('makeString(', @name, ', ', @name, '_length).c_str()')"/>
</xsl:when> </xsl:when>
<xsl:when test="local-name($type_node)='Enumeration'"> <xsl:when test="local-name($type_node)='Enumeration'">
<xsl:variable name="enum_class" select="/GCC_XML/*[@id=$type_node/@context]"/> <xsl:variable name="enum_class" select="/GCC_XML/*[@id=$type_node/@context]"/>
......
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