diff options
author | goodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 1999-10-22 13:52:10 +0000 |
---|---|---|
committer | goodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 1999-10-22 13:52:10 +0000 |
commit | b03e83b33e90333c411a3b0833c9d6683bc467b8 (patch) | |
tree | f642834758e23524a00c4dafcd1a6618eaadc0bc /src | |
parent | be202dad37826c03a9503ca8e801d745d04415fb (diff) |
Fortran string stuff on the T3E. Have introduced
ONE_FORTRSTRING_PTR(arg)
etc
to get the pointer to a fortran string.
Still needs testing on other architectures.
Tom
git-svn-id: http://svn.cactuscode.org/flesh/trunk@1084 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'src')
-rw-r--r-- | src/include/cctk_FortranString.h | 54 | ||||
-rw-r--r-- | src/util/Misc.c | 9 |
2 files changed, 50 insertions, 13 deletions
diff --git a/src/include/cctk_FortranString.h b/src/include/cctk_FortranString.h index a9229863..a6224017 100644 --- a/src/include/cctk_FortranString.h +++ b/src/include/cctk_FortranString.h @@ -30,21 +30,33 @@ #define THREE_FORTSTRINGS_ARGS\ _fcd cctk_str1, _fcd cctk_str2, _fcd cctk_str3 #define ONE_FORTSTRING_CREATE(arg1)\ - int cctk_strlen1 = _fcdlen(arg1); \ + int cctk_strlen1 = _fcdlen(cctk_str1); \ char *arg1 = Util_NullTerminateString(_fcdtocp(cctk_str1),cctk_strlen1);; #define TWO_FORTSTRINGS_CREATE(arg1,arg2)\ - int cctk_strlen1 = _fcdlen(arg1);\ - int cctk_strlen2 = _fcdlen(arg2);\ - char *arg1 = Util_NullTerminateString(_fcdtocp(cctk_arg1),cctk_strlen1);\ - char *arg2 = Util_NullTerminateString(_fcdtocp(cctk_arg2),cctk_strlen2); -#define THREE_FORTSTRINGS_CREATE(cctk_str1,cctk_str2,cctk_str3)\ - int cctk_strlen1 = _fcdlen(fcd_arg1);\ - int cctk_strlen2 = _fcdlen(fcd_arg2);\ - int cctk_strlen3 = _fcdlen(fcd_arg3);\ + int cctk_strlen1 = _fcdlen(cctk_str1);\ + int cctk_strlen2 = _fcdlen(cctk_str2);\ + char *arg1 = Util_NullTerminateString(_fcdtocp(cctk_str1),cctk_strlen1);\ + char *arg2 = Util_NullTerminateString(_fcdtocp(cctk_str2),cctk_strlen2); +#define THREE_FORTSTRINGS_CREATE(arg1,arg2,arg3)\ + int cctk_strlen1 = _fcdlen(cctk_str1);\ + int cctk_strlen2 = _fcdlen(cctk_str2);\ + int cctk_strlen3 = _fcdlen(cctk_str3);\ char *arg1 = Util_NullTerminateString(_fcdtocp(cctk_str1),cctk_strlen1);\ char *arg2 = Util_NullTerminateString(_fcdtocp(cctk_str2),cctk_strlen2);\ char *arg3 = Util_NullTerminateString(_fcdtocp(cctk_str3),cctk_strlen3); +#define ONE_FORTSTRING_PTR(arg1)\ + char *arg1 = _fcdtocp(cctk_str1); + +#define TWO_FORTSTRING_PTR(arg1, arg2)\ + char *arg1 = _fcdtocp(cctk_str1);\ + char *arg2 = _fcdtocp(cctk_str2); + +#define THREE_FORTSTRING_PTR(arg1, arg2, arg3)\ + char *arg1 = _fcdtocp(cctk_str1);\ + char *arg2 = _fcdtocp(cctk_str2);\ + char *arg3 = _fcdtocp(cctk_str3); + #elif defined WIN32 #define ONE_FORTSTRING_ARG\ @@ -68,6 +80,18 @@ char *arg2 = Util_NullTerminateString(cctk_str2,cctk_strlen2);\ char *arg3 = Util_NullTerminateString(cctk_str3,cctk_strlen3); +#define ONE_FORTSTRING_PTR(arg1)\ + char *arg1 = cctk_str1; + +#define TWO_FORTSTRING_PTR(arg1, arg2)\ + char *arg1 = cctk_str1;\ + char *arg2 = cctk_str2; + +#define THREE_FORTSTRING_PTR(arg1, arg2, arg3)\ + char *arg1 = cctk_str1;\ + char *arg2 = cctk_str2;\ + char *arg3 = cctk_str3; + #else #define ONE_FORTSTRING_ARG\ @@ -95,6 +119,18 @@ char *arg2 = Util_NullTerminateString(cctk_str2,cctk_strlen2);\ char *arg3 = Util_NullTerminateString(cctk_str3,cctk_strlen3); +#define ONE_FORTSTRING_PTR(arg1)\ + char *arg1 = cctk_str1; + +#define TWO_FORTSTRING_PTR(arg1, arg2)\ + char *arg1 = cctk_str1;\ + char *arg2 = cctk_str2; + +#define THREE_FORTSTRING_PTR(arg1, arg2, arg3)\ + char *arg1 = cctk_str1;\ + char *arg2 = cctk_str2;\ + char *arg3 = cctk_str3; + #endif #endif /* _CCTK_FORTRANSTRING_H_*/ diff --git a/src/util/Misc.c b/src/util/Misc.c index 25726f91..8a8d45dc 100644 --- a/src/util/Misc.c +++ b/src/util/Misc.c @@ -970,8 +970,9 @@ int CCTK_RegexMatch(const char *string, void FORTRAN_NAME(CCTK_FortranString)(int *nchar, char **cstring,ONE_FORTSTRING_ARG) { - ONE_FORTSTRING_CREATE(fstring) int i; + ONE_FORTSTRING_CREATE(fstring) + ONE_FORTSTRING_PTR(fptr) if (strlen(*cstring) > cctk_strlen1) { @@ -986,15 +987,15 @@ void FORTRAN_NAME(CCTK_FortranString)(int *nchar, char **cstring,ONE_FORTSTRING_ for (i=0;i<strlen(*cstring);i++) { - cctk_str1[i] = (*cstring)[i]; + fptr[i] = (*cstring)[i]; } for (i=strlen(*cstring);i<cctk_strlen1;i++) { - cctk_str1[i] = ' '; + fptr[i] = ' '; } - cctk_str1[strlen(*cstring)] = '\0'; + fptr[strlen(*cstring)] = '\0'; *nchar = strlen(*cstring); |