//-< SYMTAB.H >----------------------------------------------------*--------*
// FastDB                    Version 1.0         (c) 1999  GARRET    *     ?  *
// (Main Memory Database Management System)                          *   /\|  *
//                                                                   *  /  \  *
//                          Created:     20-Nov-98    K.A. Knizhnik  * / [] \ *
//                          Last update: 10-Dec-98    K.A. Knizhnik  * GARRET *
//-------------------------------------------------------------------*--------*
// Symbol table interface
//-------------------------------------------------------------------*--------*

#ifndef __SYMTAB_H__
#define __SYMTAB_H__

#ifndef CLONE_IDENTIFIERS
#define FASTDB_CLONE_ANY_IDENTIFIER false
#else
#define FASTDB_CLONE_ANY_IDENTIFIER true
#endif

class  FASTDB_DLL_ENTRY dbSymbolTable { 
    struct HashTableItem { 
	HashTableItem* next;
	char*          str;
	unsigned       hash;
	int            tag;
	byte           allocated;
	
	~HashTableItem() { 
	    if (allocated) { 
		delete[] str;
	    }
	}
    };
    static HashTableItem* hashTable[];

  public:
    ~dbSymbolTable();
    static dbSymbolTable instance;

    static int add(char* &str, int tag,  bool allocate = true);
};

#endif



syntax highlighted by Code2HTML, v. 0.9.1