 
#ifndef arbiter_DEFINED
#define arbiter_DEFINED 1
 
#ifndef class_DEFINED
#include <class.h>
#endif /* class_DEFINED */
/* 
 * This file was generated by the Andrew class system preprocessor.
 * Don't make changes to this file as it is created from arbiter.ch and will be
 * overwritten.  Make changes to arbiter.ch instead.
 */ 
 
#ifndef class_StaticInfoOnly
/* 
 * The following information was copied, as-is, from arbiter.ch.
 */ 
 
/* ********************************************************************** *\
 *         Copyright IBM Corporation 1988,1991 - All Rights Reserved      *
 *        For full copyright information see:'andrew/config/COPYRITE'     *
\* ********************************************************************** */

/*
	$Disclaimer: 
*Permission to use, copy, modify, and distribute this software and its 
*documentation for any purpose is hereby granted without fee, 
*provided that the above copyright notice appear in all copies and that 
*both that copyright notice, this permission notice, and the following 
*disclaimer appear in supporting documentation, and that the names of 
*IBM, Carnegie Mellon University, and other copyright holders, not be 
*used in advertising or publicity pertaining to distribution of the software 
*without specific, written prior permission.
*
*IBM, CARNEGIE MELLON UNIVERSITY, AND THE OTHER COPYRIGHT HOLDERS 
*DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 
*ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.  IN NO EVENT 
*SHALL IBM, CARNEGIE MELLON UNIVERSITY, OR ANY OTHER COPYRIGHT HOLDER 
*BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY 
*DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 
*WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS 
*ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
*OF THIS SOFTWARE.
* $
*/


 






/* 
 * End of information copied from arbiter.ch.
 */ 
 
#endif /* class_StaticInfoOnly *//* 
 * Include the superclass information
 */ 
#define dontDefineRoutinesFor_cel
#include "cel.ih"
#undef dontDefineRoutinesFor_cel

 
 
#ifndef class_StaticInfoOnly
/* 
 * Data structure for arbiter 
 */ 
struct arbiter { 
    union {
	struct basicobject_methods *arbiter_methods;
	struct traced traced;
	struct observable observable;
	struct dataobject dataobject;
	struct cel cel;
    } header;
	struct cel *first;

};

 
/* 
 * End of data structure for arbiter.
 */ 
 

#endif /* class_StaticInfoOnly */

#ifndef class_StaticInfoOnly

#ifndef arbiter_PROGRAMMERVERSION
#define arbiter_PROGRAMMERVERSION 1
#endif /* arbiter_PROGRAMMERVERSION */

#ifdef arbiter_VERSION
#undef arbiter_VERSION
#endif /* arbiter_VERSION */
#define arbiter_VERSION ((((arbiter_PROGRAMMERVERSION << 16) ^ (48 << 8) ^ sizeof(struct arbiter)) & 0x7ffff) + 0x80000 + (130 << 20))


#endif /* class_StaticInfoOnly */
#define arbiter_StaticLoadOnlyThisClass()  \
{ extern struct classinfo *arbiter__GetClassInfo(); \
 extern struct classheader *arbiter_classheader_StaticExport; \
  (void) class_EnterInfo(NULL, arbiter_classheader_StaticExport->name, arbiter__GetClassInfo, NULL, arbiter_classheader_StaticExport->namekey); } 
 
#define arbiter_StaticLoad()  \
    { \
    cel_StaticLoad(); \
    arbiter_StaticLoadOnlyThisClass();  \
    } 
 
#define arbiter_StaticEntry  {arbiter_StaticLoad()} 
 
#ifndef class_StaticInfoOnly
static struct classheader arbiter_classheader = {
    arbiter_VERSION,
    "arbiter",
    "arbiter",
    (struct basicobject_methods *) &class_RoutineStruct,
};

#define arbiter_CLASSPROCEDURES (arbiter_classheader.classprocedures)
int arbiter_classref_;
#endif /* class_StaticInfoOnly */

