format: add '!' coercion format specifier
using in place of the format '!' will force a type coercion to string before rendering.
This commit is contained in:
parent
9cb25456a4
commit
4ac0139657
25
format.ipp
25
format.ipp
@ -32,56 +32,56 @@ namespace util {
|
|||||||
///////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline bool
|
inline bool
|
||||||
is_valid_specifier (const char*)
|
is_type_specifier (const char*)
|
||||||
{ return false; }
|
{ return false; }
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
template <>
|
template <>
|
||||||
inline bool
|
inline bool
|
||||||
is_valid_specifier<const char*> (const char *s)
|
is_type_specifier<const char*> (const char *s)
|
||||||
{ return *s == 's'; }
|
{ return *s == 's'; }
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
template <>
|
template <>
|
||||||
inline bool
|
inline bool
|
||||||
is_valid_specifier<char*> (const char *s)
|
is_type_specifier<char*> (const char *s)
|
||||||
{ return *s == 's'; }
|
{ return *s == 's'; }
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
template <>
|
template <>
|
||||||
inline bool
|
inline bool
|
||||||
is_valid_specifier<std::string> (const char *s)
|
is_type_specifier<std::string> (const char *s)
|
||||||
{ return *s == 's'; }
|
{ return *s == 's'; }
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
template <>
|
template <>
|
||||||
inline bool
|
inline bool
|
||||||
is_valid_specifier<boost::filesystem::path> (const char *s)
|
is_type_specifier<boost::filesystem::path> (const char *s)
|
||||||
{ return *s == 's'; }
|
{ return *s == 's'; }
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
template <>
|
template <>
|
||||||
inline bool
|
inline bool
|
||||||
is_valid_specifier<size_t> (const char *s)
|
is_type_specifier<size_t> (const char *s)
|
||||||
{ return *s == 'u'; }
|
{ return *s == 'u'; }
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
template <>
|
template <>
|
||||||
inline bool
|
inline bool
|
||||||
is_valid_specifier<unsigned> (const char *s)
|
is_type_specifier<unsigned> (const char *s)
|
||||||
{ return *s == 'u'; }
|
{ return *s == 'u'; }
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
template <>
|
template <>
|
||||||
inline bool
|
inline bool
|
||||||
is_valid_specifier<float> (const char *s)
|
is_type_specifier<float> (const char *s)
|
||||||
{
|
{
|
||||||
switch (*s) {
|
switch (*s) {
|
||||||
case 'e':
|
case 'e':
|
||||||
@ -100,6 +100,15 @@ namespace util {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////
|
||||||
|
template <typename T>
|
||||||
|
inline bool
|
||||||
|
is_valid_specifier (const char *s)
|
||||||
|
{
|
||||||
|
return *s == '!' || is_type_specifier<T> (s);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////
|
||||||
template <typename InputIt>
|
template <typename InputIt>
|
||||||
void
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user