WebCFace 2.9.0
Web-based Communication Framework & Dashboard-like UI
Loading...
Searching...
No Matches
ValAdaptor Class Reference

数値、文字列などの値を相互変換するクラス More...

#include <webcface/common/val_adaptor.h>

Public Member Functions

 ValAdaptor ()
 
 ValAdaptor (const SharedString &str)
 
ValAdaptoroperator= (const SharedString &str)
 
 ValAdaptor (StringInitializer str)
 
ValAdaptoroperator= (StringInitializer str)
 
template<typename Bool , typename std::enable_if_t< std::is_same_v< Bool, bool >, bool > = true>
 ValAdaptor (Bool value)
 
template<typename Bool >
auto operator= (Bool v) -> std::enable_if_t< std::is_same_v< Bool, bool >, ValAdaptor & >
 
 ValAdaptor (std::int64_t value)
 
ValAdaptoroperator= (std::int64_t v)
 
 ValAdaptor (double value)
 
ValAdaptoroperator= (double v)
 
template<typename T , typename std::enable_if_t<!std::is_same_v< T, bool > &&std::is_integral_v< T >, std::nullptr_t > = nullptr>
 ValAdaptor (T value)
 
template<typename T , typename std::enable_if_t<!std::is_same_v< T, bool > &&std::is_integral_v< T >, std::nullptr_t > = nullptr>
ValAdaptoroperator= (T v)
 
template<typename T , typename std::enable_if_t< std::is_floating_point_v< T >, std::nullptr_t > = nullptr>
 ValAdaptor (T value)
 
template<typename T , typename std::enable_if_t< std::is_floating_point_v< T >, std::nullptr_t > = nullptr>
ValAdaptoroperator= (T v)
 
ValType valType () const
 
bool empty () const
 値が空かどうか調べる
 
std::string asStringRef () const
 文字列として返す
 
StringView asStringView () const
 null終端の文字列を返す
 
std::wstring asWStringRef () const
 文字列として返す (wstring)
 
WStringView asWStringView () const
 null終端の文字列を返す (wstring)
 
std::string_view asU8StringView () const
 
std::string asString () const
 文字列として返す(コピー)
 
std::wstring asWString () const
 文字列として返す(コピー) (wstring)
 
template<typename T , typename std::enable_if_t< std::is_convertible_v< StringView, T >, std::nullptr_t > = nullptr>
 operator T () const
 string_viewなどへの変換
 
template<typename T , typename std::enable_if_t< !std::is_convertible_v< StringView, T > &&std::is_convertible_v< WStringView, T >, std::nullptr_t > = nullptr>
 operator T () const
 wstring_viewなどへの変換
 
template<typename T , typename std::enable_if_t< !std::is_convertible_v< StringView, T > &&!std::is_convertible_v< WStringView, T > &&std::is_constructible_v< T, StringView >, std::nullptr_t > = nullptr>
 operator T () const
 stringなどへのexplicitな変換
 
template<typename T , typename std::enable_if_t< !std::is_convertible_v< StringView, T > &&!std::is_convertible_v< WStringView, T > &&!std::is_constructible_v< T, StringView > &&std::is_constructible_v< T, WStringView >, std::nullptr_t > = nullptr>
 operator T () const
 wstringなどへのexplicitな変換
 
double asDouble () const
 実数として返す
 
int asInt () const
 int型の整数として返す
 
long long asLLong () const
 long long型の整数として返す
 
template<typename T >
as () const
 数値として返す 明示的なキャストをする
 
template<typename T , typename std::enable_if_t< std::is_convertible_v< double, T > &&!std::is_same_v< T, bool >, std::nullptr_t > = nullptr>
 operator T () const
 数値型への変換
 
bool asBool () const
 bool値を返す
 
 operator bool () const
 
bool operator== (const ValAdaptor &other) const
 
bool operator!= (const ValAdaptor &other) const
 
template<typename T , typename std::enable_if_t< std::is_constructible_v< ValAdaptor, T > &&!std::is_same_v< ValAdaptor, T >, std::nullptr_t > = nullptr>
bool operator== (const T &other) const
 
template<typename T , typename std::enable_if_t< std::is_constructible_v< ValAdaptor, T > &&!std::is_same_v< ValAdaptor, T >, std::nullptr_t > = nullptr>
bool operator!= (const T &other) const
 

Detailed Description

数値、文字列などの値を相互変換するクラス

数値の場合doubleまたはint64_tで保持する

