        IFND    LIBRARIES_TRACKER_I
LIBRARIES_TRACKER_I: SET 1

**
**      Filename: libraries/tracker.i
**      Revision: 6.8
**      Date: 93/06/11
**
**      Definitions for use when using tracker.library
**
**      (C) Arnold Schommer
**          Erikaweg 16
**          40670 Meerbusch-Strümp, Germany
**

        IFND    EXEC_TYPES_I
        INCLUDE "exec/types.i"
        ENDC
        IFND    EXEC_LIBRARIES_I
        INCLUDE "exec/libraries.i"
        ENDC
        IFND    EXEC_ALERTS
        INCLUDE "exec/alerts.i"
        ENDC

TRACKERNAME:    MACRO
                DC.B "tracker.library",0
                ENDM

CALLTRK: MACRO
        move.l  _TrackerBase,a6
        jsr     \1(a6)
        ENDM

TRK_OPENLIB: MACRO
        lea     \1,a1
        IFC     '\2',''
        moveq   #0,d0
        ENDC
        IFNC    '\2',''
        moveq   #\2,d0
        ENDC
        CALLTRK TRK_OpenLibrary
        ENDM
TRK_OPENSTDLIB: MACRO
        move.l  #STDLIB_\1,d1
        IFC     '\2',''
        moveq   #0,d0
        ENDC
        IFNC    '\2',''
        moveq   #\2,d0
        ENDC
        CALLTRK TRK_OpenStdLibrary
        ENDM

 LIBINIT
 LIBDEF _LVOTRK_OpenLibrary         ; (a1=name,d0=version)
 LIBDEF _LVOTRK_OpenStdLibrary      ; (d1=number,d0=version)
 LIBDEF _LVOTRK_CloseLibrary        ; (a1=library)
 LIBDEF _LVOTRK_AllocMem            ; (d0=bytes,d1=type)
 LIBDEF _LVOTRK_FreeMem             ; (a1=memory)
 LIBDEF _LVOTRK_OpenDevice          ; (a0=name,d0=unit,a1=IORequest,d1=flags)
 LIBDEF _LVOTRK_CloseDevice         ; (a1=IORequest)
 LIBDEF _LVOTRK_CreatePort          ; (a0=name,d0=priority)
 LIBDEF _LVOTRK_DeletePort          ; (a0=port)
 LIBDEF _LVOTRK_CreateExtIO         ; (a0=ReplyPort,d0.w=size)
 LIBDEF _LVOTRK_DeleteExtIO         ; (a0=IORequest)
 LIBDEF _LVOTRK_GetWBMsg            ; ()
 LIBDEF _LVOTRK_AllocSignal         ; (d0=number)
 LIBDEF _LVOTRK_FreeSignal          ; (d0=number)
 LIBDEF _LVOTRK_Open                ; (d1=name,d2=mode)
 LIBDEF _LVOTRK_OpenFromLock        ; (d1=lock)
 LIBDEF _LVOTRK_Close               ; (d1=fh)
 LIBDEF _LVOTRK_Lock                ; (d1=name,d2=mode)
 LIBDEF _LVOTRK_DupLock             ; (d1=lock)
 LIBDEF _LVOTRK_DupLockFromFH       ; (d1=fh)
 LIBDEF _LVOTRK_UnLock              ; (d1=lock)
 LIBDEF _LVOTRK_Examine             ; (d1=lock)
 LIBDEF _LVOTRK_ExamineFH           ; (d1=fh)
 LIBDEF _LVOTRK_ExamineName         ; (d1=name)
 LIBDEF _LVOTRK_ExNext              ; (d2=fib)
 LIBDEF _LVOTRK_FreeFIB             ; (d1=fib)
 LIBDEF _LVOTRK_Info                ; (d1=lock)
 LIBDEF _LVOTRK_InfoName            ; (d1=name)
 LIBDEF _LVOTRK_LoadSeg             ; (d1=name)
 LIBDEF _LVOTRK_NewLoadSeg          ; (d1=name,d2=tags)
 LIBDEF _LVOTRK_UnLoadSeg           ; (d1=seglist)
 LIBDEF _LVOTRK_AllocDosObject      ; (d1=type,d2=tags)
 LIBDEF _LVOTRK_FreeDosObject       ; (d2=dosobj)
 LIBDEF _LVOTRK_StartNotify         ; (d1=notifyrequest)
 LIBDEF _LVOTRK_EndNotify           ; (d1=notifyrequest)
 LIBDEF _LVOTRK_OpenFont            ; (a0=textattr)
 LIBDEF _LVOTRK_OpenDiskFont        ; (a0=textattr)
 LIBDEF _LVOTRK_CloseFont           ; (a1=textfont)
 LIBDEF _LVOTRK_AllocRaster         ; (d0=width,d1=height)
 LIBDEF _LVOTRK_FreeRaster          ; (a0=raster)
 LIBDEF _LVOTRK_GetSprite           ; (a0=sprite,d0=num)
 LIBDEF _LVOTRK_FreeSprite          ; (d0=num)
 LIBDEF _LVOTRK_OpenWindow          ; (a0=newwindow)
 LIBDEF _LVOTRK_OpenWindowTagList   ; (a0=newwindow,a1=tags)
 LIBDEF _LVOTRK_OpenWdOnPubScreen   ; (a0=newwindow,a2=pubscreen)
 LIBDEF _LVOTRK_OpenWdOnPSTagList   ; (a0=newwindow,a1=tags,a2=pubscreen)
 LIBDEF _LVOTRK_CloseWindow         ; (a0=window)
 LIBDEF _LVOTRK_OpenScreen          ; (a0=newscreen)
 LIBDEF _LVOTRK_OpenScreenTagList   ; (a0=newscreen,a1=tags)
 LIBDEF _LVOTRK_CloseScreen         ; (a0=screen)
 LIBDEF _LVOTRK_SetMenuStrip        ; (a0=window,a1=menu)
 LIBDEF _LVOTRK_ClearMenuStrip      ; (a0=window)
 LIBDEF _LVOTRK_ResetMenuStrip      ; (a0=window,a1=menu)
 LIBDEF _LVOTRK_Request             ; (a0=requester,a1=window)
 LIBDEF _LVOTRK_EndRequest          ; (a0=requester)
 LIBDEF _LVOTRK_SetDMRequest        ; (a0=window,a1=requester)
 LIBDEF _LVOTRK_ClearDMRequest      ; (a0=window)
 LIBDEF _LVOTRK_BuildSysRequest     ; (a0=window,a1=bodytext,a2=postext,
                                    ;  a3=negtext,d0=idcmp,d2=width,d3=height)
 LIBDEF _LVOTRK_FreeSysRequest      ; (a0=window)
 LIBDEF _LVOTRK_GetPrefs            ; (d0=size)
 LIBDEF _LVOTRK_GetDefPrefs         ; (d0=size)
 LIBDEF _LVOTRK_SetPrefs            ; (a0=prefs,d1=flag,d2=freeflag)
 LIBDEF _LVOTRK_FreePrefs           ; (a0=prefs)
 LIBDEF _LVOTRK_LockPubScreen       ; (a0=name)
 LIBDEF _LVOTRK_UnlockPubScreen     ; (a1=screen)
 LIBDEF _LVOTRK_GetScreenDrawInfo   ; (a0=screen)
 LIBDEF _LVOTRK_GetScDIPubScreen    ; (a0=psname)
 LIBSKIP 1
 LIBDEF _LVOTRK_FreeScreenDrawInfo  ; (a1=drawinfo)
 LIBDEF _LVOTRK_AddIntServer        ; (d0=intnum,a1=interrupt)
 LIBDEF _LVOTRK_RemIntServer        ; (a1=interrupt)
 LIBDEF _LVOTRK_AllocAslRequest     ; (d0=type,a0=ptags)
 LIBDEF _LVOTRK_FreeAslRequest      ; (a0=request)
 LIBDEF _LVOTRK_AllocFileRequest    ; ()
