Example #1
0
/**
 * Find deepest level of the match that has a queue
 * @param m the first in a chain of matches
 * @return the topmost match with a queue
 */
static match *match_deepest_queued( match *m )
{
    int i;
    if ( m->next != NULL )
    {
        dyn_array *da = dyn_array_create( 5 );
        if ( da != NULL )
        {
            match *temp = m;
            while ( temp != NULL )
            {
                dyn_array_add( da, temp );
                temp = temp->next;
            }
            for ( i=dyn_array_size(da)-1;i>=0;i-- )
            {
                match *n = dyn_array_get(da,i);
                if ( n->queue != NULL )
                {
                    m = n;
                    // clean up any non-queued matches
                    if ( m->next != NULL )
                        match_dispose( m->next );
                    m->next = NULL;
                    break;
                }
            }
            dyn_array_dispose( da );
        }
    }
    return m;
}
Example #2
0
static void
dyn_array_ptr_add (DynPtrArray *da, void *ptr)
{
	void **p;

	if (da->array.capacity == 0) {
		da->array.capacity = 1;
		da->array.size = 1;
		p = (void**)&da->array.data;
	} else if (da->array.capacity == 1) {
		void *ptr0 = da->array.data;
		void **p0;
		dyn_array_init (&da->array);
		p0 = dyn_array_add (&da->array, sizeof (void*));
		*p0 = ptr0;
		p = dyn_array_add (&da->array, sizeof (void*));
	} else {
		p = dyn_array_add (&da->array, sizeof (void*));
	}
	*p = ptr;
}
Example #3
0
/**
 * Convert a list of cards to a standard pair array
 * @param c the head of the card list
 * @return an allocated dynamic array of pairs or NULL
 */
dyn_array *card_to_pairs( card *c )
{
    int npairs = card_list_len(c);
    dyn_array *da = dyn_array_create( npairs );
    if ( da != NULL )
    {
        while ( c != NULL )
        {
            dyn_array_add( da, c->p );
            c = c->right;
        }
    }
    return da;
}
Example #4
0
static void
dyn_array_ptr_add (DynPtrArray *da, void *ptr)
{
	void **p;

#ifdef OPTIMIZATION_SINGLETON_DYN_ARRAY
	if (da->array.capacity == 0) {
		da->array.capacity = 1;
		da->array.size = 1;
		p = (void**)&da->array.data;
	} else if (da->array.capacity == 1) {
		void *ptr0 = da->array.data;
		void **p0;
		dyn_array_init (&da->array);
		p0 = dyn_array_add (&da->array, sizeof (void*));
		*p0 = ptr0;
		p = dyn_array_add (&da->array, sizeof (void*));
	} else
#endif
	{
		p = dyn_array_add (&da->array, sizeof (void*));
	}
	*p = ptr;
}
Example #5
0
static void
dyn_array_int_add (DynArray *da, int x)
{
	int *p = dyn_array_add (da);
	*p = x;
}
Example #6
0
static void
dyn_array_ptr_add (DynArray *da, void *ptr)
{
	void **p = dyn_array_add (da);
	*p = ptr;
}
Example #7
0
static SCC*
dyn_array_scc_add (DynSCCArray *da)
{
	return dyn_array_add (&da->array, sizeof (SCC));
}
Example #8
0
static void
dyn_array_ptr_add (DynPtrArray *da, void *ptr)
{
	void **p = dyn_array_add (&da->array, sizeof (void*));
	*p = ptr;
}
Example #9
0
static void
dyn_array_int_add (DynIntArray *da, int x)
{
	int *p = dyn_array_add (&da->array, sizeof (int));
	*p = x;
}