Lines Matching defs:mem
223 UToolMemory *mem;
229 mem=(UToolMemory *)uprv_malloc(sizeof(UToolMemory)+initialCapacity*size);
230 if(mem==NULL) {
234 mem->array=mem->staticArray;
236 uprv_strcpy(mem->name, name);
237 mem->capacity=initialCapacity;
238 mem->maxCapacity=maxCapacity;
239 mem->size=size;
240 mem->idx=0;
241 return mem;
245 utm_close(UToolMemory *mem) {
246 if(mem!=NULL) {
247 if(mem->array!=mem->staticArray) {
248 uprv_free(mem->array);
250 uprv_free(mem);
256 utm_getStart(UToolMemory *mem) {
257 return (char *)mem->array;
261 utm_countItems(UToolMemory *mem) {
262 return mem->idx;
267 utm_hasCapacity(UToolMemory *mem, int32_t capacity) {
268 if(mem->capacity<capacity) {
271 if(mem->maxCapacity<capacity) {
273 mem->name, (long)mem->maxCapacity);
278 if(capacity>=2*mem->capacity) {
280 } else if(mem->capacity<=mem->maxCapacity/3) {
281 newCapacity=2*mem->capacity;
283 newCapacity=mem->maxCapacity;
286 if(mem->array==mem->staticArray) {
287 mem->array=uprv_malloc(newCapacity*mem->size);
288 if(mem->array!=NULL) {
289 uprv_memcpy(mem->array, mem->staticArray, mem->idx*mem->size);
292 mem->array=uprv_realloc(mem->array, newCapacity*mem->size);
295 if(mem->array==NULL) {
296 fprintf(stderr, "error: %s - out of memory\n", mem->name);
299 mem->capacity=newCapacity;
306 utm_alloc(UToolMemory *mem) {
308 int32_t oldIndex=mem->idx;
310 if(utm_hasCapacity(mem, newIndex)) {
311 p=(char *)mem->array+oldIndex*mem->size;
312 mem->idx=newIndex;
313 uprv_memset(p, 0, mem->size);
319 utm_allocN(UToolMemory *mem, int32_t n) {
321 int32_t oldIndex=mem->idx;
323 if(utm_hasCapacity(mem, newIndex)) {
324 p=(char *)mem->array+oldIndex*mem->size;
325 mem->idx=newIndex;
326 uprv_memset(p, 0, n*mem->size);