
/*
 * This file was generated by the SOM Compiler.
 * FileName: F:\build\newproj\include.ppc\thash.h.
 * Generated using:
 *     SOM Precompiler somipc: 2.29.1.3
 *     SOM Emitter emith: 2.41
 */

/*
 *    COMPONENT_NAME: somuc
 * 
 *    ORIGINS: 82, 81, 27
 * 
 * 
 *    10H9767, 10H9769  (C) COPYRIGHT International Business Machines Corp. 1992,1994
 *    All Rights Reserved
 *    Licensed Materials - Property of IBM
 *    US Government Users Restricted Rights - Use, duplication or
 *    disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
 * 
 *    Copyright © 1988, 1989 Apple Computer, Inc. All rights reserved.
 * 
 * CLASS_NAME: somf_THashTable
 * 
 * DESCRIPTION: Every Hash Table has a set of entries which associate a
 *              key to a value.  Hash tables provide for fast lookup of a
 *              value when given a key even if there are a large number of
 *              entries in the table.  Functions are provided for the usual
 *              things (insert, delete, etc.) as well as for controlling when
 *              rehashing will occur, and the growth of the table when a
 *              rehash occurs.
 * 
 */


#ifndef SOM_somf_THashTable_h
#define SOM_somf_THashTable_h


#include <som.h>

/*
 * -- This emitter treats Method Tokens as Thunks by default.
 * -- Use the sc modifier "nothunks" to change this default
 */
#undef somresolve_
#define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))

/*
 * Define the class name as an object type
 */
#ifndef somf_THashTable
#define somf_THashTable SOMObject
#endif
#include <mcollect.h>

/*
 * Start of bindings for IDL types
 */

#ifndef SOMClass
    #define SOMClass SOMObject
#endif /* SOMClass */
#ifndef THAssoc
    #define THAssoc SOMObject
#endif /* THAssoc */
#define somf_THashTable_kDefaultHashTableSize 23 /* 23 */
#define somf_THashTable_kDefaultGrowthRate 20 /* 20 */
#define somf_THashTable_kDefaultRehashThreshold 80 /* 80 */
typedef unsigned long somf_THashTable_ETableClassification;
#define somf_THashTable_kUnchecked 1UL
#define somf_THashTable_kNormal 2UL
#define somf_THashTable_kFast 3UL

#ifndef SOM_DONT_USE_SHORT_NAMES
#ifndef SOMTGD_kDefaultHashTableSize
    #ifdef kDefaultHashTableSize
        #undef kDefaultHashTableSize
        #define SOMTGD_kDefaultHashTableSize 1
    #else
        #define kDefaultHashTableSize somf_THashTable_kDefaultHashTableSize
    #endif /* kDefaultHashTableSize */
#endif /* SOMTGD_kDefaultHashTableSize */
#ifndef SOMTGD_kDefaultGrowthRate
    #ifdef kDefaultGrowthRate
        #undef kDefaultGrowthRate
        #define SOMTGD_kDefaultGrowthRate 1
    #else
        #define kDefaultGrowthRate somf_THashTable_kDefaultGrowthRate
    #endif /* kDefaultGrowthRate */
#endif /* SOMTGD_kDefaultGrowthRate */
#ifndef SOMTGD_kDefaultRehashThreshold
    #ifdef kDefaultRehashThreshold
        #undef kDefaultRehashThreshold
        #define SOMTGD_kDefaultRehashThreshold 1
    #else
        #define kDefaultRehashThreshold somf_THashTable_kDefaultRehashThreshold
    #endif /* kDefaultRehashThreshold */
#endif /* SOMTGD_kDefaultRehashThreshold */
#ifndef SOMTGD_ETableClassification
    #ifdef ETableClassification
        #undef ETableClassification
        #define SOMTGD_ETableClassification 1
    #else
        #define ETableClassification somf_THashTable_ETableClassification
    #endif /* ETableClassification */
#endif /* SOMTGD_ETableClassification */
#endif /* SOM_DONT_USE_SHORT_NAMES */

/*
 * End of bindings for IDL types.
 */

#define somf_THashTable_MajorVersion 2
#define somf_THashTable_MinorVersion 1

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define somf_THashTableNewClass c
#pragma linkage(c, system)
#define somf_THashTableClassData d
#define somf_THashTableCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
/*--------------Migration------------*/
#define somf_THashTable_classObj somf_THashTableClassData.classObject
#define _somf_THashTable somf_THashTable_classObj

/*
 * Declare the class creation procedure
 */
SOMEXTERN SOMClass * SOMLINK somf_THashTableNewClass(integer4 somtmajorVersion,
		integer4 somtminorVersion);
#pragma linkage(somf_THashTableNewClass, system)

/*
 * Declare the class data structure
 */
SOMEXTERN struct somf_THashTableClassDataStructure {
	SOMClass *classObject;
	somMToken somfCount;
	somMToken somfRemove;
	somMToken somfDelete;
	somMToken somfMember;
	somMToken somfRemoveAll;
	somMToken somfDeleteAll;
	somMToken somfDeleteAllKeys;
	somMToken somfDeleteAllValues;
	somMToken somfAddMMB;
	somMToken somfAddMM;
	somMToken somfGrow;
	somMToken somfRetrieve;
	somMToken somfSetGrowthRate;
	somMToken somfSetRehashThreshold;
	somMToken somfGetGrowthRate;
	somMToken somfGetRehashThreshold;
	somMToken somfSetHashFunction;
	somMToken somfGetHashFunction;
	somMToken somfFind;
	somMToken somfMakeNewTable;
	somMToken somfCopyIn;
	somMToken somfAssign;
	somMToken somfTHashTableInitFLLL;
	somMToken somfTHashTableInitFLL;
	somMToken somfTHashTableInitFL;
	somMToken somfTHashTableInitH;
} SOMDLINK somf_THashTableClassData;

/*
 * Declare the C specific class data structure
 */
SOMEXTERN struct somf_THashTableCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken instanceDataToken;
} SOMDLINK somf_THashTableCClassData;

/*
 * New and Renew macros for somf_THashTable
 */
#define somf_THashTableNew() \
   (_somNew(_somf_THashTable ? _somf_THashTable : somf_THashTableNewClass(somf_THashTable_MajorVersion, somf_THashTable_MinorVersion)))
#define somf_THashTableRenew(buf) \
   (_somRenew(_somf_THashTable ? _somf_THashTable : somf_THashTableNewClass(somf_THashTable_MajorVersion, somf_THashTable_MinorVersion), buf))

/*
 * Override method: somInit
 */
#define somf_THashTable_somInit(somSelf) \
	SOMObject_somInit(somSelf)

/*
 * Override method: somUninit
 */
#define somf_THashTable_somUninit(somSelf) \
	SOMObject_somUninit(somSelf)

/*
 * New Method: somfTHashTableInitFLLL
 */
typedef somf_THashTable*   SOMLINK somTP_somf_THashTable_somfTHashTableInitFLLL(somf_THashTable *somSelf, Environment *ev, 
		somf_MCollectible_somf_MCollectibleCompareFn testfn, 
		long tablesize, 
		long rate, 
		long threshold);
#pragma linkage(somTP_somf_THashTable_somfTHashTableInitFLLL, system)
typedef somTP_somf_THashTable_somfTHashTableInitFLLL *somTD_somf_THashTable_somfTHashTableInitFLLL;
#define somMD_somf_THashTable_somfTHashTableInitFLLL "::somf_THashTable::somfTHashTableInitFLLL"
#define somf_THashTable_somfTHashTableInitFLLL(somSelf,ev,testfn,tablesize,rate,threshold) \
    (SOM_Resolve(somSelf, somf_THashTable, somfTHashTableInitFLLL) \
	(somSelf,ev,testfn,tablesize,rate,threshold))
#ifndef SOMGD_somfTHashTableInitFLLL
    #if (defined(_somfTHashTableInitFLLL) || defined(__somfTHashTableInitFLLL))
        #undef _somfTHashTableInitFLLL
        #undef __somfTHashTableInitFLLL
        #define SOMGD_somfTHashTableInitFLLL 1
    #else
        #define _somfTHashTableInitFLLL somf_THashTable_somfTHashTableInitFLLL
    #endif /* _somfTHashTableInitFLLL */
#endif /* SOMGD_somfTHashTableInitFLLL */

/*
 * New Method: somfTHashTableInitFLL
 */
typedef somf_THashTable*   SOMLINK somTP_somf_THashTable_somfTHashTableInitFLL(somf_THashTable *somSelf, Environment *ev, 
		somf_MCollectible_somf_MCollectibleCompareFn testfn, 
		long tablesize, 
		long rate);
