This is MachOView.h in view mode; [Download] [Up]
#import <appkit/appkit.h> #import <MachOFile.h> #import <MappedFile.h> #import <Queue.h> #import <MachOViewwraps.h> /* $Id: MachOView.h,v 1.13 94/05/29 14:59:23 ediger Exp Locker: ediger $ */ /* $Log: MachOView.h,v $ * Revision 1.13 94/05/29 14:59:23 ediger * added support for drawing in section names * * Revision 1.12 94/05/23 20:32:37 ediger * stuff to support address bracket zoom-in * * Revision 1.11 94/05/17 23:08:53 ediger * support for stacking of zoomed address ranges, changed types of * some instance vars from id to pointer to that kind of object. * * Revision 1.10 94/05/10 22:41:28 ediger * support for showing a "zooming box" by mouse-down dragging * * Revision 1.9 94/05/04 11:20:40 ediger * support for drawing thread's program counter(s) * * Revision 1.8 94/05/01 17:33:12 ediger * efficiency improvements * * Revision 1.7 94/02/07 21:21:39 ediger * added instance var to hold a memory-mapped file. * added methods and change struct addressMapping so that segment names * can be displayed. * * Revision 1.6 94/01/30 21:29:39 ediger * ditched doFont pswrap function, added theFont Font object instance * to get the benefits of using a Font. * * Revision 1.5 94/01/30 16:29:04 ediger * some magic numbers relating to address label printing * * Revision 1.4 94/01/01 23:02:51 ediger * broke address label spacing calcs into separate method. * * Revision 1.3 93/12/30 19:01:09 ediger * support for showing upper and lower addresses of memor * mapped segments * * Revision 1.2 93/12/19 14:31:21 ediger * corrected scaling and inclusion of mapped segments of library files * * Revision 1.1 93/12/19 12:59:49 ediger * Initial revision * */ struct addressMapping { float yCoordBaseLabel; float yCoordTopLabel; float nameXcoord; float nameYcoord; unsigned long baseAddress; unsigned long endAddress; char *segmentName; float yCoordBase; float yCoordTop; struct sectionNameMapping *sectionMap; }; struct sectionNameMapping { float nameYcoord; unsigned long sectionAddress; char *sectionName; }; struct zoomAddress { unsigned long hiAddr; unsigned long loAddr; unsigned long sumAddr; }; /* some magic numbers relating to drawing */ #define LABEL_HT 12.0 #define LABEL_LEADING 1.0 #define LABEL_MARGIN 2.0 #define LINE_WDTH 5.0 #define LINE_STAGGER 7.0 #define SEGMENT_GAP 2.0 #define VERT_MARGIN 5.0 @interface MachOView:View { // ids to store "connections" built by Interface Builder id theWindow; id theFont; id cpuType; id cpuSubtype; id maxAddress; id minAddress; id zoomButton; id unzoomButton; id showSectionsButton; // ids to store objects used by MachOView to do stuff MachOFile *theFile; // represents Mach-O object file. MappedFile *mappedFile; // manages memory mapping/unmapping, Mach style. Queue *zoomStack; // stack of addresses that have been zoomed to. unsigned long hiAddr, hiAddrZoom; unsigned long loAddr, loAddrZoom; unsigned long sumAddr; char *currentFileName; float scaleSlope, scaleYintercept; float smashedSlope, smashedYintercept; struct addressMapping *addressMap; struct sectionNameMapping *sectionNames; // display options boolean state variables BOOL toScale; BOOL showLibraries; BOOL showAddresses; BOOL showNames; BOOL showThreads; BOOL showSectionNames; // drag out a rectangle for address zooming NXPoint sMouseDown, sFirstMouseDown; BOOL yLooping; } - free; - freeInternals; - findSizes; - rescale; - openFileNamed:(char *)fileName; - windowWillClose:sender; - initFrame:(const NXRect *)frameRect; - drawSelf:(NXRect *)rects :(int)rectCount; - mouseDown:(NXEvent *)theEvent; - drawThreads; - drawAddresses; - drawSegmentNames; - drawSectionNames; - show:sender; - (char *)fileType; - toggleScaling:sender; - toggleLibraries:sender; - toggleAddresses:sender; - toggleNames:sender; - toggleThreads:sender; - toggleSections:sender; - zoom:sender; - unzoom:sender; - spaceLabels; - spaceNames; - spaceSectionNames; @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.