view dmd/stringtable.h @ 284:70c370e97944 trunk

[svn r305] Started support for custom class allocators/deallocators. Allocators with more than one argument still need to be fixed. Removed the LLVM stacktrace code from mars.c. Moved the LLVM based default target detection code from mars.c to llvmhelpers.cpp.
author lindquist
date Sat, 21 Jun 2008 02:48:53 +0200
parents c53b6e3fe49a
children aaade6ded589
line wrap: on
line source

// Copyright (c) 1999-2002 by Digital Mars
// All Rights Reserved
// written by Walter Bright
// www.digitalmars.com
// License for redistribution is by either the Artistic License
// in artistic.txt, or the GNU General Public License in gnu.txt.
// See the included readme.txt for details.


#ifndef STRINGTABLE_H
#define STRINGTABLE_H

#if __SC__
#pragma once
#endif

#include "root.h"
#include "dchar.h"
#include "lstring.h"

struct StringValue
{
    union
    {	int intvalue;
	void *ptrvalue;
	dchar *string;
    };
    Lstring lstring;
};

struct StringTable : Object
{
    void **table;
    unsigned count;
    unsigned tabledim;

    StringTable(unsigned size = 37);
    ~StringTable();

    StringValue *lookup(const dchar *s, unsigned len);
    StringValue *insert(const dchar *s, unsigned len);
    StringValue *update(const dchar *s, unsigned len);

private:
    void **search(const dchar *s, unsigned len);
};

#endif