diff options
author | allen <allen@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 1999-07-30 13:12:54 +0000 |
---|---|---|
committer | allen <allen@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 1999-07-30 13:12:54 +0000 |
commit | 08d345f1a8c59312367b102d37ce30ef2070ad31 (patch) | |
tree | 1aa71d16bbbc6c19a6aeb040bbd7f74ff191add9 /src/include/cctk_FortranString.h | |
parent | 911d72f4fc3e61a8faa523cdf5c6f4b37d5d0c33 (diff) |
New include file names
git-svn-id: http://svn.cactuscode.org/flesh/trunk@833 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'src/include/cctk_FortranString.h')
-rw-r--r-- | src/include/cctk_FortranString.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/src/include/cctk_FortranString.h b/src/include/cctk_FortranString.h new file mode 100644 index 00000000..9500e45b --- /dev/null +++ b/src/include/cctk_FortranString.h @@ -0,0 +1,102 @@ + /*@@ + @header cctk_FortranString.h + @date Wed Feb 17 12:55 1999 + @author Gabrielle Allen, Paul Walker + @desc + Macros for dealing with strings passed from fortran to C. + The memory for the new arguments created should be freed after use + + To ensure that passing strings from fortran to C has a chance of + working with all compilers, we assume that + + ** Strings are always at the end of the argument list ** + + @enddesc + @version $Header$ + @@*/ + +#include "cctk_Misc.h" + +#if defined T3E + +#include <fortran.h> +#define ONE_FORTSTRING_ARG\ + _fcd fcdarg +#define TWO_FORTSTRINGS_ARGS\ + _fcd fcd_n, _fcd fcd_w +#define THREE_FORTSTRINGS_ARGS\ + _fcd fcd_arg1, _fcd fcd_arg2, _fcd fcd_arg3 +#define ONE_FORTSTRING_CREATE(argn)\ + int len = _fcdlen(fcdarg); \ + char *argn = Util_NullTerminateString(_fcdtocp(fcdarg),len);; +#define TWO_FORTSTRINGS_CREATE(argn,argw)\ + int nl = _fcdlen(fcd_n);\ + int wl = _fcdlen(fcd_w);\ + char *argn = Util_NullTerminateString(_fcdtocp(fcd_n),nl);\ + char *argw = Util_NullTerminateString(_fcdtocp(fcd_w),wl); +#define THREE_FORTSTRINGS_CREATE(arg1,arg2,arg3)\ + int narg1 = _fcdlen(fcd_arg1);\ + int narg2 = _fcdlen(fcd_arg2);\ + int narg3 = _fcdlen(fcd_arg3);\ + char *arg1 = Util_NullTerminateString(_fcdtocp(fcd_arg1),narg1);\ + char *arg2 = Util_NullTerminateString(_fcdtocp(fcd_arg2),narg2);\ + char *arg3 = Util_NullTerminateString(_fcdtocp(fcd_arg3),narg3); + +#elif defined WIN32 + +#define ONE_FORTSTRING_ARG\ + char *n, unsigned int nl +#define TWO_FORTSTRINGS_ARGS\ + char *n, int nl, char *w, int wl +#define THREE_FORTSTRINGS_ARGS\ + const char *CCTK_str1,\ + const char *CCTK_str2,\ + const char *CCTK_str3,\ + unsigned int CCTK_len1,\ + unsigned int CCTK_len2,\ + unsigned int CCTK_len3 +#define ONE_FORTSTRING_CREATE(argn)\ + char *argn = Util_NullTerminateString(n,nl); +#define TWO_FORTSTRINGS_CREATE(argn,argw)\ + char *argn = Util_NullTerminateString(n,nl);\ + char *argw = Util_NullTerminateString(w,wl); +#define THREE_FORTSTRINGS_CREATE(arg1,arg2,arg3)\ + char *arg1 = Util_NullTerminateString(CCTK_str1,CCTK_len1);\ + char *arg2 = Util_NullTerminateString(CCTK_str2,CCTK_len2);\ + char *arg3 = Util_NullTerminateString(CCTK_str3,CCTK_len3); + +#else + +#define ONE_FORTSTRING_ARG\ + const char *CCTK_str1,\ + unsigned int CCTK_len1 +#define TWO_FORTSTRINGS_ARGS\ + const char *CCTK_str1,\ + const char *CCTK_str2,\ + unsigned int CCTK_len1,\ + unsigned int CCTK_len2 +#define THREE_FORTSTRINGS_ARGS\ + const char *CCTK_str1,\ + const char *CCTK_str2,\ + const char *CCTK_str3,\ + unsigned int CCTK_len1,\ + unsigned int CCTK_len2,\ + unsigned int CCTK_len3 +#define ONE_FORTSTRING_CREATE(arg1)\ + char *arg1 = Util_NullTerminateString(CCTK_str1,CCTK_len1); +#define TWO_FORTSTRINGS_CREATE(arg1,arg2)\ + char *arg1 = Util_NullTerminateString(CCTK_str1,CCTK_len1);\ + char *arg2 = Util_NullTerminateString(CCTK_str2,CCTK_len2); +#define THREE_FORTSTRINGS_CREATE(arg1,arg2,arg3)\ + char *arg1 = Util_NullTerminateString(CCTK_str1,CCTK_len1);\ + char *arg2 = Util_NullTerminateString(CCTK_str2,CCTK_len2);\ + char *arg3 = Util_NullTerminateString(CCTK_str3,CCTK_len3); + +#endif + + + + + + + |