⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hashtable.h

📁 这个程序是关于OpenC++的反射植入机制的编译器
💻 H
字号:
#ifndef guard_opencxx_HashTable_h#define guard_opencxx_HashTable_h//@beginlicenses@//@license{chiba_tokyo}{}@//@license{xerox}{}@//@license{contributors}{}@////  Permission to use, copy, distribute and modify this software and its  //  documentation for any purpose is hereby granted without fee, provided that//  the above copyright notice appears in all copies and that both that copyright//  notice and this permission notice appear in supporting documentation.// //  1997-2001 Shigeru Chiba, Tokyo Institute of Technology. make(s) no representations about the suitability of this//  software for any purpose. It is provided "as is" without express or implied//  warranty.//  //  Copyright (C)  1997-2001 Shigeru Chiba, Tokyo Institute of Technology.////  -----------------------------------------------------------------//////  Copyright (c) 1995, 1996 Xerox Corporation.//  All Rights Reserved.////  Use and copying of this software and preparation of derivative works//  based upon this software are permitted. Any copy of this software or//  of any derivative work must include the above copyright notice of   //  Xerox Corporation, this paragraph and the one after it.  Any//  distribution of this software or derivative works must comply with all//  applicable United States export control laws.////  This software is made available AS IS, and XEROX CORPORATION DISCLAIMS//  ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE  //  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR    //  PURPOSE, AND NOTWITHSTANDING ANY OTHER PROVISION CONTAINED HEREIN, ANY//  LIABILITY FOR DAMAGES RESULTING FROM THE SOFTWARE OR ITS USE IS//  EXPRESSLY DISCLAIMED, WHETHER ARISING IN CONTRACT, TORT (INCLUDING//  NEGLIGENCE) OR STRICT LIABILITY, EVEN IF XEROX CORPORATION IS ADVISED//  OF THE POSSIBILITY OF SUCH DAMAGES.////  -----------------------------------------------------------------////  Permission to use, copy, distribute and modify this software and its  //  documentation for any purpose is hereby granted without fee, provided that//  the above copyright notice appears in all copies and that both that copyright//  notice and this permission notice appear in supporting documentation.// //  Other Contributors (see file AUTHORS) make(s) no representations about the suitability of this//  software for any purpose. It is provided "as is" without express or implied//  warranty.//  //  Copyright (C)  Other Contributors (see file AUTHORS)////@endlicenses@#include <iosfwd>#include <opencxx/parser/GC.h>namespace Opencxx{class HashTable : public LightObject {public:  typedef void *Value;  struct Entry  {    char *key;		// 0: unused, -1: deleted    Value value;  };    HashTable();    HashTable(int) {}    void MakeTable();    bool IsEmpty();    void Dump(std::ostream&);    int AddEntry(char* key, Value value, int* index = 0);    int AddEntry(bool, char* key, int len, Value value, int* index = 0);    int AddEntry(char* key, int len, Value value, int* index = 0) {	return AddEntry(true, key, len, value, index);    }    // allow a duplicated entry to be inserted    int AddDupEntry(char* key, int len, Value value, int* index = 0) {	return AddEntry(false, key, len, value, index);    }    bool Lookup(char* key, Value *value);    bool Lookup(char* key, int len, Value *value);    bool LookupEntries(char* key, int len, Value *value, int& nth);    Value Peek(int index);    bool RemoveEntry(char* key);    bool RemoveEntry(char* key, int len);    void ReplaceValue(int index, Value value);protected:    char* KeyString(char* key);    char* KeyString(char* key, int len);    bool Lookup2(char* key, Value *val, int* index);    bool Lookup2(char* key, int len, Value *val, int* index);    static unsigned NextPrimeNumber(unsigned number);    bool GrowTable(int increment);    unsigned int StringToInt(char*);    unsigned int StringToInt(char*, int);    int HashFunc(unsigned int p, int n);protected:    Entry *entries;    int	   Size;        // the max number of entries.              	        // should be a prime number    int	   Prime2;};}#endif /* ! guard_opencxx_HashTable_h */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -