
/*
 * This file was generated by the SOM Compiler.
 * FileName: F:\build\newproj\include.ppc\tpq.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_TPriorityQueue
 * 
 * DESCRIPTION: A TPriorityQueue is a subclass of TCollection which keeps
 *              the elements of the collection partially ordered based on
 *              some ordering function.  Priority Queues are often used
 *              when you must collect a set of records, then process the
 *              largest, then collect more, the process the largest, etc.
 * 
 */


#ifndef SOM_somf_TPriorityQueue_h
#define SOM_somf_TPriorityQueue_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_TPriorityQueue
#define somf_TPriorityQueue SOMObject
#endif
#include <tcollect.h>

/*
 * Start of bindings for IDL types
 */

#ifndef SOMClass
    #define SOMClass SOMObject
#endif /* SOMClass */
#ifndef somf_TIterator
    #define somf_TIterator SOMObject
#endif /* somf_TIterator */
#define somf_TPriorityQueue_kInitialPriorityQueueSize 20 /* 20 */

#ifndef SOM_DONT_USE_SHORT_NAMES
#ifndef SOMTGD_kInitialPriorityQueueSize
    #ifdef kInitialPriorityQueueSize
        #undef kInitialPriorityQueueSize
        #define SOMTGD_kInitialPriorityQueueSize 1
    #else
        #define kInitialPriorityQueueSize somf_TPriorityQueue_kInitialPriorityQueueSize
    #endif /* kInitialPriorityQueueSize */
#endif /* SOMTGD_kInitialPriorityQueueSize */
#endif /* SOM_DONT_USE_SHORT_NAMES */

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

/*
 * Passthru lines: File: "C.h", "after"
 */

#include <morder.h>

#define somf_TPriorityQueue_MajorVersion 2
#define somf_TPriorityQueue_MinorVersion 1

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define somf_TPriorityQueueNewClass c
#pragma linkage(c, system)
#define somf_TPriorityQueueClassData d
#define somf_TPriorityQueueCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
/*--------------Migration------------*/
#define somf_TPriorityQueue_classObj somf_TPriorityQueueClassData.classObject
#define _somf_TPriorityQueue somf_TPriorityQueue_classObj

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

/*
 * Declare the class data structure
 */
SOMEXTERN struct somf_TPriorityQueueClassDataStructure {
	SOMClass *classObject;
	somMToken somfInsert;
	somMToken somfPop;
	somMToken somfPeek;
	somMToken somfReplace;
	somMToken somfChange;
	somMToken somfSetEqualityComparisonFunction;
	somMToken somfGetEqualityComparisonFunction;
	somMToken somfDownHeap;
	somMToken somfUpHeap;
	somMToken somfGrowHeap;
	somMToken somfMakeNewTable;
	somMToken somfCopyIn;
	somMToken somfAssign;
	somMToken somfTPriorityQueueInitF;
	somMToken somfTPriorityQueueInitP;
} SOMDLINK somf_TPriorityQueueClassData;

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

/*
 * New and Renew macros for somf_TPriorityQueue
 */
#define somf_TPriorityQueueNew() \
   (_somNew(_somf_TPriorityQueue ? _somf_TPriorityQueue : somf_TPriorityQueueNewClass(somf_TPriorityQueue_MajorVersion, somf_TPriorityQueue_MinorVersion)))
#define somf_TPriorityQueueRenew(buf) \
   (_somRenew(_somf_TPriorityQueue ? _somf_TPriorityQueue : somf_TPriorityQueueNewClass(somf_TPriorityQueue_MajorVersion, somf_TPriorityQueue_MinorVersion), buf))

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

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

/*
 * Override method: somfRemove
 */
#define somf_TPriorityQueue_somfRemove(somSelf,ev,obj) \
	somf_TCollection_somfRemove(somSelf,ev,obj)

/*
 * Override method: somfAdd
 */
#define somf_TPriorityQueue_somfAdd(somSelf,ev,obj) \
	somf_TCollection_somfAdd(somSelf,ev,obj)

/*
 * Override method: somfRemoveAll
 */