#pragma linkage(somTP_somf_THashTable_somfTHashTableInitFLL, system)
typedef somTP_somf_THashTable_somfTHashTableInitFLL *somTD_somf_THashTable_somfTHashTableInitFLL;
#define somMD_somf_THashTable_somfTHashTableInitFLL "::somf_THashTable::somfTHashTableInitFLL"
#define somf_THashTable_somfTHashTableInitFLL(somSelf,ev,testfn,tablesize,rate) \
    (SOM_Resolve(somSelf, somf_THashTable, somfTHashTableInitFLL) \
	(somSelf,ev,testfn,tablesize,rate))
#ifndef SOMGD_somfTHashTableInitFLL
    #if (defined(_somfTHashTableInitFLL) || defined(__somfTHashTableInitFLL))
        #undef _somfTHashTableInitFLL
        #undef __somfTHashTableInitFLL
        #define SOMGD_somfTHashTableInitFLL 1
    #else
        #define _somfTHashTableInitFLL somf_THashTable_somfTHashTableInitFLL
    #endif /* _somfTHashTableInitFLL */
#endif /* SOMGD_somfTHashTableInitFLL */

/*
 * New Method: somfTHashTableInitFL
 */
typedef somf_THashTable*   SOMLINK somTP_somf_THashTable_somfTHashTableInitFL(somf_THashTable *somSelf, Environment *ev, 
		somf_MCollectible_somf_MCollectibleCompareFn testfn, 
		long tablesize);
#pragma linkage(somTP_somf_THashTable_somfTHashTableInitFL, system)
typedef somTP_somf_THashTable_somfTHashTableInitFL *somTD_somf_THashTable_somfTHashTableInitFL;
#define somMD_somf_THashTable_somfTHashTableInitFL "::somf_THashTable::somfTHashTableInitFL"
#define somf_THashTable_somfTHashTableInitFL(somSelf,ev,testfn,tablesize) \
    (SOM_Resolve(somSelf, somf_THashTable, somfTHashTableInitFL) \
	(somSelf,ev,testfn,tablesize))
#ifndef SOMGD_somfTHashTableInitFL
    #if (defined(_somfTHashTableInitFL) || defined(__somfTHashTableInitFL))
        #undef _somfTHashTableInitFL
        #undef __somfTHashTableInitFL
        #define SOMGD_somfTHashTableInitFL 1
    #else
        #define _somfTHashTableInitFL somf_THashTable_somfTHashTableInitFL
    #endif /* _somfTHashTableInitFL */
#endif /* SOMGD_somfTHashTableInitFL */

/*
 * New Method: somfTHashTableInitH
 */
typedef somf_THashTable*   SOMLINK somTP_somf_THashTable_somfTHashTableInitH(somf_THashTable *somSelf, Environment *ev, 
		somf_THashTable* h);
#pragma linkage(somTP_somf_THashTable_somfTHashTableInitH, system)
typedef somTP_somf_THashTable_somfTHashTableInitH *somTD_somf_THashTable_somfTHashTableInitH;
#define somMD_somf_THashTable_somfTHashTableInitH "::somf_THashTable::somfTHashTableInitH"
#define somf_THashTable_somfTHashTableInitH(somSelf,ev,h) \
    (SOM_Resolve(somSelf, somf_THashTable, somfTHashTableInitH) \
	(somSelf,ev,h))
#ifndef SOMGD_somfTHashTableInitH
    #if (defined(_somfTHashTableInitH) || defined(__somfTHashTableInitH))
        #undef _somfTHashTableInitH
        #undef __somfTHashTableInitH
        #define SOMGD_somfTHashTableInitH 1
    #else
        #define _somfTHashTableInitH somf_THashTable_somfTHashTableInitH
    #endif /* _somfTHashTableInitH */
#endif /* SOMGD_somfTHashTableInitH */

/*
 * New Method: somfAssign
 */
typedef void   SOMLINK somTP_somf_THashTable_somfAssign(somf_THashTable *somSelf, Environment *ev, 
		somf_THashTable* source);
#pragma linkage(somTP_somf_THashTable_somfAssign, system)
typedef somTP_somf_THashTable_somfAssign *somTD_somf_THashTable_somfAssign;
#define somMD_somf_THashTable_somfAssign "::somf_THashTable::somfAssign"
#define somf_THashTable_somfAssign(somSelf,ev,source) \
    (SOM_Resolve(somSelf, somf_THashTable, somfAssign) \
	(somSelf,ev,source))
#ifndef SOMGD_somfAssign
    #if (defined(_somfAssign) || defined(__somfAssign))
        #undef _somfAssign
        #undef __somfAssign
        #define SOMGD_somfAssign 1
    #else
        #define _somfAssign somf_THashTable_somfAssign
    #endif /* _somfAssign */