_LVOTRK_FreeFileRequest:        equ _LVOTRK_FreeAslRequest
 LIBDEF _LVOTRK_AslRequest          ; (d0=type,a1=ptags)
_LVOTRK_FreeRequest:            equ _LVOTRK_FreeAslRequest
 LIBDEF _LVOTRK_ReadArgs            ; (d1=template, d2=argarray, d3=rdargs)
 LIBDEF _LVOTRK_FreeArgs            ; (d1=rdargs)
 LIBDEF _LVOTRK_GetVisualInfoA      ; (a0=screen, a1=taglist)
 LIBDEF _LVOTRK_GetVIPubScreenA     ; (a0=psname, a1=taglist)
 LIBDEF _LVOTRK_FreeVisualInfoA     ; (a0=vi)
 LIBDEF _LVOTRK_CreateContext       ; (a0=glistptr)
 LIBDEF _LVOTRK_FreeGadgets         ; (a0=glist)
 LIBDEF _LVOTRK_CreateMenusA        ; (a0=newmenu, a1=taglist)
 LIBDEF _LVOTRK_FreeMenus           ; (a0=menu)

 LIBDEF _LVOSetTrackingLevel        ; (d0=newlevel)
 LIBDEF _LVOGetTrackingLevel        ; ()
 LIBDEF _LVOFreeTrackingLevel       ; (d0=level)
 LIBDEF _LVOFreeTrackingLevels      ; (d0=minlevel)
 LIBDEF _LVOFreeCurrentTrackingLevel; ()
 LIBDEF _LVOFreeUpperTrackingLevels ; ()
 LIBDEF _LVOPushTrackingLevel       ; ()