#define somf_TPriorityQueue_somfRemoveAll(somSelf,ev) \
	somf_TCollection_somfRemoveAll(somSelf,ev)

/*
 * Override method: somfDeleteAll
 */
#define somf_TPriorityQueue_somfDeleteAll(somSelf,ev) \
	somf_TCollection_somfDeleteAll(somSelf,ev)

/*
 * Override method: somfCount
 */
#define somf_TPriorityQueue_somfCount(somSelf,ev) \
	somf_TCollection_somfCount(somSelf,ev)

/*
 * Override method: somfMember
 */
#define somf_TPriorityQueue_somfMember(somSelf,ev,obj) \
	somf_TCollection_somfMember(somSelf,ev,obj)

/*
 * Override method: somfCreateIterator
 */
#define somf_TPriorityQueue_somfCreateIterator(somSelf,ev) \
	somf_TCollection_somfCreateIterator(somSelf,ev)

/*
 * New Method: somfTPriorityQueueInitF
 */
typedef somf_TPriorityQueue*   SOMLINK somTP_somf_TPriorityQueue_somfTPriorityQueueInitF(somf_TPriorityQueue *somSelf, Environment *ev, 
		somf_MOrderableCollectible_somf_MOrderableCompareFn testfn);
#pragma linkage(somTP_somf_TPriorityQueue_somfTPriorityQueueInitF, system)
typedef somTP_somf_TPriorityQueue_somfTPriorityQueueInitF *somTD_somf_TPriorityQueue_somfTPriorityQueueInitF;
#define somMD_somf_TPriorityQueue_somfTPriorityQueueInitF "::somf_TPriorityQueue::somfTPriorityQueueInitF"
#define somf_TPriorityQueue_somfTPriorityQueueInitF(somSelf,ev,testfn) \
    (SOM_Resolve(somSelf, somf_TPriorityQueue, somfTPriorityQueueInitF) \
	(somSelf,ev,testfn))
#ifndef SOMGD_somfTPriorityQueueInitF
    #if (defined(_somfTPriorityQueueInitF) || defined(__somfTPriorityQueueInitF))
        #undef _somfTPriorityQueueInitF
        #undef __somfTPriorityQueueInitF
        #define SOMGD_somfTPriorityQueueInitF 1
    #else
        #define _somfTPriorityQueueInitF somf_TPriorityQueue_somfTPriorityQueueInitF
    #endif /* _somfTPriorityQueueInitF */
#endif /* SOMGD_somfTPriorityQueueInitF */

/*
 * New Method: somfTPriorityQueueInitP
 */
typedef somf_TPriorityQueue*   SOMLINK somTP_somf_TPriorityQueue_somfTPriorityQueueInitP(somf_TPriorityQueue *somSelf, Environment *ev, 
		somf_TPriorityQueue* q);
#pragma linkage(somTP_somf_TPriorityQueue_somfTPriorityQueueInitP, system)
typedef somTP_somf_TPriorityQueue_somfTPriorityQueueInitP *somTD_somf_TPriorityQueue_somfTPriorityQueueInitP;
#define somMD_somf_TPriorityQueue_somfTPriorityQueueInitP "::somf_TPriorityQueue::somfTPriorityQueueInitP"
#define somf_TPriorityQueue_somfTPriorityQueueInitP(somSelf,ev,q) \
    (SOM_Resolve(somSelf, somf_TPriorityQueue, somfTPriorityQueueInitP) \
	(somSelf,ev,q))
#ifndef SOMGD_somfTPriorityQueueInitP
    #if (defined(_somfTPriorityQueueInitP) || defined(__somfTPriorityQueueInitP))
        #undef _somfTPriorityQueueInitP
        #undef __somfTPriorityQueueInitP
        #define SOMGD_somfTPriorityQueueInitP 1
    #else
        #define _somfTPriorityQueueInitP somf_TPriorityQueue_somfTPriorityQueueInitP
    #endif /* _somfTPriorityQueueInitP */
#endif /* SOMGD_somfTPriorityQueueInitP */

/*
 * New Method: somfAssign
 */
typedef void   SOMLINK somTP_somf_TPriorityQueue_somfAssign(somf_TPriorityQueue *somSelf, Environment *ev, 
		somf_TPriorityQueue* source);
