home *** CD-ROM | disk | FTP | other *** search
/ C/C++ User's Journal & Wi…eveloper's Journal Tools / C-C__Users_Journal_and_Windows_Developers_Journal_Tools_1997.iso / windbase / windbase.exe / MEMSLCPP.3 / SLIST2.CPP < prev    next >
C/C++ Source or Header  |  1995-11-03  |  7KB  |  176 lines

  1. /***************************************************************************\
  2. **                                                                         **
  3. ** WW     WW IIIIIIII NNN   NN DDDDDDD  BBBBBBB     AA     SSSSSS EEEEEEEE **
  4. ** WW  W  WW    II    NNNN  NN DD    DD BB    BB  AA  AA  SS      EE       **
  5. ** WW  W  WW    II    NN NN NN DD    DD BBBBBBB  AAAAAAAA  SSSSSS EEEEEE   **
  6. **  WW W WW     II    NN  NNNN DD    DD BB    BB AA    AA      SS EE       **
  7. **   WWWWW   IIIIIIII NN   NNN DDDDDDD  BBBBBBB  AA    AA SSSSSS  EEEEEEEE **
  8. **                                                                         **
  9. **  SSSSSS  OOOOOO  FFFFFFFF TTTTTTTT WW     WW    AA    RRRRRRR  EEEEEEEE **
  10. ** SS      OO    OO FF          TT    WW  W  WW  AA  AA  RR    RR EE       **
  11. **  SSSSS  OO    OO FFFFF       TT    WW  W  WW AAAAAAAA RRRRRRR  EEEEEE   **
  12. **      SS OO    OO FF          TT     WW W WW  AA    AA RR   RR  EE       **
  13. ** SSSSSS   OOOOOO  FF          TT      WWWWW   AA    AA RR    RR EEEEEEEE **
  14. **                                                                         **
  15. ********** NOTICE ***********************************************************
  16. **       This file contains valuable trade secrets and proprietary         **
  17. **       assets of Windbase Software Inc.  Embodying substantial           **
  18. **       creative efforts and confidential information.  Unauthorized      **
  19. **       use, copying, decompiling, translating, disclosure or             **
  20. **       transfer, of any kind, is strictly prohibited.                    **
  21. **                                                                         **
  22. **       COPYRIGHT (C) 1992, 1993, 1994, 1995.  Windbase Software Inc.     **
  23. **       ALL RIGHTS RESERVED.                                              **
  24. \***************************************************************************/
  25.  
  26. /*
  27. ** Single Linked List - Non templates version
  28. */
  29.  
  30. void WBExecuteFunct(void *nullitem, char *item)
  31.   {
  32.     nullitem = nullitem;
  33.  
  34.     cout << "Execute: " << item << "\n";
  35.   }
  36.  
  37. void WBDeleteFunct(void *nullitem, char *item)
  38.   {
  39.     nullitem = nullitem;
  40.  
  41.     cout << "Delete: " << item << "\n";
  42.   }
  43.  
  44. char *WBCopyFunct(void *nullitem, char *item)
  45.   {
  46.     nullitem = nullitem;
  47.  
  48.     return(item);
  49.   }
  50.  
  51. int WBCompareFunct(void *nullitem, char *item1, char *item2)
  52.   {
  53.     nullitem = nullitem;
  54.  
  55.     return(strcmp(item1,item2));
  56.   }
  57.  
  58. main()
  59.   {
  60.     WBSList lstptr1, lstptr2, *strlist, copylist, cutlist, addlist;
  61.     char *strptr;
  62.  
  63.     strlist = new WBSList;
  64.  
  65.     strlist->SetCompare(NULL,(int (*)(void *, void *, void *))WBCompareFunct);
  66.     strlist->SetDelete(NULL,(void (*)(void *, void *))WBDeleteFunct);
  67.     strlist->SetExecute(NULL,(void (*)(void *, void *))WBExecuteFunct);
  68.     strlist->SetCopy(NULL,(void *(*)(void *, void *))WBCopyFunct);
  69.  
  70.     copylist.SetCopy(NULL,(void *(*)(void *, void *))WBCopyFunct);
  71.     addlist.SetCompare(NULL,(int (*)(void *, void *, void *))WBCompareFunct);
  72.     addlist.SetExecute(NULL,(void (*)(void *, void *))WBExecuteFunct);
  73.  
  74.     strlist->Add("Item02");
  75.     strlist->Add("Item03");
  76.     strlist->Add("Item04");
  77.     strlist->GetFirst();
  78.     strlist->Insert("Item01");
  79.     strlist->GetLast();
  80.     *strlist += "Item05";
  81.     *strlist += "Item06";
  82.     *strlist += "Item07";
  83.     *strlist += "Item09";
  84.     strlist->Insert("Item08");
  85.     strlist->AddFirst("Item00");
  86.     strlist->AddLast("Item10");
  87.     strlist->Append("Item11");
  88.     strlist->AddSorted("Item12");
  89.     strlist->AddSorted("Item14");
  90.     strlist->AddSorted("Item17");
  91.     strlist->AddSorted("Item16");
  92.     strlist->AddSorted("Item18");
  93.     strlist->AddSorted("Item15");
  94.     strlist->AddSorted("Item13");
  95.     strlist->AddSorted("Item19");
  96.     strlist->Execute();
  97.     cout << "Num Items: " << strlist->NumItems() << "\n";
  98.     cout << "Search: " << (char *) strlist->Search("Item01") << "\n";
  99.     strlist->DelCurrent();
  100.     strlist->DelLast();
  101.     strlist->DelFirst();
  102.     strlist->DelNext();
  103.     strlist->Execute();
  104.     cout << "Num Items: " << strlist->NumItems() << "\n";
  105.     cout << "Get Current: " << (char *) strlist->GetCurrent() << "\n";
  106.     cout << "Get Next: " << (char *) strlist->GetNext() << "\n";
  107.     cout << "Get Last: " << (char *) strlist->GetLast() << "\n";
  108.  
  109.     cout << "Get First: " << (char *) strlist->GetFirst() << "\n";
  110.     while ((strptr = (char *) (*strlist)++) != NULL)
  111.       cout << "Get Next: " << strptr << "\n";
  112.  
  113.     cout << "Get First: " << (char *) strlist->GetFirst() << "\n";
  114.     while ((strptr = (char *) strlist->GetNext()) != NULL)
  115.       cout << "Get Next: " << strptr << "\n";
  116.  
  117.     cout << "On Base: " << ((strlist->Is()&WB_BASE) ? "Yes" : "No") << "\n";
  118.     cout << "Get First: " << (char *) strlist->GetFirst() << "\n";
  119.     cout << "On Base: " << ((strlist->Is()&WB_BASE) ? "Yes" : "No") << "\n";
  120.  
  121.     (*strlist)++;
  122.     cout << "On Base: " << strlist->OnBase() << "\n";
  123.     cout << "Get First: " << (char *) strlist->GetFirst() << "\n";
  124.     cout << "On Base: " << strlist->OnBase() << "\n";
  125.  
  126.     lstptr1 = *strlist;
  127.  
  128.     cout << "Equal: " << ((lstptr1 == *strlist) ? "Yes" : "No") << "\n";
  129.     cout << "Not Equal: " << (!(lstptr1 == *strlist) ? "Yes" : "No") << "\n";
  130.  
  131.     cout << "Get First: " << (char *) lstptr1.GetFirst() << "\n";
  132.     cout << "On Base: " << lstptr1.OnBase() << "\n";
  133.     while ((strptr = (char *) lstptr1++) != NULL)
  134.       cout << "Get Next: " << strptr << "\n";
  135.  
  136.     cout << "Equal: " << ((lstptr1 == *strlist) ? "Yes" : "No") << "\n";
  137.     cout << "Not Equal: " << (!(lstptr1 == *strlist) ? "Yes" : "No") << "\n";
  138.  
  139.     lstptr1.GetFirst();
  140.     strlist->GetLast();
  141.     cout << "Num copied: " << copylist.Copy(lstptr1,*strlist) << "\n";
  142.  
  143.     cout << "Get First: " << (char *) lstptr1.GetFirst() << "\n";
  144.     cout << "On Base: " << lstptr1.OnBase() << "\n";
  145.     while ((strptr = (char *) lstptr1++) != NULL)
  146.       cout << "Get Next: " << strptr << "\n";
  147.  
  148.     cout << "On Base: " << lstptr1.OnBase() << "\n";
  149.  
  150.     cout << "Get First: " << (char *) copylist.GetFirst() << "\n";
  151.     cout << "On Base: " << copylist.OnBase() << "\n";
  152.     while ((strptr = (char *) copylist++) != NULL)
  153.       cout << "Get Next: " << strptr << "\n";
  154.  
  155.     delete strlist;
  156.  
  157.     copylist.GetFirst();
  158.     lstptr1 = copylist;
  159.     lstptr2 = copylist;
  160.     lstptr2++;
  161.  
  162.     cutlist.Cut(lstptr1,lstptr2);
  163.  
  164.     cout << "Get First: " << (char *) copylist.GetFirst() << "\n";
  165.     cout << "On Base: " << copylist.OnBase() << "\n";
  166.     while ((strptr = (char *) copylist++) != NULL)
  167.       cout << "Get Next: " << strptr << "\n";
  168.  
  169.     addlist.Paste(copylist,WB_SORTED,1);
  170.     addlist.Execute();
  171.     addlist.Paste(cutlist,WB_SORTED,1);
  172.     addlist.Execute();
  173.  
  174.     return 0;
  175.   }
  176.