 
#ifndef urlbutton_DEFINED
#define urlbutton_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 urlbtn.ch and will be
 * overwritten.  Make changes to urlbtn.ch instead.
 */ 
 
#ifndef class_StaticInfoOnly
/* 
 * The following information was copied, as-is, from urlbtn.ch.
 */ 
 
/*
 * urlbtn -- urlbutton
 *
 * Dataobject for an button that causes Mosiac to open a window on a URL.
 *
 */






/* 
 * End of information copied from urlbtn.ch.
 */ 
 
#endif /* class_StaticInfoOnly *//* 
 * Include the superclass information
 */ 
#define dontDefineRoutinesFor_sbutton
#include "sbutton.ih"
#undef dontDefineRoutinesFor_sbutton

 
 
#ifndef class_StaticInfoOnly
/* 
 * Data structure for urlbutton 
 */ 
struct urlbutton { 
    union {
	struct basicobject_methods *urlbutton_methods;
	struct traced traced;
	struct observable observable;
	struct dataobject dataobject;
	struct sbutton sbutton;
    } header;
    char *current_url;
    boolean has_label;

};

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

#endif /* class_StaticInfoOnly */

#ifndef class_StaticInfoOnly

#ifndef urlbutton_PROGRAMMERVERSION
#define urlbutton_PROGRAMMERVERSION 1
#endif /* urlbutton_PROGRAMMERVERSION */

#ifdef urlbutton_VERSION
#undef urlbutton_VERSION
#endif /* urlbutton_VERSION */
#define urlbutton_VERSION ((((urlbutton_PROGRAMMERVERSION << 16) ^ (40 << 8) ^ sizeof(struct urlbutton)) & 0x7ffff) + 0x80000 + (2 << 20))


#endif /* class_StaticInfoOnly */
#define urlbutton_StaticLoadOnlyThisClass()  \
{ extern struct classinfo *urlbutton__GetClassInfo(); \
 extern struct classheader *urlbtn_classheader_StaticExport; \
  (void) class_EnterInfo(NULL, urlbtn_classheader_StaticExport->name, urlbutton__GetClassInfo, NULL, urlbtn_classheader_StaticExport->namekey); } 
 
#define urlbutton_StaticLoad()  \
    { \
    sbutton_StaticLoad(); \
    urlbutton_StaticLoadOnlyThisClass();  \
    } 
 
#define urlbutton_StaticEntry  {urlbutton_StaticLoad()} 
 
#define urlbtn_StaticEntry  {urlbutton_StaticLoad()} 
 
#ifndef class_StaticInfoOnly
static struct classheader urlbutton_classheader = {
    urlbutton_VERSION,
    "urlbutton",
    "urlbtn",
    (struct basicobject_methods *) &class_RoutineStruct,
};

#define urlbutton_CLASSPROCEDURES (urlbutton_classheader.classprocedures)
int urlbtn_classref_;
#endif /* class_StaticInfoOnly */

#endif /* urlbutton_DEFINED */

#if !defined(urlbutton_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_urlbutton) && !defined(class_StaticEntriesOnly)
#define urlbutton_ROUTINESDEFINED

#define urlbutton_Reference(self) \
 (((&(self)->header.traced))->refcount++)
#define urlbutton_UnReference(self) \
 ((((&(self)->header.traced))->refcount>0)?((&(self)->header.traced))->refcount--:0)
#define urlbutton_ReferenceCount(self) \
 (((&(self)->header.traced))->refcount)
#define urlbutton_AddObserver(self,observer) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[0]))) (self,observer))
#define urlbutton_IsObserver(self,observer) \
    ((* ((boolean (*)())((self)->header.urlbutton_methods->routines[1]))) (self,observer))
#define urlbutton_RemoveObserver(self,observer) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[2]))) (self,observer))
#define urlbutton_NotifyObservers(self,value) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[3]))) (self,value))
#define urlbutton_ObservedChanged(self,changed,value) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[4]))) (self,changed,value))
#define urlbutton_AddRecipient(self,trigger,rcvr,func,rock) \
    ((* ((boolean (*)())((self)->header.urlbutton_methods->routines[5]))) (self,trigger,rcvr,func,rock))
#define urlbutton_DeleteRecipient(self,trigger,rcvr) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[6]))) (self,trigger,rcvr))
#define urlbutton_PullTrigger(self,trigger) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[7]))) (self,trigger))
#define urlbutton_DisableTrigger(self,trigger) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[8]))) (self,trigger))
#define urlbutton_EnableTrigger(self,trigger) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[9]))) (self,trigger))
#define urlbutton_DisableCount(self,trigger) \
    ((* ((long (*)())((self)->header.urlbutton_methods->routines[10]))) (self,trigger))