#endif /* SOMGD_somfAssign */

/*
 * New Method: somfCount
 */
typedef long   SOMLINK somTP_somf_THashTable_somfCount(somf_THashTable *somSelf, Environment *ev);
#pragma linkage(somTP_somf_THashTable_somfCount, system)
typedef somTP_somf_THashTable_somfCount *somTD_somf_THashTable_somfCount;
#define somMD_somf_THashTable_somfCount "::somf_THashTable::somfCount"
#define somf_THashTable_somfCount(somSelf,ev) \
    (SOM_Resolve(somSelf, somf_THashTable, somfCount) \
	(somSelf,ev))
#ifndef SOMGD_somfCount
    #if (defined(_somfCount) || defined(__somfCount))
        #undef _somfCount
        #undef __somfCount
        #define SOMGD_somfCount 1
    #else
        #define _somfCount somf_THashTable_somfCount
    #endif /* _somfCount */
#endif /* SOMGD_somfCount */

/*
 * New Method: somfRemove
 */
typedef somf_MCollectible*   SOMLINK somTP_somf_THashTable_somfRemove(somf_THashTable *somSelf, Environment *ev, 
		somf_MCollectible* key);
#pragma linkage(somTP_somf_THashTable_somfRemove, system)
typedef somTP_somf_THashTable_somfRemove *somTD_somf_THashTable_somfRemove;
#define somMD_somf_THashTable_somfRemove "::somf_THashTable::somfRemove"
#define somf_THashTable_somfRemove(somSelf,ev,key) \
    (SOM_Resolve(somSelf, somf_THashTable, somfRemove) \
	(somSelf,ev,key))
#ifndef SOMGD_somfRemove
    #if (defined(_somfRemove) || defined(__somfRemove))
        #undef _somfRemove
        #undef __somfRemove
        #define SOMGD_somfRemove 1
    #else
        #define _somfRemove somf_THashTable_somfRemove
    #endif /* _somfRemove */
#endif /* SOMGD_somfRemove */

/*
 * New Method: somfDelete
 */
typedef somf_MCollectible*   SOMLINK somTP_somf_THashTable_somfDelete(somf_THashTable *somSelf, Environment *ev, 
		somf_MCollectible* key);
#pragma linkage(somTP_somf_THashTable_somfDelete, system)
typedef somTP_somf_THashTable_somfDelete *somTD_somf_THashTable_somfDelete;
#define somMD_somf_THashTable_somfDelete "::somf_THashTable::somfDelete"
#define somf_THashTable_somfDelete(somSelf,ev,key) \
    (SOM_Resolve(somSelf, somf_THashTable, somfDelete) \
	(somSelf,ev,key))
#ifndef SOMGD_somfDelete
    #if (defined(_somfDelete) || defined(__somfDelete))
        #undef _somfDelete
        #undef __somfDelete
        #define SOMGD_somfDelete 1
    #else
        #define _somfDelete somf_THashTable_somfDelete
    #endif /* _somfDelete */
#endif /* SOMGD_somfDelete */

/*
 * New Method: somfMember
 */
typedef somf_MCollectible*   SOMLINK somTP_somf_THashTable_somfMember(somf_THashTable *somSelf, Environment *ev, 
		somf_MCollectible* key);
#pragma linkage(somTP_somf_THashTable_somfMember, system)
typedef somTP_somf_THashTable_somfMember *somTD_somf_THashTable_somfMember;
#define somMD_somf_THashTable_somfMember "::somf_THashTable::somfMember"
#define somf_THashTable_somfMember(somSelf,ev,key) \
    (SOM_Resolve(somSelf, somf_THashTable, somfMember) \
	(somSelf,ev,key))
#ifndef SOMGD_somfMember
    #if (defined(_somfMember) || defined(__somfMember))
        #undef _somfMember
        #undef __somfMember
        #define SOMGD_somfMember 1
    #else
        #define _somfMember somf_THashTable_somfMember
    #endif /* _somfMember */
#endif /* SOMGD_somfMember */

/*
 * New Method: somfRemoveAll
 */
typedef void   SOMLINK somTP_somf_THashTable_somfRemoveAll(somf_THashTable *somSelf, Environment *ev);
#pragma linkage(somTP_somf_THashTable_somfRemoveAll, system)
typedef somTP_somf_THashTable_somfRemoveAll *somTD_somf_THashTable_somfRemoveAll;
#define somMD_somf_THashTable_somfRemoveAll "::somf_THashTable::somfRemoveAll"
#define somf_THashTable_somfRemoveAll(somSelf,ev) \
    (SOM_Resolve(somSelf, somf_THashTable, somfRemoveAll) \
	(somSelf,ev))
