
/*
 * This file was generated by the SOM Compiler.
 * FileName: F:\build\newproj\include.ppc\mlink.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_MLinkable
 * 
 * DESCRIPTION: This class defines the general attributes of objects that
 *              contain links.  For example, TPrimitiveLinkedList uses
 *              somf_MLinkable.
 * 
 */


#ifndef SOM_somf_MLinkable_h
#define SOM_somf_MLinkable_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_MLinkable
#define somf_MLinkable SOMObject
#endif
#include <somobj.h>

/*
 * Start of bindings for IDL types
 */

#ifndef SOMClass
    #define SOMClass SOMObject
#endif /* SOMClass */

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

#define somf_MLinkable_MajorVersion 2
#define somf_MLinkable_MinorVersion 1

/*
 * External name shortening if required
 */
#ifdef SOM_USE_SHORT_EXTERNAL_NAMES
#define somf_MLinkableNewClass c
#pragma linkage(c, system)
#define somf_MLinkableClassData d
#define somf_MLinkableCClassData x
#endif /* SOM_USE_SHORT_EXTERNAL_NAMES */
/*--------------Migration------------*/
#define somf_MLinkable_classObj somf_MLinkableClassData.classObject
#define _somf_MLinkable somf_MLinkable_classObj

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

/*
 * Declare the class data structure
 */
SOMEXTERN struct somf_MLinkableClassDataStructure {
	SOMClass *classObject;
	somMToken somfGetNext;
	somMToken somfSetNext;
	somMToken somfGetPrevious;
	somMToken somfSetPrevious;
	somMToken somfMLinkableInit;
} SOMDLINK somf_MLinkableClassData;

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

/*
 * New and Renew macros for somf_MLinkable
 */
#define somf_MLinkableNew() \
   (_somNew(_somf_MLinkable ? _somf_MLinkable : somf_MLinkableNewClass(somf_MLinkable_MajorVersion, somf_MLinkable_MinorVersion)))
#define somf_MLinkableRenew(buf) \
   (_somRenew(_somf_MLinkable ? _somf_MLinkable : somf_MLinkableNewClass(somf_MLinkable_MajorVersion, somf_MLinkable_MinorVersion), buf))

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

/*
 * New Method: somfMLinkableInit
 */
typedef somf_MLinkable*   SOMLINK somTP_somf_MLinkable_somfMLinkableInit(somf_MLinkable *somSelf, Environment *ev, 
		somf_MLinkable* n, 
		somf_MLinkable* p);
#pragma linkage(somTP_somf_MLinkable_somfMLinkableInit, system)
typedef somTP_somf_MLinkable_somfMLinkableInit *somTD_somf_MLinkable_somfMLinkableInit;
#define somMD_somf_MLinkable_somfMLinkableInit "::somf_MLinkable::somfMLinkableInit"
#define somf_MLinkable_somfMLinkableInit(somSelf,ev,n,p) \
    (SOM_Resolve(somSelf, somf_MLinkable, somfMLinkableInit) \
	(somSelf,ev,n,p))
#ifndef SOMGD_somfMLinkableInit
    #if (defined(_somfMLinkableInit) || defined(__somfMLinkableInit))
        #undef _somfMLinkableInit
        #undef __somfMLinkableInit
        #define SOMGD_somfMLinkableInit 1
    #else
        #define _somfMLinkableInit somf_MLinkable_somfMLinkableInit
    #endif /* _somfMLinkableInit */
#endif /* SOMGD_somfMLinkableInit */

/*
 * New Method: somfGetNext
 */
typedef somf_MLinkable*   SOMLINK somTP_somf_MLinkable_somfGetNext(somf_MLinkable *somSelf, Environment *ev);
#pragma linkage(somTP_somf_MLinkable_somfGetNext, system)
typedef somTP_somf_MLinkable_somfGetNext *somTD_somf_MLinkable_somfGetNext;
#define somMD_somf_MLinkable_somfGetNext "::somf_MLinkable::somfGetNext"
#define somf_MLinkable_somfGetNext(somSelf,ev) \
    (SOM_Resolve(somSelf, somf_MLinkable, somfGetNext) \
	(somSelf,ev))
#ifndef SOMGD_somfGetNext
    #if (defined(_somfGetNext) || defined(__somfGetNext))
        #undef _somfGetNext
        #undef __somfGetNext
        #define SOMGD_somfGetNext 1
    #else
        #define _somfGetNext somf_MLinkable_somfGetNext
    #endif /* _somfGetNext */
#endif /* SOMGD_somfGetNext */

/*
 * New Method: somfSetNext
 */
typedef void   SOMLINK somTP_somf_MLinkable_somfSetNext(somf_MLinkable *somSelf, Environment *ev, 
		somf_MLinkable* aLink);
#pragma linkage(somTP_somf_MLinkable_somfSetNext, system)
typedef somTP_somf_MLinkable_somfSetNext *somTD_somf_MLinkable_somfSetNext;
#define somMD_somf_MLinkable_somfSetNext "::somf_MLinkable::somfSetNext"
#define somf_MLinkable_somfSetNext(somSelf,ev,aLink) \
    (SOM_Resolve(somSelf, somf_MLinkable, somfSetNext) \
	(somSelf,ev,aLink))
