summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgoodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac>1999-10-22 13:52:10 +0000
committergoodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac>1999-10-22 13:52:10 +0000
commitb03e83b33e90333c411a3b0833c9d6683bc467b8 (patch)
treef642834758e23524a00c4dafcd1a6618eaadc0bc /src
parentbe202dad37826c03a9503ca8e801d745d04415fb (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.h54
-rw-r--r--src/util/Misc.c9
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);