#ifndef DATABASE_H
#define DATABASE_H

  /* Database constants. */

#define MAXPOLYVERT   8 	/* Change and recompile for larger environments. Also */
#define MAXNUMMODELS  100       /* change MAXPOLYINVIEW to change raster list size. */
#define MAXNUMOBJECTS 500

#define NOMODEL       MAXNUMMODELS + 1
#define NOOBJECT      MAXNUMOBJECTS + 1
#define NOVERT	      -1

#define SINGLELINK    0		/* Will not make a link if same object is requested later. */ 
#define MULTILINK     1		/* Can have multiple objects generated from  same model. */

#define MAXPATHLEN    128
#define MAXNAMELEN    128
 
  /* Database structures. */
  
struct Model {	
   FLOAT *verticies;	
   ULONG *polygons,numvert,numpoly,links;	
   UBYTE name[MAXNAMELEN],*edgeshare;
};      	

struct Object {
   FLOAT *verticies;
   FLOAT *transvert;
   UBYTE *vertflag,*edgeshare;
   ULONG *polygons,numvert,numpoly; 		
};
 
void opendatabase(UBYTE *); 
void setdatabasepath(UBYTE *);
ULONG requestmodel(UBYTE *,UBYTE); 
void releasemodel(ULONG);
ULONG allocateobject(ULONG); 
void deallocateobject(ULONG);
void closedatabase(void);

#endif
