enhanced qse_fma_h to have more consistency with qse_xma_h
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: fio.c 323 2010-04-05 12:50:01Z hyunghwan.chung $
|
||||
* $Id: fio.c 348 2010-08-26 06:26:28Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -81,6 +81,8 @@ qse_fio_t* qse_fio_init (
|
||||
{
|
||||
qse_fio_hnd_t handle;
|
||||
|
||||
if (mmgr == QSE_NULL) mmgr = QSE_MMGR_GETDFL();
|
||||
|
||||
QSE_MEMSET (fio, 0, QSE_SIZEOF(*fio));
|
||||
fio->mmgr = mmgr;
|
||||
|
||||
|
@ -29,7 +29,7 @@ qse_fma_t* qse_fma_open (
|
||||
{
|
||||
qse_fma_t* fma;
|
||||
|
||||
if (mmgr == QSE_NULL)
|
||||
if (mmgr == QSE_NULL)
|
||||
{
|
||||
mmgr = QSE_MMGR_GETDFL();
|
||||
|
||||
@ -61,13 +61,14 @@ qse_fma_t* qse_fma_init (
|
||||
qse_fma_t* fma, qse_mmgr_t* mmgr,
|
||||
qse_size_t blksize, qse_size_t maxblks, qse_size_t maxcnks)
|
||||
{
|
||||
if (mmgr == QSE_NULL) mmgr = QSE_MMGR_GETDFL();
|
||||
|
||||
QSE_MEMSET (fma, 0, QSE_SIZEOF(*fma));
|
||||
fma->mmgr = mmgr;
|
||||
|
||||
if (blksize <= QSE_SIZEOF(qse_fma_blk_t))
|
||||
if (blksize < QSE_SIZEOF(qse_fma_blk_t))
|
||||
blksize = QSE_SIZEOF(qse_fma_blk_t);
|
||||
if (maxblks <= 0) maxblks = 1;
|
||||
if (maxcnks <= 0) maxcnks = 1;
|
||||
|
||||
fma->blksize = blksize;
|
||||
fma->maxblks = maxblks;
|
||||
@ -78,6 +79,7 @@ qse_fma_t* qse_fma_init (
|
||||
|
||||
void qse_fma_fini (qse_fma_t* fma)
|
||||
{
|
||||
/* destroys the chunks allocated */
|
||||
while (fma->cnkhead)
|
||||
{
|
||||
qse_fma_cnk_t* next = fma->cnkhead->next;
|
||||
@ -93,7 +95,7 @@ static QSE_INLINE qse_fma_cnk_t* add_chunk (qse_fma_t* fma)
|
||||
qse_size_t i;
|
||||
|
||||
/* check if there are too many chunks */
|
||||
if (fma->numcnks >= fma->maxcnks) return QSE_NULL;
|
||||
if (fma->maxcnks && fma->numcnks >= fma->maxcnks) return QSE_NULL;
|
||||
|
||||
/* allocate a chunk */
|
||||
cnk = (qse_fma_cnk_t*) QSE_MMGR_ALLOC (fma->mmgr,
|
||||
@ -118,10 +120,16 @@ static QSE_INLINE qse_fma_cnk_t* add_chunk (qse_fma_t* fma)
|
||||
return cnk;
|
||||
}
|
||||
|
||||
void* qse_fma_alloc (qse_fma_t* fma)
|
||||
void* qse_fma_alloc (qse_fma_t* fma, qse_size_t size)
|
||||
{
|
||||
void* blk;
|
||||
|
||||
QSE_ASSERTX (size <= fma->blksize,
|
||||
"You must not request a block larger than the fixed size set in the allocator. Use a generic allocator instead"
|
||||
);
|
||||
|
||||
if (size > fma->blksize) return QSE_NULL;
|
||||
|
||||
if ((blk = fma->freeblk) == QSE_NULL)
|
||||
{
|
||||
if (add_chunk (fma) == QSE_NULL) return QSE_NULL;
|
||||
@ -131,9 +139,23 @@ void* qse_fma_alloc (qse_fma_t* fma)
|
||||
return blk;
|
||||
}
|
||||
|
||||
void* qse_fma_realloc (qse_fma_t* fma, void* blk, qse_size_t size)
|
||||
{
|
||||
if (blk)
|
||||
{
|
||||
QSE_ASSERTX (size <= fma->blksize,
|
||||
"A block can be enlarged with a fixed-size block allocator. Use a generic allocator instead"
|
||||
);
|
||||
|
||||
if (size > fma->blksize) return QSE_NULL;
|
||||
return blk;
|
||||
}
|
||||
|
||||
return qse_fma_alloc (fma, size);
|
||||
}
|
||||
|
||||
void qse_fma_free (qse_fma_t* fma, void* blk)
|
||||
{
|
||||
((qse_fma_blk_t*)blk)->next = fma->freeblk;
|
||||
fma->freeblk = blk;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: htb.c 332 2010-07-13 11:25:24Z hyunghwan.chung $
|
||||
* $Id: htb.c 348 2010-08-26 06:26:28Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -248,11 +248,14 @@ void qse_htb_close (htb_t* htb)
|
||||
|
||||
htb_t* qse_htb_init (htb_t* htb, mmgr_t* mmgr, size_t capa, int factor)
|
||||
{
|
||||
if (mmgr == QSE_NULL) mmgr = QSE_MMGR_GETDFL();
|
||||
|
||||
QSE_ASSERTX (capa > 0,
|
||||
"The initial capacity should be greater than 0. Otherwise, it is adjusted to 1 in the release mode");
|
||||
QSE_ASSERTX (factor >= 0 && factor <= 100,
|
||||
"The load factor should be between 0 and 100 inclusive. In the release mode, a value out of the range is adjusted to 100");
|
||||
|
||||
|
||||
/* some initial adjustment */
|
||||
if (capa <= 0) capa = 1;
|
||||
if (factor > 100) factor = 100;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: lda.c 327 2010-05-10 13:15:55Z hyunghwan.chung $
|
||||
* $Id: lda.c 348 2010-08-26 06:26:28Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -108,10 +108,10 @@ lda_t* qse_lda_open (mmgr_t* mmgr, size_t ext, size_t capa)
|
||||
if (mmgr == QSE_NULL) return QSE_NULL;
|
||||
}
|
||||
|
||||
lda = QSE_MMGR_ALLOC (mmgr, QSE_SIZEOF(lda_t) + ext);
|
||||
if (lda == QSE_NULL) return QSE_NULL;
|
||||
lda = QSE_MMGR_ALLOC (mmgr, QSE_SIZEOF(lda_t) + ext);
|
||||
if (lda == QSE_NULL) return QSE_NULL;
|
||||
|
||||
if (qse_lda_init (lda, mmgr, capa) == QSE_NULL)
|
||||
if (qse_lda_init (lda, mmgr, capa) == QSE_NULL)
|
||||
{
|
||||
QSE_MMGR_FREE (mmgr, lda);
|
||||
return QSE_NULL;
|
||||
@ -128,6 +128,8 @@ void qse_lda_close (lda_t* lda)
|
||||
|
||||
lda_t* qse_lda_init (lda_t* lda, mmgr_t* mmgr, size_t capa)
|
||||
{
|
||||
if (mmgr == QSE_NULL) mmgr = QSE_MMGR_GETDFL();
|
||||
|
||||
QSE_MEMSET (lda, 0, QSE_SIZEOF(*lda));
|
||||
|
||||
lda->mmgr = mmgr;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: pio.c 316 2009-12-14 12:50:11Z hyunghwan.chung $
|
||||
* $Id: pio.c 348 2010-08-26 06:26:28Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -72,7 +72,6 @@ void qse_pio_close (qse_pio_t* pio)
|
||||
qse_pio_t* qse_pio_init (
|
||||
qse_pio_t* pio, qse_mmgr_t* mmgr, const qse_char_t* cmd, int oflags)
|
||||
{
|
||||
|
||||
qse_pio_hnd_t handle[6] =
|
||||
{
|
||||
QSE_PIO_HND_NIL,
|
||||
@ -92,6 +91,8 @@ qse_pio_t* qse_pio_init (
|
||||
|
||||
int i, minidx = -1, maxidx = -1;
|
||||
|
||||
if (mmgr == QSE_NULL) mmgr = QSE_MMGR_GETDFL();
|
||||
|
||||
#ifdef _WIN32
|
||||
SECURITY_ATTRIBUTES secattr;
|
||||
PROCESS_INFORMATION procinfo;
|
||||
|
@ -192,6 +192,8 @@ void qse_rbt_close (rbt_t* rbt)
|
||||
|
||||
rbt_t* qse_rbt_init (rbt_t* rbt, mmgr_t* mmgr)
|
||||
{
|
||||
if (mmgr == QSE_NULL) mmgr = QSE_MMGR_GETDFL();
|
||||
|
||||
/* do not zero out the extension */
|
||||
QSE_MEMSET (rbt, 0, SIZEOF(*rbt));
|
||||
rbt->mmgr = mmgr;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: rex.c 328 2010-07-08 06:58:44Z hyunghwan.chung $
|
||||
* $Id: rex.c 348 2010-08-26 06:26:28Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -118,6 +118,8 @@ struct cand_t
|
||||
|
||||
qse_rex_t* qse_rex_init (qse_rex_t* rex, qse_mmgr_t* mmgr, qse_rex_node_t* code)
|
||||
{
|
||||
if (mmgr == QSE_NULL) mmgr = QSE_MMGR_GETDFL();
|
||||
|
||||
QSE_MEMSET (rex, 0, QSE_SIZEOF(*rex));
|
||||
rex->mmgr = mmgr;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: sio.c 340 2010-08-01 13:13:38Z hyunghwan.chung $
|
||||
* $Id: sio.c 348 2010-08-26 06:26:28Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -178,6 +178,8 @@ qse_sio_t* qse_sio_init (
|
||||
{
|
||||
int mode;
|
||||
|
||||
if (mmgr == QSE_NULL) mmgr = QSE_MMGR_GETDFL();
|
||||
|
||||
QSE_MEMSET (sio, 0, QSE_SIZEOF(*sio));
|
||||
sio->mmgr = mmgr;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: sll.c 328 2010-07-08 06:58:44Z hyunghwan.chung $
|
||||
* $Id: sll.c 348 2010-08-26 06:26:28Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -124,6 +124,8 @@ void qse_sll_close (sll_t* sll)
|
||||
|
||||
sll_t* qse_sll_init (sll_t* sll, mmgr_t* mmgr)
|
||||
{
|
||||
if (mmgr == QSE_NULL) mmgr = QSE_MMGR_GETDFL();
|
||||
|
||||
/* do not zero out the extension */
|
||||
QSE_MEMSET (sll, 0, SIZEOF(*sll));
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: str_dyn.c 297 2009-10-08 13:09:19Z hyunghwan.chung $
|
||||
* $Id: str_dyn.c 348 2010-08-26 06:26:28Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -57,6 +57,8 @@ void qse_str_close (qse_str_t* str)
|
||||
|
||||
qse_str_t* qse_str_init (qse_str_t* str, qse_mmgr_t* mmgr, qse_size_t capa)
|
||||
{
|
||||
if (mmgr == QSE_NULL) mmgr = QSE_MMGR_GETDFL();
|
||||
|
||||
QSE_MEMSET (str, 0, QSE_SIZEOF(qse_str_t));
|
||||
|
||||
str->mmgr = mmgr;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: tio.c 287 2009-09-15 10:01:02Z hyunghwan.chung $
|
||||
* $Id: tio.c 348 2010-08-26 06:26:28Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -58,6 +58,8 @@ int qse_tio_close (qse_tio_t* tio)
|
||||
|
||||
qse_tio_t* qse_tio_init (qse_tio_t* tio, qse_mmgr_t* mmgr)
|
||||
{
|
||||
if (mmgr == QSE_NULL) mmgr = QSE_MMGR_GETDFL();
|
||||
|
||||
QSE_MEMSET (tio, 0, QSE_SIZEOF(*tio));
|
||||
|
||||
tio->mmgr = mmgr;
|
||||
|
@ -142,6 +142,8 @@ qse_xma_t* qse_xma_init (qse_xma_t* xma, qse_mmgr_t* mmgr, qse_size_t zonesize)
|
||||
qse_xma_blk_t* free;
|
||||
qse_size_t xfi;
|
||||
|
||||
if (mmgr == QSE_NULL) mmgr = QSE_MMGR_GETDFL();
|
||||
|
||||
/* round 'zonesize' to be the multiples of ALIGN */
|
||||
zonesize = ((zonesize + ALIGN - 1) / ALIGN) * ALIGN;
|
||||
|
||||
|
@ -109,6 +109,8 @@ void qse_cut_close (qse_cut_t* cut)
|
||||
|
||||
static qse_cut_t* qse_cut_init (qse_cut_t* cut, qse_mmgr_t* mmgr)
|
||||
{
|
||||
if (mmgr == QSE_NULL) mmgr = QSE_MMGR_GETDFL();
|
||||
|
||||
QSE_MEMSET (cut, 0, QSE_SIZEOF(*cut));
|
||||
|
||||
cut->mmgr = mmgr;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: sed.c 344 2010-08-17 13:15:14Z hyunghwan.chung $
|
||||
* $Id: sed.c 348 2010-08-26 06:26:28Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -75,6 +75,8 @@ void qse_sed_close (qse_sed_t* sed)
|
||||
|
||||
static qse_sed_t* qse_sed_init (qse_sed_t* sed, qse_mmgr_t* mmgr)
|
||||
{
|
||||
if (mmgr == QSE_NULL) mmgr = QSE_MMGR_GETDFL();
|
||||
|
||||
QSE_MEMSET (sed, 0, QSE_SIZEOF(*sed));
|
||||
sed->mmgr = mmgr;
|
||||
sed->errstr = qse_sed_dflerrstr;
|
||||
|
Reference in New Issue
Block a user