0
点赞
收藏
分享

微信扫一扫

DSS中PLDoubleLinkedList的用法


李国帅 2018/1/22

Darwin流媒体中自定义的双向链表的使用

#include "Win32header.h"
#include "OSMemory.h"

#include "OS.h"
#include "PLDoubleLinkedList.h"

class PairListElement {
public:
PairListElement(char* name, char* value)
{
mName = name;
mValue = value;
}

virtual ~PairListElement()
{
delete[] mName;
delete[] mValue;
}
char *mName;
char *mValue;
};
static void PrintNameAndValue(PLDoubleLinkedListNode<PairListElement> *node, void *userData)
{
PairListElement* nvPair = node->fElement;

char *idString = (char *)userData;//
StrPtrLen name(idString);
if (name.EqualIgnoreCase(idString, strlen((char*)userData)))
{
qtss_printf("qpl: %s, name %s, val %s\n", idString, nvPair->mName, nvPair->mValue);
}
}

static bool CompareStrToName(PLDoubleLinkedListNode<PairListElement> *node, void *userData)
{
PairListElement* nvPair = node->fElement;

char *idString = (char *)userData;//
StrPtrLen name(idString);

if (name.EqualIgnoreCase((char*)userData, strlen((char*)userData)))
return true;

return false;
}

int main(int argc, char* argv[])
{
PLDoubleLinkedList<PairListElement> *fNameValuelist;
fNameValuelist = NEW PLDoubleLinkedList<PairListElement>;

char* Str1 = new char[10];
strcpy(Str1, "Str1");
char* Val1 = new char[10];
strcpy(Val1, "1");
char* Val2 = new char[10];
strcpy(Val2, "2");
char* Str2 = new char[10];
strcpy(Str2, "Str2");
PairListElement element1(Str1, Val1);
PairListElement element2(Str2, Val2);
// create a node to hold the pair
PLDoubleLinkedListNode<PairListElement>* nvNode1 = NEW PLDoubleLinkedListNode<PairListElement>(&element1);
fNameValuelist->AddNode(nvNode1);// add it to the list
PLDoubleLinkedListNode<PairListElement>* nvNode2 = NEW PLDoubleLinkedListNode<PairListElement>(&element2);
fNameValuelist->AddNodeToTail(nvNode2);// add it to the list tail

fNameValuelist->ForEach(PrintNameAndValue, element1.mName);

PLDoubleLinkedListNode<PairListElement>* node;
node = fNameValuelist->ForEachUntil(CompareStrToName, element1.mName);
if (node != NULL)
{
PairListElement* nvPair = (PairListElement*)node->fElement;
qtss_printf("qpl: %s, name %s, val %s\n", (char*)element1.mName, nvPair->mName, nvPair->mValue);
}

node = fNameValuelist->GetNthNode(0);
node = fNameValuelist->GetFirst();
int count = fNameValuelist->GetNumNodes();

fNameValuelist->RemoveNode(nvNode1);
fNameValuelist->RemoveNode(nvNode2);

delete fNameValuelist;
}

举报

相关推荐

0 条评论