#define urlbutton_Read(self,file,id) \
    ((* ((long (*)())((self)->header.urlbutton_methods->routines[11]))) (self,file,id))
#define urlbutton_Write(self,file,writeid,level) \
    ((* ((long (*)())((self)->header.urlbutton_methods->routines[12]))) (self,file,writeid,level))
#define urlbutton_ReadOtherFormat(self,file,fmt,encoding,description) \
    ((* ((boolean (*)())((self)->header.urlbutton_methods->routines[13]))) (self,file,fmt,encoding,description))
#define urlbutton_WriteOtherFormat(self,file,writeid,level,usagetype,boundary) \
    ((* ((long (*)())((self)->header.urlbutton_methods->routines[14]))) (self,file,writeid,level,usagetype,boundary))
#define urlbutton_GetModified(self) \
    ((* ((long (*)())((self)->header.urlbutton_methods->routines[15]))) (self))
#define urlbutton_SetModified(self) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[16]))) (self))
#define urlbutton_ViewName(self) \
    ((* ((char * (*)())((self)->header.urlbutton_methods->routines[17]))) (self))
#define urlbutton_SetAttributes(self,attributes) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[18]))) (self,attributes))
#define urlbutton_Put(self,property,type,rock) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[19]))) (self,property,type,rock))
#define urlbutton_Get(self,property,type,rock) \
    ((* ((short (*)())((self)->header.urlbutton_methods->routines[20]))) (self,property,type,rock))
#define urlbutton_ListCurrentViews(self,array,size) \
    ((* ((int (*)())((self)->header.urlbutton_methods->routines[21]))) (self,array,size))
#define urlbutton_RestoreModified(self,oldmodified) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[22]))) (self,oldmodified))
#define urlbutton_UniqueID(self) \
 ((long)((&(self)->header.dataobject)))
#define urlbutton_GetWriteID(self) \
 ( ((&(self)->header.dataobject))->writeID )
#define urlbutton_SetWriteID(self,newValue) \
 ( (((&(self)->header.dataobject))->writeID) = (newValue) )
#define urlbutton_GetID(self) \
      ( ((&(self)->header.dataobject))->id )
#define urlbutton_SetID(self,newValue) \
      ( (((&(self)->header.dataobject))->id) = (newValue) )
#define urlbutton_ActivateButton(self,ind) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[23]))) (self,ind))
#define urlbutton_DeActivateButton(self,ind) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[24]))) (self,ind))
#define urlbutton_Actuate(self,ind) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[25]))) (self,ind))
#define urlbutton_SetRock(self,ind,rock) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[26]))) (self,ind,rock))
#define urlbutton_SetLayout(self,rows,cols,sbutton_sizepolicy) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[27]))) (self,rows,cols,sbutton_sizepolicy))
#define urlbutton_SetLabel(self,ind,txt) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[28]))) (self,ind,txt))
#define urlbutton_SetLit(self,ind,litp) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[29]))) (self,ind,litp))
#define urlbutton_SetPrefs(self,ind,sbutton_prefs) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[30]))) (self,ind,sbutton_prefs))
#define urlbutton_Enumerate(self,func,rock) \
    ((* ((int (*)())((self)->header.urlbutton_methods->routines[31]))) (self,func,rock))
#define urlbutton_SetTrigger(self,ind,name) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[32]))) (self,ind,name))
#define urlbutton_Delete(self,ind) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[33]))) (self,ind))
#define urlbutton_Swap(self,i1,i2) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[34]))) (self,i1,i2))
#define urlbutton_SetChangeFlag(self,on) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[35]))) (self,on))
#define urlbutton_GetChangeType(self) \
    ((* ((long (*)())((self)->header.urlbutton_methods->routines[36]))) (self))
#define urlbutton_EnsureSize(self,ind) \
    ((* ((boolean (*)())((self)->header.urlbutton_methods->routines[37]))) (self,ind))
#define urlbutton_GetRock(self,ind) \
 (((ind)<((&(self)->header.sbutton))->count && (ind)>=0)?((&(self)->header.sbutton))->buttons[ind].rock:0)
#define urlbutton_GetLit(self,ind) \
 (((ind)<((&(self)->header.sbutton))->count && (ind)>=0)?((&(self)->header.sbutton))->buttons[ind].lit:FALSE)
#define urlbutton_GetLabel(self,ind) \
 (((ind)<((&(self)->header.sbutton))->count && (ind)>=0)?((&(self)->header.sbutton))->buttons[ind].label:NULL)
#define urlbutton_GetPrefs(self,ind) \
 (((ind)<((&(self)->header.sbutton))->count && (ind)>=0)?((&(self)->header.sbutton))->buttons[ind].prefs:NULL)
