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