#include #if defined(WITH_F77_WRAPPER) #include #include #include #include "grace_np.h" #ifdef NEED_F77_UNDERSCORE # define F77_FNAME(fname) fname ## _ #else # define F77_FNAME(fname) fname #endif typedef void (*GraceFortranFunctionType) (const char *str, int len); static GraceFortranFunctionType fortran_error = (GraceFortranFunctionType) 0; static void GraceFortranWrapper(const char *str) { if (fortran_error == (GraceFortranFunctionType) 0) { fprintf(stderr, "%s\n", str); } else { fortran_error(str, strlen(str)); } } void F77_FNAME(graceregistererrorfunctionf) (GraceFortranFunctionType f) { fortran_error = f; GraceRegisterErrorFunction(GraceFortranWrapper); } int F77_FNAME(graceopenf) (const int *arg) { return (GraceOpen (*arg)); } int F77_FNAME(graceisopenf) (void) { return (GraceIsOpen ()); } int F77_FNAME(graceclosef) (void) { return (GraceClose ()); } int F77_FNAME(graceclosepipef) (void) { return (GraceClosePipe()); } int F77_FNAME(graceflushf) (void) { return (GraceFlush ()); } int F77_FNAME(gracecommandf) (const char* arg, int length) { char* str; int res; str = (char*) malloc ((size_t) (length + 1)); if (str == NULL) { fprintf (stderr, "GraceCommandf: Not enough memory\n"); return (-1); } strncpy (str, arg, length); str[length] = 0; res = GraceCommand (str); free (str); return (res); } #else /* don't include Fortran wrapper */ /* To make ANSI C happy about non-empty file */ void F77_FNAME(_gracef_np_c_dummy_func) (void) {} #endif /* WITH_F77_WRAPPER */