#pragma linkage(somTP_somf_TPriorityQueue_somfAssign, system)
typedef somTP_somf_TPriorityQueue_somfAssign *somTD_somf_TPriorityQueue_somfAssign;
#define somMD_somf_TPriorityQueue_somfAssign "::somf_TPriorityQueue::somfAssign"
#define somf_TPriorityQueue_somfAssign(somSelf,ev,source) \
    (SOM_Resolve(somSelf, somf_TPriorityQueue, somfAssign) \
	(somSelf,ev,source))
#ifndef SOMGD_somfAssign
    #if (defined(_somfAssign) || defined(__somfAssign))
        #undef _somfAssign
        #undef __somfAssign
        #define SOMGD_somfAssign 1
    #else
        #define _somfAssign somf_TPriorityQueue_somfAssign
    #endif /* _somfAssign */
#endif /* SOMGD_somfAssign */

/*
 * New Method: somfInsert
 */
typedef void   SOMLINK somTP_somf_TPriorityQueue_somfInsert(somf_TPriorityQueue *somSelf, Environment *ev, 
		somf_MOrderableCollectible* obj);
#pragma linkage(somTP_somf_TPriorityQueue_somfInsert, system)
typedef somTP_somf_TPriorityQueue_somfInsert *somTD_somf_TPriorityQueue_somfInsert;
#define somMD_somf_TPriorityQueue_somfInsert "::somf_TPriorityQueue::somfInsert"
#define somf_TPriorityQueue_somfInsert(somSelf,ev,obj) \
    (SOM_Resolve(somSelf, somf_TPriorityQueue, somfInsert) \
	(somSelf,ev,obj))
#ifndef SOMGD_somfInsert
    #if (defined(_somfInsert) || defined(__somfInsert))
        #undef _somfInsert
        #undef __somfInsert
        #define SOMGD_somfInsert 1
    #else
        #define _somfInsert somf_TPriorityQueue_somfInsert
    #endif /* _somfInsert */
#endif /* SOMGD_somfInsert */

/*
 * New Method: somfPop
 */
typedef somf_MOrderableCollectible*   SOMLINK somTP_somf_TPriorityQueue_somfPop(somf_TPriorityQueue *somSelf, Environment *ev);
#pragma linkage(somTP_somf_TPriorityQueue_somfPop, system)
typedef somTP_somf_TPriorityQueue_somfPop *somTD_somf_TPriorityQueue_somfPop;
#define somMD_somf_TPriorityQueue_somfPop "::somf_TPriorityQueue::somfPop"
#define somf_TPriorityQueue_somfPop(somSelf,ev) \
    (SOM_Resolve(somSelf, somf_TPriorityQueue, somfPop) \
	(somSelf,ev))
#ifndef SOMGD_somfPop
    #if (defined(_somfPop) || defined(__somfPop))
        #undef _somfPop
        #undef __somfPop
        #define SOMGD_somfPop 1
    #else
        #define _somfPop somf_TPriorityQueue_somfPop
    #endif /* _somfPop */
#endif /* SOMGD_somfPop */

/*
 * New Method: somfPeek
 */
typedef somf_MOrderableCollectible*   SOMLINK somTP_somf_TPriorityQueue_somfPeek(somf_TPriorityQueue *somSelf, Environment *ev);
#pragma linkage(somTP_somf_TPriorityQueue_somfPeek, system)
typedef somTP_somf_TPriorityQueue_somfPeek *somTD_somf_TPriorityQueue_somfPeek;
#define somMD_somf_TPriorityQueue_somfPeek "::somf_TPriorityQueue::somfPeek"
#define somf_TPriorityQueue_somfPeek(somSelf,ev) \
    (SOM_Resolve(somSelf, somf_TPriorityQueue, somfPeek) \
	(somSelf,ev))
#ifndef SOMGD_somfPeek
    #if (defined(_somfPeek) || defined(__somfPeek))
        #undef _somfPeek
        #undef __somfPeek
        #define SOMGD_somfPeek 1
    #else
        #define _somfPeek somf_TPriorityQueue_somfPeek
    #endif /* _somfPeek */
