mirror of
https://github.com/antoinevignau/source.git
synced 2025-01-02 06:30:17 +00:00
1 line
3.7 KiB
OpenEdge ABL
Executable File
1 line
3.7 KiB
OpenEdge ABL
Executable File
;
|
||
; Heap.aii.i
|
||
;
|
||
; Imports and macros for the Heap.
|
||
;
|
||
; Copyright © 1989, Claris Corporation
|
||
;
|
||
; 5/3/89 Kevin A. Watts from older H_Heap.aii.i and H_Block.aii.i
|
||
;
|
||
;----------------------------------------------------------------
|
||
|
||
IF &Type('&__FILE__') = 'UNDEFINED' THEN
|
||
gblc &__FILE__
|
||
&__FILE__ setc ''
|
||
ENDIF
|
||
|
||
H_TOO_OLD equ -1
|
||
H_TOO_NEW equ -2
|
||
H_BAD equ -3
|
||
|
||
IF &__FILE__ 'Heap' THEN
|
||
IMPORT H_Init
|
||
IMPORT H_CurrentHeap
|
||
IMPORT H_SetHeap
|
||
IMPORT H_UnsetHeap
|
||
IMPORT H_ResetHeap
|
||
IMPORT H_NewHeap
|
||
IMPORT H_DisposeHeap
|
||
IMPORT H_ReadHeap
|
||
IMPORT H_WriteHeap
|
||
ENDIF
|
||
|
||
IF &__FILE__ 'Block' THEN
|
||
IMPORT H_NewBlock
|
||
IMPORT H_DisposeBlock
|
||
IMPORT H_ResizeBlock
|
||
IMPORT H_CopyBlock
|
||
IMPORT H_GetBlockPtr
|
||
IMPORT H_GetBlockSize
|
||
IMPORT H_TruncHeap
|
||
ENDIF
|
||
|
||
;----------------------------------------------------------------
|
||
|
||
IF &__FILE__ 'Heap' AND &__FILE__ 'Block' THEN
|
||
MACRO
|
||
H_Init ; H_Init
|
||
jsl H_Init
|
||
ENDM
|
||
|
||
|
||
MACRO ; H_SetHeap
|
||
H_SetHeap &Heap
|
||
IF &Heap='' THEN
|
||
AERROR 'Bad usage of: H_SetHeap HeapID'
|
||
ENDIF
|
||
MoveLong &Heap,xy
|
||
jsl H_SetHeap
|
||
ENDM
|
||
|
||
|
||
MACRO ; H_UnsetHeap
|
||
H_UnsetHeap
|
||
jsl H_UnsetHeap
|
||
ENDM
|
||
|
||
|
||
MACRO ; H_ResetHeap
|
||
H_ResetHeap
|
||
jsl H_ResetHeap
|
||
ENDM
|
||
|
||
|
||
MACRO ; H_NewHeap
|
||
H_NewHeap &Heap,&err==
|
||
IF &Heap='' THEN
|
||
AERROR 'Bad usage of: H_NewHeap HeapID [,err=]'
|
||
ENDIF
|
||
jsl H_NewHeap
|
||
IF &err'' THEN
|
||
sty &err
|
||
ENDIF
|
||
MoveLong ax,&Heap
|
||
ENDM
|
||
|
||
|
||
MACRO ; H_DisposeHeap
|
||
H_DisposeHeap
|
||
jsl H_DisposeHeap
|
||
ENDM
|
||
|
||
|
||
MACRO ; H_WriteHeap
|
||
H_WriteHeap &FileID,&err==
|
||
IF &FileID='' THEN
|
||
AERROR 'Bad usage of: H_WriteHeap FileID [,err=]'
|
||
ENDIF
|
||
MoveWord &FileID,x
|
||
jsl H_WriteHeap
|
||
IF &err'' THEN
|
||
sty &err
|
||
ENDIF
|
||
ENDM
|
||
|
||
|
||
MACRO ; H_ReadHeap
|
||
H_ReadHeap &FileID,&Heap,&err==
|
||
IF &Heap='' OR &FileID='' THEN
|
||
AERROR 'Bad usage of: H_ReadHeap FileID, HeapID [,err=]'
|
||
ENDIF
|
||
MoveWord &FileID,x
|
||
jsl H_ReadHeap
|
||
IF &err'' THEN
|
||
sty &err
|
||
ENDIF
|
||
MoveLong ax,&Heap
|
||
ENDM
|
||
|
||
|
||
MACRO ; H_NewBlock
|
||
H_NewBlock &Size,&Index,&Ptr,&err==
|
||
IF &Size='' OR &Index='' THEN
|
||
AERROR 'Bad usage of: H_NewBlock Size, Index [,Ptr] [,err=]'
|
||
ENDIF
|
||
SpaceLong
|
||
MoveLong &Size,xy
|
||
jsl H_NewBlock
|
||
IF &err'' THEN
|
||
sty &err
|
||
ENDIF
|
||
IF &Index='ax' OR &Index='ay' THEN
|
||
AERROR 'Bad usage of H_NewBlock: Index may not be ax or ay'
|
||
ENDIF
|
||
MoveLong ax,&Index
|
||
IF &Ptr='' THEN
|
||
pla
|
||
pla
|
||
ELSE
|
||
PullLong &Ptr
|
||
ENDIF
|
||
ENDM
|
||
|
||
|
||
MACRO ; H_DisposeBlock
|
||
H_DisposeBlock &Index
|
||
IF &Index='' THEN
|
||
AERROR 'Bad usage of: H_DisposeBlock Index'
|
||
ENDIF
|
||
MoveLong &Index,xy
|
||
jsl H_DisposeBlock
|
||
ENDM
|
||
|
||
|
||
MACRO ; H_ResizeBlock
|
||
H_ResizeBlock &Index,&Size,&Ptr,&err==
|
||
IF &Index='' OR &Size='' THEN
|
||
AERROR 'Bad usage of: H_ResizeBlock Index, Size [,Ptr] [,err=]'
|
||
ENDIF
|
||
PushLong &Index
|
||
MoveLong &Size,xy
|
||
jsl H_ResizeBlock
|
||
IF &err'' THEN
|
||
sty &err
|
||
ENDIF
|
||
IF &Ptr'' THEN
|
||
MoveLong ax,&Ptr
|
||
ENDIF
|
||
ENDM
|
||
|
||
|
||
MACRO ; H_CopyBlock
|
||
H_CopyBlock &Index,&NewIndex,&NewPtr,&err==
|
||
IF &Index='' OR &NewIndex='' THEN
|
||
AERROR 'Bad usage of: H_CopyBlock Index, NewIndex [,NewPtr] [,err=]'
|
||
ENDIF
|
||
SpaceLong
|
||
MoveLong &Index,xy
|
||
jsl H_CopyBlock
|
||
IF &err'' THEN
|
||
sty &err
|
||
ENDIF
|
||
IF &NewIndex='ax' OR &NewIndex='ay' THEN
|
||
AERROR 'Bad usage of H_CopyBlock: NewIndex may not be ax or ay'
|
||
ENDIF
|
||
MoveLong ax,&NewIndex
|
||
IF &NewPtr='' THEN
|
||
pla
|
||
pla
|
||
ELSE
|
||
PullLong &NewPtr
|
||
ENDIF
|
||
ENDM
|
||
|
||
|
||
MACRO ; H_GetBlockPtr
|
||
H_GetBlockPtr &Index,&Ptr
|
||
IF &Index='' OR &Ptr='' THEN
|
||
AERROR 'Bad usage of: H_GetBlockPtr Index, Ptr'
|
||
ENDIF
|
||
MoveLong &Index,xy
|
||
jsl H_GetBlockPtr
|
||
MoveLong ax,&Ptr
|
||
ENDM
|
||
|
||
|
||
MACRO ; H_GetBlockSize
|
||
H_GetBlockSize &Index,&Size
|
||
IF &Index='' OR &Size='' THEN
|
||
AERROR 'Bad usage of: H_GetBlockSize Index, Size'
|
||
ENDIF
|
||
MoveLong &Index,xy
|
||
jsl H_GetBlockSize
|
||
MoveLong ax,&Size
|
||
ENDM
|
||
|
||
|
||
MACRO ; H_TruncHeap
|
||
H_TruncHeap
|
||
jsl H_TruncHeap
|
||
ENDM
|
||
ENDIF
|