aboutsummaryrefslogtreecommitdiffhomepage
path: root/util.cpp
diff options
context:
space:
mode:
authorGravatar ridiculousfish <corydoras@ridiculousfish.com>2011-12-26 21:50:23 -0800
committerGravatar ridiculousfish <corydoras@ridiculousfish.com>2011-12-26 21:50:23 -0800
commit28ecc68841b233188754dd2603566ddf04c288c3 (patch)
treee6107bbcdc36815d362b029f2e84de93ad172547 /util.cpp
parent7c7aba1202a2c205facd64ab728dcb9472a0b6e1 (diff)
Migrated some more data structures to the STL. Removed some ad-hoc data structure implementations.
Diffstat (limited to 'util.cpp')
-rw-r--r--util.cpp189
1 files changed, 0 insertions, 189 deletions
diff --git a/util.cpp b/util.cpp
index bf3573b0..8c7e3659 100644
--- a/util.cpp
+++ b/util.cpp
@@ -101,88 +101,6 @@ int maxi( int a,
}
-/* Queue functions */
-
-
-void q_init( dyn_queue_t *q )
-{
- q->start = (void **)malloc( sizeof(void*)*1 );
- if( !q->start )
- {
- oom_handler( q );
- return;
- }
- q->stop = &q->start[1];
- q->put_pos = q->get_pos = q->start;
-}
-
-void q_destroy( dyn_queue_t *q )
-{
- free( q->start );
-}
-
-/**
- Reallocate the queue_t
-*/
-static int q_realloc( dyn_queue_t *q )
-{
- void **old_start = q->start;
- void **old_stop = q->stop;
- ptrdiff_t diff;
- int new_size;
-
- new_size = 2*(q->stop-q->start);
-
- q->start=(void**)realloc( q->start, sizeof(void*)*new_size );
- if( !q->start )
- {
- q->start = old_start;
- oom_handler( q );
- return 0;
- }
-
- diff = q->start - old_start;
- q->get_pos += diff;
- q->stop = &q->start[new_size];
- memcpy( old_stop + diff, q->start, sizeof(void*)*(q->get_pos-q->start));
- q->put_pos = old_stop + diff + (q->get_pos-q->start);
-
- return 1;
-}
-
-int q_put( dyn_queue_t *q, void *e )
-{
- *q->put_pos = e;
-
-// fprintf( stderr, "Put element %d to queue %d\n", e, q );
-
- if( ++q->put_pos == q->stop )
- q->put_pos = q->start;
- if( q->put_pos == q->get_pos )
- return q_realloc( q );
- return 1;
-}
-
-void *q_get( dyn_queue_t *q)
-{
- void *e = *q->get_pos;
- if( ++q->get_pos == q->stop )
- q->get_pos = q->start;
- return e;
-}
-
-void *q_peek( dyn_queue_t *q )
-{
- return *q->get_pos;
-}
-
-int q_empty( dyn_queue_t *q )
-{
-// fprintf( stderr, "Queue %d is %s\n", q, (q->put_pos == q->get_pos)?"empty":"non-empty" );
- return q->put_pos == q->get_pos;
-}
-
-
/* Hash table functions */
void hash_init2( hash_table_t *h,
@@ -664,113 +582,6 @@ int hash_ptr_cmp( void *a,
return a == b;
}
-void pq_init( priority_queue_t *q,
- int (*compare)(void *e1, void *e2) )
-{
- q->arr=0;
- q->size=0;
- q->count=0;
- q->compare = compare;
-}
-
-
-int pq_put( priority_queue_t *q,
- void *e )
-{
- int i;
-
- if( q->size == q->count )
- {
- void **old_arr = q->arr;
- int old_size = q->size;
- q->size = maxi( 4, 2*q->size );
- q->arr = (void **)realloc( q->arr, sizeof(void*)*q->size );
- if( q->arr == 0 )
- {
- oom_handler( q );
- q->arr = old_arr;
- q->size = old_size;
- return 0;
- }
- }
-
- i = q->count;
- while( (i>0) && (q->compare( q->arr[(i-1)/2], e )<0 ) )
- {
- q->arr[i] = q->arr[(i-1)/2];
- i = (i-1)/2;
- }
- q->arr[i]=e;
-
- q->count++;
-
- return 1;
-
-}
-
-/**
- Make a valid head
-*/
-static void pq_heapify( priority_queue_t *q, int i )
-{
- int l, r, largest;
- l = 2*(i)+1;
- r = 2*(i)+2;
- if( (l < q->count) && (q->compare(q->arr[l],q->arr[i])>0) )
- {
- largest = l;
- }
- else
- {
- largest = i;
- }
- if( (r < q->count) && (q->compare( q->arr[r],q->arr[largest])>0) )
- {
- largest = r;
- }
-
- if( largest != i )
- {
- void *tmp = q->arr[largest];
- q->arr[largest]=q->arr[i];
- q->arr[i]=tmp;
- pq_heapify( q, largest );
- }
-}
-
-void *pq_get( priority_queue_t *q )
-{
- void *result = q->arr[0];
- q->arr[0] = q->arr[--q->count];
- pq_heapify( q, 0 );
-
-/* pq_check(q, 0 ); */
-/* pq_print( q ); */
-
- return result;
-}
-
-void *pq_peek( priority_queue_t *q )
-{
- return q->arr[0];
-}
-
-int pq_empty( priority_queue_t *q )
-{
- return q->count == 0;
-}
-
-int pq_get_count( priority_queue_t *q )
-{
- return q->count;
-}
-
-void pq_destroy( priority_queue_t *q )
-{
- free( q->arr );
-}
-
-
array_list_t *al_new()
{
array_list_t *res = (array_list_t *)malloc( sizeof( array_list_t ) );