'************************************************************  
   Global _LVOALLOCMEM,_LVOFREEMEM,MEMF_ANY,MEMF_PUBLIC,MEMF_CHIP,MEMF_FAST,MEMF_CLEAR,NULL,WORD,UWORD,BYTE,UBYTE,LONG,ULONG,APTR


   _INITIALIZE_ADTS

Procedure _ADT_DEFS
'
'
End Proc
'
Procedure _CREATE[_DATA_TYPE,_MEMORY_TYPE]
'  
    _ALLOCMEM[Leek(_DATA_TYPE),_MEMORY_TYPE]

    _PTR=Param
'
End Proc[_PTR]
Procedure _DESTROY[_DATA_TYPE,_PTR]
'
   _FREEMEM[_PTR,Leek(_DATA_TYPE)]
'
End Proc
Procedure _SET_FIELD[_DATA_TYPE,_PTR,_FIELD,_VAL]
'
   If(_DATA_TYPE<>0 and _PTR<>0)

      _SIZE_OF_FIELD[_DATA_TYPE,_FIELD] : _OFFSET_TO_FIELD=Leek(_DATA_TYPE+(_FIELD+1)*4)

      If Param=BYTE
                              Poke _PTR+_OFFSET_TO_FIELD,_VAL
      Else 
            If Param=WORD
                              Doke _PTR+_OFFSET_TO_FIELD,_VAL
            Else 

               If Param=APTR
                              Loke _PTR+_OFFSET_TO_FIELD,_VAL
               End If 

            End If 

      End If 

   End If 
'
End Proc
Procedure _GET_FIELD[_DATA_TYPE,_PTR,_FIELD]
'
   If(_DATA_TYPE<>0 and _PTR<>0)

      _SIZE_OF_FIELD[_DATA_TYPE,_FIELD] : _OFFSET_TO_FIELD=Leek(_DATA_TYPE+(_FIELD+1)*4)

      If Param=BYTE
                              _VAL=Peek(_PTR+_OFFSET_TO_FIELD)
      Else 
            If Param=WORD
                              _VAL=Deek(_PTR+_OFFSET_TO_FIELD)
            Else 

               If Param=APTR
                              _VAL=Leek(_PTR+_OFFSET_TO_FIELD)
               End If 

            End If 

      End If 

   End If 
'
End Proc[_VAL]
'
Procedure _INITIALIZE_ADTS
'
   _LVOS_AND_DEFINES

   _ADT_DEFS
'
End Proc
Procedure _LVOS_AND_DEFINES
'
   _LVOALLOCMEM=-198 : _LVOFREEMEM=-210
   _LVOOPENLIB=-552 : _LVOCLOSELIB=-414

   MEMF_ANY=0 : MEMF_PUBLIC=1 : MEMF_CHIP=2 : MEMF_FAST=4 : MEMF_CLEAR=65536
   WORD=2 : UWORD=2 : BYTE=1 : UBYTE=1 : LONG=4 : ULONG=4 : APTR=4 : NULL=0
'
End Proc
Procedure _SIZE_OF_FIELD[_DATA_TYPE,_FIELD]
'
   If(_FIELD<>Leek(_DATA_TYPE+1*4))
       _SIZE=Leek(_DATA_TYPE+((_FIELD+1)+1)*4)-Leek(_DATA_TYPE+(_FIELD+1)*4)
   Else 
      _SIZE=Leek(_DATA_TYPE+0*4)-Leek(_DATA_TYPE+(_FIELD+1)*4)
   End If 
'
End Proc[_SIZE]
Procedure _ALLOCMEM[BYTESIZE,REQUIREMENTS]
'
   Dreg(0)=BYTESIZE : Dreg(1)=REQUIREMENTS
   _PTR=Execall(_LVOALLOCMEM)
'
End Proc[_PTR]
Procedure _FREEMEM[MEMORY_PTR,BYTESIZE]
'
   Areg(1)=MEMORY_PTR : Dreg(0)=BYTESIZE
   RESULT=Execall(_LVOFREEMEM)
'
End Proc[RESULT]
'
'**************************************************************

