Zen API
 All Classes Files Functions Variables Typedefs Friends Macros Modules Pages
kApiDef.h
Go to the documentation of this file.
1 
10 #ifndef K_API_API_DEF_H
11 #define K_API_API_DEF_H
12 
13 #include <kApi/kApiCfg.h>
14 
15 #define kCall xkCall
16 #define kDlCall xkDlCall
17 
18 #if defined(K_EMIT)
19 # define kFx(TYPE) kExportFx(TYPE)
20 # define kDx(TYPE) kExportDx(TYPE)
21 #else
22 # define kFx(TYPE) kImportFx(TYPE)
23 # define kDx(TYPE) kImportDx(TYPE)
24 #endif
25 
26 #define kInlineFx(TYPE) xkInlineFx(TYPE)
27 
28 typedef void (kCall* kFunction)();
29 
38 typedef xk8u k8u;
39 
41 #define k8U_MIN (0)
42 #define k8U_MAX (255U)
43 #define k8U_NULL (k8U_MAX)
44 
54 typedef xk16u k16u;
55 
57 #define k16U_MIN (0)
58 #define k16U_MAX (65535U)
59 #define k16U_NULL (k16U_MAX)
60 
70 typedef xk32u k32u;
71 
73 #define k32U_MIN (0)
74 #define k32U_MAX (4294967295U)
75 #define k32U_NULL (k32U_MAX)
76 
86 typedef xk64u k64u;
87 
89 #define k64U(CONST) xk64U(CONST)
90 #define k64U_MIN k64U(0)
91 #define k64U_MAX k64U(18446744073709551615)
92 #define k64U_NULL (k64U_MAX)
93 
95 #define kINFINITE k64U_MAX
96 
97 
105 typedef xk8s k8s;
106 
108 #define k8S_MAX (127)
109 #define k8S_MIN (-k8S_MAX -1)
110 #define k8S_NULL (k8S_MIN)
111 
121 typedef xk16s k16s;
122 
124 #define k16S_MAX (32767)
125 #define k16S_MIN (-k16S_MAX -1)
126 #define k16S_NULL (k16S_MIN)
127 
137 typedef xk32s k32s;
138 
140 #define k32S_MAX (2147483647)
141 #define k32S_MIN (-k32S_MAX -1)
142 #define k32S_NULL (k32S_MIN)
143 
153 typedef xk64s k64s;
154 
156 #define k64S(CONST) xk64S(CONST)
157 #define k64S_MAX k64S(9223372036854775807)
158 #define k64S_MIN (-k64S_MAX -1)
159 #define k64S_NULL (k64S_MIN)
160 
170 typedef xk32f k32f;
171 
173 #define k32F_MIN (1.175494351e-38F)
174 #define k32F_MAX (3.402823466e+38F)
175 #define k32F_NULL (-k32F_MAX)
176 #define k32F_DIGITS (9)
177 
187 typedef xk64f k64f;
188 
190 #define k64F_MIN (2.2250738585072014e-308)
191 #define k64F_MAX (1.7976931348623157e+308)
192 #define k64F_NULL (-k64F_MAX)
193 #define k64F_DIGITS (17)
194 
204 kFx(k32s) k64f_IsNanOrInf(k64f value);
205 
214 typedef xkByte kByte;
215 
224 typedef xkSize kSize;
225 
227 #define kSIZE_MAX xkSIZE_MAX
228 #define kSIZE_NULL kSIZE_MAX
229 
241 kInlineFx(kSize) kSize_Align(kSize value, kSize to)
242 {
243  return ((value >> to) + !!(value & ((1 << to) - 1))) << to;
244 }
245 
252 typedef xkSSize kSSize;
253 
255 #define kSSIZE_MIN xkSSIZE_MIN
256 #define kSSIZE_MAX xkSSIZE_MAX
257 #define kSSIZE_NULL kSSIZE_MIN
258 
267 typedef void* kPointer;
268 
269 #define kNULL (0)
270 
271 
280 kInlineFx(void*) kPointer_ByteOffset(const void* pointer, kSSize offset)
281 {
282  return (kByte*)pointer + offset;
283 }
284 
294 kInlineFx(void*) kPointer_ItemOffset(const void* pointer, kSSize itemIndex, kSize itemSize)
295 {
296  return kPointer_ByteOffset(pointer, itemIndex*(kSSize)itemSize);
297 }
298 
307 kInlineFx(kSSize) kPointer_Diff(void* a, void* b)
308 {
309  return (kSSize)a - (kSSize)b;
310 }
311 
320 #define kPointer_ReadAs(POINTER, TYPE) \
321  (*(TYPE*)(POINTER))
322 
331 #define kPointer_WriteAs(POINTER, VALUE, TYPE) \
332  (*(TYPE*)(POINTER) = (TYPE)(VALUE))
333 
341 #define kIsNull(POINTER) \
342  ((POINTER) == kNULL)
343 
352 typedef k32s kBool;
353 
355 #define kFALSE (0)
356 #define kTRUE (1)
357 
367 typedef xkChar kChar;
368 
377 {
378  return (ch >= 'A' && ch <= 'Z') ? (ch - 'A' + 'a') : ch;
379 }
380 
389 {
390  return (ch >= 'a' && ch <= 'z') ? (ch - 'a' + 'A') : ch;
391 }
392 
401 {
402  return ch == ' ';
403 }
404 
413 {
414  return ((ch >= 'a') && (ch <= 'z') ) || ((ch >= 'A') && (ch <= 'Z'));
415 }
416 
425 {
426  return ch >= '0' && ch <= '9';
427 }
428 
437 typedef kChar kText16[16];
438 
447 typedef kChar kText32[32];
448 
457 typedef kChar kText64[64];
458 
467 typedef kChar kText128[128];
468 
477 typedef kChar kText256[256];
478 
487 typedef k32s kStatus;
488 
490 #define kERROR_STATE (-1000)
491 #define kERROR_NOT_FOUND (-999)
492 #define kERROR_COMMAND (-998)
493 #define kERROR_PARAMETER (-997)
494 #define kERROR_UNIMPLEMENTED (-996)
495 #define kERROR_MEMORY (-994)
496 #define kERROR_TIMEOUT (-993)
497 #define kERROR_INCOMPLETE (-992)
498 #define kERROR_STREAM (-991)
499 #define kERROR_CLOSED (-990)
500 #define kERROR_VERSION (-989)
501 #define kERROR_ABORT (-988)
502 #define kERROR_ALREADY_EXISTS (-987)
503 #define kERROR_NETWORK (-986)
504 #define kERROR_HEAP (-985)
505 #define kERROR_FORMAT (-984)
506 #define kERROR_READ_ONLY (-983)
507 #define kERROR_WRITE_ONLY (-982)
508 #define kERROR_BUSY (-981)
509 #define kERROR_CONFLICT (-980)
510 #define kERROR_OS (-979)
511 #define kERROR_DEVICE (-978)
512 #define kERROR_FULL (-977)
513 #define kERROR_IN_PROGRESS (-976)
514 #define kERROR (0)
515 #define kOK (1)
516 
527 kFx(const kChar*) kStatus_Name(kStatus status);
528 
537 {
538  return status != kOK;
539 }
540 
549 {
550  return status == kOK;
551 }
552 
561 #define kCheck(EXPRESSION) \
562  xkCheck(EXPRESSION)
563 
573 #define kCheckTrue(EXPRESSION, STATUS) \
574  xkCheckTrue(EXPRESSION, STATUS)
575 
584 #define kCheckArgs(EXPRESSION) \
585  xkCheckArgs(EXPRESSION)
586 
595 #define kCheckState(EXPRESSION) \
596  xkCheckState(EXPRESSION)
597 
603 #define kTry \
604  xkTry
605 
612 #define kThrow(EXPRESSION) \
613  xkThrow(EXPRESSION)
614 
624 #define kTest(EXPRESSION) \
625  xkTest(EXPRESSION)
626 
637 #define kTestTrue(EXPRESSION, STATUS) \
638  xkTestTrue(EXPRESSION, STATUS)
639 
649 #define kTestArgs(EXPRESSION) \
650  xkTestArgs(EXPRESSION)
651 
661 #define kTestState(EXPRESSION) \
662  xkTestState(EXPRESSION)
663 
670 #define kCatch(STATUS_POINTER) \
671  xkCatch(STATUS_POINTER)
672 
681 #define kEndCatch(STATUS) \
682  xkEndCatch(STATUS)
683 
689 #define kFinally \
690  xkFinally
691 
700 #define kEndFinally() \
701  xkEndFinally()
702 
709 #define kCatchEx(STATUS_POINTER) \
710  xkCatchEx(STATUS_POINTER)
711 
722 #define kEndCatchEx(STATUS) \
723  xkEndCatchEx(STATUS)
724 
730 #define kFinallyEx \
731  xkFinallyEx
732 
741 #define kEndFinallyEx() \
742  xkEndFinallyEx()
743 
751 #define kAssert(EXPRESSION) \
752  xkAssert(EXPRESSION)
753 
764 #define kAssertType(OBJECT, SYMBOL) \
765  xkAssertType(OBJECT, SYMBOL)
766 
774 #define kTrace(TAG) \
775  xkTrace(TAG)
776 
785 typedef k32u kVersion;
786 
787 #define kVERSION_NULL (k32U_NULL) // kVersion invalid value.
788 
799 kInlineFx(kVersion) kVersion_Create(k32u major, k32u minor, k32u release, k32u build)
800 {
801  return (major & 0xFF) << 24 |
802  (minor & 0xFF) << 16 |
803  (release & 0xFF) << 8 |
804  (build & 0xFF);
805 }
806 
817 #define kVersion_Stringify_(MAJOR, MINOR, RELEASE, BUILD) \
818  xkStringize(MAJOR) "." xkStringize(MINOR) "." xkStringize(RELEASE) "." xkStringize(BUILD)
819 
828 kFx(kStatus) kVersion_Parse(kVersion* version, const kChar* buffer);
829 
839 kFx(kStatus) kVersion_Format(kVersion version, kChar* buffer, kSize capacity);
840 
853 {
854  return (k32s)version1 - (k32s)version2;
855 }
856 
865 {
866  return (version >> 24) & 0xFF;
867 }
868 
877 {
878  return (version >> 16) & 0xFF;
879 }
880 
889 {
890  return (version >> 8) & 0xFF;
891 }
892 
901 {
902  return (version) & 0xFF;
903 }
904 
911 typedef k32s kEndianness;
912 
914 #define kENDIANNESS_LITTLE (1)
915 #define kENDIANNESS_BIG (2)
916 
923 kInlineFx(kEndianness) kEndianness_Host()
924 {
925  return K_ENDIANNESS;
926 }
927 
935 {
936  return endianness != kEndianness_Host();
937 }
938 
953 kFx(kStatus) k8u_Format(k8u value, kChar* buffer, kSize capacity);
954 
963 kFx(kStatus) k8u_Parse(k8u* value, const kChar* str);
964 
979 kFx(kStatus) k8s_Format(k8s value, kChar* buffer, kSize capacity);
980 
989 kFx(kStatus) k8s_Parse(k8s* value, const kChar* str);
990 
1005 kFx(kStatus) k16u_Format(k16u value, kChar* buffer, kSize capacity);
1006 
1015 kFx(kStatus) k16u_Parse(k16u* value, const kChar* str);
1016 
1031 kFx(kStatus) k16s_Format(k16s value, kChar* buffer, kSize capacity);
1032 
1041 kFx(kStatus) k16s_Parse(k16s* value, const kChar* str);
1042 
1057 kFx(kStatus) k32u_Format(k32u value, kChar* buffer, kSize capacity);
1058 
1067 kFx(kStatus) k32u_Parse(k32u* value, const kChar* str);
1068 
1083 kFx(kStatus) k32s_Format(k32s value, kChar* buffer, kSize capacity);
1084 
1093 kFx(kStatus) k32s_Parse(k32s* value, const kChar* str);
1094 
1109 kFx(kStatus) k64u_Format(k64u value, kChar* buffer, kSize capacity);
1110 
1119 kFx(kStatus) k64u_Parse(k64u* value, const kChar* str);
1120 
1135 kFx(kStatus) k64s_Format(k64s value, kChar* buffer, kSize capacity);
1136 
1145 kFx(kStatus) k64s_Parse(k64s* value, const kChar* str);
1146 
1161 kFx(kStatus) kBool_Format(kBool value, kChar* buffer, kSize capacity);
1162 
1171 kFx(kStatus) kBool_Parse(kBool* value, const kChar* str);
1172 
1187 kFx(kStatus) kSize_Format(kSize value, kChar* buffer, kSize capacity);
1188 
1197 kFx(kStatus) kSize_Parse(kSize* value, const kChar* str);
1198 
1213 kFx(kStatus) kSSize_Format(kSSize value, kChar* buffer, kSize capacity);
1214 
1223 kFx(kStatus) kSSize_Parse(kSSize* value, const kChar* str);
1224 
1239 kFx(kStatus) k32f_Format(k32f value, kChar* buffer, kSize capacity);
1240 
1249 kFx(kStatus) k32f_Parse(k32f* value, const kChar* str);
1250 
1265 kFx(kStatus) k64f_Format(k64f value, kChar* buffer, kSize capacity);
1266 
1275 kFx(kStatus) k64f_Parse(k64f* value, const kChar* str);
1276 
1285 typedef struct kPoint16s
1286 {
1289 } kPoint16s;
1290 
1299 typedef struct kPoint32s
1300 {
1303 } kPoint32s;
1304 
1313 typedef struct kPoint32f
1314 {
1317 } kPoint32f;
1318 
1327 typedef struct kPoint64f
1328 {
1331 } kPoint64f;
1332 
1342 #define kPoint_Init_(POINT, X, Y) xkPoint_Init_(POINT, X, Y)
1343 
1352 typedef struct kPoint3d16s
1353 {
1357 } kPoint3d16s;
1358 
1367 typedef struct kPoint3d32s
1368 {
1372 } kPoint3d32s;
1373 
1382 typedef struct kPoint3d32f
1383 {
1387 } kPoint3d32f;
1388 
1397 typedef struct kPoint3d64f
1398 {
1402 } kPoint3d64f;
1403 
1414 #define kPoint3d_Init_(POINT, X, Y, Z) xkPoint3d_Init_(POINT, X, Y, Z)
1415 
1424 typedef struct kPoint4d16s
1425 {
1430 } kPoint4d16s;
1431 
1443 #define kPoint4d_Init_(POINT, X, Y, Z, W) xkPoint4d_Init_(POINT, X, Y, Z, W)
1444 
1453 typedef struct kRect16s
1454 {
1459 } kRect16s;
1460 
1469 typedef struct kRect32s
1470 {
1475 } kRect32s;
1476 
1485 typedef struct kRect32f
1486 {
1491 } kRect32f;
1492 
1501 typedef struct kRect64f
1502 {
1507 } kRect64f;
1508 
1520 #define kRect_Init_(RECT, X, Y, W, H) \
1521  xkRect_Init_(RECT, X, Y, W, H)
1522 
1531 typedef struct kRect3d64f
1532 {
1539 } kRect3d64f;
1540 
1552 #define kRect3d_Init_(RECT, X, Y, Z, W, H, D) \
1553  xkRect3d_Init_(RECT, X, Y, Z, W, H, D)
1554 
1563 typedef struct kRotatedRect32s
1564 {
1570 } kRotatedRect32s;
1571 
1580 typedef struct kRotatedRect32f
1581 {
1587 } kRotatedRect32f;
1588 
1601 #define kRotatedRect_Init_(RECT, XC, YC, W, H, A) \
1602  xkRotatedRect_Init_(RECT, XC, YC, W, H, A)
1603 
1612 typedef k32s kPixelFormat;
1613 
1615 #define kPIXEL_FORMAT_NULL (0)
1616 #define kPIXEL_FORMAT_8BPP_GREYSCALE (1)
1617 #define kPIXEL_FORMAT_8BPP_CFA (2)
1618 #define kPIXEL_FORMAT_8BPC_BGRX (3)
1619 #define kPIXEL_FORMAT_1BPP_GREYSCALE (4)
1620 
1630 typedef k32s kCfa;
1631 
1633 #define kCFA_NONE (0)
1634 #define kCFA_BAYER_BGGR (1)
1635 #define kCFA_BAYER_GBRG (2)
1636 #define kCFA_BAYER_RGGB (3)
1637 #define kCFA_BAYER_GRBG (4)
1638 
1648 typedef struct kRgb
1649 {
1650  k8u b;
1651  k8u g;
1652  k8u r;
1653  k8u x;
1654 } kRgb;
1655 
1665 #define kRgb_Init_(RGB, R, G, B) \
1666  xkRgb_Init_(RGB, R, G, B)
1667 
1676 typedef struct kArgb
1677 {
1678  k8u b;
1679  k8u g;
1680  k8u r;
1681  k8u a;
1682 } kArgb;
1683 
1694 #define kArgb_Init_(ARGB, A, R, G, B) \
1695  xkArgb_Init_(ARGB, A, R, G, B)
1696 
1703 typedef struct kMacAddress
1704 {
1706 } kMacAddress;
1707 
1718 kFx(kStatus) kMacAddress_Parse(kMacAddress* address, const kChar* text);
1719 
1731 kFx(kStatus) kMacAddress_Format(kMacAddress address, kChar* text, kSize capacity);
1732 
1739 typedef k32s kComparison;
1740 
1741 #define kCOMPARISON_EQ (0)
1742 #define kCOMPARISON_NEQ (1)
1743 #define kCOMPARISON_LT (2)
1744 #define kCOMPARISON_LTE (3)
1745 #define kCOMPARISON_GT (4)
1746 #define kCOMPARISON_GTE (5)
1747 
1748 
1755 typedef kBool (kCall* kEqualsFx)(const void* item1, const void* item2);
1756 
1763 typedef kSize (kCall* kHashFx)(const void* item);
1764 
1773 typedef kStatus (kCall* kCallbackFx)(kPointer receiver, kPointer sender, void* args);
1774 
1781 typedef struct kCallback
1782 {
1783  kCallbackFx function;
1785 } kCallback;
1786 
1793 typedef k32s kFileMode;
1794 
1796 #define kFILE_MODE_READ (0x1)
1797 #define kFILE_MODE_WRITE (0x2)
1798 #define kFILE_MODE_UPDATE (0x4)
1799 
1807 typedef k32s kSeekOrigin;
1808 
1810 #define kSEEK_ORIGIN_BEGIN (0)
1811 #define kSEEK_ORIGIN_CURRENT (1)
1812 #define kSEEK_ORIGIN_END (2)
1813 
1821 typedef k32s kCompressionType;
1822 
1824 #define kCOMPRESSION_TYPE_NULL (0)
1825 #define kCOMPRESSION_TYPE_ZSTD (1)
1826 
1827 
1835 typedef k32s kCompressionPreset;
1836 
1838 #define kCOMPRESSION_PRESET_MIN (-1)
1839 #define kCOMPRESSION_PRESET_FAST (-2)
1840 #define kCOMPRESSION_PRESET_DEFAULT (-3)
1841 #define kCOMPRESSION_PRESET_DENSE (-4)
1842 #define kCOMPRESSION_PRESET_MAX (-5)
1843 
1854 typedef k64u kLogOption;
1855 
1857 #define kLOG_OPTION_WARNING (0x1)
1858 #define kLOG_OPTION_ERROR (0x2)
1859 #define kLOG_OPTION_PLATFORM (0x10)
1860 
1870 #define kCountOf(CARRAY) \
1871  (sizeof(CARRAY)/sizeof(CARRAY[0]))
1872 
1873 
1883 #define kCast(TYPE, ITEM) \
1884  ((TYPE)(ITEM))
1885 
1895 #define kMin_(A, B) \
1896  (((A) < (B)) ? (A) : (B))
1897 
1898 
1908 #define kMax_(A, B) \
1909  (((A) > (B)) ? (A) : (B))
1910 
1921 #define kClamp_(V, VMIN, VMAX) \
1922  (kMin_(kMax_((V), (VMIN)), (VMAX)))
1923 
1932 #define kAbs_(A) \
1933  (((A) >= 0) ? (A) : -(A))
1934 
1935 
1945 #define kDivideFloorInt_(A, B) \
1946  (((A) >= 0) ? (A) / (B) : ((A) - (B) + 1) / (B))
1947 
1957 #define kDivideCeilInt_(A, B) \
1958  (((A) >= 0) ? ((A) + (B) - 1) / (B) : (A) / (B))
1959 
1967 #define kDivideFloorUInt_(A, B) \
1968  ((A) / (B))
1969 
1979 #define kDivideCeilUInt_(A, B) \
1980  (((A) + (B) - 1) / (B))
1981 
1987 #define kZero(VALUE) \
1988  memset(&VALUE, 0, sizeof(VALUE))
1989 
2004 kInlineFx(void) kItemCopy(void* dest, const void* src, kSize size)
2005 {
2006  memcpy(dest, src, size);
2007 }
2008 
2022 kInlineFx(void) kItemZero(void* dest, kSize size)
2023 {
2024  memset(dest, 0, size);
2025 }
2026 
2032 typedef k32s kAllocTrait;
2033 
2035 #define kALLOC_TRAIT_FOREIGN (0x00000001)
2036 #define kALLOC_TRAIT_SERIAL (0x00000002)
2037 #define kALLOC_TRAIT_NON_ATOMIC (0x00000004)
2038 #define kALLOC_TRAIT_CONTEXT (0x00000008)
2039 #define kALLOC_TRAIT_CUDA_PINNED (0x00010000)
2040 #define kALLOC_TRAIT_CUDA_MANAGED (0x00020000)
2041 #define kALLOC_TRAIT_CUDA_DEVICE (0x01000000)
2042 
2051 kInlineFx(kBool) kAllocTrait_IsForeign(kAllocTrait traits)
2052 {
2053  return (traits & kALLOC_TRAIT_FOREIGN) != 0;
2054 }
2055 
2064 {
2065  return (traits & kALLOC_TRAIT_SERIAL) != 0;
2066 }
2067 
2076 {
2077  return (traits & kALLOC_TRAIT_NON_ATOMIC) != 0;
2078 }
2079 
2088 {
2089  return (traits & kALLOC_TRAIT_CONTEXT) != 0;
2090 }
2091 
2100 {
2101  return (traits & kALLOC_TRAIT_CUDA_PINNED) != 0;
2102 }
2103 
2112 {
2113  return (traits & kALLOC_TRAIT_CUDA_MANAGED) != 0;
2114 }
2115 
2124 {
2125  return (traits & kALLOC_TRAIT_CUDA_DEVICE) != 0;
2126 }
2127 
2136 {
2138 }
2139 
2147 typedef k32s kThreadPriorityClass;
2148 
2150 #define kTHREAD_PRIORITY_CLASS_LOW (-1)
2151 #define kTHREAD_PRIORITY_CLASS_NORMAL (0)
2152 #define kTHREAD_PRIORITY_CLASS_HIGH (1)
2153 
2155 /*
2156  * Forward declarations
2157  */
2158 
2159 typedef void* kObject;
2160 typedef kObject kType;
2161 
2163 #define kTypeName kText64
2164 
2172 typedef k32u kTypeFlags;
2173 
2175 #define kTYPE_FLAGS_CLASS (0x01)
2176 #define kTYPE_FLAGS_INTERFACE (0x02)
2177 #define kTYPE_FLAGS_VALUE (0x04)
2178 #define kTYPE_FLAGS_ENUM (0x08)
2179 #define kTYPE_FLAGS_ABSTRACT (0x20)
2180 #define kTYPE_FLAGS_ARRAY_VALUE (0x40)
2181 #define kTYPE_FLAGS_PRIMITIVE (0x80)
2182 
2190 typedef kPointer kTypeVersion;
2191 
2197 typedef struct kMethodInfo
2198 {
2199  kTypeName methodName;
2200  kTypeName functionName;
2201  kFunction function;
2202 } kMethodInfo;
2203 
2209 typedef struct kFieldInfo
2210 {
2211  kTypeName name;
2212  kType type;
2215 } kFieldInfo;
2216 
2222 typedef struct kEnumeratorInfo
2223 {
2225  kTypeName name;
2226  kTypeName displayName;
2227 } kEnumeratorInfo;
2228 
2254 #define kTypeOf(SYMBOL) \
2255  xkTypeOf(SYMBOL)
2256 
2282 #define kAssemblyOf(SYMBOL) \
2283  xkAssemblyOf(SYMBOL)
2284 
2293 #define kStaticOf(SYMBOL) \
2294  xkStaticOf(SYMBOL)
2295 
2303 #define kDeprecate(SYMBOL) \
2304  xkDeprecate(#SYMBOL)
2305 
2314 #define kWarn(MESSAGE) \
2315  xkWarn(MESSAGE)
2316 
2317 /*
2318 *
2319 * Type Declaration/Definition Macros, Generation 1.
2320 *
2321 * These type declaration/definition macros continue to be supported. However, consider using the Generation 2
2322 * macros (defined below) in new code.
2323 *
2324 */
2325 
2333 #define kDeclareAssembly(PREFIX, SYMBOL) \
2334  xkDeclareAssembly(PREFIX, SYMBOL)
2335 
2345 #define kBeginAssembly(PREFIX, SYMBOL, VERSION, PLATFORM_VERSION) \
2346  xkBeginAssembly(PREFIX, SYMBOL, VERSION, PLATFORM_VERSION)
2347 
2353 #define kEndAssembly() \
2354  xkEndAssembly()
2355 
2364 #define kDeclareValue(PREFIX, SYMBOL, BASE) \
2365  xkDeclareValue(PREFIX, SYMBOL, BASE)
2366 
2375 #define kBeginValue(PREFIX, SYMBOL, BASE) \
2376  xkBeginValue(PREFIX, SYMBOL, BASE)
2377 
2383 #define kEndValue() \
2384  xkEndValue()
2385 
2394 #define kDeclareEnum(PREFIX, SYMBOL, BASE) \
2395  xkDeclareEnum(PREFIX, SYMBOL, BASE)
2396 
2405 #define kBeginEnum(PREFIX, SYMBOL, BASE) \
2406  xkBeginEnum(PREFIX, SYMBOL, BASE)
2407 
2413 #define kEndEnum() \
2414  xkEndEnum()
2415 
2424 #define kDeclareArrayValue(PREFIX, SYMBOL, BASE) \
2425  xkDeclareArrayValue(PREFIX, SYMBOL, BASE)
2426 
2436 #define kBeginArrayValue(PREFIX, SYMBOL, TYPE, BASE) \
2437  xkBeginArrayValue(PREFIX, SYMBOL, TYPE, BASE)
2438 
2444 #define kEndArrayValue() \
2445  xkEndArrayValue()
2446 
2455 #define kDeclareInterface(PREFIX, SYMBOL, BASE) \
2456  xkDeclareInterface(PREFIX, SYMBOL, BASE)
2457 
2466 #define kBeginInterface(PREFIX, SYMBOL, BASE) \
2467  xkBeginInterface(PREFIX, SYMBOL, BASE)
2468 
2474 #define kEndInterface() \
2475  xkEndInterface()
2476 
2485 #define kDeclareFullClass(PREFIX, SYMBOL, BASE) \
2486  xkDeclareFullClass(PREFIX, SYMBOL, BASE)
2487 
2496 #define kBeginFullClass(PREFIX, SYMBOL, BASE) \
2497  xkBeginFullClass(PREFIX, SYMBOL, BASE)
2498 
2504 #define kEndFullClass() \
2505  xkEndFullClass()
2506 
2515 #define kDeclareVirtualClass(PREFIX, SYMBOL, BASE) \
2516  xkDeclareVirtualClass(PREFIX, SYMBOL, BASE)
2517 
2526 #define kBeginVirtualClass(PREFIX, SYMBOL, BASE) \
2527  xkBeginVirtualClass(PREFIX, SYMBOL, BASE)
2528 
2534 #define kEndVirtualClass() \
2535  xkEndVirtualClass()
2536 
2544 #define kDeclareStaticClass(PREFIX, SYMBOL) \
2545  xkDeclareStaticClass(PREFIX, SYMBOL)
2546 
2554 #define kBeginStaticClass(PREFIX, SYMBOL) \
2555  xkBeginStaticClass(PREFIX, SYMBOL)
2556 
2562 #define kEndStaticClass() \
2563  xkEndStaticClass()
2564 
2573 #define kDeclareClass(PREFIX, SYMBOL, BASE) \
2574  xkDeclareClass(PREFIX, SYMBOL, BASE)
2575 
2584 #define kBeginClass(PREFIX, SYMBOL, BASE) \
2585  xkBeginClass(PREFIX, SYMBOL, BASE)
2586 
2592 #define kEndClass() \
2593  xkEndClass()
2594 
2595 /*
2596 *
2597 * Type Declaration/Definition Macros, Generation 2.
2598 *
2599 * These macros are used to declare and define elements of the type system, such
2600 * as assemblies, classes and values. These macros supersede the Generation 1 macros,
2601 * defined above.
2602 *
2603 */
2604 
2612 #define kDeclareAssemblyEx(PREFIX, SYMBOL) \
2613  xkDeclareAssemblyEx(PREFIX, SYMBOL)
2614 
2624 #define kBeginAssemblyEx(PREFIX, SYMBOL, VERSION, PLATFORM_VERSION) \
2625  xkBeginAssemblyEx(PREFIX, SYMBOL, VERSION, PLATFORM_VERSION)
2626 
2632 #define kEndAssemblyEx() \
2633  xkEndAssemblyEx()
2634 
2643 #define kDeclareValueEx(PREFIX, SYMBOL, BASE) \
2644  xkDeclareValueEx(PREFIX, SYMBOL, BASE)
2645 
2653 #define kBeginValueEx(PREFIX, SYMBOL) \
2654  xkBeginValueEx(PREFIX, SYMBOL)
2655 
2661 #define kEndValueEx() \
2662  xkEndValueEx()
2663 
2672 #define kDeclareEnumEx(PREFIX, SYMBOL, BASE) \
2673  xkDeclareEnumEx(PREFIX, SYMBOL, BASE)
2674 
2682 #define kBeginEnumEx(PREFIX, SYMBOL) \
2683  xkBeginEnumEx(PREFIX, SYMBOL)
2684 
2690 #define kEndEnumEx() \
2691  xkEndEnumEx()
2692 
2701 #define kDeclareArrayValueEx(PREFIX, SYMBOL, BASE) \
2702  xkDeclareArrayValueEx(PREFIX, SYMBOL, BASE)
2703 
2712 #define kBeginArrayValueEx(PREFIX, SYMBOL, TYPE) \
2713  xkBeginArrayValueEx(PREFIX, SYMBOL, TYPE)
2714 
2720 #define kEndArrayValueEx() \
2721  xkEndArrayValueEx()
2722 
2731 #define kDeclareInterfaceEx(PREFIX, SYMBOL, BASE) \
2732  xkDeclareInterfaceEx(PREFIX, SYMBOL, BASE)
2733 
2741 #define kBeginInterfaceEx(PREFIX, SYMBOL) \
2742  xkBeginInterfaceEx(PREFIX, SYMBOL)
2743 
2749 #define kEndInterfaceEx() \
2750  xkEndInterfaceEx()
2751 
2760 #define kDeclareFullClassEx(PREFIX, SYMBOL, BASE) \
2761  xkDeclareFullClassEx(PREFIX, SYMBOL, BASE)
2762 
2770 #define kBeginFullClassEx(PREFIX, SYMBOL) \
2771  xkBeginFullClassEx(PREFIX, SYMBOL)
2772 
2778 #define kEndFullClassEx() \
2779  xkEndFullClassEx()
2780 
2789 #define kDeclareVirtualClassEx(PREFIX, SYMBOL, BASE) \
2790  xkDeclareVirtualClassEx(PREFIX, SYMBOL, BASE)
2791 
2799 #define kBeginVirtualClassEx(PREFIX, SYMBOL) \
2800  xkBeginVirtualClassEx(PREFIX, SYMBOL)
2801 
2807 #define kEndVirtualClassEx() \
2808  xkEndVirtualClassEx()
2809 
2817 #define kDeclareStaticClassEx(PREFIX, SYMBOL) \
2818  xkDeclareStaticClassEx(PREFIX, SYMBOL)
2819 
2827 #define kBeginStaticClassEx(PREFIX, SYMBOL) \
2828  xkBeginStaticClassEx(PREFIX, SYMBOL)
2829 
2835 #define kEndStaticClassEx() \
2836  xkEndStaticClassEx()
2837 
2846 #define kDeclareClassEx(PREFIX, SYMBOL, BASE) \
2847  xkDeclareClassEx(PREFIX, SYMBOL, BASE)
2848 
2856 #define kBeginClassEx(PREFIX, SYMBOL) \
2857  xkBeginClassEx(PREFIX, SYMBOL)
2858 
2864 #define kEndClassEx() \
2865  xkEndClassEx()
2866 
2867 /*
2868 *
2869 * Type Implementation Macros
2870 *
2871 * These macros are used to provide type-specific details. They are typically used between
2872 * type definition begin/end macros (e.g., kBeginClass/kEndClass).
2873 *
2874 */
2875 
2882 #define kAddDependency(SYMBOL) \
2883  xkAddDependency(SYMBOL)
2884 
2891 #define kAddType(SYMBOL) \
2892  xkAddType(SYMBOL)
2893 
2904 #define kAddPriority(SYMBOL) \
2905  xkAddPriority(SYMBOL)
2906 
2915 #define kAddStatic(SYMBOL) \
2916  xkAddStatic(SYMBOL)
2917 
2925 #define kAddInterface(SYMBOL, IFACE) \
2926  xkAddInterface(SYMBOL, IFACE)
2927 
2935 #define kAddMethod(SYMBOL, METHOD) \
2936  xkAddMethod(SYMBOL, METHOD)
2937 
2946 #define kAddVMethod(IN_TYPE, FROM_TYPE, METHOD) \
2947  xkAddVMethod(IN_TYPE, FROM_TYPE, METHOD)
2948 
2959 #define kAddPrivateVMethod(IN_TYPE, FROM_TYPE, METHOD) \
2960  xkAddPrivateVMethod(IN_TYPE, FROM_TYPE, METHOD)
2961 
2971 #define kAddIVMethod(IN_TYPE, FROM_IFACE, IMETHOD, CMETHOD) \
2972  xkAddIVMethod(IN_TYPE, FROM_IFACE, IMETHOD, CMETHOD)
2973 
2985 #define kAddPrivateIVMethod(IN_TYPE, FROM_IFACE, IMETHOD, CMETHOD) \
2986  xkAddPrivateIVMethod(IN_TYPE, FROM_IFACE, IMETHOD, CMETHOD)
2987 
2996 #define kAddField(VALUE, FIELD_TYPE, FIELD) \
2997  xkAddField(VALUE, FIELD_TYPE, FIELD)
2998 
3006 #define kAddEnumerator \
3007  xkAddEnumerator
3008 
3020 #define kAddVersion(TYPE, FORMAT, FORMAT_VER, GUID, WRITE_METHOD, READ_METHOD) \
3021  xkAddVersion(TYPE, FORMAT, FORMAT_VER, GUID, WRITE_METHOD, READ_METHOD)
3022 
3036 #define kAddPrivateVersion(TYPE, FORMAT, FORMAT_VER, GUID, WRITE_METHOD, READ_METHOD) \
3037  xkAddPrivateVersion(TYPE, FORMAT, FORMAT_VER, GUID, WRITE_METHOD, READ_METHOD)
3038 
3052 #define kAddAbstractVersion(TYPE, FORMAT, FORMAT_VER, GUID) \
3053  xkAddAbstractVersion(TYPE, FORMAT, FORMAT_VER, GUID)
3054 
3062 #define kAddFlags(TYPE, FLAGS) \
3063  xkAddFlags(TYPE, FLAGS)
3064 
3086 #define kDefineDebugHints() \
3087  xkDefineDebugHints()
3088 
3089 /*
3090 *
3091 * Method Implementation Macros
3092 *
3093 * These macros are used in the implementation of class methods.
3094 *
3095 */
3096 
3103 #define kObj(TypeName_T, T_object) \
3104  TypeName_T##Class* obj K_ATTRIBUTE_UNUSED = xx##TypeName_T##_Cast(T_object, __FILE__, __LINE__)
3105 
3115 #define kObjR(TypeName_T, T_object) \
3116  TypeName_T##Class* obj K_ATTRIBUTE_UNUSED = x##TypeName_T##_CastRaw(T_object)
3117 
3129 #define kObjN(TypeName_T, VarName_obj, T_object) \
3130  TypeName_T##Class* VarName_obj = xx##TypeName_T##_Cast(T_object, __FILE__, __LINE__)
3131 
3142 #define kObjNR(TypeName_T, VarName_obj, T_object) \
3143  TypeName_T##Class* VarName_obj = x##TypeName_T##_CastRaw(T_object)
3144 
3150 #define kStaticObj(TypeName_T) \
3151  TypeName_T##Static* sobj = kStaticOf(TypeName_T)
3152 
3163 #define kCastClass_(TYPE, OBJECT) \
3164  xkCastClass_(TYPE, OBJECT)
3165 
3176 #define kCastVTable_(TYPE, OBJECT) \
3177  xkCastVTable_(TYPE, OBJECT)
3178 
3189 #define kCastIVTable_(IFACE, OBJECT) \
3190  xkCastIVTable_(IFACE, OBJECT)
3191 
3197 #define kDebugBreak() \
3198  xkDebugBreak()
3199 
3200 #include <kApi/kApiDef.x.h>
3201 
3202 #endif
k32f y
Y-coordinate value.
Definition: kApiDef.h:1316
kStatus k32s_Parse(k32s *value, const kChar *str)
Converts string to k32s value.
k64f height
Height of the rectangular cuboid.
Definition: kApiDef.h:1537
Represents a 64-unit, null-terminated, kChar sequence.
#define kALLOC_TRAIT_NON_ATOMIC
Allocates memory that cannot support atomic operations.
Definition: kApiDef.h:2037
Represents a 32-bit unsigned integer.
k32s y
Y-coordinate of the origin.
Definition: kApiDef.h:1472
kBool kChar_IsSpace(kChar ch)
Checks whether ASCII character is a some kind of white space character type.
Definition: kApiDef.h:400
kStatus kBool_Parse(kBool *value, const kChar *str)
Converts string to kBool value.
k64f height
Height of the rectangle.
Definition: kApiDef.h:1506
k32f x
X-coordinate of the origin.
Definition: kApiDef.h:1487
Rectangle structure with 32-bit signed integer fields.
Definition: kApiDef.h:1469
3D point structure with 32-bit floating-point fields.
Definition: kApiDef.h:1382
k64f x
X-coordinate of the origin.
Definition: kApiDef.h:1503
k32s width
Width of the rectangle.
Definition: kApiDef.h:1567
k8u b
Blue component value.
Definition: kApiDef.h:1650
k32s y
Y-coordinate value.
Definition: kApiDef.h:1370
#define kALLOC_TRAIT_SERIAL
Allocates memory suitable for single-threaded use only.
Definition: kApiDef.h:2036
k16s width
Width of the rectangle.
Definition: kApiDef.h:1457
32-bit color pixel structure (B/G/R/A).
Definition: kApiDef.h:1676
k16s y
Y-coordinate of the origin.
Definition: kApiDef.h:1456
2D point structure with 16-bit signed integer fields.
Definition: kApiDef.h:1285
kChar kChar_ToLower(kChar ch)
Convert ASCII character to lower case.
Definition: kApiDef.h:376
kBool kAllocTrait_IsCudaManaged(kAllocTrait traits)
Reports whether the kALLOC_TRAIT_CUDA_MANAGED trait is present in an allocator trait bitset...
Definition: kApiDef.h:2111
Represents a 64-bit unsigned integer.
Architecture/compiler-specific definitions.
kBool kSuccess(kStatus status)
Returns kTRUE if the given expression value is kOK.
Definition: kApiDef.h:548
Represents a 256-unit, null-terminated, kChar sequence.
kTypeName methodName
Method name (e.g. "Clone").
Definition: kApiDef.h:2199
kPointer receiver
Callback receiver context pointer.
Definition: kApiDef.h:1784
kTypeName name
Enumerator name (e.g. "kPIXEL_FORMAT_8BPP_GREYSCALE").
Definition: kApiDef.h:2225
#define kALLOC_TRAIT_CUDA_PINNED
Allocates Cuda pinned memory (host or device).
Definition: kApiDef.h:2039
Rotated rectangle structure with 32-bit floating-point fields.
Definition: kApiDef.h:1580
k64f y
Y-coordinate of the origin.
Definition: kApiDef.h:1504
k32s z
Z-coordinate value.
Definition: kApiDef.h:1371
Represents a void pointer.
32-bit color pixel structure (B/G/R/X).
Definition: kApiDef.h:1648
kStatus kSize_Parse(kSize *value, const kChar *str)
Converts string to kSize value.
k32f x
X-coordinate value.
Definition: kApiDef.h:1315
kByte address[6]
Address bytes (most significant byte first).
Definition: kApiDef.h:1705
kStatus kSSize_Parse(kSSize *value, const kChar *str)
Converts string to kSSize value.
kBool kAllocTrait_SupportsContext(kAllocTrait traits)
Reports whether the kALLOC_TRAIT_CONTEXT trait is present in an allocator trait bitset.
Definition: kApiDef.h:2087
kBool kChar_IsLetter(kChar ch)
Checks whether ASCII character is a letter.
Definition: kApiDef.h:412
k16s z
Z-coordinate value.
Definition: kApiDef.h:1356
kStatus k32f_Format(k32f value, kChar *buffer, kSize capacity)
Converts k32f value to string.
Represents a 16-bit unsigned integer.
kStatus k32u_Format(k32u value, kChar *buffer, kSize capacity)
Converts k32u value to string.
k32s xc
X-coordinate of the rectangle center.
Definition: kApiDef.h:1565
Rotated rectangle structure with 32-bit signed integer fields.
Definition: kApiDef.h:1563
kBool kAllocTrait_IsSerial(kAllocTrait traits)
Reports whether the kALLOC_TRAIT_SERIAL trait is present in an allocator trait bitset.
Definition: kApiDef.h:2063
k32f yc
Y-coordinate of the rectangle center.
Definition: kApiDef.h:1583
kStatus kBool_Format(kBool value, kChar *buffer, kSize capacity)
Converts kBool value to string.
Represents an unsigned integer that can store a pointer address.
k32s angle
Rotation angle of the rectangle.
Definition: kApiDef.h:1569
void * kPointer_ItemOffset(const void *pointer, kSSize itemIndex, kSize itemSize)
Gets a pointer to the Nth element of an array.
Definition: kApiDef.h:294
kTypeName displayName
Formatted display name (e.g. "8bpp Greyscale");.
Definition: kApiDef.h:2226
Represents type field information.
Definition: kApiDef.h:2209
k64f width
Width of the rectangular cuboid.
Definition: kApiDef.h:1536
Represents an 8-bit unsigned integer.
k64f x
X-coordinate of the origin.
Definition: kApiDef.h:1533
k64f depth
Depth of the rectangular cuboid.
Definition: kApiDef.h:1538
#define kInlineFx(TYPE)
Inline method declaration helper.
Definition: kApiDef.h:26
k64f y
Y-coordinate value.
Definition: kApiDef.h:1400
k64f x
X-coordinate value.
Definition: kApiDef.h:1399
kBool kAllocTrait_IsNonAtomic(kAllocTrait traits)
Reports whether the kALLOC_TRAIT_NON_ATOMIC trait is present in an allocator trait bitset...
Definition: kApiDef.h:2075
Represents enumerator information.
Definition: kApiDef.h:2222
Represents a single unit (byte) in a UTF-8 character.
#define kALLOC_TRAIT_CONTEXT
Allocator supports use of a context object during copy operations.
Definition: kApiDef.h:2038
Represents a byte on the current platform.
kStatus k64s_Format(k64s value, kChar *buffer, kSize capacity)
Converts k64s value to string.
kStatus k16u_Parse(k16u *value, const kChar *str)
Converts string to k16u value.
k16s x
X-coordinate value.
Definition: kApiDef.h:1287
k16s y
Y-coordinate value.
Definition: kApiDef.h:1355
kStatus kSSize_Format(kSSize value, kChar *buffer, kSize capacity)
Converts kSSize value to string.
kSize(kCall * kHashFx)(const void *item)
Callback signature to determine hash code of an item.
Definition: kApiDef.h:1763
kStatus k64f_Parse(k64f *value, const kChar *str)
Converts string to k64f value.
k32f angle
Rotation angle of the rectangle.
Definition: kApiDef.h:1586
Represents a signed integer that can store a pointer address.
typedef kStatus(kCall *kMsgQueueDropFx)(kPointer receiver
Defines the signature of a callback function to handle dropped items.
k32s height
Height of the rectangle.
Definition: kApiDef.h:1474
Rectangle structure with 32-bit floating-point fields.
Definition: kApiDef.h:1485
kBool kIsError(kStatus status)
Returns kTRUE if the given status value is not kOK.
Definition: kApiDef.h:536
k32s kVersion_Compare(kVersion version1, kVersion version2)
Returns an integral value indicating the relationship between the versions.
Definition: kApiDef.h:852
kBool kAllocTrait_IsCudaPinned(kAllocTrait traits)
Reports whether the kALLOC_TRAIT_CUDA_PINNED trait is present in an allocator trait bitset...
Definition: kApiDef.h:2099
k32s width
Width of the rectangle.
Definition: kApiDef.h:1473
kStatus k32u_Parse(k32u *value, const kChar *str)
Converts string to k32u value.
k32s x
X-coordinate value.
Definition: kApiDef.h:1301
Pixel format descriptor.
k32s height
Height of the rectangle.
Definition: kApiDef.h:1568
Rectangle structure with 64-bit floating-point fields.
Definition: kApiDef.h:1501
Represents a 128-unit, null-terminated, kChar sequence.
k32f x
X-coordinate value.
Definition: kApiDef.h:1384
k8u kVersion_Minor(kVersion version)
Returns the minor part of a version number.
Definition: kApiDef.h:876
#define kALLOC_TRAIT_CUDA_MANAGED
Allocates Cuda managed memory (host or device).
Definition: kApiDef.h:2040
kChar kChar_ToUpper(kChar ch)
Convert ASCII character to upper case.
Definition: kApiDef.h:388
kStatus k16s_Format(k16s value, kChar *buffer, kSize capacity)
Converts k16s value to string.
kBool(kCall * kEqualsFx)(const void *item1, const void *item2)
Callback signature to determine equality of two items.
Definition: kApiDef.h:1755
k8u kVersion_Major(kVersion version)
Returns the major part of a version number.
Definition: kApiDef.h:864
k16s y
Y-coordinate value.
Definition: kApiDef.h:1288
Represents type method information.
Definition: kApiDef.h:2197
k16s x
X-coordinate value.
Definition: kApiDef.h:1354
k32f z
Z-coordinate value.
Definition: kApiDef.h:1386
kTypeName name
Field name.
Definition: kApiDef.h:2211
kStatus k32f_Parse(k32f *value, const kChar *str)
Converts string to k32f value.
k64f width
Width of the rectangle.
Definition: kApiDef.h:1505
k64f z
Z-coordinate value.
Definition: kApiDef.h:1401
Represents a callback function and context pointer.
Definition: kApiDef.h:1781
void kItemCopy(void *dest, const void *src, kSize size)
Performs a small copy with minimal overhead.
Definition: kApiDef.h:2004
k8u kVersion_Build(kVersion version)
Returns the build part of a version number.
Definition: kApiDef.h:900
k8u r
Red component value.
Definition: kApiDef.h:1680
2D point structure with 32-bit floating-point fields.
Definition: kApiDef.h:1313
k64f y
Y-coordinate of the origin.
Definition: kApiDef.h:1534
kStatus k32s_Format(k32s value, kChar *buffer, kSize capacity)
Converts k32s value to string.
Preset compression levels.
k16s w
W-coordinate value.
Definition: kApiDef.h:1429
k32s yc
Y-coordinate of the rectangle center.
Definition: kApiDef.h:1566
Represents a 32-bit signed integer.
Represents an Ethernet address.
Definition: kApiDef.h:1703
void * kPointer_ByteOffset(const void *pointer, kSSize offset)
Calculates a pointer address from a base address and a byte offset.
Definition: kApiDef.h:280
void(kCall * kFunction)()
Generic pointer to function.
Definition: kApiDef.h:28
k8u r
Red component value.
Definition: kApiDef.h:1652
k32f height
Height of the rectangle.
Definition: kApiDef.h:1585
kBool kChar_IsDigit(kChar ch)
Checks whether ASCII character is a digit.
Definition: kApiDef.h:424
k64f x
X-coordinate value.
Definition: kApiDef.h:1329
void kItemZero(void *dest, kSize size)
Zero-initializes a small amount of memory with minimal overhead.
Definition: kApiDef.h:2022
kVersion kVersion_Create(k32u major, k32u minor, k32u release, k32u build)
Creates a version value from its constituent parts.
Definition: kApiDef.h:799
kType type
Field type.
Definition: kApiDef.h:2212
k8u kVersion_Release(kVersion version)
Returns the release part of a version number.
Definition: kApiDef.h:888
kEndianness kEndianness_Host()
Reports the endianness of the current platform.
Definition: kApiDef.h:923
kStatus k16s_Parse(k16s *value, const kChar *str)
Converts string to k16s value.
2D point structure with 64-bit floating-point fields.
Definition: kApiDef.h:1327
kBool kEndianness_ShouldReverse(kEndianness endianness)
Reports whether byte ordering must be reversed to be consistent with the current platform.
Definition: kApiDef.h:934
kStatus(kCall * kCallbackFx)(kPointer receiver, kPointer sender, void *args)
Callback signature for a generic event handler.
Definition: kApiDef.h:1773
#define kALLOC_TRAIT_CUDA_DEVICE
Allocates Cuda device memory (device only).
Definition: kApiDef.h:2041
k8u g
Green component value.
Definition: kApiDef.h:1651
Represents a 64-bit signed integer.
kStatus kSize_Format(kSize value, kChar *buffer, kSize capacity)
Converts kSize value to string.
kBool kAllocTrait_IsCudaDeviceAccessible(kAllocTrait traits)
Reports whether the memory is Cuda device-accessible.
Definition: kApiDef.h:2135
#define kALLOC_TRAIT_FOREIGN
Allocates memory in a foreign memory domain (non-host address space).
Definition: kApiDef.h:2035
kStatus kVersion_Format(kVersion version, kChar *buffer, kSize capacity)
Formats a version to a string buffer.
Represents a 16-unit, null-terminated, kChar sequence.
Flags that control how a file is opened.
Represents an 8-bit signed integer.
Represents the byte-ordering of primitive data types.
k32f width
Width of the rectangle.
Definition: kApiDef.h:1584
k8u b
Blue component value.
Definition: kApiDef.h:1678
k16s height
Height of the rectangle.
Definition: kApiDef.h:1458
kStatus k8s_Format(k8s value, kChar *buffer, kSize capacity)
Converts k8s value to string.
Represents metadata about a type (class, interface, or value).
k8u g
Green component value.
Definition: kApiDef.h:1679
kStatus k64s_Parse(k64s *value, const kChar *str)
Converts string to k64s value.
k16s x
X-coordinate value.
Definition: kApiDef.h:1426
k32s x
X-coordinate value.
Definition: kApiDef.h:1369
kStatus kVersion_Parse(kVersion *version, const kChar *buffer)
Parses a version from a formatted string.
Represents a 32-unit, null-terminated, kChar sequence.
kStatus kMacAddress_Format(kMacAddress address, kChar *text, kSize capacity)
Formats an Ethernet MAC address as a string.
3D point structure with 16-bit signed integer fields.
Definition: kApiDef.h:1352
k32s value
Enumerator numeric value.
Definition: kApiDef.h:2224
kTypeName functionName
Full function name (e.g. "kObject_Clone").
Definition: kApiDef.h:2200
Represents a 16-bit signed integer.
k32f y
Y-coordinate of the origin.
Definition: kApiDef.h:1488
Represents a 32-bit floating-point number.
k64f y
Y-coordinate value.
Definition: kApiDef.h:1330
Root of all Zen classes.
Represents a version number.
k8u a
Alpha component value.
Definition: kApiDef.h:1681
#define kOK
Operation successful.
Definition: kApiDef.h:515
Represents an error code.
k64f z
Z-coordinate of the origin.
Definition: kApiDef.h:1535
Represents a thread priority class.
kStatus k64u_Format(k64u value, kChar *buffer, kSize capacity)
Converts k64u value to string.
k8u x
Undefined.
Definition: kApiDef.h:1653
k32s y
Y-coordinate value.
Definition: kApiDef.h:1302
kSize offset
Offset of field within structure (bytes).
Definition: kApiDef.h:2213
k16s y
Y-coordinate value.
Definition: kApiDef.h:1427
#define kCall
kApi standard function calling convention.
Definition: kApiDef.h:15
k32f width
Width of the rectangle.
Definition: kApiDef.h:1489
kStatus k16u_Format(k16u value, kChar *buffer, kSize capacity)
Converts k16u value to string.
Rectangular cuboid structure with 64-bit floating-point fields.
Definition: kApiDef.h:1531
kStatus k64f_Format(k64f value, kChar *buffer, kSize capacity)
Converts k64f value to string.
Rectangle structure with 16-bit signed integer fields.
Definition: kApiDef.h:1453
kStatus k8u_Format(k8u value, kChar *buffer, kSize capacity)
Converts k8u value to string.
Represents a 64-bit floating-point number.
Represents a comparison type.
kSSize kPointer_Diff(void *a, void *b)
Calculates the signed difference between two pointers.
Definition: kApiDef.h:307
k32s x
X-coordinate of the origin.
Definition: kApiDef.h:1471
Represents a memory allocator trait.
k32f xc
X-coordinate of the rectangle center.
Definition: kApiDef.h:1582
2D point structure with 32-bit signed integer fields.
Definition: kApiDef.h:1299
Represents a boolean value.
kStatus k64u_Parse(k64u *value, const kChar *str)
Converts string to k64u value.
k16s x
X-coordinate of the origin.
Definition: kApiDef.h:1455
kStatus kMacAddress_Parse(kMacAddress *address, const kChar *text)
Parses a text-formatted Ethernet MAC address.
kSize count
Count of values in this field (typically 1; can be higher for "array value" fields, e.g. kText32).
Definition: kApiDef.h:2214
k32f height
Height of the rectangle.
Definition: kApiDef.h:1490
3D point structure with 64-bit floating-point fields.
Definition: kApiDef.h:1397
kBool kAllocTrait_IsCudaDevice(kAllocTrait traits)
Reports whether the kALLOC_TRAIT_CUDA_DEVICE trait is present in an allocator trait bitset...
Definition: kApiDef.h:2123
3D point structure with 32-bit signed integer fields.
Definition: kApiDef.h:1367
k16s z
Z-coordinate value.
Definition: kApiDef.h:1428
kStatus k8u_Parse(k8u *value, const kChar *str)
Converts string to k8u value.
k32f y
Y-coordinate value.
Definition: kApiDef.h:1385
4D point structure with 16-bit signed integer fields.
Definition: kApiDef.h:1424
kStatus k8s_Parse(k8s *value, const kChar *str)
Converts string to k8s value.