libUPnP  1.6.17
FreeList.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002  *
00003  * Copyright (c) 2000-2003 Intel Corporation 
00004  * All rights reserved. 
00005  *
00006  * Redistribution and use in source and binary forms, with or without 
00007  * modification, are permitted provided that the following conditions are met: 
00008  *
00009  * * Redistributions of source code must retain the above copyright notice, 
00010  * this list of conditions and the following disclaimer. 
00011  * * Redistributions in binary form must reproduce the above copyright notice, 
00012  * this list of conditions and the following disclaimer in the documentation 
00013  * and/or other materials provided with the distribution. 
00014  * * Neither name of Intel Corporation nor the names of its contributors 
00015  * may be used to endorse or promote products derived from this software 
00016  * without specific prior written permission.
00017  * 
00018  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
00019  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
00020  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
00021  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR 
00022  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
00023  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
00024  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
00025  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
00026  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00027  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
00028  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00029  *
00030  ******************************************************************************/
00031 
00032 #ifndef FREE_LIST_H
00033 #define FREE_LIST_H
00034 
00039 #ifdef __cplusplus
00040 extern "C" {
00041 #endif
00042 
00043 #include "ithread.h"
00044 
00045 #include <errno.h>
00046 
00052 typedef struct FREELISTNODE
00053 {
00054         struct FREELISTNODE *next;
00055 } FreeListNode;
00056 
00061 typedef struct FREELIST
00062 {
00063         FreeListNode *head;
00064         size_t element_size;
00065         int maxFreeListLength;
00066         int freeListLength;
00067 } FreeList;
00068 
00078 int FreeListInit(
00080         FreeList *free_list,
00082         size_t elementSize,
00085         int maxFreeListLength);
00086 
00095 void *FreeListAlloc(
00097         FreeList *free_list);
00098 
00109 int FreeListFree(
00111         FreeList *free_list,
00113         void *element);
00114 
00122 int FreeListDestroy(
00124         FreeList *free_list);
00125 
00126 #ifdef __cplusplus
00127 }
00128 #endif
00129 
00130 #endif /* FREE_LIST_H */
00131