change initialization of AVL trees to avoid "strict prototype" warnings
Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
		
							parent
							
								
									65ac9b0711
								
							
						
					
					
						commit
						b70e88c16f
					
				
					 3 changed files with 25 additions and 18 deletions
				
			
		| 
						 | 
				
			
			@ -190,7 +190,6 @@ typedef struct ut_avlTreedef {
 | 
			
		|||
    size_t avlnodeoffset;
 | 
			
		||||
    size_t keyoffset;
 | 
			
		||||
    union {
 | 
			
		||||
        int (*cmp) ();
 | 
			
		||||
        ut_avlCompare_t comparekk;
 | 
			
		||||
        ut_avlCompare_r_t comparekk_r;
 | 
			
		||||
    } u;
 | 
			
		||||
| 
						 | 
				
			
			@ -239,14 +238,14 @@ typedef struct ut_avlCIter {
 | 
			
		|||
} ut_avlCIter_t;
 | 
			
		||||
 | 
			
		||||
/* avlnodeoffset and keyoffset must both be in [0,2**31-1] */
 | 
			
		||||
#define UT_AVL_TREEDEF_INITIALIZER(avlnodeoffset, keyoffset, comparekk, augment) { (avlnodeoffset), (keyoffset), { (int (*) ()) (comparekk) }, (augment), 0, 0 }
 | 
			
		||||
#define UT_AVL_TREEDEF_INITIALIZER_INDKEY(avlnodeoffset, keyoffset, comparekk, augment) { (avlnodeoffset), (keyoffset), { (int (*) ()) (comparekk) }, (augment), UT_AVL_TREEDEF_FLAG_INDKEY, 0 }
 | 
			
		||||
#define UT_AVL_TREEDEF_INITIALIZER_ALLOWDUPS(avlnodeoffset, keyoffset, comparekk, augment) { (avlnodeoffset), (keyoffset), { (int (*) ()) (comparekk) }, (augment), UT_AVL_TREEDEF_FLAG_ALLOWDUPS, 0 }
 | 
			
		||||
#define UT_AVL_TREEDEF_INITIALIZER_INDKEY_ALLOWDUPS(avlnodeoffset, keyoffset, comparekk, augment) { (avlnodeoffset), (keyoffset), { (int (*) ()) (comparekk) }, (augment), UT_AVL_TREEDEF_FLAG_INDKEY|UT_AVL_TREEDEF_FLAG_ALLOWDUPS, 0 }
 | 
			
		||||
#define UT_AVL_TREEDEF_INITIALIZER_R(avlnodeoffset, keyoffset, comparekk, cmparg, augment) { (avlnodeoffset), (keyoffset), { (int (*) ()) (comparekk) }, (augment), UT_AVL_TREEDEF_FLAG_R, (cmparg) }
 | 
			
		||||
#define UT_AVL_TREEDEF_INITIALIZER_INDKEY_R(avlnodeoffset, keyoffset, comparekk, cmparg, augment) { (avlnodeoffset), (keyoffset), { (int (*) ()) (comparekk) }, (augment), UT_AVL_TREEDEF_FLAG_INDKEY|UT_AVL_TREEDEF_FLAG_R, (cmparg) }
 | 
			
		||||
#define UT_AVL_TREEDEF_INITIALIZER_R_ALLOWDUPS(avlnodeoffset, keyoffset, comparekk, cmparg, augment) { (avlnodeoffset), (keyoffset), { (int (*) ()) (comparekk) }, (augment), UT_AVL_TREEDEF_FLAG_R|UT_AVL_TREEDEF_FLAG_ALLOWDUPS, (cmparg) }
 | 
			
		||||
#define UT_AVL_TREEDEF_INITIALIZER_INDKEY_R_ALLOWDUPS(avlnodeoffset, keyoffset, comparekk, cmparg, augment) { (avlnodeoffset), (keyoffset), { (int (*) ()) (comparekk) }, (augment), UT_AVL_TREEDEF_FLAG_INDKEY|UT_AVL_TREEDEF_FLAG_R|UT_AVL_TREEDEF_FLAG_ALLOWDUPS, (cmparg) }
 | 
			
		||||
#define UT_AVL_TREEDEF_INITIALIZER(avlnodeoffset, keyoffset, comparekk_, augment) { (avlnodeoffset), (keyoffset), { .comparekk = (comparekk_) }, (augment), 0, 0 }
 | 
			
		||||
#define UT_AVL_TREEDEF_INITIALIZER_INDKEY(avlnodeoffset, keyoffset, comparekk_, augment) { (avlnodeoffset), (keyoffset), { .comparekk = (comparekk_) }, (augment), UT_AVL_TREEDEF_FLAG_INDKEY, 0 }
 | 
			
		||||
#define UT_AVL_TREEDEF_INITIALIZER_ALLOWDUPS(avlnodeoffset, keyoffset, comparekk_, augment) { (avlnodeoffset), (keyoffset), { .comparekk = (comparekk_) }, (augment), UT_AVL_TREEDEF_FLAG_ALLOWDUPS, 0 }
 | 
			
		||||
#define UT_AVL_TREEDEF_INITIALIZER_INDKEY_ALLOWDUPS(avlnodeoffset, keyoffset, comparekk_, augment) { (avlnodeoffset), (keyoffset), { .comparekk = (comparekk_) }, (augment), UT_AVL_TREEDEF_FLAG_INDKEY|UT_AVL_TREEDEF_FLAG_ALLOWDUPS, 0 }
 | 
			
		||||
#define UT_AVL_TREEDEF_INITIALIZER_R(avlnodeoffset, keyoffset, comparekk_, cmparg, augment) { (avlnodeoffset), (keyoffset), { .comparekk_r = (comparekk_) }, (augment), UT_AVL_TREEDEF_FLAG_R, (cmparg) }
 | 
			
		||||
#define UT_AVL_TREEDEF_INITIALIZER_INDKEY_R(avlnodeoffset, keyoffset, comparekk_, cmparg, augment) { (avlnodeoffset), (keyoffset), { .comparekk_r = (comparekk_) }, (augment), UT_AVL_TREEDEF_FLAG_INDKEY|UT_AVL_TREEDEF_FLAG_R, (cmparg) }
 | 
			
		||||
#define UT_AVL_TREEDEF_INITIALIZER_R_ALLOWDUPS(avlnodeoffset, keyoffset, comparekk_, cmparg, augment) { (avlnodeoffset), (keyoffset), { .comparekk_r = (comparekk_) }, (augment), UT_AVL_TREEDEF_FLAG_R|UT_AVL_TREEDEF_FLAG_ALLOWDUPS, (cmparg) }
 | 
			
		||||
#define UT_AVL_TREEDEF_INITIALIZER_INDKEY_R_ALLOWDUPS(avlnodeoffset, keyoffset, comparekk_, cmparg, augment) { (avlnodeoffset), (keyoffset), { .comparekk_r = (comparekk_) }, (augment), UT_AVL_TREEDEF_FLAG_INDKEY|UT_AVL_TREEDEF_FLAG_R|UT_AVL_TREEDEF_FLAG_ALLOWDUPS, (cmparg) }
 | 
			
		||||
 | 
			
		||||
/* Not maintaining # nodes */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -91,26 +91,27 @@ static const char *conode_from_node (const ut_avlTreedef_t *td, const ut_avlNode
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void treedef_init_common (ut_avlTreedef_t *td, size_t avlnodeoffset, size_t keyoffset, int (*cmp) (), ut_avlAugment_t augment, uint32_t flags)
 | 
			
		||||
static void treedef_init_common (ut_avlTreedef_t *td, size_t avlnodeoffset, size_t keyoffset, ut_avlAugment_t augment, uint32_t flags)
 | 
			
		||||
{
 | 
			
		||||
    assert (avlnodeoffset <= 0x7fffffff);
 | 
			
		||||
    assert (keyoffset <= 0x7fffffff);
 | 
			
		||||
    td->avlnodeoffset = avlnodeoffset;
 | 
			
		||||
    td->keyoffset = keyoffset;
 | 
			
		||||
    td->u.cmp = cmp;
 | 
			
		||||
    td->augment = augment;
 | 
			
		||||
    td->flags = flags;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ut_avlTreedefInit (_Out_ ut_avlTreedef_t *td, size_t avlnodeoffset, size_t keyoffset, _In_ ut_avlCompare_t comparekk, _In_opt_ ut_avlAugment_t augment, uint32_t flags)
 | 
			
		||||
{
 | 
			
		||||
    treedef_init_common (td, avlnodeoffset, keyoffset, (int (*) ()) comparekk, augment, flags);
 | 
			
		||||
    treedef_init_common (td, avlnodeoffset, keyoffset, augment, flags);
 | 
			
		||||
    td->u.comparekk = comparekk;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ut_avlTreedefInit_r (_Out_ ut_avlTreedef_t *td, size_t avlnodeoffset, size_t keyoffset, _In_ ut_avlCompare_r_t comparekk_r, _Inout_opt_ void *cmp_arg, ut_avlAugment_t augment, uint32_t flags)
 | 
			
		||||
{
 | 
			
		||||
    treedef_init_common (td, avlnodeoffset, keyoffset, augment, flags | UT_AVL_TREEDEF_FLAG_R);
 | 
			
		||||
    td->cmp_arg = cmp_arg;
 | 
			
		||||
    treedef_init_common (td, avlnodeoffset, keyoffset, (int (*) ()) comparekk_r, augment, flags | UT_AVL_TREEDEF_FLAG_R);
 | 
			
		||||
    td->u.comparekk_r = comparekk_r;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ut_avlInit (_In_ const ut_avlTreedef_t *td, _Out_ ut_avlTree_t *tree)
 | 
			
		||||
| 
						 | 
				
			
			@ -256,11 +257,11 @@ static ut_avlNode_t *rotate (const ut_avlTreedef_t *td, ut_avlNode_t **pnode, ut
 | 
			
		|||
       rotation, _ND_D means the grandchild that is the right child of
 | 
			
		||||
       the left child. */
 | 
			
		||||
    ut_avlNode_t * const node_ND = node->cs[1-dir];
 | 
			
		||||
    assert (node_ND != NULL);
 | 
			
		||||
    ut_avlNode_t * const node_ND_ND = node_ND->cs[1-dir];
 | 
			
		||||
    ut_avlNode_t * const node_ND_D = node_ND->cs[dir];
 | 
			
		||||
    int height_ND_ND, height_ND_D;
 | 
			
		||||
    assert (dir == !!dir);
 | 
			
		||||
    assert (node_ND != NULL);
 | 
			
		||||
    height_ND_ND = node_ND_ND ? node_ND_ND->height : 0;
 | 
			
		||||
    height_ND_D = node_ND_D ? node_ND_D->height : 0;
 | 
			
		||||
    if (height_ND_ND < height_ND_D) {
 | 
			
		||||
| 
						 | 
				
			
			@ -948,13 +949,15 @@ _Ret_notnull_ void *ut_avlRootNonEmpty (_In_ const ut_avlTreedef_t *td, _In_ con
 | 
			
		|||
 | 
			
		||||
void ut_avlCTreedefInit (_Out_ ut_avlCTreedef_t *td, size_t avlnodeoffset, size_t keyoffset, _In_ ut_avlCompare_t comparekk, _In_opt_ ut_avlAugment_t augment, uint32_t flags)
 | 
			
		||||
{
 | 
			
		||||
    treedef_init_common (&td->t, avlnodeoffset, keyoffset, (int (*) ()) comparekk, augment, flags);
 | 
			
		||||
    treedef_init_common (&td->t, avlnodeoffset, keyoffset, augment, flags);
 | 
			
		||||
    td->t.u.comparekk = comparekk;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ut_avlCTreedefInit_r (_Out_ ut_avlCTreedef_t *td, size_t avlnodeoffset, size_t keyoffset, _In_ ut_avlCompare_r_t comparekk_r, _Inout_opt_ void *cmp_arg, _In_opt_ ut_avlAugment_t augment, uint32_t flags)
 | 
			
		||||
{
 | 
			
		||||
    treedef_init_common (&td->t, avlnodeoffset, keyoffset, augment, flags | UT_AVL_TREEDEF_FLAG_R);
 | 
			
		||||
    td->t.cmp_arg = cmp_arg;
 | 
			
		||||
    treedef_init_common (&td->t, avlnodeoffset, keyoffset, (int (*) ()) comparekk_r, augment, flags | UT_AVL_TREEDEF_FLAG_R);
 | 
			
		||||
    td->t.u.comparekk_r = comparekk_r;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ut_avlCInit (_In_ const ut_avlCTreedef_t *td, _Out_ ut_avlCTree_t *tree)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue