 
#ifndef treev_DEFINED
#define treev_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 treev.ch and will be
 * overwritten.  Make changes to treev.ch instead.
 */ 
 
#ifndef class_StaticInfoOnly
/* 
 * The following information was copied, as-is, from treev.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.
* $
*/

/**  SPECIFICATION -- External Facility Suite  *********************************

TITLE	The Tree View-Class

MODULE	treev.ch

VERSION	1.0

AUTHOR	TC Peters
	Information Technology Center, Carnegie-Mellon University 

DESCRIPTION
	This is the suite of Methods that support the Tree View-Class.

    NB: The comment-symbol "===" indicates areas which are:
	    1 - Questionable
	    OR
	    2 - Arbitrary
	    OR
	    3 - Temporary Hacks
    Such curiosities need be resolved prior to Project Completion...


HISTORY
  02/14/88	Created (TCP)
  08/24/89	Upgrade to Version 1.0 (TCP)
		Pass object-type arg to Hit-handlers (TCP)

END-SPECIFICATION  ************************************************************/



#define  treev_VERSION	      1





/***  Object Types  ***/
#define  treev_NodeObject		    (1)
#define  treev_TitleObject		    (2)

/***  Node Ordering  ***/
#define  treev_ColumnMajor		    (0)
#define  treev_RowMajor			    (1<<0)

/***  Node Border Styles  ***/
#define  treev_Rectangle		    (0)
#define  treev_Circle			    (1<<0)
#define  treev_Oval			    (1<<1)
#define  treev_RoundAngle		    (1<<2)
#define  treev_Roundangle		    (1<<2)
#define	 treev_Folder			    (1<<3)

/***  Tree Scrolling  ***/
#define  treev_NoVertical		    (1<<0)
#define  treev_NoHorizontal		    (1<<1)

/***  Node Filigree  ***/
#define  treev_NoDropShadow		    (0)
#define  treev_DropShadow		    (1<<0)

/***  Node Connector Styles  ***/
#define  treev_Direct			    (0)
#define  treev_DogLeg			    (1<<0)
#define  treev_Fold			    (1<<1)
#define  treev_NoFold			    (1<<2)

/****  Placements  ***/
#define  treev_Center			    (0)
#define  treev_Left			    (1<<0)
#define  treev_Right			    (1<<1)
#define  treev_Top			    (1<<2)
#define  treev_Bottom			    (1<<3)

/***  Highlight & FootPrint Styles ***/
#define  treev_Invert			    (0)
#define  treev_Border			    (1<<0)
#define  treev_Bold			    (1<<1)
#define  treev_Italic			    (1<<2)
#define  treev_Pale			    (1<<3)

/***  Arrangements ***/
#define  treev_Horizontal		    (0)
#define  treev_Vertical			    (1<<0)

/***  Attribute Specifications  ***/
#define  treev_NodeHighlightStyle(x)	    treev_nodehighlightstyle,	(long) x
#define  treev_NodeFootPrintStyle(x)	    treev_nodefootprintstyle,	(long) x
#define  treev_NodeBorderStyle(x)	    treev_nodeborderstyle,	(long) x
#define  treev_Scroll(x)		    treev_scroll,		(long) x
#define  treev_NodeConnectorStyle(x)	    treev_nodeconnectorstyle,	(long) x
#define  treev_NodeFontName(x)		    treev_nodefontname,		(long) x
#define  treev_NodeFiligree(x)		    treev_nodefiligree,	    	(long) x
#define  treev_HitHandler(x)		    treev_hithandler,		(long) x
#define  treev_Arrangement(x)		    treev_arrangement,		(long) x
#define  treev_BackgroundShade(x)	    treev_backgroundshade,	(long) x
#define  treev_NodeWidth(x)		    treev_nodewidth,		(long) x
#define  treev_NodeHeight(x)		    treev_nodeheight,		(long) x
#define  treev_Cursor(x)		    treev_cursor,		(long) x
#define  treev_CursorFontName(x)	    treev_cursorfontname,	(long) x
#define  treev_NodeOrder(x)		    treev_nodeorder,		(long) x

/***  Tree View Attribute Codes  ***/

#define  treev_nodeborderstyle		    1
#define  treev_scroll			    2
#define  treev_nodehighlightstyle	    3
#define  treev_nodeconnectorstyle	    4
#define  treev_nodefontname		    5
#define  treev_titlefontname		    6
#define  treev_nodefiligree		    7
#define  treev_hithandler		    8
#define  treev_arrangement		    9
#define  treev_backgroundshade		   10
#define  treev_nodewidth		   11
#define  treev_nodeheight		   12
#define  treev_nodefootprintstyle	   13
#define  treev_cursor			   14
#define  treev_cursorfontname		   15
#define  treev_nodeorder		   16


typedef struct treev_specification  treev_Specification;
struct  treev_specification
  {
  char	attribute;
  long	value;
  };


/* 
 * End of information copied from treev.ch.
 */ 
 
#endif /* class_StaticInfoOnly *//* 
 * Include the superclass information
 */ 
#define dontDefineRoutinesFor_aptv
#include "aptv.ih"
#undef dontDefineRoutinesFor_aptv

 
 
#ifndef class_StaticInfoOnly
/* 
 * Data structure for treev 
 */ 
struct treev { 
    union {
	struct basicobject_methods *treev_methods;
	struct traced traced;
	struct observable observable;
	struct view view;
	struct aptv aptv;
    } header;

  struct treev_instance		     *instance;
  
};

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

#endif /* class_StaticInfoOnly */

#ifndef class_StaticInfoOnly

#ifndef treev_PROGRAMMERVERSION
#define treev_PROGRAMMERVERSION 1
#endif /* treev_PROGRAMMERVERSION */

#ifdef treev_VERSION
#undef treev_VERSION
#endif /* treev_VERSION */
#define treev_VERSION ((((treev_PROGRAMMERVERSION << 16) ^ (128 << 8) ^ sizeof(struct treev)) & 0x7ffff) + 0x80000 + (65 << 20))


#endif /* class_StaticInfoOnly */
#define treev_StaticLoadOnlyThisClass()  \
{ extern struct classinfo *treev__GetClassInfo(); \
 extern struct classheader *treev_classheader_StaticExport; \
  (void) class_EnterInfo(NULL, treev_classheader_StaticExport->name, treev__GetClassInfo, NULL, treev_classheader_StaticExport->namekey); } 
 
#define treev_StaticLoad()  \
    { \
    aptv_StaticLoad(); \
    treev_StaticLoadOnlyThisClass();  \
    } 
 
#define treev_StaticEntry  {treev_StaticLoad()} 
 
#ifndef class_StaticInfoOnly
static struct classheader treev_classheader = {
    treev_VERSION,
    "treev",
    "treev",
    (struct basicobject_methods *) &class_RoutineStruct,
};

#define treev_CLASSPROCEDURES (treev_classheader.classprocedures)
int treev_classref_;
#endif /* class_StaticInfoOnly */

#endif /* treev_DEFINED */

#if !defined(treev_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_treev) && !defined(class_StaticEntriesOnly)
#define treev_ROUTINESDEFINED

#define treev_Reference(self) \
 (((&(self)->header.traced))->refcount++)
#define treev_UnReference(self) \
 ((((&(self)->header.traced))->refcount>0)?((&(self)->header.traced))->refcount--:0)
#define treev_ReferenceCount(self) \
 (((&(self)->header.traced))->refcount)
#define treev_AddObserver(self,observer) \
    ((* ((void (*)())((self)->header.treev_methods->routines[0]))) (self,observer))
#define treev_IsObserver(self,observer) \
    ((* ((boolean (*)())((self)->header.treev_methods->routines[1]))) (self,observer))
#define treev_RemoveObserver(self,observer) \
    ((* ((void (*)())((self)->header.treev_methods->routines[2]))) (self,observer))
#define treev_NotifyObservers(self,value) \
    ((* ((void (*)())((self)->header.treev_methods->routines[3]))) (self,value))
#define treev_ObservedChanged(self,changed,value) \
    ((* ((void (*)())((self)->header.treev_methods->routines[4]))) (self,changed,value))
#define treev_AddRecipient(self,trigger,rcvr,func,rock) \
    ((* ((boolean (*)())((self)->header.treev_methods->routines[5]))) (self,trigger,rcvr,func,rock))
#define treev_DeleteRecipient(self,trigger,rcvr) \
    ((* ((void (*)())((self)->header.treev_methods->routines[6]))) (self,trigger,rcvr))
#define treev_PullTrigger(self,trigger) \
    ((* ((void (*)())((self)->header.treev_methods->routines[7]))) (self,trigger))
#define treev_DisableTrigger(self,trigger) \
    ((* ((void (*)())((self)->header.treev_methods->routines[8]))) (self,trigger))
#define treev_EnableTrigger(self,trigger) \
    ((* ((void (*)())((self)->header.treev_methods->routines[9]))) (self,trigger))
#define treev_DisableCount(self,trigger) \
    ((* ((long (*)())((self)->header.treev_methods->routines[10]))) (self,trigger))
#define treev_SetName(self,name) \
    ((* ((void (*)())((self)->header.treev_methods->routines[11]))) (self,name))
#define treev_GetName(self) \
    ((* ((struct atomlist * (*)())((self)->header.treev_methods->routines[12]))) (self))
#define treev_GetClass(self) \
    ((* ((struct atomlist * (*)())((self)->header.treev_methods->routines[13]))) (self))
#define treev_GetParameter(self,name,type,datum) \
    ((* ((short (*)())((self)->header.treev_methods->routines[14]))) (self,name,type,datum))
#define treev_GetResource(self,name,class,type,datum) \
    ((* ((short (*)())((self)->header.treev_methods->routines[15]))) (self,name,class,type,datum))
#define treev_GetManyParameters(self,resources,name,class) \
    ((* ((void (*)())((self)->header.treev_methods->routines[16]))) (self,resources,name,class))
#define treev_PostResource(self,path,type,datum) \
    ((* ((void (*)())((self)->header.treev_methods->routines[17]))) (self,path,type,datum))
#define treev_InsertViewRegion(self,parent,region) \
    ((* ((void (*)())((self)->header.treev_methods->routines[18]))) (self,parent,region))
#define treev_InsertView(self,parent,enclosingRect) \
    ((* ((void (*)())((self)->header.treev_methods->routines[19]))) (self,parent,enclosingRect))
#define treev_InsertViewSize(self,EnclosingView,xOriginInParent,yOriginInParent,width,height) \
    ((* ((void (*)())((self)->header.treev_methods->routines[20]))) (self,EnclosingView,xOriginInParent,yOriginInParent,width,height))
#define treev_SetDataObject(self,dataobject) \
    ((* ((void (*)())((self)->header.treev_methods->routines[21]))) (self,dataobject))
#define treev_GetApplicationLayer(self) \
    ((* ((struct view * (*)())((self)->header.treev_methods->routines[22]))) (self))
#define treev_DeleteApplicationLayer(self,applicationLayer) \
    ((* ((void (*)())((self)->header.treev_methods->routines[23]))) (self,applicationLayer))
#define treev_DescriptionObject(self,format,rock) \
    ((* ((char * (*)())((self)->header.treev_methods->routines[24]))) (self,format,rock))
#define treev_Describe(self,format,file,rock) \
    ((* ((enum view_DescriberErrs (*)())((self)->header.treev_methods->routines[25]))) (self,format,file,rock))
#define treev_FullUpdate(self,type,left,top,width,right) \
    ((* ((void (*)())((self)->header.treev_methods->routines[26]))) (self,type,left,top,width,right))
#define treev_Update(self) \
    ((* ((void (*)())((self)->header.treev_methods->routines[27]))) (self))
#define treev_Print(self,file,processor,finalFormat,topLevel) \
    ((* ((void (*)())((self)->header.treev_methods->routines[28]))) (self,file,processor,finalFormat,topLevel))
#define treev_Hit(self,action,x,y,numberOfClicks) \
    ((* ((struct view * (*)())((self)->header.treev_methods->routines[29]))) (self,action,x,y,numberOfClicks))
