diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/albumart/ParamList.cpp | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/albumart/ParamList.cpp')
-rw-r--r-- | Src/albumart/ParamList.cpp | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/Src/albumart/ParamList.cpp b/Src/albumart/ParamList.cpp new file mode 100644 index 00000000..9585fa10 --- /dev/null +++ b/Src/albumart/ParamList.cpp @@ -0,0 +1,113 @@ +#include "ParamList.h" + +ParamList::~ParamList() +{ + for (auto v : parms_list) + { + delete v; + } + parms_list.clear(); +} + +const wchar_t *ParamList::getItemName(int i) +{ + if(((size_t)i)>=getNbItems()) + return L""; + return + parms_list[i]->parm; +} + +const wchar_t *ParamList::getItemValueIndex(int i) +{ + if(((size_t)i)>=getNbItems()) + return L""; + return + parms_list[i]->value; +} + +const wchar_t *ParamList::getItemValue(const wchar_t *name) +{ + for(size_t i=0;i!=getNbItems();i++) + if(!_wcsicmp(parms_list[i]->parm, name)) + return parms_list[i]->value; + return NULL; +} + +const wchar_t *ParamList::enumItemValues(const wchar_t *name, int nb) +{ + int f=0; + for(size_t i=0;i!=getNbItems();i++) + if(!_wcsicmp(parms_list[i]->parm, name)) + if(f==nb) + return parms_list[i]->value; + else f++; + return NULL; +} + +int ParamList::getItemValueInt(const wchar_t *name, int def) +{ + for(size_t i=0;i!=getNbItems();i++) + if(!_wcsicmp(parms_list[i]->parm, name)) + { + return (parms_list[i]->value ? _wtoi(parms_list[i]->value) : def); + } + return def; +} + +size_t ParamList::getNbItems() +{ + return parms_list.size(); +} + +void ParamList::addItem(const wchar_t *parm, const wchar_t *value) +{ + parms_struct *p= new parms_struct; + p->parm = _wcsdup(parm); + p->ownValue = true; + p->value = _wcsdup(value); + parms_list.push_back(p); +} + +void ParamList::removeItem(const wchar_t *parm) +{ + //for (size_t i=0;i!=parms_list.size();i++) + //{ + // parms_struct *s = parms_list[i]; + // if (!_wcsicmp(parm, s->parm)) + // { + // delete s; + // parms_list.eraseindex(i); + // i--; + // } + //} + + for (auto it = parms_list.begin(); it != parms_list.end(); it++) + { + parms_struct* s = *it; + if (!_wcsicmp(parm, s->parm)) + { + delete s; + it = parms_list.erase(it); + } + } + +} + +int ParamList::findItem(const wchar_t *parm) +{ + for(size_t i=0;i!=getNbItems();i++) + if(!_wcsicmp(parms_list[i]->parm, parm)) + return (int)i; + return -1; +} + +#define CBCLASS ParamList +START_DISPATCH; +CB(XMLREADERPARAMS_GETITEMNAME, getItemName) +CB(XMLREADERPARAMS_GETITEMVALUE, getItemValueIndex) +CB(XMLREADERPARAMS_GETITEMVALUE2, getItemValue) +CB(XMLREADERPARAMS_ENUMITEMVALUES, enumItemValues) +CB(XMLREADERPARAMS_GETITEMVALUEINT, getItemValueInt) +CB(XMLREADERPARAMS_GETNBITEMS, getNbItems) +END_DISPATCH; +#undef CBCLASS
\ No newline at end of file |