
/*
 *  IFFSCAN.H
 *
 *  (*func)(cmd, ic)
 *  IFFCHUNK *ic;	current chunk being scanned.  - ref parents until 0 Type
 */

#ifndef LOCAL_TYPEDEFS_H
#include <local/typedefs.h>
#endif

#define IFFSCAN struct _IFFSCAN

#define IF_NAMED    0x0001
#define IF_SUBS     0x0002

IFFCHUNK {
    MNODE ic_Node;
    ulong ic_Type;		/*  type of chunk		*/
    ulong ic_Len;		/*  length of chunk		*/
    ulong ic_SubType;		/*  sub-type or 0		*/
    ubyte *ic_Data;
    ulong ic_Actual;		/*  # bytes read so far 	*/
    ulong ic_Offset;		/*  seek position		*/
    MLIST ic_List;		/*  associated props		*/
};

/*
 *  If if_Form is non-zero, then if_Type is a form-specific local chunk
 *  type for if_Form and overides any non-specific types (where if_Form = 0)
 *
 *  if_Flags:
 *	IF_NAMED    - indicates that the chunk has a 4 byte name before the
 *		      data
 *	IF_SUBS     - indicates that the chunk's data is made up of chunks
 *
 *  if_MemFlags specifies the type of memory the chunk should be stuck into,
 *  or -1 to indicate no memory be allocated (ic_Data will be NULL)
 */

IFFSCAN {
    ulong if_Form;
    ulong if_Type;
    uword if_Flags;
    uword if_Reserved;
    ulong if_MemFlags;
    int (*if_Func)();
};