#endif /* SOMGD_somfPeek */

/*
 * New Method: somfReplace
 */
typedef somf_MOrderableCollectible*   SOMLINK somTP_somf_TPriorityQueue_somfReplace(somf_TPriorityQueue *somSelf, Environment *ev, 
		somf_MOrderableCollectible* obj);
#pragma linkage(somTP_somf_TPriorityQueue_somfReplace, system)
typedef somTP_somf_TPriorityQueue_somfReplace *somTD_somf_TPriorityQueue_somfReplace;
#define somMD_somf_TPriorityQueue_somfReplace "::somf_TPriorityQueue::somfReplace"
#define somf_TPriorityQueue_somfReplace(somSelf,ev,obj) \
    (SOM_Resolve(somSelf, somf_TPriorityQueue, somfReplace) \
	(somSelf,ev,obj))
#ifndef SOMGD_somfReplace
    #if (defined(_somfReplace) || defined(__somfReplace))
        #undef _somfReplace
        #undef __somfReplace
        #define SOMGD_somfReplace 1
    #else
        #define _somfReplace somf_TPriorityQueue_somfReplace
    #endif /* _somfReplace */
#endif /* SOMGD_somfReplace */

/*
 * New Method: somfChange
 */
typedef void   SOMLINK somTP_somf_TPriorityQueue_somfChange(somf_TPriorityQueue *somSelf, Environment *ev, 
		somf_MOrderableCollectible* obj);
#pragma linkage(somTP_somf_TPriorityQueue_somfChange, system)
typedef somTP_somf_TPriorityQueue_somfChange *somTD_somf_TPriorityQueue_somfChange;
#define somMD_somf_TPriorityQueue_somfChange "::somf_TPriorityQueue::somfChange"
#define somf_TPriorityQueue_somfChange(somSelf,ev,obj) \
    (SOM_Resolve(somSelf, somf_TPriorityQueue, somfChange) \
	(somSelf,ev,obj))
#ifndef SOMGD_somfChange
    #if (defined(_somfChange) || defined(__somfChange))
        #undef _somfChange
        #undef __somfChange
        #define SOMGD_somfChange 1
    #else
        #define _somfChange somf_TPriorityQueue_somfChange
    #endif /* _somfChange */
#endif /* SOMGD_somfChange */

/*
 * New Method: somfSetEqualityComparisonFunction
 */
typedef void   SOMLINK somTP_somf_TPriorityQueue_somfSetEqualityComparisonFunction(somf_TPriorityQueue *somSelf, Environment *ev, 
		somf_MCollectible_somf_MCollectibleCompareFn fn);
#pragma linkage(somTP_somf_TPriorityQueue_somfSetEqualityComparisonFunction, system)
typedef somTP_somf_TPriorityQueue_somfSetEqualityComparisonFunction *somTD_somf_TPriorityQueue_somfSetEqualityComparisonFunction;
#define somMD_somf_TPriorityQueue_somfSetEqualityComparisonFunction "::somf_TPriorityQueue::somfSetEqualityComparisonFunction"
#define somf_TPriorityQueue_somfSetEqualityComparisonFunction(somSelf,ev,fn) \
    (SOM_Resolve(somSelf, somf_TPriorityQueue, somfSetEqualityComparisonFunction) \
	(somSelf,ev,fn))
#ifndef SOMGD_somfSetEqualityComparisonFunction
    #if (defined(_somfSetEqualityComparisonFunction) || defined(__somfSetEqualityComparisonFunction))
        #undef _somfSetEqualityComparisonFunction
        #undef __somfSetEqualityComparisonFunction
        #define SOMGD_somfSetEqualityComparisonFunction 1
    #else
        #define _somfSetEqualityComparisonFunction somf_TPriorityQueue_somfSetEqualityComparisonFunction
    #endif /* _somfSetEqualityComparisonFunction */
#endif /* SOMGD_somfSetEqualityComparisonFunction */

/*
 * New Method: somfGetEqualityComparisonFunction
 */