#ifndef SOMGD_somfRemoveAll
    #if (defined(_somfRemoveAll) || defined(__somfRemoveAll))
        #undef _somfRemoveAll
        #undef __somfRemoveAll
        #define SOMGD_somfRemoveAll 1
    #else
        #define _somfRemoveAll somf_THashTable_somfRemoveAll
    #endif /* _somfRemoveAll */
#endif /* SOMGD_somfRemoveAll */

/*
 * New Method: somfDeleteAll
 */
typedef void   SOMLINK somTP_somf_THashTable_somfDeleteAll(somf_THashTable *somSelf, Environment *ev);
#pragma linkage(somTP_somf_THashTable_somfDeleteAll, system)
typedef somTP_somf_THashTable_somfDeleteAll *somTD_somf_THashTable_somfDeleteAll;
#define somMD_somf_THashTable_somfDeleteAll "::somf_THashTable::somfDeleteAll"
#define somf_THashTable_somfDeleteAll(somSelf,ev) \
    (SOM_Resolve(somSelf, somf_THashTable, somfDeleteAll) \
	(somSelf,ev))
#ifndef SOMGD_somfDeleteAll
    #if (defined(_somfDeleteAll) || defined(__somfDeleteAll))
        #undef _somfDeleteAll
        #undef __somfDeleteAll
        #define SOMGD_somfDeleteAll 1
    #else
        #define _somfDeleteAll somf_THashTable_somfDeleteAll
    #endif /* _somfDeleteAll */
#endif /* SOMGD_somfDeleteAll */

/*
 * New Method: somfDeleteAllKeys
 */
typedef void   SOMLINK somTP_somf_THashTable_somfDeleteAllKeys(somf_THashTable *somSelf, Environment *ev);
#pragma linkage(somTP_somf_THashTable_somfDeleteAllKeys, system)
typedef somTP_somf_THashTable_somfDeleteAllKeys *somTD_somf_THashTable_somfDeleteAllKeys;
#define somMD_somf_THashTable_somfDeleteAllKeys "::somf_THashTable::somfDeleteAllKeys"
#define somf_THashTable_somfDeleteAllKeys(somSelf,ev) \
    (SOM_Resolve(somSelf, somf_THashTable, somfDeleteAllKeys) \
	(somSelf,ev))
#ifndef SOMGD_somfDeleteAllKeys
    #if (defined(_somfDeleteAllKeys) || defined(__somfDeleteAllKeys))
        #undef _somfDeleteAllKeys
        #undef __somfDeleteAllKeys
        #define SOMGD_somfDeleteAllKeys 1
    #else
        #define _somfDeleteAllKeys somf_THashTable_somfDeleteAllKeys
    #endif /* _somfDeleteAllKeys */
#endif /* SOMGD_somfDeleteAllKeys */

/*
 * New Method: somfDeleteAllValues
 */
typedef void   SOMLINK somTP_somf_THashTable_somfDeleteAllValues(somf_THashTable *somSelf, Environment *ev);
#pragma linkage(somTP_somf_THashTable_somfDeleteAllValues, system)
typedef somTP_somf_THashTable_somfDeleteAllValues *somTD_somf_THashTable_somfDeleteAllValues;
#define somMD_somf_THashTable_somfDeleteAllValues "::somf_THashTable::somfDeleteAllValues"
#define somf_THashTable_somfDeleteAllValues(somSelf,ev) \
    (SOM_Resolve(somSelf, somf_THashTable, somfDeleteAllValues) \
	(somSelf,ev))
#ifndef SOMGD_somfDeleteAllValues
    #if (defined(_somfDeleteAllValues) || defined(__somfDeleteAllValues))
        #undef _somfDeleteAllValues
        #undef __somfDeleteAllValues
        #define SOMGD_somfDeleteAllValues 1
    #else
        #define _somfDeleteAllValues somf_THashTable_somfDeleteAllValues
    #endif /* _somfDeleteAllValues */
#endif /* SOMGD_somfDeleteAllValues */

/*
 * New Method: somfAddMMB
 */
typedef somf_MCollectible*   SOMLINK somTP_somf_THashTable_somfAddMMB(somf_THashTable *somSelf, Environment *ev, 
		somf_MCollectible* key, 
		somf_MCollectible* value, 
		boolean replace);
