#include #include #include "avl_tree.h" class O110001110110 { private : struct O110001110111 { O110001110111 * l110001111000 , * lt ; char * name ; char * value ; } ; struct l110001111001 { typedef O110001110111 * l110001111010 ; typedef const char * O110001111011 ; typedef unsigned size ; static l110001111010 l110001111100 ( l110001111010 h , bool access ) { return ( h -> lt ) ; } static void l110001111101 ( l110001111010 h , l110001111010 O110001111110 ) { h -> lt = O110001111110 ; } static l110001111010 l110001111111 ( l110001111010 h , bool access ) { return ( h -> l110001111000 ) ; } static void l110010000000 ( l110001111010 h , l110001111010 O110010000001 ) { h -> l110001111000 = O110010000001 ; } static int l110010000010 ( l110001111010 h ) { return ( ( signed char ) ( h -> name [ 0 ] ) ) ; } static void O110010000011 ( l110001111010 h , int l110010000100 ) { h -> name [ 0 ] = l110010000100 ; } static int l110010000101 ( O110001111011 O110010000110 , l110001111010 h ) { return ( strcmp ( O110010000110 , ( h -> name ) + 01 ) ) ; } static int l110010000111 ( l110001111010 l110010001000 , l110001111010 O110010001001 ) { return ( strcmp ( ( l110010001000 -> name ) + 01 , ( O110010001001 -> name ) + 01 ) ) ; } static l110001111010 l110010001010 ( void ) { return ( 0 ) ; } static bool l110010001011 ( void ) { return ( false ) ; } } ; typedef l110010001100 :: O110010001101 < l110001111001 > O110010001110 ; O110010001110 O110010001111 ; public : void set ( const char * name , const char * value ) { O110001110111 * l110010010000 = O110010001111 . search ( name ) ; if ( ! l110010010000 ) { l110010010000 = new O110001110111 ; l110010010000 -> name = new char [ strlen ( name ) + 02 ] ; strcpy ( l110010010000 -> name + 01 , name ) ; O110010001111 . insert ( l110010010000 ) ; } else delete [ ] l110010010000 -> value ; if ( value ) { if ( strlen ( value ) == 0 ) value = 0 ; } if ( value ) { l110010010000 -> value = new char [ strlen ( value ) + 01 ] ; strcpy ( l110010010000 -> value , value ) ; } else { O110010001111 . remove ( name ) ; delete [ ] l110010010000 -> name ; delete l110010010000 ; } } const char * get ( const char * name ) { O110001110111 * l110010010000 = O110010001111 . search ( name ) ; return ( l110010010000 ? l110010010000 -> value : "" ) ; } void l110010010001 ( void ) { O110010001110 :: O110010010010 l110010010011 ; O110001110111 * l110010010000 ; l110010010011 . O110010010100 ( O110010001111 ) ; for ( l110010010000 = * l110010010011 ; l110010010000 ; l110010010011 ++ , l110010010000 = * l110010010011 ) printf ( "%s=%s\n" , l110010010000 -> name + 01 , l110010010000 -> value ) ; } void clear ( void ) { O110010001110 :: O110010010010 l110010010011 ; O110001110111 * l110010010000 ; l110010010011 . O110010010100 ( O110010001111 ) ; for ( l110010010000 = * l110010010011 ; l110010010000 ; l110010010000 = * l110010010011 ) { l110010010011 ++ ; delete [ ] l110010010000 -> name ; delete [ ] l110010010000 -> value ; delete l110010010000 ; } O110010001111 . O110010010101 ( ) ; } } ; int main ( void ) { O110001110110 O110010010110 ; O110010010110 . set ( "The" , "The value" ) ; O110010010110 . set ( "quick" , "quick value" ) ; O110010010110 . set ( "brown" , "brown value" ) ; O110010010110 . set ( "fox" , "fox value" ) ; O110010010110 . set ( "jumped" , "jumped value" ) ; O110010010110 . set ( "over" , "over value" ) ; O110010010110 . set ( "the" , "the value" ) ; O110010010110 . set ( "lazy" , "lazy value" ) ; O110010010110 . set ( "dog" , "dog value" ) ; O110010010110 . set ( "DOG" , "DOG value" ) ; O110010010110 . set ( "DOG" , 0 ) ; printf ( "The value of \"dog\" is \"%s\"\n\n" , O110010010110 . get ( "dog" ) ) ; printf ( "DUMP\n" ) ; O110010010110 . l110010010001 ( ) ; O110010010110 . clear ( ) ; O110010010110 . l110010010001 ( ) ; return ( 0 ) ; }