/* * inc/bind.h * Binding FORTRAN for GKS/puc C. Global include. * Microsoft C 5.0 / Microsoft FORTRAN 4.0 - VAX C 3.0 / VAX FORTRAN * GNU C 3.7 / SUN FORTRAN 1.3 / WATCOM C 9.0 * Grupo de Tecnologia em Computacao Grafica - PUC/RIO * 21 Jul 92 */ #ifdef __WATCOMC__ #include #endif /* __WATCOMC__ */ #ifdef __TURBOC__ #define FORFUNC(nome) pascal nome #else #ifdef __VAXC__ #define FORFUNC(nome) nome #else #ifdef __WATCOMC__ #define FORFUNC(nome) fortran nome #else #ifdef __MSC__ #define FORFUNC(nome) fortran nome #else #if defined(__AIX__) || defined(__DGR8000__) #define FORFUNC(nome) nome #else #ifdef __UNIX__ #ifdef __CPPKR #define FORFUNC(nome) nome/**/_ #else #define FORFUNC(nome) nome##_ #endif /* __CPPKR */ #else #define FORFUNC(nome) nome #endif /* __UNIX__ */ #endif /* __AIX__ || __DGR8000__ */ #endif /* __MSC__ */ #endif /* __WATCOMC__ */ #endif /* __VAXC__ */ #endif /* __TURBOC__ */ #define _GKS_F_DEFS_ #include Gks typedef Glong int4; typedef Gfloat real4; #ifdef __WATCOMC__ typedef struct { char *addr; unsigned len; } _gks_descriptor; #endif /* __WATCOMC__ */ #ifdef __VAXC__ #define FNAME 1536 #include descrip #define Gpickstrlen(a,b,c) _gks_puc_bind_pickstrlen ( b ) #define Gstrleninit(c) 0 #define stradr(a) (((struct dsc$descriptor_s*)a)->dsc$a_pointer) #else #ifdef __WATCOMC__ #define FNAME 1536 #define Gpickstrlen(a,b,c) _gks_puc_bind_pickstrlen ( b ) #define Gstrleninit(c) 0 #define stradr(a) (((_gks_descriptor*)a)->addr) #else #ifdef __MSDOS__ #define FNAME 128 #define Gpickstrlen(a,b,c) _gks_puc_bind_pickstrlen ( a ) #define Gstrleninit(c) 0 #define stradr(a) (a) #else #define FNAME 512 #include Stdarg #ifdef __DGR8000__ #define Gpickstrlen(a,b,c) _gks_puc_bind_pickstrlen ( c ) #else #define Gpickstrlen(a,b,c) _gks_puc_bind_pickstrlen ( a ) #endif /* __DGR8000__ */ #ifdef __UNIX__ #ifdef __CLIX__ /* Velho */ #define Gstrleninit(c) do {\ va_list ___l;\ int4 ___a[10];\ int ___i;\ va_start(___l,c);\ for(___i=0;___i<10;___i++)\ ___a[___i]=va_arg(___l,int4);\ _gks_puc_bind_strlen_init(((int4 *)___a)-1);\ va_end(___l);\ } while(0) #else /* __CLIX__ Velho */ #ifdef __CLIX__ /* Novo */ #define Gstrleninit(c) do {\ va_list ___l;\ va_start(___l,c);\ _gks_puc_bind_strlen_init( ((int4 *)(&___l)) - 1 );\ va_end(___l);\ } while(0) #else /* __CLIX__ */ #define Gstrleninit(c) do {\ va_list ___l;\ va_start(___l,c);\ _gks_puc_bind_strlen_init( ((int4 *)(___l)) - 1 );\ va_end(___l);\ } while(0) #endif /* __CLIX__ novo */ #endif /* __CLIX__ Velho */ #endif /* __UNIX__ */ int _gks_puc_bind_strlen_init ( void * ); #define stradr(a) (a) #endif /* __MSDOS__ */ #endif /* __WATCOMC__ */ #endif /* __VAXC__ */ #define Gmakestr _gks_puc_bind_makestr #define Gfindconid _gks_puc_bind_findconid #define Gfindwtype _gks_puc_bind_findwtype #define Gidentify _gks_puc_bind_identify #define Gregconid _gks_puc_bind_regconid #define Ggetconid _gks_puc_bind_getconid #define Gretconid _gks_puc_bind_retconid #define Gtranspose _gks_puc_bind_transpose #define Gretranspose _gks_puc_bind_retranspose Gchar *Gfindconid ( int4, int4 ); Gchar *Gfindwtype ( int ); int4 Gidentify ( Gchar * ); void Gregconid ( Gws, int4 ); int4 Ggetconid ( Gws ); void Gretconid ( Gws ); void Gtranspose ( Gsegtran *, real4 [3][2] ); void Gretranspose ( real4 [3][2], Gsegtran * ); Gchar *Gmakestr ( int, char *, int ); #ifdef __UNIX__ #ifdef __DGR8000__ void FORFUNC(gnqnam) ( int4 *, char *, int, int4 ); #else void FORFUNC(gnqnam) ( int4 *, char *, int4 ); #endif /* __DGR8000__ */ #else #ifdef __WATCOMC__ void FORFUNC(gnqnam) ( int4 *, _gks_descriptor * ); #else void FORFUNC(GNQNAM) ( int4 *, char * ); #endif /* __WATCOMC__ */ #endif /* __UNIX__ */ /* caso especial - Gpickstrlen como macro */ /* tamanho maximo do nome do arquivo */ #if defined(__VAXC__) || defined(__WATCOMC__) || defined(__MSDOS__) || defined (__UNIX__) #define GNQNAM(a,b) _gks_puc_bind_gnqnam(a,b) void GNQNAM ( int4 *, char * ); #endif /* __VAXC__ || __WATCOMC__ || __MSDOS__ || __UNIX__ */ int Gpickstrlen( int, void *, int ); /* ** Em VAXC, se o programa nao for C, o startup code deve ser chamado ** para inicializacoes. */ #ifdef __VAXC__ #define initrtl() _gks_puc_bind_initrtl() void _gks_puc_bind_initrtl(void); #else #define initrtl() #endif /* __VAXC__ */