summaryrefslogtreecommitdiff
path: root/src/include/cctk_FortranString.h
diff options
context:
space:
mode:
authorallen <allen@17b73243-c579-4c4c-a9d2-2d5706c11dac>1999-07-30 13:12:54 +0000
committerallen <allen@17b73243-c579-4c4c-a9d2-2d5706c11dac>1999-07-30 13:12:54 +0000
commit08d345f1a8c59312367b102d37ce30ef2070ad31 (patch)
tree1aa71d16bbbc6c19a6aeb040bbd7f74ff191add9 /src/include/cctk_FortranString.h
parent911d72f4fc3e61a8faa523cdf5c6f4b37d5d0c33 (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.h102
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
+
+
+
+
+
+
+