#define treev_DesiredSize(self,width,height,pass,dWidth,dheight) \
    ((* ((enum view_DSattributes (*)())((self)->header.treev_methods->routines[30]))) (self,width,height,pass,dWidth,dheight))
#define treev_GetOrigin(self,width,height,originX,originY) \
    ((* ((void (*)())((self)->header.treev_methods->routines[31]))) (self,width,height,originX,originY))
#define treev_ReceiveInputFocus(self) \
    ((* ((void (*)())((self)->header.treev_methods->routines[32]))) (self))
#define treev_LoseInputFocus(self) \
    ((* ((void (*)())((self)->header.treev_methods->routines[33]))) (self))
#define treev_ReceiveColormap(self,cmap) \
    ((* ((void (*)())((self)->header.treev_methods->routines[34]))) (self,cmap))
#define treev_LoseColormap(self,cmap) \
    ((* ((void (*)())((self)->header.treev_methods->routines[35]))) (self,cmap))
#define treev_WantUpdate(self,requestor) \
    ((* ((void (*)())((self)->header.treev_methods->routines[36]))) (self,requestor))
#define treev_WantInputFocus(self,requestor) \
    ((* ((void (*)())((self)->header.treev_methods->routines[37]))) (self,requestor))
#define treev_WantColormap(self,requestor,cmap) \
    ((* ((void (*)())((self)->header.treev_methods->routines[38]))) (self,requestor,cmap))
#define treev_WantNewSize(self,requestor) \
    ((* ((void (*)())((self)->header.treev_methods->routines[39]))) (self,requestor))
#define treev_WantHandler(self,handlerName) \
    ((* ((struct basicobject * (*)())((self)->header.treev_methods->routines[40]))) (self,handlerName))
#define treev_WantInformation(self,key) \
    ((* ((char * (*)())((self)->header.treev_methods->routines[41]))) (self,key))
#define treev_PostKeyState(self,keystate) \
    ((* ((void (*)())((self)->header.treev_methods->routines[42]))) (self,keystate))
#define treev_PostMenus(self,menulist) \
    ((* ((void (*)())((self)->header.treev_methods->routines[43]))) (self,menulist))
#define treev_PostCursor(self,rec,cursor) \
    ((* ((void (*)())((self)->header.treev_methods->routines[44]))) (self,rec,cursor))
#define treev_RetractCursor(self,cursor) \
    ((* ((void (*)())((self)->header.treev_methods->routines[45]))) (self,cursor))
#define treev_RetractViewCursors(self,requestor) \
    ((* ((void (*)())((self)->header.treev_methods->routines[46]))) (self,requestor))
#define treev_PostDefaultHandler(self,handlerName,handler) \
    ((* ((void (*)())((self)->header.treev_methods->routines[47]))) (self,handlerName,handler))
#define treev_GetInterface(self,type) \
    ((* ((struct scrollfns * (*)())((self)->header.treev_methods->routines[48]))) (self,type))
#define treev_LinkTree(self,parent) \
    ((* ((void (*)())((self)->header.treev_methods->routines[49]))) (self,parent))
#define treev_UnlinkTree(self) \
    ((* ((void (*)())((self)->header.treev_methods->routines[50]))) (self))
#define treev_IsAncestor(self,possibleAncestor) \
    ((* ((boolean (*)())((self)->header.treev_methods->routines[51]))) (self,possibleAncestor))
#define treev_UnlinkNotification(self,unlinkedTree) \
    ((* ((void (*)())((self)->header.treev_methods->routines[52]))) (self,unlinkedTree))
#define treev_GetWindowManagerType(self) \
    ((* ((char * (*)())((self)->header.treev_methods->routines[53]))) (self))
#define treev_GetDevice(self) \
    ((* ((long (*)())((self)->header.treev_methods->routines[54]))) (self))
#define treev_InitChildren(self) \
    ((* ((void (*)())((self)->header.treev_methods->routines[55]))) (self))
#define treev_CanView(self,TypeName) \
    ((* ((boolean (*)())((self)->header.treev_methods->routines[56]))) (self,TypeName))
#define treev_LoseSelectionOwnership(self) \
    ((* ((void (*)())((self)->header.treev_methods->routines[57]))) (self))
#define treev_WriteSelection(self,out) \
    ((* ((long (*)())((self)->header.treev_methods->routines[58]))) (self,out))
#define treev_MoveToPt(self,Pt) \
 (graphic_MoveToPt(((&(self)->header.view))->drawable,(Pt)))
#define treev_MoveTo(self,NewX,NewY) \
 (graphic_MoveTo(((&(self)->header.view))->drawable,(NewX),(NewY)))
#define treev_Move(self,DeltaX,DeltaY) \
 (graphic_Move(((&(self)->header.view))->drawable,(DeltaX),(DeltaY)))
#define treev_GetLogicalBounds(self,Rect) \
 (graphic_GetLogicalBounds(((&(self)->header.view))->drawable,(Rect)))
#define treev_GetLogicalBoundsSize(self,x,y,width,height) \
 (graphic_GetLogicalBoundsSize(((&(self)->header.view))->drawable,(x),(y),(width),(height)))
#define treev_GetLogicalRight(self) \
 (graphic_GetLogicalRight(((&(self)->header.view))->drawable))
#define treev_GetLogicalBottom(self) \
 (graphic_GetLogicalBottom(((&(self)->header.view))->drawable))
#define treev_GetLogicalLeft(self) \
 (graphic_GetLogicalLeft(((&(self)->header.view))->drawable))
#define treev_GetLogicalHeight(self) \
 (graphic_GetLogicalHeight((((&(self)->header.view))->drawable)))
#define treev_GetLogicalWidth(self) \
 (graphic_GetLogicalWidth((((&(self)->header.view))->drawable)))
#define treev_GetLogicalTop(self) \
 (graphic_GetLogicalTop((((&(self)->header.view))->drawable)))
#define treev_SetVisualRegion(self,region) \
 (graphic_SetVisualRegion(((&(self)->header.view))->drawable, (region)))
#define treev_GetVisualRegion(self,region) \
 (graphic_GetVisualRegion(((&(self)->header.view))->drawable, (region)))