数値型であっても文字列のインスタンスを内部に保持し、 ValAdaptorが破棄されるまでの間char*やstring_viewから参照できる

空の状態=空文字列

Constructor & Destructor Documentation

◆ ValAdaptor() [1/8]

◆ ValAdaptor() [2/8]

ValAdaptor ( const SharedString str)
explicit
Since
ver2.0

◆ ValAdaptor() [3/8]

ValAdaptor ( StringInitializer  str)
explicit

ver2.10〜: std::string_view, std::wstring_view, const char*, const wchar_t* を受け取るコンストラクタを StringInitializer に置き換え

◆ ValAdaptor() [4/8]

template<typename Bool , typename std::enable_if_t< std::is_same_v< Bool, bool >, bool > >
ValAdaptor ( Bool  value)
explicit

ver2.10〜: const char* などのポインタがboolに変換されるのを防ぐためテンプレート化

◆ ValAdaptor() [5/8]

ValAdaptor ( std::int64_t  value)
explicit

◆ ValAdaptor() [6/8]

ValAdaptor ( double  value)
explicit

◆ ValAdaptor() [7/8]

template<typename T , typename std::enable_if_t<!std::is_same_v< T, bool > &&std::is_integral_v< T >, std::nullptr_t > = nullptr>
ValAdaptor ( value)
inlineexplicit

◆ ValAdaptor() [8/8]

template<typename T , typename std::enable_if_t< std::is_floating_point_v< T >, std::nullptr_t > = nullptr>
ValAdaptor ( value)
inlineexplicit

Member Function Documentation

◆ as()

template<typename T >
T as ( ) const
inline

数値として返す 明示的なキャストをする

Since
ver1.10
  • Tはdoubleなどの実数型、intなどの整数型
  • ver2.9までTになにを指定してもdoubleで返るバグがあり、 ver2.0〜2.9までdeprecated指定だった。
  • ver2.10〜 stringなど任意の型を受け付けるように変更。 string_viewなどだけでなく、explicitにしか変換できないstd::stringなどにも変換可能。

◆ asBool()

bool asBool ( ) const

bool値を返す

Since
ver1.10
  • 文字列型が入っていた場合、空文字列でなければtrueを返す
  • 数値型が入っていた場合、0でなければtrueを返す

◆ asDouble()

double asDouble ( ) const

実数として返す

Since
ver2.0

◆ asInt()

int asInt ( ) const

int型の整数として返す

Since
ver2.0

◆ asLLong()

long long asLLong ( ) const

long long型の整数として返す

Since
ver2.0

◆ asString()

std::string asString ( ) const
inline

文字列として返す(コピー)

Since
ver1.10

◆ asStringRef()

std::string asStringRef ( ) const
inline

文字列として返す

Since
ver1.10

std::stringのconst参照を返す。参照はこのValAdaptorが破棄されるまで有効

Deprecated:
ver2.10〜 互換性のために残しているが、内部の仕様変更によりstringのconst参照ではなく文字列のコピーが返る。 コピーなしで文字列を参照するには asStringView() を使用すること。

◆ asStringView()

StringView asStringView ( ) const

null終端の文字列を返す

Since
ver2.10

as_strにstringが格納されていた場合はそれをそのまま返す。 そうでない場合(u8string, wstring, double, int64が格納されている場合) はそれをstringに変換したうえでその参照を返す。

◆ asU8StringView()

std::string_view asU8StringView ( ) const
Since
ver2.10

◆ asWString()

std::wstring asWString ( ) const
inline

文字列として返す(コピー) (wstring)

Since
ver2.0

◆ asWStringRef()

std::wstring asWStringRef ( ) const
inline

文字列として返す (wstring)

Since
ver2.0
See also
asStringRef()
Deprecated:
ver2.10〜 互換性のために残しているが、内部の仕様変更によりwstringのconst参照ではなく文字列のコピーが返る。 コピーなしで文字列を参照するには asWStringView() を使用すること。

◆ asWStringView()

WStringView asWStringView ( ) const

null終端の文字列を返す (wstring)

Since
ver2.10

as_strにwstringが格納されていた場合はそれをそのまま返す。 そうでない場合(u8string, string, double, int64が格納されている場合) はそれをwstringに変換したうえでその参照を返す。

◆ empty()

bool empty ( ) const

値が空かどうか調べる

Since
ver1.11

◆ operator bool()

operator bool ( ) const
inline

boolへ変換

