VR-Vantage 3.1 API Documentation
Home
Modules
Namespaces
Classes
Files
Libraries
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
include
TracyClient
common
TracyQueue.hpp
Go to the documentation of this file.
1
#ifndef __TRACYQUEUE_HPP__
2
#define __TRACYQUEUE_HPP__
3
4
#include <
stdint.h
>
5
6
namespace
tracy
7
{
8
9
enum class
QueueType
:
uint8_t
10
{
11
ZoneText
,
12
ZoneName
,
13
Message,
14
MessageColor,
15
MessageCallstack,
16
MessageColorCallstack,
17
MessageAppInfo,
18
ZoneBeginAllocSrcLoc,
19
ZoneBeginAllocSrcLocCallstack,
20
CallstackSerial,
21
Callstack,
22
CallstackAlloc,
23
CallstackSample,
24
FrameImage
,
25
ZoneBegin,
26
ZoneBeginCallstack,
27
ZoneEnd,
28
LockWait,
29
LockObtain,
30
LockRelease,
31
LockSharedWait,
32
LockSharedObtain,
33
LockSharedRelease,
34
LockName,
35
MemAlloc
,
36
MemAllocNamed,
37
MemFree
,
38
MemFreeNamed,
39
MemAllocCallstack,
40
MemAllocCallstackNamed,
41
MemFreeCallstack,
42
MemFreeCallstackNamed,
43
GpuZoneBegin,
44
GpuZoneBeginCallstack,
45
GpuZoneBeginAllocSrcLoc,
46
GpuZoneBeginAllocSrcLocCallstack,
47
GpuZoneEnd,
48
GpuZoneBeginSerial,
49
GpuZoneBeginCallstackSerial,
50
GpuZoneBeginAllocSrcLocSerial,
51
GpuZoneBeginAllocSrcLocCallstackSerial,
52
GpuZoneEndSerial,
53
PlotData,
54
ContextSwitch,
55
ThreadWakeup,
56
GpuTime,
57
GpuContextName,
58
Terminate,
59
KeepAlive,
60
ThreadContext,
61
GpuCalibration,
62
Crash,
63
CrashReport,
64
ZoneValidation,
65
ZoneColor
,
66
ZoneValue
,
67
FrameMarkMsg,
68
FrameMarkMsgStart,
69
FrameMarkMsgEnd,
70
SourceLocation,
71
LockAnnounce,
72
LockTerminate,
73
LockMark
,
74
MessageLiteral,
75
MessageLiteralColor,
76
MessageLiteralCallstack,
77
MessageLiteralColorCallstack,
78
GpuNewContext,
79
CallstackFrameSize,
80
CallstackFrame,
81
SymbolInformation,
82
CodeInformation,
83
SysTimeReport,
84
TidToPid,
85
PlotConfig,
86
ParamSetup,
87
AckServerQueryNoop,
88
AckSourceCodeNotAvailable,
89
CpuTopology,
90
SingleStringData,
91
SecondStringData,
92
MemNamePayload,
93
StringData,
94
ThreadName,
95
PlotName,
96
SourceLocationPayload,
97
CallstackPayload,
98
CallstackAllocPayload,
99
FrameName,
100
FrameImageData,
101
ExternalName,
102
ExternalThreadName,
103
SymbolCode,
104
SourceCode,
105
NUM_TYPES
106
};
107
108
#pragma pack( 1 )
109
110
struct
QueueThreadContext
111
{
112
uint64_t
thread
;
113
};
114
115
struct
QueueZoneBeginLean
116
{
117
int64_t
time
;
118
};
119
120
struct
QueueZoneBegin
:
public
QueueZoneBeginLean
121
{
122
uint64_t
srcloc
;
// ptr
123
};
124
125
struct
QueueZoneEnd
126
{
127
int64_t
time
;
128
};
129
130
struct
QueueZoneValidation
131
{
132
uint32_t
id
;
133
};
134
135
struct
QueueZoneColor
136
{
137
uint8_t
r
;
138
uint8_t
g
;
139
uint8_t
b
;
140
};
141
142
struct
QueueZoneValue
143
{
144
uint64_t
value
;
145
};
146
147
struct
QueueStringTransfer
148
{
149
uint64_t
ptr
;
150
};
151
152
struct
QueueFrameMark
153
{
154
int64_t
time
;
155
uint64_t
name
;
// ptr
156
};
157
158
struct
QueueFrameImage
159
{
160
uint32_t
frame
;
161
uint16_t
w
;
162
uint16_t
h
;
163
uint8_t
flip
;
164
};
165
166
struct
QueueFrameImageFat
:
public
QueueFrameImage
167
{
168
uint64_t
image
;
// ptr
169
};
170
171
struct
QueueSourceLocation
172
{
173
uint64_t
name
;
174
uint64_t
function
;
// ptr
175
uint64_t
file
;
// ptr
176
uint32_t
line
;
177
uint8_t
r
;
178
uint8_t
g
;
179
uint8_t
b
;
180
};
181
182
struct
QueueZoneTextFat
183
{
184
uint64_t
text
;
// ptr
185
uint16_t
size
;
186
};
187
188
enum class
LockType
:
uint8_t
189
{
190
Lockable
,
191
SharedLockable
192
};
193
194
struct
QueueLockAnnounce
195
{
196
uint32_t
id
;
197
int64_t
time
;
198
uint64_t
lckloc
;
// ptr
199
LockType
type
;
200
};
201
202
struct
QueueLockTerminate
203
{
204
uint32_t
id
;
205
int64_t
time
;
206
};
207
208
struct
QueueLockWait
209
{
210
uint64_t
thread
;
211
uint32_t
id
;
212
int64_t
time
;
213
};
214
215
struct
QueueLockObtain
216
{
217
uint64_t
thread
;
218
uint32_t
id
;
219
int64_t
time
;
220
};
221
222
struct
QueueLockRelease
223
{
224
uint64_t
thread
;
225
uint32_t
id
;
226
int64_t
time
;
227
};
228
229
struct
QueueLockMark
230
{
231
uint64_t
thread
;
232
uint32_t
id
;
233
uint64_t
srcloc
;
// ptr
234
};
235
236
struct
QueueLockName
237
{
238
uint32_t
id
;
239
};
240
241
struct
QueueLockNameFat
:
public
QueueLockName
242
{
243
uint64_t
name
;
// ptr
244
uint16_t
size
;
245
};
246
247
enum class
PlotDataType
:
uint8_t
248
{
249
Float,
250
Double,
251
Int
252
};
253
254
struct
QueuePlotData
255
{
256
uint64_t
name
;
// ptr
257
int64_t
time
;
258
PlotDataType
type
;
259
union
260
{
261
double
d
;
262
float
f
;
263
int64_t
i
;
264
}
data
;
265
};
266
267
struct
QueueMessage
268
{
269
int64_t
time
;
270
};
271
272
struct
QueueMessageColor
:
public
QueueMessage
273
{
274
uint8_t
r
;
275
uint8_t
g
;
276
uint8_t
b
;
277
};
278
279
struct
QueueMessageLiteral
:
public
QueueMessage
280
{
281
uint64_t
text
;
// ptr
282
};
283
284
struct
QueueMessageColorLiteral
:
public
QueueMessageColor
285
{
286
uint64_t
text
;
// ptr
287
};
288
289
struct
QueueMessageFat
:
public
QueueMessage
290
{
291
uint64_t
text
;
// ptr
292
uint16_t
size
;
293
};
294
295
struct
QueueMessageColorFat
:
public
QueueMessageColor
296
{
297
uint64_t
text
;
// ptr
298
uint16_t
size
;
299
};
300
301
// Don't change order, only add new entries at the end, this is also used on trace dumps!
302
enum class
GpuContextType
:
uint8_t
303
{
304
Invalid,
305
OpenGl,
306
Vulkan,
307
OpenCL,
308
Direct3D12
309
};
310
311
enum
GpuContextFlags
:
uint8_t
312
{
313
GpuContextCalibration
= 1 << 0
314
};
315
316
struct
QueueGpuNewContext
317
{
318
int64_t
cpuTime
;
319
int64_t
gpuTime
;
320
uint64_t
thread
;
321
float
period
;
322
uint8_t
context
;
323
GpuContextFlags
flags
;
324
GpuContextType
type
;
325
};
326
327
struct
QueueGpuZoneBeginLean
328
{
329
int64_t
cpuTime
;
330
uint64_t
thread
;
331
uint16_t
queryId
;
332
uint8_t
context
;
333
};
334
335
struct
QueueGpuZoneBegin
:
public
QueueGpuZoneBeginLean
336
{
337
uint64_t
srcloc
;
338
};
339
340
struct
QueueGpuZoneEnd
341
{
342
int64_t
cpuTime
;
343
uint64_t
thread
;
344
uint16_t
queryId
;
345
uint8_t
context
;
346
};
347
348
struct
QueueGpuTime
349
{
350
int64_t
gpuTime
;
351
uint16_t
queryId
;
352
uint8_t
context
;
353
};
354
355
struct
QueueGpuCalibration
356
{
357
int64_t
gpuTime
;
358
int64_t
cpuTime
;
359
int64_t
cpuDelta
;
360
uint8_t
context
;
361
};
362
363
struct
QueueGpuContextName
364
{
365
uint8_t
context
;
366
};
367
368
struct
QueueGpuContextNameFat
:
public
QueueGpuContextName
369
{
370
uint64_t
ptr
;
371
uint16_t
size
;
372
};
373
374
struct
QueueMemNamePayload
375
{
376
uint64_t
name
;
377
};
378
379
struct
QueueMemAlloc
380
{
381
int64_t
time
;
382
uint64_t
thread
;
383
uint64_t
ptr
;
384
char
size
[6];
385
};
386
387
struct
QueueMemFree
388
{
389
int64_t
time
;
390
uint64_t
thread
;
391
uint64_t
ptr
;
392
};
393
394
struct
QueueCallstackFat
395
{
396
uint64_t
ptr
;
397
};
398
399
struct
QueueCallstackAllocFat
400
{
401
uint64_t
ptr
;
402
uint64_t
nativePtr
;
403
};
404
405
struct
QueueCallstackSample
406
{
407
int64_t
time
;
408
uint64_t
thread
;
409
};
410
411
struct
QueueCallstackSampleFat
:
public
QueueCallstackSample
412
{
413
uint64_t
ptr
;
414
};
415
416
struct
QueueCallstackFrameSize
417
{
418
uint64_t
ptr
;
419
uint8_t
size
;
420
};
421
422
struct
QueueCallstackFrame
423
{
424
uint32_t
line
;
425
uint64_t
symAddr
;
426
uint32_t
symLen
;
427
};
428
429
struct
QueueSymbolInformation
430
{
431
uint32_t
line
;
432
uint64_t
symAddr
;
433
};
434
435
struct
QueueCodeInformation
436
{
437
uint64_t
ptr
;
438
uint32_t
line
;
439
};
440
441
struct
QueueCrashReport
442
{
443
int64_t
time
;
444
uint64_t
text
;
// ptr
445
};
446
447
struct
QueueSysTime
448
{
449
int64_t
time
;
450
float
sysTime
;
451
};
452
453
struct
QueueContextSwitch
454
{
455
int64_t
time
;
456
uint64_t
oldThread
;
457
uint64_t
newThread
;
458
uint8_t
cpu
;
459
uint8_t
reason
;
460
uint8_t
state
;
461
};
462
463
struct
QueueThreadWakeup
464
{
465
int64_t
time
;
466
uint64_t
thread
;
467
};
468
469
struct
QueueTidToPid
470
{
471
uint64_t
tid
;
472
uint64_t
pid
;
473
};
474
475
enum class
PlotFormatType
:
uint8_t
476
{
477
Number,
478
Memory,
479
Percentage
480
};
481
482
struct
QueuePlotConfig
483
{
484
uint64_t
name
;
// ptr
485
uint8_t
type
;
486
};
487
488
struct
QueueParamSetup
489
{
490
uint32_t
idx
;
491
uint64_t
name
;
// ptr
492
uint8_t
isBool
;
493
int32_t
val
;
494
};
495
496
struct
QueueCpuTopology
497
{
498
uint32_t
package
;
499
uint32_t
core
;
500
uint32_t
thread
;
501
};
502
503
struct
QueueHeader
504
{
505
union
506
{
507
QueueType
type
;
508
uint8_t
idx
;
509
};
510
};
511
512
struct
QueueItem
513
{
514
QueueHeader
hdr
;
515
union
516
{
517
QueueThreadContext
threadCtx
;
518
QueueZoneBegin
zoneBegin
;
519
QueueZoneBeginLean
zoneBeginLean
;
520
QueueZoneEnd
zoneEnd
;
521
QueueZoneValidation
zoneValidation
;
522
QueueZoneColor
zoneColor
;
523
QueueZoneValue
zoneValue
;
524
QueueStringTransfer
stringTransfer
;
525
QueueFrameMark
frameMark
;
526
QueueFrameImage
frameImage
;
527
QueueFrameImageFat
frameImageFat
;
528
QueueSourceLocation
srcloc
;
529
QueueZoneTextFat
zoneTextFat
;
530
QueueLockAnnounce
lockAnnounce
;
531
QueueLockTerminate
lockTerminate
;
532
QueueLockWait
lockWait
;
533
QueueLockObtain
lockObtain
;
534
QueueLockRelease
lockRelease
;
535
QueueLockMark
lockMark
;
536
QueueLockName
lockName
;
537
QueueLockNameFat
lockNameFat
;
538
QueuePlotData
plotData
;
539
QueueMessage
message
;
540
QueueMessageColor
messageColor
;
541
QueueMessageLiteral
messageLiteral
;
542
QueueMessageColorLiteral
messageColorLiteral
;
543
QueueMessageFat
messageFat
;
544
QueueMessageColorFat
messageColorFat
;
545
QueueGpuNewContext
gpuNewContext
;
546
QueueGpuZoneBegin
gpuZoneBegin
;
547
QueueGpuZoneBeginLean
gpuZoneBeginLean
;
548
QueueGpuZoneEnd
gpuZoneEnd
;
549
QueueGpuTime
gpuTime
;
550
QueueGpuCalibration
gpuCalibration
;
551
QueueGpuContextName
gpuContextName
;
552
QueueGpuContextNameFat
gpuContextNameFat
;
553
QueueMemAlloc
memAlloc
;
554
QueueMemFree
memFree
;
555
QueueMemNamePayload
memName
;
556
QueueCallstackFat
callstackFat
;
557
QueueCallstackAllocFat
callstackAllocFat
;
558
QueueCallstackSample
callstackSample
;
559
QueueCallstackSampleFat
callstackSampleFat
;
560
QueueCallstackFrameSize
callstackFrameSize
;
561
QueueCallstackFrame
callstackFrame
;
562
QueueSymbolInformation
symbolInformation
;
563
QueueCodeInformation
codeInformation
;
564
QueueCrashReport
crashReport
;
565
QueueSysTime
sysTime
;
566
QueueContextSwitch
contextSwitch
;
567
QueueThreadWakeup
threadWakeup
;
568
QueueTidToPid
tidToPid
;
569
QueuePlotConfig
plotConfig
;
570
QueueParamSetup
paramSetup
;
571
QueueCpuTopology
cpuTopology
;
572
};
573
};
574
#pragma pack()
575
576
577
enum
{
QueueItemSize
=
sizeof
(
QueueItem
) };
578
579
static
constexpr
size_t
QueueDataSize
[] = {
580
sizeof
(
QueueHeader
),
// zone text
581
sizeof
(
QueueHeader
),
// zone name
582
sizeof
(
QueueHeader
) +
sizeof
(
QueueMessage
),
583
sizeof
(
QueueHeader
) +
sizeof
(
QueueMessageColor
),
584
sizeof
(
QueueHeader
) +
sizeof
(
QueueMessage
),
// callstack
585
sizeof
(
QueueHeader
) +
sizeof
(
QueueMessageColor
),
// callstack
586
sizeof
(
QueueHeader
) +
sizeof
(
QueueMessage
),
// app info
587
sizeof
(
QueueHeader
) +
sizeof
(
QueueZoneBeginLean
),
// allocated source location
588
sizeof
(
QueueHeader
) +
sizeof
(
QueueZoneBeginLean
),
// allocated source location, callstack
589
sizeof
(
QueueHeader
),
// callstack memory
590
sizeof
(
QueueHeader
),
// callstack
591
sizeof
(
QueueHeader
),
// callstack alloc
592
sizeof
(
QueueHeader
) +
sizeof
(
QueueCallstackSample
),
593
sizeof
(
QueueHeader
) +
sizeof
(
QueueFrameImage
),
594
sizeof
(
QueueHeader
) +
sizeof
(
QueueZoneBegin
),
595
sizeof
(
QueueHeader
) +
sizeof
(
QueueZoneBegin
),
// callstack
596
sizeof
(
QueueHeader
) +
sizeof
(
QueueZoneEnd
),
597
sizeof
(
QueueHeader
) +
sizeof
(
QueueLockWait
),
598
sizeof
(
QueueHeader
) +
sizeof
(
QueueLockObtain
),
599
sizeof
(
QueueHeader
) +
sizeof
(
QueueLockRelease
),
600
sizeof
(
QueueHeader
) +
sizeof
(
QueueLockWait
),
// shared
601
sizeof
(
QueueHeader
) +
sizeof
(
QueueLockObtain
),
// shared
602
sizeof
(
QueueHeader
) +
sizeof
(
QueueLockRelease
),
// shared
603
sizeof
(
QueueHeader
) +
sizeof
(
QueueLockName
),
604
sizeof
(
QueueHeader
) +
sizeof
(
QueueMemAlloc
),
605
sizeof
(
QueueHeader
) +
sizeof
(
QueueMemAlloc
),
// named
606
sizeof
(
QueueHeader
) +
sizeof
(
QueueMemFree
),
607
sizeof
(
QueueHeader
) +
sizeof
(
QueueMemFree
),
// named
608
sizeof
(
QueueHeader
) +
sizeof
(
QueueMemAlloc
),
// callstack
609
sizeof
(
QueueHeader
) +
sizeof
(
QueueMemAlloc
),
// callstack, named
610
sizeof
(
QueueHeader
) +
sizeof
(
QueueMemFree
),
// callstack
611
sizeof
(
QueueHeader
) +
sizeof
(
QueueMemFree
),
// callstack, named
612
sizeof
(
QueueHeader
) +
sizeof
(
QueueGpuZoneBegin
),
613
sizeof
(
QueueHeader
) +
sizeof
(
QueueGpuZoneBegin
),
// callstack
614
sizeof
(
QueueHeader
) +
sizeof
(
QueueGpuZoneBeginLean
),
// allocated source location
615
sizeof
(
QueueHeader
) +
sizeof
(
QueueGpuZoneBeginLean
),
// allocated source location, callstack
616
sizeof
(
QueueHeader
) +
sizeof
(
QueueGpuZoneEnd
),
617
sizeof
(
QueueHeader
) +
sizeof
(
QueueGpuZoneBegin
),
// serial
618
sizeof
(
QueueHeader
) +
sizeof
(
QueueGpuZoneBegin
),
// serial, callstack
619
sizeof
(
QueueHeader
) +
sizeof
(
QueueGpuZoneBeginLean
),
// serial, allocated source location
620
sizeof
(
QueueHeader
) +
sizeof
(
QueueGpuZoneBeginLean
),
// serial, allocated source location, callstack
621
sizeof
(
QueueHeader
) +
sizeof
(
QueueGpuZoneEnd
),
// serial
622
sizeof
(
QueueHeader
) +
sizeof
(
QueuePlotData
),
623
sizeof
(
QueueHeader
) +
sizeof
(
QueueContextSwitch
),
624
sizeof
(
QueueHeader
) +
sizeof
(
QueueThreadWakeup
),
625
sizeof
(
QueueHeader
) +
sizeof
(
QueueGpuTime
),
626
sizeof
(
QueueHeader
) +
sizeof
(
QueueGpuContextName
),
627
// above items must be first
628
sizeof
(
QueueHeader
),
// terminate
629
sizeof
(
QueueHeader
),
// keep alive
630
sizeof
(
QueueHeader
) +
sizeof
(
QueueThreadContext
),
631
sizeof
(
QueueHeader
) +
sizeof
(
QueueGpuCalibration
),
632
sizeof
(
QueueHeader
),
// crash
633
sizeof
(
QueueHeader
) +
sizeof
(
QueueCrashReport
),
634
sizeof
(
QueueHeader
) +
sizeof
(
QueueZoneValidation
),
635
sizeof
(
QueueHeader
) +
sizeof
(
QueueZoneColor
),
636
sizeof
(
QueueHeader
) +
sizeof
(
QueueZoneValue
),
637
sizeof
(
QueueHeader
) +
sizeof
(
QueueFrameMark
),
// continuous frames
638
sizeof
(
QueueHeader
) +
sizeof
(
QueueFrameMark
),
// start
639
sizeof
(
QueueHeader
) +
sizeof
(
QueueFrameMark
),
// end
640
sizeof
(
QueueHeader
) +
sizeof
(
QueueSourceLocation
),
641
sizeof
(
QueueHeader
) +
sizeof
(
QueueLockAnnounce
),
642
sizeof
(
QueueHeader
) +
sizeof
(
QueueLockTerminate
),
643
sizeof
(
QueueHeader
) +
sizeof
(
QueueLockMark
),
644
sizeof
(
QueueHeader
) +
sizeof
(
QueueMessageLiteral
),
645
sizeof
(
QueueHeader
) +
sizeof
(
QueueMessageColorLiteral
),
646
sizeof
(
QueueHeader
) +
sizeof
(
QueueMessageLiteral
),
// callstack
647
sizeof
(
QueueHeader
) +
sizeof
(
QueueMessageColorLiteral
),
// callstack
648
sizeof
(
QueueHeader
) +
sizeof
(
QueueGpuNewContext
),
649
sizeof
(
QueueHeader
) +
sizeof
(
QueueCallstackFrameSize
),
650
sizeof
(
QueueHeader
) +
sizeof
(
QueueCallstackFrame
),
651
sizeof
(
QueueHeader
) +
sizeof
(
QueueSymbolInformation
),
652
sizeof
(
QueueHeader
) +
sizeof
(
QueueCodeInformation
),
653
sizeof
(
QueueHeader
) +
sizeof
(
QueueSysTime
),
654
sizeof
(
QueueHeader
) +
sizeof
(
QueueTidToPid
),
655
sizeof
(
QueueHeader
) +
sizeof
(
QueuePlotConfig
),
656
sizeof
(
QueueHeader
) +
sizeof
(
QueueParamSetup
),
657
sizeof
(
QueueHeader
),
// server query acknowledgement
658
sizeof
(
QueueHeader
),
// source code not available
659
sizeof
(
QueueHeader
) +
sizeof
(
QueueCpuTopology
),
660
sizeof
(
QueueHeader
),
// single string data
661
sizeof
(
QueueHeader
),
// second string data
662
sizeof
(
QueueHeader
) +
sizeof
(
QueueMemNamePayload
),
663
// keep all QueueStringTransfer below
664
sizeof
(
QueueHeader
) +
sizeof
(
QueueStringTransfer
),
// string data
665
sizeof
(
QueueHeader
) +
sizeof
(
QueueStringTransfer
),
// thread name
666
sizeof
(
QueueHeader
) +
sizeof
(
QueueStringTransfer
),
// plot name
667
sizeof
(
QueueHeader
) +
sizeof
(
QueueStringTransfer
),
// allocated source location payload
668
sizeof
(
QueueHeader
) +
sizeof
(
QueueStringTransfer
),
// callstack payload
669
sizeof
(
QueueHeader
) +
sizeof
(
QueueStringTransfer
),
// callstack alloc payload
670
sizeof
(
QueueHeader
) +
sizeof
(
QueueStringTransfer
),
// frame name
671
sizeof
(
QueueHeader
) +
sizeof
(
QueueStringTransfer
),
// frame image data
672
sizeof
(
QueueHeader
) +
sizeof
(
QueueStringTransfer
),
// external name
673
sizeof
(
QueueHeader
) +
sizeof
(
QueueStringTransfer
),
// external thread name
674
sizeof
(
QueueHeader
) +
sizeof
(
QueueStringTransfer
),
// symbol code
675
sizeof
(
QueueHeader
) +
sizeof
(
QueueStringTransfer
),
// source code
676
};
677
678
static_assert
(
QueueItemSize
== 32,
"Queue item size not 32 bytes"
);
679
static_assert
(
sizeof
( QueueDataSize ) /
sizeof
(
size_t
) == (
uint8_t
)QueueType::NUM_TYPES,
"QueueDataSize mismatch"
);
680
static_assert
(
sizeof
(
void
* ) <=
sizeof
(
uint64_t
),
"Pointer size > 8 bytes"
);
681
static_assert
(
sizeof
(
void
* ) ==
sizeof
(
uintptr_t
),
"Pointer size != uintptr_t"
);
682
683
}
684
685
#endif
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (
www.mak.com
)