This commit is contained in:
parent
961c493986
commit
5cc0d3bc1f
48
ase/include/ase/cmn/sll.h
Normal file
48
ase/include/ase/cmn/sll.h
Normal file
@ -0,0 +1,48 @@
|
||||
/*
|
||||
* $Id: map.h 223 2008-06-26 06:44:41Z baconevi $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
|
||||
#ifndef _ASE_CMN_SLL_H_
|
||||
#define _ASE_CMN_SLL_H_
|
||||
|
||||
#include <ase/types.h>
|
||||
#include <ase/macros.h>
|
||||
|
||||
/*
|
||||
* Singly Linked List
|
||||
*/
|
||||
typedef struct ase_sll_t ase_sll_t;
|
||||
|
||||
struct ase_sll_t
|
||||
{
|
||||
/* map owner. passed to freeval and sameval as the first argument */
|
||||
void* owner;
|
||||
|
||||
ase_sll_node_t* head;
|
||||
ase_sll_node_t* tail;
|
||||
|
||||
ase_size_t size;
|
||||
|
||||
/* the mmgr pointed at by mmgr should be valid
|
||||
* while the list is alive as the contents are
|
||||
* not replicated */
|
||||
ase_mmgr_t* mmgr;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
ase_sll_t* ase_sll_open (ase_mmgr_t* mmgr);
|
||||
void ase_sll_close (ase_sll_t* sll);
|
||||
void ase_sll_clear (ase_sll_t* sll);
|
||||
|
||||
ase_size_t ase_sll_getsize (ase_sll_t* sll);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
28
ase/lib/cmn/sll.c
Normal file
28
ase/lib/cmn/sll.c
Normal file
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
|
||||
#include <ase/cmn/sll.h>
|
||||
#include <ase/cmn/mem.h>
|
||||
|
||||
ase_sll_t* ase_sll_open (ase_mmgr_t* mmgr)
|
||||
{
|
||||
return ase_sll_openx (mmgr, 0, ASE_NULL);
|
||||
}
|
||||
|
||||
ase_sll_openx (ase_mmgr_t* mmgr, ase_size_t extension, ase_fuser_t fuser)
|
||||
{
|
||||
ase_sll_t* sll;
|
||||
|
||||
ssll = ASE_MALLOC (mmgr, ASE_SIZEOF(ase_sll_t) + extension);
|
||||
if (sll == ASE_NULL) return ASE_NULL;
|
||||
|
||||
ase_memset (sll, 0, ASE_SIZEOF(ase_sll_t) + extension);
|
||||
if (mmgr_fuser) mmgr = fuser (mmgr, sll + 1);
|
||||
sll->mmgr = mmgr;
|
||||
|
||||
|
||||
return mmgr;
|
||||
}
|
Loading…
Reference in New Issue
Block a user