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
/
SLIST1.CPP
< prev
next >
Wrap
C/C++ Source or Header
|
1996-05-01
|
7KB
|
190 lines
/***************************************************************************\
** **
** 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. **
\***************************************************************************/
/*
** Single Linked List - Templates version
*/
template <class USRDEF>
class MyList : public WBSList<USRDEF>
{
public:
void WBExecuteFunct(void *nullitem, USRDEF item)
{
nullitem = nullitem;
cout << "Execute: " << item << "\n";
}
void WBDeleteFunct(void *nullitem, USRDEF item)
{
nullitem = nullitem;
cout << "Delete: " << item << "\n";
}
USRDEF WBCopyFunct(void *nullitem, USRDEF item)
{
nullitem = nullitem;
return(item);
}
int WBCompareFunct(void *nullitem, USRDEF item1, USRDEF item2)
{
nullitem = nullitem;
return(strcmp(item1,item2));
}
};
template <class USRDEF>
void Execute(void *nullitem, USRDEF item)
{
nullitem = nullitem;
cout << "Execute: " << item << "\n";
}
main()
{
MyList<char *> lstptr1, lstptr2, *strlist, copylist, cutlist, addlist;
WBSList<int> intlist;
char *strptr;
strlist = new MyList<char *>;
strlist->Add("Item02");
strlist->Add("Item03");
strlist->Add("Item04");
strlist->GetFirst();
strlist->Insert("Item01");
strlist->GetLast();
*strlist += "Item05";
*strlist += "Item06";
*strlist += "Item07";
*strlist += "Item09";
strlist->Insert("Item08");
strlist->AddFirst("Item00");
strlist->AddLast("Item10");
strlist->Append("Item11");
strlist->AddSorted("Item12");
strlist->AddSorted("Item14");
strlist->AddSorted("Item17");
strlist->AddSorted("Item16");
strlist->AddSorted("Item18");
strlist->AddSorted("Item15");
strlist->AddSorted("Item13");
strlist->AddSorted("Item19");
strlist->Execute();
cout << "Num Items: " << strlist->NumItems() << "\n";
cout << "Search: " << strlist->Search("Item01") << "\n";
strlist->DelCurrent();
strlist->DelLast();
strlist->DelFirst();
strlist->DelNext();
strlist->Execute();
cout << "Num Items: " << strlist->NumItems() << "\n";
cout << "Get Current: " << strlist->GetCurrent() << "\n";
cout << "Get Next: " << strlist->GetNext() << "\n";
cout << "Get Last: " << strlist->GetLast() << "\n";
cout << "Get First: " << strlist->GetFirst() << "\n";
while ((strptr = (*strlist)++) != NULL)
cout << "Get Next: " << strptr << "\n";
cout << "Get First: " << strlist->GetFirst() << "\n";
while ((strptr = strlist->GetNext()) != NULL)
cout << "Get Next: " << strptr << "\n";
cout << "On Base: " << ((strlist->Is()&WB_BASE) ? "Yes" : "No") << "\n";
cout << "Get First: " << strlist->GetFirst() << "\n";
cout << "On Base: " << ((strlist->Is()&WB_BASE) ? "Yes" : "No") << "\n";
(*strlist)++;
cout << "On Base: " << strlist->OnBase() << "\n";
cout << "Get First: " << strlist->GetFirst() << "\n";
cout << "On Base: " << strlist->OnBase() << "\n";
lstptr1 = *strlist;
cout << "Equal: " << ((lstptr1 == *strlist) ? "Yes" : "No") << "\n";
cout << "Not Equal: " << (!(lstptr1 == *strlist) ? "Yes" : "No") << "\n";
cout << "Get First: " << lstptr1.GetFirst() << "\n";
cout << "On Base: " << lstptr1.OnBase() << "\n";
while ((strptr = lstptr1++) != NULL)
cout << "Get Next: " << strptr << "\n";
cout << "Equal: " << ((lstptr1 == *strlist) ? "Yes" : "No") << "\n";
cout << "Not Equal: " << (!(lstptr1 == *strlist) ? "Yes" : "No") << "\n";
lstptr1.GetFirst();
strlist->GetLast();
cout << "Num copied: " << copylist.Copy(lstptr1,*strlist) << "\n";
cout << "Get First: " << lstptr1.GetFirst() << "\n";
cout << "On Base: " << lstptr1.OnBase() << "\n";
while ((strptr = lstptr1++) != NULL)
cout << "Get Next: " << strptr << "\n";
cout << "On Base: " << lstptr1.OnBase() << "\n";
cout << "Get First: " << copylist.GetFirst() << "\n";
cout << "On Base: " << copylist.OnBase() << "\n";
while ((strptr = copylist++) != NULL)
cout << "Get Next: " << strptr << "\n";
delete strlist;
copylist.GetFirst();
lstptr1 = copylist;
lstptr2 = copylist;
lstptr2++;
cutlist.Cut(lstptr1,lstptr2);
cout << "Get First: " << copylist.GetFirst() << "\n";
cout << "On Base: " << copylist.OnBase() << "\n";
while ((strptr = copylist++) != NULL)
cout << "Get Next: " << strptr << "\n";
addlist.Paste(copylist,WB_SORTED,1);
addlist.Execute();
addlist.Paste(cutlist,WB_SORTED,1);
addlist.Execute();
intlist.SetExecute(NULL,Execute);
intlist.AddFirst(10);
intlist.AddFirst(12);
intlist.AddFirst(14);
intlist.AddFirst(15);
intlist.AddFirst(16);
intlist.AddFirst(18);
intlist.Execute();
return 0;
}