summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2009-04-15 15:46:15 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2009-04-15 15:46:15 +0000
commita8c732492a0a3e2bc576d945b9d6a964a082b96e (patch)
tree97d94b1486684ecf20d37db34fd04454509db7da /src
parent87890ea35e827b23daeb21028efca73f11f2d659 (diff)
downloadlibparserutils-a8c732492a0a3e2bc576d945b9d6a964a082b96e.tar.gz
libparserutils-a8c732492a0a3e2bc576d945b9d6a964a082b96e.tar.bz2
Remove chunkarray implementation. It's unused.
svn path=/trunk/libparserutils/; revision=7093
Diffstat (limited to 'src')
-rw-r--r--src/utils/Makefile2
-rw-r--r--src/utils/chunkarray.c229
-rw-r--r--src/utils/chunkarray.h31
3 files changed, 1 insertions, 261 deletions
diff --git a/src/utils/Makefile b/src/utils/Makefile
index ad78422..b290ef1 100644
--- a/src/utils/Makefile
+++ b/src/utils/Makefile
@@ -1,4 +1,4 @@
# Sources
-DIR_SOURCES := chunkarray.c buffer.c errors.c stack.c vector.c
+DIR_SOURCES := buffer.c errors.c stack.c vector.c
include build/makefiles/Makefile.subdir
diff --git a/src/utils/chunkarray.c b/src/utils/chunkarray.c
deleted file mode 100644
index fc2ab8b..0000000
--- a/src/utils/chunkarray.c
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * This file is part of LibParserUtils.
- * Licensed under the MIT License,
- * http://www.opensource.org/licenses/mit-license.php
- * Copyright 2008 John-Mark Bell <jmb@netsurf-browser.org>
- */
-
-#include <stdio.h>
-#include <string.h>
-
-#include "utils/chunkarray.h"
-#include "utils/utils.h"
-
-typedef struct chunk chunk;
-
-struct chunk {
-#define CHUNK_SIZE (4096)
- chunk *next;
-
- uint32_t used;
-
- uint8_t data[CHUNK_SIZE];
-};
-
-struct parserutils_chunkarray {
- chunk *used_chunks;
-
- chunk *free_chunks;
-
- parserutils_alloc alloc;
- void *pw;
-};
-
-/**
- * Create a chunked array
- *
- * \param alloc Memory (de)allocation function
- * \param pw Pointer to client-specific private data
- * \param array Pointer to location to receive array instance
- * \return PARSERUTILS_OK on success, appropriate error otherwise
- */
-parserutils_error parserutils_chunkarray_create(parserutils_alloc alloc,
- void *pw, parserutils_chunkarray **array)
-{
- parserutils_chunkarray *c;
-
- if (alloc == NULL || array == NULL)
- return PARSERUTILS_BADPARM;
-
- c = alloc(0, sizeof(parserutils_chunkarray), pw);
- if (c == NULL)
- return PARSERUTILS_NOMEM;
-
- c->used_chunks = NULL;
- c->free_chunks = NULL;
-
- c->alloc = alloc;
- c->pw = pw;
-
- *array = c;
-
- return PARSERUTILS_OK;
-}
-
-/**
- * Destroy a chunked array
- *
- * \param array The array to destroy
- * \return PARSERUTILS_OK on success, appropriate error otherwise
- */
-parserutils_error parserutils_chunkarray_destroy(parserutils_chunkarray *array)
-{
- chunk *c, *d;
-
- if (array == NULL)
- return PARSERUTILS_BADPARM;
-
- for (c = array->used_chunks; c != NULL; c = d) {
- d = c->next;
- array->alloc(c, 0, array->pw);
- }
-
- for (c = array->free_chunks; c != NULL; c = d) {
- d = c->next;
- array->alloc(c, 0, array->pw);
- }
-
- array->alloc(array, 0, array->pw);
-
- return PARSERUTILS_OK;
-}
-
-/**
- * Insert an item into an array
- *
- * \param array The array to insert into
- * \param data Pointer to data to insert
- * \param len Length, in bytes, of data
- * \param inserted Pointer to location to receive pointer to inserted data
- * \return PARSERUTILS_OK on success, appropriate error otherwise
- */
-parserutils_error parserutils_chunkarray_insert(parserutils_chunkarray *array,
- const void *data, uint16_t len,
- const parserutils_chunkarray_entry **inserted)
-{
- parserutils_chunkarray_entry *entry;
- size_t required_length;
-
- if (array == NULL || data == NULL || inserted == NULL)
- return PARSERUTILS_BADPARM;
-
- /* Calculate the required length.
- * We require that each entry be an exact multiple of 4. */
- required_length = ALIGN(sizeof(parserutils_chunkarray_entry) + len);
-
- /* If we're trying to insert data larger than CHUNK_SIZE, then it
- * gets its own chunk. */
- if (required_length > CHUNK_SIZE) {
- chunk *c = array->alloc(0,
- sizeof(chunk) + required_length - CHUNK_SIZE,
- array->pw);
- if (c == NULL)
- return PARSERUTILS_NOMEM;
-
- /* Populate chunk */
- entry = (parserutils_chunkarray_entry *) (void *) c->data;
- memcpy(entry->data, data, len);
- entry->length = len;
- c->used = required_length;
-
- /* And put it into the used list */
- c->next = array->used_chunks;
- array->used_chunks = c;
- } else {
- /* Scan the free list until we find a chunk with enough space */
- chunk *c, *prev;
-
- for (prev = NULL, c = array->free_chunks; c != NULL;
- prev = c, c = c->next) {
- if (CHUNK_SIZE - c->used >= required_length)
- break;
- }
-
- if (c == NULL) {
- /* None big enough, create a new one */
- c = array->alloc(0, sizeof(chunk), array->pw);
- if (c == NULL)
- return PARSERUTILS_NOMEM;
-
- c->used = 0;
-
- /* Insert it at the head of the free list */
- c->next = array->free_chunks;
- array->free_chunks = c;
-
- /* And ensure that prev is kept in sync */
- prev = NULL;
- }
-
- /* Populate chunk */
- entry = (parserutils_chunkarray_entry *)
- (void *) (c->data + c->used);
- memcpy(entry->data, data, len);
- entry->length = len;
- c->used += required_length;
-
- /* If we've now filled the chunk, move it to the used list */
- if (c->used == CHUNK_SIZE) {
- if (prev != NULL)
- prev->next = c->next;
- else
- array->free_chunks = c->next;
-
- c->next = array->used_chunks;
- array->used_chunks = c;
- }
- }
-
- (*inserted) = entry;
-
- return PARSERUTILS_OK;
-}
-
-/******************************************************************************
- * Private functions *
- ******************************************************************************/
-
-extern void parserutils_chunkarray_dump(parserutils_chunkarray *array);
-
-/**
- * Dump details of a chunked array to stdout
- *
- * \param array The array to dump
- */
-void parserutils_chunkarray_dump(parserutils_chunkarray *array)
-{
- uint32_t n = 0;
- size_t count = 0;
- size_t total = sizeof(parserutils_chunkarray);
- chunk *c;
-
- for (c = array->used_chunks; c != NULL; c = c->next) {
- n++;
- count += c->used;
- if (c->used == CHUNK_SIZE)
- total += sizeof(chunk);
- else
- total += sizeof(chunk) + c->used - CHUNK_SIZE;
- }
-
- printf("%u full blocks: %zu bytes\n", n, count);
-
- n = 0;
- count = 0;
-
- for (c = array->free_chunks; c != NULL; c = c->next) {
- n++;
- count += c->used;
- total += sizeof(chunk);
- }
-
- printf("%u partial blocks: %zu bytes (of %u => %f%%)\n", n, count,
- n * CHUNK_SIZE,
- (count * 100) / ((float) n * CHUNK_SIZE));
-
- printf("Total: %zu (%u) (%u)\n", total, (unsigned int) sizeof(chunk),
- (unsigned int) sizeof(parserutils_chunkarray));
-}
-
diff --git a/src/utils/chunkarray.h b/src/utils/chunkarray.h
deleted file mode 100644
index 2ba0bff..0000000
--- a/src/utils/chunkarray.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * This file is part of LibParserUtils.
- * Licensed under the MIT License,
- * http://www.opensource.org/licenses/mit-license.php
- * Copyright 2008 John-Mark Bell <jmb@netsurf-browser.org>
- */
-
-#ifndef parserutils_utils_chunkarray_h_
-#define parserutils_utils_chunkarray_h_
-
-#include <parserutils/errors.h>
-#include <parserutils/functypes.h>
-
-typedef struct parserutils_chunkarray_entry {
- uint16_t length;
- uint8_t data[];
-} parserutils_chunkarray_entry;
-
-struct parserutils_chunkarray;
-typedef struct parserutils_chunkarray parserutils_chunkarray;
-
-parserutils_error parserutils_chunkarray_create(parserutils_alloc alloc,
- void *pw, parserutils_chunkarray **array);
-parserutils_error parserutils_chunkarray_destroy(parserutils_chunkarray *array);
-
-parserutils_error parserutils_chunkarray_insert(parserutils_chunkarray *array,
- const void *data, uint16_t len,
- const parserutils_chunkarray_entry **inserted);
-
-#endif
-