diff -r 723af8fef529 -r a3ef33a8694a generators/netgen/netgen.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/generators/netgen/netgen.h Fri Nov 26 19:23:47 2010 +0100 @@ -0,0 +1,95 @@ +/*** netgen.h + *** Prototype code for inclusion into network generation routines + ***/ + +/*** Constant definitions */ + +#ifndef NULL +#define NULL 0 +#endif + +#define BAD_SEED -1 /* error indicators */ +#define TOO_BIG -2 +#define BAD_PARMS -3 +#define ALLOCATION_FAILURE -4 + + +/*** Type definitions */ + +typedef unsigned long NODE; /* node number */ +typedef unsigned long ARC; /* arc number */ +typedef long CAPACITY; /* arc capacity */ +typedef long COST; /* arc cost */ +typedef unsigned long INDEX; /* index element */ +typedef int INDEX_LIST; /* index list handle */ + + +/*** Function prototypes */ + +#ifdef __STDC__ + +#include +#include + +void netgen_(long*, long[], long*, long*); /* Fortran external interface */ +ARC netgen(long, long*); /* C external interface */ + +INDEX_LIST make_index_list(INDEX, INDEX); /* allocates a new index list */ +void free_index_list(INDEX_LIST); /* frees an existing list */ +INDEX choose_index(INDEX_LIST, INDEX); /* chooses index at specified position */ +void remove_index(INDEX_LIST, INDEX); /* removes specified index from list */ +INDEX index_size(INDEX_LIST); /* number of indices remaining */ +INDEX pseudo_size(INDEX_LIST); /* "modified" index size */ + +void set_random(long); /* initialize random seed */ +long ng_random(long, long); /* generate random integer in interval */ + +#else + +void *malloc(); /* some standard header should define this */ +void *realloc(); /* ditto */ +void free(); /* ditto */ +void *memset(); /* ditto */ +void exit(); /* ditto */ + +void netgen_(); /* Fortran external interface */ +ARC netgen(); /* C external interface */ + +INDEX_LIST make_index_list(); /* allocates a new index list */ +void free_index_list(); /* frees an existing list */ +INDEX choose_index(); /* chooses index at specified position */ +void remove_index(); /* removes specified index from list */ +INDEX index_size(); /* number of indices remaining */ +INDEX pseudo_size(); /* "modified" index size */ + +void set_random(); /* initialize random seed */ +long ng_random(); /* generate random integer in interval */ + +#endif + +/*** To maintain compatibility with the old Fortran network generator, + *** the following are defined. This allows linking the generator code + *** with the solver, with the generated network passed to the solver + *** through arrays in memory. + ***/ + +#define MAXNODES 10000000 /* maximum problem sizes */ +#define MAXARCS 40000000 + +#define FROM arrays_ /* aliases for network storage */ +#define TO arraye_ +#define U arrayu_ +#define C arrayc_ +#define B arrayb_ + +#ifdef ALLOCATE_NETWORK /* storage definitions */ +#define EXTERN +#else +#define EXTERN extern +#endif + +EXTERN NODE FROM[MAXARCS]; /* origin of each arc */ +EXTERN NODE TO [MAXARCS]; /* destination */ +EXTERN CAPACITY U [MAXARCS]; /* capacity */ +EXTERN COST C [MAXARCS]; /* cost */ +EXTERN CAPACITY B [MAXNODES]; /* supply (demand) at each node */