#endif /* arbiter_DEFINED */

#if !defined(arbiter_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_arbiter) && !defined(class_StaticEntriesOnly)
#define arbiter_ROUTINESDEFINED

#define arbiter_Reference(self) \
 (((&(self)->header.traced))->refcount++)
#define arbiter_UnReference(self) \
 ((((&(self)->header.traced))->refcount>0)?((&(self)->header.traced))->refcount--:0)
#define arbiter_ReferenceCount(self) \
 (((&(self)->header.traced))->refcount)
#define arbiter_AddObserver(self,observer) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[0]))) (self,observer))
#define arbiter_IsObserver(self,observer) \
    ((* ((boolean (*)())((self)->header.arbiter_methods->routines[1]))) (self,observer))
#define arbiter_RemoveObserver(self,observer) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[2]))) (self,observer))
#define arbiter_NotifyObservers(self,value) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[3]))) (self,value))
#define arbiter_ObservedChanged(self,changed,value) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[4]))) (self,changed,value))
#define arbiter_AddRecipient(self,trigger,rcvr,func,rock) \
    ((* ((boolean (*)())((self)->header.arbiter_methods->routines[5]))) (self,trigger,rcvr,func,rock))
#define arbiter_DeleteRecipient(self,trigger,rcvr) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[6]))) (self,trigger,rcvr))
#define arbiter_PullTrigger(self,trigger) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[7]))) (self,trigger))
#define arbiter_DisableTrigger(self,trigger) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[8]))) (self,trigger))
#define arbiter_EnableTrigger(self,trigger) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[9]))) (self,trigger))
#define arbiter_DisableCount(self,trigger) \
    ((* ((long (*)())((self)->header.arbiter_methods->routines[10]))) (self,trigger))
#define arbiter_Read(self,file,id) \
    ((* ((long (*)())((self)->header.arbiter_methods->routines[11]))) (self,file,id))
#define arbiter_Write(self,file,writeid,level) \
    ((* ((long (*)())((self)->header.arbiter_methods->routines[12]))) (self,file,writeid,level))
#define arbiter_ReadOtherFormat(self,file,fmt,encoding,description) \
    ((* ((boolean (*)())((self)->header.arbiter_methods->routines[13]))) (self,file,fmt,encoding,description))
#define arbiter_WriteOtherFormat(self,file,writeid,level,usagetype,boundary) \
    ((* ((long (*)())((self)->header.arbiter_methods->routines[14]))) (self,file,writeid,level,usagetype,boundary))
#define arbiter_GetModified(self) \
    ((* ((long (*)())((self)->header.arbiter_methods->routines[15]))) (self))
#define arbiter_SetModified(self) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[16]))) (self))
#define arbiter_ViewName(self) \
    ((* ((char * (*)())((self)->header.arbiter_methods->routines[17]))) (self))
#define arbiter_SetAttributes(self,attributes) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[18]))) (self,attributes))
#define arbiter_Put(self,property,type,rock) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[19]))) (self,property,type,rock))
#define arbiter_Get(self,property,type,rock) \
    ((* ((short (*)())((self)->header.arbiter_methods->routines[20]))) (self,property,type,rock))
#define arbiter_ListCurrentViews(self,array,size) \
    ((* ((int (*)())((self)->header.arbiter_methods->routines[21]))) (self,array,size))
#define arbiter_RestoreModified(self,oldmodified) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[22]))) (self,oldmodified))
#define arbiter_UniqueID(self) \
 ((long)((&(self)->header.dataobject)))
#define arbiter_GetWriteID(self) \
 ( ((&(self)->header.dataobject))->writeID )
#define arbiter_SetWriteID(self,newValue) \
 ( (((&(self)->header.dataobject))->writeID) = (newValue) )
#define arbiter_GetID(self) \
      ( ((&(self)->header.dataobject))->id )