#define treev_GetVisualBounds(self,Rect) \
 (graphic_GetVisualBounds(((&(self)->header.view))->drawable,(Rect)))
#define treev_GetVisualBoundsSize(self,x,y,width,height) \
 (graphic_GetVisualBoundsSize(((&(self)->header.view))->drawable,(x),(y),(width),(height)))
#define treev_GetVisualRight(self) \
 (graphic_GetVisualRight(((&(self)->header.view))->drawable))
#define treev_GetVisualBottom(self) \
 (graphic_GetVisualBottom(((&(self)->header.view))->drawable))
#define treev_GetVisualWidth(self) \
 (graphic_GetVisualWidth((((&(self)->header.view))->drawable)))
#define treev_GetVisualHeight(self) \
 (graphic_GetVisualHeight((((&(self)->header.view))->drawable)))
#define treev_GetVisualLeft(self) \
 (graphic_GetVisualLeft((((&(self)->header.view))->drawable)))
#define treev_GetVisualTop(self) \
 (graphic_GetVisualTop((((&(self)->header.view))->drawable)))
#define treev_GetEnclosedBounds(self,Rect) \
 (graphic_GetEnclosedBounds(((&(self)->header.view))->drawable, (Rect)))
#define treev_GetEnclosedBoundsSize(self,x,y,width,height) \
 (graphic_GetEnclosedBoundsSize(((&(self)->header.view))->drawable,(x),(y),(width),(height)))
#define treev_GetEnclosedRight(self) \
 (graphic_GetEnclosedRight(((&(self)->header.view))->drawable))
#define treev_GetEnclosedBottom(self) \
 (graphic_GetEnclosedBottom(((&(self)->header.view))->drawable))
#define treev_GetEnclosedLeft(self) \
 (graphic_GetEnclosedLeft((((&(self)->header.view))->drawable)))
#define treev_GetEnclosedTop(self) \
 (graphic_GetEnclosedTop((((&(self)->header.view))->drawable)))
#define treev_GetEnclosedWidth(self) \
 (graphic_GetEnclosedWidth((((&(self)->header.view))->drawable)))
#define treev_GetEnclosedHeight(self) \
 (graphic_GetEnclosedHeight((((&(self)->header.view))->drawable)))
#define treev_GetCurrentPt(self,Pt) \
 (graphic_GetCurrentPt(((&(self)->header.view))->drawable,(Pt)))
#define treev_DrawLineToPt(self,LineEnd) \
 (graphic_DrawLineToPt(((&(self)->header.view))->drawable,(LineEnd)))
#define treev_DrawLineTo(self,XEnd,YEnd) \
 (graphic_DrawLineTo(((&(self)->header.view))->drawable,(XEnd), (YEnd)))
#define treev_DrawLine(self,DeltaX,DeltaY) \
 (graphic_DrawLine(((&(self)->header.view))->drawable, (DeltaX), (DeltaY)))
#define treev_DrawString(self,Text,Operation) \
 (graphic_DrawString(((&(self)->header.view))->drawable, (Text), (Operation)))
#define treev_DrawText(self,Text,TextLength,Operation) \
 (graphic_DrawText(((&(self)->header.view))->drawable, (Text), (TextLength), (Operation)))
#define treev_SetSpaceShim(self,Amount) \
 (graphic_SetSpaceShim(((&(self)->header.view))->drawable,(Amount)))
#define treev_GetSpaceShim(self) \
 (graphic_GetSpaceShim(((&(self)->header.view))->drawable))
#define treev_SetFont(self,ChosenFont) \
 (graphic_SetFont(((&(self)->header.view))->drawable, (ChosenFont)))
#define treev_GetFont(self) \
 (graphic_GetFont(((&(self)->header.view))->drawable))
#define treev_DrawRect(self,Rect) \
 (graphic_DrawRect(((&(self)->header.view))->drawable,(Rect)))
#define treev_DrawRectSize(self,x,y,width,height) \
 (graphic_DrawRectSize(((&(self)->header.view))->drawable,(x),(y),(width),(height)))
#define treev_DrawTrapezoid(self,topX,topY,topWidth,bottomX,bottomY,bottomWidth) \
 (graphic_DrawTrapezoid(((&(self)->header.view))->drawable,(topX),(topY),(topWidth),(bottomX),(bottomY),(bottomWidth)))
#define treev_DrawPolygon(self,PointArray,PointCount) \
 (graphic_DrawPolygon(((&(self)->header.view))->drawable,(PointArray), (PointCount)))
#define treev_DrawPath(self,PointArray,PointCount) \
 (graphic_DrawPath(((&(self)->header.view))->drawable,(PointArray), (PointCount)))
#define treev_DrawOval(self,Rect) \
 (graphic_DrawOval(((&(self)->header.view))->drawable,(Rect)))
#define treev_DrawOvalSize(self,x,y,width,height) \
 (graphic_DrawOvalSize(((&(self)->header.view))->drawable, (x), (y), (width), (height)))
#define treev_DrawArc(self,EnclRect,StartAngle,OffsetAngle) \
 (graphic_DrawArc(((&(self)->header.view))->drawable,(EnclRect),(StartAngle),(OffsetAngle)))
#define treev_DrawArcSize(self,x,y,width,height,StartAngle,OffsetAngle) \
 (graphic_DrawArcSize(((&(self)->header.view))->drawable, (x), (y), (width), (height), (StartAngle), (OffsetAngle)))
#define treev_DrawRRect(self,OuterBox,InnerBox) \
 (graphic_DrawRRect(((&(self)->header.view))->drawable, (OuterBox), (InnerBox)))
#define treev_DrawRRectSize(self,x,y,width,height,cornerWidth,cornerHeight) \
 (graphic_DrawRRectSize(((&(self)->header.view))->drawable, (x), (y), (width), (height), (cornerWidth), (cornerHeight)))
#define treev_DrawRgn(self,Rgn) \
 (graphic_DrawRgn(((&(self)->header.view))->drawable,(Rgn)))
#define treev_FillRect(self,Rect,Tile) \
 (graphic_FillRect(((&(self)->header.view))->drawable, (Rect),(Tile)))
