#include <config.h>
#if defined(WITH_F77_WRAPPER)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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 */
syntax highlighted by Code2HTML, v. 0.9.1