typedef somf_MCollectible_somf_MCollectibleCompareFn   SOMLINK somTP_somf_TPriorityQueue_somfGetEqualityComparisonFunction(somf_TPriorityQueue *somSelf, Environment *ev);
#pragma linkage(somTP_somf_TPriorityQueue_somfGetEqualityComparisonFunction, system)
typedef somTP_somf_TPriorityQueue_somfGetEqualityComparisonFunction *somTD_somf_TPriorityQueue_somfGetEqualityComparisonFunction;
#define somMD_somf_TPriorityQueue_somfGetEqualityComparisonFunction "::somf_TPriorityQueue::somfGetEqualityComparisonFunction"
#define somf_TPriorityQueue_somfGetEqualityComparisonFunction(somSelf,ev) \
    (SOM_Resolve(somSelf, somf_TPriorityQueue, somfGetEqualityComparisonFunction) \
	(somSelf,ev))
#ifndef SOMGD_somfGetEqualityComparisonFunction
    #if (defined(_somfGetEqualityComparisonFunction) || defined(__somfGetEqualityComparisonFunction))
        #undef _somfGetEqualityComparisonFunction
        #undef __somfGetEqualityComparisonFunction
        #define SOMGD_somfGetEqualityComparisonFunction 1
    #else
        #define _somfGetEqualityComparisonFunction somf_TPriorityQueue_somfGetEqualityComparisonFunction
    #endif /* _somfGetEqualityComparisonFunction */
#endif /* SOMGD_somfGetEqualityComparisonFunction */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define somf_TPriorityQueue_somfAddAll somf_TCollection_somfAddAll
#define somf_TPriorityQueue_somfTestFunction somf_TCollection_somfTestFunction
#define somf_TPriorityQueue_somfSetTestFunction somf_TCollection_somfSetTestFunction
#define somf_TPriorityQueue_somfTCollectionInit somf_TCollection_somfTCollectionInit
#define somf_TPriorityQueue_somfClone somf_MCollectible_somfClone
#define somf_TPriorityQueue_somfClonePointer somf_MCollectible_somfClonePointer
#define somf_TPriorityQueue_somfHash somf_MCollectible_somfHash
#define somf_TPriorityQueue_somfIsEqual somf_MCollectible_somfIsEqual
#define somf_TPriorityQueue_somfIsSame somf_MCollectible_somfIsSame
#define somf_TPriorityQueue_somfIsNotEqual somf_MCollectible_somfIsNotEqual
#define somf_TPriorityQueue_somDefaultInit SOMObject_somDefaultInit
#define somf_TPriorityQueue_somDestruct SOMObject_somDestruct
#define somf_TPriorityQueue_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define somf_TPriorityQueue_somDefaultAssign SOMObject_somDefaultAssign
#define somf_TPriorityQueue_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define somf_TPriorityQueue_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define somf_TPriorityQueue_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define somf_TPriorityQueue_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define somf_TPriorityQueue_somDefaultVAssign SOMObject_somDefaultVAssign
#define somf_TPriorityQueue_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define somf_TPriorityQueue_somFree SOMObject_somFree
#define somf_TPriorityQueue_somGetClass SOMObject_somGetClass
#define somf_TPriorityQueue_somGetClassName SOMObject_somGetClassName
#define somf_TPriorityQueue_somGetSize SOMObject_somGetSize
#define somf_TPriorityQueue_somIsA SOMObject_somIsA
#define somf_TPriorityQueue_somIsInstanceOf SOMObject_somIsInstanceOf
#define somf_TPriorityQueue_somRespondsTo SOMObject_somRespondsTo
#define somf_TPriorityQueue_somDispatch SOMObject_somDispatch
#define somf_TPriorityQueue_somClassDispatch SOMObject_somClassDispatch
#define somf_TPriorityQueue_somCastObj SOMObject_somCastObj
#define somf_TPriorityQueue_somResetObj SOMObject_somResetObj
#define somf_TPriorityQueue_somPrintSelf SOMObject_somPrintSelf
#define somf_TPriorityQueue_somDumpSelf SOMObject_somDumpSelf
#define somf_TPriorityQueue_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_somf_TPriorityQueue_h */