#ifndef SOMGD_somfSetNext
    #if (defined(_somfSetNext) || defined(__somfSetNext))
        #undef _somfSetNext
        #undef __somfSetNext
        #define SOMGD_somfSetNext 1
    #else
        #define _somfSetNext somf_MLinkable_somfSetNext
    #endif /* _somfSetNext */
#endif /* SOMGD_somfSetNext */

/*
 * New Method: somfGetPrevious
 */
typedef somf_MLinkable*   SOMLINK somTP_somf_MLinkable_somfGetPrevious(somf_MLinkable *somSelf, Environment *ev);
#pragma linkage(somTP_somf_MLinkable_somfGetPrevious, system)
typedef somTP_somf_MLinkable_somfGetPrevious *somTD_somf_MLinkable_somfGetPrevious;
#define somMD_somf_MLinkable_somfGetPrevious "::somf_MLinkable::somfGetPrevious"
#define somf_MLinkable_somfGetPrevious(somSelf,ev) \
    (SOM_Resolve(somSelf, somf_MLinkable, somfGetPrevious) \
	(somSelf,ev))
#ifndef SOMGD_somfGetPrevious
    #if (defined(_somfGetPrevious) || defined(__somfGetPrevious))
        #undef _somfGetPrevious
        #undef __somfGetPrevious
        #define SOMGD_somfGetPrevious 1
    #else
        #define _somfGetPrevious somf_MLinkable_somfGetPrevious
    #endif /* _somfGetPrevious */
#endif /* SOMGD_somfGetPrevious */

/*
 * New Method: somfSetPrevious
 */
typedef void   SOMLINK somTP_somf_MLinkable_somfSetPrevious(somf_MLinkable *somSelf, Environment *ev, 
		somf_MLinkable* aLink);
#pragma linkage(somTP_somf_MLinkable_somfSetPrevious, system)
typedef somTP_somf_MLinkable_somfSetPrevious *somTD_somf_MLinkable_somfSetPrevious;
#define somMD_somf_MLinkable_somfSetPrevious "::somf_MLinkable::somfSetPrevious"
#define somf_MLinkable_somfSetPrevious(somSelf,ev,aLink) \
    (SOM_Resolve(somSelf, somf_MLinkable, somfSetPrevious) \
	(somSelf,ev,aLink))
#ifndef SOMGD_somfSetPrevious
    #if (defined(_somfSetPrevious) || defined(__somfSetPrevious))
        #undef _somfSetPrevious
        #undef __somfSetPrevious
        #define SOMGD_somfSetPrevious 1
    #else
        #define _somfSetPrevious somf_MLinkable_somfSetPrevious
    #endif /* _somfSetPrevious */
#endif /* SOMGD_somfSetPrevious */
#ifndef SOM_DONT_USE_INHERITED_MACROS
#define somf_MLinkable_somDefaultInit SOMObject_somDefaultInit
#define somf_MLinkable_somDestruct SOMObject_somDestruct
#define somf_MLinkable_somDefaultCopyInit SOMObject_somDefaultCopyInit
#define somf_MLinkable_somDefaultAssign SOMObject_somDefaultAssign
#define somf_MLinkable_somDefaultConstCopyInit SOMObject_somDefaultConstCopyInit
#define somf_MLinkable_somDefaultVCopyInit SOMObject_somDefaultVCopyInit
#define somf_MLinkable_somDefaultConstVCopyInit SOMObject_somDefaultConstVCopyInit
#define somf_MLinkable_somDefaultConstAssign SOMObject_somDefaultConstAssign
#define somf_MLinkable_somDefaultVAssign SOMObject_somDefaultVAssign
#define somf_MLinkable_somDefaultConstVAssign SOMObject_somDefaultConstVAssign
#define somf_MLinkable_somFree SOMObject_somFree
#define somf_MLinkable_somUninit SOMObject_somUninit
#define somf_MLinkable_somGetClass SOMObject_somGetClass
#define somf_MLinkable_somGetClassName SOMObject_somGetClassName
#define somf_MLinkable_somGetSize SOMObject_somGetSize
#define somf_MLinkable_somIsA SOMObject_somIsA
#define somf_MLinkable_somIsInstanceOf SOMObject_somIsInstanceOf
#define somf_MLinkable_somRespondsTo SOMObject_somRespondsTo
#define somf_MLinkable_somDispatch SOMObject_somDispatch
#define somf_MLinkable_somClassDispatch SOMObject_somClassDispatch
#define somf_MLinkable_somCastObj SOMObject_somCastObj
#define somf_MLinkable_somResetObj SOMObject_somResetObj
#define somf_MLinkable_somPrintSelf SOMObject_somPrintSelf
#define somf_MLinkable_somDumpSelf SOMObject_somDumpSelf
#define somf_MLinkable_somDumpSelfInt SOMObject_somDumpSelfInt
#endif /* SOM_DONT_USE_INHERITED_MACROS */

#endif       /* SOM_somf_MLinkable_h */
