File indexing completed on 2024-05-05 17:50:10

0001 /*
0002    Copyright (C) 2013 Andreas Hartmetz <ahartmetz@gmail.com>
0003 
0004    This library is free software; you can redistribute it and/or
0005    modify it under the terms of the GNU Library General Public
0006    License as published by the Free Software Foundation; either
0007    version 2 of the License, or (at your option) any later version.
0008 
0009    This library is distributed in the hope that it will be useful,
0010    but WITHOUT ANY WARRANTY; without even the implied warranty of
0011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0012    Library General Public License for more details.
0013 
0014    You should have received a copy of the GNU Library General Public License
0015    along with this library; see the file COPYING.LGPL.  If not, write to
0016    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0017    Boston, MA 02110-1301, USA.
0018 
0019    Alternatively, this file is available under the Mozilla Public License
0020    Version 1.1.  You may obtain a copy of the License at
0021    http://www.mozilla.org/MPL/
0022 */
0023 
0024 #ifndef STRINGTOOLS_H
0025 #define STRINGTOOLS_H
0026 
0027 #include "types.h"
0028 
0029 #include <sstream>
0030 #include <string>
0031 #include <vector>
0032 
0033 // export is for dferryclient library...
0034 std::vector<std::string> DFERRY_EXPORT split(const std::string &s, char delimiter, bool keepEmptyParts = true);
0035 #ifndef DFERRY_SERDES_ONLY
0036 std::string hexEncode(const std::string &s);
0037 std::string sha1Hex(const std::string &s);
0038 #endif
0039 
0040 inline std::string toStdString(cstring cstr)
0041 {
0042     return std::string(cstr.ptr, cstr.length);
0043 }
0044 
0045 // In C++11, std::to_string doesn't exist yet... so use this instead
0046 template <typename T>
0047 std::string dfToString(T value)
0048 {
0049     std::stringstream ss;
0050     ss.imbue(std::locale::classic());
0051     ss << value;
0052     return ss.str();
0053 }
0054 
0055 // kind of like std::stoi (note: available in C+11) but without exceptions
0056 template <typename T>
0057 static bool dfFromString(const std::string &s, T *t)
0058 {
0059     std::istringstream is(s);
0060     is.imbue(std::locale::classic());
0061     is >> *t;
0062     return !is.fail() && is.eof();
0063 }
0064 
0065 #endif // STRINGTOOLS_H