#define treev_FillRectSize(self,x,y,width,height,Tile) \
 (graphic_FillRectSize(((&(self)->header.view))->drawable, (x), (y), (width), (height), (Tile)))
#define treev_FillTrapezoid(self,topX,topY,topWidth,bottomX,bottomY,bottomWidth,Tile) \
 (graphic_FillTrapezoid(((&(self)->header.view))->drawable, (topX), (topY), (topWidth), (bottomX), (bottomY), (bottomWidth), (Tile)))
#define treev_FillPolygon(self,PointArray,PointCount,Tile) \
 (graphic_FillPolygon(((&(self)->header.view))->drawable, (PointArray), (PointCount), (Tile)))
#define treev_FillOval(self,Rect,Tile) \
 (graphic_FillOval(((&(self)->header.view))->drawable, (Rect), (Tile)))
#define treev_FillOvalSize(self,x,y,width,height,Tile) \
 (graphic_FillOvalSize(((&(self)->header.view))->drawable, (x), (y), (width), (height), (Tile)))
#define treev_FillArc(self,EnclRect,StartAngle,OffsetAngle,Tile) \
 (graphic_FillArc(((&(self)->header.view))->drawable, (EnclRect), (StartAngle), (OffsetAngle),(Tile)))
#define treev_FillArcSize(self,x,y,width,height,StartAngle,OffsetAngle,Tile) \
 (graphic_FillArcSize(((&(self)->header.view))->drawable, (x), (y), (width), (height), (StartAngle), (OffsetAngle), (Tile)))
#define treev_FillRRect(self,OuterBox,InnerBox,Tile) \
 (graphic_FillRRect(((&(self)->header.view))->drawable, (OuterBox), (InnerBox), (Tile)))
#define treev_FillRRectSize(self,x,y,width,height,cornerWidth,cornerHeight,Tile) \
 (graphic_FillRRectSize(((&(self)->header.view))->drawable, (x), (y), (width), (height), (cornerWidth), (cornerHeight), (Tile)))
#define treev_FillRgn(self,Rgn,Tile) \
 (graphic_FillRgn(((&(self)->header.view))->drawable, (Rgn), (Tile)))
#define treev_EraseRect(self,Rect) \
 (graphic_EraseRect(((&(self)->header.view))->drawable, (Rect)))
#define treev_EraseRectSize(self,x,y,width,height) \
 (graphic_EraseRectSize(((&(self)->header.view))->drawable, (x), (y), (width), (height)))
#define treev_EraseVisualRect(self) \
 (graphic_EraseVisualRect(((&(self)->header.view))->drawable))
#define treev_BitBlt(self,SrcRect,DestView,DstOrigin,ClipRectList) \
 (graphic_BitBlt(((&(self)->header.view))->drawable,(SrcRect), (((struct view *)(DestView))->drawable), (DstOrigin), (ClipRectList)))
#define treev_BitBltSize(self,srcX,srcY,dstX,dstY,Width,Height,DstView,clipX,clipY,clipWidth,clipHeight) \
 (graphic_BitBltSize(((&(self)->header.view))->drawable, (srcX), (srcY), (dstX), (dstY), (Width),(Height), (((struct view*)(DstView))->drawable), (clipX),(clipY), (clipWidth), (clipHeight)))
#define treev_SetBitAtLoc(self,XPos,YPos,NewValue) \
 (graphic_SetBitAtLoc(((&(self)->header.view))->drawable, (XPos), (YPos), (NewValue)))
#define treev_MoveLogicalOrigin(self,DeltaX,DeltaY) \
 (graphic_MoveLogicalOrigin(((&(self)->header.view))->drawable,(DeltaX), (DeltaY)))
#define treev_SetLogicalOrigin(self,NewX,NewY) \
 (graphic_SetLogicalOrigin(((&(self)->header.view))->drawable,(NewX), (NewY)))
#define treev_SetLogicalOriginPt(self,Pt) \
 (graphic_SetLogicalOriginPt(((&(self)->header.view))->drawable,(Pt)))
#define treev_SetClippingRegion(self,region) \
 (graphic_SetClippingRegion(((&(self)->header.view))->drawable, (region)))
#define treev_GetClippingRegion(self,region) \
 (graphic_GetClippingRegion(((&(self)->header.view))->drawable, (region)))
#define treev_SetClippingRect(self,ClipRect) \
 (graphic_SetClippingRect(((&(self)->header.view))->drawable,(ClipRect)))
#define treev_SetClippingRectSize(self,x,y,width,height) \
 (graphic_SetClippingRectSize(((&(self)->header.view))->drawable,(x),(y),(width),(height)))
#define treev_ClearClippingRect(self) \
 (graphic_ClearClippingRect(((&(self)->header.view))->drawable))
#define treev_GetClippingRect(self,Rect) \
 (graphic_GetClippingRect(((&(self)->header.view))->drawable,(Rect)))
#define treev_SetLineWidth(self,NewLineWidth) \
 (graphic_SetLineWidth(((&(self)->header.view))->drawable, (NewLineWidth)))
#define treev_GetLineWidth(self) \
 (graphic_GetLineWidth(((&(self)->header.view))->drawable))
#define treev_SetLineDash(self,dashPattern,dashOffset,dashType) \
 (graphic_SetLineDash(((&(self)->header.view))->drawable, (dashPattern), (dashOffset), (dashType)))
#define treev_GetLineDash(self,dashPattern,dashOffset,dashType) \
 (graphic_GetLineDash(((&(self)->header.view))->drawable, (dashPattern), (dashOffset), (dashType)))
#define treev_SetLineCap(self,NewLineCap) \
 (graphic_SetLineCap(((&(self)->header.view))->drawable, (NewLineCap)))
#define treev_GetLineCap(self) \
 (graphic_GetLineCap(((&(self)->header.view))->drawable))
#define treev_SetLineJoin(self,NewLineJoin) \
 (graphic_SetLineJoin(((&(self)->header.view))->drawable, (NewLineJoin)))
#define treev_GetLineJoin(self) \
 (graphic_GetLineJoin(((&(self)->header.view))->drawable))