#define urlbutton_GetTrigger(self,ind) \
 (((ind)<((&(self)->header.sbutton))->count && (ind)>=0)?((&(self)->header.sbutton))->buttons[ind].trigger:NULL)
#define urlbutton_GetSingleActivationFlag(self,singleactivation) \
;
#define urlbutton_GetButtons(self) \
 (((&(self)->header.sbutton))->buttons)
#define urlbutton_GetRows(self) \
 (((&(self)->header.sbutton))->rows)
#define urlbutton_GetCols(self) \
 (((&(self)->header.sbutton))->cols)
#define urlbutton_GetSizePolicy(self) \
 (((&(self)->header.sbutton))->sizepolicy)
#define urlbutton_GetResizeRock(self) \
 (((&(self)->header.sbutton))->rezizerock)
#define urlbutton_GetResizeFunc(self) \
 (((&(self)->header.sbutton))->resizefunc)
#define urlbutton_GetHitFunc(self) \
 (((&(self)->header.sbutton))->hitfunc)
#define urlbutton_GetHitFuncRock(self) \
 (((&(self)->header.sbutton))->hitfuncrock)
#define urlbutton_GetCount(self) \
 (((&(self)->header.sbutton))->count)
#define urlbutton_GetDefaultPrefs(self) \
 (((&(self)->header.sbutton))->prefs)
#define urlbutton_GetMattePrefs(self) \
 (((&(self)->header.sbutton))->matteprefs)
#define urlbutton_GetMaxCount(self) \
 (((&(self)->header.sbutton))->maxcount)
#define urlbutton_SetURL(self,url) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[38]))) (self,url))
#define urlbutton_SetText(self,txt) \
    ((* ((void (*)())((self)->header.urlbutton_methods->routines[39]))) (self,txt))
#define urlbutton_GetURL(self) \
	((self)->current_url)

#define urlbutton_NewFromObject(self) \
    ((* ((struct urlbutton * (*)())((self)->header.urlbutton_methods->info->procs->routines[0]))) (&urlbutton_classheader, (self)->header.urlbutton_methods->info->versionnumber))
#define urlbutton_New() \
    (*((struct urlbutton * (*)()) (urlbutton_CLASSPROCEDURES->routines[0])))(&urlbutton_classheader,urlbutton_VERSION)
#define urlbutton_Initialize(self) \
    (*((void (*)()) (urlbutton_CLASSPROCEDURES->routines[2])))(&urlbutton_classheader,self, urlbutton_VERSION)

#define urlbutton_Destroy(self) \
    ((* ((void (*)()) ((self)->header.urlbutton_methods->info->procs->routines[1]))) (&urlbutton_classheader, self))
#define urlbutton_Finalize(self) \
    (*((void (*)()) (urlbutton_CLASSPROCEDURES->routines[3])))(&urlbutton_classheader,self)

#define urlbutton_InitializeObject(self) \
    (*((boolean (*)()) (urlbutton_CLASSPROCEDURES->routines[5])))(&urlbutton_classheader,self)
#define urlbutton_FinalizeObject(self) \
    (*((void (*)()) (urlbutton_CLASSPROCEDURES->routines[6])))(&urlbutton_classheader,self)
#define urlbutton_InitializeClass() \
    (*((boolean (*)()) (urlbutton_CLASSPROCEDURES->routines[7])))(&urlbutton_classheader)

#define urlbutton_GetName(prefs) \
     ((prefs)->name)
#define urlbutton_GetStyle(prefs) \
     ((prefs)->style)
#define urlbutton_GetFont(prefs) \
     ((prefs)->font)
#define urlbutton_GetColor(prefs,color) \
     ((prefs)->colors[color])
#define urlbutton_GetLabelFG(prefs) \
     ((prefs)->colors[sbutton_LABELFG])
#define urlbutton_GetLabelBG(prefs) \
     ((prefs)->colors[sbutton_LABELBG])
#define urlbutton_GetBackground(prefs) \
     ((prefs)->colors[sbutton_BACKGROUND])
#define urlbutton_GetForeground(prefs) \
     ((prefs)->colors[sbutton_FOREGROUND])
#define urlbutton_GetTop(prefs) \
     ((prefs)->colors[sbutton_TOP])
#define urlbutton_GetTopShadow(prefs) \
     ((prefs)->colors[sbutton_TOPSHADOW])
#define urlbutton_GetBottomShadow(prefs) \
     ((prefs)->colors[sbutton_BOTTOMSHADOW])
#define urlbutton_GetRefCount(prefs) \
     ((prefs)->refcount)

#endif /* !defined(urlbutton_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_urlbutton ) && !defined(class_StaticEntriesOnly)*/

