New bitmap method SetRGBConversionFunction which can be used to
[tangerine.git] / workbench / libs / iffparse / exithandler.c
blobcd061eabddf23150cc2a104b2c586fef0399773f
1 /*
2 Copyright © 1995-2004, The AROS Development Team. All rights reserved.
3 $Id$
4 */
6 #define DEBUG 0
7 #include <aros/debug.h>
8 #include "iffparse_intern.h"
10 /*****************************************************************************
12 NAME */
13 #include <proto/iffparse.h>
15 AROS_LH6(LONG, ExitHandler,
17 /* SYNOPSIS */
18 AROS_LHA(struct IFFHandle *, iff, A0),
19 AROS_LHA(LONG , type, D0),
20 AROS_LHA(LONG , id, D1),
21 AROS_LHA(LONG , position, D2),
22 AROS_LHA(struct Hook *, handler, A1),
23 AROS_LHA(APTR , object, A2),
25 /* LOCATION */
26 struct Library *, IFFParseBase, 18, IFFParse)
28 /* FUNCTION
29 Installs an exit handler for a specific chunk type
30 that wil be called whenever a chunk of that type is popped off the contextstack
31 via ParseIFF().
34 INPUTS
35 iff - pointer to an iffhandle struct.
36 type - type code for the chunk to handle. (ex: "ILBM").
37 id - ID code for the chunk to handle. (ex: "CMAP")
38 position - position of localcontextitem. See StoreLocalItem for
39 more info.
40 handler - an initialised Hook structure for the handler function.
41 object - pointer to some kind of object that will be passed to
42 your handler function.
44 RESULT
45 error - 0 If successfull, IFFERR_#? elsewise.
47 NOTES
49 EXAMPLE
51 BUGS
53 SEE ALSO
54 EntryHandler(), StoreLocalItem(), StoreItemInContext()
56 INTERNALS
58 *****************************************************************************/
60 AROS_LIBFUNC_INIT
61 AROS_LIBBASE_EXT_DECL(struct Library *,IFFParseBase)
63 struct LocalContextItem *lci;
64 struct HandlerInfo *hi;
66 D(bug ("ExitHandler (iff=%p, type=%c%c%c%c, id=%c%c%c%c, position=%d, handler=%p, object=%p)\n",
67 iff,
68 dmkid(type),
69 dmkid(id),
70 position, handler, object
71 ));
73 if (!(lci = AllocLocalItem(
74 type,
75 id,
76 IFFLCI_EXITHANDLER,
77 sizeof (struct HandlerInfo))))
79 D(bug("ExitHandler: return IFFERR_NOME\n"));
80 return (IFFERR_NOMEM);
83 /* Get pointer to the user contining a HandlerInfo structure data */
84 hi = LocalItemData(lci);
86 hi->hi_Hook = handler;
88 hi->hi_Object = object;
90 return
92 StoreLocalItem
94 iff,
95 lci,
96 position
101 AROS_LIBFUNC_EXIT
102 } /* ExitHandler */