#define treev_SetTransferMode(self,NewTransferMode) \
 (graphic_SetTransferMode(((&(self)->header.view))->drawable, (NewTransferMode)))
#define treev_GetTransferMode(self) \
 (graphic_GetTransferMode(((&(self)->header.view))->drawable))
#define treev_FlushGraphics(self) \
 (graphic_FlushGraphics(((&(self)->header.view))->drawable))
#define treev_WhitePattern(self) \
 (graphic_WhitePattern(((&(self)->header.view))->drawable))
#define treev_BlackPattern(self) \
 (graphic_BlackPattern(((&(self)->header.view))->drawable))
#define treev_GrayPattern(self,IntensityNum,IntensityDenom) \
 (graphic_GrayPattern(((&(self)->header.view))->drawable, (IntensityNum), (IntensityDenom)))
#define treev_SetPatternOrigin(self,xpos,ypos) \
  (graphic_SetPatternOrigin(((&(self)->header.view))->drawable, (xpos), (ypos)))
#define treev_GetPatternOrigin(self,xpos,ypos) \
  (graphic_GetPatternOrigin(((&(self)->header.view))->drawable, (xpos), (ypos)))
#define treev_SetForegroundColor(self,colorName,red,green,blue) \
 (graphic_SetForegroundColor(((&(self)->header.view))->drawable, (colorName), (red), (green), (blue)))
#define treev_GetForegroundColor(self,name,retred,retgreen,retblue) \
     (graphic_GetForegroundColor(((&(self)->header.view))->drawable, (name), (retred), (retgreen), (retblue)))
#define treev_SetBackgroundColor(self,colorName,red,green,blue) \
 (graphic_SetBackgroundColor(((&(self)->header.view))->drawable, (colorName), (red),(green),(blue)))
#define treev_GetBackgroundColor(self,name,retred,retgreen,retblue) \
 (graphic_GetBackgroundColor(((&(self)->header.view))->drawable, (name), (retred), (retgreen),(retblue)))
#define treev_SetFGColor(self,red,green,blue) \
 (graphic_SetFGColor(((&(self)->header.view))->drawable,(red),(green),(blue)))
#define treev_GetFGColor(self,red,green,blue) \
 (graphic_GetFGColor(((&(self)->header.view))->drawable,(red),(green),(blue)))
#define treev_SetBGColor(self,red,green,blue) \
 (graphic_SetBGColor(((&(self)->header.view))->drawable,(red),(green),(blue)))
#define treev_GetBGColor(self,red,green,blue) \
 (graphic_GetBGColor(((&(self)->header.view))->drawable,(red),(green),(blue)))
#define treev_GetHorizontalResolution(self) \
 (graphic_GetHorizontalResolution(((&(self)->header.view))->drawable))
#define treev_GetVerticalResolution(self) \
 (graphic_GetVerticalResolution(((&(self)->header.view))->drawable))
#define treev_GetIM(self) \
 (((&(self)->header.view))->imPtr)
#define treev_GetDrawable(self) \
 (((&(self)->header.view))->drawable)
#define treev_GetColormap(self) \
 (graphic_GetColormap(((&(self)->header.view))->drawable))
#define treev_SetColormap(self,cmap) \
 (graphic_SetColormap(((&(self)->header.view))->drawable, cmap))
#define treev_GetInheritedColormap(self) \
 (graphic_GetInheritedColormap(((&(self)->header.view))->drawable))
#define treev_SetInheritedColormap(self,cmap) \
 (graphic_SetInheritedColormap(((&(self)->header.view))->drawable, cmap))
#define treev_ClearInheritedColormap(self) \
 (graphic_ClearInheritedColormap(((&(self)->header.view))->drawable))
#define treev_CurrentColormap(self) \
 (graphic_CurrentColormap(((&(self)->header.view))->drawable))
#define treev_EnclosedXToLocalX(self,xvalue) \
   ((xvalue)-graphic_GetEnclosedLeft(((&(self)->header.view))->drawable)+graphic_GetLogicalLeft(((&(self)->header.view))->drawable))
#define treev_EnclosedYToLocalY(self,yvalue) \
    ((yvalue)-graphic_GetEnclosedTop(((&(self)->header.view))->drawable)+graphic_GetLogicalTop(((&(self)->header.view))->drawable))
#define treev_GetDataObject(self) \
 (((&(self)->header.view))->dataobject)
#define treev_DisplayClass(self) \
 (graphic_DisplayClass(((&(self)->header.view))->drawable ))
#define treev_ClearColors(self) \
 (graphic_ClearColors(((&(self)->header.view))->drawable))
#define treev_SetOptions(self,options) \
    ((* ((void (*)())((self)->header.treev_methods->routines[59]))) (self,options))
#define treev_SetDimensions(self,width,height) \
    ((* ((void (*)())((self)->header.treev_methods->routines[60]))) (self,width,height))
#define treev_BuildFont(self,font_name,height) \
    ((* ((struct fontdesc * (*)())((self)->header.treev_methods->routines[61]))) (self,font_name,height))
#define treev_DrawBoundedString(self,string,font,bounds,center,middle,mode) \
    ((* ((void (*)())((self)->header.treev_methods->routines[62]))) (self,string,font,bounds,center,middle,mode))
#define treev_ClearBoundedString(self,string,font,bounds,center,middle,mode) \
    ((* ((void (*)())((self)->header.treev_methods->routines[63]))) (self,string,font,bounds,center,middle,mode))
#define treev_Within(self,x,y,bounds) \
    ((* ((boolean (*)())((self)->header.treev_methods->routines[64]))) (self,x,y,bounds))
#define treev_SetShrinkIcon(self,icon,icon_font_name,title,title_font_name) \
    ((* ((void (*)())((self)->header.treev_methods->routines[65]))) (self,icon,icon_font_name,title,title_font_name))
#define treev_Shrink(self) \
    ((* ((void (*)())((self)->header.treev_methods->routines[66]))) (self))
#define treev_ShrinkView(self,aptv) \
    ((* ((void (*)())((self)->header.treev_methods->routines[67]))) (self,aptv))
#define treev_Expand(self) \
    ((* ((void (*)())((self)->header.treev_methods->routines[68]))) (self))
