3#include "IValueConverter.h"
11#pragma warning(disable: 4996)
22 template <
typename TBaseConverter,
typename =
void>
29 template <
typename TBaseConverter>
35 typename std::decay<typename TBaseConverter::TSourceParam>::type,
36 typename std::decay<typename TBaseConverter::TTargetParam>::type>,
37 TBaseConverter>::value>::type>
39 typename std::decay<typename TBaseConverter::TTargetParam>::type,
40 typename std::decay<typename TBaseConverter::TSourceParam>::type>
43 using TSourceParam =
typename TBaseConverter::TTargetParam;
44 using TTargetParam =
typename TBaseConverter::TSourceParam;
45 using TSource =
typename std::decay<TSourceParam>::type;
46 using TTarget =
typename std::decay<TTargetParam>::type;
48 template <
typename...
Args>
50 : baseConverter(std::forward<Args>(
args)...)
53 virtual TTarget
Convert(TSourceParam source)
override
55 return baseConverter.ConvertBack(source);
57 virtual TSource ConvertBack(TTargetParam
target)
override
59 return baseConverter.Convert(
target);
73 template <
typename TSource,
typename TTarget,
typename =
void>
81 template <
typename TSource,
typename TTarget>
84 typename std::
enable_if<std::is_arithmetic<TSource>::value && std::is_arithmetic<TTarget>::value>::type>
88 virtual TTarget
Convert(TSource source)
override
90 return static_cast<TTarget
>(source);
92 virtual TSource ConvertBack(TTarget
target)
override
94 return static_cast<TSource
>(
target);
109 template <
typename T,
typename =
void>
116 template <
typename T>
125 virtual T ConvertBack(
T target)
override
139 virtual bool Convert(
bool source)
override
143 virtual bool ConvertBack(
bool target)
override
153 template <
typename TSource,
typename =
void>
160 template <
typename TSource>
165 virtual bool Convert(TSource source)
override
167 return source !=
static_cast<TSource
>(0);
169 virtual TSource ConvertBack(
bool target)
override
171 return target ?
static_cast<TSource
>(1) :
static_cast<TSource
>(0);
179 template <
typename TTarget,
typename =
void>
186 template <
typename TTarget>
191 virtual TTarget
Convert(
bool source)
override
193 return source ?
static_cast<TTarget
>(1) :
static_cast<TTarget
>(0);
195 virtual bool ConvertBack(TTarget
target)
override
197 return target !=
static_cast<TTarget
>(0);
211 template <
typename TSource,
typename TTarget,
typename =
void>
219 template <
typename TSource,
typename TTarget>
222 typename std::
enable_if<std::is_enum<TSource>::value && std::is_arithmetic<TTarget>::value>::type>
226 virtual TTarget
Convert(TSource source)
override
228 return static_cast<TTarget
>(source);
230 virtual TSource ConvertBack(TTarget
target)
override
232 return static_cast<TSource
>(
target);
241 template <
typename TSource,
typename TTarget,
typename =
void>
249 template <
typename TSource,
typename TTarget>
252 typename std::
enable_if<std::is_arithmetic<TSource>::value && std::is_enum<TTarget>::value>::type>
256 virtual TTarget
Convert(TSource source)
override
258 return static_cast<TTarget
>(source);
260 virtual TSource ConvertBack(TTarget
target)
override
262 return static_cast<TSource
>(
target);
266 template <
typename TEnum>
269 template <
typename TEnum>
281 : defaultValue(defaultValue)
284 virtual std::wstring
Convert(
int source)
override
286 return std::to_wstring(source);
288 virtual int ConvertBack(
const std::wstring &
target)
override
306 : defaultValue(defaultValue)
309 virtual std::wstring
Convert(
float source)
override
311 std::wstring
result(32,
L'\0');
316 virtual float ConvertBack(
const std::wstring &
target)
override
334 : defaultValue(defaultValue)
337 virtual std::wstring
Convert(
double source)
override
339 std::wstring
result(32,
L'\0');
344 virtual double ConvertBack(
const std::wstring &
target)
override
362 : defaultValue(defaultValue)
365 virtual int Convert(
const std::wstring &source)
override
371 virtual std::wstring ConvertBack(
int target)
override
373 return std::to_wstring(
target);
387 : defaultValue(defaultValue)
390 virtual float Convert(
const std::wstring &source)
override
396 virtual std::wstring ConvertBack(
float target)
override
398 std::wstring
result(32,
L'\0');
415 : defaultValue(defaultValue)
418 virtual double Convert(
const std::wstring &source)
override
421 bool success = std::swscanf(source.c_str(),
L"%lf", &
result) == 1;
424 virtual std::wstring ConvertBack(
double target)
override
426 std::wstring
result(32,
L'\0');
445 : defaultValue(defaultValue)
448 virtual std::string
Convert(
int source)
override
450 return std::to_string(source);
452 virtual int ConvertBack(
const std::string &
target)
override
470 : defaultValue(defaultValue)
473 virtual std::string
Convert(
float source)
override
475 std::string
result(32,
'\0');
480 virtual float ConvertBack(
const std::string &
target)
override
498 : defaultValue(defaultValue)
501 virtual std::string
Convert(
double source)
override
503 std::string
result(32,
'\0');
508 virtual double ConvertBack(
const std::string &
target)
override
526 : defaultValue(defaultValue)
529 virtual int Convert(
const std::string &source)
override
532 bool success = std::sscanf(source.c_str(),
"%d", &
result) == 1;
535 virtual std::string ConvertBack(
int target)
override
537 return std::to_string(
target);
551 : defaultValue(defaultValue)
554 virtual float Convert(
const std::string &source)
override
557 bool success = std::sscanf(source.c_str(),
"%f", &
result) == 1;
560 virtual std::string ConvertBack(
float target)
override
562 std::string
result(32,
'\0');
579 : defaultValue(defaultValue)
582 virtual double Convert(
const std::string &source)
override
585 bool success = std::sscanf(source.c_str(),
"%lf", &
result) == 1;
588 virtual std::string ConvertBack(
double target)
override
590 std::string
result(32,
'\0');
608 virtual std::string
Convert(
const std::wstring &source)
override
612 virtual std::wstring ConvertBack(
const std::string &
target)
override
624 virtual std::wstring
Convert(
const std::string &source)
override
628 virtual std::string ConvertBack(
const std::wstring &
target)
override
640 virtual std::string
Convert(
const std::wstring &source)
override
644 virtual std::wstring ConvertBack(
const std::string &
target)
override
656 virtual std::wstring
Convert(
const std::string &source)
override
660 virtual std::string ConvertBack(
const std::wstring &
target)
override
窄字符串与双精度浮点数转换器
Definition Converters.h:576
窄字符串与浮点数转换器
Definition Converters.h:548
窄字符串与整数转换器
Definition Converters.h:523
窄字符串与宽字符串转换器
Definition Converters.h:622
布尔值取反转换器
Definition Converters.h:137
布尔值与数值转换器模板声明
Definition Converters.h:180
双精度浮点数与窄字符串转换器
Definition Converters.h:495
双精度浮点数与字符串转换器
Definition Converters.h:331
枚举类型与数值类型转换器模板声明
Definition Converters.h:212
浮点数与窄字符串转换器
Definition Converters.h:467
浮点数与字符串转换器
Definition Converters.h:303
值转换器接口
Definition IValueConverter.h:14
整数与窄字符串转换器
Definition Converters.h:442
整数与字符串转换器
Definition Converters.h:278
数值类型转换器模板声明
Definition Converters.h:74
数值取反转换器模板声明
Definition Converters.h:110
数值与布尔值转换器模板声明
Definition Converters.h:154
数值类型与枚举类型转换器模板声明
Definition Converters.h:242
反向转换器模板声明
Definition Converters.h:23
宽字符串与窄字符串转换器
Definition Converters.h:606
字符串与双精度浮点数转换器
Definition Converters.h:412
字符串与浮点数转换器
Definition Converters.h:384
字符串与整数转换器
Definition Converters.h:359
宽字符串与UTF-8编码窄字符串转换器
Definition Converters.h:638
UTF-8编码窄字符串与宽字符串转换器
Definition Converters.h:654
static std::string ToMultiByteStr(const std::wstring &wstr)
将宽字符串转为窄字符串
static std::wstring ToWideStr(const std::string &str)
将窄字符串转为宽字符串
SimpleWindow框架的顶级命名空间,所有公共类型、控件、枚举和工具函数均定义于此。
Definition Alignment.h:4