28#include <CoreFoundation/CoreFoundation.h>
30#if !defined (SMTG_USE_STDATOMIC_H)
31#if defined(MAC_OS_X_VERSION_10_11) && defined(MAC_OS_X_VERSION_MIN_REQUIRED)
32#define SMTG_USE_STDATOMIC_H (MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_11)
34#define SMTG_USE_STDATOMIC_H 0
38#if !SMTG_USE_STDATOMIC_H
39#include <libkern/OSAtomic.h>
40#if defined(__GNUC__) && (__GNUC__ >= 4) && !__LP64__
42#pragma GCC diagnostic ignored "-Wformat"
48#if !defined (SMTG_USE_STDATOMIC_H)
49#if defined (__ANDROID__) || defined(_LIBCPP_VERSION)
50#define SMTG_USE_STDATOMIC_H 1
52#include <ext/atomicity.h>
58#if defined (SMTG_USE_STDATOMIC_H) && SMTG_USE_STDATOMIC_H
67#define GuidStruct GUID
90#if SMTG_USE_STDATOMIC_H
91 return atomic_fetch_add (
reinterpret_cast<atomic_int_least32_t*
> (&var),
d) +
d;
95 return InterlockedExchangeAdd (
reinterpret_cast<long volatile*
>(&var),
d) +
d;
97 return InterlockedExchangeAdd ((
LONG*)&var,
d) +
d;
100 return OSAtomicAdd32Barrier (
d, (
int32_t*)&var);
101#elif defined(__ANDROID__)
102 return atomic_fetch_add ((atomic_int*)&var,
d) +
d;
104 __gnu_cxx::__atomic_add (&var,
d);
107#warning implement me!
137#if SMTG_CPP11_STDLIBSUPPORT
154#if defined(_M_ARM64) || defined(_M_ARM)
159 HRESULT hr = CoCreateGuid (&guid);
162 case RPC_S_OK:
memcpy (
data, (
char*)&guid,
sizeof (
TUID));
return true;
164 case (
HRESULT)RPC_S_UUID_LOCAL_ONLY:
165 default:
return false;
170 CFUUIDRef uuid = CFUUIDCreate (kCFAllocatorDefault);
173 CFUUIDBytes bytes = CFUUIDGetUUIDBytes (uuid);
181 srand ((
size_t)
this);
183 data[
i] =
static_cast<unsigned char>(rand ());
186#warning implement me!
196 return memcmp (
data, nulluid,
sizeof (
TUID)) != 0;
210 data [0] = (char)((l1 & 0x000000FF) );
211 data [1] = (char)((l1 & 0x0000FF00) >> 8);
212 data [2] = (char)((l1 & 0x00FF0000) >> 16);
213 data [3] = (char)((l1 & 0xFF000000) >> 24);
214 data [4] = (char)((l2 & 0x00FF0000) >> 16);
215 data [5] = (char)((l2 & 0xFF000000) >> 24);
216 data [6] = (char)((l2 & 0x000000FF) );
217 data [7] = (char)((l2 & 0x0000FF00) >> 8);
218 data [8] = (char)((l3 & 0xFF000000) >> 24);
219 data [9] = (char)((l3 & 0x00FF0000) >> 16);
220 data [10] = (char)((l3 & 0x0000FF00) >> 8);
221 data [11] = (char)((l3 & 0x000000FF) );
222 data [12] = (char)((l4 & 0xFF000000) >> 24);
223 data [13] = (char)((l4 & 0x00FF0000) >> 16);
224 data [14] = (char)((l4 & 0x0000FF00) >> 8);
225 data [15] = (char)((l4 & 0x000000FF) );
227 data [0] = (char)((l1 & 0xFF000000) >> 24);
228 data [1] = (char)((l1 & 0x00FF0000) >> 16);
229 data [2] = (char)((l1 & 0x0000FF00) >> 8);
230 data [3] = (char)((l1 & 0x000000FF) );
231 data [4] = (char)((l2 & 0xFF000000) >> 24);
232 data [5] = (char)((l2 & 0x00FF0000) >> 16);
233 data [6] = (char)((l2 & 0x0000FF00) >> 8);
234 data [7] = (char)((l2 & 0x000000FF) );
235 data [8] = (char)((l3 & 0xFF000000) >> 24);
236 data [9] = (char)((l3 & 0x00FF0000) >> 16);
237 data [10] = (char)((l3 & 0x0000FF00) >> 8);
238 data [11] = (char)((l3 & 0x000000FF) );
239 data [12] = (char)((l4 & 0xFF000000) >> 24);
240 data [13] = (char)((l4 & 0x00FF0000) >> 16);
241 data [14] = (char)((l4 & 0x0000FF00) >> 8);
242 data [15] = (char)((l4 & 0x000000FF) );
302 auto*
g = (GuidStruct*)
data;
307 sprintf (
string,
"%08X%04X%04X%s",
g->Data1,
g->Data2,
g->Data3,
s);
316 if (!
string || !*
string)
318 if (strlen (
string) != 32)
327 sscanf (
s,
"%x", &
g.Data1);
328 strcpy (
s,
string + 8);
330 sscanf (
s,
"%hx", &
g.Data2);
331 strcpy (
s,
string + 12);
333 sscanf (
s,
"%hx", &
g.Data3);
347 if (!
string || !*
string)
349 if (strlen (
string) != 38)
358 strncpy (
s,
string + 1, 8);
360 sscanf (
s,
"%x", &
g.Data1);
361 strncpy (
s,
string + 10, 4);
363 sscanf (
s,
"%hx", &
g.Data2);
364 strncpy (
s,
string + 15, 4);
366 sscanf (
s,
"%hx", &
g.Data3);
388 auto*
g = (GuidStruct*)
data;
396 sprintf (
string,
"{%08X-%04X-%04X-%s-%s}",
g->Data1,
g->Data2,
g->Data3, s1, s2);
409 sprintf (
string,
"{%s-%s-%s-%s-%s}", s1, s2, s3, s4, s5);
422 OutputDebugStringA (str);
423 OutputDebugStringA (
"\n");
425 fprintf (stdout,
"%s\n", str);
436 sprintf (
string,
"INLINE_UID (0x%08X, 0x%08X, 0x%08X, 0x%08X)", l1, l2, l3, l4);
440 sprintf (
string,
"DECLARE_UID (0x%08X, 0x%08X, 0x%08X, 0x%08X)", l1, l2, l3, l4);
444 sprintf (
string,
"FUID (0x%08X, 0x%08X, 0x%08X, 0x%08X)", l1, l2, l3, l4);
449 sprintf (
string,
"DECLARE_CLASS_IID (Interface, 0x%08X, 0x%08X, 0x%08X, 0x%08X)", l1,
486 sscanf (
s,
"%2x", &
d);
uint8_t uint8
Definition basics.h:86
uint16_t uint16
Definition basics.h:88
uint32_t uint32
Definition basics.h:90
Definition funknown.h:233
FUID()
Definition funknown.cpp:119
uint32 getLong1() const
Definition funknown.cpp:256
FUID & operator=(const FUID &f)
Definition funknown.cpp:200
void toString(char8 *string) const
Definition funknown.cpp:296
void from4Int(uint32 d1, uint32 d2, uint32 d3, uint32 d4)
Definition funknown.cpp:207
bool fromRegistryString(const char8 *string)
Definition funknown.cpp:345
uint32 getLong2() const
Definition funknown.cpp:266
void print(char8 *string=nullptr, int32 style=kINLINE_UID) const
Definition funknown.cpp:414
TUID data
Definition funknown.h:330
bool fromString(const char8 *string)
Definition funknown.cpp:314
bool isValid() const
Definition funknown.cpp:192
void toRegistryString(char8 *string) const
Definition funknown.cpp:383
@ kCLASS_UID
"DECLARE_CLASS_IID (Interface, 0x00000000, 0x00000000, 0x00000000, 0x00000000)"
Definition funknown.h:301
@ kDECLARE_UID
"DECLARE_UID (0x00000000, 0x00000000, 0x00000000, 0x00000000)"
Definition funknown.h:299
@ kINLINE_UID
"INLINE_UID (0x00000000, 0x00000000, 0x00000000, 0x00000000)"
Definition funknown.h:298
@ kFUID
"FUID (0x00000000, 0x00000000, 0x00000000, 0x00000000)"
Definition funknown.h:300
uint32 getLong3() const
Definition funknown.cpp:276
void to4Int(uint32 &d1, uint32 &d2, uint32 &d3, uint32 &d4) const
Definition funknown.cpp:247
uint32 getLong4() const
Definition funknown.cpp:286
bool generate()
Definition funknown.cpp:151
unsigned d
Definition inflate.c:940
int g
Definition inflate.c:1573
register unsigned i
Definition inflate.c:1575
unsigned s
Definition inflate.c:1555
unsigned f
Definition inflate.c:1572
JSAMPIMAGE data
Definition jpeglib.h:945
int int32_t
Definition mid.cpp:97
Definition funknown.cpp:86
int32 PLUGIN_API atomicAdd(int32 &var, int32 d)
Definition funknown.cpp:88
Definition baseiids.cpp:43
int int32
Definition ftypes.h:50
char char8
Definition ftypes.h:93
static void fromString8(const char8 *string, char *data, int32 i1, int32 i2)
Definition funknown.cpp:476
int8 TUID[16]
plain UID type
Definition funknown.h:210
unsigned char uint8
Definition ftypes.h:40
static uint32 makeLong(uint8 b1, uint8 b2, uint8 b3, uint8 b4)
Definition funknown.cpp:458
unsigned int uint32
Definition ftypes.h:51
static void toString8(char8 *string, const char *data, int32 i1, int32 i2)
Definition funknown.cpp:464
signed int HRESULT
Definition swell-types.h:181
signed int LONG
Definition swell-types.h:182
memcpy(hh, h, RAND_HEAD_LEN)
else sprintf(d_t_str, LoadFarString(shtYMDHMTime), yr%100, monthstr, dy, hh, mm)