#define treev_ExpandView(self,aptv) \
    ((* ((void (*)())((self)->header.treev_methods->routines[69]))) (self,aptv))
#define treev_ClearBody(self) \
    ((* ((void (*)())((self)->header.treev_methods->routines[70]))) (self))
#define treev_PrintObject(self,file,processor,finalFormat,topLevel,printer) \
    ((* ((void (*)())((self)->header.treev_methods->routines[71]))) (self,file,processor,finalFormat,topLevel,printer))
#define treev_PrintContinue(self) \
    ((* ((void (*)())((self)->header.treev_methods->routines[72]))) (self))
#define treev_OpenPrintStream(self,file,processor,format,level) \
    ((* ((boolean (*)())((self)->header.treev_methods->routines[73]))) (self,file,processor,format,level))
#define treev_ClosePrintStream(self) \
    ((* ((void (*)())((self)->header.treev_methods->routines[74]))) (self))
#define treev_SetPrintStream(self,stream) \
    ((* ((void (*)())((self)->header.treev_methods->routines[75]))) (self,stream))
#define treev_PreservePrintState(self) \
    ((* ((void (*)())((self)->header.treev_methods->routines[76]))) (self))
#define treev_RestorePrintState(self) \
    ((* ((void (*)())((self)->header.treev_methods->routines[77]))) (self))
#define treev_PrintBox(self,left,top,width,height,mode) \
    ((* ((void (*)())((self)->header.treev_methods->routines[78]))) (self,left,top,width,height,mode))
#define treev_PrintRoundBox(self,left,top,width,height,mode) \
    ((* ((void (*)())((self)->header.treev_methods->routines[79]))) (self,left,top,width,height,mode))
#define treev_PrintFilledRoundBox(self,left,top,width,height,mode,shade) \
    ((* ((void (*)())((self)->header.treev_methods->routines[80]))) (self,left,top,width,height,mode,shade))
#define treev_PrintLine(self,x1,y1,x2,y2) \
    ((* ((void (*)())((self)->header.treev_methods->routines[81]))) (self,x1,y1,x2,y2))
#define treev_PrintCircle(self,x1,y1,radius) \
    ((* ((void (*)())((self)->header.treev_methods->routines[82]))) (self,x1,y1,radius))
#define treev_PrintSlice(self,x1,y1,radius,start_angle,end_angle,shade_numerator,shade_denominator,mode) \
    ((* ((void (*)())((self)->header.treev_methods->routines[83]))) (self,x1,y1,radius,start_angle,end_angle,shade_numerator,shade_denominator,mode))
#define treev_PrintMoveTo(self,x,y) \
    ((* ((void (*)())((self)->header.treev_methods->routines[84]))) (self,x,y))
#define treev_PrintLineTo(self,x,y) \
    ((* ((void (*)())((self)->header.treev_methods->routines[85]))) (self,x,y))
#define treev_SetPrintOrigin(self,left,top) \
    ((* ((void (*)())((self)->header.treev_methods->routines[86]))) (self,left,top))
#define treev_SetPrintUnitDimensions(self,inch_width,inch_height) \
    ((* ((void (*)())((self)->header.treev_methods->routines[87]))) (self,inch_width,inch_height))
#define treev_SetPrintPageDimensions(self,inch_width,inch_height) \
    ((* ((void (*)())((self)->header.treev_methods->routines[88]))) (self,inch_width,inch_height))
#define treev_SetPrintResolution(self,pixels_per_inch) \
    ((* ((void (*)())((self)->header.treev_methods->routines[89]))) (self,pixels_per_inch))
#define treev_SetPrintOptions(self,options) \
    ((* ((void (*)())((self)->header.treev_methods->routines[90]))) (self,options))
#define treev_SetPrintLineWidth(self,width) \
    ((* ((void (*)())((self)->header.treev_methods->routines[91]))) (self,width))
#define treev_SetPrintGrayLevel(self,level) \
    ((* ((void (*)())((self)->header.treev_methods->routines[92]))) (self,level))
#define treev_SetPrintPath(self,path) \
    ((* ((void (*)())((self)->header.treev_methods->routines[93]))) (self,path))
#define treev_PrintPath(self,path) \
    ((* ((void (*)())((self)->header.treev_methods->routines[94]))) (self,path))
#define treev_PrintPathFilled(self,path) \
    ((* ((void (*)())((self)->header.treev_methods->routines[95]))) (self,path))
#define treev_SetPrintFont(self,font_name) \
    ((* ((void (*)())((self)->header.treev_methods->routines[96]))) (self,font_name))
#define treev_ResetPrintFont(self) \
    ((* ((void (*)())((self)->header.treev_methods->routines[97]))) (self))
#define treev_PrintString(self,x1,y1,string,mode) \
    ((* ((void (*)())((self)->header.treev_methods->routines[98]))) (self,x1,y1,string,mode))
#define treev_SetHelpString(self,string) \
    ((* ((void (*)())((self)->header.treev_methods->routines[99]))) (self,string))
#define treev_SetHelpFileName(self,file_name) \
    ((* ((void (*)())((self)->header.treev_methods->routines[100]))) (self,file_name))
#define treev_UseWaitCursor(self) \
    ((* ((void (*)())((self)->header.treev_methods->routines[101]))) (self))
#define treev_UseNormalCursor(self) \
    ((* ((void (*)())((self)->header.treev_methods->routines[102]))) (self))
#define treev_UseInvisibleCursor(self) \
    ((* ((void (*)())((self)->header.treev_methods->routines[103]))) (self))
#define treev_Query(self,query,default_response,response) \
    ((* ((long (*)())((self)->header.treev_methods->routines[104]))) (self,query,default_response,response))
#define treev_QueryFileName(self,query,response) \
    ((* ((long (*)())((self)->header.treev_methods->routines[105]))) (self,query,response))
#define treev_QueryDirectoryName(self,query,response) \
    ((* ((long (*)())((self)->header.treev_methods->routines[106]))) (self,query,response))
#define treev_Announce(self,message) \
    ((* ((long (*)())((self)->header.treev_methods->routines[107]))) (self,message))
