23#pragma warning (disable : 4996)
27#include <CoreFoundation/CoreFoundation.h>
50using Converter = std::wstring_convert<std::codecvt_utf8_utf16<char16_t>,
char16_t>;
53Converter& converter ()
55 static Converter instance;
68template <
class TDstChar,
class TSrcChar>
72 if (srcSize >= 0 && srcSize < dstSize)
76 dst[
i] = (TDstChar)src[
i];
86template <
class TSrcChar>
95 if (srcSize > 0 &&
length >= srcSize)
151#elif TARGET_API_MAC_CARBON
152 CFStringRef cfStr = CFStringCreateWithBytes (0, (
const UInt8 *)
thisBuffer,
getLength () * 2, kCFStringEncodingUTF16,
false);
155 value = CFStringGetDoubleValue (cfStr);
162 auto str = converter ().to_bytes (
thisBuffer);
163 return sscanf (str.data (),
"%lf", &
value) == 1;
176 return swprintf ((
wchar_t*)
thisBuffer, L
"%.*lf", precision,
value) != -1;
179 CFStringRef cfStr = CFStringCreateWithFormat (0, 0, CFSTR(
"%.*lf"), precision,
value);
183 CFRange range = {0, CFStringGetLength (cfStr)};
184 CFStringGetBytes (cfStr, range, kCFStringEncodingUTF16, 0,
false, (UInt8*)
thisBuffer,
thisSize, 0);
190 auto utf8Buffer =
reinterpret_cast<char*
> (
thisBuffer);
191 auto len = snprintf (utf8Buffer,
thisSize,
"%.*lf", precision,
value);
195 utf16Buffer[len] = 0;
198 utf16Buffer[len] = utf8Buffer[len];
217 CFStringRef cfStr = CFStringCreateWithBytes (0, (
const UInt8 *)
thisBuffer,
getLength () * 2, kCFStringEncodingUTF16,
false);
220 value = CFStringGetIntValue (cfStr);
227 auto str = converter ().to_bytes (
thisBuffer);
228 return sscanf (str.data (),
"%lld", &
value) == 1;
244 CFStringRef cfStr = CFStringCreateWithFormat (0, 0, CFSTR(
"%lld"),
value);
248 CFRange range = {0, CFStringGetLength (cfStr)};
249 CFStringGetBytes (cfStr, range, kCFStringEncodingUTF16, 0,
false, (UInt8*)
thisBuffer,
thisSize, 0);
255 auto utf8Buffer =
reinterpret_cast<char*
> (
thisBuffer);
260 utf16Buffer[len] = 0;
263 utf16Buffer[len] = utf8Buffer[len];
bool printInt(int64 value)
Definition ustring.cpp:238
bool scanInt(int64 &value) const
Definition ustring.cpp:211
UString & append(const char16 *src, int32 srcSize=-1)
Definition ustring.cpp:117
const UString & toAscii(char *dst, int32 dstSize) const
Definition ustring.cpp:139
int32 getLength() const
Definition ustring.cpp:104
bool scanFloat(double &value) const
Definition ustring.cpp:146
char16 * thisBuffer
Definition ustring.h:73
UString(char16 *buffer, int32 size)
Definition ustring.h:33
const UString & copyTo(char16 *dst, int32 dstSize) const
Definition ustring.cpp:125
UString & fromAscii(const char *src, int32 srcSize=-1)
Definition ustring.cpp:132
UString & assign(const char16 *src, int32 srcSize=-1)
Definition ustring.cpp:110
int32 thisSize
size in code unit (not in byte!)
Definition ustring.h:74
bool printFloat(double value, int32 precision=4)
Definition ustring.cpp:173
register unsigned i
Definition inflate.c:1575
static PuglViewHint int value
Definition pugl.h:1708
Definition baseiids.cpp:43
int16 char16
Definition ftypes.h:101
int int32
Definition ftypes.h:50
int32 StringLength(const TSrcChar *src, int32 srcSize=-1)
Definition ustring.cpp:87
void StringCopy(TDstChar *dst, int32 dstSize, const TSrcChar *src, int32 srcSize=-1)
Definition ustring.cpp:69
long long int64
Definition ftypes.h:66
png_uint_32 length
Definition png.c:2247
int result
Definition process.c:1455
_WDL_CSTRING_PREFIX void INT_PTR count
Definition wdlcstring.h:263