#define arbiter_SetID(self,newValue) \
      ( (((&(self)->header.dataobject))->id) = (newValue) )
#define arbiter_SetChildObject(self,newobject,viewName) \
    ((* ((boolean (*)())((self)->header.arbiter_methods->routines[23]))) (self,newobject,viewName))
#define arbiter_SetObjectByName(self,dataname) \
    ((* ((boolean (*)())((self)->header.arbiter_methods->routines[24]))) (self,dataname))
#define arbiter_GetObject(self) \
    ((* ((struct dataobject * (*)())((self)->header.arbiter_methods->routines[25]))) (self))
#define arbiter_SetViewName(self,viewname,UseDefault) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[26]))) (self,viewname,UseDefault))
#define arbiter_SetApplication(self,app) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[27]))) (self,app))
#define arbiter_InsertObject(self,newobject,dataname,viewname,usedefaultview) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[28]))) (self,newobject,dataname,viewname,usedefaultview))
#define arbiter_SetRefName(self,refname) \
    ((* ((char * (*)())((self)->header.arbiter_methods->routines[29]))) (self,refname))
#define arbiter_UnsetRefName(self) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[30]))) (self))
#define arbiter_SetVisibilityBit(self,mode) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[31]))) (self,mode))
#define arbiter_SetObject(self,newobject) \
    ((* ((boolean (*)())((self)->header.arbiter_methods->routines[32]))) (self,newobject))
#define arbiter_SetLinkName(self,linkname) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[33]))) (self,linkname))
#define arbiter_SetObjectName(self,dataname) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[34]))) (self,dataname))
#define arbiter_WriteLink(self,file,writeid,level) \
    ((* ((long (*)())((self)->header.arbiter_methods->routines[35]))) (self,file,writeid,level))
#define arbiter_GetStringAtt(self,attname,buf,buflen) \
    ((* ((char * (*)())((self)->header.arbiter_methods->routines[36]))) (self,attname,buf,buflen))
#define arbiter_GetLongAtt(self,attname) \
    ((* ((long (*)())((self)->header.arbiter_methods->routines[37]))) (self,attname))
#define arbiter_SetLongAtt(self,attname,val) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[38]))) (self,attname,val))
#define arbiter_SetStringAtt(self,attname,attval) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[39]))) (self,attname,attval))
#define arbiter_ReadSup(self,file,id) \
    ((* ((long (*)())((self)->header.arbiter_methods->routines[40]))) (self,file,id))
#define arbiter_WriteSup(self,file,writeid,level) \
    ((* ((long (*)())((self)->header.arbiter_methods->routines[41]))) (self,file,writeid,level))
#define arbiter_ReadFile(self,file) \
    ((* ((long (*)())((self)->header.arbiter_methods->routines[42]))) (self,file))
#define arbiter_InitDefault(self) \
    ((* ((long (*)())((self)->header.arbiter_methods->routines[43]))) (self))
#define arbiter_GetRefName(self) \
 ((&(self)->header.cel)->refname)
#define arbiter_GetViewName(self) \
 ((&(self)->header.cel)->viewType)
#define arbiter_GetObjectName(self) \
 ((&(self)->header.cel)->dataType)
#define arbiter_GetRefAtom(self) \
 ((&(self)->header.cel)->refatm)
#define arbiter_GetViewAtom(self) \
 ((&(self)->header.cel)->viewatm)
#define arbiter_GetObjectAtom(self) \
 ((&(self)->header.cel)->dataatm)
#define arbiter_GetLinkName(self) \
 ((&(self)->header.cel)->linkname)
#define arbiter_GetLinkAtom(self) \
 ((&(self)->header.cel)->linkatm)
#define arbiter_GetApplication(self) \
 ((&(self)->header.cel)->application)
#define arbiter_GetScript(self) \
 ((&(self)->header.cel)->script)
