Skip to content
Snippets Groups Projects
Select Git revision
  • 7696e1d2adecc8630cc7020a7d2158dccf422d5b
  • master default protected
  • release/202005
  • release/202001
  • release/201912
  • release/201911
  • release/releaseWindowsTestOne
  • release/windowsReleaseTest
  • release/releaseTest
  • release/releaseWindowsTest
  • release/201910
  • release/qt/201910
  • release/windows-test/201910
  • release/201908
  • release/201906
  • release/201905
  • release/201904
  • release/201903
  • release/201902
  • release/201901
  • release/201812
  • 4.0.0
  • 2.2.0
  • 2.1.0
  • 2.0.1
  • 2.0.0
  • 1.4.1
  • 1.4.0
  • 1.3.0
  • 1.2.0
  • 1.1.0
31 results

string_utils.h

Blame
    • Adrien Béraud's avatar
      fbdc7b24
      crypto: save dh params · fbdc7b24
      Adrien Béraud authored and Guillaume Roguez's avatar Guillaume Roguez committed
      Diffie-Hellman parameters can take a few seconds to compute,
      during this time a CPU core will be fully used. This leads
      to high power consumption on startup, which can be problematic
      for mobile devices.
      
      This patch introduces saving DH params to the persistent cache
      to avoid regenerating them too often.
      The file modification time is used to know the age of the
      parameters. DH params can be reused for up to 3 days.
      
      * Intoduce writeTime to know a file modification time
      * Introduce to_wstring to convert filenames to the Windows format
      * Introduce a DhParams structure to handle serialization
      
      Tuleap: #452
      Change-Id: Iaea9cf24d922fc6cfc542f8fa7b0c208ebc141d2
      fbdc7b24
      History
      crypto: save dh params
      Adrien Béraud authored and Guillaume Roguez's avatar Guillaume Roguez committed
      Diffie-Hellman parameters can take a few seconds to compute,
      during this time a CPU core will be fully used. This leads
      to high power consumption on startup, which can be problematic
      for mobile devices.
      
      This patch introduces saving DH params to the persistent cache
      to avoid regenerating them too often.
      The file modification time is used to know the age of the
      parameters. DH params can be reused for up to 3 days.
      
      * Intoduce writeTime to know a file modification time
      * Introduce to_wstring to convert filenames to the Windows format
      * Introduce a DhParams structure to handle serialization
      
      Tuleap: #452
      Change-Id: Iaea9cf24d922fc6cfc542f8fa7b0c208ebc141d2
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    string_utils.h 2.50 KiB
    /*
     *  Copyright (C) 2014-2016 Savoir-faire Linux Inc.
     *
     *  Author: Tristan Matthews <tristan.matthews@savoirfairelinux.com>
     *  Author: Adrien Béraud <adrien.beraud@savoirfairelinux.com>
     *
     *  This program is free software; you can redistribute it and/or modify
     *  it under the terms of the GNU General Public License as published by
     *  the Free Software Foundation; either version 3 of the License, or
     *  (at your option) any later version.
     *
     *  This program is distributed in the hope that it will be useful,
     *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     *  GNU General Public License for more details.
     *
     *  You should have received a copy of the GNU General Public License
     *  along with this program; if not, write to the Free Software
     *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA.
     */
    
    #ifndef STRING_UTILS_H
    #define STRING_UTILS_H
    
    #include <string>
    #include <vector>
    
    #ifdef __ANDROID__
    #include <sstream>
    #endif
    
    namespace ring {
    
    constexpr static const char* TRUE_STR = "true";
    constexpr static const char* FALSE_STR = "false";
    
    constexpr static const char*
    bool_to_str(bool b) noexcept
    {
        return b ? TRUE_STR : FALSE_STR;
    }
    
    std::string to_string(double value);
    
    #ifdef _WIN32
    
    std::wstring to_wstring(const std::string& s);
    
    #endif
    
    #ifdef __ANDROID__
    
    // Rationale:
    // Some strings functions are not available on Android NDK as explained here:
    // http://stackoverflow.com/questions/17950814/how-to-use-stdstoul-and-stdstoull-in-android/18124627#18124627
    // We implement them by ourself as well as possible here.
    
    template <typename T>
    inline std::string
    to_string(T &&value)
    {
        std::ostringstream os;
        os << value;
        return os.str();
    }
    
    static inline int
    stoi(const std::string& str)
    {
        int v;
        std::istringstream os(str);
        os >> v;
        return v;
    }
    
    static inline double
    stod(const std::string& str)
    {
        double v;
        std::istringstream os(str);
        os >> v;
        return v;
    }
    
    #else
    
    template <typename T>
    inline std::string
    to_string(T &&value)
    {
        return std::to_string(std::forward<T>(value));
    }
    
    static inline int
    stoi(const std::string& str)
    {
        return std::stoi(str);
    }
    
    static inline double
    stod(const std::string& str)
    {
        return std::stod(str);
    }
    
    #endif
    
    std::string trim(const std::string &s);
    
    std::vector<std::string>
    split_string(const std::string& s, char sep);
    
    std::vector<unsigned>
    split_string_to_unsigned(const std::string& s, char sep);
    
    } // namespace ring
    
    #endif