Newer
Older
/*
* Statically-compiled "plugin" initialization for partiview.
* Stuart Levy, slevy@ncsa.uiuc.edu
* National Center for Supercomputing Applications,
* University of Illinois 2001.
* This file is part of partiview, released under the
* Illinois Open Source License; see the file LICENSE.partiview for details.
extern void kira_parti_init(void);
extern void warp_init(void);
extern void parti_ieee_init(void);
extern void parti_model_init(void);
extern void pp_spi_init(void);
extern void nethack_init(void);
extern void sixdof_init(void);
#include <stdlib.h>
#include "specks.h"
#include "partiviewc.h"
#include "shmem.h"
void plugin_init() {
#ifdef USE_ELUMENS
pp_spi_init();
#endif
#ifdef USE_NETHACK
nethack_init();
#endif
#ifdef USE_SIXDOF /* spaceball, etc. */
sixdof_init();
#endif
#ifdef USE_MODEL
parti_model_init();
#endif
#ifdef USE_WARP
warp_init();
#endif
#ifdef USE_IEEEIO
parti_ieee_init();
#endif
}
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
static struct parser *parsers = NULL;
static struct parser *reader_parsers = NULL;
static void (*cmdtracefunc)( struct stuff **, int argc, char *argv[] );
void parti_cmdtrace( void (*func)( struct stuff **, int argc, char *argv[] ) ) {
cmdtracefunc = func;
}
int parti_parse_args( struct stuff **stp, int argc, char *argv[], char *fname ) {
struct parser *pp;
int val;
if(cmdtracefunc)
(*cmdtracefunc)( stp, argc, argv );
for(pp = parsers; pp; pp = pp->next)
if(pp->parsefunc && (val = (*pp->parsefunc)( stp, argc, argv, fname, pp->etc )) != 0)
return val;
return 0;
}
void parti_add_commands( int (*parsefunc)(struct stuff **, int, char *[], char *fname, void *), char *whose, void *etc ) {
struct parser *pp = NewN( struct parser, 1 );
pp->next = parsers;
pp->whose = whose;
pp->etc = etc;
pp->parsefunc = parsefunc;
parsers = pp;
}
int parti_read( struct stuff **stp, int argc, char *argv[], char *fname ) {
struct parser *pp;
int val;
for(pp = reader_parsers; pp; pp = pp->next)
if(pp->parsefunc && (val = (*pp->parsefunc)( stp, argc, argv, fname, pp->etc )) != 0)
return val;
return 0;
}
void parti_add_reader( int (*parsefunc)(struct stuff **, int, char *[], char *, void *), char *whose, void *etc ) {
struct parser *pp = NewN( struct parser, 1 );
pp->next = reader_parsers;
pp->whose = whose;
pp->etc = etc;
pp->parsefunc = parsefunc;
reader_parsers = pp;
}