home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / cbm / nduk-v37.lha / V37 / include / libraries / iffparse.i < prev    next >
Text File  |  1991-11-27  |  6KB  |  206 lines

  1.     IFND    IFF_IFFPARSE_I
  2. IFF_IFFPARSE_I    SET    1
  3. **
  4. **    $Filename: libraries/iffparse.i $
  5. **    $Release: 2.04 Includes, V37.4 $
  6. **    $Revision: 33.1 $
  7. **    $Date: 90/11/20 $
  8. **
  9. **    Assembly include file for iffparse.library.
  10. **    Generated by hand from iffparse.h (9006.04)
  11. **
  12. **    (C) Copyright 1989-1991 Commodore-Amiga Inc., Stuart Ferguson
  13. **    and Leo L. Schwab
  14. **        All Rights Reserved
  15. **
  16.  
  17.         IFND    EXEC_TYPES_I
  18.         include "exec/types.i"
  19.         ENDC
  20.  
  21.         IFND    EXEC_LISTS_I
  22.         include "exec/lists.i"
  23.         ENDC
  24.  
  25.         IFND    EXEC_PORTS_I
  26.         include "exec/ports.i"
  27.         ENDC
  28.  
  29.         IFND    DEVICES_CLIPBOARD_I
  30.         include "devices/clipboard.i"
  31.         ENDC
  32.  
  33. *\
  34. * Struct associated with an active IFF stream.
  35. * "iff_Stream" is a value used by the client's read/write/seek functions -
  36. * it will not be accessed by the library itself and can have any value
  37. * (could even be a pointer or a BPTR).
  38. */
  39.     STRUCTURE IFFHandle,0
  40.         ULONG    iff_Stream
  41.         ULONG    iff_Flags
  42.         LONG    iff_Depth    ; Depth of context stack.
  43. * There are private fields hiding here.
  44.     LABEL    iff_SIZEOF
  45.  
  46. *\
  47. * Bit masks for "iff_Flags" field.
  48. */
  49. IFFF_READ    EQU    0            ; read mode - default
  50. IFFF_WRITE    EQU    1            ; write mode
  51. IFFF_RWBITS    EQU    IFFF_READ!IFFF_WRITE    ; read/write bits
  52. IFFF_FSEEK    EQU    1<<1            ; forward seek only
  53. IFFF_RSEEK    EQU    1<<2            ; random seek
  54. IFFF_RESERVED    EQU    $FFFF0000        ; Don't touch these bits.
  55.  
  56. *\
  57. * When the library calls your stream handler, you'll be passed a pointer
  58. * to this structure as the "message packet".
  59. * NOTE:  ASSEMBLY PREFIX (isc_) DIFFERENT FROM C PREFIX (sc_).
  60. */
  61.     STRUCTURE IFFStreamCmd,0
  62.         LONG    isc_Command    ; Operation to be performed (IFFCMD_)
  63.         APTR    isc_Buf        ; Pointer to data buffer
  64.         LONG    isc_NBytes    ; Number of bytes to be affected
  65.     LABEL    isc_SIZEOF
  66.  
  67. *\
  68. * A node associated with a context on the iff_Stack.  Each node
  69. * represents a chunk, the stack representing the current nesting 
  70. * of chunks in the open IFF file.  Each context node has associated
  71. * local context items in the (private) LocalItems list.  The ID, type,
  72. * size and scan values describe the chunk associated with this node.
  73. */
  74.     STRUCTURE ContextNode,MLN_SIZE    ; cn_Node
  75.         LONG    cn_ID
  76.         LONG    cn_Type
  77.         LONG    cn_Size        ; Size of this chunk
  78.         LONG    cn_Scan        ; # of bytes read/written so far
  79. * There are private fields hiding here.
  80.     LABEL    cn_SIZEOF
  81.  
  82. *\
  83. * Local context items live in the ContextNode's.  Each class is identified
  84. * by its lci_Ident code and has a (private) purge vector for when the
  85. * parent context node is popped.
  86. */
  87.     STRUCTURE LocalContextItem,MLN_SIZE    ; lci_Node
  88.         ULONG    lci_ID
  89.         ULONG    lci_Type
  90.         ULONG    lci_Ident
  91. * There are private fields hiding here.
  92.     LABEL    lci_SIZEOF
  93.  
  94. *\
  95. * StoredProperty: a local context item containing the data stored
  96. * from a previously encountered property chunk.
  97. * NOTE:  ASSEMBLY PREFIX (spr_) DIFFERENT FROM C PREFIX (sp_).
  98. */
  99.     STRUCTURE StoredProperty,0
  100.         LONG    spr_Size
  101.         APTR    spr_Data
  102.     LABEL    spr_SIZEOF
  103.  
  104. *\
  105. * Collection Item: the actual node in the collection list at which
  106. * client will look.  The next pointers cross context boundaries so
  107. * that the complete list is accessable.
  108. * NOTE:  ASSEMBLY PREFIX (cit_) DIFFERENT FROM C PREFIX (ci_).
  109. */
  110.     STRUCTURE CollectionItem,0
  111.         APTR    cit_Next
  112.         LONG    cit_Size
  113.         APTR    cit_Data
  114.     LABEL    cit_SIZEOF
  115.  
  116. *\
  117. * Structure returned by OpenClipboard().  You may do CMD_POSTs and such
  118. * using this structure.  However, once you call OpenIFF(), you may not
  119. * do any more of your own I/O to the clipboard until you call CloseIFF().
  120. */
  121.     STRUCTURE ClipboardHandle,iocr_SIZEOF    ; cbh_Reg
  122.         STRUCT    cbh_CBport,MP_SIZE
  123.         STRUCT    cbh_SatisfyPort,MP_SIZE
  124.     LABEL    cbh_SIZEOF
  125.  
  126. *\
  127. * IFF return codes.  Most functions return either zero for success or
  128. * one of these codes.  The exceptions are the read/write functions which
  129. * return positive values for number of bytes or records read or written,
  130. * or a negative error code.  Some of these codes are not errors per sae,
  131. * but valid conditions such as EOF or EOC (End of Chunk).
  132. */
  133. IFFERR_EOF        EQU    -1    ; Reached logical end of file
  134. IFFERR_EOC        EQU    -2    ; About to leave context
  135. IFFERR_NOSCOPE        EQU    -3    ; No valid scope for property
  136. IFFERR_NOMEM        EQU    -4    ; Internal memory alloc failed
  137. IFFERR_READ        EQU    -5    ; Stream read error
  138. IFFERR_WRITE        EQU    -6    ; Stream write error
  139. IFFERR_SEEK        EQU    -7    ; Stream seek error
  140. IFFERR_MANGLED        EQU    -8    ; Data in file is corrupt
  141. IFFERR_SYNTAX        EQU    -9    ; IFF syntax error
  142. IFFERR_NOTIFF        EQU    -10    ; Not an IFF file
  143. IFFERR_NOHOOK        EQU    -11    ; No call-back hook provided
  144. IFF_RETURN2CLIENT    EQU    -12    ; Client handler normal return
  145.  
  146. *\
  147. * Universal IFF identifiers.
  148. */
  149. ID_FORM            EQU    'FORM'
  150. ID_LIST            EQU    'LIST'
  151. ID_CAT            EQU    'CAT '
  152. ID_PROP            EQU    'PROP'
  153. ID_NULL            EQU    '    '
  154.  
  155. *\
  156. * Ident codes for universally recognized local context items.
  157. */
  158. IFFLCI_PROP        EQU    'prop'
  159. IFFLCI_COLLECTION    EQU    'coll'
  160. IFFLCI_ENTRYHANDLER    EQU    'enhd'
  161. IFFLCI_EXITHANDLER    EQU    'exhd'
  162.  
  163. *\
  164. * Control modes for ParseIFF() function.
  165. */
  166. IFFPARSE_SCAN        EQU    0
  167. IFFPARSE_STEP        EQU    1
  168. IFFPARSE_RAWSTEP    EQU    2
  169.  
  170. *\
  171. * Control modes for StoreLocalItem().
  172. */
  173. IFFSLI_ROOT        EQU    1    ; Store in default context
  174. IFFSLI_TOP        EQU    2    ; Store in current context
  175. IFFSLI_PROP        EQU    3    ; Store in topmost FORM or LIST
  176.  
  177. *\
  178. * "Flag" for writing functions.  If you pass this value in as a size
  179. * to PushChunk() when writing a file, the parser will figure out the
  180. * size of the chunk for you.  (Chunk sizes >= 2**31 are forbidden by the
  181. * IFF specification, so this works.)
  182. */
  183. IFFSIZE_UNKNOWN        EQU    -1
  184.  
  185. *\
  186. * Possible call-back command values.  (Gee, it would be nice if there was an
  187. * ENUM macro.)
  188. */
  189. IFFCMD_INIT        EQU    0    ; Prepare your stream for a session
  190. IFFCMD_CLEANUP        EQU    1    ; Terminate stream session
  191. IFFCMD_READ        EQU    2    ; Read bytes from stream
  192. IFFCMD_WRITE        EQU    3    ; Write bytes to stream
  193. IFFCMD_SEEK        EQU    4    ; Seek on stream
  194. IFFCMD_ENTRY        EQU    5    ; You just entered a new context
  195. IFFCMD_EXIT        EQU    6    ; You're about to leave a context
  196. IFFCMD_PURGELCI        EQU    7    ; Purge a LocalContextItem
  197.  
  198. * Backward compatibility.  Don't use these in new code.
  199. IFFSCC_INIT        EQU    IFFCMD_INIT
  200. IFFSCC_CLEANUP        EQU    IFFCMD_CLEANUP
  201. IFFSCC_READ        EQU    IFFCMD_READ
  202. IFFSCC_WRITE        EQU    IFFCMD_WRITE
  203. IFFSCC_SEEK        EQU    IFFCMD_SEEK
  204.  
  205.         ENDC    ; IFF_IFFPARSE_I
  206.