Back to index

openldap  2.4.31
Defines | Functions | Variables
testtavl.c File Reference
#include "portable.h"
#include <stdio.h>
#include <ac/stdlib.h>
#include <ac/string.h>
#include "avl.h"

Go to the source code of this file.

Defines

#define AVL_INTERNAL

Functions

static void ravl_print LDAP_P ((Avlnode *root, int depth, int thread))
static void myprint LDAP_P ((Avlnode *root))
static int avl_strcmp LDAP_P ((const void *s, const void *t))
int main (int argc, char **argv)
static void ravl_print (Avlnode *root, int depth, int thread)
static void myprint (Avlnode *root)
static int avl_strcmp (const void *s, const void *t)

Variables

static const char bfc_array [] = "\\-/"
static const char * bfcs = bfc_array+1

Define Documentation

#define AVL_INTERNAL

Definition at line 39 of file testtavl.c.


Function Documentation

static int avl_strcmp ( const void s,
const void t 
) [static]

Definition at line 155 of file testtavl.c.

{
       return strcmp( s, t );
}

Here is the caller graph for this function:

static void ravl_print LDAP_P ( (Avlnode *root, int depth, int thread)  ) [static]
static void myprint LDAP_P ( (Avlnode *root)  ) [static]
static int avl_strcmp LDAP_P ( (const void *s, const void *t)  ) [static]
int main ( int  argc,
char **  argv 
)

Definition at line 47 of file testtavl.c.

{
       Avlnode       *tree = NULL, *n;
       char   command[ 10 ];
       char   name[ 80 ];
       char   *p;

       printf( "> " );
       while ( fgets( command, sizeof( command ), stdin ) != NULL ) {
              switch( *command ) {
              case 'n':     /* new tree */
                     ( void ) tavl_free( tree, free );
                     tree = NULL;
                     break;
              case 'p':     /* print */
                     ( void ) myprint( tree );
                     break;
              case 't':     /* traverse with first, next */
                     printf( "***\n" );
                     for ( n = tavl_end( tree, TAVL_DIR_LEFT );
                         n != NULL;
                            n = tavl_next( n, TAVL_DIR_RIGHT ))
                            printf( "%s\n", n->avl_data );
                     printf( "***\n" );
                     break;
              case 'f':     /* find */
                     printf( "data? " );
                     if ( fgets( name, sizeof( name ), stdin ) == NULL )
                            exit( EXIT_SUCCESS );
                     name[ strlen( name ) - 1 ] = '\0';
                     if ( (p = (char *) tavl_find( tree, name, avl_strcmp ))
                         == NULL )
                            printf( "Not found.\n\n" );
                     else
                            printf( "%s\n\n", p );
                     break;
              case 'i':     /* insert */
                     printf( "data? " );
                     if ( fgets( name, sizeof( name ), stdin ) == NULL )
                            exit( EXIT_SUCCESS );
                     name[ strlen( name ) - 1 ] = '\0';
                     if ( tavl_insert( &tree, strdup( name ), avl_strcmp, 
                         avl_dup_error ) != 0 )
                            printf( "\nNot inserted!\n" );
                     break;
              case 'd':     /* delete */
                     printf( "data? " );
                     if ( fgets( name, sizeof( name ), stdin ) == NULL )
                            exit( EXIT_SUCCESS );
                     name[ strlen( name ) - 1 ] = '\0';
                     if ( tavl_delete( &tree, name, avl_strcmp ) == NULL )
                            printf( "\nNot found!\n" );
                     break;
              case 'q':     /* quit */
                     exit( EXIT_SUCCESS );
                     break;
              case '\n':
                     break;
              default:
                     printf("Commands: insert, delete, print, new, quit\n");
              }

              printf( "> " );
       }

       return( 0 );
}

Here is the call graph for this function:

static void myprint ( Avlnode *  root) [static]

Definition at line 143 of file testtavl.c.

{
       printf( "********\n" );

       if ( root == 0 )
              printf( "\tNULL\n" );
       else
              ravl_print( root, 0, 0 );

       printf( "********\n" );
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void ravl_print ( Avlnode *  root,
int  depth,
int  thread 
) [static]

Definition at line 118 of file testtavl.c.

{
       int    i;

       if ( root && !thread )
       ravl_print( root->avl_link[1], depth+1, root->avl_bits[1] == AVL_THREAD );

       for ( i = 0; i < depth; i++ )
              printf( "   " );
       if ( thread )
              printf( "~" );
       else if ( root )
              printf( "%c", bfcs[root->avl_bf] );
       else
              printf( " " );
       if ( !root) {
              printf( ".\n" );
              return;
       }
       printf( "%s\n", (char *) root->avl_data );

       if ( !thread )
       ravl_print( root->avl_link[0], depth+1, root->avl_bits[0] == AVL_THREAD );
}

Here is the caller graph for this function:


Variable Documentation

const char bfc_array[] = "\\-/" [static]

Definition at line 115 of file testtavl.c.

const char* bfcs = bfc_array+1 [static]

Definition at line 116 of file testtavl.c.