Main Page   Alphabetical List   Compound List   File List   Compound Members   File Members  

gtcdb.h

Go to the documentation of this file.
00001    /*
00002     Sebastien Loisel's Toolchest
00003     Copyright (C) 1998 Sebastien Loisel
00004 
00005     $Header: /home/gtc/public_html/gtc-cvs/toolchest/include/gtcdb.h,v 1.5 2001/07/03 21:07:10 loisel Exp $
00006     */
00007 
00008 
00009 #ifndef Z_GTCDB_H
00010 #define Z_GTCDB_H
00011 
00028 #include <gtcspeaker.h>
00029 #include <gtcmesh.h>
00030 
00031 #define GTCBITBUFFERSIZE 256
00032 typedef struct _gtcBitBufferList gtcBitBufferList;
00033 struct _gtcBitBufferList
00034 {
00035   char bits[GTCBITBUFFERSIZE];
00036   gtcBitBufferList *next;
00037 };
00038 typedef struct
00039 {
00040   gtcBitBufferList first,*last;
00041   int offset;
00042 } gtcBitBuffer;
00043 
00044 gtcBitBuffer *gtc_new_bitbuffer();
00045 void gtc_destroy_bitbuffer(gtcBitBuffer *bb);
00046 void gtc_bitbuffer_put_bit(gtcBitBuffer *bb, int bit);
00047 gtcPacket *gtc_bitbuffer_to_packet(gtcBitBuffer *bb);
00049 void gtc_bitbuffer_ip(gtcBitBuffer *bb, int i, int prec);
00051 void gtc_bitbuffer_up(gtcBitBuffer *bb, unsigned i, int prec);
00053 void gtc_bitbuffer_iv(gtcBitBuffer *bb, int i);
00055 void gtc_bitbuffer_uv(gtcBitBuffer *bb, unsigned i);
00057 void gtc_bitbuffer_float(gtcBitBuffer *bb, float f,
00058                          int mantissa, int exponent);
00060 void gtc_bitbuffer_matrix(gtcBitBuffer *bb, float f[3][3],
00061                           int mantissa, int exponent);
00063 void gtc_bitbuffer_string(gtcBitBuffer *bb, char *s);
00064 
00065 void gtc_bitpacket_prepare(gtcPacket *p);
00066 int gtc_bitpacket_get_bit(gtcPacket *p);
00068 int gtc_bitpacket_ip(gtcPacket *p, int prec);
00070 unsigned gtc_bitpacket_up(gtcPacket *p, int prec);
00072 int gtc_bitpacket_iv(gtcPacket *p);
00074 unsigned gtc_bitpacket_uv(gtcPacket *p);
00076 float gtc_bitpacket_float(gtcPacket *p, int mantissa, int exponent);
00078 void gtc_bitpacket_matrix(gtcPacket *p, float f[3][3],
00079                           int mantissa, int exponent);
00081 char *gtc_bitpacket_string(gtcPacket *p);
00082 
00083 
00085 enum gtcDBTypes
00086 {
00087   gtcDBBegin=0,
00088 
00089   gtcDBInt,
00090   gtcDBUnsigned,
00091   gtcDBFloat,
00092   gtcDBMatrix,
00093   gtcDBChar,
00094   gtcDBIntVec,
00095   gtcDBUnsignedVec,
00096   gtcDBFloatVec,
00097   gtcDBMatrixVec,
00098   gtcDBCharVec,
00099 
00100   gtcDBEnd
00101 };
00102 
00103 extern const int gtcDBTypeSizes[];
00104 
00106 typedef struct _vectype
00107 {
00109   unsigned size;
00111 } vectype;
00112 
00113 typedef struct _gtcDBNode gtcDBNode;
00121 struct _gtcDBNode
00122 {
00124   int id;
00126   int hash;
00128   int type;
00130   int size;
00132   void *value;
00134   gtcDBNode *next[2];
00135 };
00136 
00138 gtcDBNode *gtc_new_dbnode(int id, int type, void *value);
00140 gtcDBNode *gtc_new_dbnode_vec(int id, int type, int size, void *values);
00142 void gtc_delete_dbnode(gtcDBNode *node);
00143 
00144 #define HASHSIZE 256
00145 typedef struct
00146 {
00147   int count;
00148   gtcDBNode *hash[2][HASHSIZE];
00149   int refcount;
00150 } gtcDB;
00151 
00153 int gtc_hash(int size, void *data, int hash);
00155 gtcDB *gtc_db_new(void);
00157 void gtc_db_delete(gtcDB *db);
00159 int gtc_db_insert_int(gtcDB *db, int i);
00161 int gtc_db_insert_unsigned(gtcDB *db, unsigned i);
00163 int gtc_db_insert_float(gtcDB *db, gtcReal f);
00165 int gtc_db_insert_matrix33(gtcDB *db, gtcReal m[3][3]);
00167 int gtc_db_insert_matrix44(gtcDB *db, gtcReal m[4][4]);
00169 int gtc_db_insert_char(gtcDB *db, char x);
00171 int gtc_db_insert_array_int(gtcDB *db, int length, int elems[]);
00173 int gtc_db_insert_array_unsigned(gtcDB *db, int length, unsigned elems[]);
00175 int gtc_db_insert_array_float(gtcDB *db, int length, gtcReal elems[]);
00177 int gtc_db_insert_array_matrix33(gtcDB *db, int length, gtcReal elems[][3][3]);
00179 int gtc_db_insert_array_matrix44(gtcDB *db, int length, gtcReal elems[][4][4]);
00181 int gtc_db_insert_array_char(gtcDB *db, int length, char elems[]);
00183 int gtc_db_insert_string(gtcDB *db, char string[]);
00184 
00186 gtcDBNode *gtc_db_get(gtcDB *db, int id);
00187 
00189 void gtc_dbnode_print(gtcDBNode *foo);
00190 
00191 typedef struct
00192 {
00193   int float_mantissa, float_exponent;
00194 } gtcBitSettings;
00196 void gtc_bitbuffer_db(gtcBitBuffer *bb, gtcDB *db,
00197                       gtcBitSettings *set, gtcDB *prev);
00199 gtcDB *gtc_bitpacket_db(gtcPacket *bp, gtcBitSettings *set,
00200                         gtcDB *prev);
00201 
00202 #endif

Generated at Sat Jul 14 18:53:52 2001 for GTC by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001