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 / memslcpp.3 / slist1.cpp < prev    next >
C/C++ Source or Header  |  1996-05-01  |  7KB  |  190 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 - Templates version
  28. */
  29.  
  30. template <class USRDEF>
  31. class MyList : public WBSList<USRDEF>
  32.   {
  33.     public:
  34.       void WBExecuteFunct(void *nullitem, USRDEF item)
  35.     {
  36.       nullitem = nullitem;
  37.  
  38.       cout << "Execute: " << item << "\n";
  39.     }
  40.  
  41.       void WBDeleteFunct(void *nullitem, USRDEF item)
  42.     {
  43.       nullitem = nullitem;
  44.  
  45.       cout << "Delete: " << item << "\n";
  46.     }
  47.  
  48.       USRDEF WBCopyFunct(void *nullitem, USRDEF item)
  49.     {
  50.       nullitem = nullitem;
  51.  
  52.       return(item);
  53.     }
  54.  
  55.       int WBCompareFunct(void *nullitem, USRDEF item1, USRDEF item2)
  56.     {
  57.       nullitem = nullitem;
  58.  
  59.       return(strcmp(item1,item2));
  60.     }
  61.   };
  62.  
  63. template <class USRDEF>
  64. void Execute(void *nullitem, USRDEF item)
  65.   {
  66.     nullitem = nullitem;
  67.  
  68.     cout << "Execute: " << item << "\n";
  69.   }
  70.  
  71. main()
  72.   {
  73.     MyList<char *> lstptr1, lstptr2, *strlist, copylist, cutlist, addlist;
  74.     WBSList<int> intlist;
  75.     char *strptr;
  76.  
  77.     strlist = new MyList<char *>;
  78.  
  79.     strlist->Add("Item02");
  80.     strlist->Add("Item03");
  81.     strlist->Add("Item04");
  82.     strlist->GetFirst();
  83.     strlist->Insert("Item01");
  84.     strlist->GetLast();
  85.     *strlist += "Item05";
  86.     *strlist += "Item06";
  87.     *strlist += "Item07";
  88.     *strlist += "Item09";
  89.     strlist->Insert("Item08");
  90.     strlist->AddFirst("Item00");
  91.     strlist->AddLast("Item10");
  92.     strlist->Append("Item11");
  93.     strlist->AddSorted("Item12");
  94.     strlist->AddSorted("Item14");
  95.     strlist->AddSorted("Item17");
  96.     strlist->AddSorted("Item16");
  97.     strlist->AddSorted("Item18");
  98.     strlist->AddSorted("Item15");
  99.     strlist->AddSorted("Item13");
  100.     strlist->AddSorted("Item19");
  101.     strlist->Execute();
  102.     cout << "Num Items: " << strlist->NumItems() << "\n";
  103.     cout << "Search: " << strlist->Search("Item01") << "\n";
  104.     strlist->DelCurrent();
  105.     strlist->DelLast();
  106.     strlist->DelFirst();
  107.     strlist->DelNext();
  108.     strlist->Execute();
  109.     cout << "Num Items: " << strlist->NumItems() << "\n";
  110.     cout << "Get Current: " << strlist->GetCurrent() << "\n";
  111.     cout << "Get Next: " << strlist->GetNext() << "\n";
  112.     cout << "Get Last: " << strlist->GetLast() << "\n";
  113.  
  114.     cout << "Get First: " << strlist->GetFirst() << "\n";
  115.     while ((strptr = (*strlist)++) != NULL)
  116.       cout << "Get Next: " << strptr << "\n";
  117.  
  118.     cout << "Get First: " << strlist->GetFirst() << "\n";
  119.     while ((strptr = strlist->GetNext()) != NULL)
  120.       cout << "Get Next: " << strptr << "\n";
  121.  
  122.     cout << "On Base: " << ((strlist->Is()&WB_BASE) ? "Yes" : "No") << "\n";
  123.     cout << "Get First: " << strlist->GetFirst() << "\n";
  124.     cout << "On Base: " << ((strlist->Is()&WB_BASE) ? "Yes" : "No") << "\n";
  125.  
  126.     (*strlist)++;
  127.     cout << "On Base: " << strlist->OnBase() << "\n";
  128.     cout << "Get First: " << strlist->GetFirst() << "\n";
  129.     cout << "On Base: " << strlist->OnBase() << "\n";
  130.  
  131.     lstptr1 = *strlist;
  132.  
  133.     cout << "Equal: " << ((lstptr1 == *strlist) ? "Yes" : "No") << "\n";
  134.     cout << "Not Equal: " << (!(lstptr1 == *strlist) ? "Yes" : "No") << "\n";
  135.  
  136.     cout << "Get First: " << lstptr1.GetFirst() << "\n";
  137.     cout << "On Base: " << lstptr1.OnBase() << "\n";
  138.     while ((strptr = lstptr1++) != NULL)
  139.       cout << "Get Next: " << strptr << "\n";
  140.  
  141.     cout << "Equal: " << ((lstptr1 == *strlist) ? "Yes" : "No") << "\n";
  142.     cout << "Not Equal: " << (!(lstptr1 == *strlist) ? "Yes" : "No") << "\n";
  143.  
  144.     lstptr1.GetFirst();
  145.     strlist->GetLast();
  146.     cout << "Num copied: " << copylist.Copy(lstptr1,*strlist) << "\n";
  147.  
  148.     cout << "Get First: " << lstptr1.GetFirst() << "\n";
  149.     cout << "On Base: " << lstptr1.OnBase() << "\n";
  150.     while ((strptr = lstptr1++) != NULL)
  151.       cout << "Get Next: " << strptr << "\n";
  152.  
  153.     cout << "On Base: " << lstptr1.OnBase() << "\n";
  154.  
  155.     cout << "Get First: " << copylist.GetFirst() << "\n";
  156.     cout << "On Base: " << copylist.OnBase() << "\n";
  157.     while ((strptr = copylist++) != NULL)
  158.       cout << "Get Next: " << strptr << "\n";
  159.  
  160.     delete strlist;
  161.  
  162.     copylist.GetFirst();
  163.     lstptr1 = copylist;
  164.     lstptr2 = copylist;
  165.     lstptr2++;
  166.  
  167.     cutlist.Cut(lstptr1,lstptr2);
  168.  
  169.     cout << "Get First: " << copylist.GetFirst() << "\n";
  170.     cout << "On Base: " << copylist.OnBase() << "\n";
  171.     while ((strptr = copylist++) != NULL)
  172.       cout << "Get Next: " << strptr << "\n";
  173.  
  174.     addlist.Paste(copylist,WB_SORTED,1);
  175.     addlist.Execute();
  176.     addlist.Paste(cutlist,WB_SORTED,1);
  177.     addlist.Execute();
  178.  
  179.     intlist.SetExecute(NULL,Execute);
  180.     intlist.AddFirst(10);
  181.     intlist.AddFirst(12);
  182.     intlist.AddFirst(14);
  183.     intlist.AddFirst(15);
  184.     intlist.AddFirst(16);
  185.     intlist.AddFirst(18);
  186.     intlist.Execute();
  187.  
  188.     return 0;
  189.   }
  190.