	IFND FILES_FILES_I
FILES_FILES_I  SET  1

**
**  $VER: files.i V0.8B
**
**  File Definitions.
**
**  (C) Copyright 1996-1997 DreamWorld Productions.
**      All Rights Reserved.
**
**

	IFND    DPKERNEL_I
	include 'games/dpkernel.i'
	ENDC

****************************************************************************
* Module information.

FileModVersion  = 0
FileModRevision = 8

****************************************************************************
* Mini structures for source and destination operations.

;Filename structure.

   STRUCTURE	FN,0
	WORD	FN_ID           ;ID_FILENAME
	APTR	FN_Name         ;Pointer to filename.
	LABEL	FN_SIZEOF       ;Private.

;Memory pointer structure.

   STRUCTURE	MPTR,0
	WORD	MPTR_ID           ;ID_MEMPOINTER
	APTR	MPTR_Address      ;Pointer to memory area.
	LONG	MPTR_Size         ;Must supply a size unless you are a MemBlock.
	LABEL	MPTR_SIZEOF       ;Private.


	;Example: FILENAME "HD1:Picture.iff"

FILENAME MACRO
	dc.w	ID_FILENAME
	dc.l	.name\@
.name\@	dc.b	\1,0
	even
	ENDM

	;Example: MEMPTR $530

MEMPTR	MACRO
	dc.w	ID_MEMPTR
	dc.l	\1
	dc.l	\2
	ENDM

*****************************************************************************
* File Object.

FILEVERSION =	1
TAGS_FILE =	(ID_SPCTAGS<<16)|ID_FILE

   STRUCTURE	FL,HEAD_SIZEOF
	LONG	FL_BytePos    ;Current position in file.
	LONG	FL_Size       ;Total size of the file.
	LONG	FL_Flags      ;File flags.
	APTR	FL_Source     ;Direct pointer to the original Source structure.
	APTR	FL_Prev       ;Previous file in chain.
	APTR	FL_Next       ;Next file in chain.
	APTR	FL_Comment    ;Pointer to comment string.
	APTR	FL_DateStamp  ;Time of creation.

;File tags.

FLA_BytePos   =	(TLONG|FL_BytePos)
FLA_Size      = (TLONG|FL_Size)
FLA_Flags     =	(TLONG|FL_Flags)
FLA_Source    =	(TAPTR|FL_Source)
FLA_Prev      =	(TAPTR|FL_Prev)
FLA_Next      =	(TAPTR|FL_Next)
FLA_Comment   =	(TAPTR|FL_Comment)
FLA_DateStamp =	(TAPTR|FL_DateStamp)

;Opening tags.

FB_READ      = 0   ;Default.
FB_WRITE     = 0   ;Set if writing to the file.
FB_LOCK      = 1   ;Locks other programs out from using this file.
;FB_NEW      = 2   ;
FB_FIND      = 3   ;
FB_NOUNPACK  = 4   ;Disallow auto-unpacking of the data.
FB_NOPACK    = 4   ;Disallow auto-packing of the data.
FB_NOBUFFER  = 5   ;
FB_NEWFILE   = 6   ;Open a new file (size of 0).
FB_ALPHASORT = 7   ;Applies to directories only.

FL_OLDFILE   = 0
FL_READ      = 0
FL_WRITE     = (1<<FB_WRITE)
FL_LOCK      = (1<<FB_LOCK)
;FL_NEW      = (1<<FB_NEW)
FL_FIND      = (1<<FB_FIND)
FL_NOUNPACK  = (1<<FB_NOUNPACK)
FL_NOPACK    = (1<<FB_NOPACK)
FL_NOBUFFER  = (1<<FB_NOBUFFER)
FL_NEWFILE   = (1<<FB_NEWFILE)
FL_ALPHASORT = (1<<FB_ALPHASORT)

*****************************************************************************
* Directory Object.

DIRVERSION     = 1
TAGS_DIRECTORY = (ID_SPCTAGS<<16)|ID_DIRECTORY

   STRUCTURE	DIR,HEAD_SIZEOF
	APTR	DIR_DirList      ;List of sub-directories.
	APTR	DIR_FileList     ;List of files in directory.
	APTR	DIR_Source       ;Location of the directory.
	LONG	DIR_OpenFlags    ;Opening flags (see file flags).
	APTR	DIR_Comment      ;Comment string.
	LONG	DIR_UserFlags    ;User flags.
	APTR	DIR_DateStamp    ;Pointer to Time structure.

DIRA_Source    = (TAPTR|DIR_Source)
DIRA_OpenFlags = (TLONG|DIR_OpenFlags)
DIRA_UserFlags = (TLONG|DIR_UserFlags)
DIRA_Comment   = (TAPTR|DIR_Comment)
DIRA_DateStamp = (TAPTR|DIR_DateStamp)


   STRUCTURE	DE,0             ;Directory Entry.
	APTR	DE_Prev          ;Previous entry.
	APTR	DE_Next          ;Next entry.
	APTR	DE_Source        ;Pointer to FileName.
	LABEL	DE_SIZEOF

   STRUCTURE	FE,0             ;File Entry.
	APTR	FE_Prev          ;Previous entry.
	APTR	FE_Next          ;Next entry.
	APTR	FE_Source        ;Pointer to FileName.
	LABEL	FE_SIZEOF

  ENDC	;FILES_FILES_I