#pragma linkage(somTP_somf_THashTable_somfAddMMB, system)
typedef somTP_somf_THashTable_somfAddMMB *somTD_somf_THashTable_somfAddMMB;
#define somMD_somf_THashTable_somfAddMMB "::somf_THashTable::somfAddMMB"
#define somf_THashTable_somfAddMMB(somSelf,ev,key,value,replace) \
    (SOM_Resolve(somSelf, somf_THashTable, somfAddMMB) \
	(somSelf,ev,key,value,replace))
#ifndef SOMGD_somfAddMMB
    #if (defined(_somfAddMMB) || defined(__somfAddMMB))
        #undef _somfAddMMB
        #undef __somfAddMMB
        #define SOMGD_somfAddMMB 1
    #else
        #define _somfAddMMB somf_THashTable_somfAddMMB
    #endif /* _somfAddMMB */
#endif /* SOMGD_somfAddMMB */

/*
 * New Method: somfAddMM
 */
typedef somf_MCollectible*   SOMLINK somTP_somf_THashTable_somfAddMM(somf_THashTable *somSelf, Environment *ev, 
		somf_MCollectible* key, 
		somf_MCollectible* value);
#pragma linkage(somTP_somf_THashTable_somfAddMM, system)
typedef somTP_somf_THashTable_somfAddMM *somTD_somf_THashTable_somfAddMM;
#define somMD_somf_THashTable_somfAddMM "::somf_THashTable::somfAddMM"
#define somf_THashTable_somfAddMM(somSelf,ev,key,value) \
    (SOM_Resolve(somSelf, somf_THashTable, somfAddMM) \
	(somSelf,ev,key,value))
#ifndef SOMGD_somfAddMM
    #if (defined(_somfAddMM) || defined(__somfAddMM))
        #undef _somfAddMM
        #undef __somfAddMM
        #define SOMGD_somfAddMM 1
    #else
        #define _somfAddMM somf_THashTable_somfAddMM
    #endif /* _somfAddMM */
#endif /* SOMGD_somfAddMM */

/*
 * New Method: somfGrow
 */
typedef void   SOMLINK somTP_somf_THashTable_somfGrow(somf_THashTable *somSelf, Environment *ev);
#pragma linkage(somTP_somf_THashTable_somfGrow, system)
typedef somTP_somf_THashTable_somfGrow *somTD_somf_THashTable_somfGrow;
#define somMD_somf_THashTable_somfGrow "::somf_THashTable::somfGrow"
#define somf_THashTable_somfGrow(somSelf,ev) \
    (SOM_Resolve(somSelf, somf_THashTable, somfGrow) \
	(somSelf,ev))
#ifndef SOMGD_somfGrow
    #if (defined(_somfGrow) || defined(__somfGrow))
        #undef _somfGrow
        #undef __somfGrow
        #define SOMGD_somfGrow 1
    #else
        #define _somfGrow somf_THashTable_somfGrow
    #endif /* _somfGrow */
#endif /* SOMGD_somfGrow */

/*
 * New Method: somfRetrieve
 */
typedef somf_MCollectible*   SOMLINK somTP_somf_THashTable_somfRetrieve(somf_THashTable *somSelf, Environment *ev, 
		somf_MCollectible* key);
#pragma linkage(somTP_somf_THashTable_somfRetrieve, system)
typedef somTP_somf_THashTable_somfRetrieve *somTD_somf_THashTable_somfRetrieve;
#define somMD_somf_THashTable_somfRetrieve "::somf_THashTable::somfRetrieve"
#define somf_THashTable_somfRetrieve(somSelf,ev,key) \
    (SOM_Resolve(somSelf, somf_THashTable, somfRetrieve) \
	(somSelf,ev,key))
#ifndef SOMGD_somfRetrieve
    #if (defined(_somfRetrieve) || defined(__somfRetrieve))
        #undef _somfRetrieve
        #undef __somfRetrieve
        #define SOMGD_somfRetrieve 1
    #else
        #define _somfRetrieve somf_THashTable_somfRetrieve
    #endif /* _somfRetrieve */
#endif /* SOMGD_somfRetrieve */

/*
 * New Method: somfSetGrowthRate
 */
typedef void   SOMLINK somTP_somf_THashTable_somfSetGrowthRate(somf_THashTable *somSelf, Environment *ev, 
		long rate);
