Fixed typos in comments.
[AROS.git] / workbench / libs / icon / addfreelist.c
blobbe430743dc56503771429f4477ce094b5eeb972f
1 /*
2 Copyright © 1995-2007, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc:
6 Lang: english
7 */
8 #include "icon_intern.h"
10 /*****************************************************************************
12 NAME */
13 #include <proto/icon.h>
15 AROS_LH3(BOOL, AddFreeList,
17 /* SYNOPSIS */
18 AROS_LHA(struct FreeList *, freelist, A0),
19 AROS_LHA(APTR , mem, A1),
20 AROS_LHA(unsigned long , size, A2),
22 /* LOCATION */
23 struct IconBase *, IconBase, 12, Icon)
25 /* FUNCTION
26 Adds supplied memory chunk to the supplied freelist.
27 All memory added in to the freelist can later be deallocated through
28 one single FreeFreeList() call.
30 INPUTS
31 freelist - pointer to freelist struct previously allocated by
32 the programmer.
33 mem - memory to add to the freelist.
34 size - size of memory chunk to add to the frelist.
36 RESULT
37 FALSE on failure, else TRUE.
39 NOTES
41 EXAMPLE
43 BUGS
45 SEE ALSO
46 FreeFreeList()
48 INTERNALS
50 HISTORY
52 *****************************************************************************/
54 AROS_LIBFUNC_INIT
56 struct MemList *memlist;
57 struct MemEntry *mementry;
58 /* We get hold of the last memlist node inside the list */
59 memlist = (struct MemList*)freelist->fl_MemList.lh_TailPred;
61 /* Is this memlist full ? */
62 if (freelist->fl_NumFree == 0)
64 /* No more room, we must allocate a new entry */
65 if (!(memlist = AllocMem (sizeof(struct IconInternalMemList),
66 MEMF_CLEAR)
67 ) )
68 return FALSE;
70 freelist->fl_NumFree = FREELIST_MEMLISTENTRIES;
71 memlist->ml_NumEntries = FREELIST_MEMLISTENTRIES;
73 AddTail ((struct List*)&freelist->fl_MemList, (struct Node*)memlist);
76 /* Insert the the supplied parameters */
77 mementry = &memlist->ml_ME[freelist->fl_NumFree - 1];
79 mementry->me_Un.meu_Addr = mem;
80 mementry->me_Length = size;
82 freelist->fl_NumFree--;
84 return TRUE;
85 AROS_LIBFUNC_EXIT
86 } /* AddFreeList */