From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- Src/xml/XMLParameters.cpp | 131 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 Src/xml/XMLParameters.cpp (limited to 'Src/xml/XMLParameters.cpp') diff --git a/Src/xml/XMLParameters.cpp b/Src/xml/XMLParameters.cpp new file mode 100644 index 00000000..487cea9a --- /dev/null +++ b/Src/xml/XMLParameters.cpp @@ -0,0 +1,131 @@ +#include "XMLParameters.h" +#include + +#ifdef __APPLE__ +#include +int _wcsicmp(const wchar_t *str1, const wchar_t *str2) +{ + CFStringRef cfstr1 = CFStringCreateWithBytes(kCFAllocatorDefault, (UInt8 *)str1, wcslen(str1)*sizeof(wchar_t), kCFStringEncodingUTF32, false); + CFStringRef cfstr2 = CFStringCreateWithBytes(kCFAllocatorDefault, (UInt8 *)str2, wcslen(str2)*sizeof(wchar_t), kCFStringEncodingUTF32, false); + int result = CFStringCompare(cfstr1, cfstr2, kCFCompareCaseInsensitive); + CFRelease(cfstr1); + CFRelease(cfstr2); + return result; +} +#endif + +XMLParameters::XMLParameters(const wchar_t **_parameters) +: parameters(_parameters), numParameters(0), numParametersCalculated(false) +{ +} + +void XMLParameters::CountTo(int x) +{ + if (numParametersCalculated || x < numParameters) + return; + + while (1) + { + if (parameters[numParameters*2] == 0) + { + numParametersCalculated=true; + return; + } + numParameters++; + if (numParameters == x) + return; + } +} + +void XMLParameters::Count() +{ + if (numParametersCalculated) + return; + + while (1) + { + if (parameters[numParameters*2] == 0) + { + numParametersCalculated=true; + return; + } + numParameters++; + } +} + +const wchar_t *XMLParameters::GetItemName(int i) +{ + CountTo(i); + if (i < numParameters) + return parameters[i*2]; + else + return 0; +} + +const wchar_t *XMLParameters::GetItemValueIndex(int i) +{ + CountTo(i); + if (i < numParameters) + return parameters[i*2+1]; + else + return 0; +} + +int XMLParameters::GetNumItems() +{ + Count(); + return numParameters; +} + +const wchar_t *XMLParameters::GetItemValue(const wchar_t *name) +{ + int i=0; + while(1) + { + CountTo(i+1); + if (i