#pragma linkage(somTP_somf_THashTable_somfSetGrowthRate, system)
typedef somTP_somf_THashTable_somfSetGrowthRate *somTD_somf_THashTable_somfSetGrowthRate;
#define somMD_somf_THashTable_somfSetGrowthRate "::somf_THashTable::somfSetGrowthRate"
#define somf_THashTable_somfSetGrowthRate(somSelf,ev,rate) \
    (SOM_Resolve(somSelf, somf_THashTable, somfSetGrowthRate) \
	(somSelf,ev,rate))
#ifndef SOMGD_somfSetGrowthRate
    #if (defined(_somfSetGrowthRate) || defined(__somfSetGrowthRate))
        #undef _somfSetGrowthRate
        #undef __somfSetGrowthRate
        #define SOMGD_somfSetGrowthRate 1
    #else
        #define _somfSetGrowthRate somf_THashTable_somfSetGrowthRate
    #endif /* _somfSetGrowthRate */
#endif /* SOMGD_somfSetGrowthRate */

/*
 * New Method: somfSetRehashThreshold
 */
typedef void   SOMLINK somTP_somf_THashTable_somfSetRehashThreshold(somf_THashTable *somSelf, Environment *ev, 
		long threshold);
#pragma linkage(somTP_somf_THashTable_somfSetRehashThreshold, system)
typedef somTP_somf_THashTable_somfSetRehashThreshold *somTD_somf_THashTable_somfSetRehashThreshold;
#define somMD_somf_THashTable_somfSetRehashThreshold "::somf_THashTable::somfSetRehashThreshold"
#define somf_THashTable_somfSetRehashThreshold(somSelf,ev,threshold) \
    (SOM_Resolve(somSelf, somf_THashTable, somfSetRehashThreshold) \
	(somSelf,ev,threshold))
#ifndef SOMGD_somfSetRehashThreshold
    #if (defined(_somfSetRehashThreshold) || defined(__somfSetRehashThreshold))
        #undef _somfSetRehashThreshold
        #undef __somfSetRehashThreshold
        #define SOMGD_somfSetRehashThreshold 1
    #else
        #define _somfSetRehashThreshold somf_THashTable_somfSetRehashThreshold
    #endif /* _somfSetRehashThreshold */
#endif /* SOMGD_somfSetRehashThreshold */

/*
 * New Method: somfGetGrowthRate
 */
typedef long   SOMLINK somTP_somf_THashTable_somfGetGrowthRate(somf_THashTable *somSelf, Environment *ev);
#pragma linkage(somTP_somf_THashTable_somfGetGrowthRate, system)
typedef somTP_somf_THashTable_somfGetGrowthRate *somTD_somf_THashTable_somfGetGrowthRate;
#define somMD_somf_THashTable_somfGetGrowthRate "::somf_THashTable::somfGetGrowthRate"
#define somf_THashTable_somfGetGrowthRate(somSelf,ev) \
    (SOM_Resolve(somSelf, somf_THashTable, somfGetGrowthRate) \
	(somSelf,ev))
#ifndef SOMGD_somfGetGrowthRate
    #if (defined(_somfGetGrowthRate) || defined(__somfGetGrowthRate))
        #undef _somfGetGrowthRate
        #undef __somfGetGrowthRate
        #define SOMGD_somfGetGrowthRate 1
    #else
        #define _somfGetGrowthRate somf_THashTable_somfGetGrowthRate
    #endif /* _somfGetGrowthRate */
#endif /* SOMGD_somfGetGrowthRate */

/*
 * New Method: somfGetRehashThreshold
 */
typedef long   SOMLINK somTP_somf_THashTable_somfGetRehashThreshold(somf_THashTable *somSelf, Environment *ev);
#pragma linkage(somTP_somf_THashTable_somfGetRehashThreshold, system)
typedef somTP_somf_THashTable_somfGetRehashThreshold *somTD_somf_THashTable_somfGetRehashThreshold;
#define somMD_somf_THashTable_somfGetRehashThreshold "::somf_THashTable::somfGetRehashThreshold"
#define somf_THashTable_somfGetRehashThreshold(somSelf,ev) \
    (SOM_Resolve(somSelf, somf_THashTable, somfGetRehashThreshold) \
	(somSelf,ev))
#ifndef SOMGD_somfGetRehashThreshold
    #if (defined(_somfGetRehashThreshold) || defined(__somfGetRehashThreshold))
        #undef _somfGetRehashThreshold
        #undef __somfGetRehashThreshold
        #define SOMGD_somfGetRehashThreshold 1
    #else
        #define _somfGetRehashThreshold somf_THashTable_somfGetRehashThreshold
    #endif /* _somfGetRehashThreshold */
