#ifndef IFF_IFFPARSE_H
#define IFF_IFFPARSE_H

/*******************************************************************
 pOS / Amiga adapt
*******************************************************************/


#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif
#ifndef EXEC_LISTS_H
#include <exec/lists.h>
#endif
#ifndef EXEC_PORTS_H
#include <exec/ports.h>
#endif


#ifndef __INC_POS_PIFFPARSE_IFFPARSE_H
#include <pIFFParse/IFFParse.h>
#endif



/*****************************************************************************/


struct IFFHandle
{
    ULONG iff_Stream;
    LONG  iff_Depth;
};


#define IFFF_READ       IFFACCMD_Read
#define IFFF_WRITE      IFFACCMD_Write


struct ContextNode
{
    LONG           cn_Type;
    LONG           cn_ID;
    LONG           cn_Size;
};


struct StoredProperty
{
    LONG sp_Size;
    APTR sp_Data;
};


#define IFFERR_EOF        -1L
#define IFFERR_EOC        -2L
#define IFFERR_NOMEM      -3L
#define IFFERR_READ       -4L
#define IFFERR_WRITE      -5L
#define IFFERR_NOTIFF     -7L


#define IFFPARSE_SCAN    0L
#define IFFPARSE_STEP    1L
#define IFFPARSE_RAWSTEP 2L


#define IFFSIZE_UNKNOWN -1L





/*****************************************************************************/


#ifdef __IGNORE_NOT_SUPPORTED__

#define IFFF_RWBITS     0
#define IFFF_FSEEK      0
#define IFFF_RSEEK      0
#define IFFF_RESERVED   0


struct IFFStreamCmd
{
    LONG sc_Command;
    APTR sc_Buf;
    LONG sc_NBytes;
};

struct LocalContextItem
{
    struct MinNode lci_Node;
    ULONG          lci_ID;
    ULONG          lci_Type;
    ULONG          lci_Ident;
};

struct CollectionItem
{
    struct CollectionItem *ci_Next;
    LONG                   ci_Size;
    APTR                   ci_Data;
};

struct ClipboardHandle
{
    struct IOClipReq cbh_Req;
    struct MsgPort   cbh_CBport;
    struct MsgPort   cbh_SatisfyPort;
};



#define IFFERR_NOSCOPE    -10L
#define IFFERR_SEEK       -10L
#define IFFERR_MANGLED    -10L
#define IFFERR_SYNTAX     -10L
#define IFFERR_NOHOOK     -10L
#define IFF_RETURN2CLIENT -10L



#define IFFCMD_INIT     0
#define IFFCMD_CLEANUP  1
#define IFFCMD_READ     2
#define IFFCMD_WRITE    3
#define IFFCMD_SEEK     4
#define IFFCMD_ENTRY    5
#define IFFCMD_EXIT     6
#define IFFCMD_PURGELCI 7


#define IFFSLI_ROOT  1L
#define IFFSLI_TOP   2L
#define IFFSLI_PROP  3L


#ifndef IFFPARSE_V37_NAMES_ONLY
#define IFFSCC_INIT     IFFCMD_INIT
#define IFFSCC_CLEANUP  IFFCMD_CLEANUP
#define IFFSCC_READ     IFFCMD_READ
#define IFFSCC_WRITE    IFFCMD_WRITE
#define IFFSCC_SEEK     IFFCMD_SEEK
#endif

#endif /* __IGNORE_NOT_SUPPORTED__ */



#endif /* IFFPARSE_H */
