home *** CD-ROM | disk | FTP | other *** search
- /***************************************************************************\
- ** **
- ** WW WW IIIIIIII NNN NN DDDDDDD BBBBBBB AA SSSSSS EEEEEEEE **
- ** WW W WW II NNNN NN DD DD BB BB AA AA SS EE **
- ** WW W WW II NN NN NN DD DD BBBBBBB AAAAAAAA SSSSSS EEEEEE **
- ** WW W WW II NN NNNN DD DD BB BB AA AA SS EE **
- ** WWWWW IIIIIIII NN NNN DDDDDDD BBBBBBB AA AA SSSSSS EEEEEEEE **
- ** **
- ** SSSSSS OOOOOO FFFFFFFF TTTTTTTT WW WW AA RRRRRRR EEEEEEEE **
- ** SS OO OO FF TT WW W WW AA AA RR RR EE **
- ** SSSSS OO OO FFFFF TT WW W WW AAAAAAAA RRRRRRR EEEEEE **
- ** SS OO OO FF TT WW W WW AA AA RR RR EE **
- ** SSSSSS OOOOOO FF TT WWWWW AA AA RR RR EEEEEEEE **
- ** **
- ********** NOTICE ***********************************************************
- ** This file contains valuable trade secrets and proprietary **
- ** assets of Windbase Software Inc. Embodying substantial **
- ** creative efforts and confidential information. Unauthorized **
- ** use, copying, decompiling, translating, disclosure or **
- ** transfer, of any kind, is strictly prohibited. **
- ** **
- ** COPYRIGHT (C) 1992, 1993, 1994, 1995. Windbase Software Inc. **
- ** ALL RIGHTS RESERVED. **
- \***************************************************************************/
-
- /*
- ** AVL Balanced Threaded Binary Tree - Templates Version
- */
-
- int WBCompareFunct(void *nullitem, char *item1, char *item2)
- {
- nullitem = nullitem;
-
- if (item1 == NULL || item2 == NULL)
- {
- cout << "Compare: null value. Aborting...\n";
- exit(1);
- }
- return(strcmp(item1,item2));
- }
-
- void WBExecuteFunct(void *nullitem, char *item)
- {
- nullitem = nullitem;
-
- if (item)
- cout << "Execute: " << item << "\n";
- else
- cout << "Execute: null value\n";
- }
-
- main()
- {
- WBTAVLTree<char *> tree;
- char *strptr;
- int i;
-
- tree.SetCompare(NULL,WBCompareFunct);
- tree.SetExecute(NULL,WBExecuteFunct);
-
- for (i = 0; i < 5; i++)
- {
- cout << "====================================================\n";
- tree += "Item00";
- tree += "Item01";
- tree += "Item02";
- tree += "Item03";
- tree += "Item04";
- tree += "Item05";
- tree += "Item06";
- tree += "Item07";
- tree += "Item08";
- tree += "Item09";
- tree.Add("Item10");
- tree.Add("Item11");
- tree.Add("Item12");
- tree.Add("Item13");
- tree.Add("Item14");
- tree.Add("Item15");
- tree.Add("Item16");
- tree.Add("Item17");
- tree.Add("Item18");
- tree.Add("Item19");
- tree.Add("Item20");
- tree.Add("Item21");
- tree.Add("Item22");
- tree.Add("Item23");
- tree.Add("Item24");
- tree.Add("Item25");
- tree.Add("Item26");
- tree.Add("Item27");
- tree.Add("Item28");
- tree.Add("Item29");
- tree.Add("Item30");
- tree.Add("Item31");
- tree.Add("Item32");
- tree.Add("Item33");
- tree.Add("Item34");
- tree.Add("Item35");
- tree.Add("Item36");
- tree.Add("Item37");
- tree.Add("Item38");
- tree.Add("Item39");
- tree.Add("Item40");
- tree.Add("Item41");
- tree.Add("Item42");
- tree.Add("Item43");
- tree.Add("Item44");
- tree.Add("Item45");
- tree.Add("Item46");
- tree.Add("Item47");
- tree.Add("Item48");
- tree.Add("Item49");
- tree.Add("Item50");
- tree.Add("Item51");
- tree.Add("Item52");
- tree.Add("Item53");
- tree.Add("Item54");
- tree.Add("Item55");
- tree.Add("Item56");
- tree.Add("Item57");
- tree.Add("Item58");
- tree.Add("Item59");
- tree.Add("Item60");
- tree.Add("Item61");
- tree.Add("Item62");
- tree.Add("Item63");
- tree.Add("Item64");
- tree.Add("Item65");
- tree.Add("Item66");
- tree.Add("Item67");
- tree.Add("Item68");
- tree.Add("Item69");
- tree.Add("Item70");
- tree.Add("Item71");
- tree.Add("Item72");
- tree.Add("Item73");
- tree.Add("Item74");
- tree.Add("Item75");
- tree.Add("Item76");
- tree.Add("Item77");
- tree.Add("Item78");
- tree.Add("Item79");
- tree.Add("Item80");
- tree.Add("Item81");
- tree.Add("Item82");
- tree.Add("Item83");
- tree.Add("Item84");
- tree.Add("Item85");
- tree.Add("Item86");
- tree.Add("Item87");
- tree.Add("Item88");
- tree.Add("Item89");
- tree.Add("Item90");
- tree.Add("Item91");
- tree.Add("Item92");
- tree.Add("Item93");
- tree.Add("Item94");
- tree.Add("Item95");
- tree.Add("Item96");
- tree.Add("Item97");
- tree.Add("Item98");
- tree.Add("Item99");
- tree.Add("Item00");
- tree.Add("Item01");
- tree.Add("Item02");
- tree.Add("Item03");
- tree.Add("Item04");
- tree.Add("Item05");
- tree.Add("Item06");
- tree.Add("Item07");
- tree.Add("Item08");
- tree.Add("Item09");
- tree.Add("Item00");
- tree.Add("Item01");
- tree.Add("Item02");
- tree.Add("Item03");
- tree.Add("Item04");
- tree.Add("Item05");
- tree.Add("Item06");
- tree.Add("Item07");
- tree.Add("Item08");
- tree.Add("Item09");
- tree += "Item100";
- tree += "Item101";
- tree += "Item102";
- tree += "Item103";
- tree += "Item104";
- tree += "Item105";
- tree += "Item106";
- tree += "Item107";
- tree += "Item108";
-
- tree.Execute();
-
- cout << "GetLast(): " << tree.GetLast() << "\n";
- cout << "GetFirst(): " << tree.GetFirst() << "\n";
-
- while ((strptr = tree.GetNext()) != NULL)
- cout << "GetNext(): " << strptr << "\n";
-
- while ((strptr = tree.GetPrevious()) != NULL)
- cout << "GetPrevious(): " << strptr << "\n";
-
- while ((strptr = tree++) != NULL)
- cout << "tree++: " << strptr << "\n";
-
- while ((strptr = tree--) != NULL)
- cout << "tree--: " << strptr << "\n";
-
- strptr = tree.GetFirst();
- while ((strptr = tree.GetGreater(strptr)) != NULL)
- cout << "GetGreater(): " << strptr << "\n";
-
- strptr = tree.GetLast();
- while ((strptr = tree.GetLess(strptr)) != NULL)
- cout << "GetLess(): " << strptr << "\n";
-
- cout << "GetLess(): " << tree.GetLess("Item01") << "\n";
- while ((strptr = tree--) != NULL)
- cout << "tree--: " << strptr << "\n";
-
- cout << "GetGreater(): " << tree.GetGreater("Item01") << "\n";
- while ((strptr = tree++) != NULL)
- cout << "tree++: " << strptr << "\n";
-
- cout << "GetEqual(): " << tree.GetEqual("Item00") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item01") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item02") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item03") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item04") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item05") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item06") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item07") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item08") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item09") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item10") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item11") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item12") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item13") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item14") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item15") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item16") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item17") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item18") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item19") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item20") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item21") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item22") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item23") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item24") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item25") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item26") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item27") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item28") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item29") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item30") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item31") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item32") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item33") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item34") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item35") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item36") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item37") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item38") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item39") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item40") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item41") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item42") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item43") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item44") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item45") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item46") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item47") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item48") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item49") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item50") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item51") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item52") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item53") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item54") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item55") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item56") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item57") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item58") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item59") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item60") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item61") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item62") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item63") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item64") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item65") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item66") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item67") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item68") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item69") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item70") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item71") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item72") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item73") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item74") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item75") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item76") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item77") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item78") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item79") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item80") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item81") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item82") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item83") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item84") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item85") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item86") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item87") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item88") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item89") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item90") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item91") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item92") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item93") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item94") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item95") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item96") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item97") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item98") << "\n";
- cout << "GetEqual(): " << tree.GetEqual("Item99") << "\n";
-
- cout << "Delete(): " << (tree -= "Item00") << "\n";
- cout << "Delete(): " << (tree -= "Item01") << "\n";
- cout << "Delete(): " << (tree -= "Item02") << "\n";
- cout << "Delete(): " << (tree -= "Item03") << "\n";
- cout << "Delete(): " << (tree -= "Item04") << "\n";
- cout << "Delete(): " << (tree -= "Item05") << "\n";
- cout << "Delete(): " << (tree -= "Item06") << "\n";
- cout << "Delete(): " << (tree -= "Item07") << "\n";
- cout << "Delete(): " << (tree -= "Item08") << "\n";
- cout << "Delete(): " << (tree -= "Item09") << "\n";
- cout << "Delete(): " << tree.Delete("Item10") << "\n";
- cout << "Delete(): " << tree.Delete("Item11") << "\n";
- cout << "Delete(): " << tree.Delete("Item12") << "\n";
- cout << "Delete(): " << tree.Delete("Item13") << "\n";
- cout << "Delete(): " << tree.Delete("Item14") << "\n";
- cout << "Delete(): " << tree.Delete("Item15") << "\n";
- cout << "Delete(): " << tree.Delete("Item16") << "\n";
- cout << "Delete(): " << tree.Delete("Item17") << "\n";
- cout << "Delete(): " << tree.Delete("Item18") << "\n";
- cout << "Delete(): " << tree.Delete("Item19") << "\n";
- cout << "Delete(): " << tree.Delete("Item20") << "\n";
- cout << "Delete(): " << tree.Delete("Item21") << "\n";
- cout << "Delete(): " << tree.Delete("Item22") << "\n";
- cout << "Delete(): " << tree.Delete("Item23") << "\n";
- cout << "Delete(): " << tree.Delete("Item24") << "\n";
- cout << "Delete(): " << tree.Delete("Item25") << "\n";
- cout << "Delete(): " << tree.Delete("Item26") << "\n";
- cout << "Delete(): " << tree.Delete("Item27") << "\n";
- cout << "Delete(): " << tree.Delete("Item28") << "\n";
- cout << "Delete(): " << tree.Delete("Item29") << "\n";
- cout << "Delete(): " << tree.Delete("Item30") << "\n";
- cout << "Delete(): " << tree.Delete("Item31") << "\n";
- cout << "Delete(): " << tree.Delete("Item32") << "\n";
- cout << "Delete(): " << tree.Delete("Item33") << "\n";
- cout << "Delete(): " << tree.Delete("Item34") << "\n";
- cout << "Delete(): " << tree.Delete("Item35") << "\n";
- cout << "Delete(): " << tree.Delete("Item36") << "\n";
- cout << "Delete(): " << tree.Delete("Item37") << "\n";
- cout << "Delete(): " << tree.Delete("Item38") << "\n";
- cout << "Delete(): " << tree.Delete("Item39") << "\n";
- cout << "Delete(): " << tree.Delete("Item40") << "\n";
- cout << "Delete(): " << tree.Delete("Item41") << "\n";
- cout << "Delete(): " << tree.Delete("Item42") << "\n";
- cout << "Delete(): " << tree.Delete("Item43") << "\n";
- cout << "Delete(): " << tree.Delete("Item44") << "\n";
- cout << "Delete(): " << tree.Delete("Item45") << "\n";
- cout << "Delete(): " << tree.Delete("Item46") << "\n";
- cout << "Delete(): " << tree.Delete("Item47") << "\n";
- cout << "Delete(): " << tree.Delete("Item48") << "\n";
- cout << "Delete(): " << tree.Delete("Item49") << "\n";
- cout << "Delete(): " << tree.Delete("Item50") << "\n";
- cout << "Delete(): " << tree.Delete("Item51") << "\n";
- cout << "Delete(): " << tree.Delete("Item52") << "\n";
- cout << "Delete(): " << tree.Delete("Item53") << "\n";
- cout << "Delete(): " << tree.Delete("Item54") << "\n";
- cout << "Delete(): " << tree.Delete("Item55") << "\n";
- cout << "Delete(): " << tree.Delete("Item56") << "\n";
- cout << "Delete(): " << tree.Delete("Item57") << "\n";
- cout << "Delete(): " << tree.Delete("Item58") << "\n";
- cout << "Delete(): " << tree.Delete("Item59") << "\n";
- cout << "Delete(): " << tree.Delete("Item60") << "\n";
- cout << "Delete(): " << tree.Delete("Item61") << "\n";
- cout << "Delete(): " << tree.Delete("Item62") << "\n";
- cout << "Delete(): " << tree.Delete("Item63") << "\n";
- cout << "Delete(): " << tree.Delete("Item64") << "\n";
- cout << "Delete(): " << tree.Delete("Item65") << "\n";
- cout << "Delete(): " << tree.Delete("Item66") << "\n";
- cout << "Delete(): " << tree.Delete("Item67") << "\n";
- cout << "Delete(): " << tree.Delete("Item68") << "\n";
- cout << "Delete(): " << tree.Delete("Item69") << "\n";
- cout << "Delete(): " << tree.Delete("Item70") << "\n";
- cout << "Delete(): " << tree.Delete("Item71") << "\n";
- cout << "Delete(): " << tree.Delete("Item72") << "\n";
- cout << "Delete(): " << tree.Delete("Item73") << "\n";
- cout << "Delete(): " << tree.Delete("Item74") << "\n";
- cout << "Delete(): " << tree.Delete("Item75") << "\n";
- cout << "Delete(): " << tree.Delete("Item76") << "\n";
- cout << "Delete(): " << tree.Delete("Item77") << "\n";
- cout << "Delete(): " << tree.Delete("Item78") << "\n";
- cout << "Delete(): " << tree.Delete("Item79") << "\n";
- cout << "Delete(): " << tree.Delete("Item80") << "\n";
- cout << "Delete(): " << tree.Delete("Item81") << "\n";
- cout << "Delete(): " << tree.Delete("Item82") << "\n";
- cout << "Delete(): " << tree.Delete("Item83") << "\n";
- cout << "Delete(): " << tree.Delete("Item84") << "\n";
- cout << "Delete(): " << tree.Delete("Item85") << "\n";
- cout << "Delete(): " << tree.Delete("Item86") << "\n";
- cout << "Delete(): " << tree.Delete("Item87") << "\n";
- cout << "Delete(): " << tree.Delete("Item88") << "\n";
- cout << "Delete(): " << tree.Delete("Item89") << "\n";
-
- tree.Execute();
-
- cout << "GetLast(): " << tree.GetLast() << "\n";
- cout << "GetFirst(): " << tree.GetFirst() << "\n";
-
- while ((strptr = tree.GetNext()) != NULL)
- cout << "GetNext(): " << strptr << "\n";
-
- while ((strptr = tree.GetPrevious()) != NULL)
- cout << "GetPrevious(): " << strptr << "\n";
-
- while ((strptr = tree++) != NULL)
- cout << "tree++: " << strptr << "\n";
-
- while ((strptr = tree--) != NULL)
- cout << "tree--: " << strptr << "\n";
-
- strptr = tree.GetFirst();
- while ((strptr = tree.GetGreater(strptr)) != NULL)
- cout << "GetGreater(): " << strptr << "\n";
-
- strptr = tree.GetLast();
- while ((strptr = tree.GetLess(strptr)) != NULL)
- cout << "GetLess(): " << strptr << "\n";
- }
- return(0);
- }
-