#endif /* SOMGD_somfGetRehashThreshold */

/*
 * New Method: somfSetHashFunction
 */
typedef void   SOMLINK somTP_somf_THashTable_somfSetHashFunction(somf_THashTable *somSelf, Environment *ev, 
		somf_MCollectible_somf_MCollectibleHashFn fn);
#pragma linkage(somTP_somf_THashTable_somfSetHashFunction, system)
typedef somTP_somf_THashTable_somfSetHashFunction *somTD_somf_THashTable_somfSetHashFunction;
#define somMD_somf_THashTable_somfSetHashFunction "::somf_THashTable::somfSetHashFunction"
#define somf_THashTable_somfSetHashFunction(somSelf,ev,fn) \
    (SOM_Resolve(somSelf, somf_THashTable, somfSetHashFunction) \
	(somSelf,ev,fn))
#ifndef SOMGD_somfSetHashFunction
    #if (defined(_somfSetHashFunction) || defined(__somfSetHashFunction))
        #undef _somfSetHashFunction
        #undef __somfSetHashFunction
        #define SOMGD_somfSetHashFunction 1
    #else
        #define _somfSetHashFunction somf_THashTable_somfSetHashFunction
    #endif /* _somfSetHashFunction */
#endif /* SOMGD_somfSetHashFunction */

/*
 * New Method: somfGetHashFunction
 */
typedef somf_MCollectible_somf_MCollectibleHashFn   SOMLINK somTP_somf_THashTable_somfGetHashFunction(somf_THashTable *somSelf, Environment *ev);
#pragma linkage(somTP_somf_THashTable_somfGetHashFunction, system)
typedef somTP_somf_THashTable_somfGetHashFunction *somTD_somf_THashTable_somfGetHashFunction;
#define somMD_somf_THashTable_somfGetHashFunction "::somf_THashTable::somfGetHashFunction"
#define somf_THashTable_somfGetHashFunction(somSelf,ev) \
    (SOM_Resolve(somSelf, somf_THashTable, somfGetHashFunction) \
	(somSelf,ev))
#ifndef SOMGD_somfGetHashFunction
    #if (defined(_somfGetHashFunction) || defined(__somfGetHashFunction))
        #undef _somfGetHashFunction
        #undef __somfGetHashFunction
        #define SOMGD_somfGetHashFunction 1
    #else
        #define _somfGetHashFunction somf_THashTable_somfGetHashFunction
    #endif /* _somfGetHashFunction */
#endif /* SOMGD_somfGetHashFunction */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define somf_THashTable_somfClone somf_MCollectible_somfClone
#define somf_THashTable_somfClonePointer somf_MCollectible_somfClonePointer
#define somf_THashTable_somfHash somf_MCollectible_somfHash
#define somf_THashTable_somfIsEqual somf_MCollectible_somfIsEqual
#define somf_THashTable_somfIsSame somf_MCollectible_somfIsSame
#define somf_THashTable_somfIsNotEqual somf_MCollectible_somfIsNotEqual
#define somf_THashTable_somDefaultInit SOMObject_somDefaultInit
#define somf_THashTable_somDestruct SOMObject_somDestruct
#define somf_THashTable_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define somf_THashTable_somDefaultAssign SOMObject_somDefaultAssign
#define somf_THashTable_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define somf_THashTable_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define somf_THashTable_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define somf_THashTable_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define somf_THashTable_somDefaultVAssign SOMObject_somDefaultVAssign
#define somf_THashTable_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define somf_THashTable_somFree SOMObject_somFree
#define somf_THashTable_somGetClass SOMObject_somGetClass
#define somf_THashTable_somGetClassName SOMObject_somGetClassName
#define somf_THashTable_somGetSize SOMObject_somGetSize
#define somf_THashTable_somIsA SOMObject_somIsA
#define somf_THashTable_somIsInstanceOf SOMObject_somIsInstanceOf
#define somf_THashTable_somRespondsTo SOMObject_somRespondsTo
#define somf_THashTable_somDispatch SOMObject_somDispatch
#define somf_THashTable_somClassDispatch SOMObject_somClassDispatch
#define somf_THashTable_somCastObj SOMObject_somCastObj
#define somf_THashTable_somResetObj SOMObject_somResetObj
#define somf_THashTable_somPrintSelf SOMObject_somPrintSelf
#define somf_THashTable_somDumpSelf SOMObject_somDumpSelf
#define somf_THashTable_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_somf_THashTable_h */