#define treev_IconFont(self) \
	    (((&(self)->header.aptv))->icon_font)
#define treev_CursorFont(self) \
	    (((&(self)->header.aptv))->cursor_font)
#define treev_PrintStream(self) \
	    (((&(self)->header.aptv))->print_stream)
#define treev_Bounds(self) \
	    (&((&(self)->header.aptv))->enclosures[0].bound)
#define treev_BodyBounds(self) \
	    (&((&(self)->header.aptv))->enclosures[5].bound)
#define treev_BodyLeft(self) \
	    (aptv_BodyBounds((&(self)->header.aptv))->left)
#define treev_BodyTop(self) \
	    (aptv_BodyBounds((&(self)->header.aptv))->top)
#define treev_BodyWidth(self) \
	    (aptv_BodyBounds((&(self)->header.aptv))->width)
#define treev_BodyHeight(self) \
	    (aptv_BodyBounds((&(self)->header.aptv))->height)
#define treev_BodyCenter(self) \
	    (aptv_BodyLeft((&(self)->header.aptv)) + aptv_BodyWidth((&(self)->header.aptv))/2)
#define treev_BodyRight(self) \
	    (aptv_BodyLeft((&(self)->header.aptv)) + aptv_BodyWidth((&(self)->header.aptv)) - 1)
#define treev_BodyMiddle(self) \
	    (aptv_BodyTop((&(self)->header.aptv))  + aptv_BodyHeight((&(self)->header.aptv))/2)
#define treev_BodyBottom(self) \
	    (aptv_BodyTop((&(self)->header.aptv))  + aptv_BodyHeight((&(self)->header.aptv)) - 1)
#define treev_BypassUpdate(self) \
    (((&(self)->header.aptv))->bypass_update)
#define treev_SetTreeAttribute(self,attribute_codevalue) \
    ((* ((long (*)())((self)->header.treev_methods->routines[108]))) (self,attribute_codevalue))
#define treev_TreeAttribute(self,attribute_code) \
    ((* ((long (*)())((self)->header.treev_methods->routines[109]))) (self,attribute_code))
#define treev_CurrentNode(self) \
    ((* ((struct tree_node * (*)())((self)->header.treev_methods->routines[110]))) (self))
#define treev_SetHitHandler(self,handler,anchor) \
    ((* ((void (*)())((self)->header.treev_methods->routines[111]))) (self,handler,anchor))
#define treev_SetDebug(self,state) \
    ((* ((void (*)())((self)->header.treev_methods->routines[112]))) (self,state))
#define treev_ExposeNode(self,node) \
    ((* ((void (*)())((self)->header.treev_methods->routines[113]))) (self,node))
#define treev_NodeExposed(self,node) \
    ((* ((boolean (*)())((self)->header.treev_methods->routines[114]))) (self,node))
#define treev_HideNode(self,node) \
    ((* ((void (*)())((self)->header.treev_methods->routines[115]))) (self,node))
#define treev_ExplodeNode(self,node) \
    ((* ((void (*)())((self)->header.treev_methods->routines[116]))) (self,node))
#define treev_NodeExploded(self,node) \
    ((* ((boolean (*)())((self)->header.treev_methods->routines[117]))) (self,node))
#define treev_ImplodeNode(self,node) \
    ((* ((void (*)())((self)->header.treev_methods->routines[118]))) (self,node))
#define treev_ExposeNodeChildren(self,node) \
    ((* ((void (*)())((self)->header.treev_methods->routines[119]))) (self,node))
#define treev_NodeChildrenExposed(self,node) \
    ((* ((boolean (*)())((self)->header.treev_methods->routines[120]))) (self,node))
#define treev_HideNodeChildren(self,node) \
    ((* ((void (*)())((self)->header.treev_methods->routines[121]))) (self,node))
#define treev_HighlightNode(self,node) \
    ((* ((void (*)())((self)->header.treev_methods->routines[122]))) (self,node))
#define treev_NodeHighlighted(self,node) \
    ((* ((boolean (*)())((self)->header.treev_methods->routines[123]))) (self,node))
#define treev_NormalizeNode(self,node) \
    ((* ((void (*)())((self)->header.treev_methods->routines[124]))) (self,node))
#define treev_HighlightNodeCaption(self,node) \
    ((* ((void (*)())((self)->header.treev_methods->routines[125]))) (self,node))
#define treev_NodeCaptionHighlighted(self,node) \
    ((* ((boolean (*)())((self)->header.treev_methods->routines[126]))) (self,node))
#define treev_NormalizeNodeCaption(self,node) \
    ((* ((void (*)())((self)->header.treev_methods->routines[127]))) (self,node))

#define treev_NewFromObject(self) \
    ((* ((struct treev * (*)())((self)->header.treev_methods->info->procs->routines[0]))) (&treev_classheader, (self)->header.treev_methods->info->versionnumber))
#define treev_New() \
    (*((struct treev * (*)()) (treev_CLASSPROCEDURES->routines[0])))(&treev_classheader,treev_VERSION)
#define treev_Initialize(self) \
    (*((void (*)()) (treev_CLASSPROCEDURES->routines[2])))(&treev_classheader,self, treev_VERSION)

#define treev_Destroy(self) \
    ((* ((void (*)()) ((self)->header.treev_methods->info->procs->routines[1]))) (&treev_classheader, self))
#define treev_Finalize(self) \
    (*((void (*)()) (treev_CLASSPROCEDURES->routines[3])))(&treev_classheader,self)

#define treev_InitializeObject(self) \
    (*((boolean (*)()) (treev_CLASSPROCEDURES->routines[5])))(&treev_classheader,self)
#define treev_FinalizeObject(self) \
    (*((void (*)()) (treev_CLASSPROCEDURES->routines[6])))(&treev_classheader,self)
#define treev_Create(treev_Specification,anchor) \
    (*((struct treev * (*)()) (treev_CLASSPROCEDURES->routines[7])))(&treev_classheader,treev_Specification,anchor)


#endif /* !defined(treev_ROUTINESDEFINED) && !defined(dontDefineRoutinesFor_treev ) && !defined(class_StaticEntriesOnly)*/

