hash-decl.h revision e37aed073e70daf34e3791a01f232810626208e8
c25356d5978632df6203437e1953bcb29e0c736fTimo Sirainen#ifndef HASH_DECL_H
c25356d5978632df6203437e1953bcb29e0c736fTimo Sirainen#define HASH_DECL_H
c0a708fa3f7b8f4fbca32052da5faf7a0125189dTimo Sirainen
c0a708fa3f7b8f4fbca32052da5faf7a0125189dTimo Sirainen#define HASH_TABLE_UNION(key_type, value_type) { \
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainen struct hash_table *_table; \
c49a19168dab6fda80aee16ad799a8a56d3bc18fTimo Sirainen key_type _key; \
c0a708fa3f7b8f4fbca32052da5faf7a0125189dTimo Sirainen key_type *_keyp; \
cd94aeaa294f7cc507206b4b2075852f00e14d61Timo Sirainen const key_type _const_key; \
cd94aeaa294f7cc507206b4b2075852f00e14d61Timo Sirainen value_type _value; \
cd94aeaa294f7cc507206b4b2075852f00e14d61Timo Sirainen value_type *_valuep; \
cd94aeaa294f7cc507206b4b2075852f00e14d61Timo Sirainen }
cd94aeaa294f7cc507206b4b2075852f00e14d61Timo Sirainen
cd94aeaa294f7cc507206b4b2075852f00e14d61Timo Sirainen#define HASH_TABLE_DEFINE_TYPE(name, key_type, value_type) \
cd94aeaa294f7cc507206b4b2075852f00e14d61Timo Sirainen union hash ## __ ## name HASH_TABLE_UNION(key_type, value_type)
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainen#define HASH_TABLE(key_type, value_type) \
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainen union HASH_TABLE_UNION(key_type, value_type)
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainen#define HASH_TABLE_TYPE(name) \
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainen union hash ## __ ## name
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainen
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainen#endif
e248fe370c4047cee921a91b48edc37944ab0526Timo Sirainen