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 
186 typedef xk64f k64f;
187 
189 #define k64F_MIN (2.2250738585072014e-308)
190 #define k64F_MAX (1.7976931348623157e+308)
191 #define k64F_NULL (-k64F_MAX)
192 
202 kFx(k32s) k64f_IsNanOrInf(k64f value);
203 
212 typedef xkByte kByte;
213 
222 typedef xkSize kSize;
223 
225 #define kSIZE_MAX xkSIZE_MAX
226 #define kSIZE_NULL kSIZE_MAX
227 
239 kInlineFx(kSize) kSize_Align(kSize value, kSize to)
240 {
241  return ((value >> to) + !!(value & ((1 << to) - 1))) << to;
242 }
243 
250 typedef xkSSize kSSize;
251 
253 #define kSSIZE_MIN xkSSIZE_MIN
254 #define kSSIZE_MAX xkSSIZE_MAX
255 #define kSSIZE_NULL kSSIZE_MIN
256 
265 typedef void* kPointer;
266 
267 #define kNULL (0)
268 
269 
278 kInlineFx(void*) kPointer_ByteOffset(const void* pointer, kSSize offset)
279 {
280  return (kByte*)pointer + offset;
281 }
282 
292 kInlineFx(void*) kPointer_ItemOffset(const void* pointer, kSSize itemIndex, kSize itemSize)
293 {
294  return kPointer_ByteOffset(pointer, itemIndex*(kSSize)itemSize);
295 }
296 
305 kInlineFx(kSSize) kPointer_Diff(void* a, void* b)
306 {
307  return (kSSize)a - (kSSize)b;
308 }
309 
318 #define kPointer_ReadAs(POINTER, TYPE) \
319  (*(TYPE*)(POINTER))
320 
329 #define kPointer_WriteAs(POINTER, VALUE, TYPE) \
330  (*(TYPE*)(POINTER) = (TYPE)(VALUE))
331 
339 #define kIsNull(POINTER) \
340  ((POINTER) == kNULL)
341 
350 typedef k32s kBool;
351 
353 #define kFALSE (0)
354 #define kTRUE (1)
355 
365 typedef xkChar kChar;
366 
375 {
376  return (ch >= 'A' && ch <= 'Z') ? (ch - 'A' + 'a') : ch;
377 }
378 
387 {
388  return (ch >= 'a' && ch <= 'z') ? (ch - 'a' + 'A') : ch;
389 }
390 
399 {
400  return ch == ' ';
401 }
402 
411 {
412  return ((ch >= 'a') && (ch <= 'z') ) || ((ch >= 'A') && (ch <= 'Z'));
413 }
414 
423 {
424  return ch >= '0' && ch <= '9';
425 }
426 
435 typedef kChar kText16[16];
436 
445 typedef kChar kText32[32];
446 
455 typedef kChar kText64[64];
456 
465 typedef kChar kText128[128];
466 
475 typedef kChar kText256[256];
476 
485 typedef k32s kStatus;
486 
488 #define kERROR_STATE (-1000)
489 #define kERROR_NOT_FOUND (-999)
490 #define kERROR_COMMAND (-998)
491 #define kERROR_PARAMETER (-997)
492 #define kERROR_UNIMPLEMENTED (-996)
493 #define kERROR_MEMORY (-994)
494 #define kERROR_TIMEOUT (-993)
495 #define kERROR_INCOMPLETE (-992)
496 #define kERROR_STREAM (-991)
497 #define kERROR_CLOSED (-990)
498 #define kERROR_VERSION (-989)
499 #define kERROR_ABORT (-988)
500 #define kERROR_ALREADY_EXISTS (-987)
501 #define kERROR_NETWORK (-986)
502 #define kERROR_HEAP (-985)
503 #define kERROR_FORMAT (-984)
504 #define kERROR_READ_ONLY (-983)
505 #define kERROR_WRITE_ONLY (-982)
506 #define kERROR_BUSY (-981)
507 #define kERROR_CONFLICT (-980)
508 #define kERROR_OS (-979)
509 #define kERROR_DEVICE (-978)
510 #define kERROR_FULL (-977)
511 #define kERROR_IN_PROGRESS (-976)
512 #define kERROR (0)
513 #define kOK (1)
514 
525 kFx(const kChar*) kStatus_Name(kStatus status);
526 
535 {
536  return status != kOK;
537 }
538 
547 {
548  return status == kOK;
549 }
550 
559 #define kCheck(EXPRESSION) \
560  xkCheck(EXPRESSION)
561 
571 #define kCheckTrue(EXPRESSION, STATUS) \
572  xkCheckTrue(EXPRESSION, STATUS)
573 
582 #define kCheckArgs(EXPRESSION) \
583  xkCheckArgs(EXPRESSION)
584 
593 #define kCheckState(EXPRESSION) \
594  xkCheckState(EXPRESSION)
595 
601 #define kTry \
602  xkTry
603 
610 #define kThrow(EXPRESSION) \
611  xkThrow(EXPRESSION)
612 
622 #define kTest(EXPRESSION) \
623  xkTest(EXPRESSION)
624 
635 #define kTestTrue(EXPRESSION, STATUS) \
636  xkTestTrue(EXPRESSION, STATUS)
637 
647 #define kTestArgs(EXPRESSION) \
648  xkTestArgs(EXPRESSION)
649 
659 #define kTestState(EXPRESSION) \
660  xkTestState(EXPRESSION)
661 
668 #define kCatch(STATUS_POINTER) \
669  xkCatch(STATUS_POINTER)
670 
679 #define kEndCatch(STATUS) \
680  xkEndCatch(STATUS)
681 
687 #define kFinally \
688  xkFinally
689 
698 #define kEndFinally() \
699  xkEndFinally()
700 
707 #define kCatchEx(STATUS_POINTER) \
708  xkCatchEx(STATUS_POINTER)
709 
720 #define kEndCatchEx(STATUS) \
721  xkEndCatchEx(STATUS)
722 
728 #define kFinallyEx \
729  xkFinallyEx
730 
739 #define kEndFinallyEx() \
740  xkEndFinallyEx()
741 
749 #define kAssert(EXPRESSION) \
750  xkAssert(EXPRESSION)
751 
762 #define kAssertType(OBJECT, SYMBOL) \
763  xkAssertType(OBJECT, SYMBOL)
764 
772 #define kTrace(TAG) \
773  xkTrace(TAG)
774 
783 typedef k32u kVersion;
784 
785 #define kVERSION_NULL (k32U_NULL) // kVersion invalid value.
786 
797 kInlineFx(kVersion) kVersion_Create(k32u major, k32u minor, k32u release, k32u build)
798 {
799  return (major & 0xFF) << 24 |
800  (minor & 0xFF) << 16 |
801  (release & 0xFF) << 8 |
802  (build & 0xFF);
803 }
804 
815 #define kVersion_Stringify_(MAJOR, MINOR, RELEASE, BUILD) \
816  xkStringize(MAJOR) "." xkStringize(MINOR) "." xkStringize(RELEASE) "." xkStringize(BUILD)
817 
826 kFx(kStatus) kVersion_Parse(kVersion* version, const kChar* buffer);
827 
837 kFx(kStatus) kVersion_Format(kVersion version, kChar* buffer, kSize capacity);
838 
851 {
852  return (k32s)version1 - (k32s)version2;
853 }
854 
863 {
864  return (version >> 24) & 0xFF;
865 }
866 
875 {
876  return (version >> 16) & 0xFF;
877 }
878 
887 {
888  return (version >> 8) & 0xFF;
889 }
890 
899 {
900  return (version) & 0xFF;
901 }
902 
909 typedef k32s kEndianness;
910 
912 #define kENDIANNESS_LITTLE (1)
913 #define kENDIANNESS_BIG (2)
914 
921 kInlineFx(kEndianness) kEndianness_Host()
922 {
923  return K_ENDIANNESS;
924 }
925 
933 {
934  return endianness != kEndianness_Host();
935 }
936 
951 kFx(kStatus) k8u_Format(k8u value, kChar* buffer, kSize capacity);
952 
961 kFx(kStatus) k8u_Parse(k8u* value, const kChar* str);
962 
977 kFx(kStatus) k8s_Format(k8s value, kChar* buffer, kSize capacity);
978 
987 kFx(kStatus) k8s_Parse(k8s* value, const kChar* str);
988 
1003 kFx(kStatus) k16u_Format(k16u value, kChar* buffer, kSize capacity);
1004 
1013 kFx(kStatus) k16u_Parse(k16u* value, const kChar* str);
1014 
1029 kFx(kStatus) k16s_Format(k16s value, kChar* buffer, kSize capacity);
1030 
1039 kFx(kStatus) k16s_Parse(k16s* value, const kChar* str);
1040 
1055 kFx(kStatus) k32u_Format(k32u value, kChar* buffer, kSize capacity);
1056 
1065 kFx(kStatus) k32u_Parse(k32u* value, const kChar* str);
1066 
1081 kFx(kStatus) k32s_Format(k32s value, kChar* buffer, kSize capacity);
1082 
1091 kFx(kStatus) k32s_Parse(k32s* value, const kChar* str);
1092 
1107 kFx(kStatus) k64u_Format(k64u value, kChar* buffer, kSize capacity);
1108 
1117 kFx(kStatus) k64u_Parse(k64u* value, const kChar* str);
1118 
1133 kFx(kStatus) k64s_Format(k64s value, kChar* buffer, kSize capacity);
1134 
1143 kFx(kStatus) k64s_Parse(k64s* value, const kChar* str);
1144 
1159 kFx(kStatus) kBool_Format(kBool value, kChar* buffer, kSize capacity);
1160 
1169 kFx(kStatus) kBool_Parse(kBool* value, const kChar* str);
1170 
1185 kFx(kStatus) kSize_Format(kSize value, kChar* buffer, kSize capacity);
1186 
1195 kFx(kStatus) kSize_Parse(kSize* value, const kChar* str);
1196 
1211 kFx(kStatus) kSSize_Format(kSSize value, kChar* buffer, kSize capacity);
1212 
1221 kFx(kStatus) kSSize_Parse(kSSize* value, const kChar* str);
1222 
1237 kFx(kStatus) k32f_Format(k32f value, kChar* buffer, kSize capacity);
1238 
1247 kFx(kStatus) k32f_Parse(k32f* value, const kChar* str);
1248 
1263 kFx(kStatus) k64f_Format(k64f value, kChar* buffer, kSize capacity);
1264 
1273 kFx(kStatus) k64f_Parse(k64f* value, const kChar* str);
1274 
1283 typedef struct kPoint16s
1284 {
1287 } kPoint16s;
1288 
1297 typedef struct kPoint32s
1298 {
1301 } kPoint32s;
1302 
1311 typedef struct kPoint32f
1312 {
1315 } kPoint32f;
1316 
1325 typedef struct kPoint64f
1326 {
1329 } kPoint64f;
1330 
1340 #define kPoint_Init_(POINT, X, Y) xkPoint_Init_(POINT, X, Y)
1341 
1350 typedef struct kPoint3d16s
1351 {
1355 } kPoint3d16s;
1356 
1365 typedef struct kPoint3d32s
1366 {
1370 } kPoint3d32s;
1371 
1380 typedef struct kPoint3d32f
1381 {
1385 } kPoint3d32f;
1386 
1395 typedef struct kPoint3d64f
1396 {
1400 } kPoint3d64f;
1401 
1412 #define kPoint3d_Init_(POINT, X, Y, Z) xkPoint3d_Init_(POINT, X, Y, Z)
1413 
1422 typedef struct kPoint4d16s
1423 {
1428 } kPoint4d16s;
1429 
1441 #define kPoint4d_Init_(POINT, X, Y, Z, W) xkPoint4d_Init_(POINT, X, Y, Z, W)
1442 
1451 typedef struct kRect16s
1452 {
1457 } kRect16s;
1458 
1467 typedef struct kRect32s
1468 {
1473 } kRect32s;
1474 
1483 typedef struct kRect32f
1484 {
1489 } kRect32f;
1490 
1499 typedef struct kRect64f
1500 {
1505 } kRect64f;
1506 
1518 #define kRect_Init_(RECT, X, Y, W, H) \
1519  xkRect_Init_(RECT, X, Y, W, H)
1520 
1529 typedef struct kRect3d64f
1530 {
1537 } kRect3d64f;
1538 
1550 #define kRect3d_Init_(RECT, X, Y, Z, W, H, D) \
1551  xkRect3d_Init_(RECT, X, Y, Z, W, H, D)
1552 
1561 typedef struct kRotatedRect32s
1562 {
1568 } kRotatedRect32s;
1569 
1578 typedef struct kRotatedRect32f
1579 {
1585 } kRotatedRect32f;
1586 
1599 #define kRotatedRect_Init_(RECT, XC, YC, W, H, A) \
1600  xkRotatedRect_Init_(RECT, XC, YC, W, H, A)
1601 
1610 typedef k32s kPixelFormat;
1611 
1613 #define kPIXEL_FORMAT_NULL (0)
1614 #define kPIXEL_FORMAT_8BPP_GREYSCALE (1)
1615 #define kPIXEL_FORMAT_8BPP_CFA (2)
1616 #define kPIXEL_FORMAT_8BPC_BGRX (3)
1617 #define kPIXEL_FORMAT_1BPP_GREYSCALE (4)
1618 
1628 typedef k32s kCfa;
1629 
1631 #define kCFA_NONE (0)
1632 #define kCFA_BAYER_BGGR (1)
1633 #define kCFA_BAYER_GBRG (2)
1634 #define kCFA_BAYER_RGGB (3)
1635 #define kCFA_BAYER_GRBG (4)
1636 
1646 typedef struct kRgb
1647 {
1648  k8u b;
1649  k8u g;
1650  k8u r;
1651  k8u x;
1652 } kRgb;
1653 
1663 #define kRgb_Init_(RGB, R, G, B) \
1664  xkRgb_Init_(RGB, R, G, B)
1665 
1674 typedef struct kArgb
1675 {
1676  k8u b;
1677  k8u g;
1678  k8u r;
1679  k8u a;
1680 } kArgb;
1681 
1692 #define kArgb_Init_(ARGB, A, R, G, B) \
1693  xkArgb_Init_(ARGB, A, R, G, B)
1694 
1701 typedef k32s kComparison;
1702 
1703 #define kCOMPARISON_EQ (0)
1704 #define kCOMPARISON_NEQ (1)
1705 #define kCOMPARISON_LT (2)
1706 #define kCOMPARISON_LTE (3)
1707 #define kCOMPARISON_GT (4)
1708 #define kCOMPARISON_GTE (5)
1709 
1710 
1717 typedef kBool (kCall* kEqualsFx)(const void* item1, const void* item2);
1718 
1725 typedef kSize (kCall* kHashFx)(const void* item);
1726 
1735 typedef kStatus (kCall* kCallbackFx)(kPointer receiver, kPointer sender, void* args);
1736 
1743 typedef struct kCallback
1744 {
1745  kCallbackFx function;
1747 } kCallback;
1748 
1755 typedef k32s kFileMode;
1756 
1758 #define kFILE_MODE_READ (0x1)
1759 #define kFILE_MODE_WRITE (0x2)
1760 #define kFILE_MODE_UPDATE (0x4)
1761 
1769 typedef k32s kSeekOrigin;
1770 
1772 #define kSEEK_ORIGIN_BEGIN (0)
1773 #define kSEEK_ORIGIN_CURRENT (1)
1774 #define kSEEK_ORIGIN_END (2)
1775 
1783 typedef k32s kCompressionType;
1784 
1786 #define kCOMPRESSION_TYPE_NULL (0)
1787 #define kCOMPRESSION_TYPE_ZSTD (1)
1788 
1789 
1797 typedef k32s kCompressionPreset;
1798 
1800 #define kCOMPRESSION_PRESET_MIN (-1)
1801 #define kCOMPRESSION_PRESET_FAST (-2)
1802 #define kCOMPRESSION_PRESET_DEFAULT (-3)
1803 #define kCOMPRESSION_PRESET_DENSE (-4)
1804 #define kCOMPRESSION_PRESET_MAX (-5)
1805 
1815 #define kCountOf(CARRAY) \
1816  (sizeof(CARRAY)/sizeof(CARRAY[0]))
1817 
1818 
1828 #define kCast(TYPE, ITEM) \
1829  ((TYPE)(ITEM))
1830 
1840 #define kMin_(A, B) \
1841  (((A) < (B)) ? (A) : (B))
1842 
1843 
1853 #define kMax_(A, B) \
1854  (((A) > (B)) ? (A) : (B))
1855 
1866 #define kClamp_(V, VMIN, VMAX) \
1867  (kMin_(kMax_((V), (VMIN)), (VMAX)))
1868 
1877 #define kAbs_(A) \
1878  (((A) >= 0) ? (A) : -(A))
1879 
1880 
1890 #define kDivideFloorInt_(A, B) \
1891  (((A) >= 0) ? (A) / (B) : ((A) - (B) + 1) / (B))
1892 
1902 #define kDivideCeilInt_(A, B) \
1903  (((A) >= 0) ? ((A) + (B) - 1) / (B) : (A) / (B))
1904 
1912 #define kDivideFloorUInt_(A, B) \
1913  ((A) / (B))
1914 
1924 #define kDivideCeilUInt_(A, B) \
1925  (((A) + (B) - 1) / (B))
1926 
1932 #define kZero(VALUE) \
1933  memset(&VALUE, 0, sizeof(VALUE))
1934 
1949 kInlineFx(void) kItemCopy(void* dest, const void* src, kSize size)
1950 {
1951  memcpy(dest, src, size);
1952 }
1953 
1967 kInlineFx(void) kItemZero(void* dest, kSize size)
1968 {
1969  memset(dest, 0, size);
1970 }
1971 
1972 /*
1973  * Forward declarations
1974  */
1975 
1976 typedef void* kObject;
1977 typedef kObject kType;
1978 
1980 #define kTypeName kText64
1981 
1989 typedef k32u kTypeFlags;
1990 
1992 #define kTYPE_FLAGS_CLASS (0x01)
1993 #define kTYPE_FLAGS_INTERFACE (0x02)
1994 #define kTYPE_FLAGS_VALUE (0x04)
1995 #define kTYPE_FLAGS_ENUM (0x08)
1996 #define kTYPE_FLAGS_ABSTRACT (0x20)
1997 #define kTYPE_FLAGS_ARRAY_VALUE (0x40)
1998 #define kTYPE_FLAGS_PRIMITIVE (0x80)
1999 
2007 typedef kPointer kTypeVersion;
2008 
2014 typedef struct kMethodInfo
2015 {
2016  kTypeName methodName;
2017  kTypeName functionName;
2018  kFunction function;
2019 } kMethodInfo;
2020 
2026 typedef struct kFieldInfo
2027 {
2028  kTypeName name;
2032 } kFieldInfo;
2033 
2039 typedef struct kEnumeratorInfo
2040 {
2042  kTypeName name;
2043  kTypeName displayName;
2044 } kEnumeratorInfo;
2045 
2046 
2072 #define kTypeOf(SYMBOL) \
2073  xkTypeOf(SYMBOL)
2074 
2100 #define kAssemblyOf(SYMBOL) \
2101  xkAssemblyOf(SYMBOL)
2102 
2111 #define kStaticOf(SYMBOL) \
2112  xkStaticOf(SYMBOL)
2113 
2121 #define kDeprecate(SYMBOL) \
2122  xkDeprecate(#SYMBOL)
2123 
2132 #define kWarn(MESSAGE) \
2133  xkWarn(MESSAGE)
2134 
2135 /*
2136 *
2137 * Type Declaration/Definition Macros, Generation 1.
2138 *
2139 * These type declaration/definition macros continue to be supported. However, consider using the Generation 2
2140 * macros (defined below) in new code.
2141 *
2142 */
2143 
2151 #define kDeclareAssembly(PREFIX, SYMBOL) \
2152  xkDeclareAssembly(PREFIX, SYMBOL)
2153 
2163 #define kBeginAssembly(PREFIX, SYMBOL, VERSION, PLATFORM_VERSION) \
2164  xkBeginAssembly(PREFIX, SYMBOL, VERSION, PLATFORM_VERSION)
2165 
2171 #define kEndAssembly() \
2172  xkEndAssembly()
2173 
2182 #define kDeclareValue(PREFIX, SYMBOL, BASE) \
2183  xkDeclareValue(PREFIX, SYMBOL, BASE)
2184 
2193 #define kBeginValue(PREFIX, SYMBOL, BASE) \
2194  xkBeginValue(PREFIX, SYMBOL, BASE)
2195 
2201 #define kEndValue() \
2202  xkEndValue()
2203 
2212 #define kDeclareEnum(PREFIX, SYMBOL, BASE) \
2213  xkDeclareEnum(PREFIX, SYMBOL, BASE)
2214 
2223 #define kBeginEnum(PREFIX, SYMBOL, BASE) \
2224  xkBeginEnum(PREFIX, SYMBOL, BASE)
2225 
2231 #define kEndEnum() \
2232  xkEndEnum()
2233 
2242 #define kDeclareArrayValue(PREFIX, SYMBOL, BASE) \
2243  xkDeclareArrayValue(PREFIX, SYMBOL, BASE)
2244 
2254 #define kBeginArrayValue(PREFIX, SYMBOL, TYPE, BASE) \
2255  xkBeginArrayValue(PREFIX, SYMBOL, TYPE, BASE)
2256 
2262 #define kEndArrayValue() \
2263  xkEndArrayValue()
2264 
2273 #define kDeclareInterface(PREFIX, SYMBOL, BASE) \
2274  xkDeclareInterface(PREFIX, SYMBOL, BASE)
2275 
2284 #define kBeginInterface(PREFIX, SYMBOL, BASE) \
2285  xkBeginInterface(PREFIX, SYMBOL, BASE)
2286 
2292 #define kEndInterface() \
2293  xkEndInterface()
2294 
2303 #define kDeclareFullClass(PREFIX, SYMBOL, BASE) \
2304  xkDeclareFullClass(PREFIX, SYMBOL, BASE)
2305 
2314 #define kBeginFullClass(PREFIX, SYMBOL, BASE) \
2315  xkBeginFullClass(PREFIX, SYMBOL, BASE)
2316 
2322 #define kEndFullClass() \
2323  xkEndFullClass()
2324 
2333 #define kDeclareVirtualClass(PREFIX, SYMBOL, BASE) \
2334  xkDeclareVirtualClass(PREFIX, SYMBOL, BASE)
2335 
2344 #define kBeginVirtualClass(PREFIX, SYMBOL, BASE) \
2345  xkBeginVirtualClass(PREFIX, SYMBOL, BASE)
2346 
2352 #define kEndVirtualClass() \
2353  xkEndVirtualClass()
2354 
2362 #define kDeclareStaticClass(PREFIX, SYMBOL) \
2363  xkDeclareStaticClass(PREFIX, SYMBOL)
2364 
2372 #define kBeginStaticClass(PREFIX, SYMBOL) \
2373  xkBeginStaticClass(PREFIX, SYMBOL)
2374 
2380 #define kEndStaticClass() \
2381  xkEndStaticClass()
2382 
2391 #define kDeclareClass(PREFIX, SYMBOL, BASE) \
2392  xkDeclareClass(PREFIX, SYMBOL, BASE)
2393 
2402 #define kBeginClass(PREFIX, SYMBOL, BASE) \
2403  xkBeginClass(PREFIX, SYMBOL, BASE)
2404 
2410 #define kEndClass() \
2411  xkEndClass()
2412 
2413 /*
2414 *
2415 * Type Declaration/Definition Macros, Generation 2.
2416 *
2417 * These macros are used to declare and define elements of the type system, such
2418 * as assemblies, classes and values. These macros supersede the Generation 1 macros,
2419 * defined above.
2420 *
2421 */
2422 
2430 #define kDeclareAssemblyEx(PREFIX, SYMBOL) \
2431  xkDeclareAssemblyEx(PREFIX, SYMBOL)
2432 
2442 #define kBeginAssemblyEx(PREFIX, SYMBOL, VERSION, PLATFORM_VERSION) \
2443  xkBeginAssemblyEx(PREFIX, SYMBOL, VERSION, PLATFORM_VERSION)
2444 
2450 #define kEndAssemblyEx() \
2451  xkEndAssemblyEx()
2452 
2461 #define kDeclareValueEx(PREFIX, SYMBOL, BASE) \
2462  xkDeclareValueEx(PREFIX, SYMBOL, BASE)
2463 
2471 #define kBeginValueEx(PREFIX, SYMBOL) \
2472  xkBeginValueEx(PREFIX, SYMBOL)
2473 
2479 #define kEndValueEx() \
2480  xkEndValueEx()
2481 
2490 #define kDeclareEnumEx(PREFIX, SYMBOL, BASE) \
2491  xkDeclareEnumEx(PREFIX, SYMBOL, BASE)
2492 
2500 #define kBeginEnumEx(PREFIX, SYMBOL) \
2501  xkBeginEnumEx(PREFIX, SYMBOL)
2502 
2508 #define kEndEnumEx() \
2509  xkEndEnumEx()
2510 
2519 #define kDeclareArrayValueEx(PREFIX, SYMBOL, BASE) \
2520  xkDeclareArrayValueEx(PREFIX, SYMBOL, BASE)
2521 
2530 #define kBeginArrayValueEx(PREFIX, SYMBOL, TYPE) \
2531  xkBeginArrayValueEx(PREFIX, SYMBOL, TYPE)
2532 
2538 #define kEndArrayValueEx() \
2539  xkEndArrayValueEx()
2540 
2549 #define kDeclareInterfaceEx(PREFIX, SYMBOL, BASE) \
2550  xkDeclareInterfaceEx(PREFIX, SYMBOL, BASE)
2551 
2559 #define kBeginInterfaceEx(PREFIX, SYMBOL) \
2560  xkBeginInterfaceEx(PREFIX, SYMBOL)
2561 
2567 #define kEndInterfaceEx() \
2568  xkEndInterfaceEx()
2569 
2578 #define kDeclareFullClassEx(PREFIX, SYMBOL, BASE) \
2579  xkDeclareFullClassEx(PREFIX, SYMBOL, BASE)
2580 
2588 #define kBeginFullClassEx(PREFIX, SYMBOL) \
2589  xkBeginFullClassEx(PREFIX, SYMBOL)
2590 
2596 #define kEndFullClassEx() \
2597  xkEndFullClassEx()
2598 
2607 #define kDeclareVirtualClassEx(PREFIX, SYMBOL, BASE) \
2608  xkDeclareVirtualClassEx(PREFIX, SYMBOL, BASE)
2609 
2617 #define kBeginVirtualClassEx(PREFIX, SYMBOL) \
2618  xkBeginVirtualClassEx(PREFIX, SYMBOL)
2619 
2625 #define kEndVirtualClassEx() \
2626  xkEndVirtualClassEx()
2627 
2635 #define kDeclareStaticClassEx(PREFIX, SYMBOL) \
2636  xkDeclareStaticClassEx(PREFIX, SYMBOL)
2637 
2645 #define kBeginStaticClassEx(PREFIX, SYMBOL) \
2646  xkBeginStaticClassEx(PREFIX, SYMBOL)
2647 
2653 #define kEndStaticClassEx() \
2654  xkEndStaticClassEx()
2655 
2664 #define kDeclareClassEx(PREFIX, SYMBOL, BASE) \
2665  xkDeclareClassEx(PREFIX, SYMBOL, BASE)
2666 
2674 #define kBeginClassEx(PREFIX, SYMBOL) \
2675  xkBeginClassEx(PREFIX, SYMBOL)
2676 
2682 #define kEndClassEx() \
2683  xkEndClassEx()
2684 
2685 /*
2686 *
2687 * Type Implementation Macros
2688 *
2689 * These macros are used to provide type-specific details. They are typically used between
2690 * type definition begin/end macros (e.g., kBeginClass/kEndClass).
2691 *
2692 */
2693 
2700 #define kAddDependency(SYMBOL) \
2701  xkAddDependency(SYMBOL)
2702 
2709 #define kAddType(SYMBOL) \
2710  xkAddType(SYMBOL)
2711 
2722 #define kAddPriority(SYMBOL) \
2723  xkAddPriority(SYMBOL)
2724 
2733 #define kAddStatic(SYMBOL) \
2734  xkAddStatic(SYMBOL)
2735 
2743 #define kAddInterface(SYMBOL, IFACE) \
2744  xkAddInterface(SYMBOL, IFACE)
2745 
2753 #define kAddMethod(SYMBOL, METHOD) \
2754  xkAddMethod(SYMBOL, METHOD)
2755 
2764 #define kAddVMethod(IN_TYPE, FROM_TYPE, METHOD) \
2765  xkAddVMethod(IN_TYPE, FROM_TYPE, METHOD)
2766 
2777 #define kAddPrivateVMethod(IN_TYPE, FROM_TYPE, METHOD) \
2778  xkAddPrivateVMethod(IN_TYPE, FROM_TYPE, METHOD)
2779 
2789 #define kAddIVMethod(IN_TYPE, FROM_IFACE, IMETHOD, CMETHOD) \
2790  xkAddIVMethod(IN_TYPE, FROM_IFACE, IMETHOD, CMETHOD)
2791 
2803 #define kAddPrivateIVMethod(IN_TYPE, FROM_IFACE, IMETHOD, CMETHOD) \
2804  xkAddPrivateIVMethod(IN_TYPE, FROM_IFACE, IMETHOD, CMETHOD)
2805 
2814 #define kAddField(VALUE, FIELD_TYPE, FIELD) \
2815  xkAddField(VALUE, FIELD_TYPE, FIELD)
2816 
2824 #define kAddEnumerator \
2825  xkAddEnumerator
2826 
2838 #define kAddVersion(TYPE, FORMAT, FORMAT_VER, GUID, WRITE_METHOD, READ_METHOD) \
2839  xkAddVersion(TYPE, FORMAT, FORMAT_VER, GUID, WRITE_METHOD, READ_METHOD)
2840 
2854 #define kAddPrivateVersion(TYPE, FORMAT, FORMAT_VER, GUID, WRITE_METHOD, READ_METHOD) \
2855  xkAddPrivateVersion(TYPE, FORMAT, FORMAT_VER, GUID, WRITE_METHOD, READ_METHOD)
2856 
2870 #define kAddAbstractVersion(TYPE, FORMAT, FORMAT_VER, GUID) \
2871  xkAddAbstractVersion(TYPE, FORMAT, FORMAT_VER, GUID)
2872 
2880 #define kAddFlags(TYPE, FLAGS) \
2881  xkAddFlags(TYPE, FLAGS)
2882 
2904 #define kDefineDebugHints() \
2905  xkDefineDebugHints()
2906 
2907 /*
2908 *
2909 * Method Implementation Macros
2910 *
2911 * These macros are used in the implementation of class methods.
2912 *
2913 */
2914 
2921 #define kObj(TypeName_T, T_object) \
2922  TypeName_T##Class* obj K_ATTRIBUTE_UNUSED = xx##TypeName_T##_Cast(T_object, __FILE__, __LINE__)
2923 
2933 #define kObjR(TypeName_T, T_object) \
2934  TypeName_T##Class* obj K_ATTRIBUTE_UNUSED = x##TypeName_T##_CastRaw(T_object)
2935 
2947 #define kObjN(TypeName_T, VarName_obj, T_object) \
2948  TypeName_T##Class* VarName_obj = xx##TypeName_T##_Cast(T_object, __FILE__, __LINE__)
2949 
2960 #define kObjNR(TypeName_T, VarName_obj, T_object) \
2961  TypeName_T##Class* VarName_obj = x##TypeName_T##_CastRaw(T_object)
2962 
2968 #define kStaticObj(TypeName_T) \
2969  TypeName_T##Static* sobj = kStaticOf(TypeName_T)
2970 
2981 #define kCastClass_(TYPE, OBJECT) \
2982  xkCastClass_(TYPE, OBJECT)
2983 
2994 #define kCastVTable_(TYPE, OBJECT) \
2995  xkCastVTable_(TYPE, OBJECT)
2996 
3007 #define kCastIVTable_(IFACE, OBJECT) \
3008  xkCastIVTable_(IFACE, OBJECT)
3009 
3015 #define kDebugBreak() \
3016  xkDebugBreak()
3017 
3018 #include <kApi/kApiDef.x.h>
3019 
3020 #endif
k32f y
Y-coordinate value.
Definition: kApiDef.h:1314
kStatus k32s_Parse(k32s *value, const kChar *str)
Converts string to k32s value.
k64f height
Height of the rectangular cuboid.
Definition: kApiDef.h:1535
Represents a 64-unit, null-terminated, kChar sequence.
Represents a 32-bit unsigned integer.
k32s y
Y-coordinate of the origin.
Definition: kApiDef.h:1470
kBool kChar_IsSpace(kChar ch)
Checks whether ASCII character is a some kind of white space character type.
Definition: kApiDef.h:398
kStatus kBool_Parse(kBool *value, const kChar *str)
Converts string to kBool value.
k64f height
Height of the rectangle.
Definition: kApiDef.h:1504
k32f x
X-coordinate of the origin.
Definition: kApiDef.h:1485
Rectangle structure with 32-bit signed integer fields.
Definition: kApiDef.h:1467
3D point structure with 32-bit floating-point fields.
Definition: kApiDef.h:1380
k64f x
X-coordinate of the origin.
Definition: kApiDef.h:1501
k32s width
Width of the rectangle.
Definition: kApiDef.h:1565
k8u b
Blue component value.
Definition: kApiDef.h:1648
k32s y
Y-coordinate value.
Definition: kApiDef.h:1368
k16s width
Width of the rectangle.
Definition: kApiDef.h:1455
32-bit color pixel structure (B/G/R/A).
Definition: kApiDef.h:1674
k16s y
Y-coordinate of the origin.
Definition: kApiDef.h:1454
2D point structure with 16-bit signed integer fields.
Definition: kApiDef.h:1283
kChar kChar_ToLower(kChar ch)
Convert ASCII character to lower case.
Definition: kApiDef.h:374
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:546
Represents a 256-unit, null-terminated, kChar sequence.
kTypeName methodName
Method name (e.g. "Clone").
Definition: kApiDef.h:2016
kPointer receiver
Callback receiver context pointer.
Definition: kApiDef.h:1746
kTypeName name
Enumerator name (e.g. "kPIXEL_FORMAT_8BPP_GREYSCALE").
Definition: kApiDef.h:2042
Rotated rectangle structure with 32-bit floating-point fields.
Definition: kApiDef.h:1578
k64f y
Y-coordinate of the origin.
Definition: kApiDef.h:1502
k32s z
Z-coordinate value.
Definition: kApiDef.h:1369
Represents a void pointer.
32-bit color pixel structure (B/G/R/X).
Definition: kApiDef.h:1646
kStatus kSize_Parse(kSize *value, const kChar *str)
Converts string to kSize value.
k32f x
X-coordinate value.
Definition: kApiDef.h:1313
kStatus kSSize_Parse(kSSize *value, const kChar *str)
Converts string to kSSize value.
kBool kChar_IsLetter(kChar ch)
Checks whether ASCII character is a letter.
Definition: kApiDef.h:410
k16s z
Z-coordinate value.
Definition: kApiDef.h:1354
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:1563
Rotated rectangle structure with 32-bit signed integer fields.
Definition: kApiDef.h:1561
k32f yc
Y-coordinate of the rectangle center.
Definition: kApiDef.h:1581
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:1567
void * kPointer_ItemOffset(const void *pointer, kSSize itemIndex, kSize itemSize)
Gets a pointer to the Nth element of an array.
Definition: kApiDef.h:292
kTypeName displayName
Formatted display name (e.g. "8bpp Greyscale");.
Definition: kApiDef.h:2043
Represents type field information.
Definition: kApiDef.h:2026
k64f width
Width of the rectangular cuboid.
Definition: kApiDef.h:1534
Represents an 8-bit unsigned integer.
k64f x
X-coordinate of the origin.
Definition: kApiDef.h:1531
k64f depth
Depth of the rectangular cuboid.
Definition: kApiDef.h:1536
#define kInlineFx(TYPE)
Inline method declaration helper.
Definition: kApiDef.h:26
k64f y
Y-coordinate value.
Definition: kApiDef.h:1398
k64f x
X-coordinate value.
Definition: kApiDef.h:1397
Represents enumerator information.
Definition: kApiDef.h:2039
Represents a single unit (byte) in a UTF-8 character.
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:1285
k16s y
Y-coordinate value.
Definition: kApiDef.h:1353
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:1725
kStatus k64f_Parse(k64f *value, const kChar *str)
Converts string to k64f value.
k32f angle
Rotation angle of the rectangle.
Definition: kApiDef.h:1584
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:1472
Rectangle structure with 32-bit floating-point fields.
Definition: kApiDef.h:1483
kBool kIsError(kStatus status)
Returns kTRUE if the given status value is not kOK.
Definition: kApiDef.h:534
k32s kVersion_Compare(kVersion version1, kVersion version2)
Returns an integral value indicating the relationship between the versions.
Definition: kApiDef.h:850
k32s width
Width of the rectangle.
Definition: kApiDef.h:1471
kStatus k32u_Parse(k32u *value, const kChar *str)
Converts string to k32u value.
k32s x
X-coordinate value.
Definition: kApiDef.h:1299
Pixel format descriptor.
k32s height
Height of the rectangle.
Definition: kApiDef.h:1566
Rectangle structure with 64-bit floating-point fields.
Definition: kApiDef.h:1499
Represents a 128-unit, null-terminated, kChar sequence.
k32f x
X-coordinate value.
Definition: kApiDef.h:1382
k8u kVersion_Minor(kVersion version)
Returns the minor part of a version number.
Definition: kApiDef.h:874
kChar kChar_ToUpper(kChar ch)
Convert ASCII character to upper case.
Definition: kApiDef.h:386
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:1717
k8u kVersion_Major(kVersion version)
Returns the major part of a version number.
Definition: kApiDef.h:862
k16s y
Y-coordinate value.
Definition: kApiDef.h:1286
Represents type method information.
Definition: kApiDef.h:2014
k16s x
X-coordinate value.
Definition: kApiDef.h:1352
k32f z
Z-coordinate value.
Definition: kApiDef.h:1384
kTypeName name
Field name.
Definition: kApiDef.h:2028
kStatus k32f_Parse(k32f *value, const kChar *str)
Converts string to k32f value.
k64f width
Width of the rectangle.
Definition: kApiDef.h:1503
k64f z
Z-coordinate value.
Definition: kApiDef.h:1399
Represents a callback function and context pointer.
Definition: kApiDef.h:1743
void kItemCopy(void *dest, const void *src, kSize size)
Performs a small copy with minimal overhead.
Definition: kApiDef.h:1949
k8u kVersion_Build(kVersion version)
Returns the build part of a version number.
Definition: kApiDef.h:898
k8u r
Red component value.
Definition: kApiDef.h:1678
2D point structure with 32-bit floating-point fields.
Definition: kApiDef.h:1311
k64f y
Y-coordinate of the origin.
Definition: kApiDef.h:1532
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:1427
k32s yc
Y-coordinate of the rectangle center.
Definition: kApiDef.h:1564
Represents a 32-bit signed integer.
void * kPointer_ByteOffset(const void *pointer, kSSize offset)
Calculates a pointer address from a base address and a byte offset.
Definition: kApiDef.h:278
void(kCall * kFunction)()
Generic pointer to function.
Definition: kApiDef.h:28
k8u r
Red component value.
Definition: kApiDef.h:1650
k32f height
Height of the rectangle.
Definition: kApiDef.h:1583
kBool kChar_IsDigit(kChar ch)
Checks whether ASCII character is a digit.
Definition: kApiDef.h:422
k64f x
X-coordinate value.
Definition: kApiDef.h:1327
void kItemZero(void *dest, kSize size)
Zero-initializes a small amount of memory with minimal overhead.
Definition: kApiDef.h:1967
kVersion kVersion_Create(k32u major, k32u minor, k32u release, k32u build)
Creates a version value from its constituent parts.
Definition: kApiDef.h:797
kType type
Field type.
Definition: kApiDef.h:2029
k8u kVersion_Release(kVersion version)
Returns the release part of a version number.
Definition: kApiDef.h:886
kEndianness kEndianness_Host()
Reports the endianness of the current platform.
Definition: kApiDef.h:921
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:1325
kBool kEndianness_ShouldReverse(kEndianness endianness)
Reports whether byte ordering must be reversed to be consistent with the current platform.
Definition: kApiDef.h:932
kStatus(kCall * kCallbackFx)(kPointer receiver, kPointer sender, void *args)
Callback signature for a generic event handler.
Definition: kApiDef.h:1735
k8u g
Green component value.
Definition: kApiDef.h:1649
Represents a 64-bit signed integer.
kStatus kSize_Format(kSize value, kChar *buffer, kSize capacity)
Converts kSize value to string.
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:1582
k8u b
Blue component value.
Definition: kApiDef.h:1676
k16s height
Height of the rectangle.
Definition: kApiDef.h:1456
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:1677
kStatus k64s_Parse(k64s *value, const kChar *str)
Converts string to k64s value.
k16s x
X-coordinate value.
Definition: kApiDef.h:1424
k32s x
X-coordinate value.
Definition: kApiDef.h:1367
kStatus kVersion_Parse(kVersion *version, const kChar *buffer)
Parses a version from a formatted string.
Represents a 32-unit, null-terminated, kChar sequence.
3D point structure with 16-bit signed integer fields.
Definition: kApiDef.h:1350
k32s value
Enumerator numeric value.
Definition: kApiDef.h:2041
kTypeName functionName
Full function name (e.g. "kObject_Clone").
Definition: kApiDef.h:2017
Represents a 16-bit signed integer.
k32f y
Y-coordinate of the origin.
Definition: kApiDef.h:1486
Represents a 32-bit floating-point number.
k64f y
Y-coordinate value.
Definition: kApiDef.h:1328
Root of all Zen classes.
Represents a version number.
k8u a
Alpha component value.
Definition: kApiDef.h:1679
#define kOK
Operation successful.
Definition: kApiDef.h:513
Represents an error code.
k64f z
Z-coordinate of the origin.
Definition: kApiDef.h:1533
kStatus k64u_Format(k64u value, kChar *buffer, kSize capacity)
Converts k64u value to string.
k8u x
Undefined.
Definition: kApiDef.h:1651
k32s y
Y-coordinate value.
Definition: kApiDef.h:1300
kSize offset
Offset of field within structure (bytes).
Definition: kApiDef.h:2030
k16s y
Y-coordinate value.
Definition: kApiDef.h:1425
#define kCall
kApi standard function calling convention.
Definition: kApiDef.h:15
k32f width
Width of the rectangle.
Definition: kApiDef.h:1487
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:1529
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:1451
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:305
k32s x
X-coordinate of the origin.
Definition: kApiDef.h:1469
k32f xc
X-coordinate of the rectangle center.
Definition: kApiDef.h:1580
2D point structure with 32-bit signed integer fields.
Definition: kApiDef.h:1297
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:1453
kSize count
Count of values in this field (typically 1; can be higher for "array value" fields, e.g. kText32).
Definition: kApiDef.h:2031
k32f height
Height of the rectangle.
Definition: kApiDef.h:1488
3D point structure with 64-bit floating-point fields.
Definition: kApiDef.h:1395
3D point structure with 32-bit signed integer fields.
Definition: kApiDef.h:1365
k16s z
Z-coordinate value.
Definition: kApiDef.h:1426
kStatus k8u_Parse(k8u *value, const kChar *str)
Converts string to k8u value.
k32f y
Y-coordinate value.
Definition: kApiDef.h:1383
4D point structure with 16-bit signed integer fields.
Definition: kApiDef.h:1422
kStatus k8s_Parse(k8s *value, const kChar *str)
Converts string to k8s value.