◆ operator T() [1/5]

template<typename T , typename std::enable_if_t< std::is_convertible_v< StringView, T >, std::nullptr_t > = nullptr>
operator T ( ) const
inline

string_viewなどへの変換

Since
ver2.10
  • StringViewおよびStringViewから暗黙的に変換可能な型への変換
  • std::string_viewなど文字列への参照のみを保持する型にキャストした場合、 その参照はこのValAdaptorが破棄されるまでは有効

◆ operator T() [2/5]

template<typename T , typename std::enable_if_t< !std::is_convertible_v< StringView, T > &&std::is_convertible_v< WStringView, T >, std::nullptr_t > = nullptr>
operator T ( ) const
inline

wstring_viewなどへの変換

Since
ver2.10
  • WStringViewおよびWStringViewから暗黙的に変換可能な型への変換
  • std::wstring_viewなど文字列への参照のみを保持する型にキャストした場合、 その参照はこのValAdaptorが破棄されるまでは有効

◆ operator T() [3/5]

template<typename T , typename std::enable_if_t< !std::is_convertible_v< StringView, T > &&!std::is_convertible_v< WStringView, T > &&std::is_constructible_v< T, StringView >, std::nullptr_t > = nullptr>
operator T ( ) const
inlineexplicit

stringなどへのexplicitな変換

Since
ver2.10
  • ver1.10〜の const std::string& へのキャストを置き換え
  • 以前のバージョンと違い暗黙的な変換はできないようにしている。

◆ operator T() [4/5]

template<typename T , typename std::enable_if_t< !std::is_convertible_v< StringView, T > &&!std::is_convertible_v< WStringView, T > &&!std::is_constructible_v< T, StringView > &&std::is_constructible_v< T, WStringView >, std::nullptr_t > = nullptr>
operator T ( ) const
inlineexplicit

wstringなどへのexplicitな変換

Since
ver2.10
  • ver2.0〜の const std::wstring& へのキャストを置き換え 以前のバージョンと違い暗黙的な変換はできないようにしている。

◆ operator T() [5/5]

template<typename T , typename std::enable_if_t< std::is_convertible_v< double, T > &&!std::is_same_v< T, bool >, std::nullptr_t > = nullptr>
operator T ( ) const
inline

数値型への変換

◆ operator!=() [1/2]

template<typename T , typename std::enable_if_t< std::is_constructible_v< ValAdaptor, T > &&!std::is_same_v< ValAdaptor, T >, std::nullptr_t > = nullptr>
bool operator!= ( const T &  other) const
inline

◆ operator!=() [2/2]

bool operator!= ( const ValAdaptor other) const
inline

◆ operator=() [1/7]

template<typename Bool >
auto operator= ( Bool  v) -> std::enable_if_t<std::is_same_v<Bool, bool>, ValAdaptor &>

ver2.10〜: const char* などのポインタがboolに変換されるのを防ぐためテンプレート化

テンプレート引数にenable_if_tを入れるとMSVCでコンパイルエラーになったので、 ここでは戻り値をSFINAEにしている

◆ operator=() [2/7]

ValAdaptor & operator= ( const SharedString str)
Since
ver2.0

◆ operator=() [3/7]

ValAdaptor & operator= ( double  v)

◆ operator=() [4/7]

ValAdaptor & operator= ( std::int64_t  v)

◆ operator=() [5/7]

ValAdaptor & operator= ( StringInitializer  str)

ver2.10〜: std::string_view, std::wstring_view, const char*, const wchar_t* を受け取るコンストラクタを StringInitializer に置き換え

◆ operator=() [6/7]

template<typename T , typename std::enable_if_t<!std::is_same_v< T, bool > &&std::is_integral_v< T >, std::nullptr_t > = nullptr>
ValAdaptor & operator= ( v)
inline

◆ operator=() [7/7]

template<typename T , typename std::enable_if_t< std::is_floating_point_v< T >, std::nullptr_t > = nullptr>
ValAdaptor & operator= ( v)
inline

◆ operator==() [1/2]

template<typename T , typename std::enable_if_t< std::is_constructible_v< ValAdaptor, T > &&!std::is_same_v< ValAdaptor, T >, std::nullptr_t > = nullptr>
bool operator== ( const T &  other) const
inline

◆ operator==() [2/2]

bool operator== ( const ValAdaptor other) const

◆ valType()

ValType valType ( ) const
inline

The documentation for this class was generated from the following files: