use size_t instead of unsigned int.

This commit is contained in:
Florian Westphal 2005-08-30 13:36:32 +00:00
parent db992975eb
commit b7033e1478
2 changed files with 36 additions and 45 deletions

View File

@ -12,7 +12,7 @@
#include "array.h" #include "array.h"
static char UNUSED id[] = "$Id: array.c,v 1.7 2005/08/28 12:18:50 fw Exp $"; static char UNUSED id[] = "$Id: array.c,v 1.8 2005/08/30 13:36:32 fw Exp $";
#include <assert.h> #include <assert.h>
@ -29,9 +29,9 @@ static char UNUSED id[] = "$Id: array.c,v 1.7 2005/08/28 12:18:50 fw Exp $";
static bool static bool
safemult_uint(unsigned int a, unsigned int b, unsigned int *res) safemult_sizet(size_t a, size_t b, size_t *res)
{ {
unsigned int tmp; size_t tmp;
if (!a || !b) { if (!a || !b) {
*res = 0; *res = 0;
@ -60,10 +60,10 @@ array_init(array *a)
/* if realloc() fails, array_alloc return NULL. otherwise return pointer to elem pos in array */ /* if realloc() fails, array_alloc return NULL. otherwise return pointer to elem pos in array */
void * void *
array_alloc(array * a, unsigned int size, unsigned int pos) array_alloc(array * a, size_t size, size_t pos)
{ {
unsigned int alloc, pos_plus1 = pos + 1; size_t alloc, pos_plus1 = pos + 1;
unsigned int aligned = 0; size_t aligned = 0;
char *tmp; char *tmp;
assert(size > 0); assert(size > 0);
@ -71,7 +71,7 @@ array_alloc(array * a, unsigned int size, unsigned int pos)
if (pos_plus1 < pos) if (pos_plus1 < pos)
return NULL; return NULL;
if (!safemult_uint(size, pos_plus1, &alloc)) if (!safemult_sizet(size, pos_plus1, &alloc))
return NULL; return NULL;
if (a->allocated < alloc) { if (a->allocated < alloc) {
@ -117,8 +117,8 @@ array_alloc(array * a, unsigned int size, unsigned int pos)
/*return number of initialized ELEMS in a. */ /*return number of initialized ELEMS in a. */
unsigned int size_t
array_length(const array * const a, unsigned int membersize) array_length(const array * const a, size_t membersize)
{ {
assert(a != NULL); assert(a != NULL);
assert(membersize > 0); assert(membersize > 0);
@ -141,27 +141,18 @@ array_copy(array * dest, const array * const src)
} }
/* return false if we could not append src (realloc failure, invalid src/dest array) */ /* return false on failure (realloc failure, invalid src/dest array) */
bool bool
array_copyb(array * dest, const char *src, unsigned int len) array_copyb(array * dest, const char *src, size_t len)
{ {
assert(dest != NULL); assert(dest != NULL);
assert(src != NULL ); assert(src != NULL );
if (!len || !src) if (!src || !dest)
return true;
if (!array_alloc(dest, 1, len))
return false; return false;
dest->used = len; array_trunc(dest);
memcpy(dest->mem, src, len); return array_catb(dest, src, len);
#ifdef DEBUG
Log(LOG_DEBUG,
"array_copyb(): copied %u bytes to array (%u bytes allocated).",
len, dest->allocated);
#endif
return true;
} }
@ -176,10 +167,10 @@ array_copys(array * dest, const char *src)
/* append len bytes from src to the array dest. /* append len bytes from src to the array dest.
return false if we could not append all bytes (realloc failure, invalid src/dest array) */ return false if we could not append all bytes (realloc failure, invalid src/dest array) */
bool bool
array_catb(array * dest, const char *src, unsigned int len) array_catb(array * dest, const char *src, size_t len)
{ {
unsigned int tmp; size_t tmp;
unsigned int used; size_t used;
char *ptr; char *ptr;
assert(dest != NULL); assert(dest != NULL);
@ -258,9 +249,9 @@ array_cat(array * dest, const array * const src)
return NULL if the array is unallocated, or if pos is larger than return NULL if the array is unallocated, or if pos is larger than
the number of elements stored int the array. */ the number of elements stored int the array. */
void * void *
array_get(array * a, unsigned int membersize, unsigned int pos) array_get(array * a, size_t membersize, size_t pos)
{ {
unsigned int totalsize; size_t totalsize;
assert(membersize > 0); assert(membersize > 0);
assert(a != NULL); assert(a != NULL);
@ -268,7 +259,7 @@ array_get(array * a, unsigned int membersize, unsigned int pos)
if (array_UNUSABLE(a)) if (array_UNUSABLE(a))
return NULL; return NULL;
if (!safemult_uint(pos, membersize, &totalsize)) if (!safemult_sizet(pos, membersize, &totalsize))
return NULL; return NULL;
if (a->allocated < totalsize) if (a->allocated < totalsize)
@ -321,11 +312,11 @@ array_trunc(array * a)
void void
array_truncate(array * a, unsigned int membersize, unsigned int len) array_truncate(array * a, size_t membersize, size_t len)
{ {
unsigned int newlen; size_t newlen;
assert(a != NULL); assert(a != NULL);
if (!safemult_uint(membersize, len, &newlen)) if (!safemult_sizet(membersize, len, &newlen))
return; return;
if (newlen <= a->allocated) if (newlen <= a->allocated)
@ -335,9 +326,9 @@ array_truncate(array * a, unsigned int membersize, unsigned int len)
/* move elements starting at pos to beginning of array */ /* move elements starting at pos to beginning of array */
void void
array_moveleft(array * a, unsigned int membersize, unsigned int pos) array_moveleft(array * a, size_t membersize, size_t pos)
{ {
unsigned int bytepos; size_t bytepos;
assert(a != NULL); assert(a != NULL);
assert(membersize > 0); assert(membersize > 0);
@ -345,7 +336,7 @@ array_moveleft(array * a, unsigned int membersize, unsigned int pos)
if (!pos) if (!pos)
return; return;
if (!safemult_uint(membersize, pos, &bytepos)) { if (!safemult_sizet(membersize, pos, &bytepos)) {
a->used = 0; a->used = 0;
return; return;
} }

View File

@ -8,7 +8,7 @@
* libarray - dynamically allocate arrays. * libarray - dynamically allocate arrays.
* Copyright (c) 2005 Florian Westphal (westphal@foo.fh-furtwangen.de) * Copyright (c) 2005 Florian Westphal (westphal@foo.fh-furtwangen.de)
* *
* $Id: array.h,v 1.3 2005/07/28 16:12:50 fw Exp $ * $Id: array.h,v 1.4 2005/08/30 13:36:32 fw Exp $
*/ */
#ifndef array_h_included #ifndef array_h_included
@ -18,8 +18,8 @@
typedef struct { typedef struct {
char * mem; char * mem;
unsigned int allocated; size_t allocated;
unsigned int used; size_t used;
} array; } array;
/* allocated: mem != NULL, used >= 0 && used <= allocated, allocated > 0 /* allocated: mem != NULL, used >= 0 && used <= allocated, allocated > 0
@ -33,13 +33,13 @@ extern void array_init PARAMS((array *a));
/* allocates space for at least nmemb+1 elements of size bytes each. /* allocates space for at least nmemb+1 elements of size bytes each.
return pointer to elem at pos, or NULL if realloc() fails */ return pointer to elem at pos, or NULL if realloc() fails */
extern void * array_alloc PARAMS((array *a, unsigned int size, unsigned int pos)); extern void * array_alloc PARAMS((array *a, size_t size, size_t pos));
/* returns the number of initialized BYTES in a. */ /* returns the number of initialized BYTES in a. */
#define array_bytes(array) ( (array)->used ) #define array_bytes(array) ( (array)->used )
/* returns the number of initialized ELEMS in a. */ /* returns the number of initialized ELEMS in a. */
extern unsigned int array_length PARAMS((const array* const a, unsigned int elemsize)); extern size_t array_length PARAMS((const array* const a, size_t elemsize));
/* _copy functions: copy src to dest. /* _copy functions: copy src to dest.
return true if OK, else false (e. g. realloc failure, invalid src/dest return true if OK, else false (e. g. realloc failure, invalid src/dest
@ -49,7 +49,7 @@ extern unsigned int array_length PARAMS((const array* const a, unsigned int elem
extern bool array_copy PARAMS((array* dest, const array* const src)); extern bool array_copy PARAMS((array* dest, const array* const src));
/* copy len bytes from src to array dest. */ /* copy len bytes from src to array dest. */
extern bool array_copyb PARAMS((array* dest, const char* src, unsigned int len)); extern bool array_copyb PARAMS((array* dest, const char* src, size_t len));
/* copy string to dest */ /* copy string to dest */
extern bool array_copys PARAMS((array* dest, const char* src)); extern bool array_copys PARAMS((array* dest, const char* src));
@ -59,7 +59,7 @@ extern bool array_copys PARAMS((array* dest, const char* src));
array, ...). In that case dest is left unchanged. */ array, ...). In that case dest is left unchanged. */
/* append len bytes from src to array dest. */ /* append len bytes from src to array dest. */
extern bool array_catb PARAMS((array* dest, const char* src, unsigned int len)); extern bool array_catb PARAMS((array* dest, const char* src, size_t len));
/* append string to dest */ /* append string to dest */
extern bool array_cats PARAMS((array* dest, const char* src)); extern bool array_cats PARAMS((array* dest, const char* src));
@ -76,7 +76,7 @@ extern bool array_cat PARAMS((array* dest, const array* const src));
/* return pointer to element at pos. /* return pointer to element at pos.
return NULL if the array is unallocated or if pos is larger than the number return NULL if the array is unallocated or if pos is larger than the number
of elements stored int the array. */ of elements stored int the array. */
extern void* array_get PARAMS((array* a, unsigned int membersize, unsigned int pos)); extern void* array_get PARAMS((array* a, size_t membersize, size_t pos));
/* free the contents of this array. */ /* free the contents of this array. */
extern void array_free PARAMS((array* a)); extern void array_free PARAMS((array* a));
@ -91,10 +91,10 @@ extern void* array_start PARAMS((const array* const a));
extern void array_trunc PARAMS((array* a)); extern void array_trunc PARAMS((array* a));
/* set number of used elements in this array to len */ /* set number of used elements in this array to len */
extern void array_truncate PARAMS((array* a, unsigned int membersize, unsigned int len)); extern void array_truncate PARAMS((array* a, size_t membersize, size_t len));
/* move elements starting at pos to beginning of array */ /* move elements starting at pos to beginning of array */
extern void array_moveleft PARAMS((array* a, unsigned int membersize, unsigned int pos)); extern void array_moveleft PARAMS((array* a, size_t membersize, size_t pos));
#endif #endif