home *** CD-ROM | disk | FTP | other *** search
- IFND IFF_IFFPARSE_I
- IFF_IFFPARSE_I SET 1
- **
- ** $Filename: libraries/iffparse.i $
- ** $Release: 2.04 Includes, V37.4 $
- ** $Revision: 33.1 $
- ** $Date: 90/11/20 $
- **
- ** Assembly include file for iffparse.library.
- ** Generated by hand from iffparse.h (9006.04)
- **
- ** (C) Copyright 1989-1991 Commodore-Amiga Inc., Stuart Ferguson
- ** and Leo L. Schwab
- ** All Rights Reserved
- **
-
- IFND EXEC_TYPES_I
- include "exec/types.i"
- ENDC
-
- IFND EXEC_LISTS_I
- include "exec/lists.i"
- ENDC
-
- IFND EXEC_PORTS_I
- include "exec/ports.i"
- ENDC
-
- IFND DEVICES_CLIPBOARD_I
- include "devices/clipboard.i"
- ENDC
-
- *\
- * Struct associated with an active IFF stream.
- * "iff_Stream" is a value used by the client's read/write/seek functions -
- * it will not be accessed by the library itself and can have any value
- * (could even be a pointer or a BPTR).
- */
- STRUCTURE IFFHandle,0
- ULONG iff_Stream
- ULONG iff_Flags
- LONG iff_Depth ; Depth of context stack.
- * There are private fields hiding here.
- LABEL iff_SIZEOF
-
- *\
- * Bit masks for "iff_Flags" field.
- */
- IFFF_READ EQU 0 ; read mode - default
- IFFF_WRITE EQU 1 ; write mode
- IFFF_RWBITS EQU IFFF_READ!IFFF_WRITE ; read/write bits
- IFFF_FSEEK EQU 1<<1 ; forward seek only
- IFFF_RSEEK EQU 1<<2 ; random seek
- IFFF_RESERVED EQU $FFFF0000 ; Don't touch these bits.
-
- *\
- * When the library calls your stream handler, you'll be passed a pointer
- * to this structure as the "message packet".
- * NOTE: ASSEMBLY PREFIX (isc_) DIFFERENT FROM C PREFIX (sc_).
- */
- STRUCTURE IFFStreamCmd,0
- LONG isc_Command ; Operation to be performed (IFFCMD_)
- APTR isc_Buf ; Pointer to data buffer
- LONG isc_NBytes ; Number of bytes to be affected
- LABEL isc_SIZEOF
-
- *\
- * A node associated with a context on the iff_Stack. Each node
- * represents a chunk, the stack representing the current nesting
- * of chunks in the open IFF file. Each context node has associated
- * local context items in the (private) LocalItems list. The ID, type,
- * size and scan values describe the chunk associated with this node.
- */
- STRUCTURE ContextNode,MLN_SIZE ; cn_Node
- LONG cn_ID
- LONG cn_Type
- LONG cn_Size ; Size of this chunk
- LONG cn_Scan ; # of bytes read/written so far
- * There are private fields hiding here.
- LABEL cn_SIZEOF
-
- *\
- * Local context items live in the ContextNode's. Each class is identified
- * by its lci_Ident code and has a (private) purge vector for when the
- * parent context node is popped.
- */
- STRUCTURE LocalContextItem,MLN_SIZE ; lci_Node
- ULONG lci_ID
- ULONG lci_Type
- ULONG lci_Ident
- * There are private fields hiding here.
- LABEL lci_SIZEOF
-
- *\
- * StoredProperty: a local context item containing the data stored
- * from a previously encountered property chunk.
- * NOTE: ASSEMBLY PREFIX (spr_) DIFFERENT FROM C PREFIX (sp_).
- */
- STRUCTURE StoredProperty,0
- LONG spr_Size
- APTR spr_Data
- LABEL spr_SIZEOF
-
- *\
- * Collection Item: the actual node in the collection list at which
- * client will look. The next pointers cross context boundaries so
- * that the complete list is accessable.
- * NOTE: ASSEMBLY PREFIX (cit_) DIFFERENT FROM C PREFIX (ci_).
- */
- STRUCTURE CollectionItem,0
- APTR cit_Next
- LONG cit_Size
- APTR cit_Data
- LABEL cit_SIZEOF
-
- *\
- * Structure returned by OpenClipboard(). You may do CMD_POSTs and such
- * using this structure. However, once you call OpenIFF(), you may not
- * do any more of your own I/O to the clipboard until you call CloseIFF().
- */
- STRUCTURE ClipboardHandle,iocr_SIZEOF ; cbh_Reg
- STRUCT cbh_CBport,MP_SIZE
- STRUCT cbh_SatisfyPort,MP_SIZE
- LABEL cbh_SIZEOF
-
- *\
- * IFF return codes. Most functions return either zero for success or
- * one of these codes. The exceptions are the read/write functions which
- * return positive values for number of bytes or records read or written,
- * or a negative error code. Some of these codes are not errors per sae,
- * but valid conditions such as EOF or EOC (End of Chunk).
- */
- IFFERR_EOF EQU -1 ; Reached logical end of file
- IFFERR_EOC EQU -2 ; About to leave context
- IFFERR_NOSCOPE EQU -3 ; No valid scope for property
- IFFERR_NOMEM EQU -4 ; Internal memory alloc failed
- IFFERR_READ EQU -5 ; Stream read error
- IFFERR_WRITE EQU -6 ; Stream write error
- IFFERR_SEEK EQU -7 ; Stream seek error
- IFFERR_MANGLED EQU -8 ; Data in file is corrupt
- IFFERR_SYNTAX EQU -9 ; IFF syntax error
- IFFERR_NOTIFF EQU -10 ; Not an IFF file
- IFFERR_NOHOOK EQU -11 ; No call-back hook provided
- IFF_RETURN2CLIENT EQU -12 ; Client handler normal return
-
- *\
- * Universal IFF identifiers.
- */
- ID_FORM EQU 'FORM'
- ID_LIST EQU 'LIST'
- ID_CAT EQU 'CAT '
- ID_PROP EQU 'PROP'
- ID_NULL EQU ' '
-
- *\
- * Ident codes for universally recognized local context items.
- */
- IFFLCI_PROP EQU 'prop'
- IFFLCI_COLLECTION EQU 'coll'
- IFFLCI_ENTRYHANDLER EQU 'enhd'
- IFFLCI_EXITHANDLER EQU 'exhd'
-
- *\
- * Control modes for ParseIFF() function.
- */
- IFFPARSE_SCAN EQU 0
- IFFPARSE_STEP EQU 1
- IFFPARSE_RAWSTEP EQU 2
-
- *\
- * Control modes for StoreLocalItem().
- */
- IFFSLI_ROOT EQU 1 ; Store in default context
- IFFSLI_TOP EQU 2 ; Store in current context
- IFFSLI_PROP EQU 3 ; Store in topmost FORM or LIST
-
- *\
- * "Flag" for writing functions. If you pass this value in as a size
- * to PushChunk() when writing a file, the parser will figure out the
- * size of the chunk for you. (Chunk sizes >= 2**31 are forbidden by the
- * IFF specification, so this works.)
- */
- IFFSIZE_UNKNOWN EQU -1
-
- *\
- * Possible call-back command values. (Gee, it would be nice if there was an
- * ENUM macro.)
- */
- IFFCMD_INIT EQU 0 ; Prepare your stream for a session
- IFFCMD_CLEANUP EQU 1 ; Terminate stream session
- IFFCMD_READ EQU 2 ; Read bytes from stream
- IFFCMD_WRITE EQU 3 ; Write bytes to stream
- IFFCMD_SEEK EQU 4 ; Seek on stream
- IFFCMD_ENTRY EQU 5 ; You just entered a new context
- IFFCMD_EXIT EQU 6 ; You're about to leave a context
- IFFCMD_PURGELCI EQU 7 ; Purge a LocalContextItem
-
- * Backward compatibility. Don't use these in new code.
- IFFSCC_INIT EQU IFFCMD_INIT
- IFFSCC_CLEANUP EQU IFFCMD_CLEANUP
- IFFSCC_READ EQU IFFCMD_READ
- IFFSCC_WRITE EQU IFFCMD_WRITE
- IFFSCC_SEEK EQU IFFCMD_SEEK
-
- ENDC ; IFF_IFFPARSE_I
-