_LVOIncTrackingLevel:   EQU _LVOPushTrackingLevel
 LIBDEF _LVOPopTrackingLevel        ; ()
 LIBDEF _LVOPopTrackingLevels       ; ()
 LIBDEF _LVODecTrackingLevel        ; ()
 LIBDEF _LVOHighestTrackingLevel    ; ()
 LIBDEF _LVONewTrackingLevel        ; ()

 LIBDEF _LVOTRK_AllocIFF                ; ()
 LIBDEF _LVOTRK_FreeIFF                 ; (a0=iffhandle)
 LIBDEF _LVOTRK_OpenIFF                 ; (a0=iffhandle, d0=rwmode)
 LIBDEF _LVOTRK_CloseIFF                ; (a0=iffhandle)
 LIBDEF _LVOTRK_PushChunk               ; (a0=iffhandle, d0=type, d1=id,
                                        ;       d2=size)
 LIBDEF _LVOTRK_PopChunk                ; (a0=iffhandle)
 LIBDEF _LVOTRK_OpenClipboard           ; (d0=unit)
 LIBDEF _LVOTRK_CloseClipboard          ; (a0=clipboardhandle)
 LIBDEF _LVOTRK_AllocLocalItem          ; (d0=type, d1=id, d2=ident,
                                        ;  d3=usize)
 LIBDEF _LVOTRK_FreeLocalItem           ; (a0=LocalContextItem)
 LIBDEF _LVOTRK_CreateIFFasDOS          ; (d0=rwmode, a0=filename, d1=mode)
 LIBDEF _LVOTRK_DeleteDOSIFF            ; (a0=iffhandle)
 LIBDEF _LVOTRK_CreateIFFasClip         ; (d0=rwmode, d1=unit)
 LIBDEF _LVOTRK_DeleteClipIFF           ; (a0=iffhandle)

 LIBDEF _LVOTRK_GetDevice               ; (a0=name,d0=unit,d1=flags,
                                        ;  d2=ioreqsize)

 LIBDEF TRK_GetDiskObject               ; (a0=name)
 LIBDEF TRK_GetDefDiskObject            ; (d0=type)
 LIBDEF TRK_GetDiskObjectNew            ; (a0=name)
 LIBDEF TRK_PutDiskObject               ; (a0=name, a1=diskobj)
 LIBDEF TRK_PutDefDiskObject            ; (a0=diskobj)
 LIBDEF TRK_FreeDiskObject              ; (a0=diskobj)

; Schlüsselnummern für die Standard-Libraries bei TRK_OpenStdLibrary:
STDLIB_ASL:                     EQU 0
STDLIB_COMMODITIES:             EQU 4
;STDLIB_CX:                      EQU 8  ;gibt's garnicht !
STDLIB_DISKFONT:                EQU 12
STDLIB_DOS:                     EQU 16
STDLIB_EXPANSION:               EQU 20
STDLIB_GADTOOLS:                EQU 24
STDLIB_GRAPHICS:                EQU 28
STDLIB_ICON:                    EQU 32
STDLIB_IFFPARSE:                EQU 36
STDLIB_INFO                     EQU 40
STDLIB_INTUITION:               EQU 44
STDLIB_KEYMAP:                  EQU 48
STDLIB_LAYERS:                  EQU 52
STDLIB_MATHFFP:                 EQU 56
STDLIB_MATHIEEEDOUBBAS:         EQU 60
STDLIB_MATHIEEEDOUBTRANS:       EQU 64
STDLIB_MATHIEEESINGBAS:         EQU 68
STDLIB_MATHIEEESINGTRANS:       EQU 72
STDLIB_MATHTRANS:               EQU 76
STDLIB_REXXSUPPORT:             EQU 80
STDLIB_REXXSYSLIB:              EQU 84
STDLIB_TRANSLATOR:              EQU 88
STDLIB_UTILITY:                 EQU 92
STDLIB_VERSION                  EQU 96
STDLIB_WORKBENCH:               EQU 100
STDLIB_ARP:                     EQU 104
STDLIB_REQ:                     EQU 108
STDLIB_REQTOOLS:                EQU 112

; Kennung für TrackerLib-Alerts:
AN_TrackerLib:  EQU $0C000000
; Ein Task will auf die Library zugreifen, obwohl er sie nicht geöffnet hat:
AN_Tracker_illegal_Task:        EQU AT_DeadEnd!AN_TrackerLib!$01
; Etwas soll freigegeben werden, ist aber garnicht registriert:
AN_Tracker_double_free:         EQU AN_TrackerLib!$02
; Etwas von unbekanntem Typ soll freigegeben werden:
AN_Tracker_illegal_Type:        EQU AT_DeadEnd!AN_TrackerLib!$03
; Unterlauf des TrackingLevels (in DecTrackingLevel):
AN_Tracker_Level_underflow:     EQU AN_TrackerLib!$04
; Überlauf des TrackingLevels (in PushTrackingLevel):
AN_Tracker_Level_overflow:      EQU AN_TrackerLib!$05
; Kein freier TrackingLevel gefunden (in NewTrackingLevel):
AN_Tracker_Levels_full:         EQU AN_TrackerLib!$06

