cppassist  1.0.0.f4fab4f962ff
C++ sanctuary for small but powerful and frequently required, stand alone features.
conversion.h
Go to the documentation of this file.
1 
2 #pragma once
3 
4 
5 #include <functional>
6 #include <string>
7 
8 #include <cppassist/cppassist_api.h>
9 
10 
11 namespace cppassist
12 {
13 
14 
16 
23 enum class Encoding : unsigned int
24 {
25  ANSI
26 , ASCII = Encoding::ANSI // for both ANSI and ASCII 1 byte in a std::string or char is used to encode it
27 , UTF8
28 , UTF16
29 };
31 
32 
33 namespace string
34 {
35 
36 
38 
48 template <typename Type>
49 Type fromString(const std::string & string);
50 
51 template <>
52 CPPASSIST_API char fromString<char>(const std::string & string);
53 
54 template <>
55 CPPASSIST_API unsigned char fromString<unsigned char>(const std::string & string);
56 
57 template <>
58 CPPASSIST_API bool fromString<bool>(const std::string & string);
59 
60 template <>
61 CPPASSIST_API int fromString<int>(const std::string & string);
63 
65 
75 template <typename Type>
76 std::string toString(const Type & value);
77 
78 template <>
79 CPPASSIST_API std::string toString<char>(const char & value);
80 
81 template <>
82 CPPASSIST_API std::string toString<unsigned char>(const unsigned char & value);
83 
84 template <>
85 CPPASSIST_API std::string toString<bool>(const bool & value);
87 
89 
102 CPPASSIST_API std::u32string encode(const std::string & input, Encoding encoding);
103 CPPASSIST_API std::u32string encode(const std::wstring & input, Encoding encoding);
104 CPPASSIST_API std::u32string encode(const std::u16string & input, Encoding encoding);
105 CPPASSIST_API std::u32string encode(const char * input, const size_t size, Encoding encoding);
106 
107 CPPASSIST_API void decode(const std::u32string & input, std::string & output, Encoding encoding);
108 CPPASSIST_API void decode(const std::u32string & input, std::wstring & output, Encoding encoding);
109 CPPASSIST_API void decode(const std::u32string & input, std::u16string & output, Encoding encoding);
110 CPPASSIST_API void decode(const std::u32string & input, char * & output, std::size_t & size, Encoding encoding);
112 
113 
115 
125 CPPASSIST_API std::string toLower(const std::string & input);
126 CPPASSIST_API std::string toLower(std::string && input);
128 
130 
140 CPPASSIST_API std::string toUpper(const std::string & input);
141 CPPASSIST_API std::string toUpper(std::string && input);
143 
144 
145 } // namespace string
146 } // namespace cppassist
147 
148 
149 namespace std
150 {
151 
152 
154 
158 template<>
159 struct hash<cppassist::Encoding>
160 {
171  std::hash<unsigned int>::result_type operator()(const cppassist::Encoding & arg) const
172  {
173  std::hash<unsigned int> hasher;
174  return hasher(static_cast<unsigned int>(arg));
175  }
176 };
178 
179 
180 } // namespace std
181 
182 
CPPASSIST_API void decode(const std::u32string &input, char *&output, std::size_t &size, Encoding encoding)
CPPASSIST_API std::string toUpper(std::string &&input)
Type fromString(const std::string &string)
Convert from std::string to Type.
Definition: conversion.inl:15
Definition: ArgumentParser.h:12
CPPASSIST_API unsigned char fromString< unsigned char >(const std::string &string)
Encoding
String encoding.
Definition: conversion.h:23
Definition: conversion.h:149
CPPASSIST_API std::string toString< unsigned char >(const unsigned char &value)
CPPASSIST_API std::u32string encode(const char *input, const size_t size, Encoding encoding)
CPPASSIST_API bool fromString< bool >(const std::string &string)
CPPASSIST_API std::string toLower(std::string &&input)
Definition: value.h:14
CPPASSIST_API char fromString< char >(const std::string &string)
std::string toString(const Type &value)
Convert from Type to std::string.
Definition: conversion.inl:24
CPPASSIST_API std::string toString< char >(const char &value)
CPPASSIST_API int fromString< int >(const std::string &string)
CPPASSIST_API std::string toString< bool >(const bool &value)