#define arbiter_SetVisible(self) \
 cel_SetVisibilityBit((&(self)->header.cel),cel_VISIBLE)
#define arbiter_SetInvisible(self) \
 cel_SetVisibilityBit((&(self)->header.cel),cel_INVISIBLE)
#define arbiter_Visible(self) \
 ((&(self)->header.cel)->mode == cel_VISIBLE)
#define arbiter_SetNoSave(self,val) \
 ((&(self)->header.cel)->NoSave = val)
#define arbiter_SetDefaultStream(self,S) \
 ((&(self)->header.cel)->defaultStream = S)
#define arbiter_SetInitFile(self,S) \
 ((&(self)->header.cel)->initfile = S)
#define arbiter_SetWriteChild(self,TF) \
 ((&(self)->header.cel)->WriteChild = TF)
#define arbiter_GetDefaultStream(self) \
 ((&(self)->header.cel)->defaultStream)
#define arbiter_GetInitFile(self) \
 ((&(self)->header.cel)->initfile)
#define arbiter_GetWriteChild(self) \
 ((&(self)->header.cel)->WriteChild )
#define arbiter_GetReadCount(self) \
 ((&(self)->header.cel)->count)
#define arbiter_GetNextChain(self) \
 (((&(self)->header.cel))->chain)
#define arbiter_GetArbiter(self) \
 (((&(self)->header.cel))->ab)
#define arbiter_SetArbiter(self,AA) \
 (((&(self)->header.cel))->ab = (AA))
#define arbiter_GetFirst(self) \
 (((self))->first)
#define arbiter_DeclareRead(self,cel) \
    ((* ((FILE * (*)())((self)->header.arbiter_methods->routines[44]))) (self,cel))
#define arbiter_FindChildCelByName(self,name) \
    ((* ((struct cel * (*)())((self)->header.arbiter_methods->routines[45]))) (self,name))
#define arbiter_FindChildObjectByName(self,name) \
    ((* ((struct dataobject * (*)())((self)->header.arbiter_methods->routines[46]))) (self,name))
#define arbiter_ReadObjects(self) \
    ((* ((void (*)())((self)->header.arbiter_methods->routines[47]))) (self))

#define arbiter_NewFromObject(self) \
    ((* ((struct arbiter * (*)())((self)->header.arbiter_methods->info->procs->routines[0]))) (&arbiter_classheader, (self)->header.arbiter_methods->info->versionnumber))
#define arbiter_New() \
    (*((struct arbiter * (*)()) (arbiter_CLASSPROCEDURES->routines[0])))(&arbiter_classheader,arbiter_VERSION)
#define arbiter_Initialize(self) \
    (*((void (*)()) (arbiter_CLASSPROCEDURES->routines[2])))(&arbiter_classheader,self, arbiter_VERSION)

#define arbiter_Destroy(self) \
    ((* ((void (*)()) ((self)->header.arbiter_methods->info->procs->routines[1]))) (&arbiter_classheader, self))
#define arbiter_Finalize(self) \
    (*((void (*)()) (arbiter_CLASSPROCEDURES->routines[3])))(&arbiter_classheader,self)

#define arbiter_InitializeObject(self) \
    (*((boolean (*)()) (arbiter_CLASSPROCEDURES->routines[5])))(&arbiter_classheader,self)
#define arbiter_InitializeClass() \
    (*((boolean (*)()) (arbiter_CLASSPROCEDURES->routines[6])))(&arbiter_classheader)
#define arbiter_GetMaster() \
    (*((struct arbiter * (*)()) (arbiter_CLASSPROCEDURES->routines[7])))(&arbiter_classheader)
#define arbiter_SetMaster(newmaster) \
    (*((struct arbiter * (*)()) (arbiter_CLASSPROCEDURES->routines[8])))(&arbiter_classheader,newmaster)


#endif /* !defined(arbiter_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_arbiter ) && !defined(class_StaticEntriesOnly)*/

