diff -r f5050f1da672 -r 04becd199f91 javacommons/utils/inc/javacommonutils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javacommons/utils/inc/javacommonutils.h Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,152 @@ +/* +* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + +#ifndef JAVACOMMONUTILS_H +#define JAVACOMMONUTILS_H + +#include +#include "javaosheaders.h" + +#include +#include + +namespace java +{ +namespace util +{ + +class JavaCommonUtils +{ +public: + OS_IMPORT static int stringToInt(const std::string& str); + OS_IMPORT static long long stringToLongLong(const std::string& str); + OS_IMPORT static std::string intToString(const int& value); + OS_IMPORT static std::string longLongToString(const long long& value); + OS_IMPORT static int wstringToInt(const std::wstring& str); + OS_IMPORT static std::wstring intToWstring(const int& value); + OS_IMPORT static std::wstring longLongToWstring(const long long& value); + OS_IMPORT static long long wstringToLongLong(const std::wstring& str); + + /** + * Converts the null terminated UTF-8 string given as parameter + * to UTF-16 wstring that is returned. + * @param chr the null terminated UTF-8 string to be converted + * @return UTF-16 wstring + * @throws ExceptionBase if conversion fails + */ + OS_IMPORT static std::wstring utf8ToWstring(const char* chr); + + /** + * Converts UTF-16 (UCS-2) wstring to null terminated UTF-8 string + * User must note that this method allocates memory for UTF-8 content. + * User must delete[] the memory once it is not needed any more. + * @param str UTF-16 wstring to be converted + * @return new null terminated UTF-8 string + * @throws ExceptionBase if conversion fails + */ + OS_IMPORT static char* wstringToUtf8(const std::wstring& str); + + /** + * Strips characters at the beginning and end of the string. + * @param aStr Stripped string. Output argument. + * @param aStrippedChar Character what is stripped away. + *

+ *

Example

+ *
+     * std::wstring str(L"\n EFFFFFFF \t");
+     * trimWstring(str,L'\n');
+     * trimWstring(str,L'\t');
+     * //Note: For some reason 'space' character must be stripped last.
+     * trimWstring(str,L' ');
+     * //Result is 'EFFFFFFF'.
+     *
+ */ + OS_IMPORT static void trimWstring(std::wstring& aStr,const wchar_t& aStrippedChar); + + /** + * Encode string to base64 string. + * + * @param aData to be encoded. + * @return base64 encoded string. + */ + OS_IMPORT static std::string base64encode(const std::string& aData); + + /** + * Decode base64 string. + * + * @param aData base64 encoded string. + * @return decoded string. + */ + OS_IMPORT static std::string base64decode(const std::string& aData); + + /** + * Decodes percent-encoded UTF-8 characters embedded to UCS-2 string. + * After the characters has been decoded, they are converted to UCS-2. + * When the whole string is in UCS-2 format, it is returned. + * @param str UTF-16 (UCS-2) wstring that contains %-encoded UTF-8 characters, + * for example "%C3%80%C3%80NEST%C3%80.EXE" + * @return UTF-16 wstring, for example "ÄÄNESTÄ.EXE" + * @throws ExceptionBase if UTF-8 to UTF-16 conversion fails + */ + OS_IMPORT static std::wstring percentDecode(const std::wstring& str); + +public: + /** + * Decodes one % sequence. + * @param first the character + * @param sec the character + * @return decoded char value 0-255 + * @throws ExceptionBase if and are not hexadecimal characters + */ + static char decodeOnePercentSeq(wchar_t first, wchar_t sec); +}; + +// A simple class for storing char array that is deleted automatically +// when going out of scope. +class ScopedCharArray +{ +public: + ScopedCharArray(int size) : mBuffer(0) + { + mBuffer = new char[size]; + } + ~ScopedCharArray() + { + delete [] mBuffer; + } + + char* get() + { + return mBuffer; + } + +private: + ScopedCharArray(); //No default constructor allowed + ScopedCharArray(const ScopedCharArray&); //No copy constructor allowed + ScopedCharArray& operator= (const ScopedCharArray&); //No Assignment operator allowed + +private: + char* mBuffer; +}; + + +} //end namespace util +} //end namespace java + +#endif // JAVACOMMONUTILS_H +