Alternative managed wrapper around flecs-cs bindings for using the ECS framework Flecs in modern .NET.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

14548 lines
1.2 MiB

TranslationUnitDecl 0x560467ec17a8 <<invalid sloc>> <invalid sloc>
|-TypedefDecl 0x560467ec1fd0 <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128'
| `-BuiltinType 0x560467ec1d70 '__int128'
|-TypedefDecl 0x560467ec2040 <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned __int128'
| `-BuiltinType 0x560467ec1d90 'unsigned __int128'
|-TypedefDecl 0x560467ec2348 <<invalid sloc>> <invalid sloc> implicit __NSConstantString 'struct __NSConstantString_tag'
| `-RecordType 0x560467ec2120 'struct __NSConstantString_tag'
| `-Record 0x560467ec2098 '__NSConstantString_tag'
|-TypedefDecl 0x560467ec23e0 <<invalid sloc>> <invalid sloc> implicit __builtin_ms_va_list 'char *'
| `-PointerType 0x560467ec23a0 'char *'
| `-BuiltinType 0x560467ec1850 'char'
|-TypedefDecl 0x560467ec26d8 <<invalid sloc>> <invalid sloc> implicit referenced __builtin_va_list 'struct __va_list_tag[1]'
| `-ConstantArrayType 0x560467ec2680 'struct __va_list_tag[1]' 1
| `-RecordType 0x560467ec24c0 'struct __va_list_tag'
| `-Record 0x560467ec2438 '__va_list_tag'
|-FunctionDecl 0x560467f19e38 </usr/include/assert.h:67:1, line:69:43> line:67:13 __assert_fail 'void (const char *, const char *, unsigned int, const char *) __attribute__((noreturn))' extern
| |-ParmVarDecl 0x560467f19b70 <col:28, col:40> col:40 __assertion 'const char *'
| |-ParmVarDecl 0x560467f19bf0 <col:53, col:65> col:65 __file 'const char *'
| |-ParmVarDecl 0x560467f19c70 <line:68:7, col:20> col:20 __line 'unsigned int'
| |-ParmVarDecl 0x560467f19cf0 <col:28, col:40> col:40 __function 'const char *'
| `-NoThrowAttr 0x560467f19ef8 </usr/include/sys/cdefs.h:79:35>
|-FunctionDecl 0x560467f58e88 </usr/include/assert.h:72:1, line:74:43> line:72:13 __assert_perror_fail 'void (int, const char *, unsigned int, const char *) __attribute__((noreturn))' extern
| |-ParmVarDecl 0x560467f19fb0 <col:35, col:39> col:39 __errnum 'int'
| |-ParmVarDecl 0x560467f1a030 <col:49, col:61> col:61 __file 'const char *'
| |-ParmVarDecl 0x560467f1a0b0 <line:73:7, col:20> col:20 __line 'unsigned int'
| |-ParmVarDecl 0x560467f1a130 <col:28, col:40> col:40 __function 'const char *'
| `-NoThrowAttr 0x560467f58f48 </usr/include/sys/cdefs.h:79:35>
|-FunctionDecl 0x560467f591d8 </usr/include/assert.h:79:1, line:80:43> line:79:13 __assert 'void (const char *, const char *, int) __attribute__((noreturn))' extern
| |-ParmVarDecl 0x560467f58fb8 <col:23, col:35> col:35 __assertion 'const char *'
| |-ParmVarDecl 0x560467f59038 <col:48, col:60> col:60 __file 'const char *'
| |-ParmVarDecl 0x560467f590b8 <col:68, col:72> col:72 __line 'int'
| `-NoThrowAttr 0x560467f59290 </usr/include/sys/cdefs.h:79:35>
|-TypedefDecl 0x560467f59320 </usr/lib/clang/14.0.6/include/stdarg.h:14:1, col:27> col:27 referenced va_list '__builtin_va_list':'struct __va_list_tag[1]'
| `-TypedefType 0x560467f592f0 '__builtin_va_list' sugar
| |-Typedef 0x560467ec26d8 '__builtin_va_list'
| `-ConstantArrayType 0x560467ec2680 'struct __va_list_tag[1]' 1
| `-RecordType 0x560467ec24c0 'struct __va_list_tag'
| `-Record 0x560467ec2438 '__va_list_tag'
|-TypedefDecl 0x560467f59388 <line:32:1, col:27> col:27 __gnuc_va_list '__builtin_va_list':'struct __va_list_tag[1]'
| `-TypedefType 0x560467f592f0 '__builtin_va_list' sugar
| |-Typedef 0x560467ec26d8 '__builtin_va_list'
| `-ConstantArrayType 0x560467ec2680 'struct __va_list_tag[1]' 1
| `-RecordType 0x560467ec24c0 'struct __va_list_tag'
| `-Record 0x560467ec2438 '__va_list_tag'
|-TypedefDecl 0x560467f593f8 </usr/lib/clang/14.0.6/include/stddef.h:46:1, col:23> col:23 referenced size_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-FunctionDecl 0x560467f59720 </usr/include/string.h:43:14> col:14 implicit memcpy 'void *(void *, const void *, unsigned long)' extern
| |-ParmVarDecl 0x560467f59818 <<invalid sloc>> <invalid sloc> 'void *'
| |-ParmVarDecl 0x560467f59880 <<invalid sloc>> <invalid sloc> 'const void *'
| |-ParmVarDecl 0x560467f598e8 <<invalid sloc>> <invalid sloc> 'unsigned long'
| `-BuiltinAttr 0x560467f597c0 <<invalid sloc>> Implicit 805
|-FunctionDecl 0x560467f59968 prev 0x560467f59720 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:43:14 memcpy 'void *(void *, const void *, unsigned long)' extern
| |-ParmVarDecl 0x560467f59468 <col:22, col:39> col:39 __dest 'void *restrict'
| |-ParmVarDecl 0x560467f59510 <col:47, col:70> col:70 __src 'const void *restrict'
| |-ParmVarDecl 0x560467f595b0 <line:44:8, col:15> col:15 __n 'size_t':'unsigned long'
| |-BuiltinAttr 0x560467f59ab8 <<invalid sloc>> Inherited Implicit 805
| |-NoThrowAttr 0x560467f59a20 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f59a78 <line:384:57, /usr/include/string.h:44:44> 1 2
|-FunctionDecl 0x560467f5fd70 <line:47:14> col:14 implicit memmove 'void *(void *, const void *, unsigned long)' extern
| |-ParmVarDecl 0x560467f5fe68 <<invalid sloc>> <invalid sloc> 'void *'
| |-ParmVarDecl 0x560467f5fed0 <<invalid sloc>> <invalid sloc> 'const void *'
| |-ParmVarDecl 0x560467f5ff38 <<invalid sloc>> <invalid sloc> 'unsigned long'
| `-BuiltinAttr 0x560467f5fe10 <<invalid sloc>> Implicit 807
|-FunctionDecl 0x560467f5ffb8 prev 0x560467f5fd70 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:47:14 memmove 'void *(void *, const void *, unsigned long)' extern
| |-ParmVarDecl 0x560467f59af8 <col:23, col:29> col:29 __dest 'void *'
| |-ParmVarDecl 0x560467f59b78 <col:37, col:49> col:49 __src 'const void *'
| |-ParmVarDecl 0x560467f59bf0 <col:56, col:63> col:63 __n 'size_t':'unsigned long'
| |-BuiltinAttr 0x560467f60108 <<invalid sloc>> Inherited Implicit 807
| |-NoThrowAttr 0x560467f60070 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f600c8 <line:384:57, /usr/include/string.h:48:30> 1 2
|-FunctionDecl 0x560467f60450 <line:54:14> col:14 implicit memccpy 'void *(void *, const void *, int, unsigned long)' extern
| |-ParmVarDecl 0x560467f60548 <<invalid sloc>> <invalid sloc> 'void *'
| |-ParmVarDecl 0x560467f605b0 <<invalid sloc>> <invalid sloc> 'const void *'
| |-ParmVarDecl 0x560467f60618 <<invalid sloc>> <invalid sloc> 'int'
| |-ParmVarDecl 0x560467f60680 <<invalid sloc>> <invalid sloc> 'unsigned long'
| `-BuiltinAttr 0x560467f604f0 <<invalid sloc>> Implicit 869
|-FunctionDecl 0x560467f60708 prev 0x560467f60450 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:54:14 memccpy 'void *(void *, const void *, int, unsigned long)' extern
| |-ParmVarDecl 0x560467f60148 <col:23, col:40> col:40 __dest 'void *restrict'
| |-ParmVarDecl 0x560467f601c8 <col:48, col:71> col:71 __src 'const void *restrict'
| |-ParmVarDecl 0x560467f60248 <line:55:9, col:13> col:13 __c 'int'
| |-ParmVarDecl 0x560467f602c0 <col:18, col:25> col:25 __n 'size_t':'unsigned long'
| |-BuiltinAttr 0x560467f60858 <<invalid sloc>> Inherited Implicit 869
| |-NoThrowAttr 0x560467f607c8 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f60820 <line:384:57, /usr/include/string.h:56:29> 1 2
|-FunctionDecl 0x560467f60ae0 <line:61:14> col:14 implicit memset 'void *(void *, int, unsigned long)' extern
| |-ParmVarDecl 0x560467f60bd8 <<invalid sloc>> <invalid sloc> 'void *'
| |-ParmVarDecl 0x560467f60c40 <<invalid sloc>> <invalid sloc> 'int'
| |-ParmVarDecl 0x560467f60ca8 <<invalid sloc>> <invalid sloc> 'unsigned long'
| `-BuiltinAttr 0x560467f60b80 <<invalid sloc>> Implicit 823
|-FunctionDecl 0x560467f60d80 prev 0x560467f60ae0 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:61:14 memset 'void *(void *, int, unsigned long)' extern
| |-ParmVarDecl 0x560467f60898 <col:22, col:28> col:28 __s 'void *'
| |-ParmVarDecl 0x560467f60918 <col:33, col:37> col:37 __c 'int'
| |-ParmVarDecl 0x560467f60990 <col:42, col:49> col:49 __n 'size_t':'unsigned long'
| |-BuiltinAttr 0x560467f60ec8 <<invalid sloc>> Inherited Implicit 823
| |-NoThrowAttr 0x560467f60e38 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f60e90 <line:384:57, /usr/include/string.h:61:75> 1
|-FunctionDecl 0x560467f61170 <line:64:12> col:12 implicit memcmp 'int (const void *, const void *, unsigned long)' extern
| |-ParmVarDecl 0x560467f61268 <<invalid sloc>> <invalid sloc> 'const void *'
| |-ParmVarDecl 0x560467f612d0 <<invalid sloc>> <invalid sloc> 'const void *'
| |-ParmVarDecl 0x560467f61338 <<invalid sloc>> <invalid sloc> 'unsigned long'
| `-BuiltinAttr 0x560467f61210 <<invalid sloc>> Implicit 806
|-FunctionDecl 0x560467f613b8 prev 0x560467f61170 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:64:12 memcmp 'int (const void *, const void *, unsigned long)' extern
| |-ParmVarDecl 0x560467f60f08 <col:20, col:32> col:32 __s1 'const void *'
| |-ParmVarDecl 0x560467f60f88 <col:38, col:50> col:50 __s2 'const void *'
| |-ParmVarDecl 0x560467f61000 <col:56, col:63> col:63 __n 'size_t':'unsigned long'
| |-BuiltinAttr 0x560467f61528 <<invalid sloc>> Inherited Implicit 806
| |-NoThrowAttr 0x560467f61470 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f614c8 <line:308:45>
| `-NonNullAttr 0x560467f614f0 <line:384:57, /usr/include/string.h:65:49> 1 2
|-FunctionDecl 0x560467f61748 <line:80:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:80:12 __memcmpeq 'int (const void *, const void *, size_t)' extern
| |-ParmVarDecl 0x560467f61568 <col:24, col:36> col:36 __s1 'const void *'
| |-ParmVarDecl 0x560467f615e8 <col:42, col:54> col:54 __s2 'const void *'
| |-ParmVarDecl 0x560467f61660 <col:60, col:67> col:67 __n 'size_t':'unsigned long'
| |-NoThrowAttr 0x560467f61800 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f61858 <line:308:45>
| `-NonNullAttr 0x560467f61880 <line:384:57, /usr/include/string.h:81:49> 1 2
|-FunctionDecl 0x560467f61b10 <line:107:14> col:14 implicit memchr 'void *(const void *, int, unsigned long)' extern
| |-ParmVarDecl 0x560467f61c08 <<invalid sloc>> <invalid sloc> 'const void *'
| |-ParmVarDecl 0x560467f61c70 <<invalid sloc>> <invalid sloc> 'int'
| |-ParmVarDecl 0x560467f61cd8 <<invalid sloc>> <invalid sloc> 'unsigned long'
| `-BuiltinAttr 0x560467f61bb0 <<invalid sloc>> Implicit 815
|-FunctionDecl 0x560467f61d90 prev 0x560467f61b10 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:107:14 memchr 'void *(const void *, int, unsigned long)' extern
| |-ParmVarDecl 0x560467f618d0 <col:22, col:34> col:34 __s 'const void *'
| |-ParmVarDecl 0x560467f61950 <col:39, col:43> col:43 __c 'int'
| |-ParmVarDecl 0x560467f619c8 <col:48, col:55> col:55 __n 'size_t':'unsigned long'
| |-BuiltinAttr 0x560467f61f08 <<invalid sloc>> Inherited Implicit 815
| |-NoThrowAttr 0x560467f61e48 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f61ea0 <line:308:45>
| `-NonNullAttr 0x560467f61ec8 <line:384:57, /usr/include/string.h:108:47> 1
|-FunctionDecl 0x560467f62120 <line:141:14> col:14 implicit strcpy 'char *(char *, const char *)' extern
| |-ParmVarDecl 0x560467f62218 <<invalid sloc>> <invalid sloc> 'char *'
| |-ParmVarDecl 0x560467f62280 <<invalid sloc>> <invalid sloc> 'const char *'
| `-BuiltinAttr 0x560467f621c0 <<invalid sloc>> Implicit 808
|-FunctionDecl 0x560467f622f8 prev 0x560467f62120 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:141:14 strcpy 'char *(char *, const char *)' extern
| |-ParmVarDecl 0x560467f61f48 <col:22, col:39> col:39 __dest 'char *restrict'
| |-ParmVarDecl 0x560467f61fc8 <col:47, col:70> col:70 __src 'const char *restrict'
| |-BuiltinAttr 0x560467f62438 <<invalid sloc>> Inherited Implicit 808
| |-NoThrowAttr 0x560467f623a8 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f62400 <line:384:57, /usr/include/string.h:142:30> 1 2
|-FunctionDecl 0x560467f626e0 <line:144:14> col:14 implicit strncpy 'char *(char *, const char *, unsigned long)' extern
| |-ParmVarDecl 0x560467f627d8 <<invalid sloc>> <invalid sloc> 'char *'
| |-ParmVarDecl 0x560467f62840 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f628a8 <<invalid sloc>> <invalid sloc> 'unsigned long'
| `-BuiltinAttr 0x560467f62780 <<invalid sloc>> Implicit 809
|-FunctionDecl 0x560467f62928 prev 0x560467f626e0 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:144:14 strncpy 'char *(char *, const char *, unsigned long)' extern
| |-ParmVarDecl 0x560467f62478 <col:23, col:40> col:40 __dest 'char *restrict'
| |-ParmVarDecl 0x560467f624f8 <line:145:9, col:32> col:32 __src 'const char *restrict'
| |-ParmVarDecl 0x560467f62570 <col:39, col:46> col:46 __n 'size_t':'unsigned long'
| |-BuiltinAttr 0x560467f62a78 <<invalid sloc>> Inherited Implicit 809
| |-NoThrowAttr 0x560467f629e0 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f62a38 <line:384:57, /usr/include/string.h:146:30> 1 2
|-FunctionDecl 0x560467f62c18 <line:149:14> col:14 implicit strcat 'char *(char *, const char *)' extern
| |-ParmVarDecl 0x560467f62d10 <<invalid sloc>> <invalid sloc> 'char *'
| |-ParmVarDecl 0x560467f62da0 <<invalid sloc>> <invalid sloc> 'const char *'
| `-BuiltinAttr 0x560467f62cb8 <<invalid sloc>> Implicit 812
|-FunctionDecl 0x560467f62e18 prev 0x560467f62c18 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:149:14 strcat 'char *(char *, const char *)' extern
| |-ParmVarDecl 0x560467f62ab8 <col:22, col:39> col:39 __dest 'char *restrict'
| |-ParmVarDecl 0x560467f62b38 <col:47, col:70> col:70 __src 'const char *restrict'
| |-BuiltinAttr 0x560467f62f58 <<invalid sloc>> Inherited Implicit 812
| |-NoThrowAttr 0x560467f62ec8 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f62f20 <line:384:57, /usr/include/string.h:150:30> 1 2
|-FunctionDecl 0x560467f63178 <line:152:14> col:14 implicit strncat 'char *(char *, const char *, unsigned long)' extern
| |-ParmVarDecl 0x560467f63270 <<invalid sloc>> <invalid sloc> 'char *'
| |-ParmVarDecl 0x560467f632d8 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f63340 <<invalid sloc>> <invalid sloc> 'unsigned long'
| `-BuiltinAttr 0x560467f63218 <<invalid sloc>> Implicit 813
|-FunctionDecl 0x560467f633c0 prev 0x560467f63178 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:152:14 strncat 'char *(char *, const char *, unsigned long)' extern
| |-ParmVarDecl 0x560467f62f98 <col:23, col:40> col:40 __dest 'char *restrict'
| |-ParmVarDecl 0x560467f63018 <col:48, col:71> col:71 __src 'const char *restrict'
| |-ParmVarDecl 0x560467f63090 <line:153:9, col:16> col:16 __n 'size_t':'unsigned long'
| |-BuiltinAttr 0x560467f63508 <<invalid sloc>> Inherited Implicit 813
| |-NoThrowAttr 0x560467f63478 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f634d0 <line:384:57, /usr/include/string.h:153:45> 1 2
|-FunctionDecl 0x560467f636e0 <line:156:12> col:12 implicit strcmp 'int (const char *, const char *)' extern
| |-ParmVarDecl 0x560467f637d8 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f63840 <<invalid sloc>> <invalid sloc> 'const char *'
| `-BuiltinAttr 0x560467f63780 <<invalid sloc>> Implicit 810
|-FunctionDecl 0x560467f638b8 prev 0x560467f636e0 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:156:12 strcmp 'int (const char *, const char *)' extern
| |-ParmVarDecl 0x560467f63548 <col:20, col:32> col:32 __s1 'const char *'
| |-ParmVarDecl 0x560467f635c8 <col:38, col:50> col:50 __s2 'const char *'
| |-BuiltinAttr 0x560467f63a28 <<invalid sloc>> Inherited Implicit 810
| |-NoThrowAttr 0x560467f63968 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f639c0 <line:308:45>
| `-NonNullAttr 0x560467f639e8 <line:384:57, /usr/include/string.h:157:49> 1 2
|-FunctionDecl 0x560467f63cd0 <line:159:12> col:12 implicit strncmp 'int (const char *, const char *, unsigned long)' extern
| |-ParmVarDecl 0x560467f63de0 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f63e48 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f63eb0 <<invalid sloc>> <invalid sloc> 'unsigned long'
| `-BuiltinAttr 0x560467f63d70 <<invalid sloc>> Implicit 811
|-FunctionDecl 0x560467f63f30 prev 0x560467f63cd0 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:159:12 strncmp 'int (const char *, const char *, unsigned long)' extern
| |-ParmVarDecl 0x560467f63a68 <col:21, col:33> col:33 __s1 'const char *'
| |-ParmVarDecl 0x560467f63ae8 <col:39, col:51> col:51 __s2 'const char *'
| |-ParmVarDecl 0x560467f63b60 <col:57, col:64> col:64 __n 'size_t':'unsigned long'
| |-BuiltinAttr 0x560467f640a8 <<invalid sloc>> Inherited Implicit 811
| |-NoThrowAttr 0x560467f63fe8 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f64040 <line:308:45>
| `-NonNullAttr 0x560467f64068 <line:384:57, /usr/include/string.h:160:49> 1 2
|-FunctionDecl 0x560467f64248 <line:163:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:163:12 strcoll 'int (const char *, const char *)' extern
| |-ParmVarDecl 0x560467f640e8 <col:21, col:33> col:33 __s1 'const char *'
| |-ParmVarDecl 0x560467f64168 <col:39, col:51> col:51 __s2 'const char *'
| |-NoThrowAttr 0x560467f642f8 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f64350 <line:308:45>
| `-NonNullAttr 0x560467f64378 <line:384:57, /usr/include/string.h:164:49> 1 2
|-FunctionDecl 0x560467f64608 <line:166:15> col:15 implicit strxfrm 'unsigned long (char *, const char *, unsigned long)' extern
| |-ParmVarDecl 0x560467f64700 <<invalid sloc>> <invalid sloc> 'char *'
| |-ParmVarDecl 0x560467f64768 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f647d0 <<invalid sloc>> <invalid sloc> 'unsigned long'
| `-BuiltinAttr 0x560467f646a8 <<invalid sloc>> Implicit 814
|-FunctionDecl 0x560467f64850 prev 0x560467f64608 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:166:15 strxfrm 'unsigned long (char *, const char *, unsigned long)' extern
| |-ParmVarDecl 0x560467f643d0 <col:24, col:41> col:41 __dest 'char *restrict'
| |-ParmVarDecl 0x560467f64450 <line:167:10, col:33> col:33 __src 'const char *restrict'
| |-ParmVarDecl 0x560467f644c8 <col:40, col:47> col:47 __n 'size_t':'unsigned long'
| |-BuiltinAttr 0x560467f64998 <<invalid sloc>> Inherited Implicit 814
| |-NoThrowAttr 0x560467f64908 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f64960 <line:384:57, /usr/include/string.h:168:26> 2
|-RecordDecl 0x560467f649c0 </usr/include/bits/types/__locale_t.h:27:1, line:39:1> line:27:8 struct __locale_struct definition
| |-RecordDecl 0x560467f64a60 parent 0x560467ec17a8 <line:30:3, col:10> col:10 struct __locale_data
| |-FieldDecl 0x560467f64ca0 <col:3, col:37> col:25 __locales 'struct __locale_data *[13]'
| |-FieldDecl 0x560467f64d30 <line:33:3, col:29> col:29 __ctype_b 'const unsigned short *'
| |-FieldDecl 0x560467f67cf0 <line:34:3, col:14> col:14 __ctype_tolower 'const int *'
| |-FieldDecl 0x560467f67d58 <line:35:3, col:14> col:14 __ctype_toupper 'const int *'
| `-FieldDecl 0x560467f67e50 <line:38:3, col:25> col:15 __names 'const char *[13]'
|-TypedefDecl 0x560467f67f50 <line:41:1, col:33> col:33 referenced __locale_t 'struct __locale_struct *'
| `-PointerType 0x560467f67f00 'struct __locale_struct *'
| `-ElaboratedType 0x560467f67ea0 'struct __locale_struct' sugar
| `-RecordType 0x560467f64a40 'struct __locale_struct'
| `-Record 0x560467f649c0 '__locale_struct'
|-TypedefDecl 0x560467f67fe0 </usr/include/bits/types/locale_t.h:24:1, col:20> col:20 referenced locale_t '__locale_t':'struct __locale_struct *'
| `-TypedefType 0x560467f67fb0 '__locale_t' sugar
| |-Typedef 0x560467f67f50 '__locale_t'
| `-PointerType 0x560467f67f00 'struct __locale_struct *'
| `-ElaboratedType 0x560467f67ea0 'struct __locale_struct' sugar
| `-RecordType 0x560467f64a40 'struct __locale_struct'
| `-Record 0x560467f649c0 '__locale_struct'
|-FunctionDecl 0x560467f68300 </usr/include/string.h:175:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:175:12 strcoll_l 'int (const char *, const char *, locale_t)' extern
| |-ParmVarDecl 0x560467f68050 <col:23, col:35> col:35 __s1 'const char *'
| |-ParmVarDecl 0x560467f680d0 <col:41, col:53> col:53 __s2 'const char *'
| |-ParmVarDecl 0x560467f68170 <col:59, col:68> col:68 __l 'locale_t':'struct __locale_struct *'
| |-NoThrowAttr 0x560467f683b8 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f68410 <line:308:45>
| `-NonNullAttr 0x560467f68438 <line:384:57, /usr/include/string.h:176:52> 1 2 3
|-FunctionDecl 0x560467f68788 <line:179:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:179:15 strxfrm_l 'size_t (char *, const char *, size_t, locale_t)' extern
| |-ParmVarDecl 0x560467f68498 <col:26, col:32> col:32 __dest 'char *'
| |-ParmVarDecl 0x560467f68518 <col:40, col:52> col:52 __src 'const char *'
| |-ParmVarDecl 0x560467f68590 <col:59, col:66> col:66 __n 'size_t':'unsigned long'
| |-ParmVarDecl 0x560467f68608 <line:180:5, col:14> col:14 __l 'locale_t':'struct __locale_struct *'
| |-NoThrowAttr 0x560467f68848 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f688a0 <line:384:57, /usr/include/string.h:180:43> 2 4
|-FunctionDecl 0x560467f689e0 <line:187:14> col:14 implicit strdup 'char *(const char *)' extern
| |-ParmVarDecl 0x560467f68ad8 <<invalid sloc>> <invalid sloc> 'const char *'
| `-BuiltinAttr 0x560467f68a80 <<invalid sloc>> Implicit 873
|-FunctionDecl 0x560467f68b48 prev 0x560467f689e0 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:187:14 strdup 'char *(const char *)' extern
| |-ParmVarDecl 0x560467f688f0 <col:22, col:34> col:34 __s 'const char *'
| |-BuiltinAttr 0x560467f68ca8 <<invalid sloc>> Inherited Implicit 873
| |-NoThrowAttr 0x560467f68bf0 </usr/include/sys/cdefs.h:79:35>
| |-RestrictAttr 0x560467f68c48 <line:281:47> malloc
| `-NonNullAttr 0x560467f68c70 <line:384:57, /usr/include/string.h:188:48> 1
|-FunctionDecl 0x560467f68eb0 <line:195:14> col:14 implicit strndup 'char *(const char *, unsigned long)' extern
| |-ParmVarDecl 0x560467f68fa8 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f69010 <<invalid sloc>> <invalid sloc> 'unsigned long'
| `-BuiltinAttr 0x560467f68f50 <<invalid sloc>> Implicit 874
|-FunctionDecl 0x560467f69088 prev 0x560467f68eb0 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:195:14 strndup 'char *(const char *, unsigned long)' extern
| |-ParmVarDecl 0x560467f68d00 <col:23, col:35> col:35 __string 'const char *'
| |-ParmVarDecl 0x560467f68d78 <col:45, col:52> col:52 __n 'size_t':'unsigned long'
| |-BuiltinAttr 0x560467f691f8 <<invalid sloc>> Inherited Implicit 874
| |-NoThrowAttr 0x560467f69138 </usr/include/sys/cdefs.h:79:35>
| |-RestrictAttr 0x560467f69190 <line:281:47> malloc
| `-NonNullAttr 0x560467f691b8 <line:384:57, /usr/include/string.h:196:48> 1
|-FunctionDecl 0x560467f693b0 <line:246:14> col:14 implicit strchr 'char *(const char *, int)' extern
| |-ParmVarDecl 0x560467f694a8 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f69510 <<invalid sloc>> <invalid sloc> 'int'
| `-BuiltinAttr 0x560467f69450 <<invalid sloc>> Implicit 816
|-FunctionDecl 0x560467f69588 prev 0x560467f693b0 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:246:14 strchr 'char *(const char *, int)' extern
| |-ParmVarDecl 0x560467f69238 <col:22, col:34> col:34 __s 'const char *'
| |-ParmVarDecl 0x560467f692b8 <col:39, col:43> col:43 __c 'int'
| |-BuiltinAttr 0x560467f696f8 <<invalid sloc>> Inherited Implicit 816
| |-NoThrowAttr 0x560467f69638 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f69690 <line:308:45>
| `-NonNullAttr 0x560467f696b8 <line:384:57, /usr/include/string.h:247:46> 1
|-FunctionDecl 0x560467f69878 <line:273:14> col:14 implicit strrchr 'char *(const char *, int)' extern
| |-ParmVarDecl 0x560467f69970 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f699d8 <<invalid sloc>> <invalid sloc> 'int'
| `-BuiltinAttr 0x560467f69918 <<invalid sloc>> Implicit 819
|-FunctionDecl 0x560467f69a50 prev 0x560467f69878 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:273:14 strrchr 'char *(const char *, int)' extern
| |-ParmVarDecl 0x560467f69738 <col:23, col:35> col:35 __s 'const char *'
| |-ParmVarDecl 0x560467f697b8 <col:40, col:44> col:44 __c 'int'
| |-BuiltinAttr 0x560467f69bb8 <<invalid sloc>> Inherited Implicit 819
| |-NoThrowAttr 0x560467f69b00 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f69b58 <line:308:45>
| `-NonNullAttr 0x560467f69b80 <line:384:57, /usr/include/string.h:274:46> 1
|-FunctionDecl 0x560467f69dd8 <line:293:15> col:15 implicit strcspn 'unsigned long (const char *, const char *)' extern
| |-ParmVarDecl 0x560467f69ed0 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f69f38 <<invalid sloc>> <invalid sloc> 'const char *'
| `-BuiltinAttr 0x560467f69e78 <<invalid sloc>> Implicit 817
|-FunctionDecl 0x560467f69fb0 prev 0x560467f69dd8 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:293:15 strcspn 'unsigned long (const char *, const char *)' extern
| |-ParmVarDecl 0x560467f69bf8 <col:24, col:36> col:36 __s 'const char *'
| |-ParmVarDecl 0x560467f69c78 <col:41, col:53> col:53 __reject 'const char *'
| |-BuiltinAttr 0x560467f6a118 <<invalid sloc>> Inherited Implicit 817
| |-NoThrowAttr 0x560467f6a060 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f6a0b8 <line:308:45>
| `-NonNullAttr 0x560467f6a0e0 <line:384:57, /usr/include/string.h:294:49> 1 2
|-FunctionDecl 0x560467f6a2b0 <line:297:15> col:15 implicit strspn 'unsigned long (const char *, const char *)' extern
| |-ParmVarDecl 0x560467f6a3a8 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f6a410 <<invalid sloc>> <invalid sloc> 'const char *'
| `-BuiltinAttr 0x560467f6a350 <<invalid sloc>> Implicit 820
|-FunctionDecl 0x560467f6a488 prev 0x560467f6a2b0 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:297:15 strspn 'unsigned long (const char *, const char *)' extern
| |-ParmVarDecl 0x560467f6a158 <col:23, col:35> col:35 __s 'const char *'
| |-ParmVarDecl 0x560467f6a1d8 <col:40, col:52> col:52 __accept 'const char *'
| |-BuiltinAttr 0x560467f6a5f8 <<invalid sloc>> Inherited Implicit 820
| |-NoThrowAttr 0x560467f6a538 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f6a590 <line:308:45>
| `-NonNullAttr 0x560467f6a5b8 <line:384:57, /usr/include/string.h:298:49> 1 2
|-FunctionDecl 0x560467f6a7d0 <line:323:14> col:14 implicit strpbrk 'char *(const char *, const char *)' extern
| |-ParmVarDecl 0x560467f6a8c8 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f6a930 <<invalid sloc>> <invalid sloc> 'const char *'
| `-BuiltinAttr 0x560467f6a870 <<invalid sloc>> Implicit 818
|-FunctionDecl 0x560467f6a9a8 prev 0x560467f6a7d0 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:323:14 strpbrk 'char *(const char *, const char *)' extern
| |-ParmVarDecl 0x560467f6a638 <col:23, col:35> col:35 __s 'const char *'
| |-ParmVarDecl 0x560467f6a6b8 <col:40, col:52> col:52 __accept 'const char *'
| |-BuiltinAttr 0x560467f6ab18 <<invalid sloc>> Inherited Implicit 818
| |-NoThrowAttr 0x560467f6aa58 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f6aab0 <line:308:45>
| `-NonNullAttr 0x560467f6aad8 <line:384:57, /usr/include/string.h:324:49> 1 2
|-FunctionDecl 0x560467f6bd30 <line:350:14> col:14 implicit strstr 'char *(const char *, const char *)' extern
| |-ParmVarDecl 0x560467f6be28 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f6be90 <<invalid sloc>> <invalid sloc> 'const char *'
| `-BuiltinAttr 0x560467f6bdd0 <<invalid sloc>> Implicit 821
|-FunctionDecl 0x560467f6bf08 prev 0x560467f6bd30 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:350:14 strstr 'char *(const char *, const char *)' extern
| |-ParmVarDecl 0x560467f6ab58 <col:22, col:34> col:34 __haystack 'const char *'
| |-ParmVarDecl 0x560467f6abd8 <col:46, col:58> col:58 __needle 'const char *'
| |-BuiltinAttr 0x560467f6c078 <<invalid sloc>> Inherited Implicit 821
| |-NoThrowAttr 0x560467f6bfb8 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f6c010 <line:308:45>
| `-NonNullAttr 0x560467f6c038 <line:384:57, /usr/include/string.h:351:49> 1 2
|-FunctionDecl 0x560467f6c1f8 <line:356:14> col:14 implicit strtok 'char *(char *, const char *)' extern
| |-ParmVarDecl 0x560467f6c2f0 <<invalid sloc>> <invalid sloc> 'char *'
| |-ParmVarDecl 0x560467f6c358 <<invalid sloc>> <invalid sloc> 'const char *'
| `-BuiltinAttr 0x560467f6c298 <<invalid sloc>> Implicit 822
|-FunctionDecl 0x560467f6c3d0 prev 0x560467f6c1f8 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:356:14 strtok 'char *(char *, const char *)' extern
| |-ParmVarDecl 0x560467f6c0b8 <col:22, col:39> col:39 __s 'char *restrict'
| |-ParmVarDecl 0x560467f6c138 <col:44, col:67> col:67 __delim 'const char *restrict'
| |-BuiltinAttr 0x560467f6c518 <<invalid sloc>> Inherited Implicit 822
| |-NoThrowAttr 0x560467f6c480 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f6c4d8 <line:384:57, /usr/include/string.h:357:27> 2
|-FunctionDecl 0x560467f6c7f0 <line:361:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:361:14 __strtok_r 'char *(char *restrict, const char *restrict, char **restrict)' extern
| |-ParmVarDecl 0x560467f6c558 <col:26, col:43> col:43 __s 'char *restrict'
| |-ParmVarDecl 0x560467f6c5d8 <line:362:5, col:28> col:28 __delim 'const char *restrict'
| |-ParmVarDecl 0x560467f6c680 <line:363:5, col:23> col:23 __save_ptr 'char **restrict'
| |-NoThrowAttr 0x560467f6c8a8 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f6c900 <line:384:57, /usr/include/string.h:364:30> 2 3
|-FunctionDecl 0x560467f6cb38 <line:366:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:366:14 strtok_r 'char *(char *restrict, const char *restrict, char **restrict)' extern
| |-ParmVarDecl 0x560467f6c950 <col:24, col:41> col:41 __s 'char *restrict'
| |-ParmVarDecl 0x560467f6c9d0 <col:46, col:69> col:69 __delim 'const char *restrict'
| |-ParmVarDecl 0x560467f6ca50 <line:367:10, col:28> col:28 __save_ptr 'char **restrict'
| |-NoThrowAttr 0x560467f6cbf0 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f6cc48 <line:384:57, /usr/include/string.h:368:30> 2 3
|-FunctionDecl 0x560467f54e38 <line:407:15> col:15 implicit strlen 'unsigned long (const char *)' extern
| |-ParmVarDecl 0x560467f54f30 <<invalid sloc>> <invalid sloc> 'const char *'
| `-BuiltinAttr 0x560467f54ed8 <<invalid sloc>> Implicit 825
|-FunctionDecl 0x560467f54fa0 prev 0x560467f54e38 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:407:15 strlen 'unsigned long (const char *)' extern
| |-ParmVarDecl 0x560467f6cca0 <col:23, col:35> col:35 __s 'const char *'
| |-BuiltinAttr 0x560467f55108 <<invalid sloc>> Inherited Implicit 825
| |-NoThrowAttr 0x560467f55048 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f550a0 <line:308:45>
| `-NonNullAttr 0x560467f550c8 <line:384:57, /usr/include/string.h:408:46> 1
|-FunctionDecl 0x560467f552f8 <line:413:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:413:15 strnlen 'size_t (const char *, size_t)' extern
| |-ParmVarDecl 0x560467f55148 <col:24, col:36> col:36 __string 'const char *'
| |-ParmVarDecl 0x560467f551c0 <col:46, col:53> col:53 __maxlen 'size_t':'unsigned long'
| |-NoThrowAttr 0x560467f553a8 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f55400 <line:308:45>
| `-NonNullAttr 0x560467f55428 <line:384:57, /usr/include/string.h:414:46> 1
|-FunctionDecl 0x560467f55550 <line:419:14> col:14 implicit strerror 'char *(int)' extern
| |-ParmVarDecl 0x560467f55648 <<invalid sloc>> <invalid sloc> 'int'
| `-BuiltinAttr 0x560467f555f0 <<invalid sloc>> Implicit 824
|-FunctionDecl 0x560467f556b8 prev 0x560467f55550 <col:1, /usr/include/sys/cdefs.h:79:54> /usr/include/string.h:419:14 strerror 'char *(int)' extern
| |-ParmVarDecl 0x560467f55480 <col:24, col:28> col:28 __errnum 'int'
| |-BuiltinAttr 0x560467f557b8 <<invalid sloc>> Inherited Implicit 824
| `-NoThrowAttr 0x560467f55760 </usr/include/sys/cdefs.h:79:35>
|-FunctionDecl 0x560467f55ab0 </usr/include/string.h:432:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:432:28 strerror_r 'int (int, char *, size_t)' extern
| |-ParmVarDecl 0x560467f557f8 <line:433:8, col:12> col:12 __errnum 'int'
| |-ParmVarDecl 0x560467f55878 <col:22, col:28> col:28 __buf 'char *'
| |-ParmVarDecl 0x560467f558f0 <col:35, col:42> col:42 __buflen 'size_t':'unsigned long'
| |-AsmLabelAttr 0x560467f55b50 <<scratch space>:33:1> "__xpg_strerror_r" IsLiteralLabel
| |-NoThrowAttr 0x560467f55be0 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f55c08 <line:384:57, /usr/include/string.h:434:38> 2
|-FunctionDecl 0x560467f56630 <line:458:1, /usr/include/sys/cdefs.h:79:54> /usr/include/string.h:458:14 strerror_l 'char *(int, locale_t)' extern
| |-ParmVarDecl 0x560467f55c60 <col:26, col:30> col:30 __errnum 'int'
| |-ParmVarDecl 0x560467f55cd8 <col:40, col:49> col:49 __l 'locale_t':'struct __locale_struct *'
| `-NoThrowAttr 0x560467f566e0 </usr/include/sys/cdefs.h:79:35>
|-FunctionDecl 0x560467f56930 </usr/include/strings.h:34:12> col:12 implicit bcmp 'int (const void *, const void *, unsigned long)' extern
| |-ParmVarDecl 0x560467f56a28 <<invalid sloc>> <invalid sloc> 'const void *'
| |-ParmVarDecl 0x560467f56a90 <<invalid sloc>> <invalid sloc> 'const void *'
| |-ParmVarDecl 0x560467f56af8 <<invalid sloc>> <invalid sloc> 'unsigned long'
| `-BuiltinAttr 0x560467f569d0 <<invalid sloc>> Implicit 878
|-FunctionDecl 0x560467f56b78 prev 0x560467f56930 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/strings.h:34:12 bcmp 'int (const void *, const void *, unsigned long)' extern
| |-ParmVarDecl 0x560467f56750 <col:18, col:30> col:30 __s1 'const void *'
| |-ParmVarDecl 0x560467f567d0 <col:36, col:48> col:48 __s2 'const void *'
| |-ParmVarDecl 0x560467f56848 <col:54, col:61> col:61 __n 'size_t':'unsigned long'
| |-BuiltinAttr 0x560467f56ce8 <<invalid sloc>> Inherited Implicit 878
| |-NoThrowAttr 0x560467f56c30 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f56c88 <line:308:45>
| `-NonNullAttr 0x560467f56cb0 <line:384:57, /usr/include/strings.h:35:49> 1 2
|-FunctionDecl 0x560467f56f88 <line:38:1, /usr/include/sys/cdefs.h:384:76> /usr/include/strings.h:38:13 bcopy 'void (const void *, void *, size_t)' extern
| |-ParmVarDecl 0x560467f56d28 <col:20, col:32> col:32 __src 'const void *'
| |-ParmVarDecl 0x560467f56da8 <col:39, col:45> col:45 __dest 'void *'
| |-ParmVarDecl 0x560467f56e20 <col:53, col:60> col:60 __n 'size_t':'unsigned long'
| |-NoThrowAttr 0x560467f57040 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f57098 <line:384:57, /usr/include/strings.h:39:27> 1 2
|-FunctionDecl 0x560467f57298 <line:42:13> col:13 implicit bzero 'void (void *, unsigned long)' extern
| |-ParmVarDecl 0x560467f57390 <<invalid sloc>> <invalid sloc> 'void *'
| |-ParmVarDecl 0x560467f573f8 <<invalid sloc>> <invalid sloc> 'unsigned long'
| `-BuiltinAttr 0x560467f57338 <<invalid sloc>> Implicit 877
|-FunctionDecl 0x560467f57470 prev 0x560467f57298 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/strings.h:42:13 bzero 'void (void *, unsigned long)' extern
| |-ParmVarDecl 0x560467f570f0 <col:20, col:26> col:26 __s 'void *'
| |-ParmVarDecl 0x560467f57168 <col:31, col:38> col:38 __n 'size_t':'unsigned long'
| |-BuiltinAttr 0x560467f75010 <<invalid sloc>> Inherited Implicit 877
| |-NoThrowAttr 0x560467f57520 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f57578 <line:384:57, /usr/include/strings.h:42:64> 1
|-FunctionDecl 0x560467f75190 <line:68:14> col:14 implicit index 'char *(const char *, int)' extern
| |-ParmVarDecl 0x560467f75288 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f752f0 <<invalid sloc>> <invalid sloc> 'int'
| `-BuiltinAttr 0x560467f75230 <<invalid sloc>> Implicit 875
|-FunctionDecl 0x560467f75368 prev 0x560467f75190 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/strings.h:68:14 index 'char *(const char *, int)' extern
| |-ParmVarDecl 0x560467f75050 <col:21, col:33> col:33 __s 'const char *'
| |-ParmVarDecl 0x560467f750d0 <col:38, col:42> col:42 __c 'int'
| |-BuiltinAttr 0x560467f754d8 <<invalid sloc>> Inherited Implicit 875
| |-NoThrowAttr 0x560467f75418 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f75470 <line:308:45>
| `-NonNullAttr 0x560467f75498 <line:384:57, /usr/include/strings.h:69:46> 1
|-FunctionDecl 0x560467f75658 <line:96:14> col:14 implicit rindex 'char *(const char *, int)' extern
| |-ParmVarDecl 0x560467f75750 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f757b8 <<invalid sloc>> <invalid sloc> 'int'
| `-BuiltinAttr 0x560467f756f8 <<invalid sloc>> Implicit 876
|-FunctionDecl 0x560467f75830 prev 0x560467f75658 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/strings.h:96:14 rindex 'char *(const char *, int)' extern
| |-ParmVarDecl 0x560467f75518 <col:22, col:34> col:34 __s 'const char *'
| |-ParmVarDecl 0x560467f75598 <col:39, col:43> col:43 __c 'int'
| |-BuiltinAttr 0x560467f75998 <<invalid sloc>> Inherited Implicit 876
| |-NoThrowAttr 0x560467f758e0 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f75938 <line:308:45>
| `-NonNullAttr 0x560467f75960 <line:384:57, /usr/include/strings.h:97:46> 1
|-FunctionDecl 0x560467f75aa0 <line:104:1, /usr/include/sys/cdefs.h:315:56> /usr/include/strings.h:104:12 ffs 'int (int)' extern
| |-ParmVarDecl 0x560467f759d8 <col:17, col:21> col:21 __i 'int'
| |-NoThrowAttr 0x560467f75b48 </usr/include/sys/cdefs.h:79:35>
| `-ConstAttr 0x560467f75ba0 <line:315:46>
|-FunctionDecl 0x560467f75cb0 </usr/include/strings.h:110:1, /usr/include/sys/cdefs.h:315:56> /usr/include/strings.h:110:12 ffsl 'int (long)' extern
| |-ParmVarDecl 0x560467f75be0 <col:18, col:27> col:27 __l 'long'
| |-NoThrowAttr 0x560467f75d58 </usr/include/sys/cdefs.h:79:35>
| `-ConstAttr 0x560467f75db0 <line:315:46>
|-FunctionDecl 0x560467f75ec0 </usr/include/strings.h:111:15, /usr/include/sys/cdefs.h:315:56> /usr/include/strings.h:111:26 ffsll 'int (long long)' extern
| |-ParmVarDecl 0x560467f75df0 <col:33, col:47> col:47 __ll 'long long'
| |-NoThrowAttr 0x560467f75f68 </usr/include/sys/cdefs.h:79:35>
| `-ConstAttr 0x560467f75fc0 <line:315:46>
|-FunctionDecl 0x560467f76180 </usr/include/strings.h:116:12> col:12 implicit strcasecmp 'int (const char *, const char *)' extern
| |-ParmVarDecl 0x560467f76278 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f762e0 <<invalid sloc>> <invalid sloc> 'const char *'
| `-BuiltinAttr 0x560467f76220 <<invalid sloc>> Implicit 879
|-FunctionDecl 0x560467f76358 prev 0x560467f76180 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/strings.h:116:12 strcasecmp 'int (const char *, const char *)' extern
| |-ParmVarDecl 0x560467f76020 <col:24, col:36> col:36 __s1 'const char *'
| |-ParmVarDecl 0x560467f760a0 <col:42, col:54> col:54 __s2 'const char *'
| |-BuiltinAttr 0x560467f764c8 <<invalid sloc>> Inherited Implicit 879
| |-NoThrowAttr 0x560467f76408 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f76460 <line:308:45>
| `-NonNullAttr 0x560467f76488 <line:384:57, /usr/include/strings.h:117:49> 1 2
|-FunctionDecl 0x560467f766e8 <line:120:12> col:12 implicit strncasecmp 'int (const char *, const char *, unsigned long)' extern
| |-ParmVarDecl 0x560467f767e0 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f76848 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f768b0 <<invalid sloc>> <invalid sloc> 'unsigned long'
| `-BuiltinAttr 0x560467f76788 <<invalid sloc>> Implicit 880
|-FunctionDecl 0x560467f76930 prev 0x560467f766e8 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/strings.h:120:12 strncasecmp 'int (const char *, const char *, unsigned long)' extern
| |-ParmVarDecl 0x560467f76508 <col:25, col:37> col:37 __s1 'const char *'
| |-ParmVarDecl 0x560467f76588 <col:43, col:55> col:55 __s2 'const char *'
| |-ParmVarDecl 0x560467f76600 <col:61, col:68> col:68 __n 'size_t':'unsigned long'
| |-BuiltinAttr 0x560467f76aa8 <<invalid sloc>> Inherited Implicit 880
| |-NoThrowAttr 0x560467f769e8 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f76a40 <line:308:45>
| `-NonNullAttr 0x560467f76a68 <line:384:57, /usr/include/strings.h:121:49> 1 2
|-FunctionDecl 0x560467f76ce8 <line:128:1, /usr/include/sys/cdefs.h:384:76> /usr/include/strings.h:128:12 strcasecmp_l 'int (const char *, const char *, locale_t)' extern
| |-ParmVarDecl 0x560467f76ae8 <col:26, col:38> col:38 __s1 'const char *'
| |-ParmVarDecl 0x560467f76b68 <col:44, col:56> col:56 __s2 'const char *'
| |-ParmVarDecl 0x560467f76be0 <col:62, col:71> col:71 __loc 'locale_t':'struct __locale_struct *'
| |-NoThrowAttr 0x560467f76da0 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f76df8 <line:308:45>
| `-NonNullAttr 0x560467f76e20 <line:384:57, /usr/include/strings.h:129:52> 1 2 3
|-FunctionDecl 0x560467f771e0 <line:133:1, /usr/include/sys/cdefs.h:384:76> /usr/include/strings.h:133:12 strncasecmp_l 'int (const char *, const char *, size_t, locale_t)' extern
| |-ParmVarDecl 0x560467f76e78 <col:27, col:39> col:39 __s1 'const char *'
| |-ParmVarDecl 0x560467f76ef8 <col:45, col:57> col:57 __s2 'const char *'
| |-ParmVarDecl 0x560467f76f70 <line:134:6, col:13> col:13 __n 'size_t':'unsigned long'
| |-ParmVarDecl 0x560467f77030 <col:18, col:27> col:27 __loc 'locale_t':'struct __locale_struct *'
| |-NoThrowAttr 0x560467f772a0 </usr/include/sys/cdefs.h:79:35>
| |-PureAttr 0x560467f772f8 <line:308:45>
| `-NonNullAttr 0x560467f77320 <line:384:57, /usr/include/strings.h:135:52> 1 2 4
|-FunctionDecl 0x560467f774a8 </usr/include/string.h:466:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:466:13 explicit_bzero 'void (void *, size_t)' extern
| |-ParmVarDecl 0x560467f77378 <col:29, col:35> col:35 __s 'void *'
| |-ParmVarDecl 0x560467f773f0 <col:40, col:47> col:47 __n 'size_t':'unsigned long'
| |-NoThrowAttr 0x560467f77558 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f775b0 <line:384:57, /usr/include/string.h:466:73> 1
|-FunctionDecl 0x560467f777e0 <line:471:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:471:14 strsep 'char *(char **restrict, const char *restrict)' extern
| |-ParmVarDecl 0x560467f77600 <col:22, col:40> col:40 __stringp 'char **restrict'
| |-ParmVarDecl 0x560467f77680 <line:472:8, col:31> col:31 __delim 'const char *restrict'
| |-NoThrowAttr 0x560467f77890 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f778e8 <line:384:57, /usr/include/string.h:473:30> 1 2
|-FunctionDecl 0x560467f779d8 <line:478:1, /usr/include/sys/cdefs.h:79:54> /usr/include/string.h:478:14 strsignal 'char *(int)' extern
| |-ParmVarDecl 0x560467f77940 <col:25, col:29> col:29 __sig 'int'
| `-NoThrowAttr 0x560467f77a80 </usr/include/sys/cdefs.h:79:35>
|-FunctionDecl 0x560467f77c50 </usr/include/string.h:489:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:489:14 __stpcpy 'char *(char *restrict, const char *restrict)' extern
| |-ParmVarDecl 0x560467f77af0 <col:24, col:41> col:41 __dest 'char *restrict'
| |-ParmVarDecl 0x560467f77b70 <col:49, col:72> col:72 __src 'const char *restrict'
| |-NoThrowAttr 0x560467f77d00 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f77d58 <line:384:57, /usr/include/string.h:490:30> 1 2
|-FunctionDecl 0x560467f77f10 <line:491:14> col:14 implicit stpcpy 'char *(char *, const char *)' extern
| |-ParmVarDecl 0x560467f78040 <<invalid sloc>> <invalid sloc> 'char *'
| |-ParmVarDecl 0x560467f780a8 <<invalid sloc>> <invalid sloc> 'const char *'
| `-BuiltinAttr 0x560467f77fb0 <<invalid sloc>> Implicit 871
|-FunctionDecl 0x560467f78120 prev 0x560467f77f10 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:491:14 stpcpy 'char *(char *, const char *)' extern
| |-ParmVarDecl 0x560467f77db0 <col:22, col:39> col:39 __dest 'char *restrict'
| |-ParmVarDecl 0x560467f77e30 <col:47, col:70> col:70 __src 'const char *restrict'
| |-BuiltinAttr 0x560467f78268 <<invalid sloc>> Inherited Implicit 871
| |-NoThrowAttr 0x560467f781d0 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f78228 <line:384:57, /usr/include/string.h:492:30> 1 2
|-FunctionDecl 0x560467f78488 <line:496:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:496:14 __stpncpy 'char *(char *restrict, const char *restrict, size_t)' extern
| |-ParmVarDecl 0x560467f782a8 <col:25, col:42> col:42 __dest 'char *restrict'
| |-ParmVarDecl 0x560467f78328 <line:497:4, col:27> col:27 __src 'const char *restrict'
| |-ParmVarDecl 0x560467f783a0 <col:34, col:41> col:41 __n 'size_t':'unsigned long'
| |-NoThrowAttr 0x560467f78540 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f78598 <line:384:57, /usr/include/string.h:498:30> 1 2
|-FunctionDecl 0x560467f787d0 <line:499:14> col:14 implicit stpncpy 'char *(char *, const char *, unsigned long)' extern
| |-ParmVarDecl 0x560467f788c8 <<invalid sloc>> <invalid sloc> 'char *'
| |-ParmVarDecl 0x560467f78930 <<invalid sloc>> <invalid sloc> 'const char *'
| |-ParmVarDecl 0x560467f78998 <<invalid sloc>> <invalid sloc> 'unsigned long'
| `-BuiltinAttr 0x560467f78870 <<invalid sloc>> Implicit 872
|-FunctionDecl 0x560467f78a18 prev 0x560467f787d0 <col:1, /usr/include/sys/cdefs.h:384:76> /usr/include/string.h:499:14 stpncpy 'char *(char *, const char *, unsigned long)' extern
| |-ParmVarDecl 0x560467f785f0 <col:23, col:40> col:40 __dest 'char *restrict'
| |-ParmVarDecl 0x560467f78670 <line:500:9, col:32> col:32 __src 'const char *restrict'
| |-ParmVarDecl 0x560467f786e8 <col:39, col:46> col:46 __n 'size_t':'unsigned long'
| |-BuiltinAttr 0x560467f78b68 <<invalid sloc>> Inherited Implicit 872
| |-NoThrowAttr 0x560467f78ad0 </usr/include/sys/cdefs.h:79:35>
| `-NonNullAttr 0x560467f78b28 <line:384:57, /usr/include/string.h:501:30> 1 2
|-TypedefDecl 0x560467f78ba8 </usr/include/bits/types.h:31:1, col:23> col:23 __u_char 'unsigned char'
| `-BuiltinType 0x560467ec1910 'unsigned char'
|-TypedefDecl 0x560467f78c18 <line:32:1, col:28> col:28 __u_short 'unsigned short'
| `-BuiltinType 0x560467ec1930 'unsigned short'
|-TypedefDecl 0x560467f78c88 <line:33:1, col:22> col:22 __u_int 'unsigned int'
| `-BuiltinType 0x560467ec1950 'unsigned int'
|-TypedefDecl 0x560467f78cf8 <line:34:1, col:27> col:27 __u_long 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f78d68 <line:37:1, col:21> col:21 referenced __int8_t 'signed char'
| `-BuiltinType 0x560467ec1870 'signed char'
|-TypedefDecl 0x560467f78dd8 <line:38:1, col:23> col:23 referenced __uint8_t 'unsigned char'
| `-BuiltinType 0x560467ec1910 'unsigned char'
|-TypedefDecl 0x560467f78e48 <line:39:1, col:26> col:26 referenced __int16_t 'short'
| `-BuiltinType 0x560467ec1890 'short'
|-TypedefDecl 0x560467f78eb8 <line:40:1, col:28> col:28 referenced __uint16_t 'unsigned short'
| `-BuiltinType 0x560467ec1930 'unsigned short'
|-TypedefDecl 0x560467f78f28 <line:41:1, col:20> col:20 referenced __int32_t 'int'
| `-BuiltinType 0x560467ec18b0 'int'
|-TypedefDecl 0x560467f78f98 <line:42:1, col:22> col:22 referenced __uint32_t 'unsigned int'
| `-BuiltinType 0x560467ec1950 'unsigned int'
|-TypedefDecl 0x560467f7e470 <line:44:1, col:25> col:25 referenced __int64_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f7e4e0 <line:45:1, col:27> col:27 referenced __uint64_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f7e570 <line:52:1, col:18> col:18 referenced __int_least8_t '__int8_t':'signed char'
| `-TypedefType 0x560467f7e540 '__int8_t' sugar
| |-Typedef 0x560467f78d68 '__int8_t'
| `-BuiltinType 0x560467ec1870 'signed char'
|-TypedefDecl 0x560467f7e600 <line:53:1, col:19> col:19 referenced __uint_least8_t '__uint8_t':'unsigned char'
| `-TypedefType 0x560467f7e5d0 '__uint8_t' sugar
| |-Typedef 0x560467f78dd8 '__uint8_t'
| `-BuiltinType 0x560467ec1910 'unsigned char'
|-TypedefDecl 0x560467f7e690 <line:54:1, col:19> col:19 referenced __int_least16_t '__int16_t':'short'
| `-TypedefType 0x560467f7e660 '__int16_t' sugar
| |-Typedef 0x560467f78e48 '__int16_t'
| `-BuiltinType 0x560467ec1890 'short'
|-TypedefDecl 0x560467f7e720 <line:55:1, col:20> col:20 referenced __uint_least16_t '__uint16_t':'unsigned short'
| `-TypedefType 0x560467f7e6f0 '__uint16_t' sugar
| |-Typedef 0x560467f78eb8 '__uint16_t'
| `-BuiltinType 0x560467ec1930 'unsigned short'
|-TypedefDecl 0x560467f7e7b0 <line:56:1, col:19> col:19 referenced __int_least32_t '__int32_t':'int'
| `-TypedefType 0x560467f7e780 '__int32_t' sugar
| |-Typedef 0x560467f78f28 '__int32_t'
| `-BuiltinType 0x560467ec18b0 'int'
|-TypedefDecl 0x560467f7e840 <line:57:1, col:20> col:20 referenced __uint_least32_t '__uint32_t':'unsigned int'
| `-TypedefType 0x560467f7e810 '__uint32_t' sugar
| |-Typedef 0x560467f78f98 '__uint32_t'
| `-BuiltinType 0x560467ec1950 'unsigned int'
|-TypedefDecl 0x560467f7e8d0 <line:58:1, col:19> col:19 referenced __int_least64_t '__int64_t':'long'
| `-TypedefType 0x560467f7e8a0 '__int64_t' sugar
| |-Typedef 0x560467f7e470 '__int64_t'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f7e960 <line:59:1, col:20> col:20 referenced __uint_least64_t '__uint64_t':'unsigned long'
| `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| |-Typedef 0x560467f7e4e0 '__uint64_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f7e9d0 <line:63:1, col:18> col:18 __quad_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f7ea40 <line:64:1, col:27> col:27 __u_quad_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f7eab0 <line:72:1, col:18> col:18 referenced __intmax_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f7eb20 <line:73:1, col:27> col:27 referenced __uintmax_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f7eb90 <line:137:22, line:145:25> col:25 __dev_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f7ec00 <line:137:22, line:146:25> col:25 __uid_t 'unsigned int'
| `-BuiltinType 0x560467ec1950 'unsigned int'
|-TypedefDecl 0x560467f7ec70 <line:137:22, line:147:25> col:25 __gid_t 'unsigned int'
| `-BuiltinType 0x560467ec1950 'unsigned int'
|-TypedefDecl 0x560467f7ece0 <line:137:22, line:148:25> col:25 __ino_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f7ed50 <line:137:22, line:149:27> col:27 __ino64_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f7edc0 <line:137:22, line:150:26> col:26 __mode_t 'unsigned int'
| `-BuiltinType 0x560467ec1950 'unsigned int'
|-TypedefDecl 0x560467f7ee30 <line:137:22, line:151:27> col:27 __nlink_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f7eea0 <line:137:22, line:152:25> col:25 __off_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f7ef10 <line:137:22, line:153:27> col:27 referenced __off64_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f7ef80 <line:137:22, line:154:25> col:25 __pid_t 'int'
| `-BuiltinType 0x560467ec18b0 'int'
|-RecordDecl 0x560467f7efd8 </usr/include/bits/typesizes.h:73:24, col:47> col:24 struct definition
| `-FieldDecl 0x560467f7f120 <col:33, col:44> col:37 __val 'int[2]'
|-TypedefDecl 0x560467f7f1c8 </usr/include/bits/types.h:137:22, line:155:26> col:26 __fsid_t 'struct __fsid_t':'__fsid_t'
| `-ElaboratedType 0x560467f7f170 'struct __fsid_t' sugar
| `-RecordType 0x560467f7f060 '__fsid_t'
| `-Record 0x560467f7efd8 ''
|-TypedefDecl 0x560467f7f250 <line:137:22, line:156:27> col:27 __clock_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f7f2c0 <line:137:22, line:157:26> col:26 __rlim_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f7f330 <line:137:22, line:158:28> col:28 __rlim64_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f7f3a0 <line:137:22, line:159:24> col:24 __id_t 'unsigned int'
| `-BuiltinType 0x560467ec1950 'unsigned int'
|-TypedefDecl 0x560467f7f410 <line:137:22, line:160:26> col:26 __time_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f87188 <line:137:22, line:161:30> col:30 __useconds_t 'unsigned int'
| `-BuiltinType 0x560467ec1950 'unsigned int'
|-TypedefDecl 0x560467f871f8 <line:137:22, line:162:31> col:31 __suseconds_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f87268 <line:137:22, line:163:33> col:33 __suseconds64_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f872d8 <line:137:22, line:165:27> col:27 __daddr_t 'int'
| `-BuiltinType 0x560467ec18b0 'int'
|-TypedefDecl 0x560467f87348 <line:137:22, line:166:25> col:25 __key_t 'int'
| `-BuiltinType 0x560467ec18b0 'int'
|-TypedefDecl 0x560467f873b8 <line:137:22, line:169:29> col:29 __clockid_t 'int'
| `-BuiltinType 0x560467ec18b0 'int'
|-TypedefDecl 0x560467f87428 <line:137:22, line:172:27> col:27 __timer_t 'void *'
| `-PointerType 0x560467ec1f30 'void *'
| `-BuiltinType 0x560467ec1810 'void'
|-TypedefDecl 0x560467f87498 <line:137:22, line:175:29> col:29 __blksize_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f87508 <line:137:22, line:180:28> col:28 __blkcnt_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f87578 <line:137:22, line:181:30> col:30 __blkcnt64_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f875e8 <line:137:22, line:184:30> col:30 __fsblkcnt_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f87658 <line:137:22, line:185:32> col:32 __fsblkcnt64_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f876c8 <line:137:22, line:188:30> col:30 __fsfilcnt_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f87738 <line:137:22, line:189:32> col:32 __fsfilcnt64_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f877a8 <line:137:22, line:192:28> col:28 __fsword_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f87818 <line:137:22, line:194:27> col:27 __ssize_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f87888 <line:137:22, line:197:33> col:33 __syscall_slong_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f878f8 <line:137:22, line:199:33> col:33 __syscall_ulong_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f87980 <line:203:1, col:19> col:19 __loff_t '__off64_t':'long'
| `-TypedefType 0x560467f87950 '__off64_t' sugar
| |-Typedef 0x560467f7ef10 '__off64_t'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f879f0 <line:204:1, col:15> col:15 __caddr_t 'char *'
| `-PointerType 0x560467ec23a0 'char *'
| `-BuiltinType 0x560467ec1850 'char'
|-TypedefDecl 0x560467f87a60 <line:137:22, line:207:25> col:25 __intptr_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f87ad0 <line:137:22, line:210:23> col:23 __socklen_t 'unsigned int'
| `-BuiltinType 0x560467ec1950 'unsigned int'
|-TypedefDecl 0x560467f87b40 <line:215:1, col:13> col:13 __sig_atomic_t 'int'
| `-BuiltinType 0x560467ec18b0 'int'
|-TypedefDecl 0x560467f87ba8 </usr/include/bits/stdint-intn.h:24:1, col:18> col:18 referenced int8_t '__int8_t':'signed char'
| `-TypedefType 0x560467f7e540 '__int8_t' sugar
| |-Typedef 0x560467f78d68 '__int8_t'
| `-BuiltinType 0x560467ec1870 'signed char'
|-TypedefDecl 0x560467f87c10 <line:25:1, col:19> col:19 referenced int16_t '__int16_t':'short'
| `-TypedefType 0x560467f7e660 '__int16_t' sugar
| |-Typedef 0x560467f78e48 '__int16_t'
| `-BuiltinType 0x560467ec1890 'short'
|-TypedefDecl 0x560467f87c78 <line:26:1, col:19> col:19 referenced int32_t '__int32_t':'int'
| `-TypedefType 0x560467f7e780 '__int32_t' sugar
| |-Typedef 0x560467f78f28 '__int32_t'
| `-BuiltinType 0x560467ec18b0 'int'
|-TypedefDecl 0x560467f87ce0 <line:27:1, col:19> col:19 referenced int64_t '__int64_t':'long'
| `-TypedefType 0x560467f7e8a0 '__int64_t' sugar
| |-Typedef 0x560467f7e470 '__int64_t'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f87d48 </usr/include/bits/stdint-uintn.h:24:1, col:19> col:19 referenced uint8_t '__uint8_t':'unsigned char'
| `-TypedefType 0x560467f7e5d0 '__uint8_t' sugar
| |-Typedef 0x560467f78dd8 '__uint8_t'
| `-BuiltinType 0x560467ec1910 'unsigned char'
|-TypedefDecl 0x560467f87db0 <line:25:1, col:20> col:20 referenced uint16_t '__uint16_t':'unsigned short'
| `-TypedefType 0x560467f7e6f0 '__uint16_t' sugar
| |-Typedef 0x560467f78eb8 '__uint16_t'
| `-BuiltinType 0x560467ec1930 'unsigned short'
|-TypedefDecl 0x560467f87e18 <line:26:1, col:20> col:20 referenced uint32_t '__uint32_t':'unsigned int'
| `-TypedefType 0x560467f7e810 '__uint32_t' sugar
| |-Typedef 0x560467f78f98 '__uint32_t'
| `-BuiltinType 0x560467ec1950 'unsigned int'
|-TypedefDecl 0x560467f87e80 <line:27:1, col:20> col:20 referenced uint64_t '__uint64_t':'unsigned long'
| `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| |-Typedef 0x560467f7e4e0 '__uint64_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f87f10 </usr/include/stdint.h:43:1, col:24> col:24 int_least8_t '__int_least8_t':'signed char'
| `-TypedefType 0x560467f87ee0 '__int_least8_t' sugar
| |-Typedef 0x560467f7e570 '__int_least8_t'
| `-TypedefType 0x560467f7e540 '__int8_t' sugar
| |-Typedef 0x560467f78d68 '__int8_t'
| `-BuiltinType 0x560467ec1870 'signed char'
|-TypedefDecl 0x560467f87fa0 <line:44:1, col:25> col:25 int_least16_t '__int_least16_t':'short'
| `-TypedefType 0x560467f87f70 '__int_least16_t' sugar
| |-Typedef 0x560467f7e690 '__int_least16_t'
| `-TypedefType 0x560467f7e660 '__int16_t' sugar
| |-Typedef 0x560467f78e48 '__int16_t'
| `-BuiltinType 0x560467ec1890 'short'
|-TypedefDecl 0x560467f88030 <line:45:1, col:25> col:25 int_least32_t '__int_least32_t':'int'
| `-TypedefType 0x560467f88000 '__int_least32_t' sugar
| |-Typedef 0x560467f7e7b0 '__int_least32_t'
| `-TypedefType 0x560467f7e780 '__int32_t' sugar
| |-Typedef 0x560467f78f28 '__int32_t'
| `-BuiltinType 0x560467ec18b0 'int'
|-TypedefDecl 0x560467f880c0 <line:46:1, col:25> col:25 int_least64_t '__int_least64_t':'long'
| `-TypedefType 0x560467f88090 '__int_least64_t' sugar
| |-Typedef 0x560467f7e8d0 '__int_least64_t'
| `-TypedefType 0x560467f7e8a0 '__int64_t' sugar
| |-Typedef 0x560467f7e470 '__int64_t'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f8c420 <line:49:1, col:25> col:25 uint_least8_t '__uint_least8_t':'unsigned char'
| `-TypedefType 0x560467f88120 '__uint_least8_t' sugar
| |-Typedef 0x560467f7e600 '__uint_least8_t'
| `-TypedefType 0x560467f7e5d0 '__uint8_t' sugar
| |-Typedef 0x560467f78dd8 '__uint8_t'
| `-BuiltinType 0x560467ec1910 'unsigned char'
|-TypedefDecl 0x560467f8c4b0 <line:50:1, col:26> col:26 uint_least16_t '__uint_least16_t':'unsigned short'
| `-TypedefType 0x560467f8c480 '__uint_least16_t' sugar
| |-Typedef 0x560467f7e720 '__uint_least16_t'
| `-TypedefType 0x560467f7e6f0 '__uint16_t' sugar
| |-Typedef 0x560467f78eb8 '__uint16_t'
| `-BuiltinType 0x560467ec1930 'unsigned short'
|-TypedefDecl 0x560467f8c540 <line:51:1, col:26> col:26 uint_least32_t '__uint_least32_t':'unsigned int'
| `-TypedefType 0x560467f8c510 '__uint_least32_t' sugar
| |-Typedef 0x560467f7e840 '__uint_least32_t'
| `-TypedefType 0x560467f7e810 '__uint32_t' sugar
| |-Typedef 0x560467f78f98 '__uint32_t'
| `-BuiltinType 0x560467ec1950 'unsigned int'
|-TypedefDecl 0x560467f8c5d0 <line:52:1, col:26> col:26 uint_least64_t '__uint_least64_t':'unsigned long'
| `-TypedefType 0x560467f8c5a0 '__uint_least64_t' sugar
| |-Typedef 0x560467f7e960 '__uint_least64_t'
| `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| |-Typedef 0x560467f7e4e0 '__uint64_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f8c640 <line:58:1, col:22> col:22 int_fast8_t 'signed char'
| `-BuiltinType 0x560467ec1870 'signed char'
|-TypedefDecl 0x560467f8c6b0 <line:60:1, col:19> col:19 int_fast16_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f8c720 <line:61:1, col:19> col:19 int_fast32_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f8c790 <line:62:1, col:19> col:19 int_fast64_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f8c800 <line:71:1, col:24> col:24 uint_fast8_t 'unsigned char'
| `-BuiltinType 0x560467ec1910 'unsigned char'
|-TypedefDecl 0x560467f8c870 <line:73:1, col:27> col:27 uint_fast16_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f8c8e0 <line:74:1, col:27> col:27 uint_fast32_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f8c950 <line:75:1, col:27> col:27 uint_fast64_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f8c9c0 <line:87:1, col:19> col:19 referenced intptr_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f8ca30 <line:90:1, col:27> col:27 referenced uintptr_t 'unsigned long'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f8cac0 <line:101:1, col:21> col:21 intmax_t '__intmax_t':'long'
| `-TypedefType 0x560467f8ca90 '__intmax_t' sugar
| |-Typedef 0x560467f7eab0 '__intmax_t'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467f8cb50 <line:102:1, col:22> col:22 uintmax_t '__uintmax_t':'unsigned long'
| `-TypedefType 0x560467f8cb20 '__uintmax_t' sugar
| |-Typedef 0x560467f7eb20 '__uintmax_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f8cc10 <flecs.h:533:1, col:17> col:17 referenced ecs_flags8_t 'uint8_t':'unsigned char'
| `-TypedefType 0x560467f8cbe0 'uint8_t' sugar
| |-Typedef 0x560467f87d48 'uint8_t'
| `-TypedefType 0x560467f7e5d0 '__uint8_t' sugar
| |-Typedef 0x560467f78dd8 '__uint8_t'
| `-BuiltinType 0x560467ec1910 'unsigned char'
|-TypedefDecl 0x560467f8cca0 <line:534:1, col:18> col:18 ecs_flags16_t 'uint16_t':'unsigned short'
| `-TypedefType 0x560467f8cc70 'uint16_t' sugar
| |-Typedef 0x560467f87db0 'uint16_t'
| `-TypedefType 0x560467f7e6f0 '__uint16_t' sugar
| |-Typedef 0x560467f78eb8 '__uint16_t'
| `-BuiltinType 0x560467ec1930 'unsigned short'
|-TypedefDecl 0x560467f8cd30 <line:535:1, col:18> col:18 referenced ecs_flags32_t 'uint32_t':'unsigned int'
| `-TypedefType 0x560467f8cd00 'uint32_t' sugar
| |-Typedef 0x560467f87e18 'uint32_t'
| `-TypedefType 0x560467f7e810 '__uint32_t' sugar
| |-Typedef 0x560467f78f98 '__uint32_t'
| `-BuiltinType 0x560467ec1950 'unsigned int'
|-TypedefDecl 0x560467f8cdc0 <line:536:1, col:18> col:18 referenced ecs_flags64_t 'uint64_t':'unsigned long'
| `-TypedefType 0x560467f8cd90 'uint64_t' sugar
| |-Typedef 0x560467f87e80 'uint64_t'
| `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| |-Typedef 0x560467f7e4e0 '__uint64_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467f8ce50 <line:539:1, col:17> col:17 referenced ecs_size_t 'int32_t':'int'
| `-TypedefType 0x560467f8ce20 'int32_t' sugar
| |-Typedef 0x560467f87c78 'int32_t'
| `-TypedefType 0x560467f7e780 '__int32_t' sugar
| |-Typedef 0x560467f78f28 '__int32_t'
| `-BuiltinType 0x560467ec18b0 'int'
|-RecordDecl 0x560467f8d058 <line:773:9, col:16> col:16 struct ecs_vector_t
|-TypedefDecl 0x560467f8d158 <col:1, col:29> col:29 referenced ecs_vector_t 'struct ecs_vector_t':'struct ecs_vector_t'
| `-ElaboratedType 0x560467f8d100 'struct ecs_vector_t' sugar
| `-RecordType 0x560467f8d0e0 'struct ecs_vector_t'
| `-Record 0x560467f8d058 'ecs_vector_t'
|-TypedefDecl 0x560467fa7850 <line:775:1, line:777:19> line:775:15 referenced ecs_comparator_t 'int (*)(const void *, const void *)'
| `-PointerType 0x560467f8d370 'int (*)(const void *, const void *)'
| `-ParenType 0x560467f8d310 'int (const void *, const void *)' sugar
| `-FunctionProtoType 0x560467f8d2d0 'int (const void *, const void *)' cdecl
| |-BuiltinType 0x560467ec18b0 'int'
| |-PointerType 0x560467f594d0 'const void *'
| | `-QualType 0x560467ec1811 'const void' const
| | `-BuiltinType 0x560467ec1810 'void'
| `-PointerType 0x560467f594d0 'const void *'
| `-QualType 0x560467ec1811 'const void' const
| `-BuiltinType 0x560467ec1810 'void'
|-FunctionDecl 0x560467fa7bc8 <line:781:1, line:784:23> line:781:15 _ecs_vector_new 'ecs_vector_t *(ecs_size_t, int16_t, int32_t)'
| |-ParmVarDecl 0x560467fa7930 <line:782:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fa79d0 <line:783:5, col:13> col:13 offset 'int16_t':'short'
| |-ParmVarDecl 0x560467fa7a48 <line:784:5, col:13> col:13 elem_count 'int32_t':'int'
| `-FullComment 0x5604680fd4b0 <line:779:4, col:23>
| `-ParagraphComment 0x5604680fd480 <col:4, col:23>
| `-TextComment 0x5604680fd450 <col:4, col:23> Text=" Create new vector. "
|-FunctionDecl 0x560467fa7f48 <line:794:1, line:798:16> line:794:15 _ecs_vector_from_array 'ecs_vector_t *(ecs_size_t, int16_t, int32_t, void *)'
| |-ParmVarDecl 0x560467fa7c90 <line:795:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fa7d08 <line:796:5, col:13> col:13 offset 'int16_t':'short'
| |-ParmVarDecl 0x560467fa7d80 <line:797:5, col:13> col:13 elem_count 'int32_t':'int'
| `-ParmVarDecl 0x560467fa7e00 <line:798:5, col:11> col:11 array 'void *'
|-FunctionDecl 0x560467fa8228 <line:805:1, line:808:19> line:805:6 _ecs_vector_zero 'void (ecs_vector_t *, ecs_size_t, int16_t)'
| |-ParmVarDecl 0x560467fa8018 <line:806:5, col:19> col:19 vector 'ecs_vector_t *'
| |-ParmVarDecl 0x560467fa8090 <line:807:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| `-ParmVarDecl 0x560467fa8108 <line:808:5, col:13> col:13 offset 'int16_t':'short'
|-FunctionDecl 0x560467fa8408 <line:815:1, line:816:25> line:815:6 ecs_vector_free 'void (ecs_vector_t *)'
| |-ParmVarDecl 0x560467fa8318 <line:816:5, col:19> col:19 vector 'ecs_vector_t *'
| `-FullComment 0x5604680fd580 <line:813:4, col:16>
| `-ParagraphComment 0x5604680fd550 <col:4, col:16>
| `-TextComment 0x5604680fd520 <col:4, col:16> Text=" Free vector "
|-FunctionDecl 0x560467fa8578 <line:820:1, line:821:25> line:820:6 ecs_vector_clear 'void (ecs_vector_t *)'
| |-ParmVarDecl 0x560467fa84e8 <line:821:5, col:19> col:19 vector 'ecs_vector_t *'
| `-FullComment 0x56046811bf10 <line:818:4, col:27>
| `-ParagraphComment 0x5604680fd620 <col:4, col:27>
| `-TextComment 0x5604680fd5f0 <col:4, col:27> Text=" Clear values in vector "
|-FunctionDecl 0x560467fa8fe0 <line:825:1, line:827:25> line:825:6 ecs_vector_assert_size 'void (ecs_vector_t *, ecs_size_t)'
| |-ParmVarDecl 0x560467fa8658 <line:826:5, col:19> col:19 vector_inout 'ecs_vector_t *'
| |-ParmVarDecl 0x560467fa86d0 <line:827:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| `-FullComment 0x56046811bfe0 <line:823:4, col:66>
| `-ParagraphComment 0x56046811bfb0 <col:4, col:66>
| `-TextComment 0x56046811bf80 <col:4, col:66> Text=" Assert when the provided size does not match the vector type. "
|-FunctionDecl 0x560467fa9350 <line:831:1, line:834:19> line:831:7 _ecs_vector_add 'void *(ecs_vector_t **, ecs_size_t, int16_t)'
| |-ParmVarDecl 0x560467fa9130 <line:832:5, col:20> col:20 array_inout 'ecs_vector_t **'
| |-ParmVarDecl 0x560467fa91a8 <line:833:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fa9220 <line:834:5, col:13> col:13 offset 'int16_t':'short'
| `-FullComment 0x56046811c0b0 <line:829:4, col:27>
| `-ParagraphComment 0x56046811c080 <col:4, col:27>
| `-TextComment 0x56046811c050 <col:4, col:27> Text=" Add element to vector. "
|-FunctionDecl 0x560467fa9700 <line:844:1, line:848:18> line:844:7 _ecs_vector_insert_at 'void *(ecs_vector_t **, ecs_size_t, int16_t, int32_t)'
| |-ParmVarDecl 0x560467fa9450 <line:845:5, col:20> col:20 array_inout 'ecs_vector_t **'
| |-ParmVarDecl 0x560467fa94c8 <line:846:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fa9540 <line:847:5, col:13> col:13 offset 'int16_t':'short'
| |-ParmVarDecl 0x560467fa95b8 <line:848:5, col:13> col:13 index 'int32_t':'int'
| `-FullComment 0x56046811c180 <line:842:4, col:30>
| `-ParagraphComment 0x56046811c150 <col:4, col:30>
| `-TextComment 0x56046811c120 <col:4, col:30> Text=" Insert element to vector. "
|-FunctionDecl 0x560467fa9a18 <line:858:1, line:862:23> line:858:7 _ecs_vector_addn 'void *(ecs_vector_t **, ecs_size_t, int16_t, int32_t)'
| |-ParmVarDecl 0x560467fa9800 <line:859:5, col:20> col:20 array_inout 'ecs_vector_t **'
| |-ParmVarDecl 0x560467fa9878 <line:860:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fa98f0 <line:861:5, col:13> col:13 offset 'int16_t':'short'
| |-ParmVarDecl 0x560467fa9968 <line:862:5, col:13> col:13 elem_count 'int32_t':'int'
| `-FullComment 0x56046811c250 <line:856:4, col:34>
| `-ParagraphComment 0x56046811c220 <col:4, col:34>
| `-TextComment 0x56046811c1f0 <col:4, col:34> Text=" Add n elements to the vector. "
|-FunctionDecl 0x560467fa9e30 <line:872:1, line:876:18> line:872:7 _ecs_vector_get 'void *(const ecs_vector_t *, ecs_size_t, int16_t, int32_t)'
| |-ParmVarDecl 0x560467fa9b78 <line:873:5, col:25> col:25 vector 'const ecs_vector_t *'
| |-ParmVarDecl 0x560467fa9bf0 <line:874:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fa9c68 <line:875:5, col:13> col:13 offset 'int16_t':'short'
| |-ParmVarDecl 0x560467fa9ce0 <line:876:5, col:13> col:13 index 'int32_t':'int'
| `-FullComment 0x56046811c320 <line:870:4, col:29>
| `-ParagraphComment 0x56046811c2f0 <col:4, col:29>
| `-TextComment 0x56046811c2c0 <col:4, col:29> Text=" Get element from vector. "
|-FunctionDecl 0x560467fabfe0 <line:886:1, line:889:19> line:886:7 _ecs_vector_last 'void *(const ecs_vector_t *, ecs_size_t, int16_t)'
| |-ParmVarDecl 0x560467fa9f28 <line:887:5, col:25> col:25 vector 'const ecs_vector_t *'
| |-ParmVarDecl 0x560467fabe40 <line:888:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fabeb8 <line:889:5, col:13> col:13 offset 'int16_t':'short'
| `-FullComment 0x56046811c3f0 <line:884:4, col:34>
| `-ParagraphComment 0x56046811c3c0 <col:4, col:34>
| `-TextComment 0x56046811c390 <col:4, col:34> Text=" Get last element from vector. "
|-FunctionDecl 0x560467fac388 <line:900:1, line:904:23> line:900:9 _ecs_vector_set_min_size 'int32_t (ecs_vector_t **, ecs_size_t, int16_t, int32_t)'
| |-ParmVarDecl 0x560467fac0e0 <line:901:5, col:20> col:20 array_inout 'ecs_vector_t **'
| |-ParmVarDecl 0x560467fac158 <line:902:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fac1d0 <line:903:5, col:13> col:13 offset 'int16_t':'short'
| |-ParmVarDecl 0x560467fac248 <line:904:5, col:13> col:13 elem_count 'int32_t':'int'
| `-FullComment 0x56046811c4e0 <line:897:4, line:898:43>
| `-ParagraphComment 0x56046811c4b0 <line:897:4, line:898:43>
| |-TextComment 0x56046811c460 <line:897:4, col:78> Text=" Set minimum size for vector. If the current size of the vector is larger, "
| `-TextComment 0x56046811c480 <line:898:3, col:43> Text=" the function will have no side effects. "
|-FunctionDecl 0x560467fac6a0 <line:912:1, line:916:23> line:912:9 _ecs_vector_set_min_count 'int32_t (ecs_vector_t **, ecs_size_t, int16_t, int32_t)'
| |-ParmVarDecl 0x560467fac490 <line:913:5, col:20> col:20 vector_inout 'ecs_vector_t **'
| |-ParmVarDecl 0x560467fac508 <line:914:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fac580 <line:915:5, col:13> col:13 offset 'int16_t':'short'
| |-ParmVarDecl 0x560467fac5f8 <line:916:5, col:13> col:13 elem_count 'int32_t':'int'
| `-FullComment 0x56046811c5d0 <line:909:4, line:910:43>
| `-ParagraphComment 0x56046811c5a0 <line:909:4, line:910:43>
| |-TextComment 0x56046811c550 <line:909:4, col:80> Text=" Set minimum count for vector. If the current count of the vector is larger, "
| `-TextComment 0x56046811c570 <line:910:3, col:43> Text=" the function will have no side effects. "
|-FunctionDecl 0x560467fac828 <line:926:1, line:927:25> line:926:6 ecs_vector_remove_last 'void (ecs_vector_t *)'
| |-ParmVarDecl 0x560467fac798 <line:927:5, col:19> col:19 vector 'ecs_vector_t *'
| `-FullComment 0x56046811c6a0 <line:924:4, col:72>
| `-ParagraphComment 0x56046811c670 <col:4, col:72>
| `-TextComment 0x56046811c640 <col:4, col:72> Text=" Remove last element. This operation requires no swapping of values. "
|-FunctionDecl 0x560467facbb8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:935:16> line:931:6 _ecs_vector_pop 'bool (ecs_vector_t *, ecs_size_t, int16_t, void *)'
| |-ParmVarDecl 0x560467fac908 <line:932:5, col:19> col:19 vector 'ecs_vector_t *'
| |-ParmVarDecl 0x560467fac980 <line:933:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fac9f8 <line:934:5, col:13> col:13 offset 'int16_t':'short'
| |-ParmVarDecl 0x560467faca78 <line:935:5, col:11> col:11 value 'void *'
| `-FullComment 0x56046811c770 <line:929:4, col:61>
| `-ParagraphComment 0x56046811c740 <col:4, col:61>
| `-TextComment 0x56046811c710 <col:4, col:61> Text=" Remove last value, store last element in provided value. "
|-FunctionDecl 0x560467fadb18 <line:942:1, line:947:18> line:942:9 _ecs_vector_move_index 'int32_t (ecs_vector_t **, ecs_vector_t *, ecs_size_t, int16_t, int32_t)'
| |-ParmVarDecl 0x560467faccc0 <line:943:5, col:20> col:20 dst 'ecs_vector_t **'
| |-ParmVarDecl 0x560467facd38 <line:944:5, col:19> col:19 src 'ecs_vector_t *'
| |-ParmVarDecl 0x560467facdb0 <line:945:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fad950 <line:946:5, col:13> col:13 offset 'int16_t':'short'
| |-ParmVarDecl 0x560467fad9c8 <line:947:5, col:13> col:13 index 'int32_t':'int'
| `-FullComment 0x56046811c840 <line:940:4, col:57>
| `-ParagraphComment 0x56046811c810 <col:4, col:57>
| `-TextComment 0x56046811c7e0 <col:4, col:57> Text=" Append element at specified index to another vector. "
|-FunctionDecl 0x560467fadec8 <line:957:1, line:961:18> line:957:9 _ecs_vector_remove 'int32_t (ecs_vector_t *, ecs_size_t, int16_t, int32_t)'
| |-ParmVarDecl 0x560467fadc18 <line:958:5, col:19> col:19 vector 'ecs_vector_t *'
| |-ParmVarDecl 0x560467fadc90 <line:959:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fadd08 <line:960:5, col:13> col:13 offset 'int16_t':'short'
| |-ParmVarDecl 0x560467fadd80 <line:961:5, col:13> col:13 index 'int32_t':'int'
| `-FullComment 0x56046811c910 <line:955:4, col:74>
| `-ParagraphComment 0x56046811c8e0 <col:4, col:74>
| `-TextComment 0x56046811c8b0 <col:4, col:74> Text=" Remove element at specified index. Moves the last value to the index. "
|-FunctionDecl 0x560467fae1e8 <line:971:1, line:974:19> line:971:6 _ecs_vector_reclaim 'void (ecs_vector_t **, ecs_size_t, int16_t)'
| |-ParmVarDecl 0x560467fadfd0 <line:972:5, col:20> col:20 vector 'ecs_vector_t **'
| |-ParmVarDecl 0x560467fae048 <line:973:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fae0c0 <line:974:5, col:13> col:13 offset 'int16_t':'short'
| `-FullComment 0x56046811c9e0 <line:969:4, col:52>
| `-ParagraphComment 0x56046811c9b0 <col:4, col:52>
| `-TextComment 0x56046811c980 <col:4, col:52> Text=" Shrink vector to make the size match the count. "
|-FunctionDecl 0x560467fae4f0 <line:984:1, line:988:23> line:984:9 _ecs_vector_grow 'int32_t (ecs_vector_t **, ecs_size_t, int16_t, int32_t)'
| |-ParmVarDecl 0x560467fae2e0 <line:985:5, col:20> col:20 vector 'ecs_vector_t **'
| |-ParmVarDecl 0x560467fae358 <line:986:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fae3d0 <line:987:5, col:13> col:13 offset 'int16_t':'short'
| |-ParmVarDecl 0x560467fae448 <line:988:5, col:13> col:13 elem_count 'int32_t':'int'
| `-FullComment 0x56046811cab0 <line:982:4, col:58>
| `-ParagraphComment 0x56046811ca80 <col:4, col:58>
| `-TextComment 0x56046811ca50 <col:4, col:58> Text=" Grow size of vector with provided number of elements. "
|-FunctionDecl 0x560467fae800 <line:995:1, line:999:23> line:995:9 _ecs_vector_set_size 'int32_t (ecs_vector_t **, ecs_size_t, int16_t, int32_t)'
| |-ParmVarDecl 0x560467fae5f0 <line:996:5, col:20> col:20 vector 'ecs_vector_t **'
| |-ParmVarDecl 0x560467fae668 <line:997:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fae6e0 <line:998:5, col:13> col:13 offset 'int16_t':'short'
| |-ParmVarDecl 0x560467fae758 <line:999:5, col:13> col:13 elem_count 'int32_t':'int'
| `-FullComment 0x56046811cb80 <line:993:4, col:35>
| `-ParagraphComment 0x56046811cb50 <col:4, col:35>
| `-TextComment 0x56046811cb20 <col:4, col:35> Text=" Set allocation size of vector. "
|-FunctionDecl 0x560467fb1b70 <line:1010:1, line:1014:23> line:1010:9 _ecs_vector_set_count 'int32_t (ecs_vector_t **, ecs_size_t, int16_t, int32_t)'
| |-ParmVarDecl 0x560467fb1960 <line:1011:5, col:20> col:20 vector 'ecs_vector_t **'
| |-ParmVarDecl 0x560467fb19d8 <line:1012:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fb1a50 <line:1013:5, col:13> col:13 offset 'int16_t':'short'
| |-ParmVarDecl 0x560467fb1ac8 <line:1014:5, col:13> col:13 elem_count 'int32_t':'int'
| `-FullComment 0x56046811cc70 <line:1007:4, line:1008:33>
| `-ParagraphComment 0x56046811cc40 <line:1007:4, line:1008:33>
| |-TextComment 0x56046811cbf0 <line:1007:4, col:79> Text=" Set count of vector. If the size of the vector is smaller than the provided"
| `-TextComment 0x56046811cc10 <line:1008:3, col:33> Text=" count, the vector is resized. "
|-FunctionDecl 0x560467fb1d58 <line:1024:1, line:1025:31> line:1024:9 ecs_vector_count 'int32_t (const ecs_vector_t *)'
| |-ParmVarDecl 0x560467fb1c68 <line:1025:5, col:25> col:25 vector 'const ecs_vector_t *'
| `-FullComment 0x56046811cd40 <line:1022:4, col:41>
| `-ParagraphComment 0x56046811cd10 <col:4, col:41>
| `-TextComment 0x56046811cce0 <col:4, col:41> Text=" Return number of elements in vector. "
|-FunctionDecl 0x560467fb1ec8 <line:1029:1, line:1030:31> line:1029:9 ecs_vector_size 'int32_t (const ecs_vector_t *)'
| |-ParmVarDecl 0x560467fb1e38 <line:1030:5, col:25> col:25 vector 'const ecs_vector_t *'
| `-FullComment 0x56046811ce10 <line:1027:4, col:27>
| `-ParagraphComment 0x56046811cde0 <col:4, col:27>
| `-TextComment 0x56046811cdb0 <col:4, col:27> Text=" Return size of vector. "
|-FunctionDecl 0x560467fb2140 <line:1034:1, line:1037:19> line:1034:7 _ecs_vector_first 'void *(const ecs_vector_t *, ecs_size_t, int16_t)'
| |-ParmVarDecl 0x560467fb1fa8 <line:1035:5, col:25> col:25 vector 'const ecs_vector_t *'
| |-ParmVarDecl 0x560467fb2020 <line:1036:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fb2098 <line:1037:5, col:13> col:13 offset 'int16_t':'short'
| `-FullComment 0x56046811cee0 <line:1032:4, col:36>
| `-ParagraphComment 0x56046811ceb0 <col:4, col:36>
| `-TextComment 0x56046811ce80 <col:4, col:36> Text=" Return first element of vector. "
|-FunctionDecl 0x560467fb2508 <line:1047:1, line:1051:36> line:1047:6 _ecs_vector_sort 'void (ecs_vector_t *, ecs_size_t, int16_t, ecs_comparator_t)'
| |-ParmVarDecl 0x560467fb2238 <line:1048:5, col:19> col:19 vector 'ecs_vector_t *'
| |-ParmVarDecl 0x560467fb22b0 <line:1049:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fb2328 <line:1050:5, col:13> col:13 offset 'int16_t':'short'
| |-ParmVarDecl 0x560467fb23c0 <line:1051:5, col:22> col:22 compare_action 'ecs_comparator_t':'int (*)(const void *, const void *)'
| `-FullComment 0x56046811cfb0 <line:1045:4, col:29>
| `-ParagraphComment 0x56046811cf80 <col:4, col:29>
| `-TextComment 0x56046811cf50 <col:4, col:29> Text=" Sort elements in vector. "
|-FunctionDecl 0x560467fb2818 <line:1058:1, line:1061:19> line:1058:15 _ecs_vector_copy 'ecs_vector_t *(const ecs_vector_t *, ecs_size_t, int16_t)'
| |-ParmVarDecl 0x560467fb2608 <line:1059:5, col:25> col:25 src 'const ecs_vector_t *'
| |-ParmVarDecl 0x560467fb2680 <line:1060:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fb26f8 <line:1061:5, col:13> col:13 offset 'int16_t':'short'
| `-FullComment 0x56046811d080 <line:1056:4, col:17>
| `-ParagraphComment 0x56046811d050 <col:4, col:17>
| `-TextComment 0x56046811d020 <col:4, col:17> Text=" Copy vectors "
|-RecordDecl 0x560467fb3d80 <line:1226:9, line:1239:1> line:1226:16 struct ecs_sparse_t definition
| |-FieldDecl 0x560467fb3e30 <line:1227:5, col:19> col:19 dense 'ecs_vector_t *'
| |-FieldDecl 0x560467fb3e90 <line:1232:5, col:19> col:19 chunks 'ecs_vector_t *'
| |-FieldDecl 0x560467fb3ef0 <line:1233:5, col:16> col:16 size 'ecs_size_t':'int'
| |-FieldDecl 0x560467fb3f50 <line:1234:5, col:13> col:13 count 'int32_t':'int'
| |-FieldDecl 0x560467fb3fb0 <line:1235:5, col:14> col:14 max_id_local 'uint64_t':'unsigned long'
| |-FieldDecl 0x560467fb4068 <line:1236:5, col:15> col:15 max_id 'uint64_t *'
| |-RecordDecl 0x560467fb40b8 parent 0x560467ec17a8 <line:1237:5, col:12> col:12 struct ecs_allocator_t
| |-FieldDecl 0x560467fb4230 <col:5, col:29> col:29 allocator 'struct ecs_allocator_t *'
| |-RecordDecl 0x560467fb4280 parent 0x560467ec17a8 <line:1238:5, col:12> col:12 struct ecs_block_allocator_t
| `-FieldDecl 0x560467fb43f0 <col:5, col:35> col:35 chunk_allocator 'struct ecs_block_allocator_t *'
|-TypedefDecl 0x560467fb4498 <line:1226:1, line:1239:3> col:3 referenced ecs_sparse_t 'struct ecs_sparse_t':'struct ecs_sparse_t'
| `-ElaboratedType 0x560467fb4440 'struct ecs_sparse_t' sugar
| `-RecordType 0x560467fb3e00 'struct ecs_sparse_t'
| `-Record 0x560467fb3d80 'ecs_sparse_t'
|-FunctionDecl 0x560467fb4948 <line:1243:1, line:1247:25> line:1243:6 _flecs_sparse_init 'void (ecs_sparse_t *, struct ecs_allocator_t *, struct ecs_block_allocator_t *, ecs_size_t)'
| |-ParmVarDecl 0x560467fb45b8 <line:1244:5, col:19> col:19 sparse 'ecs_sparse_t *'
| |-ParmVarDecl 0x560467fb46a0 <line:1245:5, col:29> col:29 allocator 'struct ecs_allocator_t *'
| |-ParmVarDecl 0x560467fb4790 <line:1246:5, col:35> col:35 chunk_allocator 'struct ecs_block_allocator_t *'
| |-ParmVarDecl 0x560467fb4808 <line:1247:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| `-FullComment 0x56046811d150 <line:1241:4, col:26>
| `-ParagraphComment 0x56046811d120 <col:4, col:26>
| `-TextComment 0x56046811d0f0 <col:4, col:26> Text=" Initialize sparse set "
|-FunctionDecl 0x560467fb4c88 <line:1254:1, line:1257:25> line:1254:15 _flecs_sparse_new 'ecs_sparse_t *(struct ecs_allocator_t *, struct ecs_block_allocator_t *, ecs_size_t)'
| |-ParmVarDecl 0x560467fb4a60 <line:1255:5, col:29> col:29 allocator 'struct ecs_allocator_t *'
| |-ParmVarDecl 0x560467fb4af0 <line:1256:5, col:35> col:35 chunk_allocator 'struct ecs_block_allocator_t *'
| |-ParmVarDecl 0x560467fb4b68 <line:1257:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| `-FullComment 0x56046811d220 <line:1252:4, col:26>
| `-ParagraphComment 0x56046811d1f0 <col:4, col:26>
| `-TextComment 0x56046811d1c0 <col:4, col:26> Text=" Create new sparse set "
|-FunctionDecl 0x560467fb6ea8 <line:1263:1, line:1264:25> line:1263:6 _flecs_sparse_fini 'void (ecs_sparse_t *)'
| `-ParmVarDecl 0x560467fb6db0 <line:1264:5, col:19> col:19 sparse 'ecs_sparse_t *'
|-FunctionDecl 0x560467fb7018 <line:1271:1, line:1272:25> line:1271:6 flecs_sparse_free 'void (ecs_sparse_t *)'
| |-ParmVarDecl 0x560467fb6f88 <line:1272:5, col:19> col:19 sparse 'ecs_sparse_t *'
| `-FullComment 0x56046811d2f0 <line:1269:4, col:20>
| `-ParagraphComment 0x56046811d2c0 <col:4, col:20>
| `-TextComment 0x56046811d290 <col:4, col:20> Text=" Free sparse set "
|-FunctionDecl 0x560467fb7188 <line:1276:1, line:1277:25> line:1276:6 flecs_sparse_clear 'void (ecs_sparse_t *)'
| |-ParmVarDecl 0x560467fb70f8 <line:1277:5, col:19> col:19 sparse 'ecs_sparse_t *'
| `-FullComment 0x56046811d3c0 <line:1274:4, col:40>
| `-ParagraphComment 0x56046811d390 <col:4, col:40>
| `-TextComment 0x56046811d360 <col:4, col:40> Text=" Remove all elements from sparse set "
|-FunctionDecl 0x560467fb73f8 <line:1282:1, line:1284:24> line:1282:6 flecs_sparse_set_id_source 'void (ecs_sparse_t *, uint64_t *)'
| |-ParmVarDecl 0x560467fb7268 <line:1283:5, col:19> col:19 sparse 'ecs_sparse_t *'
| |-ParmVarDecl 0x560467fb72e0 <line:1284:5, col:15> col:15 id_source 'uint64_t *'
| `-FullComment 0x56046811d4b0 <line:1279:4, line:1280:35>
| `-ParagraphComment 0x56046811d480 <line:1279:4, line:1280:35>
| |-TextComment 0x56046811d430 <line:1279:4, col:77> Text=" Set id source. This allows the sparse set to use an external variable for"
| `-TextComment 0x56046811d450 <line:1280:3, col:35> Text=" issuing and increasing new ids. "
|-FunctionDecl 0x560467fb7680 <line:1288:1, line:1290:25> line:1288:7 _flecs_sparse_add 'void *(ecs_sparse_t *, ecs_size_t)'
| |-ParmVarDecl 0x560467fb74e8 <line:1289:5, col:19> col:19 sparse 'ecs_sparse_t *'
| |-ParmVarDecl 0x560467fb7560 <line:1290:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| `-FullComment 0x56046811d580 <line:1286:4, col:64>
| `-ParagraphComment 0x56046811d550 <col:4, col:64>
| `-TextComment 0x56046811d520 <col:4, col:64> Text=" Add element to sparse set, this generates or recycles an id "
|-FunctionDecl 0x560467fb78b8 <line:1297:1, line:1298:31> line:1297:10 flecs_sparse_last_id 'uint64_t (const ecs_sparse_t *)'
| |-ParmVarDecl 0x560467fb77c8 <line:1298:5, col:25> col:25 sparse 'const ecs_sparse_t *'
| `-FullComment 0x56046811d650 <line:1295:4, col:24>
| `-ParagraphComment 0x56046811d620 <col:4, col:24>
| `-TextComment 0x56046811d5f0 <col:4, col:24> Text=" Get last issued id. "
|-FunctionDecl 0x560467fb7a88 <line:1302:1, line:1303:25> line:1302:10 flecs_sparse_new_id 'uint64_t (ecs_sparse_t *)'
| |-ParmVarDecl 0x560467fb7998 <line:1303:5, col:19> col:19 sparse 'ecs_sparse_t *'
| `-FullComment 0x56046811d720 <line:1300:4, col:34>
| `-ParagraphComment 0x56046811d6f0 <col:4, col:34>
| `-TextComment 0x56046811d6c0 <col:4, col:34> Text=" Generate or recycle a new id. "
|-FunctionDecl 0x560467fb8dc0 <line:1309:1, line:1311:18> line:1309:17 flecs_sparse_new_ids 'const uint64_t *(ecs_sparse_t *, int32_t)'
| |-ParmVarDecl 0x560467fb7b68 <line:1310:5, col:19> col:19 sparse 'ecs_sparse_t *'
| |-ParmVarDecl 0x560467fb7be0 <line:1311:5, col:13> col:13 count 'int32_t':'int'
| `-FullComment 0x56046811d840 <line:1305:4, line:1307:60>
| `-ParagraphComment 0x56046811d810 <line:1305:4, line:1307:60>
| |-TextComment 0x56046811d790 <line:1305:4, col:80> Text=" Generate or recycle new ids in bulk. The returned pointer points directly to"
| |-TextComment 0x56046811d7b0 <line:1306:3, col:80> Text=" the internal dense array vector with sparse ids. Operations on the sparse set"
| `-TextComment 0x56046811d7d0 <line:1307:3, col:60> Text=" can (and likely will) modify the contents of the buffer. "
|-FunctionDecl 0x560467fb9038 <line:1315:1, line:1317:16> line:1315:6 flecs_sparse_remove 'void (ecs_sparse_t *, uint64_t)'
| |-ParmVarDecl 0x560467fb8ea8 <line:1316:5, col:19> col:19 sparse 'ecs_sparse_t *'
| |-ParmVarDecl 0x560467fb8f20 <line:1317:5, col:14> col:14 id 'uint64_t':'unsigned long'
| `-FullComment 0x56046811d910 <line:1313:4, col:22>
| `-ParagraphComment 0x56046811d8e0 <col:4, col:22>
| `-TextComment 0x56046811d8b0 <col:4, col:22> Text=" Remove an element "
|-FunctionDecl 0x560467fb9340 <line:1321:1, line:1324:16> line:1321:7 _flecs_sparse_remove_fast 'void *(ecs_sparse_t *, ecs_size_t, uint64_t)'
| |-ParmVarDecl 0x560467fb9128 <line:1322:5, col:19> col:19 sparse 'ecs_sparse_t *'
| |-ParmVarDecl 0x560467fb91a0 <line:1323:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fb9218 <line:1324:5, col:14> col:14 id 'uint64_t':'unsigned long'
| `-FullComment 0x56046811d9e0 <line:1319:4, col:51>
| `-ParagraphComment 0x56046811d9b0 <col:4, col:51>
| `-TextComment 0x56046811d980 <col:4, col:51> Text=" Fast version of remove, no liveliness checking "
|-FunctionDecl 0x560467fb95d0 <line:1328:1, line:1331:16> line:1328:7 _flecs_sparse_remove_get 'void *(ecs_sparse_t *, ecs_size_t, uint64_t)'
| |-ParmVarDecl 0x560467fb9438 <line:1329:5, col:19> col:19 sparse 'ecs_sparse_t *'
| |-ParmVarDecl 0x560467fb94b0 <line:1330:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fb9528 <line:1331:5, col:14> col:14 id 'uint64_t':'unsigned long'
| `-FullComment 0x56046811dab0 <line:1326:4, col:71>
| `-ParagraphComment 0x56046811da80 <col:4, col:71>
| `-TextComment 0x56046811da50 <col:4, col:71> Text=" Remove an element, return pointer to the value in the sparse array "
|-FunctionDecl 0x560467fb9858 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:1340:16> line:1338:6 flecs_sparse_exists 'bool (const ecs_sparse_t *, uint64_t)'
| |-ParmVarDecl 0x560467fb96c8 <line:1339:5, col:25> col:25 sparse 'const ecs_sparse_t *'
| |-ParmVarDecl 0x560467fb9740 <line:1340:5, col:14> col:14 id 'uint64_t':'unsigned long'
| `-FullComment 0x56046811db80 <line:1336:4, col:46>
| `-ParagraphComment 0x56046811db50 <col:4, col:46>
| `-TextComment 0x56046811db20 <col:4, col:46> Text=" Check whether an id has ever been issued. "
|-FunctionDecl 0x560467fb9a58 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:1346:19> line:1344:6 flecs_sparse_is_valid 'bool (const ecs_sparse_t *, uint64_t)'
| |-ParmVarDecl 0x560467fb9948 <line:1345:5, col:25> col:25 sparse 'const ecs_sparse_t *'
| |-ParmVarDecl 0x560467fb99c0 <line:1346:5, col:14> col:14 index 'uint64_t':'unsigned long'
| `-FullComment 0x56046811dc50 <line:1342:4, col:69>
| `-ParagraphComment 0x56046811dc20 <col:4, col:69>
| `-TextComment 0x56046811dbf0 <col:4, col:69> Text=" Check whether an id has ever been issued and is currently alive. "
|-FunctionDecl 0x560467fb9c58 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:1352:16> line:1350:6 flecs_sparse_is_alive 'bool (const ecs_sparse_t *, uint64_t)'
| |-ParmVarDecl 0x560467fb9b48 <line:1351:5, col:25> col:25 sparse 'const ecs_sparse_t *'
| |-ParmVarDecl 0x560467fb9bc0 <line:1352:5, col:14> col:14 id 'uint64_t':'unsigned long'
| `-FullComment 0x56046811dd20 <line:1348:4, col:71>
| `-ParagraphComment 0x56046811dcf0 <col:4, col:71>
| `-TextComment 0x56046811dcc0 <col:4, col:71> Text=" Test if id is alive, which requires the generation count to match. "
|-FunctionDecl 0x560467fb9ee8 <line:1356:1, line:1358:16> line:1356:10 flecs_sparse_get_alive 'uint64_t (const ecs_sparse_t *, uint64_t)'
| |-ParmVarDecl 0x560467fb9d48 <line:1357:5, col:25> col:25 sparse 'const ecs_sparse_t *'
| |-ParmVarDecl 0x560467fb9dd0 <line:1358:5, col:14> col:14 id 'uint64_t':'unsigned long'
| `-FullComment 0x56046811ddf0 <line:1354:4, col:51>
| `-ParagraphComment 0x56046811ddc0 <col:4, col:51>
| `-TextComment 0x56046811dd90 <col:4, col:51> Text=" Return identifier with current generation set. "
|-FunctionDecl 0x560467fba1f0 <line:1363:1, line:1366:18> line:1363:7 _flecs_sparse_get_dense 'void *(const ecs_sparse_t *, ecs_size_t, int32_t)'
| |-ParmVarDecl 0x560467fb9fd8 <line:1364:5, col:25> col:25 sparse 'const ecs_sparse_t *'
| |-ParmVarDecl 0x560467fba050 <line:1365:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fba0c8 <line:1366:5, col:13> col:13 index 'int32_t':'int'
| `-FullComment 0x56046811dee0 <line:1360:4, line:1361:76>
| `-ParagraphComment 0x56046811deb0 <line:1360:4, line:1361:76>
| |-TextComment 0x56046811de60 <line:1360:4, col:70> Text=" Get value from sparse set by dense id. This function is useful in "
| `-TextComment 0x56046811de80 <line:1361:3, col:76> Text=" combination with flecs_sparse_count for iterating all values in the set. "
|-FunctionDecl 0x560467fba3d8 <line:1374:1, line:1375:31> line:1374:9 flecs_sparse_count 'int32_t (const ecs_sparse_t *)'
| |-ParmVarDecl 0x560467fba2e8 <line:1375:5, col:25> col:25 sparse 'const ecs_sparse_t *'
| `-FullComment 0x56046811dfc0 <line:1372:4, col:56>
| `-ParagraphComment 0x56046811df90 <col:4, col:56>
| `-TextComment 0x56046811df60 <col:4, col:56> Text=" Get the number of alive elements in the sparse set. "
|-FunctionDecl 0x560467fba548 <line:1379:1, line:1380:31> line:1379:9 flecs_sparse_not_alive_count 'int32_t (const ecs_sparse_t *)'
| |-ParmVarDecl 0x560467fba4b8 <line:1380:5, col:25> col:25 sparse 'const ecs_sparse_t *'
| `-FullComment 0x56046811e090 <line:1377:4, col:66>
| `-ParagraphComment 0x56046811e060 <col:4, col:66>
| `-TextComment 0x56046811e030 <col:4, col:66> Text=" Get the number of not alive alive elements in the sparse set. "
|-FunctionDecl 0x560467fba6b8 <line:1384:1, line:1385:31> line:1384:9 flecs_sparse_size 'int32_t (const ecs_sparse_t *)'
| |-ParmVarDecl 0x560467fba628 <line:1385:5, col:25> col:25 sparse 'const ecs_sparse_t *'
| `-FullComment 0x56046811e160 <line:1382:4, col:65>
| `-ParagraphComment 0x56046811e130 <col:4, col:65>
| `-TextComment 0x56046811e100 <col:4, col:65> Text=" Return total number of allocated elements in the dense array "
|-FunctionDecl 0x560467fba9b0 <line:1390:1, line:1393:16> line:1390:7 _flecs_sparse_get 'void *(const ecs_sparse_t *, ecs_size_t, uint64_t)'
| |-ParmVarDecl 0x560467fba798 <line:1391:5, col:25> col:25 sparse 'const ecs_sparse_t *'
| |-ParmVarDecl 0x560467fba810 <line:1392:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fba888 <line:1393:5, col:14> col:14 id 'uint64_t':'unsigned long'
| `-FullComment 0x56046811e250 <line:1387:4, line:1388:59>
| `-ParagraphComment 0x56046811e220 <line:1387:4, line:1388:59>
| |-TextComment 0x56046811e1d0 <line:1387:4, col:79> Text=" Get element by (sparse) id. The returned pointer is stable for the duration"
| `-TextComment 0x56046811e1f0 <line:1388:3, col:59> Text=" of the sparse set, as it is stored in the sparse array. "
|-FunctionDecl 0x560467fbac40 <line:1400:1, line:1403:16> line:1400:7 _flecs_sparse_get_any 'void *(const ecs_sparse_t *, ecs_size_t, uint64_t)'
| |-ParmVarDecl 0x560467fbaaa8 <line:1401:5, col:25> col:25 sparse 'const ecs_sparse_t *'
| |-ParmVarDecl 0x560467fbab20 <line:1402:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fbab98 <line:1403:5, col:14> col:14 id 'uint64_t':'unsigned long'
| `-FullComment 0x56046811e320 <line:1398:4, col:69>
| `-ParagraphComment 0x56046811e2f0 <col:4, col:69>
| `-TextComment 0x56046811e2c0 <col:4, col:69> Text=" Like get_sparse, but don't care whether element is alive or not. "
|-FunctionDecl 0x560467fbc0b0 <line:1410:1, line:1413:16> line:1410:7 _flecs_sparse_ensure 'void *(ecs_sparse_t *, ecs_size_t, uint64_t)'
| |-ParmVarDecl 0x560467fbad38 <line:1411:5, col:19> col:19 sparse 'ecs_sparse_t *'
| |-ParmVarDecl 0x560467fbbf90 <line:1412:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fbc008 <line:1413:5, col:14> col:14 id 'uint64_t':'unsigned long'
| `-FullComment 0x56046811e3f0 <line:1408:4, col:42>
| `-ParagraphComment 0x56046811e3c0 <col:4, col:42>
| `-TextComment 0x56046811e390 <col:4, col:42> Text=" Get or create element by (sparse) id. "
|-FunctionDecl 0x560467fbc340 <line:1420:1, line:1423:16> line:1420:7 _flecs_sparse_ensure_fast 'void *(ecs_sparse_t *, ecs_size_t, uint64_t)'
| |-ParmVarDecl 0x560467fbc1a8 <line:1421:5, col:19> col:19 sparse 'ecs_sparse_t *'
| |-ParmVarDecl 0x560467fbc220 <line:1422:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fbc298 <line:1423:5, col:14> col:14 id 'uint64_t':'unsigned long'
| `-FullComment 0x56046811e4c0 <line:1418:4, col:51>
| `-ParagraphComment 0x56046811e490 <col:4, col:51>
| `-TextComment 0x56046811e460 <col:4, col:51> Text=" Fast version of ensure, no liveliness checking "
|-FunctionDecl 0x560467fbc6f0 <line:1430:1, line:1434:16> line:1430:7 _flecs_sparse_set 'void *(ecs_sparse_t *, ecs_size_t, uint64_t, void *)'
| |-ParmVarDecl 0x560467fbc438 <line:1431:5, col:19> col:19 sparse 'ecs_sparse_t *'
| |-ParmVarDecl 0x560467fbc4b0 <line:1432:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fbc528 <line:1433:5, col:14> col:14 id 'uint64_t':'unsigned long'
| |-ParmVarDecl 0x560467fbc5a8 <line:1434:5, col:11> col:11 value 'void *'
| `-FullComment 0x56046811e590 <line:1428:4, col:15>
| `-ParagraphComment 0x56046811e560 <col:4, col:15>
| `-TextComment 0x56046811e530 <col:4, col:15> Text=" Set value. "
|-FunctionDecl 0x560467fbc8d8 <line:1441:1, line:1442:31> line:1441:17 flecs_sparse_ids 'const uint64_t *(const ecs_sparse_t *)'
| |-ParmVarDecl 0x560467fbc7e8 <line:1442:5, col:25> col:25 sparse 'const ecs_sparse_t *'
| `-FullComment 0x56046811e660 <line:1439:4, col:74>
| `-ParagraphComment 0x56046811e630 <col:4, col:74>
| `-TextComment 0x56046811e600 <col:4, col:74> Text=" Get pointer to ids (alive and not alive). Use with count() or size(). "
|-FunctionDecl 0x560467fbcb48 <line:1446:1, line:1448:23> line:1446:6 flecs_sparse_set_size 'void (ecs_sparse_t *, int32_t)'
| |-ParmVarDecl 0x560467fbc9b8 <line:1447:5, col:19> col:19 sparse 'ecs_sparse_t *'
| |-ParmVarDecl 0x560467fbca30 <line:1448:5, col:13> col:13 elem_count 'int32_t':'int'
| `-FullComment 0x56046811e730 <line:1444:4, col:33>
| `-ParagraphComment 0x56046811e700 <col:4, col:33>
| `-TextComment 0x56046811e6d0 <col:4, col:33> Text=" Set size of the dense array. "
|-FunctionDecl 0x560467fbcd28 <line:1452:1, line:1453:28> line:1452:15 flecs_sparse_copy 'ecs_sparse_t *(const ecs_sparse_t *)'
| |-ParmVarDecl 0x560467fbcc38 <line:1453:5, col:25> col:25 src 'const ecs_sparse_t *'
| `-FullComment 0x56046811e800 <line:1450:4, col:43>
| `-ParagraphComment 0x56046811e7d0 <col:4, col:43>
| `-TextComment 0x56046811e7a0 <col:4, col:43> Text=" Copy sparse set into a new sparse set. "
|-FunctionDecl 0x560467fbdbb0 <line:1457:1, line:1459:28> line:1457:6 flecs_sparse_restore 'void (ecs_sparse_t *, const ecs_sparse_t *)'
| |-ParmVarDecl 0x560467fbce08 <line:1458:5, col:19> col:19 dst 'ecs_sparse_t *'
| |-ParmVarDecl 0x560467fbce80 <line:1459:5, col:25> col:25 src 'const ecs_sparse_t *'
| `-FullComment 0x56046811e8d0 <line:1455:4, col:52>
| `-ParagraphComment 0x56046811e8a0 <col:4, col:52>
| `-TextComment 0x56046811e870 <col:4, col:52> Text=" Restore sparse set into destination sparse set. "
|-FunctionDecl 0x560467fbdd68 <line:1466:1, line:1467:25> line:1466:15 _ecs_sparse_new 'ecs_sparse_t *(ecs_size_t)'
| `-ParmVarDecl 0x560467fbdc70 <line:1467:5, col:16> col:16 elem_size 'ecs_size_t':'int'
|-FunctionDecl 0x560467fbdf38 <line:1473:1, line:1475:25> line:1473:7 _ecs_sparse_add 'void *(ecs_sparse_t *, ecs_size_t)'
| |-ParmVarDecl 0x560467fbde20 <line:1474:5, col:19> col:19 sparse 'ecs_sparse_t *'
| `-ParmVarDecl 0x560467fbde98 <line:1475:5, col:16> col:16 elem_size 'ecs_size_t':'int'
|-FunctionDecl 0x560467fbe088 <line:1481:1, line:1482:31> line:1481:10 ecs_sparse_last_id 'uint64_t (const ecs_sparse_t *)'
| `-ParmVarDecl 0x560467fbdff8 <line:1482:5, col:25> col:25 sparse 'const ecs_sparse_t *'
|-FunctionDecl 0x560467fbe1d0 <line:1485:1, line:1486:31> line:1485:9 ecs_sparse_count 'int32_t (const ecs_sparse_t *)'
| `-ParmVarDecl 0x560467fbe140 <line:1486:5, col:25> col:25 sparse 'const ecs_sparse_t *'
|-FunctionDecl 0x560467fbe3c8 <line:1490:1, line:1492:16> line:1490:6 flecs_sparse_set_generation 'void (ecs_sparse_t *, uint64_t)'
| |-ParmVarDecl 0x560467fbe2b8 <line:1491:5, col:19> col:19 sparse 'ecs_sparse_t *'
| |-ParmVarDecl 0x560467fbe330 <line:1492:5, col:14> col:14 id 'uint64_t':'unsigned long'
| `-FullComment 0x56046811e9a0 <line:1488:4, col:52>
| `-ParagraphComment 0x56046811e970 <col:4, col:52>
| `-TextComment 0x56046811e940 <col:4, col:52> Text=" Override the generation count for a specific id "
|-FunctionDecl 0x560467fbe620 <line:1495:1, line:1498:18> line:1495:7 _ecs_sparse_get_dense 'void *(const ecs_sparse_t *, ecs_size_t, int32_t)'
| |-ParmVarDecl 0x560467fbe488 <line:1496:5, col:25> col:25 sparse 'const ecs_sparse_t *'
| |-ParmVarDecl 0x560467fbe500 <line:1497:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| `-ParmVarDecl 0x560467fbe578 <line:1498:5, col:13> col:13 index 'int32_t':'int'
|-FunctionDecl 0x560467fbe880 <line:1504:1, line:1507:16> line:1504:7 _ecs_sparse_get 'void *(const ecs_sparse_t *, ecs_size_t, uint64_t)'
| |-ParmVarDecl 0x560467fbe6e8 <line:1505:5, col:25> col:25 sparse 'const ecs_sparse_t *'
| |-ParmVarDecl 0x560467fbe760 <line:1506:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| `-ParmVarDecl 0x560467fbe7d8 <line:1507:5, col:14> col:14 id 'uint64_t':'unsigned long'
|-RecordDecl 0x560467fbe968 <line:1527:9, line:1530:1> line:1527:16 struct ecs_block_allocator_block_t definition
| |-FieldDecl 0x560467fbea28 <line:1528:5, col:11> col:11 memory 'void *'
| `-FieldDecl 0x560467fbeb30 <line:1529:5, col:41> col:41 next 'struct ecs_block_allocator_block_t *'
|-TypedefDecl 0x560467fc0158 <line:1527:1, line:1530:3> col:3 referenced ecs_block_allocator_block_t 'struct ecs_block_allocator_block_t':'struct ecs_block_allocator_block_t'
| `-ElaboratedType 0x560467fc0100 'struct ecs_block_allocator_block_t' sugar
| `-RecordType 0x560467fbe9f0 'struct ecs_block_allocator_block_t'
| `-Record 0x560467fbe968 'ecs_block_allocator_block_t'
|-RecordDecl 0x560467fc01c8 <line:1532:9, line:1534:1> line:1532:16 struct ecs_block_allocator_chunk_header_t definition
| `-FieldDecl 0x560467fc0320 <line:1533:5, col:48> col:48 next 'struct ecs_block_allocator_chunk_header_t *'
|-TypedefDecl 0x560467fc03c8 <line:1532:1, line:1534:3> col:3 referenced ecs_block_allocator_chunk_header_t 'struct ecs_block_allocator_chunk_header_t':'struct ecs_block_allocator_chunk_header_t'
| `-ElaboratedType 0x560467fc0370 'struct ecs_block_allocator_chunk_header_t' sugar
| `-RecordType 0x560467fc0250 'struct ecs_block_allocator_chunk_header_t'
| `-Record 0x560467fc01c8 'ecs_block_allocator_chunk_header_t'
|-RecordDecl 0x560467fc0438 prev 0x560467fb4280 <line:1536:9, line:1545:1> line:1536:16 struct ecs_block_allocator_t definition
| |-FieldDecl 0x560467fc0518 <line:1537:5, col:41> col:41 head 'ecs_block_allocator_chunk_header_t *'
| |-FieldDecl 0x560467fc05c8 <line:1538:5, col:34> col:34 block_head 'ecs_block_allocator_block_t *'
| |-FieldDecl 0x560467fc0628 <line:1539:5, col:34> col:34 block_tail 'ecs_block_allocator_block_t *'
| |-FieldDecl 0x560467fc0688 <line:1540:5, col:13> col:13 chunk_size 'int32_t':'int'
| |-FieldDecl 0x560467fc06e8 <line:1541:5, col:13> col:13 data_size 'int32_t':'int'
| |-FieldDecl 0x560467fc0748 <line:1542:5, col:13> col:13 chunks_per_block 'int32_t':'int'
| |-FieldDecl 0x560467fc07a8 <line:1543:5, col:13> col:13 block_size 'int32_t':'int'
| `-FieldDecl 0x560467fc0808 <line:1544:5, col:13> col:13 alloc_count 'int32_t':'int'
|-TypedefDecl 0x560467fc08b8 <line:1536:1, line:1545:3> col:3 referenced ecs_block_allocator_t 'struct ecs_block_allocator_t':'struct ecs_block_allocator_t'
| `-ElaboratedType 0x560467fc0860 'struct ecs_block_allocator_t' sugar
| `-RecordType 0x560467fb4300 'struct ecs_block_allocator_t'
| `-Record 0x560467fc0438 'ecs_block_allocator_t'
|-FunctionDecl 0x560467fc0b18 <line:1548:1, line:1550:20> line:1548:6 flecs_ballocator_init 'void (ecs_block_allocator_t *, ecs_size_t)'
| |-ParmVarDecl 0x560467fc0988 <line:1549:5, col:28> col:28 ba 'ecs_block_allocator_t *'
| `-ParmVarDecl 0x560467fc0a00 <line:1550:5, col:16> col:16 size 'ecs_size_t':'int'
|-FunctionDecl 0x560467fc0cc8 <line:1558:1, line:1559:20> line:1558:24 flecs_ballocator_new 'ecs_block_allocator_t *(ecs_size_t)'
| `-ParmVarDecl 0x560467fc0bd8 <line:1559:5, col:16> col:16 size 'ecs_size_t':'int'
|-FunctionDecl 0x560467fc0e78 <line:1562:1, line:1563:30> line:1562:6 flecs_ballocator_fini 'void (ecs_block_allocator_t *)'
| `-ParmVarDecl 0x560467fc0d80 <line:1563:5, col:28> col:28 ba 'ecs_block_allocator_t *'
|-FunctionDecl 0x560467fc0fc0 <line:1566:1, line:1567:30> line:1566:6 flecs_ballocator_free 'void (ecs_block_allocator_t *)'
| `-ParmVarDecl 0x560467fc0f30 <line:1567:5, col:28> col:28 ba 'ecs_block_allocator_t *'
|-FunctionDecl 0x560467fc14e0 <line:1570:1, line:1571:37> line:1570:7 flecs_balloc 'void *(ecs_block_allocator_t *)'
| `-ParmVarDecl 0x560467fc1078 <line:1571:5, col:28> col:28 allocator 'ecs_block_allocator_t *'
|-FunctionDecl 0x560467fc1630 <line:1574:1, line:1575:37> line:1574:7 flecs_bcalloc 'void *(ecs_block_allocator_t *)'
| `-ParmVarDecl 0x560467fc1598 <line:1575:5, col:28> col:28 allocator 'ecs_block_allocator_t *'
|-FunctionDecl 0x560467fc1878 <line:1578:1, line:1580:17> line:1578:6 flecs_bfree 'void (ecs_block_allocator_t *, void *)'
| |-ParmVarDecl 0x560467fc16e8 <line:1579:5, col:28> col:28 allocator 'ecs_block_allocator_t *'
| `-ParmVarDecl 0x560467fc1768 <line:1580:5, col:11> col:11 memory 'void *'
|-FunctionDecl 0x560467fc1b60 <line:1583:1, line:1586:17> line:1583:7 flecs_brealloc 'void *(ecs_block_allocator_t *, ecs_block_allocator_t *, void *)'
| |-ParmVarDecl 0x560467fc1938 <line:1584:5, col:28> col:28 dst 'ecs_block_allocator_t *'
| |-ParmVarDecl 0x560467fc19b0 <line:1585:5, col:28> col:28 src 'ecs_block_allocator_t *'
| `-ParmVarDecl 0x560467fc1a30 <line:1586:5, col:11> col:11 memory 'void *'
|-FunctionDecl 0x560467fc1dc0 <line:1589:1, line:1591:17> line:1589:7 flecs_bdup 'void *(ecs_block_allocator_t *, void *)'
| |-ParmVarDecl 0x560467fc1c28 <line:1590:5, col:28> col:28 ba 'ecs_block_allocator_t *'
| `-ParmVarDecl 0x560467fc1ca8 <line:1591:5, col:11> col:11 memory 'void *'
|-TypedefDecl 0x560467fc1ea8 <line:1608:1, col:18> col:18 referenced ecs_map_key_t 'uint64_t':'unsigned long'
| `-TypedefType 0x560467f8cd90 'uint64_t' sugar
| |-Typedef 0x560467f87e80 'uint64_t'
| `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| |-Typedef 0x560467f7e4e0 '__uint64_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-RecordDecl 0x560467fc1f00 <line:1611:9, line:1615:1> line:1611:16 struct ecs_bucket_entry_t definition
| |-FieldDecl 0x560467fc2050 <line:1612:5, col:32> col:32 next 'struct ecs_bucket_entry_t *'
| `-FieldDecl 0x560467fc20d0 <line:1613:5, col:19> col:19 key 'ecs_map_key_t':'unsigned long'
|-TypedefDecl 0x560467fc2178 <line:1611:1, line:1615:3> col:3 referenced ecs_bucket_entry_t 'struct ecs_bucket_entry_t':'struct ecs_bucket_entry_t'
| `-ElaboratedType 0x560467fc2120 'struct ecs_bucket_entry_t' sugar
| `-RecordType 0x560467fc1f80 'struct ecs_bucket_entry_t'
| `-Record 0x560467fc1f00 'ecs_bucket_entry_t'
|-RecordDecl 0x560467fc21e8 <line:1617:9, line:1619:1> line:1617:16 struct ecs_bucket_t definition
| `-FieldDecl 0x560467fc22e8 <line:1618:5, col:25> col:25 first 'ecs_bucket_entry_t *'
|-TypedefDecl 0x560467fc2398 <line:1617:1, line:1619:3> col:3 referenced ecs_bucket_t 'struct ecs_bucket_t':'struct ecs_bucket_t'
| `-ElaboratedType 0x560467fc2340 'struct ecs_bucket_t' sugar
| `-RecordType 0x560467fc2270 'struct ecs_bucket_t'
| `-Record 0x560467fc21e8 'ecs_bucket_t'
|-RecordDecl 0x560467fc24a0 <line:1621:9, line:1631:1> line:1621:16 struct ecs_map_t definition
| |-FieldDecl 0x560467fc25c8 <line:1622:5, col:19> col:19 buckets 'ecs_bucket_t *'
| |-FieldDecl 0x560467fc2628 <line:1623:5, col:19> col:19 buckets_end 'ecs_bucket_t *'
| |-FieldDecl 0x560467fc2688 <line:1624:5, col:13> col:13 elem_size 'int16_t':'short'
| |-FieldDecl 0x560467fc26e8 <line:1625:5, col:13> col:13 bucket_shift 'uint8_t':'unsigned char'
| |-FieldDecl 0x560467fc2748 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:1626:10> col:10 shared_allocator 'bool'
| |-FieldDecl 0x560467fc27a8 <line:1627:5, col:13> col:13 bucket_count 'int32_t':'int'
| |-FieldDecl 0x560467fc2808 <line:1628:5, col:13> col:13 count 'int32_t':'int'
| |-FieldDecl 0x560467fc2880 <line:1629:5, col:29> col:29 allocator 'struct ecs_allocator_t *'
| `-FieldDecl 0x560467fc28f8 <line:1630:5, col:35> col:35 entry_allocator 'struct ecs_block_allocator_t *'
|-TypedefDecl 0x560467fc29a8 <line:1621:1, line:1631:3> col:3 referenced ecs_map_t 'struct ecs_map_t':'struct ecs_map_t'
| `-ElaboratedType 0x560467fc2950 'struct ecs_map_t' sugar
| `-RecordType 0x560467fc2520 'struct ecs_map_t'
| `-Record 0x560467fc24a0 'ecs_map_t'
|-RecordDecl 0x560467fc2a18 <line:1633:9, line:1637:1> line:1633:16 struct ecs_map_iter_t definition
| |-FieldDecl 0x560467fc2b48 <line:1634:5, col:22> col:22 map 'const ecs_map_t *'
| |-FieldDecl 0x560467fc2ba8 <line:1635:5, col:19> col:19 bucket 'ecs_bucket_t *'
| `-FieldDecl 0x560467fc2c08 <line:1636:5, col:25> col:25 entry 'ecs_bucket_entry_t *'
|-TypedefDecl 0x560467fc2cb8 <line:1633:1, line:1637:3> col:3 referenced ecs_map_iter_t 'struct ecs_map_iter_t':'struct ecs_map_iter_t'
| `-ElaboratedType 0x560467fc2c60 'struct ecs_map_iter_t' sugar
| `-RecordType 0x560467fc2aa0 'struct ecs_map_iter_t'
| `-Record 0x560467fc2a18 'ecs_map_iter_t'
|-RecordDecl 0x560467fc2d28 <line:1639:9, line:1644:1> line:1639:16 struct ecs_map_params_t definition
| |-FieldDecl 0x560467fc2de0 <line:1640:5, col:16> col:16 size 'ecs_size_t':'int'
| |-FieldDecl 0x560467fc2e58 <line:1641:5, col:29> col:29 allocator 'struct ecs_allocator_t *'
| |-FieldDecl 0x560467fc2ec8 <line:1642:5, col:34> col:34 entry_allocator 'struct ecs_block_allocator_t':'struct ecs_block_allocator_t'
| `-FieldDecl 0x560467fc2f28 <line:1643:5, col:13> col:13 initial_count 'int32_t':'int'
|-TypedefDecl 0x560467fc2fd8 <line:1639:1, line:1644:3> col:3 referenced ecs_map_params_t 'struct ecs_map_params_t':'struct ecs_map_params_t'
| `-ElaboratedType 0x560467fc2f80 'struct ecs_map_params_t' sugar
| `-RecordType 0x560467fc2db0 'struct ecs_map_params_t'
| `-Record 0x560467fc2d28 'ecs_map_params_t'
|-FunctionDecl 0x560467fc3308 <line:1649:1, line:1652:25> line:1649:6 _ecs_map_params_init 'void (ecs_map_params_t *, struct ecs_allocator_t *, ecs_size_t)'
| |-ParmVarDecl 0x560467fc30d8 <line:1650:5, col:23> col:23 params 'ecs_map_params_t *'
| |-ParmVarDecl 0x560467fc3168 <line:1651:5, col:29> col:29 allocator 'struct ecs_allocator_t *'
| `-ParmVarDecl 0x560467fc31e0 <line:1652:5, col:16> col:16 elem_size 'ecs_size_t':'int'
|-FunctionDecl 0x560467fc4828 <line:1658:1, line:1659:29> line:1658:6 ecs_map_params_fini 'void (ecs_map_params_t *)'
| `-ParmVarDecl 0x560467fc33d0 <line:1659:5, col:23> col:23 params 'ecs_map_params_t *'
|-FunctionDecl 0x560467fc4c28 <line:1663:1, line:1667:26> line:1663:6 _ecs_map_init 'void (ecs_map_t *, ecs_size_t, struct ecs_allocator_t *, int32_t)'
| |-ParmVarDecl 0x560467fc4968 <line:1664:5, col:16> col:16 map 'ecs_map_t *'
| |-ParmVarDecl 0x560467fc49e0 <line:1665:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fc4a70 <line:1666:5, col:29> col:29 allocator 'struct ecs_allocator_t *'
| |-ParmVarDecl 0x560467fc4ae8 <line:1667:5, col:13> col:13 initial_count 'int32_t':'int'
| `-FullComment 0x56046811ea70 <line:1661:4, col:24>
| `-ParagraphComment 0x56046811ea40 <col:4, col:24>
| `-TextComment 0x56046811ea10 <col:4, col:24> Text=" Initialize new map. "
|-FunctionDecl 0x560467fc4eb8 <line:1674:1, line:1676:29> line:1674:6 _ecs_map_init_w_params 'void (ecs_map_t *, ecs_map_params_t *)'
| |-ParmVarDecl 0x560467fc4d28 <line:1675:5, col:16> col:16 map 'ecs_map_t *'
| |-ParmVarDecl 0x560467fc4da0 <line:1676:5, col:23> col:23 params 'ecs_map_params_t *'
| `-FullComment 0x56046811eb40 <line:1672:4, col:24>
| `-ParagraphComment 0x56046811eb10 <col:4, col:24>
| `-TextComment 0x56046811eae0 <col:4, col:24> Text=" Initialize new map. "
|-FunctionDecl 0x560467fc51d0 <line:1683:1, line:1687:23> line:1683:6 _ecs_map_init_if 'void (ecs_map_t *, ecs_size_t, struct ecs_allocator_t *, int32_t)'
| |-ParmVarDecl 0x560467fc4fa8 <line:1684:5, col:16> col:16 map 'ecs_map_t *'
| |-ParmVarDecl 0x560467fc5020 <line:1685:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fc50b0 <line:1686:5, col:29> col:29 allocator 'struct ecs_allocator_t *'
| |-ParmVarDecl 0x560467fc5128 <line:1687:5, col:13> col:13 elem_count 'int32_t':'int'
| `-FullComment 0x56046811ec10 <line:1681:4, col:63>
| `-ParagraphComment 0x56046811ebe0 <col:4, col:63>
| `-TextComment 0x56046811ebb0 <col:4, col:63> Text=" Initialize new map if uninitialized, leave as is otherwise "
|-FunctionDecl 0x560467fc53b0 <line:1693:1, line:1695:29> line:1693:6 _ecs_map_init_w_params_if 'void (ecs_map_t *, ecs_map_params_t *)'
| |-ParmVarDecl 0x560467fc52a0 <line:1694:5, col:16> col:16 result 'ecs_map_t *'
| `-ParmVarDecl 0x560467fc5318 <line:1695:5, col:23> col:23 params 'ecs_map_params_t *'
|-FunctionDecl 0x560467fc5588 <line:1702:1, line:1703:19> line:1702:6 ecs_map_fini 'void (ecs_map_t *)'
| |-ParmVarDecl 0x560467fc5498 <line:1703:5, col:16> col:16 map 'ecs_map_t *'
| `-FullComment 0x56046811ece0 <line:1700:4, col:22>
| `-ParagraphComment 0x56046811ecb0 <col:4, col:22>
| `-TextComment 0x56046811ec80 <col:4, col:22> Text=" Deinitialize map. "
|-FunctionDecl 0x560467fc5d48 <line:1707:1, line:1710:23> line:1707:12 _ecs_map_new 'ecs_map_t *(ecs_size_t, struct ecs_allocator_t *, int32_t)'
| |-ParmVarDecl 0x560467fc5668 <line:1708:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fc56f8 <line:1709:5, col:29> col:29 allocator 'struct ecs_allocator_t *'
| |-ParmVarDecl 0x560467fc5770 <line:1710:5, col:13> col:13 elem_count 'int32_t':'int'
| `-FullComment 0x56046811edb0 <line:1705:4, col:20>
| `-ParagraphComment 0x56046811ed80 <col:4, col:20>
| `-TextComment 0x56046811ed50 <col:4, col:20> Text=" Create new map. "
|-FunctionDecl 0x560467fc5f28 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:1717:28> line:1716:6 ecs_map_is_initialized 'bool (const ecs_map_t *)'
| |-ParmVarDecl 0x560467fc5e38 <line:1717:5, col:22> col:22 result 'const ecs_map_t *'
| `-FullComment 0x56046811ee80 <line:1715:4, col:23>
| `-ParagraphComment 0x56046811ee50 <col:4, col:23>
| `-TextComment 0x56046811ee20 <col:4, col:23> Text=" Is map initialized "
|-FunctionDecl 0x560467fc6220 <line:1721:1, line:1724:22> line:1721:7 _ecs_map_get 'void *(const ecs_map_t *, ecs_size_t, ecs_map_key_t)'
| |-ParmVarDecl 0x560467fc6008 <line:1722:5, col:22> col:22 map 'const ecs_map_t *'
| |-ParmVarDecl 0x560467fc6080 <line:1723:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fc60f8 <line:1724:5, col:19> col:19 key 'ecs_map_key_t':'unsigned long'
| `-FullComment 0x56046811ef50 <line:1719:4, col:65>
| `-ParagraphComment 0x56046811ef20 <col:4, col:65>
| `-TextComment 0x56046811eef0 <col:4, col:65> Text=" Get element for key, returns NULL if they key doesn't exist. "
|-FunctionDecl 0x560467fc64b0 <line:1734:1, line:1736:22> line:1734:7 _ecs_map_get_ptr 'void *(const ecs_map_t *, ecs_map_key_t)'
| |-ParmVarDecl 0x560467fc6318 <line:1735:5, col:22> col:22 map 'const ecs_map_t *'
| |-ParmVarDecl 0x560467fc6390 <line:1736:5, col:19> col:19 key 'ecs_map_key_t':'unsigned long'
| `-FullComment 0x56046811f090 <line:1729:4, line:1732:49>
| `-ParagraphComment 0x56046811f060 <line:1729:4, line:1732:49>
| |-TextComment 0x56046811efc0 <line:1729:4, col:77> Text=" Get pointer element. This dereferences the map element as a pointer. This"
| |-TextComment 0x56046811efe0 <line:1730:3, col:79> Text=" operation returns NULL when either the element does not exist or whether the"
| |-TextComment 0x56046811f000 <line:1731:3, col:80> Text=" pointer is NULL, and should therefore only be used when the application knows"
| `-TextComment 0x56046811f020 <line:1732:3, col:49> Text=" for sure that a pointer should never be NULL. "
|-FunctionDecl 0x560467fc6728 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:1745:22> line:1743:6 ecs_map_has 'bool (const ecs_map_t *, ecs_map_key_t)'
| |-ParmVarDecl 0x560467fc6598 <line:1744:5, col:22> col:22 map 'const ecs_map_t *'
| |-ParmVarDecl 0x560467fc6610 <line:1745:5, col:19> col:19 key 'ecs_map_key_t':'unsigned long'
| `-FullComment 0x56046811f160 <line:1741:4, col:24>
| `-ParagraphComment 0x56046811f130 <col:4, col:24>
| `-TextComment 0x56046811f100 <col:4, col:24> Text=" Test if map has key "
|-FunctionDecl 0x560467fc6a30 <line:1749:1, line:1752:22> line:1749:7 _ecs_map_ensure 'void *(ecs_map_t *, ecs_size_t, ecs_map_key_t)'
| |-ParmVarDecl 0x560467fc6818 <line:1750:5, col:16> col:16 map 'ecs_map_t *'
| |-ParmVarDecl 0x560467fc6890 <line:1751:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fc6908 <line:1752:5, col:19> col:19 key 'ecs_map_key_t':'unsigned long'
| `-FullComment 0x56046811f230 <line:1747:4, col:35>
| `-ParagraphComment 0x56046811f200 <col:4, col:35>
| `-TextComment 0x56046811f1d0 <col:4, col:35> Text=" Get or create element for key. "
|-FunctionDecl 0x560467fc8970 <line:1759:1, line:1763:24> line:1759:7 _ecs_map_set 'void *(ecs_map_t *, ecs_size_t, ecs_map_key_t, const void *)'
| |-ParmVarDecl 0x560467fc6b28 <line:1760:5, col:16> col:16 map 'ecs_map_t *'
| |-ParmVarDecl 0x560467fc6ba0 <line:1761:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fc6c18 <line:1762:5, col:19> col:19 key 'ecs_map_key_t':'unsigned long'
| |-ParmVarDecl 0x560467fc8828 <line:1763:5, col:17> col:17 payload 'const void *'
| `-FullComment 0x56046811f300 <line:1757:4, col:17>
| `-ParagraphComment 0x56046811f2d0 <col:4, col:17>
| `-TextComment 0x56046811f2a0 <col:4, col:17> Text=" Set element. "
|-FunctionDecl 0x560467fc8af8 <line:1773:1, line:1774:19> line:1773:6 ecs_map_free 'void (ecs_map_t *)'
| |-ParmVarDecl 0x560467fc8a68 <line:1774:5, col:16> col:16 map 'ecs_map_t *'
| `-FullComment 0x56046811f3d0 <line:1771:4, col:14>
| `-ParagraphComment 0x56046811f3a0 <col:4, col:14>
| `-TextComment 0x56046811f370 <col:4, col:14> Text=" Free map. "
|-FunctionDecl 0x560467fc8d68 <line:1780:1, line:1782:22> line:1780:9 ecs_map_remove 'int32_t (ecs_map_t *, ecs_map_key_t)'
| |-ParmVarDecl 0x560467fc8bd8 <line:1781:5, col:16> col:16 map 'ecs_map_t *'
| |-ParmVarDecl 0x560467fc8c50 <line:1782:5, col:19> col:19 key 'ecs_map_key_t':'unsigned long'
| `-FullComment 0x56046811f4c0 <line:1776:4, line:1777:40>
| `-ParagraphComment 0x56046811f490 <line:1776:4, line:1777:40>
| |-TextComment 0x56046811f440 <line:1776:4, col:24> Text=" Remove key from map."
| `-TextComment 0x56046811f460 <line:1777:3, col:40> Text=" Returns number of remaining elements."
|-FunctionDecl 0x560467fc8ee8 <line:1786:1, line:1787:19> line:1786:6 ecs_map_clear 'void (ecs_map_t *)'
| |-ParmVarDecl 0x560467fc8e58 <line:1787:5, col:16> col:16 map 'ecs_map_t *'
| `-FullComment 0x56046811f590 <line:1784:4, col:34>
| `-ParagraphComment 0x56046811f560 <col:4, col:34>
| `-TextComment 0x56046811f530 <col:4, col:34> Text=" Remove all elements from map. "
|-FunctionDecl 0x560467fc90b8 <line:1791:1, line:1792:25> line:1791:9 ecs_map_count 'int32_t (const ecs_map_t *)'
| |-ParmVarDecl 0x560467fc8fc8 <line:1792:5, col:22> col:22 map 'const ecs_map_t *'
| `-FullComment 0x56046811f660 <line:1789:4, col:38>
| `-ParagraphComment 0x56046811f630 <col:4, col:38>
| `-TextComment 0x56046811f600 <col:4, col:38> Text=" Return number of elements in map. "
|-FunctionDecl 0x560467fc9228 <line:1796:1, line:1797:25> line:1796:9 ecs_map_bucket_count 'int32_t (const ecs_map_t *)'
| |-ParmVarDecl 0x560467fc9198 <line:1797:5, col:22> col:22 map 'const ecs_map_t *'
| `-FullComment 0x56046811f730 <line:1794:4, col:37>
| `-ParagraphComment 0x56046811f700 <col:4, col:37>
| `-TextComment 0x56046811f6d0 <col:4, col:37> Text=" Return number of buckets in map. "
|-FunctionDecl 0x560467fc9428 <line:1801:1, line:1802:25> line:1801:16 ecs_map_iter 'ecs_map_iter_t (const ecs_map_t *)'
| |-ParmVarDecl 0x560467fc9330 <line:1802:5, col:22> col:22 map 'const ecs_map_t *'
| `-FullComment 0x56046811f800 <line:1799:4, col:37>
| `-ParagraphComment 0x56046811f7d0 <col:4, col:37>
| `-TextComment 0x56046811f7a0 <col:4, col:37> Text=" Return iterator to map contents. "
|-FunctionDecl 0x560467fc9d20 <line:1806:1, line:1809:23> line:1806:7 _ecs_map_next 'void *(ecs_map_iter_t *, ecs_size_t, ecs_map_key_t *)'
| |-ParmVarDecl 0x560467fc9568 <line:1807:5, col:21> col:21 iter 'ecs_map_iter_t *'
| |-ParmVarDecl 0x560467fc95e0 <line:1808:5, col:16> col:16 elem_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560467fc9688 <line:1809:5, col:20> col:20 key 'ecs_map_key_t *'
| `-FullComment 0x56046811f8d0 <line:1804:4, col:46>
| `-ParagraphComment 0x56046811f8a0 <col:4, col:46>
| `-TextComment 0x56046811f870 <col:4, col:46> Text=" Obtain next element in map from iterator. "
|-FunctionDecl 0x560467fc9fb0 <line:1816:1, line:1818:23> line:1816:7 _ecs_map_next_ptr 'void *(ecs_map_iter_t *, ecs_map_key_t *)'
| |-ParmVarDecl 0x560467fc9e18 <line:1817:5, col:21> col:21 iter 'ecs_map_iter_t *'
| |-ParmVarDecl 0x560467fc9e90 <line:1818:5, col:20> col:20 key 'ecs_map_key_t *'
| `-FullComment 0x56046811f9a0 <line:1814:4, col:68>
| `-ParagraphComment 0x56046811f970 <col:4, col:68>
| `-TextComment 0x56046811f940 <col:4, col:68> Text=" Obtain next pointer element from iterator. See ecs_map_get_ptr. "
|-FunctionDecl 0x560467fca228 <line:1825:1, line:1827:23> line:1825:6 ecs_map_grow 'void (ecs_map_t *, int32_t)'
| |-ParmVarDecl 0x560467fca098 <line:1826:5, col:16> col:16 map 'ecs_map_t *'
| |-ParmVarDecl 0x560467fca110 <line:1827:5, col:13> col:13 elem_count 'int32_t':'int'
| `-FullComment 0x56046811fa70 <line:1823:4, col:72>
| `-ParagraphComment 0x56046811fa40 <col:4, col:72>
| `-TextComment 0x56046811fa10 <col:4, col:72> Text=" Grow number of buckets in the map for specified number of elements. "
|-FunctionDecl 0x560467fca428 <line:1831:1, line:1833:23> line:1831:6 ecs_map_set_size 'void (ecs_map_t *, int32_t)'
| |-ParmVarDecl 0x560467fca318 <line:1832:5, col:16> col:16 map 'ecs_map_t *'
| |-ParmVarDecl 0x560467fca390 <line:1833:5, col:13> col:13 elem_count 'int32_t':'int'
| `-FullComment 0x56046811fb40 <line:1829:4, col:71>
| `-ParagraphComment 0x56046811fb10 <col:4, col:71>
| `-TextComment 0x56046811fae0 <col:4, col:71> Text=" Set number of buckets in the map for specified number of elements. "
|-FunctionDecl 0x560467fca608 <line:1837:1, line:1838:19> line:1837:12 ecs_map_copy 'ecs_map_t *(ecs_map_t *)'
| |-ParmVarDecl 0x560467fca518 <line:1838:5, col:16> col:16 map 'ecs_map_t *'
| `-FullComment 0x56046811fc10 <line:1835:4, col:14>
| `-ParagraphComment 0x56046811fbe0 <col:4, col:14>
| `-TextComment 0x56046811fbb0 <col:4, col:14> Text=" Copy map. "
|-VarDecl 0x560467fca710 <line:1869:15, col:30> col:30 ecs_block_allocator_alloc_count 'int64_t':'long' extern
|-VarDecl 0x560467fca788 <line:1870:15, col:30> col:30 ecs_block_allocator_free_count 'int64_t':'long' extern
|-VarDecl 0x560467fca800 <line:1871:15, col:30> col:30 ecs_stack_allocator_alloc_count 'int64_t':'long' extern
|-VarDecl 0x560467fca878 <line:1872:15, col:30> col:30 ecs_stack_allocator_free_count 'int64_t':'long' extern
|-RecordDecl 0x560467fca8e0 prev 0x560467fb40b8 <line:1874:9, line:1877:1> line:1874:16 struct ecs_allocator_t definition
| |-FieldDecl 0x560467fca970 <line:1875:5, col:27> col:27 chunks 'ecs_block_allocator_t':'struct ecs_block_allocator_t'
| `-FieldDecl 0x560467fcaa10 <line:1876:5, col:25> col:25 sizes 'struct ecs_sparse_t':'struct ecs_sparse_t'
|-TypedefDecl 0x560467fcab48 <line:1874:1, line:1877:3> col:3 referenced ecs_allocator_t 'struct ecs_allocator_t':'struct ecs_allocator_t'
| `-ElaboratedType 0x560467fcaaf0 'struct ecs_allocator_t' sugar
| `-RecordType 0x560467fb4140 'struct ecs_allocator_t'
| `-Record 0x560467fca8e0 'ecs_allocator_t'
|-FunctionDecl 0x560467fcb860 <line:1880:1, line:1881:23> line:1880:6 flecs_allocator_init 'void (ecs_allocator_t *)'
| `-ParmVarDecl 0x560467fcac18 <line:1881:5, col:22> col:22 a 'ecs_allocator_t *'
|-FunctionDecl 0x560467fcb9a8 <line:1884:1, line:1885:23> line:1884:6 flecs_allocator_fini 'void (ecs_allocator_t *)'
| `-ParmVarDecl 0x560467fcb918 <line:1885:5, col:22> col:22 a 'ecs_allocator_t *'
|-FunctionDecl 0x560467fcbbe8 <line:1888:1, line:1890:20> line:1888:24 flecs_allocator_get 'ecs_block_allocator_t *(ecs_allocator_t *, ecs_size_t)'
| |-ParmVarDecl 0x560467fcba60 <line:1889:5, col:22> col:22 a 'ecs_allocator_t *'
| `-ParmVarDecl 0x560467fcbad8 <line:1890:5, col:16> col:16 size 'ecs_size_t':'int'
|-FunctionDecl 0x560467fcbe40 <line:1893:1, line:1895:20> line:1893:7 flecs_strdup 'char *(ecs_allocator_t *, const char *)'
| |-ParmVarDecl 0x560467fcbca8 <line:1894:5, col:22> col:22 a 'ecs_allocator_t *'
| `-ParmVarDecl 0x560467fcbd28 <line:1895:5, col:17> col:17 str 'const char *'
|-FunctionDecl 0x560467fcc098 <line:1898:1, line:1900:14> line:1898:6 flecs_strfree 'void (ecs_allocator_t *, char *)'
| |-ParmVarDecl 0x560467fcbf00 <line:1899:5, col:22> col:22 a 'ecs_allocator_t *'
| `-ParmVarDecl 0x560467fcbf80 <line:1900:5, col:11> col:11 str 'char *'
|-FunctionDecl 0x560467fcc380 <line:1903:1, line:1906:20> line:1903:7 flecs_dup 'void *(ecs_allocator_t *, ecs_size_t, const void *)'
| |-ParmVarDecl 0x560467fcc158 <line:1904:5, col:22> col:22 a 'ecs_allocator_t *'
| |-ParmVarDecl 0x560467fcc1d0 <line:1905:5, col:16> col:16 size 'ecs_size_t':'int'
| `-ParmVarDecl 0x560467fcc250 <line:1906:5, col:17> col:17 src 'const void *'
|-RecordDecl 0x560467fcc468 <line:1950:9, line:1955:1> line:1950:16 struct ecs_strbuf_element definition
| |-FieldDecl 0x560467fcc520 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:1951:10> col:10 buffer_embedded 'bool'
| |-FieldDecl 0x560467fcc580 <line:1952:5, col:13> col:13 pos 'int32_t':'int'
| |-FieldDecl 0x560467fcc5e8 <line:1953:5, col:11> col:11 buf 'char *'
| `-FieldDecl 0x560467fcc6f0 <line:1954:5, col:32> col:32 next 'struct ecs_strbuf_element *'
|-TypedefDecl 0x560467fcc798 <line:1950:1, line:1955:3> col:3 referenced ecs_strbuf_element 'struct ecs_strbuf_element':'struct ecs_strbuf_element'
| `-ElaboratedType 0x560467fcc740 'struct ecs_strbuf_element' sugar
| `-RecordType 0x560467fcc4f0 'struct ecs_strbuf_element'
| `-Record 0x560467fcc468 'ecs_strbuf_element'
|-RecordDecl 0x560467fd0230 <line:1957:9, line:1960:1> line:1957:16 struct ecs_strbuf_element_embedded definition
| |-FieldDecl 0x560467fd0300 <line:1958:5, col:24> col:24 super 'ecs_strbuf_element':'struct ecs_strbuf_element'
| `-FieldDecl 0x560467fd0448 <line:1959:5, col:41> col:10 buf 'char[512]'
|-TypedefDecl 0x560467fd0568 <line:1957:1, line:1960:3> col:3 referenced ecs_strbuf_element_embedded 'struct ecs_strbuf_element_embedded':'struct ecs_strbuf_element_embedded'
| `-ElaboratedType 0x560467fd0510 'struct ecs_strbuf_element_embedded' sugar
| `-RecordType 0x560467fd02b0 'struct ecs_strbuf_element_embedded'
| `-Record 0x560467fd0230 'ecs_strbuf_element_embedded'
|-RecordDecl 0x560467fd05d8 <line:1962:9, line:1965:1> line:1962:16 struct ecs_strbuf_element_str definition
| |-FieldDecl 0x560467fd0690 <line:1963:5, col:24> col:24 super 'ecs_strbuf_element':'struct ecs_strbuf_element'
| `-FieldDecl 0x560467fd06f8 <line:1964:5, col:11> col:11 alloc_str 'char *'
|-TypedefDecl 0x560467fd07a8 <line:1962:1, line:1965:3> col:3 ecs_strbuf_element_str 'struct ecs_strbuf_element_str':'struct ecs_strbuf_element_str'
| `-ElaboratedType 0x560467fd0750 'struct ecs_strbuf_element_str' sugar
| `-RecordType 0x560467fd0660 'struct ecs_strbuf_element_str'
| `-Record 0x560467fd05d8 'ecs_strbuf_element_str'
|-RecordDecl 0x560467fd0818 <line:1967:9, line:1970:1> line:1967:16 struct ecs_strbuf_list_elem definition
| |-FieldDecl 0x560467fd08d0 <line:1968:5, col:13> col:13 count 'int32_t':'int'
| `-FieldDecl 0x560467fd0938 <line:1969:5, col:17> col:17 separator 'const char *'
|-TypedefDecl 0x560467fd09e8 <line:1967:1, line:1970:3> col:3 referenced ecs_strbuf_list_elem 'struct ecs_strbuf_list_elem':'struct ecs_strbuf_list_elem'
| `-ElaboratedType 0x560467fd0990 'struct ecs_strbuf_list_elem' sugar
| `-RecordType 0x560467fd08a0 'struct ecs_strbuf_list_elem'
| `-Record 0x560467fd0818 'ecs_strbuf_list_elem'
|-RecordDecl 0x560467fd0a58 <line:1972:9, line:2001:1> line:1972:16 struct ecs_strbuf_t definition
| |-FieldDecl 0x560467fd0b18 <line:1974:5, col:11> col:11 buf 'char *'
| |-FieldDecl 0x560467fd0b78 <line:1977:5, col:13> col:13 max 'int32_t':'int'
| |-FieldDecl 0x560467fd0bd8 <line:1980:5, col:13> col:13 size 'int32_t':'int'
| |-FieldDecl 0x560467fd0c38 <line:1983:5, col:13> col:13 elementCount 'int32_t':'int'
| |-FieldDecl 0x560467fd0cc0 <line:1986:5, col:33> col:33 firstElement 'ecs_strbuf_element_embedded':'struct ecs_strbuf_element_embedded'
| |-FieldDecl 0x560467fd0d48 <line:1989:5, col:25> col:25 current 'ecs_strbuf_element *'
| |-FieldDecl 0x560467fd0f18 <line:1993:5, col:62> col:26 list_stack 'ecs_strbuf_list_elem[32]'
| |-FieldDecl 0x560467fd0f78 <line:1994:5, col:13> col:13 list_sp 'int32_t':'int'
| |-FieldDecl 0x560467fd0fe0 <line:1997:5, col:11> col:11 content 'char *'
| `-FieldDecl 0x560467fd1040 <line:2000:5, col:13> col:13 length 'int32_t':'int'
|-TypedefDecl 0x560467fd10e8 <line:1972:1, line:2001:3> col:3 referenced ecs_strbuf_t 'struct ecs_strbuf_t':'struct ecs_strbuf_t'
| `-ElaboratedType 0x560467fd1090 'struct ecs_strbuf_t' sugar
| `-RecordType 0x560467fd0ae0 'struct ecs_strbuf_t'
| `-Record 0x560467fd0a58 'ecs_strbuf_t'
|-FunctionDecl 0x560467fd13e0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2009:8> line:2006:6 ecs_strbuf_append 'bool (ecs_strbuf_t *, const char *, ...)'
| |-ParmVarDecl 0x560467fd1240 <line:2007:5, col:19> col:19 buffer 'ecs_strbuf_t *'
| `-ParmVarDecl 0x560467fd12c0 <line:2008:5, col:17> col:17 fmt 'const char *'
|-FunctionDecl 0x560467fd1748 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2017:17> line:2014:6 ecs_strbuf_vappend 'bool (ecs_strbuf_t *, const char *, struct __va_list_tag *)'
| |-ParmVarDecl 0x560467fd14a0 <line:2015:5, col:19> col:19 buffer 'ecs_strbuf_t *'
| |-ParmVarDecl 0x560467fd1520 <line:2016:5, col:17> col:17 fmt 'const char *'
| `-ParmVarDecl 0x560467fd1620 <line:2017:5, col:13> col:13 args 'struct __va_list_tag *':'struct __va_list_tag *'
|-FunctionDecl 0x560467fd19a8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2024:20> line:2022:6 ecs_strbuf_appendstr 'bool (ecs_strbuf_t *, const char *)'
| |-ParmVarDecl 0x560467fd1810 <line:2023:5, col:19> col:19 buffer 'ecs_strbuf_t *'
| `-ParmVarDecl 0x560467fd1890 <line:2024:5, col:17> col:17 str 'const char *'
|-FunctionDecl 0x560467fd1bf8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2031:12> line:2029:6 ecs_strbuf_appendch 'bool (ecs_strbuf_t *, char)'
| |-ParmVarDecl 0x560467fd1a68 <line:2030:5, col:19> col:19 buffer 'ecs_strbuf_t *'
| `-ParmVarDecl 0x560467fd1ae0 <line:2031:5, col:10> col:10 ch 'char'
|-FunctionDecl 0x560467fd1e48 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2038:14> line:2036:6 ecs_strbuf_appendint 'bool (ecs_strbuf_t *, int64_t)'
| |-ParmVarDecl 0x560467fd1cb8 <line:2037:5, col:19> col:19 buffer 'ecs_strbuf_t *'
| `-ParmVarDecl 0x560467fd1d30 <line:2038:5, col:13> col:13 v 'int64_t':'long'
|-FunctionDecl 0x560467fd2128 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2046:19> line:2043:6 ecs_strbuf_appendflt 'bool (ecs_strbuf_t *, double, char)'
| |-ParmVarDecl 0x560467fd1f08 <line:2044:5, col:19> col:19 buffer 'ecs_strbuf_t *'
| |-ParmVarDecl 0x560467fd1f88 <line:2045:5, col:12> col:12 v 'double'
| `-ParmVarDecl 0x560467fd2000 <line:2046:5, col:10> col:10 nan_delim 'char'
|-FunctionDecl 0x560467fd23d8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2053:29> line:2051:6 ecs_strbuf_mergebuff 'bool (ecs_strbuf_t *, ecs_strbuf_t *)'
| |-ParmVarDecl 0x560467fd2250 <line:2052:5, col:19> col:19 dst_buffer 'ecs_strbuf_t *'
| `-ParmVarDecl 0x560467fd22c8 <line:2053:5, col:19> col:19 src_buffer 'ecs_strbuf_t *'
|-FunctionDecl 0x560467fd2628 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2060:14> line:2058:6 ecs_strbuf_appendstr_zerocpy 'bool (ecs_strbuf_t *, char *)'
| |-ParmVarDecl 0x560467fd2498 <line:2059:5, col:19> col:19 buffer 'ecs_strbuf_t *'
| `-ParmVarDecl 0x560467fd2518 <line:2060:5, col:11> col:11 str 'char *'
|-FunctionDecl 0x560467fd2908 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2068:14> line:2065:6 ecs_strbuf_appendstr_zerocpyn 'bool (ecs_strbuf_t *, char *, int32_t)'
| |-ParmVarDecl 0x560467fd26e8 <line:2066:5, col:19> col:19 buffer 'ecs_strbuf_t *'
| |-ParmVarDecl 0x560467fd2768 <line:2067:5, col:11> col:11 str 'char *'
| `-ParmVarDecl 0x560467fd27e0 <line:2068:5, col:13> col:13 n 'int32_t':'int'
|-FunctionDecl 0x560467fd2ae8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2075:20> line:2073:6 ecs_strbuf_appendstr_zerocpy_const 'bool (ecs_strbuf_t *, const char *)'
| |-ParmVarDecl 0x560467fd29d0 <line:2074:5, col:19> col:19 buffer 'ecs_strbuf_t *'
| `-ParmVarDecl 0x560467fd2a50 <line:2075:5, col:17> col:17 str 'const char *'
|-FunctionDecl 0x560467fd2dc8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2083:14> line:2080:6 ecs_strbuf_appendstr_zerocpyn_const 'bool (ecs_strbuf_t *, const char *, int32_t)'
| |-ParmVarDecl 0x560467fd2ba8 <line:2081:5, col:19> col:19 buffer 'ecs_strbuf_t *'
| |-ParmVarDecl 0x560467fd2c28 <line:2082:5, col:17> col:17 str 'const char *'
| `-ParmVarDecl 0x560467fd2ca0 <line:2083:5, col:13> col:13 n 'int32_t':'int'
|-FunctionDecl 0x560467fd3028 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2091:14> line:2088:6 ecs_strbuf_appendstrn 'bool (ecs_strbuf_t *, const char *, int32_t)'
| |-ParmVarDecl 0x560467fd2e90 <line:2089:5, col:19> col:19 buffer 'ecs_strbuf_t *'
| |-ParmVarDecl 0x560467fd2f10 <line:2090:5, col:17> col:17 str 'const char *'
| `-ParmVarDecl 0x560467fd2f88 <line:2091:5, col:13> col:13 n 'int32_t':'int'
|-FunctionDecl 0x560467fd3260 <line:2095:1, line:2096:25> line:2095:7 ecs_strbuf_get 'char *(ecs_strbuf_t *)'
| `-ParmVarDecl 0x560467fd30f0 <line:2096:5, col:19> col:19 buffer 'ecs_strbuf_t *'
|-FunctionDecl 0x560467fd33b0 <line:2100:1, line:2101:25> line:2100:7 ecs_strbuf_get_small 'char *(ecs_strbuf_t *)'
| `-ParmVarDecl 0x560467fd3318 <line:2101:5, col:19> col:19 buffer 'ecs_strbuf_t *'
|-FunctionDecl 0x560467fd3558 <line:2105:1, line:2106:25> line:2105:6 ecs_strbuf_reset 'void (ecs_strbuf_t *)'
| `-ParmVarDecl 0x560467fd3468 <line:2106:5, col:19> col:19 buffer 'ecs_strbuf_t *'
|-FunctionDecl 0x560467fd3838 <line:2110:1, line:2113:26> line:2110:6 ecs_strbuf_list_push 'void (ecs_strbuf_t *, const char *, const char *)'
| |-ParmVarDecl 0x560467fd3610 <line:2111:5, col:19> col:19 buffer 'ecs_strbuf_t *'
| |-ParmVarDecl 0x560467fd3690 <line:2112:5, col:17> col:17 list_open 'const char *'
| `-ParmVarDecl 0x560467fd3710 <line:2113:5, col:17> col:17 separator 'const char *'
|-FunctionDecl 0x560467fd3a98 <line:2117:1, line:2119:27> line:2117:6 ecs_strbuf_list_pop 'void (ecs_strbuf_t *, const char *)'
| |-ParmVarDecl 0x560467fd3900 <line:2118:5, col:19> col:19 buffer 'ecs_strbuf_t *'
| `-ParmVarDecl 0x560467fd3980 <line:2119:5, col:17> col:17 list_close 'const char *'
|-FunctionDecl 0x560467fd3be8 <line:2123:1, line:2124:25> line:2123:6 ecs_strbuf_list_next 'void (ecs_strbuf_t *)'
| `-ParmVarDecl 0x560467fd3b58 <line:2124:5, col:19> col:19 buffer 'ecs_strbuf_t *'
|-FunctionDecl 0x560467fd3db0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2130:12> line:2128:6 ecs_strbuf_list_appendch 'bool (ecs_strbuf_t *, char)'
| |-ParmVarDecl 0x560467fd3ca0 <line:2129:5, col:19> col:19 buffer 'ecs_strbuf_t *'
| `-ParmVarDecl 0x560467fd3d18 <line:2130:5, col:10> col:10 ch 'char'
|-FunctionDecl 0x560467fd3f88 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2137:8> line:2134:6 ecs_strbuf_list_append 'bool (ecs_strbuf_t *, const char *, ...)'
| |-ParmVarDecl 0x560467fd3e70 <line:2135:5, col:19> col:19 buffer 'ecs_strbuf_t *'
| `-ParmVarDecl 0x560467fd3ef0 <line:2136:5, col:17> col:17 fmt 'const char *'
|-FunctionDecl 0x560467fd4160 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2143:20> line:2141:6 ecs_strbuf_list_appendstr 'bool (ecs_strbuf_t *, const char *)'
| |-ParmVarDecl 0x560467fd4048 <line:2142:5, col:19> col:19 buffer 'ecs_strbuf_t *'
| `-ParmVarDecl 0x560467fd40c8 <line:2143:5, col:17> col:17 str 'const char *'
|-FunctionDecl 0x560467fd4408 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2150:14> line:2147:6 ecs_strbuf_list_appendstrn 'bool (ecs_strbuf_t *, const char *, int32_t)'
| |-ParmVarDecl 0x560467fd4270 <line:2148:5, col:19> col:19 buffer 'ecs_strbuf_t *'
| |-ParmVarDecl 0x560467fd42f0 <line:2149:5, col:17> col:17 str 'const char *'
| `-ParmVarDecl 0x560467fd4368 <line:2150:5, col:13> col:13 n 'int32_t':'int'
|-FunctionDecl 0x560467fd4618 <line:2153:1, line:2154:31> line:2153:9 ecs_strbuf_written 'int32_t (const ecs_strbuf_t *)'
| `-ParmVarDecl 0x560467fd4528 <line:2154:5, col:25> col:25 buffer 'const ecs_strbuf_t *'
|-FunctionDecl 0x560467fd4810 </usr/include/errno.h:37:1, /usr/include/sys/cdefs.h:315:56> /usr/include/errno.h:37:13 __errno_location 'int *(void)' extern
| |-NoThrowAttr 0x560467fd48b0 </usr/include/sys/cdefs.h:79:35>
| `-ConstAttr 0x560467fd4908 <line:315:46>
|-FunctionDecl 0x560467fd4a40 </usr/include/alloca.h:32:14> col:14 implicit alloca 'void *(unsigned long)' extern
| |-ParmVarDecl 0x560467fd4b38 <<invalid sloc>> <invalid sloc> 'unsigned long'
| `-BuiltinAttr 0x560467fd4ae0 <<invalid sloc>> Implicit 867
|-FunctionDecl 0x560467fd4ba8 prev 0x560467fd4a40 <col:1, /usr/include/sys/cdefs.h:79:54> /usr/include/alloca.h:32:14 alloca 'void *(unsigned long)' extern
| |-ParmVarDecl 0x560467fd4940 <col:22, col:29> col:29 __size 'size_t':'unsigned long'
| |-BuiltinAttr 0x560467fd4ca8 <<invalid sloc>> Inherited Implicit 867
| `-NoThrowAttr 0x560467fd4c50 </usr/include/sys/cdefs.h:79:35>
|-RecordDecl 0x560467fd4cd0 <flecs.h:2206:9, line:2209:1> line:2206:16 struct ecs_time_t definition
| |-FieldDecl 0x560467fd4d80 <line:2207:5, col:14> col:14 sec 'uint32_t':'unsigned int'
| `-FieldDecl 0x560467fd4de0 <line:2208:5, col:14> col:14 nanosec 'uint32_t':'unsigned int'
|-TypedefDecl 0x560467fd4e88 <line:2206:1, line:2209:3> col:3 referenced ecs_time_t 'struct ecs_time_t':'struct ecs_time_t'
| `-ElaboratedType 0x560467fd4e30 'struct ecs_time_t' sugar
| `-RecordType 0x560467fd4d50 'struct ecs_time_t'
| `-Record 0x560467fd4cd0 'ecs_time_t'
|-VarDecl 0x560467fd4f08 <line:2212:1, col:16> col:16 ecs_os_api_malloc_count 'int64_t':'long' extern
|-VarDecl 0x560467fd4f80 <line:2213:1, col:16> col:16 ecs_os_api_realloc_count 'int64_t':'long' extern
|-VarDecl 0x560467fd4ff8 <line:2214:1, col:16> col:16 ecs_os_api_calloc_count 'int64_t':'long' extern
|-VarDecl 0x560467fd5070 <line:2215:1, col:16> col:16 ecs_os_api_free_count 'int64_t':'long' extern
|-TypedefDecl 0x560467fd5110 <line:2218:1, col:19> col:19 referenced ecs_os_thread_t 'uintptr_t':'unsigned long'
| `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| |-Typedef 0x560467f8ca30 'uintptr_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467fd5178 <line:2219:1, col:19> col:19 referenced ecs_os_cond_t 'uintptr_t':'unsigned long'
| `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| |-Typedef 0x560467f8ca30 'uintptr_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467fd51e0 <line:2220:1, col:19> col:19 referenced ecs_os_mutex_t 'uintptr_t':'unsigned long'
| `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| |-Typedef 0x560467f8ca30 'uintptr_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467fe9b50 <line:2221:1, col:19> col:19 referenced ecs_os_dl_t 'uintptr_t':'unsigned long'
| `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| |-Typedef 0x560467f8ca30 'uintptr_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467fe9bb8 <line:2222:1, col:19> col:19 ecs_os_sock_t 'uintptr_t':'unsigned long'
| `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| |-Typedef 0x560467f8ca30 'uintptr_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467fe9c20 <line:2225:1, col:18> col:18 referenced ecs_os_thread_id_t 'uint64_t':'unsigned long'
| `-TypedefType 0x560467f8cd90 'uint64_t' sugar
| |-Typedef 0x560467f87e80 'uint64_t'
| `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| |-Typedef 0x560467f7e4e0 '__uint64_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467fe9dd8 <line:2228:1, col:35> col:16 referenced ecs_os_proc_t 'void (*)(void)'
| `-PointerType 0x560467fe9d80 'void (*)(void)'
| `-ParenType 0x560467fe9d20 'void (void)' sugar
| `-FunctionProtoType 0x560467fe9cf0 'void (void)' cdecl
| `-BuiltinType 0x560467ec1810 'void'
|-TypedefDecl 0x560467fe9ed8 <line:2231:1, line:2232:31> col:8 referenced ecs_os_api_init_t 'void (*)(void)'
| `-PointerType 0x560467fe9d80 'void (*)(void)'
| `-ParenType 0x560467fe9d20 'void (void)' sugar
| `-FunctionProtoType 0x560467fe9cf0 'void (void)' cdecl
| `-BuiltinType 0x560467ec1810 'void'
|-TypedefDecl 0x560467fe9fd8 <line:2235:1, line:2236:31> col:8 referenced ecs_os_api_fini_t 'void (*)(void)'
| `-PointerType 0x560467fe9d80 'void (*)(void)'
| `-ParenType 0x560467fe9d20 'void (void)' sugar
| `-FunctionProtoType 0x560467fe9cf0 'void (void)' cdecl
| `-BuiltinType 0x560467ec1810 'void'
|-TypedefDecl 0x560467fea1d8 <line:2239:1, line:2241:20> line:2240:9 referenced ecs_os_api_malloc_t 'void *(*)(ecs_size_t)'
| `-PointerType 0x560467fea170 'void *(*)(ecs_size_t)'
| `-ParenType 0x560467fea110 'void *(ecs_size_t)' sugar
| `-FunctionProtoType 0x560467fea0e0 'void *(ecs_size_t)' cdecl
| |-PointerType 0x560467ec1f30 'void *'
| | `-BuiltinType 0x560467ec1810 'void'
| `-TypedefType 0x560467fa7900 'ecs_size_t' sugar
| |-Typedef 0x560467f8ce50 'ecs_size_t'
| `-TypedefType 0x560467f8ce20 'int32_t' sugar
| |-Typedef 0x560467f87c78 'int32_t'
| `-TypedefType 0x560467f7e780 '__int32_t' sugar
| |-Typedef 0x560467f78f28 '__int32_t'
| `-BuiltinType 0x560467ec18b0 'int'
|-TypedefDecl 0x560467fea3a0 <line:2243:1, line:2245:14> line:2244:8 referenced ecs_os_api_free_t 'void (*)(void *)'
| `-PointerType 0x560467fea340 'void (*)(void *)'
| `-ParenType 0x560467fea2e0 'void (void *)' sugar
| `-FunctionProtoType 0x560467fea2b0 'void (void *)' cdecl
| |-BuiltinType 0x560467ec1810 'void'
| `-PointerType 0x560467ec1f30 'void *'
| `-BuiltinType 0x560467ec1810 'void'
|-TypedefDecl 0x560467fea640 <line:2247:1, line:2250:20> line:2248:9 referenced ecs_os_api_realloc_t 'void *(*)(void *, ecs_size_t)'
| `-PointerType 0x560467fea5d0 'void *(*)(void *, ecs_size_t)'
| `-ParenType 0x560467fea570 'void *(void *, ecs_size_t)' sugar
| `-FunctionProtoType 0x560467fea530 'void *(void *, ecs_size_t)' cdecl
| |-PointerType 0x560467ec1f30 'void *'
| | `-BuiltinType 0x560467ec1810 'void'
| |-PointerType 0x560467ec1f30 'void *'
| | `-BuiltinType 0x560467ec1810 'void'
| `-TypedefType 0x560467fa7900 'ecs_size_t' sugar
| |-Typedef 0x560467f8ce50 'ecs_size_t'
| `-TypedefType 0x560467f8ce20 'int32_t' sugar
| |-Typedef 0x560467f87c78 'int32_t'
| `-TypedefType 0x560467f7e780 '__int32_t' sugar
| |-Typedef 0x560467f78f28 '__int32_t'
| `-BuiltinType 0x560467ec18b0 'int'
|-TypedefDecl 0x560467fea750 <line:2252:1, line:2254:20> line:2253:9 referenced ecs_os_api_calloc_t 'void *(*)(ecs_size_t)'
| `-PointerType 0x560467fea170 'void *(*)(ecs_size_t)'
| `-ParenType 0x560467fea110 'void *(ecs_size_t)' sugar
| `-FunctionProtoType 0x560467fea0e0 'void *(ecs_size_t)' cdecl
| |-PointerType 0x560467ec1f30 'void *'
| | `-BuiltinType 0x560467ec1810 'void'
| `-TypedefType 0x560467fa7900 'ecs_size_t' sugar
| |-Typedef 0x560467f8ce50 'ecs_size_t'
| `-TypedefType 0x560467f8ce20 'int32_t' sugar
| |-Typedef 0x560467f87c78 'int32_t'
| `-TypedefType 0x560467f7e780 '__int32_t' sugar
| |-Typedef 0x560467f78f28 '__int32_t'
| `-BuiltinType 0x560467ec18b0 'int'
|-TypedefDecl 0x560467fea8f8 <line:2256:1, line:2258:20> line:2257:9 referenced ecs_os_api_strdup_t 'char *(*)(const char *)'
| `-PointerType 0x560467fea890 'char *(*)(const char *)'
| `-ParenType 0x560467fea830 'char *(const char *)' sugar
| `-FunctionProtoType 0x560467f68980 'char *(const char *)' cdecl
| |-PointerType 0x560467ec23a0 'char *'
| | `-BuiltinType 0x560467ec1850 'char'
| `-PointerType 0x560467ec21d0 'const char *'
| `-QualType 0x560467ec1851 'const char' const
| `-BuiltinType 0x560467ec1850 'char'
|-TypedefDecl 0x560467feaac8 <line:2261:1, line:2263:10> line:2262:9 referenced ecs_os_thread_callback_t 'void *(*)(void *)'
| `-PointerType 0x560467feaa60 'void *(*)(void *)'
| `-ParenType 0x560467feaa00 'void *(void *)' sugar
| `-FunctionProtoType 0x560467fea9d0 'void *(void *)' cdecl
| |-PointerType 0x560467ec1f30 'void *'
| | `-BuiltinType 0x560467ec1810 'void'
| `-PointerType 0x560467ec1f30 'void *'
| `-BuiltinType 0x560467ec1810 'void'
|-TypedefDecl 0x560467febdd8 <line:2265:1, line:2268:16> line:2266:19 referenced ecs_os_api_thread_new_t 'ecs_os_thread_t (*)(ecs_os_thread_callback_t, void *)'
| `-PointerType 0x560467febd70 'ecs_os_thread_t (*)(ecs_os_thread_callback_t, void *)'
| `-ParenType 0x560467febd10 'ecs_os_thread_t (ecs_os_thread_callback_t, void *)' sugar
| `-FunctionProtoType 0x560467febcd0 'ecs_os_thread_t (ecs_os_thread_callback_t, void *)' cdecl
| |-TypedefType 0x560467feab20 'ecs_os_thread_t' sugar
| | |-Typedef 0x560467fd5110 'ecs_os_thread_t'
| | `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| | |-Typedef 0x560467f8ca30 'uintptr_t'
| | `-BuiltinType 0x560467ec1970 'unsigned long'
| |-TypedefType 0x560467febb70 'ecs_os_thread_callback_t' sugar
| | |-Typedef 0x560467feaac8 'ecs_os_thread_callback_t'
| | `-PointerType 0x560467feaa60 'void *(*)(void *)'
| | `-ParenType 0x560467feaa00 'void *(void *)' sugar
| | `-FunctionProtoType 0x560467fea9d0 'void *(void *)' cdecl
| | |-PointerType 0x560467ec1f30 'void *'
| | | `-BuiltinType 0x560467ec1810 'void'
| | `-PointerType 0x560467ec1f30 'void *'
| | `-BuiltinType 0x560467ec1810 'void'
| `-PointerType 0x560467ec1f30 'void *'
| `-BuiltinType 0x560467ec1810 'void'
|-TypedefDecl 0x560467febfa8 <line:2270:1, line:2272:27> line:2271:9 referenced ecs_os_api_thread_join_t 'void *(*)(ecs_os_thread_t)'
| `-PointerType 0x560467febf40 'void *(*)(ecs_os_thread_t)'
| `-ParenType 0x560467febee0 'void *(ecs_os_thread_t)' sugar
| `-FunctionProtoType 0x560467febeb0 'void *(ecs_os_thread_t)' cdecl
| |-PointerType 0x560467ec1f30 'void *'
| | `-BuiltinType 0x560467ec1810 'void'
| `-TypedefType 0x560467feab20 'ecs_os_thread_t' sugar
| |-Typedef 0x560467fd5110 'ecs_os_thread_t'
| `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| |-Typedef 0x560467f8ca30 'uintptr_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467fec1b8 <line:2274:1, line:2275:52> col:22 referenced ecs_os_api_thread_self_t 'ecs_os_thread_id_t (*)(void)'
| `-PointerType 0x560467fec160 'ecs_os_thread_id_t (*)(void)'
| `-ParenType 0x560467fec100 'ecs_os_thread_id_t (void)' sugar
| `-FunctionProtoType 0x560467fec0d0 'ecs_os_thread_id_t (void)' cdecl
| `-TypedefType 0x560467fec000 'ecs_os_thread_id_t' sugar
| |-Typedef 0x560467fe9c20 'ecs_os_thread_id_t'
| `-TypedefType 0x560467f8cd90 'uint64_t' sugar
| |-Typedef 0x560467f87e80 'uint64_t'
| `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| |-Typedef 0x560467f7e4e0 '__uint64_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467fec3d0 <line:2278:1, line:2280:19> line:2279:11 referenced ecs_os_api_ainc_t 'int32_t (*)(int32_t *)'
| `-PointerType 0x560467fec370 'int32_t (*)(int32_t *)'
| `-ParenType 0x560467fec310 'int32_t (int32_t *)' sugar
| `-FunctionProtoType 0x560467fec2e0 'int32_t (int32_t *)' cdecl
| |-TypedefType 0x560467f8ce20 'int32_t' sugar
| | |-Typedef 0x560467f87c78 'int32_t'
| | `-TypedefType 0x560467f7e780 '__int32_t' sugar
| | |-Typedef 0x560467f78f28 '__int32_t'
| | `-BuiltinType 0x560467ec18b0 'int'
| `-PointerType 0x560467fec210 'int32_t *'
| `-TypedefType 0x560467f8ce20 'int32_t' sugar
| |-Typedef 0x560467f87c78 'int32_t'
| `-TypedefType 0x560467f7e780 '__int32_t' sugar
| |-Typedef 0x560467f78f28 '__int32_t'
| `-BuiltinType 0x560467ec18b0 'int'
|-TypedefDecl 0x560467fec620 <line:2282:1, line:2284:19> line:2283:11 referenced ecs_os_api_lainc_t 'int64_t (*)(int64_t *)'
| `-PointerType 0x560467fec5c0 'int64_t (*)(int64_t *)'
| `-ParenType 0x560467fec560 'int64_t (int64_t *)' sugar
| `-FunctionProtoType 0x560467fec530 'int64_t (int64_t *)' cdecl
| |-TypedefType 0x560467fca6e0 'int64_t' sugar
| | |-Typedef 0x560467f87ce0 'int64_t'
| | `-TypedefType 0x560467f7e8a0 '__int64_t' sugar
| | |-Typedef 0x560467f7e470 '__int64_t'
| | `-BuiltinType 0x560467ec18d0 'long'
| `-PointerType 0x560467fec460 'int64_t *'
| `-TypedefType 0x560467fca6e0 'int64_t' sugar
| |-Typedef 0x560467f87ce0 'int64_t'
| `-TypedefType 0x560467f7e8a0 '__int64_t' sugar
| |-Typedef 0x560467f7e470 '__int64_t'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x560467fec7d8 <line:2287:1, line:2289:9> line:2288:18 referenced ecs_os_api_mutex_new_t 'ecs_os_mutex_t (*)(void)'
| `-PointerType 0x560467fec780 'ecs_os_mutex_t (*)(void)'
| `-ParenType 0x560467fec750 'ecs_os_mutex_t (void)' sugar
| `-FunctionProtoType 0x560467fec720 'ecs_os_mutex_t (void)' cdecl
| `-TypedefType 0x560467fec680 'ecs_os_mutex_t' sugar
| |-Typedef 0x560467fd51e0 'ecs_os_mutex_t'
| `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| |-Typedef 0x560467f8ca30 'uintptr_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467fec9d0 <line:2291:1, line:2293:25> line:2292:8 referenced ecs_os_api_mutex_lock_t 'void (*)(ecs_os_mutex_t)'
| `-PointerType 0x560467fec970 'void (*)(ecs_os_mutex_t)'
| `-ParenType 0x560467fec910 'void (ecs_os_mutex_t)' sugar
| `-FunctionProtoType 0x560467fec8e0 'void (ecs_os_mutex_t)' cdecl
| |-BuiltinType 0x560467ec1810 'void'
| `-TypedefType 0x560467fec680 'ecs_os_mutex_t' sugar
| |-Typedef 0x560467fd51e0 'ecs_os_mutex_t'
| `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| |-Typedef 0x560467f8ca30 'uintptr_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467fecad8 <line:2295:1, line:2297:25> line:2296:8 ecs_os_api_mutex_unlock_t 'void (*)(ecs_os_mutex_t)'
| `-PointerType 0x560467fec970 'void (*)(ecs_os_mutex_t)'
| `-ParenType 0x560467fec910 'void (ecs_os_mutex_t)' sugar
| `-FunctionProtoType 0x560467fec8e0 'void (ecs_os_mutex_t)' cdecl
| |-BuiltinType 0x560467ec1810 'void'
| `-TypedefType 0x560467fec680 'ecs_os_mutex_t' sugar
| |-Typedef 0x560467fd51e0 'ecs_os_mutex_t'
| `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| |-Typedef 0x560467f8ca30 'uintptr_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467feec20 <line:2299:1, line:2301:25> line:2300:8 referenced ecs_os_api_mutex_free_t 'void (*)(ecs_os_mutex_t)'
| `-PointerType 0x560467fec970 'void (*)(ecs_os_mutex_t)'
| `-ParenType 0x560467fec910 'void (ecs_os_mutex_t)' sugar
| `-FunctionProtoType 0x560467fec8e0 'void (ecs_os_mutex_t)' cdecl
| |-BuiltinType 0x560467ec1810 'void'
| `-TypedefType 0x560467fec680 'ecs_os_mutex_t' sugar
| |-Typedef 0x560467fd51e0 'ecs_os_mutex_t'
| `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| |-Typedef 0x560467f8ca30 'uintptr_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467feedd8 <line:2304:1, line:2306:9> line:2305:17 referenced ecs_os_api_cond_new_t 'ecs_os_cond_t (*)(void)'
| `-PointerType 0x560467feed80 'ecs_os_cond_t (*)(void)'
| `-ParenType 0x560467feed50 'ecs_os_cond_t (void)' sugar
| `-FunctionProtoType 0x560467feed20 'ecs_os_cond_t (void)' cdecl
| `-TypedefType 0x560467feec80 'ecs_os_cond_t' sugar
| |-Typedef 0x560467fd5178 'ecs_os_cond_t'
| `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| |-Typedef 0x560467f8ca30 'uintptr_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467feef70 <line:2308:1, line:2310:23> line:2309:8 referenced ecs_os_api_cond_free_t 'void (*)(ecs_os_cond_t)'
| `-PointerType 0x560467feef10 'void (*)(ecs_os_cond_t)'
| `-ParenType 0x560467feeee0 'void (ecs_os_cond_t)' sugar
| `-FunctionProtoType 0x560467feeeb0 'void (ecs_os_cond_t)' cdecl
| |-BuiltinType 0x560467ec1810 'void'
| `-TypedefType 0x560467feec80 'ecs_os_cond_t' sugar
| |-Typedef 0x560467fd5178 'ecs_os_cond_t'
| `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| |-Typedef 0x560467f8ca30 'uintptr_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467fef078 <line:2312:1, line:2314:23> line:2313:8 referenced ecs_os_api_cond_signal_t 'void (*)(ecs_os_cond_t)'
| `-PointerType 0x560467feef10 'void (*)(ecs_os_cond_t)'
| `-ParenType 0x560467feeee0 'void (ecs_os_cond_t)' sugar
| `-FunctionProtoType 0x560467feeeb0 'void (ecs_os_cond_t)' cdecl
| |-BuiltinType 0x560467ec1810 'void'
| `-TypedefType 0x560467feec80 'ecs_os_cond_t' sugar
| |-Typedef 0x560467fd5178 'ecs_os_cond_t'
| `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| |-Typedef 0x560467f8ca30 'uintptr_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467fef180 <line:2316:1, line:2318:23> line:2317:8 referenced ecs_os_api_cond_broadcast_t 'void (*)(ecs_os_cond_t)'
| `-PointerType 0x560467feef10 'void (*)(ecs_os_cond_t)'
| `-ParenType 0x560467feeee0 'void (ecs_os_cond_t)' sugar
| `-FunctionProtoType 0x560467feeeb0 'void (ecs_os_cond_t)' cdecl
| |-BuiltinType 0x560467ec1810 'void'
| `-TypedefType 0x560467feec80 'ecs_os_cond_t' sugar
| |-Typedef 0x560467fd5178 'ecs_os_cond_t'
| `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| |-Typedef 0x560467f8ca30 'uintptr_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467fef418 <line:2320:1, line:2323:25> line:2321:8 referenced ecs_os_api_cond_wait_t 'void (*)(ecs_os_cond_t, ecs_os_mutex_t)'
| `-PointerType 0x560467fef3b0 'void (*)(ecs_os_cond_t, ecs_os_mutex_t)'
| `-ParenType 0x560467fef350 'void (ecs_os_cond_t, ecs_os_mutex_t)' sugar
| `-FunctionProtoType 0x560467fef310 'void (ecs_os_cond_t, ecs_os_mutex_t)' cdecl
| |-BuiltinType 0x560467ec1810 'void'
| |-TypedefType 0x560467feec80 'ecs_os_cond_t' sugar
| | |-Typedef 0x560467fd5178 'ecs_os_cond_t'
| | `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| | |-Typedef 0x560467f8ca30 'uintptr_t'
| | `-BuiltinType 0x560467ec1970 'unsigned long'
| `-TypedefType 0x560467fec680 'ecs_os_mutex_t' sugar
| |-Typedef 0x560467fd51e0 'ecs_os_mutex_t'
| `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| |-Typedef 0x560467f8ca30 'uintptr_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467fef6a8 <line:2325:1, line:2328:20> line:2326:8 referenced ecs_os_api_sleep_t 'void (*)(int32_t, int32_t)'
| `-PointerType 0x560467fef640 'void (*)(int32_t, int32_t)'
| `-ParenType 0x560467fef5e0 'void (int32_t, int32_t)' sugar
| `-FunctionProtoType 0x560467fef5a0 'void (int32_t, int32_t)' cdecl
| |-BuiltinType 0x560467ec1810 'void'
| |-TypedefType 0x560467f8ce20 'int32_t' sugar
| | |-Typedef 0x560467f87c78 'int32_t'
| | `-TypedefType 0x560467f7e780 '__int32_t' sugar
| | |-Typedef 0x560467f78f28 '__int32_t'
| | `-BuiltinType 0x560467ec18b0 'int'
| `-TypedefType 0x560467f8ce20 'int32_t' sugar
| |-Typedef 0x560467f87c78 'int32_t'
| `-TypedefType 0x560467f7e780 '__int32_t' sugar
| |-Typedef 0x560467f78f28 '__int32_t'
| `-BuiltinType 0x560467ec18b0 'int'
|-TypedefDecl 0x560467fef870 <line:2330:1, line:2332:16> line:2331:8 ecs_os_api_enable_high_timer_resolution_t 'void (*)(bool)'
| `-PointerType 0x560467fef810 'void (*)(bool)'
| `-ParenType 0x560467fef7b0 'void (bool)' sugar
| `-FunctionProtoType 0x560467fef780 'void (bool)' cdecl
| |-BuiltinType 0x560467ec1810 'void'
| `-BuiltinType 0x560467ec1830 'bool'
|-TypedefDecl 0x560467fefae0 <line:2334:1, line:2336:25> line:2335:8 referenced ecs_os_api_get_time_t 'void (*)(ecs_time_t *)'
| `-PointerType 0x560467fefa80 'void (*)(ecs_time_t *)'
| `-ParenType 0x560467fefa20 'void (ecs_time_t *)' sugar
| `-FunctionProtoType 0x560467fef9f0 'void (ecs_time_t *)' cdecl
| |-BuiltinType 0x560467ec1810 'void'
| `-PointerType 0x560467fef920 'ecs_time_t *'
| `-TypedefType 0x560467fef8d0 'ecs_time_t' sugar
| |-Typedef 0x560467fd4e88 'ecs_time_t'
| `-ElaboratedType 0x560467fd4e30 'struct ecs_time_t' sugar
| `-RecordType 0x560467fd4d50 'struct ecs_time_t'
| `-Record 0x560467fd4cd0 'ecs_time_t'
|-TypedefDecl 0x560467fefcb8 <line:2338:1, line:2339:34> col:12 referenced ecs_os_api_now_t 'uint64_t (*)(void)'
| `-PointerType 0x560467fefc60 'uint64_t (*)(void)'
| `-ParenType 0x560467fefc30 'uint64_t (void)' sugar
| `-FunctionProtoType 0x560467fefc00 'uint64_t (void)' cdecl
| `-TypedefType 0x560467f8cd90 'uint64_t' sugar
| |-Typedef 0x560467f87e80 'uint64_t'
| `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| |-Typedef 0x560467f7e4e0 '__uint64_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467ff0078 <line:2342:1, line:2347:20> line:2343:8 referenced ecs_os_api_log_t 'void (*)(int32_t, const char *, int32_t, const char *)'
| `-PointerType 0x560467ff0000 'void (*)(int32_t, const char *, int32_t, const char *)'
| `-ParenType 0x560467feffa0 'void (int32_t, const char *, int32_t, const char *)' sugar
| `-FunctionProtoType 0x560467feff50 'void (int32_t, const char *, int32_t, const char *)' cdecl
| |-BuiltinType 0x560467ec1810 'void'
| |-TypedefType 0x560467f8ce20 'int32_t' sugar
| | |-Typedef 0x560467f87c78 'int32_t'
| | `-TypedefType 0x560467f7e780 '__int32_t' sugar
| | |-Typedef 0x560467f78f28 '__int32_t'
| | `-BuiltinType 0x560467ec18b0 'int'
| |-PointerType 0x560467ec21d0 'const char *'
| | `-QualType 0x560467ec1851 'const char' const
| | `-BuiltinType 0x560467ec1850 'char'
| |-TypedefType 0x560467f8ce20 'int32_t' sugar
| | |-Typedef 0x560467f87c78 'int32_t'
| | `-TypedefType 0x560467f7e780 '__int32_t' sugar
| | |-Typedef 0x560467f78f28 '__int32_t'
| | `-BuiltinType 0x560467ec18b0 'int'
| `-PointerType 0x560467ec21d0 'const char *'
| `-QualType 0x560467ec1851 'const char' const
| `-BuiltinType 0x560467ec1850 'char'
|-TypedefDecl 0x560467ff0178 <line:2350:1, line:2352:9> line:2351:8 referenced ecs_os_api_abort_t 'void (*)(void)'
| `-PointerType 0x560467fe9d80 'void (*)(void)'
| `-ParenType 0x560467fe9d20 'void (void)' sugar
| `-FunctionProtoType 0x560467fe9cf0 'void (void)' cdecl
| `-BuiltinType 0x560467ec1810 'void'
|-TypedefDecl 0x560467ff0360 <line:2355:1, line:2357:24> line:2356:15 referenced ecs_os_api_dlopen_t 'ecs_os_dl_t (*)(const char *)'
| `-PointerType 0x560467ff0300 'ecs_os_dl_t (*)(const char *)'
| `-ParenType 0x560467ff02a0 'ecs_os_dl_t (const char *)' sugar
| `-FunctionProtoType 0x560467ff0270 'ecs_os_dl_t (const char *)' cdecl
| |-TypedefType 0x560467ff01d0 'ecs_os_dl_t' sugar
| | |-Typedef 0x560467fe9b50 'ecs_os_dl_t'
| | `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| | |-Typedef 0x560467f8ca30 'uintptr_t'
| | `-BuiltinType 0x560467ec1970 'unsigned long'
| `-PointerType 0x560467ec21d0 'const char *'
| `-QualType 0x560467ec1851 'const char' const
| `-BuiltinType 0x560467ec1850 'char'
|-TypedefDecl 0x560467ff0628 <line:2359:1, line:2362:25> line:2360:17 referenced ecs_os_api_dlproc_t 'ecs_os_proc_t (*)(ecs_os_dl_t, const char *)'
| `-PointerType 0x560467ff05c0 'ecs_os_proc_t (*)(ecs_os_dl_t, const char *)'
| `-ParenType 0x560467ff0560 'ecs_os_proc_t (ecs_os_dl_t, const char *)' sugar
| `-FunctionProtoType 0x560467ff0520 'ecs_os_proc_t (ecs_os_dl_t, const char *)' cdecl
| |-TypedefType 0x560467ff03c0 'ecs_os_proc_t' sugar
| | |-Typedef 0x560467fe9dd8 'ecs_os_proc_t'
| | `-PointerType 0x560467fe9d80 'void (*)(void)'
| | `-ParenType 0x560467fe9d20 'void (void)' sugar
| | `-FunctionProtoType 0x560467fe9cf0 'void (void)' cdecl
| | `-BuiltinType 0x560467ec1810 'void'
| |-TypedefType 0x560467ff01d0 'ecs_os_dl_t' sugar
| | |-Typedef 0x560467fe9b50 'ecs_os_dl_t'
| | `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| | |-Typedef 0x560467f8ca30 'uintptr_t'
| | `-BuiltinType 0x560467ec1970 'unsigned long'
| `-PointerType 0x560467ec21d0 'const char *'
| `-QualType 0x560467ec1851 'const char' const
| `-BuiltinType 0x560467ec1850 'char'
|-TypedefDecl 0x560467ff07c0 <line:2364:1, line:2366:20> line:2365:8 referenced ecs_os_api_dlclose_t 'void (*)(ecs_os_dl_t)'
| `-PointerType 0x560467ff0760 'void (*)(ecs_os_dl_t)'
| `-ParenType 0x560467ff0730 'void (ecs_os_dl_t)' sugar
| `-FunctionProtoType 0x560467ff0700 'void (ecs_os_dl_t)' cdecl
| |-BuiltinType 0x560467ec1810 'void'
| `-TypedefType 0x560467ff01d0 'ecs_os_dl_t' sugar
| |-Typedef 0x560467fe9b50 'ecs_os_dl_t'
| `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| |-Typedef 0x560467f8ca30 'uintptr_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x560467ff08d8 <line:2368:1, line:2370:26> line:2369:9 referenced ecs_os_api_module_to_path_t 'char *(*)(const char *)'
| `-PointerType 0x560467fea890 'char *(*)(const char *)'
| `-ParenType 0x560467fea830 'char *(const char *)' sugar
| `-FunctionProtoType 0x560467f68980 'char *(const char *)' cdecl
| |-PointerType 0x560467ec23a0 'char *'
| | `-BuiltinType 0x560467ec1850 'char'
| `-PointerType 0x560467ec21d0 'const char *'
| `-QualType 0x560467ec1851 'const char' const
| `-BuiltinType 0x560467ec1850 'char'
|-RecordDecl 0x560467ff0930 <line:2375:9, line:2456:1> line:2375:16 struct ecs_os_api_t definition
| |-FieldDecl 0x560467ff0a00 <line:2377:5, col:23> col:23 init_ 'ecs_os_api_init_t':'void (*)(void)'
| |-FieldDecl 0x560467ff0a80 <line:2378:5, col:23> col:23 fini_ 'ecs_os_api_fini_t':'void (*)(void)'
| |-FieldDecl 0x560467ff0b00 <line:2381:5, col:25> col:25 malloc_ 'ecs_os_api_malloc_t':'void *(*)(ecs_size_t)'
| |-FieldDecl 0x560467ff0ba0 <line:2382:5, col:26> col:26 realloc_ 'ecs_os_api_realloc_t':'void *(*)(void *, ecs_size_t)'
| |-FieldDecl 0x560467ff0c20 <line:2383:5, col:25> col:25 calloc_ 'ecs_os_api_calloc_t':'void *(*)(ecs_size_t)'
| |-FieldDecl 0x560467ff0ca0 <line:2384:5, col:23> col:23 free_ 'ecs_os_api_free_t':'void (*)(void *)'
| |-FieldDecl 0x560467ff0d20 <line:2387:5, col:25> col:25 strdup_ 'ecs_os_api_strdup_t':'char *(*)(const char *)'
| |-FieldDecl 0x560467ff0da0 <line:2390:5, col:29> col:29 thread_new_ 'ecs_os_api_thread_new_t':'ecs_os_thread_t (*)(ecs_os_thread_callback_t, void *)'
| |-FieldDecl 0x560467ff0e20 <line:2391:5, col:30> col:30 thread_join_ 'ecs_os_api_thread_join_t':'void *(*)(ecs_os_thread_t)'
| |-FieldDecl 0x560467ff0ea0 <line:2392:5, col:30> col:30 thread_self_ 'ecs_os_api_thread_self_t':'ecs_os_thread_id_t (*)(void)'
| |-FieldDecl 0x560467ff0f20 <line:2395:5, col:23> col:23 ainc_ 'ecs_os_api_ainc_t':'int32_t (*)(int32_t *)'
| |-FieldDecl 0x560467ff0f80 <line:2396:5, col:23> col:23 adec_ 'ecs_os_api_ainc_t':'int32_t (*)(int32_t *)'
| |-FieldDecl 0x560467ff1000 <line:2397:5, col:24> col:24 lainc_ 'ecs_os_api_lainc_t':'int64_t (*)(int64_t *)'
| |-FieldDecl 0x560467ff1060 <line:2398:5, col:24> col:24 ladec_ 'ecs_os_api_lainc_t':'int64_t (*)(int64_t *)'
| |-FieldDecl 0x560467ff10e0 <line:2401:5, col:28> col:28 mutex_new_ 'ecs_os_api_mutex_new_t':'ecs_os_mutex_t (*)(void)'
| |-FieldDecl 0x560467ff1160 <line:2402:5, col:29> col:29 mutex_free_ 'ecs_os_api_mutex_free_t':'void (*)(ecs_os_mutex_t)'
| |-FieldDecl 0x560467ff11e0 <line:2403:5, col:29> col:29 mutex_lock_ 'ecs_os_api_mutex_lock_t':'void (*)(ecs_os_mutex_t)'
| |-FieldDecl 0x560467ff1240 <line:2404:5, col:29> col:29 mutex_unlock_ 'ecs_os_api_mutex_lock_t':'void (*)(ecs_os_mutex_t)'
| |-FieldDecl 0x560467ff12c0 <line:2407:5, col:27> col:27 cond_new_ 'ecs_os_api_cond_new_t':'ecs_os_cond_t (*)(void)'
| |-FieldDecl 0x560467ff1340 <line:2408:5, col:28> col:28 cond_free_ 'ecs_os_api_cond_free_t':'void (*)(ecs_os_cond_t)'
| |-FieldDecl 0x560467ff13c0 <line:2409:5, col:30> col:30 cond_signal_ 'ecs_os_api_cond_signal_t':'void (*)(ecs_os_cond_t)'
| |-FieldDecl 0x560467ff1440 <line:2410:5, col:33> col:33 cond_broadcast_ 'ecs_os_api_cond_broadcast_t':'void (*)(ecs_os_cond_t)'
| |-FieldDecl 0x560467ff14c0 <line:2411:5, col:28> col:28 cond_wait_ 'ecs_os_api_cond_wait_t':'void (*)(ecs_os_cond_t, ecs_os_mutex_t)'
| |-FieldDecl 0x560467ff1540 <line:2414:5, col:24> col:24 sleep_ 'ecs_os_api_sleep_t':'void (*)(int32_t, int32_t)'
| |-FieldDecl 0x560467ff15c0 <line:2415:5, col:22> col:22 now_ 'ecs_os_api_now_t':'uint64_t (*)(void)'
| |-FieldDecl 0x560467ff1640 <line:2416:5, col:27> col:27 get_time_ 'ecs_os_api_get_time_t':'void (*)(ecs_time_t *)'
| |-FieldDecl 0x560467ff16c0 <line:2419:5, col:22> col:22 log_ 'ecs_os_api_log_t':'void (*)(int32_t, const char *, int32_t, const char *)'
| |-FieldDecl 0x560467ff1740 <line:2427:5, col:24> col:24 abort_ 'ecs_os_api_abort_t':'void (*)(void)'
| |-FieldDecl 0x560467ff17c0 <line:2430:5, col:25> col:25 dlopen_ 'ecs_os_api_dlopen_t':'ecs_os_dl_t (*)(const char *)'
| |-FieldDecl 0x560467ff1840 <line:2431:5, col:25> col:25 dlproc_ 'ecs_os_api_dlproc_t':'ecs_os_proc_t (*)(ecs_os_dl_t, const char *)'
| |-FieldDecl 0x560467ff18c0 <line:2432:5, col:26> col:26 dlclose_ 'ecs_os_api_dlclose_t':'void (*)(ecs_os_dl_t)'
| |-FieldDecl 0x560467ff1940 <line:2436:5, col:33> col:33 module_to_dl_ 'ecs_os_api_module_to_path_t':'char *(*)(const char *)'
| |-FieldDecl 0x560467ff19a0 <line:2440:5, col:33> col:33 module_to_etc_ 'ecs_os_api_module_to_path_t':'char *(*)(const char *)'
| |-FieldDecl 0x560467ff1a00 <line:2443:5, col:13> col:13 log_level_ 'int32_t':'int'
| |-FieldDecl 0x560467ff1a60 <line:2446:5, col:13> col:13 log_indent_ 'int32_t':'int'
| |-FieldDecl 0x560467ff1ac0 <line:2449:5, col:13> col:13 log_last_error_ 'int32_t':'int'
| |-FieldDecl 0x560467ff1b20 <line:2452:5, col:13> col:13 log_last_timestamp_ 'int64_t':'long'
| `-FieldDecl 0x560467ff2bc0 <line:2455:5, col:19> col:19 flags_ 'ecs_flags32_t':'unsigned int'
|-TypedefDecl 0x560467ff2c68 <line:2375:1, line:2456:3> col:3 referenced ecs_os_api_t 'struct ecs_os_api_t':'struct ecs_os_api_t'
| `-ElaboratedType 0x560467ff2c10 'struct ecs_os_api_t' sugar
| `-RecordType 0x560467ff09b0 'struct ecs_os_api_t'
| `-Record 0x560467ff0930 'ecs_os_api_t'
|-VarDecl 0x560467ff2d10 <line:2459:1, col:21> col:21 ecs_os_api 'ecs_os_api_t':'struct ecs_os_api_t' extern
|-FunctionDecl 0x560467ff2e10 <line:2462:1, col:22> col:6 ecs_os_init 'void (void)'
|-FunctionDecl 0x560467ff2f48 <line:2465:1, col:22> col:6 ecs_os_fini 'void (void)'
|-FunctionDecl 0x560467ff3148 <line:2468:1, line:2469:25> line:2468:6 ecs_os_set_api 'void (ecs_os_api_t *)'
| `-ParmVarDecl 0x560467ff3058 <line:2469:5, col:19> col:19 os_api 'ecs_os_api_t *'
|-FunctionDecl 0x560467ff32e8 <line:2472:1, col:33> col:14 ecs_os_get_api 'ecs_os_api_t (void)'
|-FunctionDecl 0x560467ff3420 <line:2475:1, col:34> col:6 ecs_os_set_api_defaults 'void (void)'
|-FunctionDecl 0x560467ff36f8 <line:2604:1, col:64> col:6 ecs_os_dbg 'void (const char *, int32_t, const char *)'
| |-ParmVarDecl 0x560467ff34d8 <col:17, col:29> col:29 file 'const char *'
| |-ParmVarDecl 0x560467ff3550 <col:35, col:43> col:43 line 'int32_t':'int'
| `-ParmVarDecl 0x560467ff35d0 <col:49, col:61> col:61 msg 'const char *'
|-FunctionDecl 0x560467ff3960 <line:2607:1, col:66> col:6 ecs_os_trace 'void (const char *, int32_t, const char *)'
| |-ParmVarDecl 0x560467ff37c8 <col:19, col:31> col:31 file 'const char *'
| |-ParmVarDecl 0x560467ff3840 <col:37, col:45> col:45 line 'int32_t':'int'
| `-ParmVarDecl 0x560467ff38c0 <col:51, col:63> col:63 msg 'const char *'
|-FunctionDecl 0x560467ffb6c8 <line:2610:1, col:65> col:6 ecs_os_warn 'void (const char *, int32_t, const char *)'
| |-ParmVarDecl 0x560467ff3a30 <col:18, col:30> col:30 file 'const char *'
| |-ParmVarDecl 0x560467ff3aa8 <col:36, col:44> col:44 line 'int32_t':'int'
| `-ParmVarDecl 0x560467ff3b28 <col:50, col:62> col:62 msg 'const char *'
|-FunctionDecl 0x560467ffb930 <line:2613:1, col:64> col:6 ecs_os_err 'void (const char *, int32_t, const char *)'
| |-ParmVarDecl 0x560467ffb798 <col:17, col:29> col:29 file 'const char *'
| |-ParmVarDecl 0x560467ffb810 <col:35, col:43> col:43 line 'int32_t':'int'
| `-ParmVarDecl 0x560467ffb890 <col:49, col:61> col:61 msg 'const char *'
|-FunctionDecl 0x560467ffbb98 <line:2616:1, col:66> col:6 ecs_os_fatal 'void (const char *, int32_t, const char *)'
| |-ParmVarDecl 0x560467ffba00 <col:19, col:31> col:31 file 'const char *'
| |-ParmVarDecl 0x560467ffba78 <col:37, col:45> col:45 line 'int32_t':'int'
| `-ParmVarDecl 0x560467ffbaf8 <col:51, col:63> col:63 msg 'const char *'
|-FunctionDecl 0x560467ffbd30 <line:2619:1, col:36> col:13 ecs_os_strerror 'const char *(int)'
| `-ParmVarDecl 0x560467ffbc68 <col:29, col:33> col:33 err 'int'
|-FunctionDecl 0x560467ffbeb8 <line:2647:1, line:2648:13> line:2647:6 ecs_sleepf 'void (double)'
| `-ParmVarDecl 0x560467ffbdf0 <line:2648:5, col:12> col:12 t 'double'
|-FunctionDecl 0x560467ffc070 <line:2652:1, line:2653:22> line:2652:8 ecs_time_measure 'double (ecs_time_t *)'
| `-ParmVarDecl 0x560467ffbf70 <line:2653:5, col:17> col:17 start 'ecs_time_t *'
|-FunctionDecl 0x560467ffc2b8 <line:2657:1, line:2659:18> line:2657:12 ecs_time_sub 'ecs_time_t (ecs_time_t, ecs_time_t)'
| |-ParmVarDecl 0x560467ffc128 <line:2658:5, col:16> col:16 t1 'ecs_time_t':'struct ecs_time_t'
| `-ParmVarDecl 0x560467ffc1a0 <line:2659:5, col:16> col:16 t2 'ecs_time_t':'struct ecs_time_t'
|-FunctionDecl 0x560467ffc470 <line:2663:1, line:2664:17> line:2663:8 ecs_time_to_double 'double (ecs_time_t)'
| `-ParmVarDecl 0x560467ffc378 <line:2664:5, col:16> col:16 t 'ecs_time_t':'struct ecs_time_t'
|-FunctionDecl 0x560467ffe6e8 <line:2667:1, line:2669:20> line:2667:7 ecs_os_memdup 'void *(const void *, ecs_size_t)'
| |-ParmVarDecl 0x560467ffc530 <line:2668:5, col:17> col:17 src 'const void *'
| `-ParmVarDecl 0x560467ffc5a8 <line:2669:5, col:16> col:16 size 'ecs_size_t':'int'
|-FunctionDecl 0x560467ffe888 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2673:26> col:6 ecs_os_has_heap 'bool (void)'
| `-FullComment 0x56046811fce0 <line:2671:4, col:34>
| `-ParagraphComment 0x56046811fcb0 <col:4, col:34>
| `-TextComment 0x56046811fc80 <col:4, col:34> Text=" Are heap functions available? "
|-FunctionDecl 0x560467ffe9f0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2677:31> col:6 ecs_os_has_threading 'bool (void)'
| `-FullComment 0x56046811fdb0 <line:2675:4, col:39>
| `-ParagraphComment 0x56046811fd80 <col:4, col:39>
| `-TextComment 0x56046811fd50 <col:4, col:39> Text=" Are threading functions available? "
|-FunctionDecl 0x560467ffeb50 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2681:26> col:6 ecs_os_has_time 'bool (void)'
| `-FullComment 0x56046811fe80 <line:2679:4, col:34>
| `-ParagraphComment 0x56046811fe50 <col:4, col:34>
| `-TextComment 0x56046811fe20 <col:4, col:34> Text=" Are time functions available? "
|-FunctionDecl 0x560467ffecb0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2685:29> col:6 ecs_os_has_logging 'bool (void)'
| `-FullComment 0x560468120770 <line:2683:4, col:37>
| `-ParagraphComment 0x560468120740 <col:4, col:37>
| `-TextComment 0x56046811fef0 <col:4, col:37> Text=" Are logging functions available? "
|-FunctionDecl 0x560467ffee10 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2689:24> col:6 ecs_os_has_dl 'bool (void)'
| `-FullComment 0x560468120840 <line:2687:4, col:45>
| `-ParagraphComment 0x560468120810 <col:4, col:45>
| `-TextComment 0x5604681207e0 <col:4, col:45> Text=" Are dynamic library functions available? "
|-FunctionDecl 0x560467ffef70 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:2693:29> col:6 ecs_os_has_modules 'bool (void)'
| `-FullComment 0x560468120910 <line:2691:4, col:41>
| `-ParagraphComment 0x5604681208e0 <col:4, col:41>
| `-TextComment 0x5604681208b0 <col:4, col:41> Text=" Are module path functions available? "
|-TypedefDecl 0x560467fff0d8 <line:2722:1, col:18> col:18 referenced ecs_id_t 'uint64_t':'unsigned long'
| |-TypedefType 0x560467f8cd90 'uint64_t' sugar
| | |-Typedef 0x560467f87e80 'uint64_t'
| | `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| | |-Typedef 0x560467f7e4e0 '__uint64_t'
| | `-BuiltinType 0x560467ec1970 'unsigned long'
| `-FullComment 0x560468120a00 <line:2720:4, line:2721:51>
| `-ParagraphComment 0x5604681209d0 <line:2720:4, line:2721:51>
| |-TextComment 0x560468120980 <line:2720:4, col:77> Text=" An id. Ids are the things that can be added to an entity. An id can be an"
| `-TextComment 0x5604681209a0 <line:2721:3, col:51> Text=" entity or pair, and can have optional id flags. "
|-TypedefDecl 0x560467fff190 <line:2725:1, col:18> col:18 referenced ecs_entity_t 'ecs_id_t':'unsigned long'
| |-TypedefType 0x560467fff160 'ecs_id_t' sugar
| | |-Typedef 0x560467fff0d8 'ecs_id_t'
| | `-TypedefType 0x560467f8cd90 'uint64_t' sugar
| | |-Typedef 0x560467f87e80 'uint64_t'
| | `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| | |-Typedef 0x560467f7e4e0 '__uint64_t'
| | `-BuiltinType 0x560467ec1970 'unsigned long'
| `-FullComment 0x560468120ad0 <line:2724:4, col:26>
| `-ParagraphComment 0x560468120aa0 <col:4, col:26>
| `-TextComment 0x560468120a70 <col:4, col:26> Text=" An entity identifier. "
|-RecordDecl 0x560467fff218 <line:2728:9, line:2731:1> line:2728:9 struct definition
| |-FullComment 0x560468120ba0 <line:2727:4, col:34>
| | `-ParagraphComment 0x560468120b70 <col:4, col:34>
| | `-TextComment 0x560468120b40 <col:4, col:34> Text=" An array with (component) ids "
| |-FieldDecl 0x560467fff2f8 <line:2729:5, col:15> col:15 array 'ecs_id_t *'
| `-FieldDecl 0x560467fff358 <line:2730:5, col:13> col:13 count 'int32_t':'int'
|-TypedefDecl 0x560467fff408 <line:2728:1, line:2731:3> col:3 referenced ecs_type_t 'struct ecs_type_t':'ecs_type_t'
| |-ElaboratedType 0x560467fff3b0 'struct ecs_type_t' sugar
| | `-RecordType 0x560467fff2a0 'ecs_type_t'
| | `-Record 0x560467fff218 ''
| `-FullComment 0x560468120c70 <line:2727:4, col:34>
| `-ParagraphComment 0x560468120c40 <col:4, col:34>
| `-TextComment 0x560468120c10 <col:4, col:34> Text=" An array with (component) ids "
|-RecordDecl 0x560467fff4a0 <line:2734:9, col:16> col:16 struct ecs_world_t
|-TypedefDecl 0x560467fff598 <col:1, col:28> col:28 referenced ecs_world_t 'struct ecs_world_t':'struct ecs_world_t'
| |-ElaboratedType 0x560467fff540 'struct ecs_world_t' sugar
| | `-RecordType 0x560467fff520 'struct ecs_world_t'
| | `-Record 0x560467fff4a0 'ecs_world_t'
| `-FullComment 0x560468120d40 <line:2733:4, col:71>
| `-ParagraphComment 0x560468120d10 <col:4, col:71>
| `-TextComment 0x560468120ce0 <col:4, col:71> Text=" A world is the container for all ECS data and supporting features. "
|-RecordDecl 0x560467fff630 <line:2737:9, col:16> col:16 struct ecs_table_t
|-TypedefDecl 0x560467fff738 <col:1, col:28> col:28 referenced ecs_table_t 'struct ecs_table_t':'struct ecs_table_t'
| |-ElaboratedType 0x560467fff6e0 'struct ecs_table_t' sugar
| | `-RecordType 0x560467fff6c0 'struct ecs_table_t'
| | `-Record 0x560467fff630 'ecs_table_t'
| `-FullComment 0x560468120e10 <line:2736:4, col:56>
| `-ParagraphComment 0x560468120de0 <col:4, col:56>
| `-TextComment 0x560468120db0 <col:4, col:56> Text=" A table is where entities and components are stored "
|-RecordDecl 0x560467fff7d0 <line:2740:9, col:16> col:16 struct ecs_term_t
|-TypedefDecl 0x560467fff8c8 <col:1, col:27> col:27 referenced ecs_term_t 'struct ecs_term_t':'struct ecs_term_t'
| |-ElaboratedType 0x560467fff870 'struct ecs_term_t' sugar
| | `-RecordType 0x560467fff850 'struct ecs_term_t'
| | `-Record 0x560468007910 'ecs_term_t'
| `-FullComment 0x560468120ee0 <line:2739:4, col:42>
| `-ParagraphComment 0x560468120eb0 <col:4, col:42>
| `-TextComment 0x560468120e80 <col:4, col:42> Text=" A term is a single element in a query "
|-RecordDecl 0x560467fff960 <line:2743:9, col:16> col:16 struct ecs_query_t
|-TypedefDecl 0x560467fffa58 <col:1, col:28> col:28 referenced ecs_query_t 'struct ecs_query_t':'struct ecs_query_t'
| |-ElaboratedType 0x560467fffa00 'struct ecs_query_t' sugar
| | `-RecordType 0x560467fff9e0 'struct ecs_query_t'
| | `-Record 0x560467fff960 'ecs_query_t'
| `-FullComment 0x560468120fb0 <line:2742:4, col:54>
| `-ParagraphComment 0x560468120f80 <col:4, col:54>
| `-TextComment 0x560468120f50 <col:4, col:54> Text=" A query allows for cached iteration over ECS data "
|-RecordDecl 0x560467fffaf0 <line:2746:9, col:16> col:16 struct ecs_filter_t
|-TypedefDecl 0x560467fffbe8 <col:1, col:29> col:29 referenced ecs_filter_t 'struct ecs_filter_t':'struct ecs_filter_t'
| |-ElaboratedType 0x560467fffb90 'struct ecs_filter_t' sugar
| | `-RecordType 0x560467fffb70 'struct ecs_filter_t'
| | `-Record 0x560468008198 'ecs_filter_t'
| `-FullComment 0x560468121080 <line:2745:4, col:65>
| `-ParagraphComment 0x560468121050 <col:4, col:65>
| `-TextComment 0x560468121020 <col:4, col:65> Text=" A filter allows for uncached, ad hoc iteration over ECS data "
|-RecordDecl 0x560467fffc80 <line:2749:9, col:16> col:16 struct ecs_rule_t
|-TypedefDecl 0x560467fffd78 <col:1, col:27> col:27 referenced ecs_rule_t 'struct ecs_rule_t':'struct ecs_rule_t'
| |-ElaboratedType 0x560467fffd20 'struct ecs_rule_t' sugar
| | `-RecordType 0x560467fffd00 'struct ecs_rule_t'
| | `-Record 0x560467fffc80 'ecs_rule_t'
| `-FullComment 0x560468121150 <line:2748:4, col:43>
| `-ParagraphComment 0x560468121120 <col:4, col:43>
| `-TextComment 0x5604681210f0 <col:4, col:43> Text=" A rule implements a non-trivial filter "
|-RecordDecl 0x560467fffe10 <line:2752:9, col:16> col:16 struct ecs_observer_t
|-TypedefDecl 0x560467ffff08 <col:1, col:31> col:31 ecs_observer_t 'struct ecs_observer_t':'struct ecs_observer_t'
| |-ElaboratedType 0x560467fffeb0 'struct ecs_observer_t' sugar
| | `-RecordType 0x560467fffe90 'struct ecs_observer_t'
| | `-Record 0x560468008fb0 'ecs_observer_t'
| `-FullComment 0x560468121220 <line:2751:4, col:64>
| `-ParagraphComment 0x5604681211f0 <col:4, col:64>
| `-TextComment 0x5604681211c0 <col:4, col:64> Text=" An observer reacts to events matching multiple filter terms "
|-RecordDecl 0x560467ffffa0 <line:2755:9, col:16> col:16 struct ecs_observable_t
|-TypedefDecl 0x560468000098 <col:1, col:33> col:33 referenced ecs_observable_t 'struct ecs_observable_t':'struct ecs_observable_t'
| |-ElaboratedType 0x560468000040 'struct ecs_observable_t' sugar
| | `-RecordType 0x560468000020 'struct ecs_observable_t'
| | `-Record 0x56046800d1c8 'ecs_observable_t'
| `-FullComment 0x5604681212f0 <line:2754:4, col:76>
| `-ParagraphComment 0x5604681212c0 <col:4, col:76>
| `-TextComment 0x560468121290 <col:4, col:76> Text=" An observable contains lists of triggers for specific events/components "
|-RecordDecl 0x560468000108 <line:2758:9, col:16> col:16 struct ecs_iter_t
|-TypedefDecl 0x560468000208 <col:1, col:27> col:27 referenced ecs_iter_t 'struct ecs_iter_t':'struct ecs_iter_t'
| `-ElaboratedType 0x5604680001b0 'struct ecs_iter_t' sugar
| `-RecordType 0x560468000190 'struct ecs_iter_t'
| `-Record 0x560468016320 'ecs_iter_t'
|-RecordDecl 0x5604680002a0 <line:2761:9, col:16> col:16 struct ecs_ref_t
|-TypedefDecl 0x560468000398 <col:1, col:26> col:26 referenced ecs_ref_t 'struct ecs_ref_t':'struct ecs_ref_t'
| |-ElaboratedType 0x560468000340 'struct ecs_ref_t' sugar
| | `-RecordType 0x560468000320 'struct ecs_ref_t'
| | `-Record 0x56046800ea70 'ecs_ref_t'
| `-FullComment 0x5604681213c0 <line:2760:4, col:74>
| `-ParagraphComment 0x560468121390 <col:4, col:74>
| `-TextComment 0x560468121360 <col:4, col:74> Text=" Refs cache data that lets them access components faster than ecs_get. "
|-RecordDecl 0x560468000430 <line:2764:9, col:16> col:16 struct ecs_type_hooks_t
|-TypedefDecl 0x560468000528 <col:1, col:33> col:33 referenced ecs_type_hooks_t 'struct ecs_type_hooks_t':'struct ecs_type_hooks_t'
| |-ElaboratedType 0x5604680004d0 'struct ecs_type_hooks_t' sugar
| | `-RecordType 0x5604680004b0 'struct ecs_type_hooks_t'
| | `-Record 0x560468009b28 'ecs_type_hooks_t'
| `-FullComment 0x560468121490 <line:2763:4, col:27>
| `-ParagraphComment 0x560468121460 <col:4, col:27>
| `-TextComment 0x560468121430 <col:4, col:27> Text=" Type hooks (callbacks) "
|-RecordDecl 0x5604680005c0 <line:2767:9, col:16> col:16 struct ecs_type_info_t
|-TypedefDecl 0x5604680006d0 <col:1, col:32> col:32 referenced ecs_type_info_t 'struct ecs_type_info_t':'struct ecs_type_info_t'
| |-ElaboratedType 0x560468000660 'struct ecs_type_info_t' sugar
| | `-RecordType 0x560468000640 'struct ecs_type_info_t'
| | `-Record 0x56046800a9b8 'ecs_type_info_t'
| `-FullComment 0x560468121560 <line:2766:4, col:21>
| `-ParagraphComment 0x560468121530 <col:4, col:21>
| `-TextComment 0x560468121500 <col:4, col:21> Text=" Type information "
|-RecordDecl 0x560468000740 <line:2770:9, col:16> col:16 struct ecs_id_record_t
|-TypedefDecl 0x560468000838 <col:1, col:32> col:32 referenced ecs_id_record_t 'struct ecs_id_record_t':'struct ecs_id_record_t'
| `-ElaboratedType 0x5604680007e0 'struct ecs_id_record_t' sugar
| `-RecordType 0x5604680007c0 'struct ecs_id_record_t'
| `-Record 0x560468000740 'ecs_id_record_t'
|-RecordDecl 0x5604680008a8 <line:2773:9, col:16> col:16 struct ecs_table_record_t
|-TypedefDecl 0x5604680009a8 <col:1, col:35> col:35 ecs_table_record_t 'struct ecs_table_record_t':'struct ecs_table_record_t'
| `-ElaboratedType 0x560468000950 'struct ecs_table_record_t' sugar
| `-RecordType 0x560468000930 'struct ecs_table_record_t'
| `-Record 0x5604680008a8 'ecs_table_record_t'
|-TypedefDecl 0x560468000a50 <line:2797:1, col:14> col:14 referenced ecs_poly_t 'void'
| |-BuiltinType 0x560467ec1810 'void'
| `-FullComment 0x560468121950 <line:2775:4, line:2795:76>
| |-ParagraphComment 0x560468121670 <line:2775:4, line:2778:54>
| | |-TextComment 0x5604681215d0 <line:2775:4, col:18> Text=" A poly object."
| | |-TextComment 0x5604681215f0 <line:2776:3, col:79> Text=" A poly (short for polymorph) object is an object that has a variable list of"
| | |-TextComment 0x560468121610 <line:2777:3, col:79> Text=" capabilities, determined by a mixin table. This is the current list of types"
| | `-TextComment 0x560468121630 <line:2778:3, col:54> Text=" in the flecs API that can be used as an ecs_poly_t:"
| |-ParagraphComment 0x560468121780 <line:2780:3, line:2785:19>
| | |-TextComment 0x560468121690 <line:2780:3, col:16> Text=" - ecs_world_t"
| | |-TextComment 0x5604681216b0 <line:2781:3, col:16> Text=" - ecs_stage_t"
| | |-TextComment 0x5604681216d0 <line:2782:3, col:16> Text=" - ecs_query_t"
| | |-TextComment 0x5604681216f0 <line:2783:3, col:17> Text=" - ecs_filter_t"
| | |-TextComment 0x560468121710 <line:2784:3, col:15> Text=" - ecs_rule_t"
| | `-TextComment 0x560468121730 <line:2785:3, col:19> Text=" - (more to come)"
| |-ParagraphComment 0x560468121820 <line:2787:3, line:2789:10>
| | |-TextComment 0x5604681217a0 <line:2787:3, col:75> Text=" Functions that accept an ecs_poly_t argument can accept objects of these"
| | |-TextComment 0x5604681217c0 <line:2788:3, col:79> Text=" types. If the object does not have the requested mixin the API will throw an"
| | `-TextComment 0x5604681217e0 <line:2789:3, col:10> Text=" assert."
| `-ParagraphComment 0x560468121910 <line:2791:3, line:2795:76>
| |-TextComment 0x560468121840 <line:2791:3, col:72> Text=" The poly/mixin framework enables partially overlapping features to be"
| |-TextComment 0x560468121860 <line:2792:3, col:76> Text=" implemented once, and enables objects of different types to interact with"
| |-TextComment 0x560468121880 <line:2793:3, col:72> Text=" each other depending on what mixins they have, rather than their type"
| |-TextComment 0x5604681218a0 <line:2794:3, col:76> Text=" (in some ways it's like a mini-ECS). Additionally, each poly object has a"
| `-TextComment 0x5604681218c0 <line:2795:3, col:76> Text=" header that enables the API to do sanity checking on the input arguments."
|-RecordDecl 0x560468000ad8 <line:2800:9, col:16> col:16 struct ecs_mixins_t
|-TypedefDecl 0x560468000bd8 <col:1, col:29> col:29 referenced ecs_mixins_t 'struct ecs_mixins_t':'struct ecs_mixins_t'
| |-ElaboratedType 0x560468000b80 'struct ecs_mixins_t' sugar
| | `-RecordType 0x560468000b60 'struct ecs_mixins_t'
| | `-Record 0x560468000ad8 'ecs_mixins_t'
| `-FullComment 0x560468121a20 <line:2799:4, col:33>
| `-ParagraphComment 0x5604681219f0 <col:4, col:33>
| `-TextComment 0x5604681219c0 <col:4, col:33> Text=" Type that stores poly mixins "
|-RecordDecl 0x560468000c70 <line:2803:9, line:2807:1> line:2803:16 struct ecs_header_t definition
| |-FullComment 0x560468121af0 <line:2802:4, col:35>
| | `-ParagraphComment 0x560468121ac0 <col:4, col:35>
| | `-TextComment 0x560468121a90 <col:4, col:35> Text=" Header for ecs_poly_t objects. "
| |-FieldDecl 0x560468000d20 <line:2804:5, col:13> col:13 magic 'int32_t':'int'
| |-FieldDecl 0x560468000d80 <line:2805:5, col:13> col:13 type 'int32_t':'int'
| `-FieldDecl 0x560468000e58 <line:2806:5, col:19> col:19 mixins 'ecs_mixins_t *'
|-TypedefDecl 0x560468000f08 <line:2803:1, line:2807:3> col:3 referenced ecs_header_t 'struct ecs_header_t':'struct ecs_header_t'
| |-ElaboratedType 0x560468000eb0 'struct ecs_header_t' sugar
| | `-RecordType 0x560468000cf0 'struct ecs_header_t'
| | `-Record 0x560468000c70 'ecs_header_t'
| `-FullComment 0x560468121bc0 <line:2802:4, col:35>
| `-ParagraphComment 0x560468121b90 <col:4, col:35>
| `-TextComment 0x560468121b60 <col:4, col:35> Text=" Header for ecs_poly_t objects. "
|-TypedefDecl 0x560468001210 <line:2826:1, line:2827:19> line:2826:16 referenced ecs_run_action_t 'void (*)(ecs_iter_t *)'
| |-PointerType 0x5604680011b0 'void (*)(ecs_iter_t *)'
| | `-ParenType 0x560468001150 'void (ecs_iter_t *)' sugar
| | `-FunctionProtoType 0x560468001120 'void (ecs_iter_t *)' cdecl
| | |-BuiltinType 0x560467ec1810 'void'
| | `-PointerType 0x560468001050 'ecs_iter_t *'
| | `-TypedefType 0x560468001000 'ecs_iter_t' sugar
| | |-Typedef 0x560468000208 'ecs_iter_t'
| | `-ElaboratedType 0x5604680001b0 'struct ecs_iter_t' sugar
| | `-RecordType 0x560468000190 'struct ecs_iter_t'
| | `-Record 0x560468016320 'ecs_iter_t'
| `-FullComment 0x560468121e60 <line:2817:4, line:2824:57>
| |-ParagraphComment 0x560468121cb0 <line:2817:4, line:2819:32>
| | |-TextComment 0x560468121c30 <line:2817:4, col:58> Text=" Function prototype for runnables (systems, observers)."
| | |-TextComment 0x560468121c50 <line:2818:3, col:76> Text=" The run callback overrides the default behavior for iterating through the"
| | `-TextComment 0x560468121c70 <line:2819:3, col:32> Text=" results of a runnable object."
| |-ParagraphComment 0x560468121d20 <line:2821:3, line:2822:35>
| | |-TextComment 0x560468121cd0 <line:2821:3, col:76> Text=" The default runnable iterates the iterator, and calls an iter_action (see"
| | `-TextComment 0x560468121cf0 <line:2822:3, col:35> Text=" below) for each returned result."
| |-ParagraphComment 0x560468121d70 <line:2824:3>
| | `-TextComment 0x560468121d40 <col:3> Text=" "
| `-ParamCommandComment 0x560468121d90 <col:4, col:57> [in] implicitly Param="it" ParamIndex=0
| `-ParagraphComment 0x560468121e20 <col:13, col:57>
| `-TextComment 0x560468121df0 <col:13, col:57> Text=" The iterator to be iterated by the runnable."
|-TypedefDecl 0x560468001348 <line:2835:1, line:2836:19> line:2835:16 referenced ecs_iter_action_t 'void (*)(ecs_iter_t *)'
| |-PointerType 0x5604680011b0 'void (*)(ecs_iter_t *)'
| | `-ParenType 0x560468001150 'void (ecs_iter_t *)' sugar
| | `-FunctionProtoType 0x560468001120 'void (ecs_iter_t *)' cdecl
| | |-BuiltinType 0x560467ec1810 'void'
| | `-PointerType 0x560468001050 'ecs_iter_t *'
| | `-TypedefType 0x560468001000 'ecs_iter_t' sugar
| | |-Typedef 0x560468000208 'ecs_iter_t'
| | `-ElaboratedType 0x5604680001b0 'struct ecs_iter_t' sugar
| | `-RecordType 0x560468000190 'struct ecs_iter_t'
| | `-Record 0x560468016320 'ecs_iter_t'
| `-FullComment 0x560468122090 <line:2829:4, line:2833:68>
| |-ParagraphComment 0x560468121f50 <line:2829:4, line:2831:17>
| | |-TextComment 0x560468121ed0 <line:2829:4, col:37> Text=" Function prototype for iterables."
| | |-TextComment 0x560468121ef0 <line:2830:3, col:73> Text=" A system may invoke a callback multiple times, typically once for each"
| | `-TextComment 0x560468121f10 <line:2831:3, col:17> Text=" matched table."
| |-ParagraphComment 0x560468121fa0 <line:2833:3>
| | `-TextComment 0x560468121f70 <col:3> Text=" "
| `-ParamCommandComment 0x560468121fc0 <col:4, col:68> [in] implicitly Param="it" ParamIndex=0
| `-ParagraphComment 0x560468122050 <col:13, col:68>
| `-TextComment 0x560468122020 <col:13, col:68> Text=" The iterator containing the data for the current match."
|-TypedefDecl 0x560468001a48 <line:2849:1, line:2853:23> line:2849:16 referenced ecs_iter_init_action_t 'void (*)(const ecs_world_t *, const ecs_poly_t *, ecs_iter_t *, ecs_term_t *)'
| |-PointerType 0x5604680019d0 'void (*)(const ecs_world_t *, const ecs_poly_t *, ecs_iter_t *, ecs_term_t *)'
| | `-ParenType 0x560468001970 'void (const ecs_world_t *, const ecs_poly_t *, ecs_iter_t *, ecs_term_t *)' sugar
| | `-FunctionProtoType 0x560468001920 'void (const ecs_world_t *, const ecs_poly_t *, ecs_iter_t *, ecs_term_t *)' cdecl
| | |-BuiltinType 0x560467ec1810 'void'
| | |-PointerType 0x560468001420 'const ecs_world_t *'
| | | `-QualType 0x5604680013d1 'const ecs_world_t' const
| | | `-TypedefType 0x5604680013d0 'ecs_world_t' sugar
| | | |-Typedef 0x560467fff598 'ecs_world_t'
| | | `-ElaboratedType 0x560467fff540 'struct ecs_world_t' sugar
| | | `-RecordType 0x560467fff520 'struct ecs_world_t'
| | | `-Record 0x560467fff4a0 'ecs_world_t'
| | |-PointerType 0x5604680014e0 'const ecs_poly_t *'
| | | `-QualType 0x5604680014c1 'const ecs_poly_t' const
| | | `-TypedefType 0x5604680014c0 'ecs_poly_t' sugar
| | | |-Typedef 0x560468000a50 'ecs_poly_t'
| | | `-BuiltinType 0x560467ec1810 'void'
| | |-PointerType 0x560468001050 'ecs_iter_t *'
| | | `-TypedefType 0x560468001000 'ecs_iter_t' sugar
| | | |-Typedef 0x560468000208 'ecs_iter_t'
| | | `-ElaboratedType 0x5604680001b0 'struct ecs_iter_t' sugar
| | | `-RecordType 0x560468000190 'struct ecs_iter_t'
| | | `-Record 0x560468016320 'ecs_iter_t'
| | `-PointerType 0x560468001650 'ecs_term_t *'
| | `-TypedefType 0x560468001600 'ecs_term_t' sugar
| | |-Typedef 0x560467fff8c8 'ecs_term_t'
| | `-ElaboratedType 0x560467fff870 'struct ecs_term_t' sugar
| | `-RecordType 0x560467fff850 'struct ecs_term_t'
| | `-Record 0x560468007910 'ecs_term_t'
| `-FullComment 0x560468122590 <line:2838:4, line:2847:49>
| |-ParagraphComment 0x5604681221d0 <line:2838:4, line:2842:50>
| | |-TextComment 0x560468122100 <line:2838:4, col:60> Text=" Function prototype for creating an iterator from a poly."
| | |-TextComment 0x560468122120 <line:2839:3, col:77> Text=" Used to create iterators from poly objects with the iterable mixin. When a"
| | |-TextComment 0x560468122140 <line:2840:3, col:80> Text=" filter is provided, an array of two iterators must be passed to the function."
| | |-TextComment 0x560468122160 <line:2841:3, col:73> Text=" This allows the mixin implementation to create a chained iterator when"
| | `-TextComment 0x560468122180 <line:2842:3, col:50> Text=" necessary, which requires two iterator objects."
| |-ParagraphComment 0x560468122220 <line:2844:3>
| | `-TextComment 0x5604681221f0 <col:3> Text=" "
| |-ParamCommandComment 0x560468122240 <col:4, line:2845:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681222f0 <line:2844:16, line:2845:3>
| | |-TextComment 0x5604681222a0 <line:2844:16, col:68> Text=" The world or stage for which to create the iterator."
| | `-TextComment 0x5604681222c0 <line:2845:3> Text=" "
| |-ParamCommandComment 0x560468122310 <col:4, line:2846:3> [in] implicitly Param="iterable" ParamIndex=1
| | `-ParagraphComment 0x5604681223c0 <line:2845:19, line:2846:3>
| | |-TextComment 0x560468122370 <line:2845:19, col:43> Text=" An iterable poly object."
| | `-TextComment 0x560468122390 <line:2846:3> Text=" "
| |-ParamCommandComment 0x5604681223e0 <col:4, line:2847:3> [in] implicitly Param="it" ParamIndex=2
| | `-ParagraphComment 0x560468122490 <line:2846:13, line:2847:3>
| | |-TextComment 0x560468122440 <line:2846:13, col:51> Text=" The iterator to create (out parameter)"
| | `-TextComment 0x560468122460 <line:2847:3> Text=" "
| `-ParamCommandComment 0x5604681224b0 <col:4, col:49> [in] implicitly Param="filter" ParamIndex=3
| `-ParagraphComment 0x560468122540 <col:17, col:49>
| `-TextComment 0x560468122510 <col:17, col:49> Text=" Optional term to filter results."
|-TypedefDecl 0x560468001c60 <line:2862:1, line:2863:19> line:2862:16 referenced ecs_iter_next_action_t 'bool (*)(ecs_iter_t *)'
| |-PointerType 0x560468001c00 'bool (*)(ecs_iter_t *)'
| | `-ParenType 0x560468001ba0 'bool (ecs_iter_t *)' sugar
| | `-FunctionProtoType 0x560468001b70 'bool (ecs_iter_t *)' cdecl
| | |-BuiltinType 0x560467ec1830 'bool'
| | `-PointerType 0x560468001050 'ecs_iter_t *'
| | `-TypedefType 0x560468001000 'ecs_iter_t' sugar
| | |-Typedef 0x560468000208 'ecs_iter_t'
| | `-ElaboratedType 0x5604680001b0 'struct ecs_iter_t' sugar
| | `-RecordType 0x560468000190 'struct ecs_iter_t'
| | `-Record 0x560468016320 'ecs_iter_t'
| `-FullComment 0x560468123890 <line:2855:4, line:2860:66>
| |-ParagraphComment 0x560468122680 <line:2855:4, line:2857:55>
| | |-TextComment 0x560468122600 <line:2855:4, col:49> Text=" Function prototype for iterating an iterator."
| | |-TextComment 0x560468122620 <line:2856:3, col:80> Text=" Stored inside initialized iterators. This allows an application to * iterate "
| | `-TextComment 0x560468122640 <line:2857:3, col:55> Text=" an iterator without needing to know what created it."
| |-ParagraphComment 0x5604681226d0 <line:2859:3>
| | `-TextComment 0x5604681226a0 <col:3> Text=" "
| |-ParamCommandComment 0x5604681226f0 <col:4, line:2860:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x5604681237d0 <line:2859:13, line:2860:3>
| | |-TextComment 0x560468123780 <line:2859:13, col:37> Text=" The iterator to iterate."
| | `-TextComment 0x5604681237a0 <line:2860:3> Text=" "
| `-BlockCommandComment 0x5604681237f0 <col:4, col:66> Name="return"
| `-ParagraphComment 0x560468123850 <col:11, col:66>
| `-TextComment 0x560468123820 <col:11, col:66> Text=" True if iterator has no more results, false if it does."
|-TypedefDecl 0x560468001d98 <line:2870:1, line:2871:19> line:2870:16 referenced ecs_iter_fini_action_t 'void (*)(ecs_iter_t *)'
| |-PointerType 0x5604680011b0 'void (*)(ecs_iter_t *)'
| | `-ParenType 0x560468001150 'void (ecs_iter_t *)' sugar
| | `-FunctionProtoType 0x560468001120 'void (ecs_iter_t *)' cdecl
| | |-BuiltinType 0x560467ec1810 'void'
| | `-PointerType 0x560468001050 'ecs_iter_t *'
| | `-TypedefType 0x560468001000 'ecs_iter_t' sugar
| | |-Typedef 0x560468000208 'ecs_iter_t'
| | `-ElaboratedType 0x5604680001b0 'struct ecs_iter_t' sugar
| | `-RecordType 0x560468000190 'struct ecs_iter_t'
| | `-Record 0x560468016320 'ecs_iter_t'
| `-FullComment 0x560468123a90 <line:2865:4, line:2868:34>
| |-ParagraphComment 0x560468123950 <line:2865:4, line:2866:27>
| | |-TextComment 0x560468123900 <line:2865:4, col:47> Text=" Function prototype for freeing an iterator."
| | `-TextComment 0x560468123920 <line:2866:3, col:27> Text=" Free iterator resources."
| |-ParagraphComment 0x5604681239a0 <line:2868:3>
| | `-TextComment 0x560468123970 <col:3> Text=" "
| `-ParamCommandComment 0x5604681239c0 <col:4, col:34> [in] implicitly Param="it" ParamIndex=0
| `-ParagraphComment 0x560468123a50 <col:13, col:34>
| `-TextComment 0x560468123a20 <col:13, col:34> Text=" The iterator to free."
|-TypedefDecl 0x5604680021b0 <line:2874:1, line:2878:21> line:2874:15 referenced ecs_order_by_action_t 'int (*)(ecs_entity_t, const void *, ecs_entity_t, const void *)'
| |-PointerType 0x560468002130 'int (*)(ecs_entity_t, const void *, ecs_entity_t, const void *)'
| | `-ParenType 0x5604680020d0 'int (ecs_entity_t, const void *, ecs_entity_t, const void *)' sugar
| | `-FunctionProtoType 0x560468002080 'int (ecs_entity_t, const void *, ecs_entity_t, const void *)' cdecl
| | |-BuiltinType 0x560467ec18b0 'int'
| | |-TypedefType 0x560468001e20 'ecs_entity_t' sugar
| | | |-Typedef 0x560467fff190 'ecs_entity_t'
| | | `-TypedefType 0x560467fff160 'ecs_id_t' sugar
| | | |-Typedef 0x560467fff0d8 'ecs_id_t'
| | | `-TypedefType 0x560467f8cd90 'uint64_t' sugar
| | | |-Typedef 0x560467f87e80 'uint64_t'
| | | `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| | | |-Typedef 0x560467f7e4e0 '__uint64_t'
| | | `-BuiltinType 0x560467ec1970 'unsigned long'
| | |-PointerType 0x560467f594d0 'const void *'
| | | `-QualType 0x560467ec1811 'const void' const
| | | `-BuiltinType 0x560467ec1810 'void'
| | |-TypedefType 0x560468001e20 'ecs_entity_t' sugar
| | | |-Typedef 0x560467fff190 'ecs_entity_t'
| | | `-TypedefType 0x560467fff160 'ecs_id_t' sugar
| | | |-Typedef 0x560467fff0d8 'ecs_id_t'
| | | `-TypedefType 0x560467f8cd90 'uint64_t' sugar
| | | |-Typedef 0x560467f87e80 'uint64_t'
| | | `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| | | |-Typedef 0x560467f7e4e0 '__uint64_t'
| | | `-BuiltinType 0x560467ec1970 'unsigned long'
| | `-PointerType 0x560467f594d0 'const void *'
| | `-QualType 0x560467ec1811 'const void' const
| | `-BuiltinType 0x560467ec1810 'void'
| `-FullComment 0x560468123b60 <line:2873:4, col:43>
| `-ParagraphComment 0x560468123b30 <col:4, col:43>
| `-TextComment 0x560468123b00 <col:4, col:43> Text=" Callback used for comparing components "
|-TypedefDecl 0x560468002e48 <line:2881:1, line:2889:35> line:2881:16 referenced ecs_sort_table_action_t 'void (*)(ecs_world_t *, ecs_table_t *, ecs_entity_t *, void *, int32_t, int32_t, int32_t, ecs_order_by_action_t)'
| |-PointerType 0x560468002db0 'void (*)(ecs_world_t *, ecs_table_t *, ecs_entity_t *, void *, int32_t, int32_t, int32_t, ecs_order_by_action_t)'
| | `-ParenType 0x560468002810 'void (ecs_world_t *, ecs_table_t *, ecs_entity_t *, void *, int32_t, int32_t, int32_t, ecs_order_by_action_t)' sugar
| | `-FunctionProtoType 0x5604680027a0 'void (ecs_world_t *, ecs_table_t *, ecs_entity_t *, void *, int32_t, int32_t, int32_t, ecs_order_by_action_t)' cdecl
| | |-BuiltinType 0x560467ec1810 'void'
| | |-PointerType 0x560468002270 'ecs_world_t *'
| | | `-TypedefType 0x5604680013d0 'ecs_world_t' sugar
| | | |-Typedef 0x560467fff598 'ecs_world_t'
| | | `-ElaboratedType 0x560467fff540 'struct ecs_world_t' sugar
| | | `-RecordType 0x560467fff520 'struct ecs_world_t'
| | | `-Record 0x560467fff4a0 'ecs_world_t'
| | |-PointerType 0x560468002360 'ecs_table_t *'
| | | `-TypedefType 0x560468002310 'ecs_table_t' sugar
| | | |-Typedef 0x560467fff738 'ecs_table_t'
| | | `-ElaboratedType 0x560467fff6e0 'struct ecs_table_t' sugar
| | | `-RecordType 0x560467fff6c0 'struct ecs_table_t'
| | | `-Record 0x560467fff630 'ecs_table_t'
| | |-PointerType 0x560468002400 'ecs_entity_t *'
| | | `-TypedefType 0x560468001e20 'ecs_entity_t' sugar
| | | |-Typedef 0x560467fff190 'ecs_entity_t'
| | | `-TypedefType 0x560467fff160 'ecs_id_t' sugar
| | | |-Typedef 0x560467fff0d8 'ecs_id_t'
| | | `-TypedefType 0x560467f8cd90 'uint64_t' sugar
| | | |-Typedef 0x560467f87e80 'uint64_t'
| | | `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| | | |-Typedef 0x560467f7e4e0 '__uint64_t'
| | | `-BuiltinType 0x560467ec1970 'unsigned long'
| | |-PointerType 0x560467ec1f30 'void *'
| | | `-BuiltinType 0x560467ec1810 'void'
| | |-TypedefType 0x560467f8ce20 'int32_t' sugar
| | | |-Typedef 0x560467f87c78 'int32_t'
| | | `-TypedefType 0x560467f7e780 '__int32_t' sugar
| | | |-Typedef 0x560467f78f28 '__int32_t'
| | | `-BuiltinType 0x560467ec18b0 'int'
| | |-TypedefType 0x560467f8ce20 'int32_t' sugar
| | | |-Typedef 0x560467f87c78 'int32_t'
| | | `-TypedefType 0x560467f7e780 '__int32_t' sugar
| | | |-Typedef 0x560467f78f28 '__int32_t'
| | | `-BuiltinType 0x560467ec18b0 'int'
| | |-TypedefType 0x560467f8ce20 'int32_t' sugar
| | | |-Typedef 0x560467f87c78 'int32_t'
| | | `-TypedefType 0x560467f7e780 '__int32_t' sugar
| | | |-Typedef 0x560467f78f28 '__int32_t'
| | | `-BuiltinType 0x560467ec18b0 'int'
| | `-TypedefType 0x560468002690 'ecs_order_by_action_t' sugar
| | |-Typedef 0x5604680021b0 'ecs_order_by_action_t'
| | `-PointerType 0x560468002130 'int (*)(ecs_entity_t, const void *, ecs_entity_t, const void *)'
| | `-ParenType 0x5604680020d0 'int (ecs_entity_t, const void *, ecs_entity_t, const void *)' sugar
| | `-FunctionProtoType 0x560468002080 'int (ecs_entity_t, const void *, ecs_entity_t, const void *)' cdecl
| | |-BuiltinType 0x560467ec18b0 'int'
| | |-TypedefType 0x560468001e20 'ecs_entity_t' sugar
| | | |-Typedef 0x560467fff190 'ecs_entity_t'
| | | `-TypedefType 0x560467fff160 'ecs_id_t' sugar
| | | |-Typedef 0x560467fff0d8 'ecs_id_t'
| | | `-TypedefType 0x560467f8cd90 'uint64_t' sugar
| | | |-Typedef 0x560467f87e80 'uint64_t'
| | | `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| | | |-Typedef 0x560467f7e4e0 '__uint64_t'
| | | `-BuiltinType 0x560467ec1970 'unsigned long'
| | |-PointerType 0x560467f594d0 'const void *'
| | | `-QualType 0x560467ec1811 'const void' const
| | | `-BuiltinType 0x560467ec1810 'void'
| | |-TypedefType 0x560468001e20 'ecs_entity_t' sugar
| | | |-Typedef 0x560467fff190 'ecs_entity_t'
| | | `-TypedefType 0x560467fff160 'ecs_id_t' sugar
| | | |-Typedef 0x560467fff0d8 'ecs_id_t'
| | | `-TypedefType 0x560467f8cd90 'uint64_t' sugar
| | | |-Typedef 0x560467f87e80 'uint64_t'
| | | `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| | | |-Typedef 0x560467f7e4e0 '__uint64_t'
| | | `-BuiltinType 0x560467ec1970 'unsigned long'
| | `-PointerType 0x560467f594d0 'const void *'
| | `-QualType 0x560467ec1811 'const void' const
| | `-BuiltinType 0x560467ec1810 'void'
| `-FullComment 0x560468123c30 <line:2880:4, col:61>
| `-ParagraphComment 0x560468123c00 <col:4, col:61>
| `-TextComment 0x560468123bd0 <col:4, col:61> Text=" Callback used for sorting the entire table of components "
|-TypedefDecl 0x560468003228 <line:2892:1, line:2896:14> line:2892:20 referenced ecs_group_by_action_t 'uint64_t (*)(ecs_world_t *, ecs_table_t *, ecs_id_t, void *)'
| |-PointerType 0x5604680031b0 'uint64_t (*)(ecs_world_t *, ecs_table_t *, ecs_id_t, void *)'
| | `-ParenType 0x560468003150 'uint64_t (ecs_world_t *, ecs_table_t *, ecs_id_t, void *)' sugar
| | `-FunctionProtoType 0x560468003100 'uint64_t (ecs_world_t *, ecs_table_t *, ecs_id_t, void *)' cdecl
| | |-TypedefType 0x560467f8cd90 'uint64_t' sugar
| | | |-Typedef 0x560467f87e80 'uint64_t'
| | | `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| | | |-Typedef 0x560467f7e4e0 '__uint64_t'
| | | `-BuiltinType 0x560467ec1970 'unsigned long'
| | |-PointerType 0x560468002270 'ecs_world_t *'
| | | `-TypedefType 0x5604680013d0 'ecs_world_t' sugar
| | | |-Typedef 0x560467fff598 'ecs_world_t'
| | | `-ElaboratedType 0x560467fff540 'struct ecs_world_t' sugar
| | | `-RecordType 0x560467fff520 'struct ecs_world_t'
| | | `-Record 0x560467fff4a0 'ecs_world_t'
| | |-PointerType 0x560468002360 'ecs_table_t *'
| | | `-TypedefType 0x560468002310 'ecs_table_t' sugar
| | | |-Typedef 0x560467fff738 'ecs_table_t'
| | | `-ElaboratedType 0x560467fff6e0 'struct ecs_table_t' sugar
| | | `-RecordType 0x560467fff6c0 'struct ecs_table_t'
| | | `-Record 0x560467fff630 'ecs_table_t'
| | |-TypedefType 0x560467fff160 'ecs_id_t' sugar
| | | |-Typedef 0x560467fff0d8 'ecs_id_t'
| | | `-TypedefType 0x560467f8cd90 'uint64_t' sugar
| | | |-Typedef 0x560467f87e80 'uint64_t'
| | | `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| | | |-Typedef 0x560467f7e4e0 '__uint64_t'
| | | `-BuiltinType 0x560467ec1970 'unsigned long'
| | `-PointerType 0x560467ec1f30 'void *'
| | `-BuiltinType 0x560467ec1810 'void'
| `-FullComment 0x560468123d00 <line:2891:4, col:49>
| `-ParagraphComment 0x560468123cd0 <col:4, col:49>
| `-TextComment 0x560468123ca0 <col:4, col:49> Text=" Callback used for grouping tables in a query "
|-TypedefDecl 0x560468003548 <line:2899:1, line:2902:23> line:2899:17 referenced ecs_group_create_action_t 'void *(*)(ecs_world_t *, uint64_t, void *)'
| `-PointerType 0x5604680034d0 'void *(*)(ecs_world_t *, uint64_t, void *)'
| `-ParenType 0x560468003470 'void *(ecs_world_t *, uint64_t, void *)' sugar
| `-FunctionProtoType 0x560468003430 'void *(ecs_world_t *, uint64_t, void *)' cdecl
| |-PointerType 0x560467ec1f30 'void *'
| | `-BuiltinType 0x560467ec1810 'void'
| |-PointerType 0x560468002270 'ecs_world_t *'
| | `-TypedefType 0x5604680013d0 'ecs_world_t' sugar
| | |-Typedef 0x560467fff598 'ecs_world_t'
| | `-ElaboratedType 0x560467fff540 'struct ecs_world_t' sugar
| | `-RecordType 0x560467fff520 'struct ecs_world_t'
| | `-Record 0x560467fff4a0 'ecs_world_t'
| |-TypedefType 0x560467f8cd90 'uint64_t' sugar
| | |-Typedef 0x560467f87e80 'uint64_t'
| | `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| | |-Typedef 0x560467f7e4e0 '__uint64_t'
| | `-BuiltinType 0x560467ec1970 'unsigned long'
| `-PointerType 0x560467ec1f30 'void *'
| `-BuiltinType 0x560467ec1810 'void'
|-TypedefDecl 0x560468003908 <line:2905:1, line:2909:23> line:2905:16 referenced ecs_group_delete_action_t 'void (*)(ecs_world_t *, uint64_t, void *, void *)'
| `-PointerType 0x560468003890 'void (*)(ecs_world_t *, uint64_t, void *, void *)'
| `-ParenType 0x560468003830 'void (ecs_world_t *, uint64_t, void *, void *)' sugar
| `-FunctionProtoType 0x5604680037e0 'void (ecs_world_t *, uint64_t, void *, void *)' cdecl
| |-BuiltinType 0x560467ec1810 'void'
| |-PointerType 0x560468002270 'ecs_world_t *'
| | `-TypedefType 0x5604680013d0 'ecs_world_t' sugar
| | |-Typedef 0x560467fff598 'ecs_world_t'
| | `-ElaboratedType 0x560467fff540 'struct ecs_world_t' sugar
| | `-RecordType 0x560467fff520 'struct ecs_world_t'
| | `-Record 0x560467fff4a0 'ecs_world_t'
| |-TypedefType 0x560467f8cd90 'uint64_t' sugar
| | |-Typedef 0x560467f87e80 'uint64_t'
| | `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| | |-Typedef 0x560467f7e4e0 '__uint64_t'
| | `-BuiltinType 0x560467ec1970 'unsigned long'
| |-PointerType 0x560467ec1f30 'void *'
| | `-BuiltinType 0x560467ec1810 'void'
| `-PointerType 0x560467ec1f30 'void *'
| `-BuiltinType 0x560467ec1810 'void'
|-TypedefDecl 0x560468003b20 <line:2912:1, line:2913:23> line:2912:16 referenced ecs_module_action_t 'void (*)(ecs_world_t *)'
| |-PointerType 0x560468003ac0 'void (*)(ecs_world_t *)'
| | `-ParenType 0x560468003a60 'void (ecs_world_t *)' sugar
| | `-FunctionProtoType 0x560468003a30 'void (ecs_world_t *)' cdecl
| | |-BuiltinType 0x560467ec1810 'void'
| | `-PointerType 0x560468002270 'ecs_world_t *'
| | `-TypedefType 0x5604680013d0 'ecs_world_t' sugar
| | |-Typedef 0x560467fff598 'ecs_world_t'
| | `-ElaboratedType 0x560467fff540 'struct ecs_world_t' sugar
| | `-RecordType 0x560467fff520 'struct ecs_world_t'
| | `-Record 0x560467fff4a0 'ecs_world_t'
| `-FullComment 0x560468123dd0 <line:2911:4, col:38>
| `-ParagraphComment 0x560468123da0 <col:4, col:38>
| `-TextComment 0x560468123d70 <col:4, col:38> Text=" Initialization action for modules "
|-TypedefDecl 0x560468004ec8 <line:2916:1, line:2918:14> line:2916:16 referenced ecs_fini_action_t 'void (*)(ecs_world_t *, void *)'
| |-PointerType 0x560468004e60 'void (*)(ecs_world_t *, void *)'
| | `-ParenType 0x560468003d20 'void (ecs_world_t *, void *)' sugar
| | `-FunctionProtoType 0x560468003ce0 'void (ecs_world_t *, void *)' cdecl
| | |-BuiltinType 0x560467ec1810 'void'
| | |-PointerType 0x560468002270 'ecs_world_t *'
| | | `-TypedefType 0x5604680013d0 'ecs_world_t' sugar
| | | |-Typedef 0x560467fff598 'ecs_world_t'
| | | `-ElaboratedType 0x560467fff540 'struct ecs_world_t' sugar
| | | `-RecordType 0x560467fff520 'struct ecs_world_t'
| | | `-Record 0x560467fff4a0 'ecs_world_t'
| | `-PointerType 0x560467ec1f30 'void *'
| | `-BuiltinType 0x560467ec1810 'void'
| `-FullComment 0x560468123ea0 <line:2915:4, col:34>
| `-ParagraphComment 0x560468123e70 <col:4, col:34>
| `-TextComment 0x560468123e40 <col:4, col:34> Text=" Action callback on world exit "
|-TypedefDecl 0x560468005000 <line:2921:1, line:2922:14> line:2921:16 referenced ecs_ctx_free_t 'void (*)(void *)'
| |-PointerType 0x560467fea340 'void (*)(void *)'
| | `-ParenType 0x560467fea2e0 'void (void *)' sugar
| | `-FunctionProtoType 0x560467fea2b0 'void (void *)' cdecl
| | |-BuiltinType 0x560467ec1810 'void'
| | `-PointerType 0x560467ec1f30 'void *'
| | `-BuiltinType 0x560467ec1810 'void'
| `-FullComment 0x560468123f70 <line:2920:4, col:37>
| `-ParagraphComment 0x560468123f40 <col:4, col:37>
| `-TextComment 0x560468123f10 <col:4, col:37> Text=" Function to cleanup context data "
|-TypedefDecl 0x5604680051d0 <line:2925:1, line:2927:21> line:2925:15 referenced ecs_compare_action_t 'int (*)(const void *, const void *)'
| |-PointerType 0x560467f8d370 'int (*)(const void *, const void *)'
| | `-ParenType 0x560467f8d310 'int (const void *, const void *)' sugar
| | `-FunctionProtoType 0x560467f8d2d0 'int (const void *, const void *)' cdecl
| | |-BuiltinType 0x560467ec18b0 'int'
| | |-PointerType 0x560467f594d0 'const void *'
| | | `-QualType 0x560467ec1811 'const void' const
| | | `-BuiltinType 0x560467ec1810 'void'
| | `-PointerType 0x560467f594d0 'const void *'
| | `-QualType 0x560467ec1811 'const void' const
| | `-BuiltinType 0x560467ec1810 'void'
| `-FullComment 0x560468124040 <line:2924:4, col:37>
| `-ParagraphComment 0x560468124010 <col:4, col:37>
| `-TextComment 0x560468123fe0 <col:4, col:37> Text=" Callback used for sorting values "
|-TypedefDecl 0x560468005400 <line:2930:1, line:2931:20> line:2930:20 referenced ecs_hash_value_action_t 'uint64_t (*)(const void *)'
| |-PointerType 0x5604680053a0 'uint64_t (*)(const void *)'
| | `-ParenType 0x560468005340 'uint64_t (const void *)' sugar
| | `-FunctionProtoType 0x560468005310 'uint64_t (const void *)' cdecl
| | |-TypedefType 0x560467f8cd90 'uint64_t' sugar
| | | |-Typedef 0x560467f87e80 'uint64_t'
| | | `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| | | |-Typedef 0x560467f7e4e0 '__uint64_t'
| | | `-BuiltinType 0x560467ec1970 'unsigned long'
| | `-PointerType 0x560467f594d0 'const void *'
| | `-QualType 0x560467ec1811 'const void' const
| | `-BuiltinType 0x560467ec1810 'void'
| `-FullComment 0x560468124110 <line:2929:4, col:37>
| `-ParagraphComment 0x5604681240e0 <col:4, col:37>
| `-TextComment 0x5604681240b0 <col:4, col:37> Text=" Callback used for hashing values "
|-TypedefDecl 0x5604680057c0 <line:2934:1, line:2937:37> line:2934:16 referenced ecs_xtor_t 'void (*)(void *, int32_t, const ecs_type_info_t *)'
| |-PointerType 0x560468005750 'void (*)(void *, int32_t, const ecs_type_info_t *)'
| | `-ParenType 0x5604680056f0 'void (void *, int32_t, const ecs_type_info_t *)' sugar
| | `-FunctionProtoType 0x5604680056b0 'void (void *, int32_t, const ecs_type_info_t *)' cdecl
| | |-BuiltinType 0x560467ec1810 'void'
| | |-PointerType 0x560467ec1f30 'void *'
| | | `-BuiltinType 0x560467ec1810 'void'
| | |-TypedefType 0x560467f8ce20 'int32_t' sugar
| | | |-Typedef 0x560467f87c78 'int32_t'
| | | `-TypedefType 0x560467f7e780 '__int32_t' sugar
| | | |-Typedef 0x560467f78f28 '__int32_t'
| | | `-BuiltinType 0x560467ec18b0 'int'
| | `-PointerType 0x5604680055d0 'const ecs_type_info_t *'
| | `-QualType 0x560468005581 'const ecs_type_info_t' const
| | `-TypedefType 0x560468005580 'ecs_type_info_t' sugar
| | |-Typedef 0x5604680006d0 'ecs_type_info_t'
| | `-ElaboratedType 0x560468000660 'struct ecs_type_info_t' sugar
| | `-RecordType 0x560468000640 'struct ecs_type_info_t'
| | `-Record 0x56046800a9b8 'ecs_type_info_t'
| `-FullComment 0x5604681241e0 <line:2933:4, col:36>
| `-ParagraphComment 0x5604681241b0 <col:4, col:36>
| `-TextComment 0x560468124180 <col:4, col:36> Text=" Constructor/destructor callback "
|-TypedefDecl 0x560468005bb8 <line:2940:1, line:2944:37> line:2940:16 referenced ecs_copy_t 'void (*)(void *, const void *, int32_t, const ecs_type_info_t *)'
| |-PointerType 0x560468005b40 'void (*)(void *, const void *, int32_t, const ecs_type_info_t *)'
| | `-ParenType 0x560468005ae0 'void (void *, const void *, int32_t, const ecs_type_info_t *)' sugar
| | `-FunctionProtoType 0x560468005a90 'void (void *, const void *, int32_t, const ecs_type_info_t *)' cdecl
| | |-BuiltinType 0x560467ec1810 'void'
| | |-PointerType 0x560467ec1f30 'void *'
| | | `-BuiltinType 0x560467ec1810 'void'
| | |-PointerType 0x560467f594d0 'const void *'
| | | `-QualType 0x560467ec1811 'const void' const
| | | `-BuiltinType 0x560467ec1810 'void'
| | |-TypedefType 0x560467f8ce20 'int32_t' sugar
| | | |-Typedef 0x560467f87c78 'int32_t'
| | | `-TypedefType 0x560467f7e780 '__int32_t' sugar
| | | |-Typedef 0x560467f78f28 '__int32_t'
| | | `-BuiltinType 0x560467ec18b0 'int'
| | `-PointerType 0x5604680055d0 'const ecs_type_info_t *'
| | `-QualType 0x560468005581 'const ecs_type_info_t' const
| | `-TypedefType 0x560468005580 'ecs_type_info_t' sugar
| | |-Typedef 0x5604680006d0 'ecs_type_info_t'
| | `-ElaboratedType 0x560468000660 'struct ecs_type_info_t' sugar
| | `-RecordType 0x560468000640 'struct ecs_type_info_t'
| | `-Record 0x56046800a9b8 'ecs_type_info_t'
| `-FullComment 0x5604681242b0 <line:2939:4, col:71>
| `-ParagraphComment 0x560468124280 <col:4, col:71>
| `-TextComment 0x560468124250 <col:4, col:71> Text=" Copy is invoked when a component is copied into another component. "
|-TypedefDecl 0x560468006168 <line:2947:1, line:2951:37> line:2947:16 referenced ecs_move_t 'void (*)(void *, void *, int32_t, const ecs_type_info_t *)'
| |-PointerType 0x5604680060f0 'void (*)(void *, void *, int32_t, const ecs_type_info_t *)'
| | `-ParenType 0x560468006090 'void (void *, void *, int32_t, const ecs_type_info_t *)' sugar
| | `-FunctionProtoType 0x560468006040 'void (void *, void *, int32_t, const ecs_type_info_t *)' cdecl
| | |-BuiltinType 0x560467ec1810 'void'
| | |-PointerType 0x560467ec1f30 'void *'
| | | `-BuiltinType 0x560467ec1810 'void'
| | |-PointerType 0x560467ec1f30 'void *'
| | | `-BuiltinType 0x560467ec1810 'void'
| | |-TypedefType 0x560467f8ce20 'int32_t' sugar
| | | |-Typedef 0x560467f87c78 'int32_t'
| | | `-TypedefType 0x560467f7e780 '__int32_t' sugar
| | | |-Typedef 0x560467f78f28 '__int32_t'
| | | `-BuiltinType 0x560467ec18b0 'int'
| | `-PointerType 0x5604680055d0 'const ecs_type_info_t *'
| | `-QualType 0x560468005581 'const ecs_type_info_t' const
| | `-TypedefType 0x560468005580 'ecs_type_info_t' sugar
| | |-Typedef 0x5604680006d0 'ecs_type_info_t'
| | `-ElaboratedType 0x560468000660 'struct ecs_type_info_t' sugar
| | `-RecordType 0x560468000640 'struct ecs_type_info_t'
| | `-Record 0x56046800a9b8 'ecs_type_info_t'
| `-FullComment 0x560468124380 <line:2946:4, col:68>
| `-ParagraphComment 0x560468124350 <col:4, col:68>
| `-TextComment 0x560468124320 <col:4, col:68> Text=" Move is invoked when a component is moved to another component. "
|-TypedefDecl 0x560468006320 <line:2954:1, line:2955:21> line:2954:16 referenced ecs_poly_dtor_t 'void (*)(ecs_poly_t *)'
| `-PointerType 0x5604680062c0 'void (*)(ecs_poly_t *)'
| `-ParenType 0x560468006290 'void (ecs_poly_t *)' sugar
| `-FunctionProtoType 0x560468006260 'void (ecs_poly_t *)' cdecl
| |-BuiltinType 0x560467ec1810 'void'
| `-PointerType 0x5604680061c0 'ecs_poly_t *'
| `-TypedefType 0x5604680014c0 'ecs_poly_t' sugar
| |-Typedef 0x560468000a50 'ecs_poly_t'
| `-BuiltinType 0x560467ec1810 'void'
|-RecordDecl 0x560468006408 <line:2967:9, line:2969:1> line:2967:16 struct ecs_iterable_t definition
| |-FullComment 0x560468124470 <line:2965:4, line:2966:40>
| | `-ParagraphComment 0x560468124440 <line:2965:4, line:2966:40>
| | |-TextComment 0x5604681243f0 <line:2965:4, col:19> Text=" Iterable mixin."
| | `-TextComment 0x560468124410 <line:2966:3, col:40> Text=" Allows its container to be iterated. "
| `-FieldDecl 0x5604680064e0 <line:2968:5, col:28> col:28 init 'ecs_iter_init_action_t':'void (*)(const ecs_world_t *, const ecs_poly_t *, ecs_iter_t *, ecs_term_t *)'
|-TypedefDecl 0x560468006588 <line:2967:1, line:2969:3> col:3 referenced ecs_iterable_t 'struct ecs_iterable_t':'struct ecs_iterable_t'
| |-ElaboratedType 0x560468006530 'struct ecs_iterable_t' sugar
| | `-RecordType 0x560468006490 'struct ecs_iterable_t'
| | `-Record 0x560468006408 'ecs_iterable_t'
| `-FullComment 0x560468124560 <line:2965:4, line:2966:40>
| `-ParagraphComment 0x560468124530 <line:2965:4, line:2966:40>
| |-TextComment 0x5604681244e0 <line:2965:4, col:19> Text=" Iterable mixin."
| `-TextComment 0x560468124500 <line:2966:3, col:40> Text=" Allows its container to be iterated. "
|-EnumDecl 0x560468006680 <line:2980:9, line:2986:1> line:2980:14 ecs_inout_kind_t
| |-FullComment 0x560468124630 <line:2979:4, col:39>
| | `-ParagraphComment 0x560468124600 <col:4, col:39>
| | `-TextComment 0x5604681245d0 <col:4, col:39> Text=" Specify read/write access for term "
| |-EnumConstantDecl 0x560468006740 <line:2981:5> col:5 EcsInOutDefault 'int'
| |-EnumConstantDecl 0x560468006790 <line:2982:5> col:5 EcsInOutNone 'int'
| |-EnumConstantDecl 0x5604680067e0 <line:2983:5> col:5 EcsInOut 'int'
| |-EnumConstantDecl 0x560468006830 <line:2984:5> col:5 EcsIn 'int'
| `-EnumConstantDecl 0x560468006880 <line:2985:5> col:5 EcsOut 'int'
|-TypedefDecl 0x560468006928 <line:2980:1, line:2986:3> col:3 referenced ecs_inout_kind_t 'enum ecs_inout_kind_t':'enum ecs_inout_kind_t'
| |-ElaboratedType 0x5604680068d0 'enum ecs_inout_kind_t' sugar
| | `-EnumType 0x560468006720 'enum ecs_inout_kind_t'
| | `-Enum 0x560468006680 'ecs_inout_kind_t'
| `-FullComment 0x560468124700 <line:2979:4, col:39>
| `-ParagraphComment 0x5604681246d0 <col:4, col:39>
| `-TextComment 0x5604681246a0 <col:4, col:39> Text=" Specify read/write access for term "
|-EnumDecl 0x5604680069c0 <line:2989:9, line:2997:1> line:2989:14 ecs_oper_kind_t
| |-FullComment 0x5604681247d0 <line:2988:4, col:30>
| | `-ParagraphComment 0x5604681247a0 <col:4, col:30>
| | `-TextComment 0x560468124770 <col:4, col:30> Text=" Specify operator for term "
| |-EnumConstantDecl 0x560468006a80 <line:2990:5> col:5 EcsAnd 'int'
| |-EnumConstantDecl 0x560468006ad0 <line:2991:5> col:5 EcsOr 'int'
| |-EnumConstantDecl 0x560468006b20 <line:2992:5> col:5 EcsNot 'int'
| |-EnumConstantDecl 0x560468006b70 <line:2993:5> col:5 EcsOptional 'int'
| |-EnumConstantDecl 0x560468006bc0 <line:2994:5> col:5 EcsAndFrom 'int'
| |-EnumConstantDecl 0x560468006c10 <line:2995:5> col:5 EcsOrFrom 'int'
| `-EnumConstantDecl 0x560468006c60 <line:2996:5> col:5 EcsNotFrom 'int'
|-TypedefDecl 0x560468006d08 <line:2989:1, line:2997:3> col:3 referenced ecs_oper_kind_t 'enum ecs_oper_kind_t':'enum ecs_oper_kind_t'
| |-ElaboratedType 0x560468006cb0 'enum ecs_oper_kind_t' sugar
| | `-EnumType 0x560468006a60 'enum ecs_oper_kind_t'
| | `-Enum 0x5604680069c0 'ecs_oper_kind_t'
| `-FullComment 0x5604681248a0 <line:2988:4, col:30>
| `-ParagraphComment 0x560468124870 <col:4, col:30>
| `-TextComment 0x560468124840 <col:4, col:30> Text=" Specify operator for term "
|-RecordDecl 0x560468006f50 <line:3012:9, line:3031:1> line:3012:16 struct ecs_term_id_t definition
| |-FullComment 0x560468124970 <line:3011:4, col:54>
| | `-ParagraphComment 0x560468124940 <col:4, col:54>
| | `-TextComment 0x560468124910 <col:4, col:54> Text=" Type that describes a single identifier in a term "
| |-FieldDecl 0x5604680075f0 <line:3013:5, col:18> col:18 id 'ecs_entity_t':'unsigned long'
| | `-FullComment 0x560468124ae0 <col:37, line:3017:77>
| | `-ParagraphComment 0x560468124ab0 <line:3013:37, line:3017:77>
| | |-TextComment 0x5604681249e0 <line:3013:37, col:80> Text=" Entity id. If left to 0 and flags does not "
| | |-TextComment 0x560468124a00 <line:3014:35, col:80> Text=" specify whether id is an entity or a variable"
| | |-TextComment 0x560468124a20 <line:3015:35, col:74> Text=" the id will be initialized to EcsThis. "
| | |-TextComment 0x560468124a40 <line:3016:35, col:78> Text=" To explicitly set the id to 0, leave the id"
| | `-TextComment 0x560468124a60 <line:3017:35, col:77> Text=" member to 0 and set EcsIsEntity in flags. "
| |-FieldDecl 0x560468007680 <line:3019:5, col:11> col:11 name 'char *'
| | `-FullComment 0x560468124c70 <col:37, line:3024:51>
| | `-ParagraphComment 0x560468124c40 <line:3019:37, line:3024:51>
| | |-TextComment 0x560468124b50 <line:3019:37, col:79> Text=" Name. This can be either the variable name"
| | |-TextComment 0x560468124b70 <line:3020:35, col:77> Text=" (when the EcsIsVariable flag is set) or an"
| | |-TextComment 0x560468124b90 <line:3021:35, col:73> Text=" entity name. Entity names are used to "
| | |-TextComment 0x560468124bb0 <line:3022:35, col:72> Text=" initialize the id member during term "
| | |-TextComment 0x560468124bd0 <line:3023:35, col:80> Text=" finalization and will be freed when term.move"
| | `-TextComment 0x560468124bf0 <line:3024:35, col:51> Text=" is set to true. "
| |-FieldDecl 0x560468007708 <line:3026:5, col:18> col:18 trav 'ecs_entity_t':'unsigned long'
| | `-FullComment 0x560468124d90 <col:37, line:3028:73>
| | `-ParagraphComment 0x560468124d60 <line:3026:37, line:3028:73>
| | |-TextComment 0x560468124ce0 <line:3026:37, col:82> Text=" Relationship to traverse when looking for the"
| | |-TextComment 0x560468124d00 <line:3027:35, col:72> Text=" component. The relationship must have"
| | `-TextComment 0x560468124d20 <line:3028:35, col:73> Text=" the Acyclic property. Default is IsA. "
| `-FieldDecl 0x560468007798 <line:3030:5, col:19> col:19 flags 'ecs_flags32_t':'unsigned int'
| `-FullComment 0x560468124e60 <col:37, col:48>
| `-ParagraphComment 0x560468124e30 <col:37, col:48>
| `-TextComment 0x560468124e00 <col:37, col:48> Text=" Term flags "
|-TypedefDecl 0x560468007878 <line:3012:1, line:3031:3> col:3 referenced ecs_term_id_t 'struct ecs_term_id_t':'struct ecs_term_id_t'
| |-ElaboratedType 0x560468007820 'struct ecs_term_id_t' sugar
| | `-RecordType 0x560468006fd0 'struct ecs_term_id_t'
| | `-Record 0x560468006f50 'ecs_term_id_t'
| `-FullComment 0x560468124f30 <line:3011:4, col:54>
| `-ParagraphComment 0x560468124f00 <col:4, col:54>
| `-TextComment 0x560468124ed0 <col:4, col:54> Text=" Type that describes a single identifier in a term "
|-RecordDecl 0x560468007910 prev 0x560467fff7d0 <line:3034:1, line:3054:1> line:3034:8 struct ecs_term_t definition
| |-FullComment 0x560468125000 <line:3033:4, col:59>
| | `-ParagraphComment 0x560468124fd0 <col:4, col:59>
| | `-TextComment 0x560468124fa0 <col:4, col:59> Text=" Type that describes a term (single element in a query) "
| |-FieldDecl 0x5604680079a0 <line:3035:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| | `-FullComment 0x560468125140 <col:37, line:3038:48>
| | `-ParagraphComment 0x560468125110 <line:3035:37, line:3038:48>
| | |-TextComment 0x560468125070 <line:3035:37, col:79> Text=" Component id to be matched by term. Can be"
| | |-TextComment 0x560468125090 <line:3036:35, col:78> Text=" set directly, or will be populated from the"
| | |-TextComment 0x5604681250b0 <line:3037:35, col:75> Text=" first/second members, which provide more"
| | `-TextComment 0x5604681250d0 <line:3038:35, col:48> Text=" flexibility. "
| |-FieldDecl 0x560468007a50 <line:3040:5, col:19> col:19 src 'ecs_term_id_t':'struct ecs_term_id_t'
| | `-FullComment 0x560468125210 <col:37, col:52>
| | `-ParagraphComment 0x5604681251e0 <col:37, col:52>
| | `-TextComment 0x5604681251b0 <col:37, col:52> Text=" Source of term "
| |-FieldDecl 0x560468007ad8 <line:3041:5, col:19> col:19 first 'ecs_term_id_t':'struct ecs_term_id_t'
| | `-FullComment 0x5604681252e0 <col:37, col:72>
| | `-ParagraphComment 0x5604681252b0 <col:37, col:72>
| | `-TextComment 0x560468125280 <col:37, col:72> Text=" Component or first element of pair "
| |-FieldDecl 0x560468007b68 <line:3042:5, col:19> col:19 second 'ecs_term_id_t':'struct ecs_term_id_t'
| | `-FullComment 0x5604681253b0 <col:37, col:60>
| | `-ParagraphComment 0x560468125380 <col:37, col:60>
| | `-TextComment 0x560468125350 <col:37, col:60> Text=" Second element of pair "
| |-FieldDecl 0x560468007c20 <line:3044:5, col:22> col:22 inout 'ecs_inout_kind_t':'enum ecs_inout_kind_t'
| | `-FullComment 0x560468125480 <col:37, col:72>
| | `-ParagraphComment 0x560468125450 <col:37, col:72>
| | `-TextComment 0x560468125420 <col:37, col:72> Text=" Access to contents matched by term "
| |-FieldDecl 0x560468007cd0 <line:3045:5, col:21> col:21 oper 'ecs_oper_kind_t':'enum ecs_oper_kind_t'
| | `-FullComment 0x560468125550 <col:37, col:54>
| | `-ParagraphComment 0x560468125520 <col:37, col:54>
| | `-TextComment 0x5604681254f0 <col:37, col:54> Text=" Operator of term "
| |-FieldDecl 0x560468007d58 <line:3047:5, col:14> col:14 id_flags 'ecs_id_t':'unsigned long'
| | `-FullComment 0x560468125620 <col:37, col:57>
| | `-ParagraphComment 0x5604681255f0 <col:37, col:57>
| | `-TextComment 0x5604681255c0 <col:37, col:57> Text=" Id flags of term id "
| |-FieldDecl 0x560468007df0 <line:3048:5, col:11> col:11 name 'char *'
| | `-FullComment 0x5604681256f0 <col:37, col:50>
| | `-ParagraphComment 0x5604681256c0 <col:37, col:50>
| | `-TextComment 0x560468125690 <col:37, col:50> Text=" Name of term "
| |-FieldDecl 0x560468007e78 <line:3050:5, col:13> col:13 field_index 'int32_t':'int'
| | `-FullComment 0x5604681261d0 <col:37, col:73>
| | `-ParagraphComment 0x5604681261a0 <col:37, col:73>
| | `-TextComment 0x560468126170 <col:37, col:73> Text=" Index of field for term in iterator "
| |-FieldDecl 0x560468007f88 <line:3051:5, col:22> col:22 idr 'ecs_id_record_t *'
| | `-FullComment 0x5604681262a0 <col:37, col:70>
| | `-ParagraphComment 0x560468126270 <col:37, col:70>
| | `-TextComment 0x560468126240 <col:37, col:70> Text=" Cached pointer to internal index "
| `-FieldDecl 0x560468008018 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:3053:10> col:10 move 'bool'
| `-FullComment 0x560468126370 <col:37, col:55>
| `-ParagraphComment 0x560468126340 <col:37, col:55>
| `-TextComment 0x560468126310 <col:37, col:55> Text=" Used by internals "
|-VarDecl 0x560468008100 <line:3057:11, col:31> col:31 ECS_FILTER_INIT 'ecs_filter_t':'struct ecs_filter_t' extern
| `-FullComment 0x560468126440 <line:3056:4, col:65>
| `-ParagraphComment 0x560468126410 <col:4, col:65>
| `-TextComment 0x5604681263e0 <col:4, col:65> Text=" Use this variable to initialize user-allocated filter object "
|-RecordDecl 0x560468008198 prev 0x560467fffaf0 <line:3060:1, line:3079:1> line:3060:8 struct ecs_filter_t definition
| |-FullComment 0x560468126510 <line:3059:4, col:64>
| | `-ParagraphComment 0x5604681264e0 <col:4, col:64>
| | `-TextComment 0x5604681264b0 <col:4, col:64> Text=" Filters alllow for ad-hoc quick filtering of entity tables. "
| |-FieldDecl 0x560468008250 <line:3061:5, col:18> col:18 hdr 'ecs_header_t':'struct ecs_header_t'
| |-FieldDecl 0x5604680082b0 <line:3063:5, col:17> col:17 terms 'ecs_term_t *'
| | `-FullComment 0x5604681265e0 <col:36, col:70>
| | `-ParagraphComment 0x5604681265b0 <col:36, col:70>
| | `-TextComment 0x560468126580 <col:36, col:70> Text=" Array containing terms for filter "
| |-FieldDecl 0x560468008338 <line:3064:5, col:13> col:13 term_count 'int32_t':'int'
| | `-FullComment 0x5604681266b0 <col:36, col:70>
| | `-ParagraphComment 0x560468126680 <col:36, col:70>
| | `-TextComment 0x560468126650 <col:36, col:70> Text=" Number of elements in terms array "
| |-FieldDecl 0x5604680083c8 <line:3065:5, col:13> col:13 field_count 'int32_t':'int'
| | `-FullComment 0x560468126780 <col:36, col:76>
| | `-ParagraphComment 0x560468126750 <col:36, col:76>
| | `-TextComment 0x560468126720 <col:36, col:76> Text=" Number of fields in iterator for filter "
| |-FieldDecl 0x560468008458 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:3067:10> col:10 owned 'bool'
| | `-FullComment 0x560468126850 <col:36, col:69>
| | `-ParagraphComment 0x560468126820 <col:36, col:69>
| | `-TextComment 0x5604681267f0 <col:36, col:69> Text=" Is filter object owned by filter "
| |-FieldDecl 0x5604680084e8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:3068:10> col:10 terms_owned 'bool'
| | `-FullComment 0x560468126920 <col:36, col:67>
| | `-ParagraphComment 0x5604681268f0 <col:36, col:67>
| | `-TextComment 0x5604681268c0 <col:36, col:67> Text=" Is terms array owned by filter "
| |-FieldDecl 0x560468008578 <line:3070:5, col:19> col:19 flags 'ecs_flags32_t':'unsigned int'
| | `-FullComment 0x5604681269f0 <col:36, col:49>
| | `-ParagraphComment 0x5604681269c0 <col:36, col:49>
| | `-TextComment 0x560468126990 <col:36, col:49> Text=" Filter flags "
| |-FieldDecl 0x560468008c80 <line:3072:5, col:27> col:11 variable_names 'char *[1]'
| | `-FullComment 0x560468126ac0 <col:36, col:62>
| | `-ParagraphComment 0x560468126a90 <col:36, col:62>
| | `-TextComment 0x560468126a60 <col:36, col:62> Text=" Array with variable names "
| |-FieldDecl 0x560468008d08 <line:3075:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| | `-FullComment 0x560468126b90 <col:36, col:77>
| | `-ParagraphComment 0x560468126b60 <col:36, col:77>
| | `-TextComment 0x560468126b30 <col:36, col:77> Text=" Entity associated with filter (optional) "
| |-FieldDecl 0x560468008d98 <line:3076:5, col:18> col:18 world 'ecs_world_t *'
| |-FieldDecl 0x560468008e20 <line:3077:5, col:20> col:20 iterable 'ecs_iterable_t':'struct ecs_iterable_t'
| | `-FullComment 0x560468126c60 <col:36, col:51>
| | `-ParagraphComment 0x560468126c30 <col:36, col:51>
| | `-TextComment 0x560468126c00 <col:36, col:51> Text=" Iterable mixin "
| `-FieldDecl 0x560468008ed0 <line:3078:5, col:21> col:21 dtor 'ecs_poly_dtor_t':'void (*)(ecs_poly_t *)'
| `-FullComment 0x560468126d30 <col:36, col:47>
| `-ParagraphComment 0x560468126d00 <col:36, col:47>
| `-TextComment 0x560468126cd0 <col:36, col:47> Text=" Dtor mixin "
|-RecordDecl 0x560468008fb0 prev 0x560467fffe10 <line:3082:1, line:3115:1> line:3082:8 struct ecs_observer_t definition
| |-FieldDecl 0x560468009040 <line:3083:5, col:18> col:18 hdr 'ecs_header_t':'struct ecs_header_t'
| |-FieldDecl 0x5604680090a0 <line:3085:5, col:18> col:18 filter 'ecs_filter_t':'struct ecs_filter_t'
| | `-FullComment 0x560468126e00 <col:37, col:56>
| | `-ParagraphComment 0x560468126dd0 <col:37, col:56>
| | `-TextComment 0x560468126da0 <col:37, col:56> Text=" Query for observer "
| |-FieldDecl 0x560468009218 <line:3088:5, col:58> col:18 events 'ecs_entity_t[8]'
| |-FieldDecl 0x560468009278 <line:3089:5, col:13> col:13 event_count 'int32_t':'int'
| |-FieldDecl 0x560468009300 <line:3091:5, col:23> col:23 callback 'ecs_iter_action_t':'void (*)(ecs_iter_t *)'
| | `-FullComment 0x560468126ed0 <col:37, col:71>
| | `-ParagraphComment 0x560468126ea0 <col:37, col:71>
| | `-TextComment 0x560468126e70 <col:37, col:71> Text=" See ecs_observer_desc_t::callback "
| |-FieldDecl 0x5604680093b0 <line:3092:5, col:22> col:22 run 'ecs_run_action_t':'void (*)(ecs_iter_t *)'
| | `-FullComment 0x560468126fa0 <col:37, col:66>
| | `-ParagraphComment 0x560468126f70 <col:37, col:66>
| | `-TextComment 0x560468126f40 <col:37, col:66> Text=" See ecs_observer_desc_t::run "
| |-FieldDecl 0x560468009440 <line:3094:5, col:11> col:11 ctx 'void *'
| | `-FullComment 0x560468127070 <col:37, col:54>
| | `-ParagraphComment 0x560468127040 <col:37, col:54>
| | `-TextComment 0x560468127010 <col:37, col:54> Text=" Callback context "
| |-FieldDecl 0x5604680094d0 <line:3095:5, col:11> col:11 binding_ctx 'void *'
| | `-FullComment 0x560468127140 <col:37, col:77>
| | `-ParagraphComment 0x560468127110 <col:37, col:77>
| | `-TextComment 0x5604681270e0 <col:37, col:77> Text=" Binding context (for language bindings) "
| |-FieldDecl 0x560468009580 <line:3097:5, col:20> col:20 ctx_free 'ecs_ctx_free_t':'void (*)(void *)'
| | `-FullComment 0x560468127210 <col:37, col:58>
| | `-ParagraphComment 0x5604681271e0 <col:37, col:58>
| | `-TextComment 0x5604681271b0 <col:37, col:58> Text=" Callback to free ctx "
| |-FieldDecl 0x560468009608 <line:3098:5, col:20> col:20 binding_ctx_free 'ecs_ctx_free_t':'void (*)(void *)'
| | `-FullComment 0x5604681272e0 <col:42, col:71>
| | `-ParagraphComment 0x5604681272b0 <col:42, col:71>
| | `-TextComment 0x560468127280 <col:42, col:71> Text=" Callback to free binding_ctx "
| |-FieldDecl 0x560468009718 <line:3100:5, col:23> col:23 observable 'ecs_observable_t *'
| | `-FullComment 0x5604681273b0 <col:39, col:63>
| | `-ParagraphComment 0x560468127380 <col:39, col:63>
| | `-TextComment 0x560468127350 <col:39, col:63> Text=" Observable for observer "
| |-FieldDecl 0x5604680097a8 <line:3102:5, col:14> col:14 last_event_id 'int32_t *'
| | `-FullComment 0x560468127480 <col:37, col:59>
| | `-ParagraphComment 0x560468127450 <col:37, col:59>
| | `-TextComment 0x560468127420 <col:37, col:59> Text=" Last handled event id "
| |-FieldDecl 0x560468009838 <line:3104:5, col:14> col:14 register_id 'ecs_id_t':'unsigned long'
| | `-FullComment 0x560468127550 <col:37, col:97>
| | `-ParagraphComment 0x560468127520 <col:37, col:97>
| | `-TextComment 0x5604681274f0 <col:37, col:97> Text=" Id observer is registered with (single term observers only) "
| |-FieldDecl 0x5604680098c8 <line:3105:5, col:13> col:13 term_index 'int32_t':'int'
| | `-FullComment 0x560468127620 <col:37, col:103>
| | `-ParagraphComment 0x5604681275f0 <col:37, col:103>
| | `-TextComment 0x5604681275c0 <col:37, col:103> Text=" Index of the term in parent observer (single term observers only) "
| |-FieldDecl 0x560468009958 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:3107:10> col:10 is_monitor 'bool'
| | `-FullComment 0x5604681277e0 <col:37, line:3109:57>
| | `-ParagraphComment 0x5604681277b0 <line:3107:37, line:3109:57>
| | |-TextComment 0x560468127690 <line:3107:37, col:81> Text=" If true, the observer only triggers when the"
| | |-TextComment 0x5604681276b0 <line:3108:35> Text="*"
| | |-TextComment 0x5604681276d0 <col:36> Text="<"
| | |-TextComment 0x5604681276f0 <col:37, col:80> Text=" filter did not match with the entity before"
| | |-TextComment 0x560468127710 <line:3109:35> Text="*"
| | |-TextComment 0x560468127730 <col:36> Text="<"
| | `-TextComment 0x560468127750 <col:37, col:57> Text=" the event happened. "
| |-FieldDecl 0x5604680099e8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:3111:10> col:10 is_multi 'bool'
| | `-FullComment 0x5604681278b0 <col:37, col:90>
| | `-ParagraphComment 0x560468127880 <col:37, col:90>
| | `-TextComment 0x560468127850 <col:37, col:90> Text=" If true, the observer triggers on more than one term "
| `-FieldDecl 0x560468009a78 <line:3114:5, col:21> col:21 dtor 'ecs_poly_dtor_t':'void (*)(ecs_poly_t *)'
|-RecordDecl 0x560468009b28 prev 0x560468000430 <line:3123:1, line:3166:1> line:3123:8 struct ecs_type_hooks_t definition
| |-FullComment 0x560468127a70 <line:3119:4, line:3122:1>
| | |-ParagraphComment 0x560468127950 <line:3119:4, col:54>
| | | `-TextComment 0x560468127920 <col:4, col:54> Text=" Type that contains component lifecycle callbacks. "
| | |-ParagraphComment 0x5604681279a0 <line:3121:3>
| | | `-TextComment 0x560468127970 <col:3> Text=" "
| | |-VerbatimLineComment 0x5604681279c0 <col:4, col:23> Text=" components"
| | `-ParagraphComment 0x560468127a30 <line:3122:1>
| | `-TextComment 0x560468127a00 <col:1> Text=" "
| |-FieldDecl 0x56046800a0f0 <line:3124:5, col:16> col:16 ctor 'ecs_xtor_t':'void (*)(void *, int32_t, const ecs_type_info_t *)'
| | `-FullComment 0x560468127b40 <col:37, col:42>
| | `-ParagraphComment 0x560468127b10 <col:37, col:42>
| | `-TextComment 0x560468127ae0 <col:37, col:42> Text=" ctor "
| |-FieldDecl 0x56046800a178 <line:3125:5, col:16> col:16 dtor 'ecs_xtor_t':'void (*)(void *, int32_t, const ecs_type_info_t *)'
| | `-FullComment 0x560468127c10 <col:37, col:42>
| | `-ParagraphComment 0x560468127be0 <col:37, col:42>
| | `-TextComment 0x560468127bb0 <col:37, col:42> Text=" dtor "
| |-FieldDecl 0x56046800a230 <line:3126:5, col:16> col:16 copy 'ecs_copy_t':'void (*)(void *, const void *, int32_t, const ecs_type_info_t *)'
| | `-FullComment 0x560468127ce0 <col:37, col:53>
| | `-ParagraphComment 0x560468127cb0 <col:37, col:53>
| | `-TextComment 0x560468127c80 <col:37, col:53> Text=" copy assignment "
| |-FieldDecl 0x56046800a2e0 <line:3127:5, col:16> col:16 move 'ecs_move_t':'void (*)(void *, void *, int32_t, const ecs_type_info_t *)'
| | `-FullComment 0x560468127db0 <col:37, col:53>
| | `-ParagraphComment 0x560468127d80 <col:37, col:53>
| | `-TextComment 0x560468127d50 <col:37, col:53> Text=" move assignment "
| |-FieldDecl 0x56046800a398 <line:3130:5, col:16> col:16 copy_ctor 'ecs_copy_t':'void (*)(void *, const void *, int32_t, const ecs_type_info_t *)'
| | `-FullComment 0x560468127e80 <line:3129:8, col:20>
| | `-ParagraphComment 0x560468127e50 <col:8, col:20>
| | `-TextComment 0x560468127e20 <col:8, col:20> Text=" Ctor + copy "
| |-FieldDecl 0x56046800a428 <line:3133:5, col:16> col:16 move_ctor 'ecs_move_t':'void (*)(void *, void *, int32_t, const ecs_type_info_t *)'
| | `-FullComment 0x560468127f50 <line:3132:8, col:20>
| | `-ParagraphComment 0x560468127f20 <col:8, col:20>
| | `-TextComment 0x560468127ef0 <col:8, col:20> Text=" Ctor + move "
| |-FieldDecl 0x56046800a4b8 <line:3139:5, col:16> col:16 ctor_move_dtor 'ecs_move_t':'void (*)(void *, void *, int32_t, const ecs_type_info_t *)'
| | `-FullComment 0x560468128090 <line:3135:8, line:3138:67>
| | `-ParagraphComment 0x560468128060 <line:3135:8, line:3138:67>
| | |-TextComment 0x560468127fc0 <line:3135:8, col:49> Text=" Ctor + move + dtor (or move_ctor + dtor)."
| | |-TextComment 0x560468127fe0 <line:3136:7, col:76> Text=" This combination is typically used when a component is moved from one"
| | |-TextComment 0x560468128000 <line:3137:7, col:75> Text=" location to a new location, like when it is moved to a new table. If"
| | `-TextComment 0x560468128020 <line:3138:7, col:67> Text=" not set explicitly it will be derived from other callbacks. "
| |-FieldDecl 0x56046800a548 <line:3145:5, col:16> col:16 move_dtor 'ecs_move_t':'void (*)(void *, void *, int32_t, const ecs_type_info_t *)'
| | `-FullComment 0x5604681281f0 <line:3141:8, line:3144:67>
| | `-ParagraphComment 0x5604681281c0 <line:3141:8, line:3144:67>
| | |-TextComment 0x560468128100 <line:3141:8, col:20> Text=" Move + dtor."
| | |-TextComment 0x560468128120 <line:3142:7, col:76> Text=" This combination is typically used when a component is moved from one"
| | |-TextComment 0x560468128140 <line:3143:7, col:78> Text=" location to an existing location, like what happens during a remove. If"
| | `-TextComment 0x560468128180 <line:3144:7, col:67> Text=" not set explicitly it will be derived from other callbacks. "
| |-FieldDecl 0x56046800a5d8 <line:3149:5, col:23> col:23 on_add 'ecs_iter_action_t':'void (*)(ecs_iter_t *)'
| | `-FullComment 0x5604681282e0 <line:3147:8, line:3148:56>
| | `-ParagraphComment 0x5604681282b0 <line:3147:8, line:3148:56>
| | |-TextComment 0x560468128260 <line:3147:8, col:79> Text=" Callback that is invoked when an instance of a component is added. This"
| | `-TextComment 0x560468128280 <line:3148:7, col:56> Text=" callback is invoked before triggers are invoked. "
| |-FieldDecl 0x56046800a668 <line:3154:5, col:23> col:23 on_set 'ecs_iter_action_t':'void (*)(ecs_iter_t *)'
| | `-FullComment 0x560468128400 <line:3151:8, line:3153:58>
| | `-ParagraphComment 0x5604681283d0 <line:3151:8, line:3153:58>
| | |-TextComment 0x560468128350 <line:3151:8, col:79> Text=" Callback that is invoked when an instance of the component is set. This"
| | |-TextComment 0x560468128370 <line:3152:7, col:80> Text=" callback is invoked before triggers are invoked, and enable the component"
| | `-TextComment 0x560468128390 <line:3153:7, col:58> Text=" to respond to changes on itself before others can. "
| |-FieldDecl 0x56046800a6f8 <line:3159:5, col:23> col:23 on_remove 'ecs_iter_action_t':'void (*)(ecs_iter_t *)'
| | `-FullComment 0x560468128520 <line:3156:8, line:3158:30>
| | `-ParagraphComment 0x5604681284f0 <line:3156:8, line:3158:30>
| | |-TextComment 0x560468128470 <line:3156:8, col:79> Text=" Callback that is invoked when an instance of the component is removed. "
| | |-TextComment 0x560468128490 <line:3157:7, col:78> Text=" This callback is invoked after the triggers are invoked, and before the"
| | `-TextComment 0x5604681284b0 <line:3158:7, col:30> Text=" destructor is invoked. "
| |-FieldDecl 0x56046800a760 <line:3161:5, col:11> col:11 ctx 'void *'
| | `-FullComment 0x5604681285f0 <col:42, col:63>
| | `-ParagraphComment 0x5604681285c0 <col:42, col:63>
| | `-TextComment 0x560468128590 <col:42, col:63> Text=" User defined context "
| |-FieldDecl 0x56046800a7f0 <line:3162:5, col:11> col:11 binding_ctx 'void *'
| | `-FullComment 0x5604681286c0 <col:42, col:67>
| | `-ParagraphComment 0x560468128690 <col:42, col:67>
| | `-TextComment 0x560468128660 <col:42, col:67> Text=" Language binding context "
| |-FieldDecl 0x56046800a878 <line:3164:5, col:20> col:20 ctx_free 'ecs_ctx_free_t':'void (*)(void *)'
| | `-FullComment 0x560468128790 <col:42, col:63>
| | `-ParagraphComment 0x560468128760 <col:42, col:63>
| | `-TextComment 0x560468128730 <col:42, col:63> Text=" Callback to free ctx "
| `-FieldDecl 0x56046800a908 <line:3165:5, col:20> col:20 binding_ctx_free 'ecs_ctx_free_t':'void (*)(void *)'
| `-FullComment 0x560468128860 <col:42, col:71>
| `-ParagraphComment 0x560468128830 <col:42, col:71>
| `-TextComment 0x560468128800 <col:42, col:71> Text=" Callback to free binding_ctx "
|-RecordDecl 0x56046800a9b8 prev 0x5604680005c0 <line:3172:1, line:3178:1> line:3172:8 struct ecs_type_info_t definition
| |-FullComment 0x560468128a20 <line:3168:4, line:3171:1>
| | |-ParagraphComment 0x560468128900 <line:3168:4, col:73>
| | | `-TextComment 0x5604681288d0 <col:4, col:73> Text=" Type that contains component information (passed to ctors/dtors/...) "
| | |-ParagraphComment 0x560468128950 <line:3170:3>
| | | `-TextComment 0x560468128920 <col:3> Text=" "
| | |-VerbatimLineComment 0x560468128970 <col:4, col:23> Text=" components"
| | `-ParagraphComment 0x5604681289e0 <line:3171:1>
| | `-TextComment 0x5604681289b0 <col:1> Text=" "
| |-FieldDecl 0x56046800aa48 <line:3173:5, col:16> col:16 size 'ecs_size_t':'int'
| | `-FullComment 0x560468128af0 <col:34, col:47>
| | `-ParagraphComment 0x560468128ac0 <col:34, col:47>
| | `-TextComment 0x560468128a90 <col:34, col:47> Text=" Size of type "
| |-FieldDecl 0x56046800aad8 <line:3174:5, col:16> col:16 alignment 'ecs_size_t':'int'
| | `-FullComment 0x560468128bc0 <col:34, col:52>
| | `-ParagraphComment 0x560468128b90 <col:34, col:52>
| | `-TextComment 0x560468128b60 <col:34, col:52> Text=" Alignment of type "
| |-FieldDecl 0x56046800ab90 <line:3175:5, col:22> col:22 hooks 'ecs_type_hooks_t':'struct ecs_type_hooks_t'
| | `-FullComment 0x560468128c90 <col:34, col:45>
| | `-ParagraphComment 0x560468128c60 <col:34, col:45>
| | `-TextComment 0x560468128c30 <col:34, col:45> Text=" Type hooks "
| |-FieldDecl 0x56046800ac18 <line:3176:5, col:18> col:18 component 'ecs_entity_t':'unsigned long'
| | `-FullComment 0x560468128d60 <col:34, col:67>
| | `-ParagraphComment 0x560468128d30 <col:34, col:67>
| | `-TextComment 0x560468128d00 <col:34, col:67> Text=" Handle to component (do not set) "
| `-FieldDecl 0x56046800acb0 <line:3177:5, col:17> col:17 name 'const char *'
| `-FullComment 0x560468128e30 <col:34, col:45>
| `-ParagraphComment 0x560468128e00 <col:34, col:45>
| `-TextComment 0x560468128dd0 <col:34, col:45> Text=" Type name. "
|-RecordDecl 0x56046800adb8 <line:3203:9, col:16> col:16 struct ecs_stage_t
|-TypedefDecl 0x56046800aeb8 <col:1, col:28> col:28 ecs_stage_t 'struct ecs_stage_t':'struct ecs_stage_t'
| |-ElaboratedType 0x56046800ae60 'struct ecs_stage_t' sugar
| | `-RecordType 0x56046800ae40 'struct ecs_stage_t'
| | `-Record 0x56046800adb8 'ecs_stage_t'
| `-FullComment 0x560468128f00 <line:3202:4, col:75>
| `-ParagraphComment 0x560468128ed0 <col:4, col:75>
| `-TextComment 0x560468128ea0 <col:4, col:75> Text=" A stage enables modification while iterating and from multiple threads "
|-RecordDecl 0x56046800af50 <line:3206:9, col:16> col:16 struct ecs_record_t
|-TypedefDecl 0x56046800b048 <col:1, col:29> col:29 referenced ecs_record_t 'struct ecs_record_t':'struct ecs_record_t'
| |-ElaboratedType 0x56046800aff0 'struct ecs_record_t' sugar
| | `-RecordType 0x56046800afd0 'struct ecs_record_t'
| | `-Record 0x56046800d5e8 'ecs_record_t'
| `-FullComment 0x560468128fd0 <line:3205:4, col:70>
| `-ParagraphComment 0x560468128fa0 <col:4, col:70>
| `-TextComment 0x560468128f70 <col:4, col:70> Text=" A record stores data to map an entity id to a location in a table "
|-RecordDecl 0x56046800c760 <line:3209:9, col:16> col:16 struct ecs_data_t
|-TypedefDecl 0x56046800c858 <col:1, col:27> col:27 ecs_data_t 'struct ecs_data_t':'struct ecs_data_t'
| |-ElaboratedType 0x56046800c800 'struct ecs_data_t' sugar
| | `-RecordType 0x56046800c7e0 'struct ecs_data_t'
| | `-Record 0x56046800c760 'ecs_data_t'
| `-FullComment 0x5604681290a0 <line:3208:4, col:15>
| `-ParagraphComment 0x560468129070 <col:4, col:15>
| `-TextComment 0x560468129040 <col:4, col:15> Text=" Table data "
|-RecordDecl 0x56046800c8c8 <line:3212:9, col:16> col:16 struct ecs_switch_t
|-TypedefDecl 0x56046800c9c8 <col:1, col:29> col:29 ecs_switch_t 'struct ecs_switch_t':'struct ecs_switch_t'
| `-ElaboratedType 0x56046800c970 'struct ecs_switch_t' sugar
| `-RecordType 0x56046800c950 'struct ecs_switch_t'
| `-Record 0x56046800c8c8 'ecs_switch_t'
|-RecordDecl 0x56046800ca38 <line:3215:9, col:16> col:16 struct ecs_query_table_node_t
|-TypedefDecl 0x56046800cb38 <col:1, col:39> col:39 referenced ecs_query_table_node_t 'struct ecs_query_table_node_t':'struct ecs_query_table_node_t'
| `-ElaboratedType 0x56046800cae0 'struct ecs_query_table_node_t' sugar
| `-RecordType 0x56046800cac0 'struct ecs_query_table_node_t'
| `-Record 0x56046800ca38 'ecs_query_table_node_t'
|-RecordDecl 0x56046800cba8 prev 0x560467fca8e0 <line:3218:1, col:8> col:8 struct ecs_allocator_t
|-RecordDecl 0x56046800cc88 <line:3226:9, line:3232:1> line:3226:16 struct ecs_event_record_t definition
| |-FullComment 0x5604681291c0 <line:3224:4, line:3225:39>
| | |-ParagraphComment 0x560468129140 <line:3224:4, col:52>
| | | `-TextComment 0x560468129110 <col:4, col:52> Text=" Mixin for emitting events to triggers/observers "
| | `-ParagraphComment 0x560468129190 <line:3225:4, col:39>
| | `-TextComment 0x560468129160 <col:4, col:39> Text=" All observers for a specific event "
| |-RecordDecl 0x56046800cd30 parent 0x560467ec17a8 <line:3227:5, col:12> col:12 struct ecs_event_id_record_t
| |-FieldDecl 0x56046800cea0 <col:5, col:35> col:35 any 'struct ecs_event_id_record_t *'
| |-FieldDecl 0x56046800cf70 <line:3228:5, col:35> col:35 wildcard 'struct ecs_event_id_record_t *'
| |-FieldDecl 0x56046800cfe8 <line:3229:5, col:35> col:35 wildcard_pair 'struct ecs_event_id_record_t *'
| |-FieldDecl 0x56046800d048 <line:3230:5, col:15> col:15 event_ids 'ecs_map_t':'struct ecs_map_t'
| `-FieldDecl 0x56046800d0a8 <line:3231:5, col:18> col:18 event 'ecs_entity_t':'unsigned long'
|-TypedefDecl 0x56046800d158 <line:3226:1, line:3232:3> col:3 referenced ecs_event_record_t 'struct ecs_event_record_t':'struct ecs_event_record_t'
| |-ElaboratedType 0x56046800d100 'struct ecs_event_record_t' sugar
| | `-RecordType 0x56046800cd10 'struct ecs_event_record_t'
| | `-Record 0x56046800cc88 'ecs_event_record_t'
| `-FullComment 0x5604681292e0 <line:3224:4, line:3225:39>
| |-ParagraphComment 0x560468129260 <line:3224:4, col:52>
| | `-TextComment 0x560468129230 <col:4, col:52> Text=" Mixin for emitting events to triggers/observers "
| `-ParagraphComment 0x5604681292b0 <line:3225:4, col:39>
| `-TextComment 0x560468129280 <col:4, col:39> Text=" All observers for a specific event "
|-RecordDecl 0x56046800d1c8 prev 0x560467ffffa0 <line:3234:1, line:3241:1> line:3234:8 struct ecs_observable_t definition
| |-FieldDecl 0x56046800d280 <line:3235:5, col:24> col:24 on_add 'ecs_event_record_t':'struct ecs_event_record_t'
| |-FieldDecl 0x56046800d2e0 <line:3236:5, col:24> col:24 on_remove 'ecs_event_record_t':'struct ecs_event_record_t'
| |-FieldDecl 0x56046800d340 <line:3237:5, col:24> col:24 on_set 'ecs_event_record_t':'struct ecs_event_record_t'
| |-FieldDecl 0x56046800d3a0 <line:3238:5, col:24> col:24 un_set 'ecs_event_record_t':'struct ecs_event_record_t'
| |-FieldDecl 0x56046800d400 <line:3239:5, col:24> col:24 on_wildcard 'ecs_event_record_t':'struct ecs_event_record_t'
| `-FieldDecl 0x56046800d460 <line:3240:5, col:19> col:19 events 'ecs_sparse_t *'
|-RecordDecl 0x56046800d5e8 prev 0x56046800af50 <line:3244:1, line:3248:1> line:3244:8 struct ecs_record_t definition
| |-FullComment 0x5604681293b0 <line:3243:4, col:28>
| | `-ParagraphComment 0x560468129380 <col:4, col:28>
| | `-TextComment 0x560468129350 <col:4, col:28> Text=" Record for entity index "
| |-FieldDecl 0x56046800d678 <line:3245:5, col:22> col:22 idr 'ecs_id_record_t *'
| |-FieldDecl 0x56046800e400 <line:3246:5, col:18> col:18 table 'ecs_table_t *'
| `-FieldDecl 0x56046800e460 <line:3247:5, col:14> col:14 row 'uint32_t':'unsigned int'
|-RecordDecl 0x56046800e4d8 <line:3251:9, line:3255:1> line:3251:16 struct ecs_table_range_t definition
| |-FullComment 0x560468129480 <line:3250:4, col:19>
| | `-ParagraphComment 0x560468129450 <col:4, col:19>
| | `-TextComment 0x560468129420 <col:4, col:19> Text=" Range in table "
| |-FieldDecl 0x56046800e590 <line:3252:5, col:18> col:18 table 'ecs_table_t *'
| |-FieldDecl 0x56046800e5f0 <line:3253:5, col:13> col:13 offset 'int32_t':'int'
| `-FieldDecl 0x56046800e650 <line:3254:5, col:13> col:13 count 'int32_t':'int'
|-TypedefDecl 0x56046800e6f8 <line:3251:1, line:3255:3> col:3 referenced ecs_table_range_t 'struct ecs_table_range_t':'struct ecs_table_range_t'
| |-ElaboratedType 0x56046800e6a0 'struct ecs_table_range_t' sugar
| | `-RecordType 0x56046800e560 'struct ecs_table_range_t'
| | `-Record 0x56046800e4d8 'ecs_table_range_t'
| `-FullComment 0x560468129550 <line:3250:4, col:19>
| `-ParagraphComment 0x560468129520 <col:4, col:19>
| `-TextComment 0x5604681294f0 <col:4, col:19> Text=" Range in table "
|-RecordDecl 0x56046800e790 <line:3258:9, line:3266:1> line:3258:16 struct ecs_var_t definition
| |-FullComment 0x560468129620 <line:3257:4, col:28>
| | `-ParagraphComment 0x5604681295f0 <col:4, col:28>
| | `-TextComment 0x5604681295c0 <col:4, col:28> Text=" Value of query variable "
| |-FieldDecl 0x56046800e860 <line:3259:5, col:23> col:23 range 'ecs_table_range_t':'struct ecs_table_range_t'
| `-FieldDecl 0x56046800e8c0 <line:3260:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
|-TypedefDecl 0x56046800e9d8 <line:3258:1, line:3266:3> col:3 referenced ecs_var_t 'struct ecs_var_t':'struct ecs_var_t'
| |-ElaboratedType 0x56046800e980 'struct ecs_var_t' sugar
| | `-RecordType 0x56046800e810 'struct ecs_var_t'
| | `-Record 0x56046800e790 'ecs_var_t'
| `-FullComment 0x5604681296f0 <line:3257:4, col:28>
| `-ParagraphComment 0x5604681296c0 <col:4, col:28>
| `-TextComment 0x560468129690 <col:4, col:28> Text=" Value of query variable "
|-RecordDecl 0x56046800ea70 prev 0x5604680002a0 <line:3269:1, line:3274:1> line:3269:8 struct ecs_ref_t definition
| |-FullComment 0x5604681297c0 <line:3268:4, col:22>
| | `-ParagraphComment 0x560468129790 <col:4, col:22>
| | `-TextComment 0x560468129760 <col:4, col:22> Text=" Cached reference. "
| |-FieldDecl 0x56046800eb00 <line:3270:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x56046800eb60 <line:3271:5, col:18> col:18 id 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x56046800ec60 <line:3272:5, col:32> col:32 tr 'struct ecs_table_record_t *'
| `-FieldDecl 0x56046800ed38 <line:3273:5, col:19> col:19 record 'ecs_record_t *'
|-RecordDecl 0x56046800ed88 <line:3277:1, col:8> col:8 struct ecs_stack_page_t
|-RecordDecl 0x56046800ee30 <line:3279:9, line:3282:1> line:3279:16 struct ecs_stack_cursor_t definition
| |-FieldDecl 0x56046800ef80 <line:3280:5, col:30> col:30 cur 'struct ecs_stack_page_t *'
| `-FieldDecl 0x56046800efe0 <line:3281:5, col:13> col:13 sp 'int16_t':'short'
|-TypedefDecl 0x56046800f088 <line:3279:1, line:3282:3> col:3 referenced ecs_stack_cursor_t 'struct ecs_stack_cursor_t':'struct ecs_stack_cursor_t'
| `-ElaboratedType 0x56046800f030 'struct ecs_stack_cursor_t' sugar
| `-RecordType 0x56046800eeb0 'struct ecs_stack_cursor_t'
| `-Record 0x56046800ee30 'ecs_stack_cursor_t'
|-RecordDecl 0x56046800f0f8 <line:3285:9, line:3289:1> line:3285:16 struct ecs_page_iter_t definition
| |-FieldDecl 0x56046800f1b0 <line:3286:5, col:13> col:13 offset 'int32_t':'int'
| |-FieldDecl 0x56046800f210 <line:3287:5, col:13> col:13 limit 'int32_t':'int'
| `-FieldDecl 0x56046800f270 <line:3288:5, col:13> col:13 remaining 'int32_t':'int'
|-TypedefDecl 0x56046800f318 <line:3285:1, line:3289:3> col:3 referenced ecs_page_iter_t 'struct ecs_page_iter_t':'struct ecs_page_iter_t'
| `-ElaboratedType 0x56046800f2c0 'struct ecs_page_iter_t' sugar
| `-RecordType 0x56046800f180 'struct ecs_page_iter_t'
| `-Record 0x56046800f0f8 'ecs_page_iter_t'
|-RecordDecl 0x56046800f410 <line:3292:9, line:3295:1> line:3292:16 struct ecs_worker_iter_t definition
| |-FieldDecl 0x56046800f4c0 <line:3293:5, col:13> col:13 index 'int32_t':'int'
| `-FieldDecl 0x56046800f520 <line:3294:5, col:13> col:13 count 'int32_t':'int'
|-TypedefDecl 0x56046800f5c8 <line:3292:1, line:3295:3> col:3 referenced ecs_worker_iter_t 'struct ecs_worker_iter_t':'struct ecs_worker_iter_t'
| `-ElaboratedType 0x56046800f570 'struct ecs_worker_iter_t' sugar
| `-RecordType 0x56046800f490 'struct ecs_worker_iter_t'
| `-Record 0x56046800f410 'ecs_worker_iter_t'
|-RecordDecl 0x56046800f638 <line:3298:9, line:3301:1> line:3298:16 struct ecs_table_cache_iter_t definition
| |-RecordDecl 0x56046800f6e0 parent 0x560467ec17a8 <line:3299:5, col:12> col:12 struct ecs_table_cache_hdr_t
| |-FieldDecl 0x56046800f850 <col:5, col:35> col:35 cur 'struct ecs_table_cache_hdr_t *'
| |-FieldDecl 0x56046800f8c8 <col:5, col:41> col:41 next 'struct ecs_table_cache_hdr_t *'
| `-FieldDecl 0x56046800f9a0 <line:3300:5, col:35> col:35 next_list 'struct ecs_table_cache_hdr_t *'
|-TypedefDecl 0x56046800fa48 <line:3298:1, line:3301:3> col:3 referenced ecs_table_cache_iter_t 'struct ecs_table_cache_iter_t':'struct ecs_table_cache_iter_t'
| `-ElaboratedType 0x56046800f9f0 'struct ecs_table_cache_iter_t' sugar
| `-RecordType 0x56046800f6c0 'struct ecs_table_cache_iter_t'
| `-Record 0x56046800f638 'ecs_table_cache_iter_t'
|-RecordDecl 0x56046800fae0 <line:3304:9, line:3327:1> line:3304:16 struct ecs_term_iter_t definition
| |-FullComment 0x560468129890 <line:3303:4, col:32>
| | `-ParagraphComment 0x560468129860 <col:4, col:32>
| | `-TextComment 0x560468129830 <col:4, col:32> Text=" Term-iterator specific data "
| |-FieldDecl 0x56046800fb90 <line:3305:5, col:16> col:16 term 'ecs_term_t':'struct ecs_term_t'
| |-FieldDecl 0x56046800fbf0 <line:3306:5, col:22> col:22 self_index 'ecs_id_record_t *'
| |-FieldDecl 0x56046800fc50 <line:3307:5, col:22> col:22 set_index 'ecs_id_record_t *'
| |-FieldDecl 0x56046800fcb0 <line:3309:5, col:22> col:22 cur 'ecs_id_record_t *'
| |-FieldDecl 0x56046800fd30 <line:3310:5, col:28> col:28 it 'ecs_table_cache_iter_t':'struct ecs_table_cache_iter_t'
| |-FieldDecl 0x56046800fd90 <line:3311:5, col:13> col:13 index 'int32_t':'int'
| |-FieldDecl 0x56046800fdf0 <line:3312:5, col:13> col:13 observed_table_count 'int32_t':'int'
| |-FieldDecl 0x56046800fe50 <line:3314:5, col:18> col:18 table 'ecs_table_t *'
| |-FieldDecl 0x56046800feb0 <line:3315:5, col:13> col:13 cur_match 'int32_t':'int'
| |-FieldDecl 0x56046800ff10 <line:3316:5, col:13> col:13 match_count 'int32_t':'int'
| |-FieldDecl 0x56046800ff70 <line:3317:5, col:13> col:13 last_column 'int32_t':'int'
| |-FieldDecl 0x56046800ffd0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:3319:10> col:10 empty_tables 'bool'
| |-FieldDecl 0x560468010030 <line:3322:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| |-FieldDecl 0x560468010090 <line:3323:5, col:13> col:13 column 'int32_t':'int'
| |-FieldDecl 0x5604680100f0 <line:3324:5, col:18> col:18 subject 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x560468010150 <line:3325:5, col:16> col:16 size 'ecs_size_t':'int'
| `-FieldDecl 0x5604680101b8 <line:3326:5, col:11> col:11 ptr 'void *'
|-TypedefDecl 0x560468010378 <line:3304:1, line:3327:3> col:3 referenced ecs_term_iter_t 'struct ecs_term_iter_t':'struct ecs_term_iter_t'
| |-ElaboratedType 0x560468010320 'struct ecs_term_iter_t' sugar
| | `-RecordType 0x56046800fb60 'struct ecs_term_iter_t'
| | `-Record 0x56046800fae0 'ecs_term_iter_t'
| `-FullComment 0x560468129960 <line:3303:4, col:32>
| `-ParagraphComment 0x560468129930 <col:4, col:32>
| `-TextComment 0x560468129900 <col:4, col:32> Text=" Term-iterator specific data "
|-EnumDecl 0x560468010420 <line:3329:9, line:3334:1> line:3329:14 ecs_iter_kind_t
| |-EnumConstantDecl 0x5604680104e0 <line:3330:5> col:5 EcsIterEvalCondition 'int'
| |-EnumConstantDecl 0x560468010530 <line:3331:5> col:5 EcsIterEvalTables 'int'
| |-EnumConstantDecl 0x560468010580 <line:3332:5> col:5 EcsIterEvalChain 'int'
| `-EnumConstantDecl 0x5604680105d0 <line:3333:5> col:5 EcsIterEvalNone 'int'
|-TypedefDecl 0x560468010678 <line:3329:1, line:3334:3> col:3 referenced ecs_iter_kind_t 'enum ecs_iter_kind_t':'enum ecs_iter_kind_t'
| `-ElaboratedType 0x560468010620 'enum ecs_iter_kind_t' sugar
| `-EnumType 0x5604680104c0 'enum ecs_iter_kind_t'
| `-Enum 0x560468010420 'ecs_iter_kind_t'
|-RecordDecl 0x560468010710 <line:3337:9, line:3343:1> line:3337:16 struct ecs_filter_iter_t definition
| |-FullComment 0x560468129a30 <line:3336:4, col:34>
| | `-ParagraphComment 0x560468129a00 <col:4, col:34>
| | `-TextComment 0x5604681299d0 <col:4, col:34> Text=" Filter-iterator specific data "
| |-FieldDecl 0x560468010818 <line:3338:5, col:25> col:25 filter 'const ecs_filter_t *'
| |-FieldDecl 0x5604680108a0 <line:3339:5, col:21> col:21 kind 'ecs_iter_kind_t':'enum ecs_iter_kind_t'
| |-FieldDecl 0x560468010920 <line:3340:5, col:21> col:21 term_iter 'ecs_term_iter_t':'struct ecs_term_iter_t'
| |-FieldDecl 0x560468010980 <line:3341:5, col:13> col:13 matches_left 'int32_t':'int'
| `-FieldDecl 0x5604680109e0 <line:3342:5, col:13> col:13 pivot_term 'int32_t':'int'
|-TypedefDecl 0x560468010a88 <line:3337:1, line:3343:3> col:3 referenced ecs_filter_iter_t 'struct ecs_filter_iter_t':'struct ecs_filter_iter_t'
| |-ElaboratedType 0x560468010a30 'struct ecs_filter_iter_t' sugar
| | `-RecordType 0x560468010790 'struct ecs_filter_iter_t'
| | `-Record 0x560468010710 'ecs_filter_iter_t'
| `-FullComment 0x560468129b00 <line:3336:4, col:34>
| `-ParagraphComment 0x560468129ad0 <col:4, col:34>
| `-TextComment 0x560468129aa0 <col:4, col:34> Text=" Filter-iterator specific data "
|-RecordDecl 0x560468010b20 <line:3346:9, line:3353:1> line:3346:16 struct ecs_query_iter_t definition
| |-FullComment 0x560468129bd0 <line:3345:4, col:33>
| | `-ParagraphComment 0x560468129ba0 <col:4, col:33>
| | `-TextComment 0x560468129b70 <col:4, col:33> Text=" Query-iterator specific data "
| |-FieldDecl 0x560468010c48 <line:3347:5, col:18> col:18 query 'ecs_query_t *'
| |-FieldDecl 0x560468010d28 <line:3348:5, col:29> col:29 node 'ecs_query_table_node_t *'
| |-FieldDecl 0x560468010d88 <col:5, col:36> col:36 prev 'ecs_query_table_node_t *'
| |-FieldDecl 0x560468010de8 <col:5, col:43> col:43 last 'ecs_query_table_node_t *'
| |-FieldDecl 0x560468010e48 <line:3349:5, col:13> col:13 sparse_smallest 'int32_t':'int'
| |-FieldDecl 0x560468010ea8 <line:3350:5, col:13> col:13 sparse_first 'int32_t':'int'
| |-FieldDecl 0x560468010f08 <line:3351:5, col:13> col:13 bitset_first 'int32_t':'int'
| `-FieldDecl 0x560468010f68 <line:3352:5, col:13> col:13 skip_count 'int32_t':'int'
|-TypedefDecl 0x560468011018 <line:3346:1, line:3353:3> col:3 referenced ecs_query_iter_t 'struct ecs_query_iter_t':'struct ecs_query_iter_t'
| |-ElaboratedType 0x560468010fc0 'struct ecs_query_iter_t' sugar
| | `-RecordType 0x560468010ba0 'struct ecs_query_iter_t'
| | `-Record 0x560468010b20 'ecs_query_iter_t'
| `-FullComment 0x560468129ca0 <line:3345:4, col:33>
| `-ParagraphComment 0x560468129c70 <col:4, col:33>
| `-TextComment 0x560468129c40 <col:4, col:33> Text=" Query-iterator specific data "
|-RecordDecl 0x5604680110b0 <line:3356:9, line:3360:1> line:3356:16 struct ecs_snapshot_iter_t definition
| |-FullComment 0x560468129d70 <line:3355:4, col:36>
| | `-ParagraphComment 0x560468129d40 <col:4, col:36>
| | `-TextComment 0x560468129d10 <col:4, col:36> Text=" Snapshot-iterator specific data "
| |-FieldDecl 0x560468011160 <line:3357:5, col:18> col:18 filter 'ecs_filter_t':'struct ecs_filter_t'
| |-FieldDecl 0x5604680111c0 <line:3358:5, col:19> col:19 tables 'ecs_vector_t *'
| `-FieldDecl 0x560468011220 <line:3359:5, col:13> col:13 index 'int32_t':'int'
|-TypedefDecl 0x560468011430 <line:3356:1, line:3360:3> col:3 referenced ecs_snapshot_iter_t 'struct ecs_snapshot_iter_t':'struct ecs_snapshot_iter_t'
| |-ElaboratedType 0x560468011380 'struct ecs_snapshot_iter_t' sugar
| | `-RecordType 0x560468011130 'struct ecs_snapshot_iter_t'
| | `-Record 0x5604680110b0 'ecs_snapshot_iter_t'
| `-FullComment 0x560468129e40 <line:3355:4, col:36>
| `-ParagraphComment 0x560468129e10 <col:4, col:36>
| `-TextComment 0x560468129de0 <col:4, col:36> Text=" Snapshot-iterator specific data "
|-RecordDecl 0x5604680114d0 <line:3363:9, line:3375:1> line:3363:16 struct ecs_rule_iter_t definition
| |-FullComment 0x560468129f10 <line:3362:4, col:32>
| | `-ParagraphComment 0x560468129ee0 <col:4, col:32>
| | `-TextComment 0x560468129eb0 <col:4, col:32> Text=" Rule-iterator specific data "
| |-FieldDecl 0x5604680115f8 <line:3364:5, col:23> col:23 rule 'const ecs_rule_t *'
| |-FieldDecl 0x560468011700 <line:3365:5, col:23> col:23 registers 'struct ecs_var_t *'
| |-RecordDecl 0x560468011750 parent 0x560467ec17a8 <line:3366:5, col:12> col:12 struct ecs_rule_op_ctx_t
| |-FieldDecl 0x5604680118c0 <col:5, col:31> col:31 op_ctx 'struct ecs_rule_op_ctx_t *'
| |-FieldDecl 0x560468011920 <line:3368:5, col:14> col:14 columns 'int32_t *'
| |-FieldDecl 0x560468011980 <line:3370:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x5604680119e0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:3372:10> col:10 redo 'bool'
| |-FieldDecl 0x560468011a40 <line:3373:5, col:13> col:13 op 'int32_t':'int'
| `-FieldDecl 0x560468011aa0 <line:3374:5, col:13> col:13 sp 'int32_t':'int'
|-TypedefDecl 0x560468011b48 <line:3363:1, line:3375:3> col:3 referenced ecs_rule_iter_t 'struct ecs_rule_iter_t':'struct ecs_rule_iter_t'
| |-ElaboratedType 0x560468011af0 'struct ecs_rule_iter_t' sugar
| | `-RecordType 0x560468011550 'struct ecs_rule_iter_t'
| | `-Record 0x5604680114d0 'ecs_rule_iter_t'
| `-FullComment 0x560468129fe0 <line:3362:4, col:32>
| `-ParagraphComment 0x560468129fb0 <col:4, col:32>
| `-TextComment 0x560468129f80 <col:4, col:32> Text=" Rule-iterator specific data "
|-RecordDecl 0x560468011bb8 <line:3390:9, line:3394:1> line:3390:16 struct ecs_iter_cache_t definition
| |-FieldDecl 0x560468011c90 <line:3391:5, col:24> col:24 stack_cursor 'ecs_stack_cursor_t':'struct ecs_stack_cursor_t'
| |-FieldDecl 0x560468011d10 <line:3392:5, col:18> col:18 used 'ecs_flags8_t':'unsigned char'
| `-FieldDecl 0x560468011d70 <line:3393:5, col:18> col:18 allocated 'ecs_flags8_t':'unsigned char'
|-TypedefDecl 0x560468011e78 <line:3390:1, line:3394:3> col:3 referenced ecs_iter_cache_t 'struct ecs_iter_cache_t':'struct ecs_iter_cache_t'
| `-ElaboratedType 0x560468011e20 'struct ecs_iter_cache_t' sugar
| `-RecordType 0x560468011c40 'struct ecs_iter_cache_t'
| `-Record 0x560468011bb8 'ecs_iter_cache_t'
|-RecordDecl 0x560468011ee8 <line:3398:9, line:3411:1> line:3398:16 struct ecs_iter_private_t definition
| |-RecordDecl 0x560468011f90 <line:3399:5, line:3407:5> line:3399:5 union definition
| | |-FieldDecl 0x560468012040 <line:3400:9, col:25> col:25 term 'ecs_term_iter_t':'struct ecs_term_iter_t'
| | |-FieldDecl 0x5604680120c0 <line:3401:9, col:27> col:27 filter 'ecs_filter_iter_t':'struct ecs_filter_iter_t'
| | |-FieldDecl 0x560468012140 <line:3402:9, col:26> col:26 query 'ecs_query_iter_t':'struct ecs_query_iter_t'
| | |-FieldDecl 0x5604680121c0 <line:3403:9, col:25> col:25 rule 'ecs_rule_iter_t':'struct ecs_rule_iter_t'
| | |-FieldDecl 0x560468012240 <line:3404:9, col:29> col:29 snapshot 'ecs_snapshot_iter_t':'struct ecs_snapshot_iter_t'
| | |-FieldDecl 0x5604680122c0 <line:3405:9, col:25> col:25 page 'ecs_page_iter_t':'struct ecs_page_iter_t'
| | `-FieldDecl 0x560468012340 <line:3406:9, col:27> col:27 worker 'ecs_worker_iter_t':'struct ecs_worker_iter_t'
| |-FieldDecl 0x560468015da8 <line:3399:5, line:3407:7> col:7 iter 'union (unnamed union at flecs.h:3399:5)':'union ecs_iter_private_t::(unnamed at flecs.h:3399:5)'
| |-FieldDecl 0x560468015e10 <line:3409:5, col:11> col:11 entity_iter 'void *'
| `-FieldDecl 0x560468015e90 <line:3410:5, col:22> col:22 cache 'ecs_iter_cache_t':'struct ecs_iter_cache_t'
|-TypedefDecl 0x560468016288 <line:3398:1, line:3411:3> col:3 referenced ecs_iter_private_t 'struct ecs_iter_private_t':'struct ecs_iter_private_t'
| `-ElaboratedType 0x560468016230 'struct ecs_iter_private_t' sugar
| `-RecordType 0x560468011f70 'struct ecs_iter_private_t'
| `-Record 0x560468011ee8 'ecs_iter_private_t'
|-RecordDecl 0x560468016320 prev 0x560468000108 <line:3414:1, line:3477:1> line:3414:8 struct ecs_iter_t definition
| |-FullComment 0x56046812a0b0 <line:3413:4, col:13>
| | `-ParagraphComment 0x56046812a080 <col:4, col:13>
| | `-TextComment 0x56046812a050 <col:4, col:13> Text=" Iterator "
| |-FieldDecl 0x5604680163b0 <line:3416:5, col:18> col:18 world 'ecs_world_t *'
| |-FieldDecl 0x560468016410 <line:3417:5, col:18> col:18 real_world 'ecs_world_t *'
| |-FieldDecl 0x560468016470 <line:3420:5, col:19> col:19 entities 'ecs_entity_t *'
| |-FieldDecl 0x560468016500 <line:3421:5, col:12> col:12 ptrs 'void **'
| |-FieldDecl 0x560468016588 <line:3422:5, col:17> col:17 sizes 'ecs_size_t *'
| |-FieldDecl 0x5604680165e8 <line:3423:5, col:18> col:18 table 'ecs_table_t *'
| |-FieldDecl 0x560468016648 <line:3424:5, col:18> col:18 other_table 'ecs_table_t *'
| |-FieldDecl 0x5604680166a8 <line:3425:5, col:15> col:15 ids 'ecs_id_t *'
| |-FieldDecl 0x560468016758 <line:3426:5, col:16> col:16 variables 'ecs_var_t *'
| |-FieldDecl 0x5604680167b8 <line:3427:5, col:14> col:14 columns 'int32_t *'
| |-FieldDecl 0x560468016818 <line:3428:5, col:19> col:19 sources 'ecs_entity_t *'
| |-FieldDecl 0x560468016878 <line:3429:5, col:14> col:14 match_indices 'int32_t *'
| |-FieldDecl 0x560468016958 <line:3431:5, col:16> col:16 references 'ecs_ref_t *'
| |-FieldDecl 0x5604680169e0 <line:3432:5, col:19> col:19 constrained_vars 'ecs_flags64_t':'unsigned long'
| |-FieldDecl 0x560468016a40 <line:3433:5, col:14> col:14 group_id 'uint64_t':'unsigned long'
| |-FieldDecl 0x560468016aa0 <line:3434:5, col:13> col:13 field_count 'int32_t':'int'
| |-FieldDecl 0x560468016b00 <line:3437:5, col:18> col:18 system 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x560468016b60 <line:3438:5, col:18> col:18 event 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x560468016bc0 <line:3439:5, col:14> col:14 event_id 'ecs_id_t':'unsigned long'
| |-FieldDecl 0x560468016c20 <line:3442:5, col:17> col:17 terms 'ecs_term_t *'
| |-FieldDecl 0x560468016c90 <line:3443:5, col:13> col:13 table_count 'int32_t':'int'
| |-FieldDecl 0x560468016cf0 <line:3444:5, col:13> col:13 term_index 'int32_t':'int'
| |-FieldDecl 0x560468016d50 <line:3447:5, col:13> col:13 variable_count 'int32_t':'int'
| |-FieldDecl 0x560468016db8 <line:3448:5, col:12> col:12 variable_names 'char **'
| |-FieldDecl 0x560468016e20 <line:3451:5, col:11> col:11 param 'void *'
| |-FieldDecl 0x560468016e88 <line:3452:5, col:11> col:11 ctx 'void *'
| |-FieldDecl 0x560468016ef0 <line:3453:5, col:11> col:11 binding_ctx 'void *'
| |-FieldDecl 0x560468016f58 <line:37:21, line:3456:17> col:17 delta_time 'float'
| |-FieldDecl 0x560468016fc0 <line:37:21, line:3457:17> col:17 delta_system_time 'float'
| |-FieldDecl 0x560468017020 <line:3460:5, col:13> col:13 frame_offset 'int32_t':'int'
| |-FieldDecl 0x560468017080 <line:3461:5, col:13> col:13 offset 'int32_t':'int'
| |-FieldDecl 0x5604680170e0 <line:3462:5, col:13> col:13 count 'int32_t':'int'
| |-FieldDecl 0x560468017140 <line:3463:5, col:13> col:13 instance_count 'int32_t':'int'
| |-FieldDecl 0x5604680171a0 <line:3466:5, col:19> col:19 flags 'ecs_flags32_t':'unsigned int'
| |-FieldDecl 0x560468017200 <line:3468:5, col:18> col:18 interrupted_by 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x560468017280 <line:3470:5, col:24> col:24 priv 'ecs_iter_private_t':'struct ecs_iter_private_t'
| |-FieldDecl 0x560468017300 <line:3473:5, col:28> col:28 next 'ecs_iter_next_action_t':'bool (*)(ecs_iter_t *)'
| |-FieldDecl 0x560468017360 <line:3474:5, col:23> col:23 callback 'ecs_iter_action_t':'void (*)(ecs_iter_t *)'
| |-FieldDecl 0x5604680173e0 <line:3475:5, col:28> col:28 fini 'ecs_iter_fini_action_t':'void (*)(ecs_iter_t *)'
| `-FieldDecl 0x560468017440 <line:3476:5, col:17> col:17 chain_it 'ecs_iter_t *'
|-FunctionDecl 0x560468017688 <line:3532:1, line:3533:23> line:3532:7 ecs_module_path_from_c 'char *(const char *)'
| `-ParmVarDecl 0x5604680175f0 <line:3533:5, col:17> col:17 c_name 'const char *'
|-FunctionDecl 0x560468017808 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:3536:19> line:3535:6 ecs_identifier_is_0 'bool (const char *)'
| `-ParmVarDecl 0x560468017748 <line:3536:5, col:17> col:17 id 'const char *'
|-FunctionDecl 0x560468017a58 <line:3540:1, line:3543:31> line:3540:6 ecs_default_ctor 'void (void *, int32_t, const ecs_type_info_t *)'
| |-ParmVarDecl 0x5604680178c8 <line:3541:5, col:11> col:11 ptr 'void *'
| |-ParmVarDecl 0x560468017940 <line:3542:5, col:13> col:13 count 'int32_t':'int'
| `-ParmVarDecl 0x5604680179b8 <line:3543:5, col:28> col:28 ctx 'const ecs_type_info_t *'
|-FunctionDecl 0x560468017d00 <line:3547:1, line:3549:17> line:3547:7 ecs_vasprintf 'char *(const char *, struct __va_list_tag *)'
| |-ParmVarDecl 0x560468017b28 <line:3548:5, col:17> col:17 fmt 'const char *'
| `-ParmVarDecl 0x560468017ba0 <line:3549:5, col:13> col:13 args 'struct __va_list_tag *':'struct __va_list_tag *'
|-FunctionDecl 0x560468017e98 <line:3553:1, line:3555:8> line:3553:7 ecs_asprintf 'char *(const char *, ...)'
| `-ParmVarDecl 0x560468017dc8 <line:3554:5, col:17> col:17 fmt 'const char *'
|-FunctionDecl 0x560468018098 <line:3558:1, line:3559:29> line:3558:9 flecs_table_observed_count 'int32_t (const ecs_table_t *)'
| `-ParmVarDecl 0x560468017fa8 <line:3559:5, col:24> col:24 table 'const ecs_table_t *'
|-RecordDecl 0x5604680181f8 <line:3595:9, line:3602:1> line:3595:16 struct ecs_vec_t definition
| |-FullComment 0x56046812a190 <line:3594:4, col:24>
| | `-ParagraphComment 0x56046812a150 <col:4, col:24>
| | `-TextComment 0x56046812a120 <col:4, col:24> Text=" A component column. "
| |-FieldDecl 0x5604680182b8 <line:3596:5, col:11> col:11 array 'void *'
| |-FieldDecl 0x560468018318 <line:3597:5, col:13> col:13 count 'int32_t':'int'
| |-FieldDecl 0x560468018378 <line:3598:5, col:13> col:13 size 'int32_t':'int'
| `-FieldDecl 0x5604680183d8 <line:3600:5, col:16> col:16 elem_size 'ecs_size_t':'int'
|-TypedefDecl 0x560468018488 <line:3595:1, line:3602:3> col:3 referenced ecs_vec_t 'struct ecs_vec_t':'struct ecs_vec_t'
| |-ElaboratedType 0x560468018430 'struct ecs_vec_t' sugar
| | `-RecordType 0x560468018280 'struct ecs_vec_t'
| | `-Record 0x5604680181f8 'ecs_vec_t'
| `-FullComment 0x56046812a260 <line:3594:4, col:24>
| `-ParagraphComment 0x56046812a230 <col:4, col:24>
| `-TextComment 0x56046812a200 <col:4, col:24> Text=" A component column. "
|-FunctionDecl 0x560468018838 <line:3605:1, line:3609:23> line:3605:12 ecs_vec_init 'ecs_vec_t *(ecs_allocator_t *, ecs_vec_t *, ecs_size_t, int32_t)'
| |-ParmVarDecl 0x560468018530 <line:3606:5, col:22> col:22 allocator 'ecs_allocator_t *'
| |-ParmVarDecl 0x560468018608 <line:3607:5, col:16> col:16 vec 'ecs_vec_t *'
| |-ParmVarDecl 0x560468018680 <line:3608:5, col:16> col:16 size 'ecs_size_t':'int'
| `-ParmVarDecl 0x5604680186f8 <line:3609:5, col:13> col:13 elem_count 'int32_t':'int'
|-FunctionDecl 0x560468018b18 <line:3615:1, line:3618:20> line:3615:6 ecs_vec_fini 'void (ecs_allocator_t *, ecs_vec_t *, ecs_size_t)'
| |-ParmVarDecl 0x560468018908 <line:3616:5, col:22> col:22 allocator 'ecs_allocator_t *'
| |-ParmVarDecl 0x560468018980 <line:3617:5, col:16> col:16 vec 'ecs_vec_t *'
| `-ParmVarDecl 0x5604680189f8 <line:3618:5, col:16> col:16 size 'ecs_size_t':'int'
|-FunctionDecl 0x56046801a678 <line:3624:1, line:3627:20> line:3624:12 ecs_vec_reset 'ecs_vec_t *(ecs_allocator_t *, ecs_vec_t *, ecs_size_t)'
| |-ParmVarDecl 0x560468018be0 <line:3625:5, col:22> col:22 allocator 'ecs_allocator_t *'
| |-ParmVarDecl 0x56046801a4e0 <line:3626:5, col:16> col:16 vec 'ecs_vec_t *'
| `-ParmVarDecl 0x56046801a558 <line:3627:5, col:16> col:16 size 'ecs_size_t':'int'
|-FunctionDecl 0x56046801a838 <line:3633:1, line:3634:19> line:3633:6 ecs_vec_clear 'void (ecs_vec_t *)'
| `-ParmVarDecl 0x56046801a740 <line:3634:5, col:16> col:16 vec 'ecs_vec_t *'
|-FunctionDecl 0x56046801ab10 <line:3637:1, line:3640:20> line:3637:7 ecs_vec_append 'void *(ecs_allocator_t *, ecs_vec_t *, ecs_size_t)'
| |-ParmVarDecl 0x56046801a8f0 <line:3638:5, col:22> col:22 allocator 'ecs_allocator_t *'
| |-ParmVarDecl 0x56046801a968 <line:3639:5, col:16> col:16 vec 'ecs_vec_t *'
| `-ParmVarDecl 0x56046801a9e0 <line:3640:5, col:16> col:16 size 'ecs_size_t':'int'
|-FunctionDecl 0x56046801ade8 <line:3646:1, line:3649:17> line:3646:6 ecs_vec_remove 'void (ecs_vec_t *, ecs_size_t, int32_t)'
| |-ParmVarDecl 0x56046801abd8 <line:3647:5, col:16> col:16 vec 'ecs_vec_t *'
| |-ParmVarDecl 0x56046801ac50 <line:3648:5, col:16> col:16 size 'ecs_size_t':'int'
| `-ParmVarDecl 0x56046801acc8 <line:3649:5, col:13> col:13 elem 'int32_t':'int'
|-FunctionDecl 0x56046801af40 <line:3655:1, line:3656:19> line:3655:6 ecs_vec_remove_last 'void (ecs_vec_t *)'
| `-ParmVarDecl 0x56046801aeb0 <line:3656:5, col:16> col:16 vec 'ecs_vec_t *'
|-FunctionDecl 0x56046801b208 <line:3659:1, line:3662:20> line:3659:11 ecs_vec_copy 'ecs_vec_t (ecs_allocator_t *, ecs_vec_t *, ecs_size_t)'
| |-ParmVarDecl 0x56046801aff8 <line:3660:5, col:22> col:22 allocator 'ecs_allocator_t *'
| |-ParmVarDecl 0x56046801b070 <line:3661:5, col:16> col:16 vec 'ecs_vec_t *'
| `-ParmVarDecl 0x56046801b0e8 <line:3662:5, col:16> col:16 size 'ecs_size_t':'int'
|-FunctionDecl 0x56046801db90 <line:3668:1, line:3671:20> line:3668:6 ecs_vec_reclaim 'void (ecs_allocator_t *, ecs_vec_t *, ecs_size_t)'
| |-ParmVarDecl 0x56046801b2d0 <line:3669:5, col:22> col:22 allocator 'ecs_allocator_t *'
| |-ParmVarDecl 0x56046801b348 <line:3670:5, col:16> col:16 vec 'ecs_vec_t *'
| `-ParmVarDecl 0x56046801b3c0 <line:3671:5, col:16> col:16 size 'ecs_size_t':'int'
|-FunctionDecl 0x56046801df08 <line:3677:1, line:3681:23> line:3677:6 ecs_vec_set_size 'void (ecs_allocator_t *, ecs_vec_t *, ecs_size_t, int32_t)'
| |-ParmVarDecl 0x56046801dc58 <line:3678:5, col:22> col:22 allocator 'ecs_allocator_t *'
| |-ParmVarDecl 0x56046801dcd0 <line:3679:5, col:16> col:16 vec 'ecs_vec_t *'
| |-ParmVarDecl 0x56046801dd48 <line:3680:5, col:16> col:16 size 'ecs_size_t':'int'
| `-ParmVarDecl 0x56046801ddc0 <line:3681:5, col:13> col:13 elem_count 'int32_t':'int'
|-FunctionDecl 0x56046801e1e8 <line:3687:1, line:3691:23> line:3687:6 ecs_vec_set_count 'void (ecs_allocator_t *, ecs_vec_t *, ecs_size_t, int32_t)'
| |-ParmVarDecl 0x56046801dfd8 <line:3688:5, col:22> col:22 allocator 'ecs_allocator_t *'
| |-ParmVarDecl 0x56046801e050 <line:3689:5, col:16> col:16 vec 'ecs_vec_t *'
| |-ParmVarDecl 0x56046801e0c8 <line:3690:5, col:16> col:16 size 'ecs_size_t':'int'
| `-ParmVarDecl 0x56046801e140 <line:3691:5, col:13> col:13 elem_count 'int32_t':'int'
|-FunctionDecl 0x56046801e570 <line:3697:1, line:3701:23> line:3697:7 ecs_vec_grow 'void *(ecs_allocator_t *, ecs_vec_t *, ecs_size_t, int32_t)'
| |-ParmVarDecl 0x56046801e2b8 <line:3698:5, col:22> col:22 allocator 'ecs_allocator_t *'
| |-ParmVarDecl 0x56046801e330 <line:3699:5, col:16> col:16 vec 'ecs_vec_t *'
| |-ParmVarDecl 0x56046801e3a8 <line:3700:5, col:16> col:16 size 'ecs_size_t':'int'
| `-ParmVarDecl 0x56046801e420 <line:3701:5, col:13> col:13 elem_count 'int32_t':'int'
|-FunctionDecl 0x56046801e788 <line:3707:1, line:3708:25> line:3707:9 ecs_vec_count 'int32_t (const ecs_vec_t *)'
| `-ParmVarDecl 0x56046801e698 <line:3708:5, col:22> col:22 vec 'const ecs_vec_t *'
|-FunctionDecl 0x56046801e8d0 <line:3711:1, line:3712:25> line:3711:9 ecs_vec_size 'int32_t (const ecs_vec_t *)'
| `-ParmVarDecl 0x56046801e840 <line:3712:5, col:22> col:22 vec 'const ecs_vec_t *'
|-FunctionDecl 0x56046801f260 <line:3715:1, line:3718:18> line:3715:7 ecs_vec_get 'void *(const ecs_vec_t *, ecs_size_t, int32_t)'
| |-ParmVarDecl 0x56046801e988 <line:3716:5, col:22> col:22 vec 'const ecs_vec_t *'
| |-ParmVarDecl 0x56046801ea00 <line:3717:5, col:16> col:16 size 'ecs_size_t':'int'
| `-ParmVarDecl 0x56046801ea78 <line:3718:5, col:13> col:13 index 'int32_t':'int'
|-FunctionDecl 0x56046801f420 <line:3724:1, line:3725:25> line:3724:7 ecs_vec_first 'void *(const ecs_vec_t *)'
| `-ParmVarDecl 0x56046801f328 <line:3725:5, col:22> col:22 vec 'const ecs_vec_t *'
|-FunctionDecl 0x56046801f670 <line:3731:1, line:3733:20> line:3731:7 ecs_vec_last 'void *(const ecs_vec_t *, ecs_size_t)'
| |-ParmVarDecl 0x56046801f4d8 <line:3732:5, col:22> col:22 vec 'const ecs_vec_t *'
| `-ParmVarDecl 0x56046801f550 <line:3733:5, col:16> col:16 size 'ecs_size_t':'int'
|-RecordDecl 0x56046801f748 <line:3753:9, line:3756:1> line:3753:9 struct definition
| |-FieldDecl 0x56046801f800 <line:3754:5, col:15> col:15 keys 'ecs_vec_t':'struct ecs_vec_t'
| `-FieldDecl 0x56046801f860 <line:3755:5, col:15> col:15 values 'ecs_vec_t':'struct ecs_vec_t'
|-TypedefDecl 0x56046801f978 <line:3753:1, line:3756:3> col:3 referenced ecs_hm_bucket_t 'struct ecs_hm_bucket_t':'ecs_hm_bucket_t'
| `-ElaboratedType 0x56046801f920 'struct ecs_hm_bucket_t' sugar
| `-RecordType 0x56046801f7d0 'ecs_hm_bucket_t'
| `-Record 0x56046801f748 ''
|-RecordDecl 0x56046801f9e8 <line:3758:9, line:3765:1> line:3758:9 struct definition
| |-FieldDecl 0x56046801fac0 <line:3759:5, col:29> col:29 hash 'ecs_hash_value_action_t':'uint64_t (*)(const void *)'
| |-FieldDecl 0x56046801fb40 <line:3760:5, col:26> col:26 compare 'ecs_compare_action_t':'int (*)(const void *, const void *)'
| |-FieldDecl 0x56046801fba0 <line:3761:5, col:16> col:16 key_size 'ecs_size_t':'int'
| |-FieldDecl 0x56046801fc00 <line:3762:5, col:16> col:16 value_size 'ecs_size_t':'int'
| |-FieldDecl 0x56046801fc60 <line:3763:5, col:28> col:28 hashmap_allocator 'ecs_block_allocator_t *'
| `-FieldDecl 0x56046801fcc0 <line:3764:5, col:15> col:15 impl 'ecs_map_t':'struct ecs_map_t'
|-TypedefDecl 0x56046801fd68 <line:3758:1, line:3765:3> col:3 referenced ecs_hashmap_t 'struct ecs_hashmap_t':'ecs_hashmap_t'
| `-ElaboratedType 0x56046801fd10 'struct ecs_hashmap_t' sugar
| `-RecordType 0x56046801fa70 'ecs_hashmap_t'
| `-Record 0x56046801f9e8 ''
|-RecordDecl 0x56046801fdd8 <line:3767:9, line:3771:1> line:3767:9 struct definition
| |-FieldDecl 0x56046801fe90 <line:3768:5, col:20> col:20 it 'ecs_map_iter_t':'struct ecs_map_iter_t'
| |-FieldDecl 0x56046801ff68 <line:3769:5, col:22> col:22 bucket 'ecs_hm_bucket_t *'
| `-FieldDecl 0x56046801ffc8 <line:3770:5, col:13> col:13 index 'int32_t':'int'
|-TypedefDecl 0x5604680200d8 <line:3767:1, line:3771:3> col:3 referenced flecs_hashmap_iter_t 'struct flecs_hashmap_iter_t':'flecs_hashmap_iter_t'
| `-ElaboratedType 0x560468020080 'struct flecs_hashmap_iter_t' sugar
| `-RecordType 0x56046801fe60 'flecs_hashmap_iter_t'
| `-Record 0x56046801fdd8 ''
|-RecordDecl 0x560468020148 <line:3773:9, line:3777:1> line:3773:9 struct definition
| |-FieldDecl 0x560468020710 <line:3774:5, col:11> col:11 key 'void *'
| |-FieldDecl 0x560468020778 <line:3775:5, col:11> col:11 value 'void *'
| `-FieldDecl 0x5604680207d8 <line:3776:5, col:14> col:14 hash 'uint64_t':'unsigned long'
|-TypedefDecl 0x560468020888 <line:3773:1, line:3777:3> col:3 referenced flecs_hashmap_result_t 'struct flecs_hashmap_result_t':'flecs_hashmap_result_t'
| `-ElaboratedType 0x560468020830 'struct flecs_hashmap_result_t' sugar
| `-RecordType 0x5604680201d0 'flecs_hashmap_result_t'
| `-Record 0x560468020148 ''
|-FunctionDecl 0x560468020d58 <line:3780:1, line:3786:31> line:3780:6 _flecs_hashmap_init 'void (ecs_hashmap_t *, ecs_size_t, ecs_size_t, ecs_hash_value_action_t, ecs_compare_action_t, ecs_allocator_t *)'
| |-ParmVarDecl 0x560468020988 <line:3781:5, col:20> col:20 hm 'ecs_hashmap_t *'
| |-ParmVarDecl 0x560468020a00 <line:3782:5, col:16> col:16 key_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560468020a78 <line:3783:5, col:16> col:16 value_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560468020af0 <line:3784:5, col:29> col:29 hash 'ecs_hash_value_action_t':'uint64_t (*)(const void *)'
| |-ParmVarDecl 0x560468020b68 <line:3785:5, col:26> col:26 compare 'ecs_compare_action_t':'int (*)(const void *, const void *)'
| `-ParmVarDecl 0x560468020be0 <line:3786:5, col:22> col:22 allocator 'ecs_allocator_t *'
|-FunctionDecl 0x560468020f28 <line:3792:1, line:3793:23> line:3792:6 flecs_hashmap_fini 'void (ecs_hashmap_t *)'
| `-ParmVarDecl 0x560468020e38 <line:3793:5, col:20> col:20 map 'ecs_hashmap_t *'
|-FunctionDecl 0x5604680212f0 <line:3796:1, line:3800:26> line:3796:7 _flecs_hashmap_get 'void *(const ecs_hashmap_t *, ecs_size_t, const void *, ecs_size_t)'
| |-ParmVarDecl 0x560468021038 <line:3797:5, col:26> col:26 map 'const ecs_hashmap_t *'
| |-ParmVarDecl 0x5604680210b0 <line:3798:5, col:16> col:16 key_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560468021130 <line:3799:5, col:17> col:17 key 'const void *'
| `-ParmVarDecl 0x5604680211a8 <line:3800:5, col:16> col:16 value_size 'ecs_size_t':'int'
|-FunctionDecl 0x560468021dc0 <line:3806:1, line:3810:26> line:3806:24 _flecs_hashmap_ensure 'flecs_hashmap_result_t (ecs_hashmap_t *, ecs_size_t, const void *, ecs_size_t)'
| |-ParmVarDecl 0x5604680213e0 <line:3807:5, col:20> col:20 map 'ecs_hashmap_t *'
| |-ParmVarDecl 0x560468021458 <line:3808:5, col:16> col:16 key_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x5604680214d8 <line:3809:5, col:17> col:17 key 'const void *'
| `-ParmVarDecl 0x560468021550 <line:3810:5, col:16> col:16 value_size 'ecs_size_t':'int'
|-FunctionDecl 0x5604680221d8 <line:3816:1, line:3821:22> line:3816:6 _flecs_hashmap_set 'void (ecs_hashmap_t *, ecs_size_t, void *, ecs_size_t, const void *)'
| |-ParmVarDecl 0x560468021e90 <line:3817:5, col:20> col:20 map 'ecs_hashmap_t *'
| |-ParmVarDecl 0x560468021f08 <line:3818:5, col:16> col:16 key_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560468021f88 <line:3819:5, col:11> col:11 key 'void *'
| |-ParmVarDecl 0x560468022000 <line:3820:5, col:16> col:16 value_size 'ecs_size_t':'int'
| `-ParmVarDecl 0x560468022080 <line:3821:5, col:17> col:17 value 'const void *'
|-FunctionDecl 0x560468022568 <line:3827:1, line:3831:26> line:3827:6 _flecs_hashmap_remove 'void (ecs_hashmap_t *, ecs_size_t, const void *, ecs_size_t)'
| |-ParmVarDecl 0x5604680222b0 <line:3828:5, col:20> col:20 map 'ecs_hashmap_t *'
| |-ParmVarDecl 0x560468022328 <line:3829:5, col:16> col:16 key_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x5604680223a8 <line:3830:5, col:17> col:17 key 'const void *'
| `-ParmVarDecl 0x560468022420 <line:3831:5, col:16> col:16 value_size 'ecs_size_t':'int'
|-FunctionDecl 0x560468022978 <line:3837:1, line:3842:18> line:3837:6 _flecs_hashmap_remove_w_hash 'void (ecs_hashmap_t *, ecs_size_t, const void *, ecs_size_t, uint64_t)'
| |-ParmVarDecl 0x560468022638 <line:3838:5, col:20> col:20 map 'ecs_hashmap_t *'
| |-ParmVarDecl 0x5604680226b0 <line:3839:5, col:16> col:16 key_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560468022730 <line:3840:5, col:17> col:17 key 'const void *'
| |-ParmVarDecl 0x5604680227a8 <line:3841:5, col:16> col:16 value_size 'ecs_size_t':'int'
| `-ParmVarDecl 0x560468022820 <line:3842:5, col:14> col:14 hash 'uint64_t':'unsigned long'
|-FunctionDecl 0x560468022bd8 <line:3848:1, line:3850:18> line:3848:18 flecs_hashmap_get_bucket 'ecs_hm_bucket_t *(const ecs_hashmap_t *, uint64_t)'
| |-ParmVarDecl 0x560468022a50 <line:3849:5, col:26> col:26 map 'const ecs_hashmap_t *'
| `-ParmVarDecl 0x560468022ac8 <line:3850:5, col:14> col:14 hash 'uint64_t':'unsigned long'
|-FunctionDecl 0x560468024978 <line:3853:1, line:3857:18> line:3853:6 flecs_hm_bucket_remove 'void (ecs_hashmap_t *, ecs_hm_bucket_t *, uint64_t, int32_t)'
| |-ParmVarDecl 0x560468022c98 <line:3854:5, col:20> col:20 map 'ecs_hashmap_t *'
| |-ParmVarDecl 0x560468022d10 <line:3855:5, col:22> col:22 bucket 'ecs_hm_bucket_t *'
| |-ParmVarDecl 0x5604680247c0 <line:3856:5, col:14> col:14 hash 'uint64_t':'unsigned long'
| `-ParmVarDecl 0x560468024838 <line:3857:5, col:13> col:13 index 'int32_t':'int'
|-FunctionDecl 0x560468024bd8 <line:3860:1, line:3862:23> line:3860:6 flecs_hashmap_copy 'void (const ecs_hashmap_t *, ecs_hashmap_t *)'
| |-ParmVarDecl 0x560468024a48 <line:3861:5, col:26> col:26 src 'const ecs_hashmap_t *'
| `-ParmVarDecl 0x560468024ac0 <line:3862:5, col:20> col:20 dst 'ecs_hashmap_t *'
|-FunctionDecl 0x560468024db8 <line:3865:1, line:3866:23> line:3865:22 flecs_hashmap_iter 'flecs_hashmap_iter_t (ecs_hashmap_t *)'
| `-ParmVarDecl 0x560468024cc0 <line:3866:5, col:20> col:20 map 'ecs_hashmap_t *'
|-FunctionDecl 0x560468025180 <line:3869:1, line:3873:26> line:3869:7 _flecs_hashmap_next 'void *(flecs_hashmap_iter_t *, ecs_size_t, void *, ecs_size_t)'
| |-ParmVarDecl 0x560468024ec8 <line:3870:5, col:27> col:27 it 'flecs_hashmap_iter_t *'
| |-ParmVarDecl 0x560468024f40 <line:3871:5, col:16> col:16 key_size 'ecs_size_t':'int'
| |-ParmVarDecl 0x560468024fc0 <line:3872:5, col:11> col:11 key_out 'void *'
| `-ParmVarDecl 0x560468025038 <line:3873:5, col:16> col:16 value_size 'ecs_size_t':'int'
|-RecordDecl 0x560468025268 <line:3892:9, line:3927:1> line:3892:16 struct ecs_entity_desc_t definition
| |-FullComment 0x56046812a420 <line:3888:4, line:3891:1>
| | |-ParagraphComment 0x56046812a300 <line:3888:4, col:30>
| | | `-TextComment 0x56046812a2d0 <col:4, col:30> Text=" Used with ecs_entity_init "
| | |-ParagraphComment 0x56046812a350 <line:3890:3>
| | | `-TextComment 0x56046812a320 <col:3> Text=" "
| | |-VerbatimLineComment 0x56046812a370 <col:4, col:21> Text=" entities"
| | `-ParagraphComment 0x56046812a3e0 <line:3891:1>
| | `-TextComment 0x56046812a3b0 <col:1> Text=" "
| |-FieldDecl 0x560468025320 <line:3893:5, col:13> col:13 _canary 'int32_t':'int'
| |-FieldDecl 0x560468025380 <line:3895:5, col:18> col:18 id 'ecs_entity_t':'unsigned long'
| | `-FullComment 0x56046812a4f0 <col:30, col:71>
| | `-ParagraphComment 0x56046812a4c0 <col:30, col:71>
| | `-TextComment 0x56046812a490 <col:30, col:71> Text=" Set to modify existing entity (optional) "
| |-FieldDecl 0x560468025410 <line:3897:5, col:17> col:17 name 'const char *'
| | `-FullComment 0x56046812a630 <col:30, line:3900:54>
| | `-ParagraphComment 0x56046812a600 <line:3897:30, line:3900:54>
| | |-TextComment 0x56046812a560 <line:3897:30, col:79> Text=" Name of the entity. If no entity is provided, an "
| | |-TextComment 0x56046812a580 <line:3898:28, col:79> Text=" entity with this name will be looked up first. When"
| | |-TextComment 0x56046812a5a0 <line:3899:28, col:76> Text=" an entity is provided, the name will be verified"
| | `-TextComment 0x56046812a5c0 <line:3900:28, col:54> Text=" with the existing entity. "
| |-FieldDecl 0x5604680254a0 <line:3902:5, col:17> col:17 sep 'const char *'
| | `-FullComment 0x56046812a750 <col:31, line:3904:78>
| | `-ParagraphComment 0x56046812a720 <line:3902:31, line:3904:78>
| | |-TextComment 0x56046812a6a0 <line:3902:31, col:80> Text=" Optional custom separator for hierarchical names."
| | |-TextComment 0x56046812a6c0 <line:3903:29, col:78> Text=" Leave to NULL for default ('.') separator. Set to"
| | `-TextComment 0x56046812a6e0 <line:3904:29, col:78> Text=" an empty string to prevent tokenization of name. "
| |-FieldDecl 0x560468025530 <line:3906:5, col:17> col:17 root_sep 'const char *'
| | `-FullComment 0x56046812a820 <col:31, col:79>
| | `-ParagraphComment 0x56046812a7f0 <col:31, col:79>
| | `-TextComment 0x56046812a7c0 <col:31, col:79> Text=" Optional, used for identifiers relative to root "
| |-FieldDecl 0x5604680255c0 <line:3908:5, col:17> col:17 symbol 'const char *'
| | `-FullComment 0x56046812aa30 <col:30, line:3916:57>
| | `-ParagraphComment 0x56046812aa00 <line:3908:30, line:3916:57>
| | |-TextComment 0x56046812a890 <line:3908:30, col:77> Text=" Optional entity symbol. A symbol is an unscoped"
| | |-TextComment 0x56046812a8b0 <line:3909:28, col:80> Text=" identifier that can be used to lookup an entity. The"
| | |-TextComment 0x56046812a8d0 <line:3910:28, col:80> Text=" primary use case for this is to associate the entity"
| | |-TextComment 0x56046812a8f0 <line:3911:28, col:74> Text=" with a language identifier, such as a type or "
| | |-TextComment 0x56046812a910 <line:3912:28, col:78> Text=" function name, where these identifiers differ from"
| | |-TextComment 0x56046812a930 <line:3913:28, col:76> Text=" the name they are registered with in flecs. For "
| | |-TextComment 0x56046812a950 <line:3914:28, col:77> Text=" example, C type "EcsPosition" might be registered"
| | |-TextComment 0x56046812a970 <line:3915:28, col:78> Text=" as "flecs.components.transform.Position", with the"
| | `-TextComment 0x56046812a990 <line:3916:28, col:57> Text=" symbol set to "EcsPosition". "
| |-FieldDecl 0x560468025648 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:3918:10> col:10 use_low_id 'bool'
| | `-FullComment 0x56046812ab50 <col:30, line:3920:48>
| | `-ParagraphComment 0x56046812ab20 <line:3918:30, line:3920:48>
| | |-TextComment 0x56046812aaa0 <line:3918:30, col:80> Text=" When set to true, a low id (typically reserved for"
| | |-TextComment 0x56046812aac0 <line:3919:28, col:77> Text=" components) will be used to create the entity, if"
| | `-TextComment 0x56046812aae0 <line:3920:28, col:48> Text=" no id is specified. "
| |-FieldDecl 0x560468025f18 <line:3923:5, col:35> col:14 add 'ecs_id_t[32]'
| | `-FullComment 0x56046812ac20 <line:3922:8, col:59>
| | `-ParagraphComment 0x56046812abf0 <col:8, col:59>
| | `-TextComment 0x56046812abc0 <col:8, col:59> Text=" Array of ids to add to the new or existing entity. "
| `-FieldDecl 0x560468025fb0 <line:3926:5, col:17> col:17 add_expr 'const char *'
| `-FullComment 0x56046812acf0 <line:3925:8, col:49>
| `-ParagraphComment 0x56046812acc0 <col:8, col:49>
| `-TextComment 0x56046812ac90 <col:8, col:49> Text=" String expression with components to add "
|-TypedefDecl 0x560468026058 <line:3892:1, line:3927:3> col:3 referenced ecs_entity_desc_t 'struct ecs_entity_desc_t':'struct ecs_entity_desc_t'
| |-ElaboratedType 0x560468026000 'struct ecs_entity_desc_t' sugar
| | `-RecordType 0x5604680252f0 'struct ecs_entity_desc_t'
| | `-Record 0x560468025268 'ecs_entity_desc_t'
| `-FullComment 0x56046812aeb0 <line:3888:4, line:3891:1>
| |-ParagraphComment 0x56046812ad90 <line:3888:4, col:30>
| | `-TextComment 0x56046812ad60 <col:4, col:30> Text=" Used with ecs_entity_init "
| |-ParagraphComment 0x56046812ade0 <line:3890:3>
| | `-TextComment 0x56046812adb0 <col:3> Text=" "
| |-VerbatimLineComment 0x56046812ae00 <col:4, col:21> Text=" entities"
| `-ParagraphComment 0x56046812ae70 <line:3891:1>
| `-TextComment 0x56046812ae40 <col:1> Text=" "
|-RecordDecl 0x5604680260f0 <line:3933:9, line:3957:1> line:3933:16 struct ecs_bulk_desc_t definition
| |-FullComment 0x56046812b070 <line:3929:4, line:3932:1>
| | |-ParagraphComment 0x56046812af50 <line:3929:4, col:28>
| | | `-TextComment 0x56046812af20 <col:4, col:28> Text=" Used with ecs_bulk_init "
| | |-ParagraphComment 0x56046812afa0 <line:3931:3>
| | | `-TextComment 0x56046812af70 <col:3> Text=" "
| | |-VerbatimLineComment 0x56046812afc0 <col:4, col:21> Text=" entities"
| | `-ParagraphComment 0x56046812b030 <line:3932:1>
| | `-TextComment 0x56046812b000 <col:1> Text=" "
| |-FieldDecl 0x5604680261a0 <line:3934:5, col:13> col:13 _canary 'int32_t':'int'
| |-FieldDecl 0x560468026200 <line:3936:5, col:19> col:19 entities 'ecs_entity_t *'
| | `-FullComment 0x56046812b1b0 <col:33, line:3939:71>
| | `-ParagraphComment 0x56046812b180 <line:3936:33, line:3939:71>
| | |-TextComment 0x56046812b0e0 <line:3936:33, col:81> Text=" Entities to bulk insert. Entity ids provided by "
| | |-TextComment 0x56046812b100 <line:3937:27, col:76> Text=" the application application must be empty (cannot"
| | |-TextComment 0x56046812b120 <line:3938:27, col:79> Text=" have components). If no entity ids are provided, the"
| | `-TextComment 0x56046812b140 <line:3939:27, col:71> Text=" operation will create 'count' new entities. "
| |-FieldDecl 0x560468026288 <line:3941:5, col:13> col:13 count 'int32_t':'int'
| | `-FullComment 0x56046812b280 <col:29, col:67>
| | `-ParagraphComment 0x56046812b250 <col:29, col:67>
| | `-TextComment 0x56046812b220 <col:29, col:67> Text=" Number of entities to create/populate "
| |-FieldDecl 0x560468026388 <line:3943:5, col:35> col:14 ids 'ecs_id_t[32]'
| | `-FullComment 0x56046812b350 <col:42, col:74>
| | `-ParagraphComment 0x56046812b320 <col:42, col:74>
| | `-TextComment 0x56046812b2f0 <col:42, col:74> Text=" Ids to create the entities with "
| |-FieldDecl 0x560468026420 <line:3945:5, col:12> col:12 data 'void **'
| | `-FullComment 0x56046812b4e0 <col:28, line:3950:70>
| | `-ParagraphComment 0x56046812b4b0 <line:3945:28, line:3950:70>
| | |-TextComment 0x56046812b3c0 <line:3945:28, col:81> Text=" Array with component data to insert. Each element in "
| | |-TextComment 0x56046812b3e0 <line:3946:26, col:78> Text=" the array must correspond with an element in the ids"
| | |-TextComment 0x56046812b400 <line:3947:26, col:77> Text=" array. If an element in the ids array is a tag, the"
| | |-TextComment 0x56046812b420 <line:3948:26, col:75> Text=" data array must contain a NULL. An element may be"
| | |-TextComment 0x56046812b440 <line:3949:26, col:72> Text=" set to NULL for a component, in which case the"
| | `-TextComment 0x56046812b460 <line:3950:26, col:70> Text=" component will not be set by the operation. "
| `-FieldDecl 0x5604680264a8 <line:3952:5, col:18> col:18 table 'ecs_table_t *'
| `-FullComment 0x56046812b620 <col:29, line:3955:77>
| `-ParagraphComment 0x56046812b5f0 <line:3952:29, line:3955:77>
| |-TextComment 0x56046812b550 <line:3952:29, col:81> Text=" Table to insert the entities into. Should not be set"
| |-TextComment 0x56046812b570 <line:3953:27, col:78> Text=" at the same time as ids. When 'table' is set at the"
| |-TextComment 0x56046812b590 <line:3954:27, col:78> Text=" same time as 'data', the elements in the data array"
| `-TextComment 0x56046812b5b0 <line:3955:27, col:77> Text=" must correspond with the ids in the table's type. "
|-TypedefDecl 0x560468026588 <line:3933:1, line:3957:3> col:3 referenced ecs_bulk_desc_t 'struct ecs_bulk_desc_t':'struct ecs_bulk_desc_t'
| |-ElaboratedType 0x560468026530 'struct ecs_bulk_desc_t' sugar
| | `-RecordType 0x560468026170 'struct ecs_bulk_desc_t'
| | `-Record 0x5604680260f0 'ecs_bulk_desc_t'
| `-FullComment 0x56046812b7e0 <line:3929:4, line:3932:1>
| |-ParagraphComment 0x56046812b6c0 <line:3929:4, col:28>
| | `-TextComment 0x56046812b690 <col:4, col:28> Text=" Used with ecs_bulk_init "
| |-ParagraphComment 0x56046812b710 <line:3931:3>
| | `-TextComment 0x56046812b6e0 <col:3> Text=" "
| |-VerbatimLineComment 0x56046812b730 <col:4, col:21> Text=" entities"
| `-ParagraphComment 0x56046812b7a0 <line:3932:1>
| `-TextComment 0x56046812b770 <col:1> Text=" "
|-RecordDecl 0x560468026620 <line:3963:9, line:3970:1> line:3963:16 struct ecs_component_desc_t definition
| |-FullComment 0x56046812b9a0 <line:3959:4, line:3962:1>
| | |-ParagraphComment 0x56046812b880 <line:3959:4, col:34>
| | | `-TextComment 0x56046812b850 <col:4, col:34> Text=" Used with ecs_component_init. "
| | |-ParagraphComment 0x56046812b8d0 <line:3961:3>
| | | `-TextComment 0x56046812b8a0 <col:3> Text=" "
| | |-VerbatimLineComment 0x56046812b8f0 <col:4, col:23> Text=" components"
| | `-ParagraphComment 0x56046812b960 <line:3962:1>
| | `-TextComment 0x56046812b930 <col:1> Text=" "
| |-FieldDecl 0x5604680266d0 <line:3964:5, col:13> col:13 _canary 'int32_t':'int'
| |-FieldDecl 0x560468026758 <line:3967:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| | `-FullComment 0x56046812ba70 <line:3966:8, col:62>
| | `-ParagraphComment 0x56046812ba40 <col:8, col:62>
| | `-TextComment 0x56046812ba10 <col:8, col:62> Text=" Existing entity to associate with observer (optional) "
| `-FieldDecl 0x5604680267b8 <line:3969:5, col:21> col:21 type 'ecs_type_info_t':'struct ecs_type_info_t'
| `-FullComment 0x56046812bb40 <col:31, col:70>
| `-ParagraphComment 0x56046812bb10 <col:31, col:70>
| `-TextComment 0x56046812bae0 <col:31, col:70> Text=" Parameters for type (size, hooks, ...) "
|-TypedefDecl 0x560468026898 <line:3963:1, line:3970:3> col:3 referenced ecs_component_desc_t 'struct ecs_component_desc_t':'struct ecs_component_desc_t'
| |-ElaboratedType 0x560468026840 'struct ecs_component_desc_t' sugar
| | `-RecordType 0x5604680266a0 'struct ecs_component_desc_t'
| | `-Record 0x560468026620 'ecs_component_desc_t'
| `-FullComment 0x56046812bd00 <line:3959:4, line:3962:1>
| |-ParagraphComment 0x56046812bbe0 <line:3959:4, col:34>
| | `-TextComment 0x56046812bbb0 <col:4, col:34> Text=" Used with ecs_component_init. "
| |-ParagraphComment 0x56046812bc30 <line:3961:3>
| | `-TextComment 0x56046812bc00 <col:3> Text=" "
| |-VerbatimLineComment 0x56046812bc50 <col:4, col:23> Text=" components"
| `-ParagraphComment 0x56046812bcc0 <line:3962:1>
| `-TextComment 0x56046812bc90 <col:1> Text=" "
|-RecordDecl 0x560468026930 <line:3976:9, line:4007:1> line:3976:16 struct ecs_filter_desc_t definition
| |-FullComment 0x56046812bec0 <line:3972:4, line:3975:1>
| | |-ParagraphComment 0x56046812bda0 <line:3972:4, col:31>
| | | `-TextComment 0x56046812bd70 <col:4, col:31> Text=" Used with ecs_filter_init. "
| | |-ParagraphComment 0x56046812bdf0 <line:3974:3>
| | | `-TextComment 0x56046812bdc0 <col:3> Text=" "
| | |-VerbatimLineComment 0x56046812be10 <col:4, col:20> Text=" filters"
| | `-ParagraphComment 0x56046812be80 <line:3975:1>
| | `-TextComment 0x56046812be50 <col:1> Text=" "
| |-FieldDecl 0x5604680269e0 <line:3977:5, col:13> col:13 _canary 'int32_t':'int'
| |-FieldDecl 0x560468026b58 <line:3981:5, col:46> col:16 terms 'ecs_term_t[16]'
| | `-FullComment 0x56046812bfb0 <line:3979:8, line:3980:49>
| | `-ParagraphComment 0x56046812bf80 <line:3979:8, line:3980:49>
| | |-TextComment 0x56046812bf30 <line:3979:8, col:61> Text=" Terms of the filter. If a filter has more terms than "
| | `-TextComment 0x56046812bf50 <line:3980:7, col:49> Text=" ECS_TERM_DESC_CACHE_SIZE use terms_buffer "
| |-FieldDecl 0x560468026be8 <line:3984:5, col:17> col:17 terms_buffer 'ecs_term_t *'
| | `-FullComment 0x56046812c080 <line:3983:8, col:73>
| | `-ParagraphComment 0x56046812c050 <col:8, col:73>
| | `-TextComment 0x56046812c020 <col:8, col:73> Text=" For filters with lots of terms an outside array can be provided. "
| |-FieldDecl 0x560468026c78 <line:3987:5, col:13> col:13 terms_buffer_count 'int32_t':'int'
| | `-FullComment 0x56046812c150 <line:3986:8, col:59>
| | `-ParagraphComment 0x56046812c120 <col:8, col:59>
| | `-TextComment 0x56046812c0f0 <col:8, col:59> Text=" Number of terms in array provided in terms_buffer. "
| |-FieldDecl 0x560468026d68 <line:3990:5, col:19> col:19 storage 'ecs_filter_t *'
| | `-FullComment 0x56046812c240 <line:3989:8, col:68>
| | `-ParagraphComment 0x56046812c210 <col:8, col:68>
| | `-TextComment 0x56046812c1e0 <col:8, col:68> Text=" External storage to prevent allocation of the filter object "
| |-FieldDecl 0x560468026df8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:3997:10> col:10 instanced 'bool'
| | `-FullComment 0x56046812c3b0 <line:3992:8, line:3996:31>
| | `-ParagraphComment 0x56046812c380 <line:3992:8, line:3996:31>
| | |-TextComment 0x56046812c2b0 <line:3992:8, col:75> Text=" When true, terms returned by an iterator may either contain 1 or N "
| | |-TextComment 0x56046812c2d0 <line:3993:7, col:81> Text=" elements, where terms with N elements are owned, and terms with 1 element "
| | |-TextComment 0x56046812c2f0 <line:3994:7, col:77> Text=" are shared, for example from a parent or base entity. When false, the "
| | |-TextComment 0x56046812c310 <line:3995:7, col:76> Text=" iterator will at most return 1 element when the result contains both "
| | `-TextComment 0x56046812c330 <line:3996:7, col:31> Text=" owned and shared terms. "
| |-FieldDecl 0x560468028320 <line:4000:5, col:19> col:19 flags 'ecs_flags32_t':'unsigned int'
| | `-FullComment 0x56046812c480 <line:3999:8, col:33>
| | `-ParagraphComment 0x56046812c450 <col:8, col:33>
| | `-TextComment 0x56046812c420 <col:8, col:33> Text=" Flags for advanced usage "
| |-FieldDecl 0x5604680283b0 <line:4003:5, col:17> col:17 expr 'const char *'
| | `-FullComment 0x56046812c550 <line:4002:8, col:77>
| | `-ParagraphComment 0x56046812c520 <col:8, col:77>
| | `-TextComment 0x56046812c4f0 <col:8, col:77> Text=" Filter expression. Should not be set at the same time as terms array "
| `-FieldDecl 0x560468028438 <line:4006:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x56046812c620 <line:4005:8, col:48>
| `-ParagraphComment 0x56046812c5f0 <col:8, col:48>
| `-TextComment 0x56046812c5c0 <col:8, col:48> Text=" Entity associated with query (optional) "
|-TypedefDecl 0x5604680284e8 <line:3976:1, line:4007:3> col:3 referenced ecs_filter_desc_t 'struct ecs_filter_desc_t':'struct ecs_filter_desc_t'
| |-ElaboratedType 0x560468028490 'struct ecs_filter_desc_t' sugar
| | `-RecordType 0x5604680269b0 'struct ecs_filter_desc_t'
| | `-Record 0x560468026930 'ecs_filter_desc_t'
| `-FullComment 0x56046812c7e0 <line:3972:4, line:3975:1>
| |-ParagraphComment 0x56046812c6c0 <line:3972:4, col:31>
| | `-TextComment 0x56046812c690 <col:4, col:31> Text=" Used with ecs_filter_init. "
| |-ParagraphComment 0x56046812c710 <line:3974:3>
| | `-TextComment 0x56046812c6e0 <col:3> Text=" "
| |-VerbatimLineComment 0x56046812c730 <col:4, col:20> Text=" filters"
| `-ParagraphComment 0x56046812c7a0 <line:3975:1>
| `-TextComment 0x56046812c770 <col:1> Text=" "
|-RecordDecl 0x560468028580 <line:4013:9, line:4064:1> line:4013:16 struct ecs_query_desc_t definition
| |-FullComment 0x56046812c9a0 <line:4009:4, line:4012:1>
| | |-ParagraphComment 0x56046812c880 <line:4009:4, col:30>
| | | `-TextComment 0x56046812c850 <col:4, col:30> Text=" Used with ecs_query_init. "
| | |-ParagraphComment 0x56046812c8d0 <line:4011:3>
| | | `-TextComment 0x56046812c8a0 <col:3> Text=" "
| | |-VerbatimLineComment 0x56046812c8f0 <col:4, col:20> Text=" queries"
| | `-ParagraphComment 0x56046812c960 <line:4012:1>
| | `-TextComment 0x56046812c930 <col:1> Text=" "
| |-FieldDecl 0x560468028630 <line:4014:5, col:13> col:13 _canary 'int32_t':'int'
| |-FieldDecl 0x5604680286e0 <line:4017:5, col:23> col:23 filter 'ecs_filter_desc_t':'struct ecs_filter_desc_t'
| | `-FullComment 0x56046812ca70 <line:4016:8, col:29>
| | `-ParagraphComment 0x56046812ca40 <col:8, col:29>
| | `-TextComment 0x56046812ca10 <col:8, col:29> Text=" Filter for the query "
| |-FieldDecl 0x560468028768 <line:4020:5, col:18> col:18 order_by_component 'ecs_entity_t':'unsigned long'
| | `-FullComment 0x56046812cb40 <line:4019:8, col:41>
| | `-ParagraphComment 0x56046812cb10 <col:8, col:41>
| | `-TextComment 0x56046812cae0 <col:8, col:41> Text=" Component to be used by order_by "
| |-FieldDecl 0x5604680287f8 <line:4025:5, col:27> col:27 order_by 'ecs_order_by_action_t':'int (*)(ecs_entity_t, const void *, ecs_entity_t, const void *)'
| | `-FullComment 0x56046812cc60 <line:4022:8, line:4024:41>
| | `-ParagraphComment 0x56046812cc30 <line:4022:8, line:4024:41>
| | |-TextComment 0x56046812cbb0 <line:4022:8, col:75> Text=" Callback used for ordering query results. If order_by_id is 0, the "
| | |-TextComment 0x56046812cbd0 <line:4023:7, col:76> Text=" pointer provided to the callback will be NULL. If the callback is not"
| | `-TextComment 0x56046812cbf0 <line:4024:7, col:41> Text=" set, results will not be ordered. "
| |-FieldDecl 0x5604680288b0 <line:4029:5, col:29> col:29 sort_table 'ecs_sort_table_action_t':'void (*)(ecs_world_t *, ecs_table_t *, ecs_entity_t *, void *, int32_t, int32_t, int32_t, ecs_order_by_action_t)'
| | `-FullComment 0x56046812cd50 <line:4027:8, line:4028:27>
| | `-ParagraphComment 0x56046812cd20 <line:4027:8, line:4028:27>
| | |-TextComment 0x56046812ccd0 <line:4027:8, col:67> Text=" Callback used for ordering query results. Same as order_by,"
| | `-TextComment 0x56046812ccf0 <line:4028:7, col:27> Text=" but more efficient. "
| |-FieldDecl 0x560468028938 <line:4034:5, col:14> col:14 group_by_id 'ecs_id_t':'unsigned long'
| | `-FullComment 0x56046812ce70 <line:4031:8, line:4033:17>
| | `-ParagraphComment 0x56046812ce40 <line:4031:8, line:4033:17>
| | |-TextComment 0x56046812cdc0 <line:4031:8, col:81> Text=" Id to be used by group_by. This id is passed to the group_by function and"
| | |-TextComment 0x56046812cde0 <line:4032:7, col:78> Text=" can be used identify the part of an entity type that should be used for"
| | `-TextComment 0x56046812ce00 <line:4033:7, col:17> Text=" grouping. "
| |-FieldDecl 0x5604680289f0 <line:4041:5, col:27> col:27 group_by 'ecs_group_by_action_t':'uint64_t (*)(ecs_world_t *, ecs_table_t *, ecs_id_t, void *)'
| | `-FullComment 0x56046812cfe0 <line:4036:8, line:4040:50>
| | `-ParagraphComment 0x56046812cfb0 <line:4036:8, line:4040:50>
| | |-TextComment 0x56046812cee0 <line:4036:8, col:79> Text=" Callback used for grouping results. If the callback is not set, results"
| | |-TextComment 0x56046812cf00 <line:4037:7, col:79> Text=" will not be grouped. When set, this callback will be used to calculate a"
| | |-TextComment 0x56046812cf20 <line:4038:7, col:80> Text=" "rank" for each entity (table) based on its components. This rank is then"
| | |-TextComment 0x56046812cf40 <line:4039:7, col:76> Text=" used to sort entities (tables), so that entities (tables) of the same"
| | `-TextComment 0x56046812cf60 <line:4040:7, col:50> Text=" rank are "grouped" together when iterated. "
| |-FieldDecl 0x560468028aa0 <line:4045:5, col:31> col:31 on_group_create 'ecs_group_create_action_t':'void *(*)(ecs_world_t *, uint64_t, void *)'
| | `-FullComment 0x56046812d0d0 <line:4043:8, line:4044:54>
| | `-ParagraphComment 0x56046812d0a0 <line:4043:8, line:4044:54>
| | |-TextComment 0x56046812d050 <line:4043:8, col:81> Text=" Callback that is invoked when a new group is created. The return value of"
| | `-TextComment 0x56046812d070 <line:4044:7, col:54> Text=" the callback is stored as context for a group. "
| |-FieldDecl 0x560468028b50 <line:4049:5, col:31> col:31 on_group_delete 'ecs_group_delete_action_t':'void (*)(ecs_world_t *, uint64_t, void *, void *)'
| | `-FullComment 0x56046812d1c0 <line:4047:8, line:4048:77>
| | `-ParagraphComment 0x56046812d190 <line:4047:8, line:4048:77>
| | |-TextComment 0x56046812d140 <line:4047:8, col:79> Text=" Callback that is invoked when an existing group is deleted. The return "
| | `-TextComment 0x56046812d160 <line:4048:7, col:77> Text=" value of the on_group_create callback is passed as context parameter. "
| |-FieldDecl 0x560468028be0 <line:4052:5, col:11> col:11 group_by_ctx 'void *'
| | `-FullComment 0x56046812d290 <line:4051:8, col:36>
| | `-ParagraphComment 0x56046812d260 <col:8, col:36>
| | `-TextComment 0x56046812d230 <col:8, col:36> Text=" Context to pass to group_by "
| |-FieldDecl 0x560468028c68 <line:4055:5, col:20> col:20 group_by_ctx_free 'ecs_ctx_free_t':'void (*)(void *)'
| | `-FullComment 0x56046812d360 <line:4054:8, col:38>
| | `-ParagraphComment 0x56046812d330 <col:8, col:38>
| | `-TextComment 0x56046812d300 <col:8, col:38> Text=" Function to free group_by_ctx "
| `-FieldDecl 0x560468028cf8 <line:4063:5, col:18> col:18 parent 'ecs_query_t *'
| `-FullComment 0x56046812d4f0 <line:4057:8, line:4062:33>
| `-ParagraphComment 0x56046812d4c0 <line:4057:8, line:4062:33>
| |-TextComment 0x56046812d3d0 <line:4057:8, col:78> Text=" If set, the query will be created as a subquery. A subquery matches at"
| |-TextComment 0x56046812d3f0 <line:4058:7, col:76> Text=" most a subset of its parent query. Subqueries do not directly receive"
| |-TextComment 0x56046812d410 <line:4059:7, col:75> Text=" (table) notifications from the world. Instead parent queries forward"
| |-TextComment 0x56046812d430 <line:4060:7, col:77> Text=" results to subqueries. This can improve matching performance, as fewer"
| |-TextComment 0x56046812d450 <line:4061:7, col:50> Text=" queries need to be matched with new tables."
| `-TextComment 0x56046812d470 <line:4062:7, col:33> Text=" Subqueries can be nested. "
|-TypedefDecl 0x560468028da8 <line:4013:1, line:4064:3> col:3 referenced ecs_query_desc_t 'struct ecs_query_desc_t':'struct ecs_query_desc_t'
| |-ElaboratedType 0x560468028d50 'struct ecs_query_desc_t' sugar
| | `-RecordType 0x560468028600 'struct ecs_query_desc_t'
| | `-Record 0x560468028580 'ecs_query_desc_t'
| `-FullComment 0x56046812d6b0 <line:4009:4, line:4012:1>
| |-ParagraphComment 0x56046812d590 <line:4009:4, col:30>
| | `-TextComment 0x56046812d560 <col:4, col:30> Text=" Used with ecs_query_init. "
| |-ParagraphComment 0x56046812d5e0 <line:4011:3>
| | `-TextComment 0x56046812d5b0 <col:3> Text=" "
| |-VerbatimLineComment 0x56046812d600 <col:4, col:20> Text=" queries"
| `-ParagraphComment 0x56046812d670 <line:4012:1>
| `-TextComment 0x56046812d640 <col:1> Text=" "
|-RecordDecl 0x560468028e40 <line:4070:9, line:4119:1> line:4070:16 struct ecs_observer_desc_t definition
| |-FullComment 0x56046812d870 <line:4066:4, line:4069:1>
| | |-ParagraphComment 0x56046812d750 <line:4066:4, col:33>
| | | `-TextComment 0x56046812d720 <col:4, col:33> Text=" Used with ecs_observer_init. "
| | |-ParagraphComment 0x56046812d7a0 <line:4068:3>
| | | `-TextComment 0x56046812d770 <col:3> Text=" "
| | |-VerbatimLineComment 0x56046812d7c0 <col:4, col:22> Text=" observers"
| | `-ParagraphComment 0x56046812d830 <line:4069:1>
| | `-TextComment 0x56046812d800 <col:1> Text=" "
| |-FieldDecl 0x560468028ef0 <line:4071:5, col:13> col:13 _canary 'int32_t':'int'
| |-FieldDecl 0x560468028f78 <line:4074:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| | `-FullComment 0x56046812d940 <line:4073:8, col:62>
| | `-ParagraphComment 0x56046812d910 <col:8, col:62>
| | `-TextComment 0x56046812d8e0 <col:8, col:62> Text=" Existing entity to associate with observer (optional) "
| |-FieldDecl 0x560468029008 <line:4077:5, col:23> col:23 filter 'ecs_filter_desc_t':'struct ecs_filter_desc_t'
| | `-FullComment 0x56046812da10 <line:4076:8, col:28>
| | `-ParagraphComment 0x56046812d9e0 <col:8, col:28>
| | `-TextComment 0x56046812d9b0 <col:8, col:28> Text=" Filter for observer "
| |-FieldDecl 0x560468029108 <line:4080:5, col:58> col:18 events 'ecs_entity_t[8]'
| | `-FullComment 0x56046812dae0 <line:4079:8, col:58>
| | `-ParagraphComment 0x56046812dab0 <col:8, col:58>
| | `-TextComment 0x56046812da80 <col:8, col:58> Text=" Events to observe (OnAdd, OnRemove, OnSet, UnSet) "
| |-FieldDecl 0x560468029198 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:4085:10> col:10 yield_existing 'bool'
| | `-FullComment 0x56046812dc00 <line:4082:8, line:4084:77>
| | `-ParagraphComment 0x56046812dbd0 <line:4082:8, line:4084:77>
| | |-TextComment 0x56046812db50 <line:4082:8, col:82> Text=" When observer is created, generate events from existing data. For example,"
| | |-TextComment 0x56046812db70 <line:4083:7, col:72> Text=" EcsOnAdd Position would match all existing instances of Position."
| | `-TextComment 0x56046812db90 <line:4084:7, col:77> Text=" This is only supported for events that are iterable (see EcsIterable) "
| |-FieldDecl 0x560468029228 <line:4088:5, col:23> col:23 callback 'ecs_iter_action_t':'void (*)(ecs_iter_t *)'
| | `-FullComment 0x56046812dcd0 <line:4087:8, col:75>
| | `-ParagraphComment 0x56046812dca0 <col:8, col:75>
| | `-TextComment 0x56046812dc70 <col:8, col:75> Text=" Callback to invoke on an event, invoked when the observer matches. "
| |-FieldDecl 0x5604680292b8 <line:4096:5, col:22> col:22 run 'ecs_run_action_t':'void (*)(ecs_iter_t *)'
| | `-FullComment 0x56046812de60 <line:4090:8, line:4095:42>
| | `-ParagraphComment 0x56046812de30 <line:4090:8, line:4095:42>
| | |-TextComment 0x56046812dd40 <line:4090:8, col:74> Text=" Callback invoked on an event. When left to NULL the default runner"
| | |-TextComment 0x56046812dd60 <line:4091:7, col:76> Text=" is used which matches the event with the observer's filter, and calls"
| | |-TextComment 0x56046812dd80 <line:4092:7, col:35> Text=" 'callback' when it matches. "
| | |-TextComment 0x56046812dda0 <line:4093:7, col:80> Text=" A reason to override the run function is to improve performance, if there"
| | |-TextComment 0x56046812ddc0 <line:4094:7, col:80> Text=" are more efficient way to test whether an event matches the observer than"
| | `-TextComment 0x56046812dde0 <line:4095:7, col:42> Text=" the general purpose query matcher. "
| |-FieldDecl 0x5604680298b0 <line:4099:5, col:11> col:11 ctx 'void *'
| | `-FullComment 0x56046812df30 <line:4098:8, col:41>
| | `-ParagraphComment 0x56046812df00 <col:8, col:41>
| | `-TextComment 0x56046812ded0 <col:8, col:41> Text=" User context to pass to callback "
| |-FieldDecl 0x560468029940 <line:4102:5, col:11> col:11 binding_ctx 'void *'
| | `-FullComment 0x56046812e000 <line:4101:8, col:49>
| | `-ParagraphComment 0x56046812dfd0 <col:8, col:49>
| | `-TextComment 0x56046812dfa0 <col:8, col:49> Text=" Context to be used for language bindings "
| |-FieldDecl 0x5604680299c8 <line:4105:5, col:20> col:20 ctx_free 'ecs_ctx_free_t':'void (*)(void *)'
| | `-FullComment 0x56046812e0d0 <line:4104:8, col:29>
| | `-ParagraphComment 0x56046812e0a0 <col:8, col:29>
| | `-TextComment 0x56046812e070 <col:8, col:29> Text=" Callback to free ctx "
| |-FieldDecl 0x560468029a58 <line:4108:5, col:20> col:20 binding_ctx_free 'ecs_ctx_free_t':'void (*)(void *)'
| | `-FullComment 0x5604681301c0 <line:4107:8, col:37>
| | `-ParagraphComment 0x56046812e170 <col:8, col:37>
| | `-TextComment 0x56046812e140 <col:8, col:37> Text=" Callback to free binding_ctx "
| |-FieldDecl 0x560468029ae8 <line:4111:5, col:17> col:17 observable 'ecs_poly_t *'
| | `-FullComment 0x560468130290 <line:4110:8, col:55>
| | `-ParagraphComment 0x560468130260 <col:8, col:55>
| | `-TextComment 0x560468130230 <col:8, col:55> Text=" Observable with which to register the observer "
| |-FieldDecl 0x560468029b78 <line:4115:5, col:14> col:14 last_event_id 'int32_t *'
| | `-FullComment 0x560468130380 <line:4113:8, line:4114:71>
| | `-ParagraphComment 0x560468130350 <line:4113:8, line:4114:71>
| | |-TextComment 0x560468130300 <line:4113:8, col:78> Text=" Optional shared last event id for multiple observers. Ensures only one"
| | `-TextComment 0x560468130320 <line:4114:7, col:71> Text=" of the observers with the shared id gets triggered for an event "
| `-FieldDecl 0x560468029c08 <line:4118:5, col:13> col:13 term_index 'int32_t':'int'
| `-FullComment 0x560468130450 <line:4117:8, col:35>
| `-ParagraphComment 0x560468130420 <col:8, col:35>
| `-TextComment 0x5604681303f0 <col:8, col:35> Text=" Used for internal purposes "
|-TypedefDecl 0x560468029cb8 <line:4070:1, line:4119:3> col:3 referenced ecs_observer_desc_t 'struct ecs_observer_desc_t':'struct ecs_observer_desc_t'
| |-ElaboratedType 0x560468029c60 'struct ecs_observer_desc_t' sugar
| | `-RecordType 0x560468028ec0 'struct ecs_observer_desc_t'
| | `-Record 0x560468028e40 'ecs_observer_desc_t'
| `-FullComment 0x560468130610 <line:4066:4, line:4069:1>
| |-ParagraphComment 0x5604681304f0 <line:4066:4, col:33>
| | `-TextComment 0x5604681304c0 <col:4, col:33> Text=" Used with ecs_observer_init. "
| |-ParagraphComment 0x560468130540 <line:4068:3>
| | `-TextComment 0x560468130510 <col:3> Text=" "
| |-VerbatimLineComment 0x560468130560 <col:4, col:22> Text=" observers"
| `-ParagraphComment 0x5604681305d0 <line:4069:1>
| `-TextComment 0x5604681305a0 <col:1> Text=" "
|-RecordDecl 0x560468029d50 <line:4128:9, line:4131:1> line:4128:16 struct ecs_value_t definition
| |-FullComment 0x560468130870 <line:4122:3, line:4124:5>
| | |-ParagraphComment 0x5604681306b0 <line:4122:3>
| | | `-TextComment 0x560468130680 <col:3> Text=" "
| | |-VerbatimLineComment 0x5604681306d0 <col:4, col:44> Text=" misc_types Miscellaneous types"
| | |-ParagraphComment 0x560468130740 <line:4123:3>
| | | `-TextComment 0x560468130710 <col:3> Text=" "
| | `-BlockCommandComment 0x560468130760 <col:4, line:4124:5> Name="brief"
| | `-ParagraphComment 0x560468130830 <line:4123:10, line:4124:5>
| | |-TextComment 0x560468130790 <line:4123:10, col:69> Text=" Types used to create entities, observers, queries and more."
| | |-TextComment 0x5604681307b0 <line:4124:3> Text=" "
| | |-TextComment 0x5604681307d0 <col:4> Text="@"
| | `-TextComment 0x5604681307f0 <col:5> Text="{"
| |-FieldDecl 0x560468029e00 <line:4129:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| `-FieldDecl 0x560468029e68 <line:4130:5, col:11> col:11 ptr 'void *'
|-TypedefDecl 0x560468029f18 <line:4128:1, line:4131:3> col:3 referenced ecs_value_t 'struct ecs_value_t':'struct ecs_value_t'
| |-ElaboratedType 0x560468029ec0 'struct ecs_value_t' sugar
| | `-RecordType 0x560468029dd0 'struct ecs_value_t'
| | `-Record 0x560468029d50 'ecs_value_t'
| `-FullComment 0x560468130ad0 <line:4122:3, line:4124:5>
| |-ParagraphComment 0x560468130910 <line:4122:3>
| | `-TextComment 0x5604681308e0 <col:3> Text=" "
| |-VerbatimLineComment 0x560468130930 <col:4, col:44> Text=" misc_types Miscellaneous types"
| |-ParagraphComment 0x5604681309a0 <line:4123:3>
| | `-TextComment 0x560468130970 <col:3> Text=" "
| `-BlockCommandComment 0x5604681309c0 <col:4, line:4124:5> Name="brief"
| `-ParagraphComment 0x560468130a90 <line:4123:10, line:4124:5>
| |-TextComment 0x5604681309f0 <line:4123:10, col:69> Text=" Types used to create entities, observers, queries and more."
| |-TextComment 0x560468130a10 <line:4124:3> Text=" "
| |-TextComment 0x560468130a30 <col:4> Text="@"
| `-TextComment 0x560468130a50 <col:5> Text="{"
|-RecordDecl 0x560468029fb0 <line:4134:9, line:4196:1> line:4134:16 struct ecs_world_info_t definition
| |-FullComment 0x560468130ba0 <line:4133:4, col:52>
| | `-ParagraphComment 0x560468130b70 <col:4, col:52>
| | `-TextComment 0x560468130b40 <col:4, col:52> Text=" Type that contains information about the world. "
| |-FieldDecl 0x56046802a060 <line:4135:5, col:18> col:18 last_component_id 'ecs_entity_t':'unsigned long'
| | `-FullComment 0x560468130c70 <col:43, col:75>
| | `-ParagraphComment 0x560468130c40 <col:43, col:75>
| | `-TextComment 0x560468130c10 <col:43, col:75> Text=" Last issued component entity id "
| |-FieldDecl 0x56046802a0e8 <line:4136:5, col:18> col:18 last_id 'ecs_entity_t':'unsigned long'
| | `-FullComment 0x560468130d40 <col:43, col:65>
| | `-ParagraphComment 0x560468130d10 <col:43, col:65>
| | `-TextComment 0x560468130ce0 <col:43, col:65> Text=" Last issued entity id "
| |-FieldDecl 0x56046802a178 <line:4137:5, col:18> col:18 min_id 'ecs_entity_t':'unsigned long'
| | `-FullComment 0x560468130e10 <col:43, col:67>
| | `-ParagraphComment 0x560468130de0 <col:43, col:67>
| | `-TextComment 0x560468130db0 <col:43, col:67> Text=" First allowed entity id "
| |-FieldDecl 0x56046802a208 <line:4138:5, col:18> col:18 max_id 'ecs_entity_t':'unsigned long'
| | `-FullComment 0x560468130ee0 <col:43, col:66>
| | `-ParagraphComment 0x560468130eb0 <col:43, col:66>
| | `-TextComment 0x560468130e80 <col:43, col:66> Text=" Last allowed entity id "
| |-FieldDecl 0x56046802a2a0 <line:37:21, line:4140:17> col:17 delta_time_raw 'float'
| | `-FullComment 0x560468130fb0 <col:43, col:76>
| | `-ParagraphComment 0x560468130f80 <col:43, col:76>
| | `-TextComment 0x560468130f50 <col:43, col:76> Text=" Raw delta time (no time scaling) "
| |-FieldDecl 0x56046802a330 <line:37:21, line:4141:17> col:17 delta_time 'float'
| | `-FullComment 0x560468131080 <col:43, col:86>
| | `-ParagraphComment 0x560468131050 <col:43, col:86>
| | `-TextComment 0x560468131020 <col:43, col:86> Text=" Time passed to or computed by ecs_progress "
| |-FieldDecl 0x56046802a3c0 <line:37:21, line:4142:17> col:17 time_scale 'float'
| | `-FullComment 0x560468131150 <col:43, col:76>
| | `-ParagraphComment 0x560468131120 <col:43, col:76>
| | `-TextComment 0x5604681310f0 <col:43, col:76> Text=" Time scale applied to delta_time "
| |-FieldDecl 0x56046802a450 <line:37:21, line:4143:17> col:17 target_fps 'float'
| | `-FullComment 0x560468131220 <col:43, col:54>
| | `-ParagraphComment 0x5604681311f0 <col:43, col:54>
| | `-TextComment 0x5604681311c0 <col:43, col:54> Text=" Target fps "
| |-FieldDecl 0x56046802a4e0 <line:37:21, line:4144:17> col:17 frame_time_total 'float'
| | `-FullComment 0x5604681312f0 <col:43, col:79>
| | `-ParagraphComment 0x5604681312c0 <col:43, col:79>
| | `-TextComment 0x560468131290 <col:43, col:79> Text=" Total time spent processing a frame "
| |-FieldDecl 0x56046802a570 <line:37:21, line:4145:17> col:17 system_time_total 'float'
| | `-FullComment 0x5604681313c0 <col:43, col:71>
| | `-ParagraphComment 0x560468131390 <col:43, col:71>
| | `-TextComment 0x560468131360 <col:43, col:71> Text=" Total time spent in systems "
| |-FieldDecl 0x56046802a600 <line:37:21, line:4146:17> col:17 emit_time_total 'float'
| | `-FullComment 0x560468131490 <col:43, col:80>
| | `-ParagraphComment 0x560468131460 <col:43, col:80>
| | `-TextComment 0x560468131430 <col:43, col:80> Text=" Total time spent notifying observers "
| |-FieldDecl 0x56046802a690 <line:37:21, line:4147:17> col:17 merge_time_total 'float'
| | `-FullComment 0x560468131560 <col:43, col:70>
| | `-ParagraphComment 0x560468131530 <col:43, col:70>
| | `-TextComment 0x560468131500 <col:43, col:70> Text=" Total time spent in merges "
| |-FieldDecl 0x56046802a720 <line:37:21, line:4148:17> col:17 world_time_total 'float'
| | `-FullComment 0x560468131630 <col:43, col:70>
| | `-ParagraphComment 0x560468131600 <col:43, col:70>
| | `-TextComment 0x5604681315d0 <col:43, col:70> Text=" Time elapsed in simulation "
| |-FieldDecl 0x56046802a7b0 <line:37:21, line:4149:17> col:17 world_time_total_raw 'float'
| | `-FullComment 0x560468131700 <col:43, col:83>
| | `-ParagraphComment 0x5604681316d0 <col:43, col:83>
| | `-TextComment 0x5604681316a0 <col:43, col:83> Text=" Time elapsed in simulation (no scaling) "
| |-FieldDecl 0x56046802ae40 <line:37:21, line:4150:17> col:17 rematch_time_total 'float'
| | `-FullComment 0x5604681317d0 <col:43, col:74>
| | `-ParagraphComment 0x5604681317a0 <col:43, col:74>
| | `-TextComment 0x560468131770 <col:43, col:74> Text=" Time spent on query rematching "
| |-FieldDecl 0x56046802aec8 <line:4152:5, col:13> col:13 frame_count_total 'int64_t':'long'
| | `-FullComment 0x5604681318a0 <col:43, col:66>
| | `-ParagraphComment 0x560468131870 <col:43, col:66>
| | `-TextComment 0x560468131840 <col:43, col:66> Text=" Total number of frames "
| |-FieldDecl 0x56046802af58 <line:4153:5, col:13> col:13 merge_count_total 'int64_t':'long'
| | `-FullComment 0x560468131970 <col:43, col:66>
| | `-ParagraphComment 0x560468131940 <col:43, col:66>
| | `-TextComment 0x560468131910 <col:43, col:66> Text=" Total number of merges "
| |-FieldDecl 0x56046802afe8 <line:4154:5, col:13> col:13 rematch_count_total 'int64_t':'long'
| | `-FullComment 0x560468131a40 <col:43, col:69>
| | `-ParagraphComment 0x560468131a10 <col:43, col:69>
| | `-TextComment 0x5604681319e0 <col:43, col:69> Text=" Total number of rematches "
| |-FieldDecl 0x56046802b078 <line:4156:5, col:13> col:13 id_create_total 'int64_t':'long'
| | `-FullComment 0x560468131b10 <col:43, col:86>
| | `-ParagraphComment 0x560468131ae0 <col:43, col:86>
| | `-TextComment 0x560468131ab0 <col:43, col:86> Text=" Total number of times a new id was created "
| |-FieldDecl 0x56046802b108 <line:4157:5, col:13> col:13 id_delete_total 'int64_t':'long'
| | `-FullComment 0x560468131be0 <col:43, col:83>
| | `-ParagraphComment 0x560468131bb0 <col:43, col:83>
| | `-TextComment 0x560468131b80 <col:43, col:83> Text=" Total number of times an id was deleted "
| |-FieldDecl 0x56046802b198 <line:4158:5, col:13> col:13 table_create_total 'int64_t':'long'
| | `-FullComment 0x560468131cb0 <col:43, col:85>
| | `-ParagraphComment 0x560468131c80 <col:43, col:85>
| | `-TextComment 0x560468131c50 <col:43, col:85> Text=" Total number of times a table was created "
| |-FieldDecl 0x56046802b228 <line:4159:5, col:13> col:13 table_delete_total 'int64_t':'long'
| | `-FullComment 0x560468131d80 <col:43, col:85>
| | `-ParagraphComment 0x560468131d50 <col:43, col:85>
| | `-TextComment 0x560468131d20 <col:43, col:85> Text=" Total number of times a table was deleted "
| |-FieldDecl 0x56046802b2b8 <line:4160:5, col:13> col:13 pipeline_build_count_total 'int64_t':'long'
| | `-FullComment 0x560468131e50 <col:45, col:77>
| | `-ParagraphComment 0x560468131e20 <col:45, col:77>
| | `-TextComment 0x560468131df0 <col:45, col:77> Text=" Total number of pipeline builds "
| |-FieldDecl 0x56046802b348 <line:4161:5, col:13> col:13 systems_ran_frame 'int64_t':'long'
| | `-FullComment 0x560468131f20 <col:43, col:85>
| | `-ParagraphComment 0x560468131ef0 <col:43, col:85>
| | `-TextComment 0x560468131ec0 <col:43, col:85> Text=" Total number of systems ran in last frame "
| |-FieldDecl 0x56046802b3d8 <line:4162:5, col:13> col:13 observers_ran_frame 'int64_t':'long'
| | `-FullComment 0x560468131ff0 <col:43, col:86>
| | `-ParagraphComment 0x560468131fc0 <col:43, col:86>
| | `-TextComment 0x560468131f90 <col:43, col:86> Text=" Total number of times observer was invoked "
| |-FieldDecl 0x56046802b468 <line:4164:5, col:13> col:13 id_count 'int32_t':'int'
| | `-FullComment 0x5604681320c0 <col:43, col:92>
| | `-ParagraphComment 0x560468132090 <col:43, col:92>
| | `-TextComment 0x560468132060 <col:43, col:92> Text=" Number of ids in the world (excluding wildcards) "
| |-FieldDecl 0x56046802b4f8 <line:4165:5, col:13> col:13 tag_id_count 'int32_t':'int'
| | `-FullComment 0x560468132190 <col:43, col:84>
| | `-ParagraphComment 0x560468132160 <col:43, col:84>
| | `-TextComment 0x560468132130 <col:43, col:84> Text=" Number of tag (no data) ids in the world "
| |-FieldDecl 0x56046802b588 <line:4166:5, col:13> col:13 component_id_count 'int32_t':'int'
| | `-FullComment 0x560468132270 <col:43, col:87>
| | `-ParagraphComment 0x560468132240 <col:43, col:87>
| | `-TextComment 0x560468132210 <col:43, col:87> Text=" Number of component (data) ids in the world "
| |-FieldDecl 0x56046802b618 <line:4167:5, col:13> col:13 pair_id_count 'int32_t':'int'
| | `-FullComment 0x560468132340 <col:43, col:75>
| | `-ParagraphComment 0x560468132310 <col:43, col:75>
| | `-TextComment 0x5604681322e0 <col:43, col:75> Text=" Number of pair ids in the world "
| |-FieldDecl 0x56046802b6a8 <line:4168:5, col:13> col:13 wildcard_id_count 'int32_t':'int'
| | `-FullComment 0x560468132410 <col:43, col:66>
| | `-ParagraphComment 0x5604681323e0 <col:43, col:66>
| | `-TextComment 0x5604681323b0 <col:43, col:66> Text=" Number of wildcard ids "
| |-FieldDecl 0x56046802b738 <line:4170:5, col:13> col:13 table_count 'int32_t':'int'
| | `-FullComment 0x5604681324e0 <col:43, col:60>
| | `-ParagraphComment 0x5604681324b0 <col:43, col:60>
| | `-TextComment 0x560468132480 <col:43, col:60> Text=" Number of tables "
| |-FieldDecl 0x56046802b7c8 <line:4171:5, col:13> col:13 tag_table_count 'int32_t':'int'
| | `-FullComment 0x5604681325b0 <col:43, col:69>
| | `-ParagraphComment 0x560468132580 <col:43, col:69>
| | `-TextComment 0x560468132550 <col:43, col:69> Text=" Number of tag-only tables "
| |-FieldDecl 0x56046802b858 <line:4172:5, col:13> col:13 trivial_table_count 'int32_t':'int'
| | `-FullComment 0x560468132680 <col:43, col:109>
| | `-ParagraphComment 0x560468132650 <col:43, col:109>
| | `-TextComment 0x560468132620 <col:43, col:109> Text=" Number of tables with trivial components (no lifecycle callbacks) "
| |-FieldDecl 0x56046802b8e8 <line:4173:5, col:13> col:13 empty_table_count 'int32_t':'int'
| | `-FullComment 0x560468132750 <col:43, col:77>
| | `-ParagraphComment 0x560468132720 <col:43, col:77>
| | `-TextComment 0x5604681326f0 <col:43, col:77> Text=" Number of tables without entities "
| |-FieldDecl 0x56046802b978 <line:4174:5, col:13> col:13 table_record_count 'int32_t':'int'
| | `-FullComment 0x560468132820 <col:43, col:99>
| | `-ParagraphComment 0x5604681327f0 <col:43, col:99>
| | `-TextComment 0x5604681327c0 <col:43, col:99> Text=" Total number of table records (entries in table caches) "
| |-FieldDecl 0x56046802ba08 <line:4175:5, col:13> col:13 table_storage_count 'int32_t':'int'
| | `-FullComment 0x5604681328f0 <col:43, col:74>
| | `-ParagraphComment 0x5604681328c0 <col:43, col:74>
| | `-TextComment 0x560468132890 <col:43, col:74> Text=" Total number of table storages "
| |-RecordDecl 0x56046802ba88 <line:4178:5, line:4190:5> line:4178:5 struct definition
| | |-FieldDecl 0x56046802bb40 <line:4179:9, col:17> col:17 add_count 'int64_t':'long'
| | | `-FullComment 0x5604681329c0 <col:44, col:67>
| | | `-ParagraphComment 0x560468132990 <col:44, col:67>
| | | `-TextComment 0x560468132960 <col:44, col:67> Text=" add commands processed "
| | |-FieldDecl 0x56046802bbc8 <line:4180:9, col:17> col:17 remove_count 'int64_t':'long'
| | | `-FullComment 0x560468132a90 <col:44, col:70>
| | | `-ParagraphComment 0x560468132a60 <col:44, col:70>
| | | `-TextComment 0x560468132a30 <col:44, col:70> Text=" remove commands processed "
| | |-FieldDecl 0x56046802bc58 <line:4181:9, col:17> col:17 delete_count 'int64_t':'long'
| | | `-FullComment 0x560468132b60 <col:44, col:70>
| | | `-ParagraphComment 0x560468132b30 <col:44, col:70>
| | | `-TextComment 0x560468132b00 <col:44, col:70> Text=" delete commands processed "
| | |-FieldDecl 0x56046802bce8 <line:4182:9, col:17> col:17 clear_count 'int64_t':'long'
| | | `-FullComment 0x560468132c30 <col:44, col:69>
| | | `-ParagraphComment 0x560468132c00 <col:44, col:69>
| | | `-TextComment 0x560468132bd0 <col:44, col:69> Text=" clear commands processed "
| | |-FieldDecl 0x56046802bd78 <line:4183:9, col:17> col:17 set_count 'int64_t':'long'
| | | `-FullComment 0x560468132d00 <col:44, col:67>
| | | `-ParagraphComment 0x560468132cd0 <col:44, col:67>
| | | `-TextComment 0x560468132ca0 <col:44, col:67> Text=" set commands processed "
| | |-FieldDecl 0x56046802ca10 <line:4184:9, col:17> col:17 get_mut_count 'int64_t':'long'
| | | `-FullComment 0x560468132dd0 <col:44, col:79>
| | | `-ParagraphComment 0x560468132da0 <col:44, col:79>
| | | `-TextComment 0x560468132d70 <col:44, col:79> Text=" get_mut/emplace commands processed "
| | |-FieldDecl 0x56046802ca98 <line:4185:9, col:17> col:17 modified_count 'int64_t':'long'
| | | `-FullComment 0x560468132ea0 <col:44, col:72>
| | | `-ParagraphComment 0x560468132e70 <col:44, col:72>
| | | `-TextComment 0x560468132e40 <col:44, col:72> Text=" modified commands processed "
| | |-FieldDecl 0x56046802cb28 <line:4186:9, col:17> col:17 other_count 'int64_t':'long'
| | | `-FullComment 0x560468132f70 <col:44, col:69>
| | | `-ParagraphComment 0x560468132f40 <col:44, col:69>
| | | `-TextComment 0x560468132f10 <col:44, col:69> Text=" other commands processed "
| | |-FieldDecl 0x56046802cbb8 <line:4187:9, col:17> col:17 discard_count 'int64_t':'long'
| | | `-FullComment 0x560468133040 <col:44, col:128>
| | | `-ParagraphComment 0x560468133010 <col:44, col:128>
| | | `-TextComment 0x560468132fe0 <col:44, col:128> Text=" commands discarded, happens when entity is no longer alive when running the command "
| | |-FieldDecl 0x56046802cc48 <line:4188:9, col:17> col:17 batched_entity_count 'int64_t':'long'
| | | `-FullComment 0x560468133110 <col:44, col:85>
| | | `-ParagraphComment 0x5604681330e0 <col:44, col:85>
| | | `-TextComment 0x5604681330b0 <col:44, col:85> Text=" entities for which commands were batched "
| | `-FieldDecl 0x56046802ccd8 <line:4189:9, col:17> col:17 batched_command_count 'int64_t':'long'
| | `-FullComment 0x5604681331e0 <col:44, col:61>
| | `-ParagraphComment 0x5604681331b0 <col:44, col:61>
| | `-TextComment 0x560468133180 <col:44, col:61> Text=" commands batched "
| |-FieldDecl 0x56046802cdb8 <line:4178:5, line:4190:7> col:7 cmd 'struct (unnamed struct at flecs.h:4178:5)':'struct ecs_world_info_t::(unnamed at flecs.h:4178:5)'
| `-FieldDecl 0x56046802ce20 <line:4192:5, col:17> col:17 name_prefix 'const char *'
| `-FullComment 0x560468133320 <col:43, line:4195:68>
| `-ParagraphComment 0x5604681332f0 <line:4192:43, line:4195:68>
| |-TextComment 0x560468133250 <line:4192:43, col:81> Text=" Value set by ecs_set_name_prefix. Used"
| |-TextComment 0x560468133270 <line:4193:41, col:77> Text=" to remove library prefixes of symbol"
| |-TextComment 0x560468133290 <line:4194:41, col:72> Text=" names (such as Ecs, ecs_) when "
| `-TextComment 0x5604681332b0 <line:4195:41, col:68> Text=" registering them as names. "
|-TypedefDecl 0x56046802cef8 <line:4134:1, line:4196:3> col:3 referenced ecs_world_info_t 'struct ecs_world_info_t':'struct ecs_world_info_t'
| |-ElaboratedType 0x56046802cea0 'struct ecs_world_info_t' sugar
| | `-RecordType 0x56046802a030 'struct ecs_world_info_t'
| | `-Record 0x560468029fb0 'ecs_world_info_t'
| `-FullComment 0x5604681333f0 <line:4133:4, col:52>
| `-ParagraphComment 0x5604681333c0 <col:4, col:52>
| `-TextComment 0x560468133390 <col:4, col:52> Text=" Type that contains information about the world. "
|-RecordDecl 0x56046802cf90 <line:4199:9, line:4203:1> line:4199:16 struct ecs_query_group_info_t definition
| |-FullComment 0x5604681334c0 <line:4198:4, col:56>
| | `-ParagraphComment 0x560468133490 <col:4, col:56>
| | `-TextComment 0x560468133460 <col:4, col:56> Text=" Type that contains information about a query group. "
| |-FieldDecl 0x56046802d040 <line:4200:5, col:13> col:13 match_count 'int32_t':'int'
| | `-FullComment 0x560468133590 <col:31, col:76>
| | `-ParagraphComment 0x560468133560 <col:31, col:76>
| | `-TextComment 0x560468133530 <col:31, col:76> Text=" How often tables have been matched/unmatched "
| |-FieldDecl 0x56046802d0c8 <line:4201:5, col:13> col:13 table_count 'int32_t':'int'
| | `-FullComment 0x560468133660 <col:31, col:57>
| | `-ParagraphComment 0x560468133630 <col:31, col:57>
| | `-TextComment 0x560468133600 <col:31, col:57> Text=" Number of tables in group "
| `-FieldDecl 0x56046802d160 <line:4202:5, col:11> col:11 ctx 'void *'
| `-FullComment 0x560468133730 <col:31, col:74>
| `-ParagraphComment 0x560468133700 <col:31, col:74>
| `-TextComment 0x5604681336d0 <col:31, col:74> Text=" Group context, returned by on_group_create "
|-TypedefDecl 0x56046802d238 <line:4199:1, line:4203:3> col:3 referenced ecs_query_group_info_t 'struct ecs_query_group_info_t':'struct ecs_query_group_info_t'
| |-ElaboratedType 0x56046802d1e0 'struct ecs_query_group_info_t' sugar
| | `-RecordType 0x56046802d010 'struct ecs_query_group_info_t'
| | `-Record 0x56046802cf90 'ecs_query_group_info_t'
| `-FullComment 0x560468133800 <line:4198:4, col:56>
| `-ParagraphComment 0x5604681337d0 <col:4, col:56>
| `-TextComment 0x5604681337a0 <col:4, col:56> Text=" Type that contains information about a query group. "
|-RecordDecl 0x56046802d330 <line:4214:9, line:4220:1> line:4214:16 struct EcsIdentifier definition
| |-FullComment 0x5604681338d0 <line:4213:4, col:72>
| | `-ParagraphComment 0x5604681338a0 <col:4, col:72>
| | `-TextComment 0x560468133870 <col:4, col:72> Text=" A (string) identifier. Used as pair with EcsName and EcsSymbol tags "
| |-FieldDecl 0x56046802d3e8 <line:4215:5, col:11> col:11 value 'char *'
| | `-FullComment 0x5604681339a0 <col:31, col:49>
| | `-ParagraphComment 0x560468133970 <col:31, col:49>
| | `-TextComment 0x560468133940 <col:31, col:49> Text=" Identifier string "
| |-FieldDecl 0x56046802d478 <line:4216:5, col:16> col:16 length 'ecs_size_t':'int'
| | `-FullComment 0x560468133a70 <col:31, col:52>
| | `-ParagraphComment 0x560468133a40 <col:31, col:52>
| | `-TextComment 0x560468133a10 <col:31, col:52> Text=" Length of identifier "
| |-FieldDecl 0x56046802d508 <line:4217:5, col:14> col:14 hash 'uint64_t':'unsigned long'
| | `-FullComment 0x560468133b40 <col:31, col:53>
| | `-ParagraphComment 0x560468133b10 <col:31, col:53>
| | `-TextComment 0x560468133ae0 <col:31, col:53> Text=" Hash of current value "
| |-FieldDecl 0x56046802d598 <line:4218:5, col:14> col:14 index_hash 'uint64_t':'unsigned long'
| | `-FullComment 0x560468133c10 <col:31, col:72>
| | `-ParagraphComment 0x560468133be0 <col:31, col:72>
| | `-TextComment 0x560468133bb0 <col:31, col:72> Text=" Hash of existing record in current index "
| `-FieldDecl 0x56046802d628 <line:4219:5, col:20> col:20 index 'ecs_hashmap_t *'
| `-FullComment 0x560468133ce0 <col:31, col:45>
| `-ParagraphComment 0x560468133cb0 <col:31, col:45>
| `-TextComment 0x560468133c80 <col:31, col:45> Text=" Current index "
|-TypedefDecl 0x56046802d708 <line:4214:1, line:4220:3> col:3 EcsIdentifier 'struct EcsIdentifier':'struct EcsIdentifier'
| |-ElaboratedType 0x56046802d6b0 'struct EcsIdentifier' sugar
| | `-RecordType 0x56046802d3b0 'struct EcsIdentifier'
| | `-Record 0x56046802d330 'EcsIdentifier'
| `-FullComment 0x560468133db0 <line:4213:4, col:72>
| `-ParagraphComment 0x560468133d80 <col:4, col:72>
| `-TextComment 0x560468133d50 <col:4, col:72> Text=" A (string) identifier. Used as pair with EcsName and EcsSymbol tags "
|-RecordDecl 0x56046802d7a0 <line:4223:9, line:4226:1> line:4223:16 struct EcsComponent definition
| |-FullComment 0x560468133e80 <line:4222:4, col:27>
| | `-ParagraphComment 0x560468133e50 <col:4, col:27>
| | `-TextComment 0x560468133e20 <col:4, col:27> Text=" Component information. "
| |-FieldDecl 0x56046802d850 <line:4224:5, col:16> col:16 size 'ecs_size_t':'int'
| | `-FullComment 0x560468133f50 <col:36, col:51>
| | `-ParagraphComment 0x560468133f20 <col:36, col:51>
| | `-TextComment 0x560468133ef0 <col:36, col:51> Text=" Component size "
| `-FieldDecl 0x56046802d8d8 <line:4225:5, col:16> col:16 alignment 'ecs_size_t':'int'
| `-FullComment 0x560468134020 <col:36, col:56>
| `-ParagraphComment 0x560468133ff0 <col:36, col:56>
| `-TextComment 0x560468133fc0 <col:36, col:56> Text=" Component alignment "
|-TypedefDecl 0x56046802d9b8 <line:4223:1, line:4226:3> col:3 referenced EcsComponent 'struct EcsComponent':'struct EcsComponent'
| |-ElaboratedType 0x56046802d960 'struct EcsComponent' sugar
| | `-RecordType 0x56046802d820 'struct EcsComponent'
| | `-Record 0x56046802d7a0 'EcsComponent'
| `-FullComment 0x5604681340f0 <line:4222:4, col:27>
| `-ParagraphComment 0x5604681340c0 <col:4, col:27>
| `-TextComment 0x560468134090 <col:4, col:27> Text=" Component information. "
|-RecordDecl 0x560467fecf80 <line:4229:9, line:4231:1> line:4229:16 struct EcsPoly definition
| |-FullComment 0x5604681341e0 <line:4228:4, col:40>
| | `-ParagraphComment 0x560468134190 <col:4, col:40>
| | `-TextComment 0x560468134160 <col:4, col:40> Text=" Component for storing a poly object "
| `-FieldDecl 0x560467fed030 <line:4230:5, col:17> col:17 poly 'ecs_poly_t *'
| `-FullComment 0x5604681342b0 <col:36, col:59>
| `-ParagraphComment 0x560468134280 <col:36, col:59>
| `-TextComment 0x560468134250 <col:36, col:59> Text=" Pointer to poly object "
|-TypedefDecl 0x560467fed108 <line:4229:1, line:4231:3> col:3 EcsPoly 'struct EcsPoly':'struct EcsPoly'
| |-ElaboratedType 0x560467fed0b0 'struct EcsPoly' sugar
| | `-RecordType 0x560467fed000 'struct EcsPoly'
| | `-Record 0x560467fecf80 'EcsPoly'
| `-FullComment 0x560468134380 <line:4228:4, col:40>
| `-ParagraphComment 0x560468134350 <col:4, col:40>
| `-TextComment 0x560468134320 <col:4, col:40> Text=" Component for storing a poly object "
|-TypedefDecl 0x560467fed1b0 <line:4234:1, col:24> col:24 EcsIterable 'ecs_iterable_t':'struct ecs_iterable_t'
| |-TypedefType 0x560468008df0 'ecs_iterable_t' sugar
| | |-Typedef 0x560468006588 'ecs_iterable_t'
| | `-ElaboratedType 0x560468006530 'struct ecs_iterable_t' sugar
| | `-RecordType 0x560468006490 'struct ecs_iterable_t'
| | `-Record 0x560468006408 'ecs_iterable_t'
| `-FullComment 0x560468134450 <line:4233:4, col:36>
| `-ParagraphComment 0x560468134420 <col:4, col:36>
| `-TextComment 0x5604681343f0 <col:4, col:36> Text=" Component for iterable entities "
|-VarDecl 0x560467fed308 <line:4281:11, col:33> col:33 ECS_PAIR 'const ecs_id_t':'const unsigned long' extern
| `-FullComment 0x560468134520 <line:4280:4, col:37>
| `-ParagraphComment 0x5604681344f0 <col:4, col:37>
| `-TextComment 0x5604681344c0 <col:4, col:37> Text=" Indicates that the id is a pair. "
|-VarDecl 0x560467fed3a8 <line:4284:11, col:33> col:33 ECS_OVERRIDE 'const ecs_id_t':'const unsigned long' extern
| `-FullComment 0x5604681345f0 <line:4283:4, col:58>
| `-ParagraphComment 0x5604681345c0 <col:4, col:58>
| `-TextComment 0x560468134590 <col:4, col:58> Text=" Automatically override component when it is inherited "
|-VarDecl 0x560467fed448 <line:4287:11, col:33> col:33 ECS_TOGGLE 'const ecs_id_t':'const unsigned long' extern
| `-FullComment 0x5604681346c0 <line:4286:4, col:73>
| `-ParagraphComment 0x560468134690 <col:4, col:73>
| `-TextComment 0x560468134660 <col:4, col:73> Text=" Adds bitset to storage which allows component to be enabled/disabled "
|-VarDecl 0x560467fed4e8 <line:4290:11, col:33> col:33 ECS_AND 'const ecs_id_t':'const unsigned long' extern
| `-FullComment 0x560468134790 <line:4289:4, col:63>
| `-ParagraphComment 0x560468134760 <col:4, col:63>
| `-TextComment 0x560468134730 <col:4, col:63> Text=" Include all components from entity to which AND is applied "
|-VarDecl 0x560467fed5b8 <line:4300:11, <scratch space>:43:1> col:1 FLECS__EEcsComponent 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560467fed630 <flecs.h:4301:11, <scratch space>:44:1> col:1 FLECS__EEcsIdentifier 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560467fed6a8 <flecs.h:4302:11, <scratch space>:45:1> col:1 FLECS__EEcsIterable 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560467fed720 <flecs.h:4303:11, <scratch space>:46:1> col:1 FLECS__EEcsPoly 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560467fed798 <flecs.h:4305:11, col:37> col:37 EcsQuery 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560467fed810 <line:4306:11, col:37> col:37 EcsObserver 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560467fed888 <line:4309:11, col:37> col:37 EcsSystem 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560467fed900 <line:4310:11, <scratch space>:47:1> col:1 FLECS__EEcsTickSource 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560467fed978 <flecs.h:4313:11, <scratch space>:48:1> col:1 FLECS__EEcsPipelineQuery 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560467fed9f0 <flecs.h:4316:11, <scratch space>:49:1> col:1 FLECS__EEcsTimer 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560467feda68 <flecs.h:4317:11, <scratch space>:50:1> col:1 FLECS__EEcsRateFilter 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560467fedb08 <flecs.h:4320:11, col:37> col:37 EcsFlecs 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468134860 <line:4319:4, col:42>
| `-ParagraphComment 0x560468134830 <col:4, col:42>
| `-TextComment 0x560468134800 <col:4, col:42> Text=" Root scope for builtin flecs entities "
|-VarDecl 0x560467fedba8 <line:4323:11, col:37> col:37 EcsFlecsCore 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468134930 <line:4322:4, col:22>
| `-ParagraphComment 0x560468134900 <col:4, col:22>
| `-TextComment 0x5604681348d0 <col:4, col:22> Text=" Core module scope "
|-VarDecl 0x560467fedc48 <line:4326:11, col:37> col:37 EcsWorld 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468134a00 <line:4325:4, col:76>
| `-ParagraphComment 0x5604681349d0 <col:4, col:76>
| `-TextComment 0x5604681349a0 <col:4, col:76> Text=" Entity associated with world (used for "attaching" components to world) "
|-VarDecl 0x560467fedce8 <line:4329:11, col:37> col:37 EcsWildcard 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468134ad0 <line:4328:4, col:64>
| `-ParagraphComment 0x560468134aa0 <col:4, col:64>
| `-TextComment 0x560468134a70 <col:4, col:64> Text=" Wildcard entity ("*"). Matches any id, returns all matches. "
|-VarDecl 0x560467fedd88 <line:4332:11, col:37> col:37 EcsAny 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468134ba0 <line:4331:4, col:62>
| `-ParagraphComment 0x560468134b70 <col:4, col:62>
| `-TextComment 0x560468134b40 <col:4, col:62> Text=" Any entity ("_"). Matches any id, returns only the first. "
|-VarDecl 0x560467fede28 <line:4335:11, col:37> col:37 EcsThis 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468134c70 <line:4334:4, col:45>
| `-ParagraphComment 0x560468134c40 <col:4, col:45>
| `-TextComment 0x560468134c10 <col:4, col:45> Text=" This entity. Default source for queries. "
|-VarDecl 0x560467fedec8 <line:4338:11, col:37> col:37 EcsVariable 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468134d40 <line:4337:4, col:72>
| `-ParagraphComment 0x560468134d10 <col:4, col:72>
| `-TextComment 0x560468134ce0 <col:4, col:72> Text=" Variable entity ("$"). Used in expressions to prefix variable names "
|-VarDecl 0x560468032c28 <line:4344:11, col:37> col:37 EcsTransitive 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468134e60 <line:4340:4, line:4342:40>
| `-ParagraphComment 0x560468134e30 <line:4340:4, line:4342:40>
| |-TextComment 0x560468134db0 <line:4340:4, col:40> Text=" Marks a relationship as transitive. "
| |-TextComment 0x560468134dd0 <line:4341:3, col:13> Text=" Behavior: "
| `-TextComment 0x560468134df0 <line:4342:3, col:40> Text=" if R(X, Y) and R(Y, Z) then R(X, Z)"
|-VarDecl 0x560468032cc8 <line:4350:11, col:37> col:37 EcsReflexive 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468134f80 <line:4346:4, line:4348:20>
| `-ParagraphComment 0x560468134f50 <line:4346:4, line:4348:20>
| |-TextComment 0x560468134ed0 <line:4346:4, col:38> Text=" Marks a relatoinship as reflexive."
| |-TextComment 0x560468134ef0 <line:4347:3, col:13> Text=" Behavior: "
| `-TextComment 0x560468134f10 <line:4348:3, col:20> Text=" R(X, X) == true"
|-VarDecl 0x560468032d68 <line:4359:11, col:37> col:37 EcsFinal 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468135110 <line:4352:4, line:4357:42>
| |-ParagraphComment 0x560468135070 <line:4352:4, line:4354:60>
| | |-TextComment 0x560468134ff0 <line:4352:4, col:79> Text=" Ensures that entity/component cannot be used as target in IsA relationship."
| | |-TextComment 0x560468135010 <line:4353:3, col:77> Text=" Final can improve the performance of rule-based queries, as they will not "
| | `-TextComment 0x560468135030 <line:4354:3, col:60> Text=" attempt to substitute a final component with its subsets."
| `-ParagraphComment 0x5604681350e0 <line:4356:3, line:4357:42>
| |-TextComment 0x560468135090 <line:4356:3, col:13> Text=" Behavior: "
| `-TextComment 0x5604681350b0 <line:4357:3, col:42> Text=" if IsA(X, Y) and Final(Y) throw error"
|-VarDecl 0x560468032e08 <line:4366:11, col:37> col:37 EcsDontInherit 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468135250 <line:4361:4, line:4364:65>
| |-ParagraphComment 0x5604681351b0 <line:4361:4, col:65>
| | `-TextComment 0x560468135180 <col:4, col:65> Text=" Ensures that component is never inherited from an IsA target."
| `-ParagraphComment 0x560468135220 <line:4363:3, line:4364:65>
| |-TextComment 0x5604681351d0 <line:4363:3, col:12> Text=" Behavior:"
| `-TextComment 0x5604681351f0 <line:4364:3, col:65> Text=" if DontInherit(X) and X(B) and IsA(A, B) then X(A) is false."
|-VarDecl 0x560468032ea8 <line:4372:11, col:37> col:37 EcsSymmetric 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468135370 <line:4368:4, line:4370:28>
| `-ParagraphComment 0x560468135340 <line:4368:4, line:4370:28>
| |-TextComment 0x5604681352c0 <line:4368:4, col:38> Text=" Marks relationship as commutative."
| |-TextComment 0x5604681352e0 <line:4369:3, col:12> Text=" Behavior:"
| `-TextComment 0x560468135300 <line:4370:3, col:28> Text=" if R(X, Y) then R(Y, X)"
|-VarDecl 0x560468032f48 <line:4380:11, col:37> col:37 EcsExclusive 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x5604681354d0 <line:4374:4, line:4378:32>
| |-ParagraphComment 0x560468135430 <line:4374:4, line:4375:66>
| | |-TextComment 0x5604681353e0 <line:4374:4, col:81> Text=" Can be added to relationship to indicate that the relationship can only occur"
| | `-TextComment 0x560468135400 <line:4375:3, col:66> Text=" once on an entity. Adding a 2nd instance will replace the 1st. "
| `-ParagraphComment 0x5604681354a0 <line:4377:3, line:4378:32>
| |-TextComment 0x560468135450 <line:4377:3, col:12> Text=" Behavior:"
| `-TextComment 0x560468135470 <line:4378:3, col:32> Text=" R(X, Y) + R(X, Z) = R(X, Z)"
|-VarDecl 0x560468032fe8 <line:4383:11, col:37> col:37 EcsAcyclic 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x5604681355a0 <line:4382:4, col:80>
| `-ParagraphComment 0x560468135570 <col:4, col:80>
| `-TextComment 0x560468135540 <col:4, col:80> Text=" Marks a relationship as acyclic. Acyclic relationships may not form cycles. "
|-VarDecl 0x560468033088 <line:4391:11, col:37> col:37 EcsWith 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468135710 <line:4385:4, line:4389:43>
| |-ParagraphComment 0x560468135640 <line:4385:4, col:76>
| | `-TextComment 0x560468135610 <col:4, col:76> Text=" Ensure that a component always is added together with another component."
| `-ParagraphComment 0x5604681356e0 <line:4387:3, line:4389:43>
| |-TextComment 0x560468135660 <line:4387:3, col:12> Text=" Behavior:"
| |-TextComment 0x560468135680 <line:4388:3, col:37> Text=" If With(R, O) and R(X) then O(X)"
| `-TextComment 0x5604681356a0 <line:4389:3, col:43> Text=" If With(R, O) and R(X, Y) then O(X, Y)"
|-VarDecl 0x560468033128 <line:4399:11, col:37> col:37 EcsOneOf 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468135880 <line:4393:4, line:4397:52>
| |-ParagraphComment 0x5604681357b0 <line:4393:4, col:65>
| | `-TextComment 0x560468135780 <col:4, col:65> Text=" Ensure that relationship target is child of specified entity."
| `-ParagraphComment 0x560468135850 <line:4395:3, line:4397:52>
| |-TextComment 0x5604681357d0 <line:4395:3, col:12> Text=" Behavior:"
| |-TextComment 0x5604681357f0 <line:4396:3, col:55> Text=" If OneOf(R, O) and R(X, Y), Y must be a child of O"
| `-TextComment 0x560468135810 <line:4397:3, col:52> Text=" If OneOf(R) and R(X, Y), Y must be a child of R"
|-VarDecl 0x5604680331c8 <line:4403:11, col:37> col:37 EcsTag 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468135970 <line:4401:4, line:4402:54>
| `-ParagraphComment 0x560468135940 <line:4401:4, line:4402:54>
| |-TextComment 0x5604681358f0 <line:4401:4, col:81> Text=" Can be added to relationship to indicate that it should never hold data, even"
| `-TextComment 0x560468135910 <line:4402:3, col:54> Text=" when it or the relationship target is a component. "
|-VarDecl 0x560468033268 <line:4408:11, col:37> col:37 EcsUnion 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468135a90 <line:4405:4, line:4407:33>
| `-ParagraphComment 0x560468135a60 <line:4405:4, line:4407:33>
| |-TextComment 0x5604681359e0 <line:4405:4, col:84> Text=" Tag to indicate that relationship is stored as union. Union relationships enable"
| |-TextComment 0x560468135a00 <line:4406:3, col:79> Text=" changing the target of a union without switching tables. Union relationships"
| `-TextComment 0x560468135a20 <line:4407:3, col:33> Text=" are also marked as exclusive. "
|-VarDecl 0x560468033308 <line:4411:11, col:37> col:37 EcsName 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468135b60 <line:4410:4, col:36>
| `-ParagraphComment 0x560468135b30 <col:4, col:36>
| `-TextComment 0x560468135b00 <col:4, col:36> Text=" Tag to indicate name identifier "
|-VarDecl 0x5604680333a8 <line:4414:11, col:37> col:37 EcsSymbol 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468135c30 <line:4413:4, col:38>
| `-ParagraphComment 0x560468135c00 <col:4, col:38>
| `-TextComment 0x560468135bd0 <col:4, col:38> Text=" Tag to indicate symbol identifier "
|-VarDecl 0x560468033448 <line:4417:11, col:37> col:37 EcsAlias 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468135d00 <line:4416:4, col:37>
| `-ParagraphComment 0x560468135cd0 <col:4, col:37>
| `-TextComment 0x560468135ca0 <col:4, col:37> Text=" Tag to indicate alias identifier "
|-VarDecl 0x5604680334e8 <line:4420:11, col:37> col:37 EcsChildOf 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468135dd0 <line:4419:4, col:48>
| `-ParagraphComment 0x560468135da0 <col:4, col:48>
| `-TextComment 0x560468135d70 <col:4, col:48> Text=" Used to express parent-child relationships. "
|-VarDecl 0x560468033588 <line:4423:11, col:37> col:37 EcsIsA 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468135ea0 <line:4422:4, col:47>
| `-ParagraphComment 0x560468135e70 <col:4, col:47>
| `-TextComment 0x560468135e40 <col:4, col:47> Text=" Used to express inheritance relationships. "
|-VarDecl 0x560468033628 <line:4426:11, col:37> col:37 EcsDependsOn 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468135f70 <line:4425:4, col:45>
| `-ParagraphComment 0x560468135f40 <col:4, col:45>
| `-TextComment 0x560468135f10 <col:4, col:45> Text=" Used to express dependency relationships "
|-VarDecl 0x5604680336c8 <line:4429:11, col:37> col:37 EcsSlotOf 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468136040 <line:4428:4, col:58>
| `-ParagraphComment 0x560468136010 <col:4, col:58>
| `-TextComment 0x560468135fe0 <col:4, col:58> Text=" Used to express a slot (used with prefab inheritance) "
|-VarDecl 0x560468033768 <line:4432:11, col:37> col:37 EcsModule 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468136110 <line:4431:4, col:33>
| `-ParagraphComment 0x5604681360e0 <col:4, col:33>
| `-TextComment 0x5604681360b0 <col:4, col:33> Text=" Tag added to module entities "
|-VarDecl 0x560468033808 <line:4435:11, col:37> col:37 EcsPrivate 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x5604681361f0 <line:4434:4, col:70>
| `-ParagraphComment 0x5604681361b0 <col:4, col:70>
| `-TextComment 0x560468136180 <col:4, col:70> Text=" Tag to indicate an entity/component/system is private to a module "
|-VarDecl 0x5604680338a8 <line:4439:11, col:37> col:37 EcsPrefab 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x5604681362e0 <line:4437:4, line:4438:69>
| `-ParagraphComment 0x5604681362b0 <line:4437:4, line:4438:69>
| |-TextComment 0x560468136260 <line:4437:4, col:75> Text=" Tag added to prefab entities. Any entity with this tag is automatically"
| `-TextComment 0x560468136280 <line:4438:3, col:69> Text=" ignored by filters/queries, unless EcsPrefab is explicitly added. "
|-VarDecl 0x560468033948 <line:4442:11, col:37> col:37 EcsDisabled 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x5604681363b0 <line:4441:4, col:77>
| `-ParagraphComment 0x560468136380 <col:4, col:77>
| `-TextComment 0x560468136350 <col:4, col:77> Text=" When this tag is added to an entity it is skipped by all queries/filters "
|-VarDecl 0x5604680339e8 <line:4445:11, col:37> col:37 EcsOnAdd 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468136480 <line:4444:4, col:76>
| `-ParagraphComment 0x560468136450 <col:4, col:76>
| `-TextComment 0x560468136420 <col:4, col:76> Text=" Event. Triggers when an id (component, tag, pair) is added to an entity "
|-VarDecl 0x560468033a88 <line:4448:11, col:37> col:37 EcsOnRemove 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468136550 <line:4447:4, col:80>
| `-ParagraphComment 0x560468136520 <col:4, col:80>
| `-TextComment 0x5604681364f0 <col:4, col:80> Text=" Event. Triggers when an id (component, tag, pair) is removed from an entity "
|-VarDecl 0x560468033b28 <line:4451:11, col:37> col:37 EcsOnSet 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468136620 <line:4450:4, col:58>
| `-ParagraphComment 0x5604681365f0 <col:4, col:58>
| `-TextComment 0x5604681365c0 <col:4, col:58> Text=" Event. Triggers when a component is set for an entity "
|-VarDecl 0x560468033c00 <line:4454:11, col:37> col:37 EcsUnSet 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x5604681366f0 <line:4453:4, col:60>
| `-ParagraphComment 0x5604681366c0 <col:4, col:60>
| `-TextComment 0x560468136690 <col:4, col:60> Text=" Event. Triggers when a component is unset for an entity "
|-VarDecl 0x560468033ca8 <line:4457:11, col:37> col:37 EcsMonitor 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x5604681367c0 <line:4456:4, col:79>
| `-ParagraphComment 0x560468136790 <col:4, col:79>
| `-TextComment 0x560468136760 <col:4, col:79> Text=" Event. Exactly-once observer for when an entity matches/unmatches a filter "
|-VarDecl 0x560468033d48 <line:4463:11, col:37> col:37 EcsOnDelete 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x5604681368e0 <line:4459:4, line:4461:94>
| `-ParagraphComment 0x5604681368b0 <line:4459:4, line:4461:94>
| |-TextComment 0x560468136830 <line:4459:4, col:46> Text=" Event. Triggers when an entity is deleted."
| |-TextComment 0x560468136850 <line:4460:3, col:65> Text=" Also used as relationship for defining cleanup behavior, see: "
| `-TextComment 0x560468136870 <line:4461:3, col:94> Text=" https://github.com/SanderMertens/flecs/blob/master/docs/Relationships.md#cleanup-properties"
|-VarDecl 0x560468033e48 <line:4472:11, col:37> col:37 EcsOnTableEmpty 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x5604681369b0 <line:4471:4, col:75>
| `-ParagraphComment 0x560468136980 <col:4, col:75>
| `-TextComment 0x560468136950 <col:4, col:75> Text=" Event. Triggers when a table becomes empty (doesn't emit on creation). "
|-VarDecl 0x560468033ee8 <line:4475:11, col:37> col:37 EcsOnTableFill 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468136a80 <line:4474:4, col:52>
| `-ParagraphComment 0x560468136a50 <col:4, col:52>
| `-TextComment 0x560468136a20 <col:4, col:52> Text=" Event. Triggers when a table becomes non-empty. "
|-VarDecl 0x560468033f88 <line:4481:11, col:37> col:37 EcsOnDeleteTarget 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468136ba0 <line:4477:4, line:4479:94>
| `-ParagraphComment 0x560468136b70 <line:4477:4, line:4479:94>
| |-TextComment 0x560468136af0 <line:4477:4, col:79> Text=" Relationship used to define what should happen when a target entity (second"
| |-TextComment 0x560468136b10 <line:4478:3, col:51> Text=" element of a pair) is deleted. For details see: "
| `-TextComment 0x560468136b30 <line:4479:3, col:94> Text=" https://github.com/SanderMertens/flecs/blob/master/docs/Relationships.md#cleanup-properties"
|-VarDecl 0x560468034028 <line:4485:11, col:37> col:37 EcsRemove 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468136c90 <line:4483:4, line:4484:22>
| `-ParagraphComment 0x560468136c60 <line:4483:4, line:4484:22>
| |-TextComment 0x560468136c10 <line:4483:4, col:77> Text=" Remove cleanup policy. Must be used as target in pair with EcsOnDelete or"
| `-TextComment 0x560468136c30 <line:4484:3, col:22> Text=" EcsOnDeleteTarget. "
|-VarDecl 0x5604680340c8 <line:4489:11, col:37> col:37 EcsDelete 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468136d80 <line:4487:4, line:4488:22>
| `-ParagraphComment 0x560468136d50 <line:4487:4, line:4488:22>
| |-TextComment 0x560468136d00 <line:4487:4, col:77> Text=" Delete cleanup policy. Must be used as target in pair with EcsOnDelete or"
| `-TextComment 0x560468136d20 <line:4488:3, col:22> Text=" EcsOnDeleteTarget. "
|-VarDecl 0x560468034168 <line:4493:11, col:37> col:37 EcsPanic 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468136e70 <line:4491:4, line:4492:22>
| `-ParagraphComment 0x560468136e40 <line:4491:4, line:4492:22>
| |-TextComment 0x560468136df0 <line:4491:4, col:76> Text=" Panic cleanup policy. Must be used as target in pair with EcsOnDelete or"
| `-TextComment 0x560468136e10 <line:4492:3, col:22> Text=" EcsOnDeleteTarget. "
|-VarDecl 0x560468034208 <line:4500:11, col:37> col:37 EcsDefaultChildComponent 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x560468136fe0 <line:4495:4, line:4499:66>
| `-ParagraphComment 0x560468136fb0 <line:4495:4, line:4499:66>
| |-TextComment 0x560468136ee0 <line:4495:4, col:77> Text=" Used like (EcsDefaultChildComponent, Component). When added to an entity,"
| |-TextComment 0x560468136f00 <line:4496:3, col:76> Text=" this informs serialization formats which component to use when a value is"
| |-TextComment 0x560468136f20 <line:4497:3, col:78> Text=" assigned to an entity without specifying the component. This is intended as"
| |-TextComment 0x560468136f40 <line:4498:3, col:73> Text=" a hint, serialization formats are not required to use it. Adding this "
| `-TextComment 0x560468136f60 <line:4499:3, col:66> Text=" component does not change the behavior of core ECS operations. "
|-VarDecl 0x5604680342a8 <line:4503:11, col:37> col:37 EcsEmpty 'const ecs_entity_t':'const unsigned long' extern
| `-FullComment 0x5604681370b0 <line:4502:4, col:40>
| `-ParagraphComment 0x560468137080 <col:4, col:40>
| `-TextComment 0x560468137050 <col:4, col:40> Text=" Tag used to indicate query is empty "
|-VarDecl 0x560468034320 <line:4506:11, <scratch space>:51:1> col:1 FLECS__EEcsPipeline 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560468034398 <flecs.h:4507:11, col:37> col:37 EcsOnStart 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560468034410 <line:4508:11, col:37> col:37 EcsPreFrame 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560468034488 <line:4509:11, col:37> col:37 EcsOnLoad 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560468034500 <line:4510:11, col:37> col:37 EcsPostLoad 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560468034578 <line:4511:11, col:37> col:37 EcsPreUpdate 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680345f0 <line:4512:11, col:37> col:37 EcsOnUpdate 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560468034668 <line:4513:11, col:37> col:37 EcsOnValidate 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680346e0 <line:4514:11, col:37> col:37 EcsPostUpdate 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560468034758 <line:4515:11, col:37> col:37 EcsPreStore 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680347d0 <line:4516:11, col:37> col:37 EcsOnStore 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x560468034848 <line:4517:11, col:37> col:37 EcsPostFrame 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680348c0 <line:4518:11, col:37> col:37 EcsPhase 'const ecs_entity_t':'const unsigned long' extern
|-FunctionDecl 0x560468036060 <line:4556:1, col:27> col:14 ecs_init 'ecs_world_t *(void)'
| `-FullComment 0x560468137320 <line:4546:4, line:4553:22>
| |-ParagraphComment 0x5604681371c0 <line:4546:4, line:4549:60>
| | |-TextComment 0x560468137120 <line:4546:4, col:23> Text=" Create a new world."
| | |-TextComment 0x560468137140 <line:4547:3, col:80> Text=" A world manages all the ECS data and supporting infrastructure. Applications "
| | |-TextComment 0x560468137160 <line:4548:3, col:76> Text=" must have at least one world. Entities, component and system handles are "
| | `-TextComment 0x560468137180 <line:4549:3, col:60> Text=" local to a world and should not be shared between worlds."
| |-ParagraphComment 0x560468137210 <line:4551:3, col:67>
| | `-TextComment 0x5604681371e0 <col:3, col:67> Text=" This operation creates a world with all builtin modules loaded. "
| |-ParagraphComment 0x560468137260 <line:4553:3>
| | `-TextComment 0x560468137230 <col:3> Text=" "
| `-BlockCommandComment 0x560468137280 <col:4, col:22> Name="return"
| `-ParagraphComment 0x5604681372e0 <col:11, col:22>
| `-TextComment 0x5604681372b0 <col:11, col:22> Text=" A new world"
|-FunctionDecl 0x5604680361c0 <line:4563:1, col:27> col:14 ecs_mini 'ecs_world_t *(void)'
| `-FullComment 0x5604681374d0 <line:4558:4, line:4560:27>
| |-ParagraphComment 0x5604681373c0 <line:4558:4, col:61>
| | `-TextComment 0x560468137390 <col:4, col:61> Text=" Same as ecs_init, but with minimal set of modules loaded."
| |-ParagraphComment 0x560468137410 <line:4560:3>
| | `-TextComment 0x5604681373e0 <col:3> Text=" "
| `-BlockCommandComment 0x560468137430 <col:4, col:27> Name="return"
| `-ParagraphComment 0x560468137490 <col:11, col:27>
| `-TextComment 0x560468137460 <col:11, col:27> Text=" A new tiny world"
|-FunctionDecl 0x5604680364a8 <line:4573:1, line:4575:17> line:4573:14 ecs_init_w_args 'ecs_world_t *(int, char **)'
| |-ParmVarDecl 0x5604680362a0 <line:4574:5, col:9> col:9 argc 'int'
| |-ParmVarDecl 0x560468036390 <line:4575:5, col:16> col:11 argv 'char **':'char **'
| `-FullComment 0x5604681376f0 <line:4565:4, line:4570:22>
| |-ParagraphComment 0x5604681375e0 <line:4565:4, line:4568:26>
| | |-TextComment 0x560468137540 <line:4565:4, col:38> Text=" Create a new world with arguments."
| | |-TextComment 0x560468137560 <line:4566:3, col:79> Text=" Same as ecs_init, but allows passing in command line arguments. These can be"
| | |-TextComment 0x560468137580 <line:4567:3, col:79> Text=" used to dynamically enable flecs features to an application. Currently these"
| | `-TextComment 0x5604681375a0 <line:4568:3, col:26> Text=" arguments are not used."
| |-ParagraphComment 0x560468137630 <line:4570:3>
| | `-TextComment 0x560468137600 <col:3> Text=" "
| `-BlockCommandComment 0x560468137650 <col:4, col:22> Name="return"
| `-ParagraphComment 0x5604681376b0 <col:11, col:22>
| `-TextComment 0x560468137680 <col:11, col:22> Text=" A new world"
|-FunctionDecl 0x560468036690 <line:4584:1, line:4585:23> line:4584:5 ecs_fini 'int (ecs_world_t *)'
| |-ParmVarDecl 0x560468036598 <line:4585:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x560468137990 <line:4577:4, line:4581:50>
| |-ParagraphComment 0x5604681377b0 <line:4577:4, line:4578:64>
| | |-TextComment 0x560468137760 <line:4577:4, col:19> Text=" Delete a world."
| | `-TextComment 0x560468137780 <line:4578:3, col:64> Text=" This operation deletes the world, and everything it contains."
| |-ParagraphComment 0x560468137800 <line:4580:3>
| | `-TextComment 0x5604681377d0 <col:3> Text=" "
| |-ParamCommandComment 0x560468137820 <col:4, line:4581:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681378d0 <line:4580:16, line:4581:3>
| | |-TextComment 0x560468137880 <line:4580:16, col:36> Text=" The world to delete."
| | `-TextComment 0x5604681378a0 <line:4581:3> Text=" "
| `-BlockCommandComment 0x5604681378f0 <col:4, col:50> Name="return"
| `-ParagraphComment 0x560468137950 <col:11, col:50>
| `-TextComment 0x560468137920 <col:11, col:50> Text=" Zero if successful, non-zero if failed."
|-FunctionDecl 0x560468036868 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:4594:29> line:4593:6 ecs_is_fini 'bool (const ecs_world_t *)'
| |-ParmVarDecl 0x560468036778 <line:4594:5, col:24> col:24 world 'const ecs_world_t *'
| `-FullComment 0x560468137c10 <line:4587:4, line:4590:47>
| |-ParagraphComment 0x560468137a30 <line:4587:4, col:47>
| | `-TextComment 0x560468137a00 <col:4, col:47> Text=" Returns whether the world is being deleted."
| |-ParagraphComment 0x560468137a80 <line:4589:3>
| | `-TextComment 0x560468137a50 <col:3> Text=" "
| |-ParamCommandComment 0x560468137aa0 <col:4, line:4590:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468137b50 <line:4589:16, line:4590:3>
| | |-TextComment 0x560468137b00 <line:4589:16, col:26> Text=" The world."
| | `-TextComment 0x560468137b20 <line:4590:3> Text=" "
| `-BlockCommandComment 0x560468137b70 <col:4, col:47> Name="return"
| `-ParagraphComment 0x560468137bd0 <col:11, col:47>
| `-TextComment 0x560468137ba0 <col:11, col:47> Text=" True if being deleted, false if not."
|-FunctionDecl 0x560468036b88 <line:4604:1, line:4607:14> line:4604:6 ecs_atfini 'void (ecs_world_t *, ecs_fini_action_t, void *)'
| |-ParmVarDecl 0x560468036948 <line:4605:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680369e0 <line:4606:5, col:23> col:23 action 'ecs_fini_action_t':'void (*)(ecs_world_t *, void *)'
| |-ParmVarDecl 0x560468036a60 <line:4607:5, col:11> col:11 ctx 'void *'
| `-FullComment 0x560468137ff0 <line:4596:4, line:4602:47>
| |-ParagraphComment 0x560468137d00 <line:4596:4, line:4598:20>
| | |-TextComment 0x560468137c80 <line:4596:4, col:59> Text=" Register action to be executed when world is destroyed."
| | |-TextComment 0x560468137ca0 <line:4597:3, col:75> Text=" Fini actions are typically used when a module needs to clean up before a"
| | `-TextComment 0x560468137cc0 <line:4598:3, col:20> Text=" world shuts down."
| |-ParagraphComment 0x560468137d50 <line:4600:3>
| | `-TextComment 0x560468137d20 <col:3> Text=" "
| |-ParamCommandComment 0x560468137d70 <col:4, line:4601:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468137e20 <line:4600:16, line:4601:3>
| | |-TextComment 0x560468137dd0 <line:4600:16, col:26> Text=" The world."
| | `-TextComment 0x560468137df0 <line:4601:3> Text=" "
| |-ParamCommandComment 0x560468137e40 <col:4, line:4602:3> [in] implicitly Param="action" ParamIndex=1
| | `-ParagraphComment 0x560468137ef0 <line:4601:17, line:4602:3>
| | |-TextComment 0x560468137ea0 <line:4601:17, col:41> Text=" The function to execute."
| | `-TextComment 0x560468137ec0 <line:4602:3> Text=" "
| `-ParamCommandComment 0x560468137f10 <col:4, col:47> [in] implicitly Param="ctx" ParamIndex=2
| `-ParagraphComment 0x560468137fa0 <col:14, col:47>
| `-TextComment 0x560468137f70 <col:14, col:47> Text=" Userdata to pass to the function "
|-FunctionDecl 0x560468036e70 <line:37:21, line:4637:27> line:4635:13 ecs_frame_begin 'float (ecs_world_t *, float)'
| |-ParmVarDecl 0x560468036cd8 <line:4636:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468036d58 <line:37:21, line:4637:17> col:17 delta_time 'float'
| `-FullComment 0x560468138540 <line:4616:4, line:4632:71>
| |-ParagraphComment 0x560468138100 <line:4616:4, line:4619:80>
| | |-TextComment 0x560468138060 <line:4616:4, col:17> Text=" Begin frame. "
| | |-TextComment 0x560468138080 <line:4617:3, col:77> Text=" When an application does not use ecs_progress to control the main loop, it"
| | |-TextComment 0x5604681380a0 <line:4618:3, col:80> Text=" can still use Flecs features such as FPS limiting and time measurements. This"
| | `-TextComment 0x5604681380c0 <line:4619:3, col:80> Text=" operation needs to be invoked whenever a new frame is about to get processed."
| |-ParagraphComment 0x560468138150 <line:4621:3, col:69>
| | `-TextComment 0x560468138120 <col:3, col:69> Text=" Calls to ecs_frame_begin must always be followed by ecs_frame_end."
| |-ParagraphComment 0x560468138220 <line:4623:3, line:4626:64>
| | |-TextComment 0x560468138170 <line:4623:3, col:73> Text=" The function accepts a delta_time parameter, which will get passed to "
| | |-TextComment 0x560468138190 <line:4624:3, col:78> Text=" systems. This value is also used to compute the amount of time the function"
| | |-TextComment 0x5604681381b0 <line:4625:3, col:78> Text=" needs to sleep to ensure it does not exceed the target_fps, when it is set."
| | `-TextComment 0x5604681381d0 <line:4626:3, col:64> Text=" When 0 is provided for delta_time, the time will be measured."
| |-ParagraphComment 0x560468138270 <line:4628:3, col:57>
| | `-TextComment 0x560468138240 <col:3, col:57> Text=" This function should only be ran from the main thread."
| |-ParagraphComment 0x5604681382c0 <line:4630:3>
| | `-TextComment 0x560468138290 <col:3> Text=" "
| |-ParamCommandComment 0x5604681382e0 <col:4, line:4631:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468138390 <line:4630:16, line:4631:3>
| | |-TextComment 0x560468138340 <line:4630:16, col:26> Text=" The world."
| | `-TextComment 0x560468138360 <line:4631:3> Text=" "
| |-ParamCommandComment 0x5604681383b0 <col:4, line:4632:3> [in] implicitly Param="delta_time" ParamIndex=1
| | `-ParagraphComment 0x560468138460 <line:4631:21, line:4632:3>
| | |-TextComment 0x560468138410 <line:4631:21, col:55> Text=" Time elapsed since the last frame."
| | `-TextComment 0x560468138430 <line:4632:3> Text=" "
| `-BlockCommandComment 0x560468138480 <col:4, col:71> Name="return"
| `-ParagraphComment 0x5604681384e0 <col:11, col:71>
| `-TextComment 0x5604681384b0 <col:11, col:71> Text=" The provided delta_time, or measured time if 0 was provided."
|-FunctionDecl 0x5604680372b0 <line:4646:1, line:4647:23> line:4646:6 ecs_frame_end 'void (ecs_world_t *)'
| |-ParmVarDecl 0x560468036f58 <line:4647:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x560468138770 <line:4639:4, line:4643:26>
| |-ParagraphComment 0x560468138630 <line:4639:4, line:4641:19>
| | |-TextComment 0x5604681385b0 <line:4639:4, col:15> Text=" End frame. "
| | |-TextComment 0x5604681385d0 <line:4640:3, col:74> Text=" This operation must be called at the end of the frame, and always after"
| | `-TextComment 0x5604681385f0 <line:4641:3, col:19> Text=" ecs_frame_begin."
| |-ParagraphComment 0x560468138680 <line:4643:3>
| | `-TextComment 0x560468138650 <col:3> Text=" "
| `-ParamCommandComment 0x5604681386a0 <col:4, col:26> [in] implicitly Param="world" ParamIndex=0
| `-ParagraphComment 0x560468138730 <col:16, col:26>
| `-TextComment 0x560468138700 <col:16, col:26> Text=" The world."
|-FunctionDecl 0x560468037530 <line:4657:1, line:4660:14> line:4657:6 ecs_run_post_frame 'void (ecs_world_t *, ecs_fini_action_t, void *)'
| |-ParmVarDecl 0x560468037398 <line:4658:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468037410 <line:4659:5, col:23> col:23 action 'ecs_fini_action_t':'void (*)(ecs_world_t *, void *)'
| |-ParmVarDecl 0x560468037490 <line:4660:5, col:11> col:11 ctx 'void *'
| `-FullComment 0x560468138b50 <line:4649:4, line:4655:47>
| |-ParagraphComment 0x560468138860 <line:4649:4, line:4651:68>
| | |-TextComment 0x5604681387e0 <line:4649:4, col:52> Text=" Register action to be executed once after frame."
| | |-TextComment 0x560468138800 <line:4650:3, col:78> Text=" Post frame actions are typically used for calling operations that cannot be"
| | `-TextComment 0x560468138820 <line:4651:3, col:68> Text=" invoked during iteration, such as changing the number of threads."
| |-ParagraphComment 0x5604681388b0 <line:4653:3>
| | `-TextComment 0x560468138880 <col:3> Text=" "
| |-ParamCommandComment 0x5604681388d0 <col:4, line:4654:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468138980 <line:4653:16, line:4654:3>
| | |-TextComment 0x560468138930 <line:4653:16, col:26> Text=" The world."
| | `-TextComment 0x560468138950 <line:4654:3> Text=" "
| |-ParamCommandComment 0x5604681389a0 <col:4, line:4655:3> [in] implicitly Param="action" ParamIndex=1
| | `-ParagraphComment 0x560468138a50 <line:4654:17, line:4655:3>
| | |-TextComment 0x560468138a00 <line:4654:17, col:41> Text=" The function to execute."
| | `-TextComment 0x560468138a20 <line:4655:3> Text=" "
| `-ParamCommandComment 0x560468138a70 <col:4, col:47> [in] implicitly Param="ctx" ParamIndex=2
| `-ParagraphComment 0x560468138b00 <col:14, col:47>
| `-TextComment 0x560468138ad0 <col:14, col:47> Text=" Userdata to pass to the function "
|-FunctionDecl 0x5604680376b8 <line:4669:1, line:4670:23> line:4669:6 ecs_quit 'void (ecs_world_t *)'
| |-ParmVarDecl 0x560468037628 <line:4670:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x560468138d80 <line:4662:4, line:4666:34>
| |-ParagraphComment 0x560468138c40 <line:4662:4, line:4664:32>
| | |-TextComment 0x560468138bc0 <line:4662:4, col:15> Text=" Signal exit"
| | |-TextComment 0x560468138be0 <line:4663:3, col:73> Text=" This operation signals that the application should quit. It will cause"
| | `-TextComment 0x560468138c00 <line:4664:3, col:32> Text=" ecs_progress to return false."
| |-ParagraphComment 0x560468138c90 <line:4666:3>
| | `-TextComment 0x560468138c60 <col:3> Text=" "
| `-ParamCommandComment 0x560468138cb0 <col:4, col:34> [in] implicitly Param="world" ParamIndex=0
| `-ParagraphComment 0x560468138d40 <col:16, col:34>
| `-TextComment 0x560468138d10 <col:16, col:34> Text=" The world to quit."
|-FunctionDecl 0x560468037828 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:4678:29> line:4677:6 ecs_should_quit 'bool (const ecs_world_t *)'
| |-ParmVarDecl 0x560468037798 <line:4678:5, col:24> col:24 world 'const ecs_world_t *'
| `-FullComment 0x560468138f60 <line:4672:4, line:4674:26>
| |-ParagraphComment 0x560468138e20 <line:4672:4, col:44>
| | `-TextComment 0x560468138df0 <col:4, col:44> Text=" Return whether a quit has been signaled."
| |-ParagraphComment 0x560468138e70 <line:4674:3>
| | `-TextComment 0x560468138e40 <col:3> Text=" "
| `-ParamCommandComment 0x560468138e90 <col:4, col:26> [in] implicitly Param="world" ParamIndex=0
| `-ParagraphComment 0x560468138f20 <col:16, col:26>
| `-TextComment 0x560468138ef0 <col:16, col:26> Text=" The world."
|-FunctionDecl 0x560468037a98 <line:4691:11, line:4693:16> line:4691:16 ecs_measure_frame_time 'void (ecs_world_t *, bool)'
| |-ParmVarDecl 0x560468037908 <line:4692:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468037980 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:4693:10> col:10 enable 'bool'
| `-FullComment 0x560468139310 <line:4680:4, line:4689:67>
| |-ParagraphComment 0x560468139050 <line:4680:4, line:4682:61>
| | |-TextComment 0x560468138fd0 <line:4680:4, col:24> Text=" Measure frame time. "
| | |-TextComment 0x560468138ff0 <line:4681:3, col:80> Text=" Frame time measurements measure the total time passed in a single frame, and "
| | `-TextComment 0x560468139010 <line:4682:3, col:61> Text=" how much of that time was spent on systems and on merging."
| |-ParagraphComment 0x5604681390f0 <line:4684:3, line:4686:11>
| | |-TextComment 0x560468139070 <line:4684:3, col:80> Text=" Frame time measurements add a small constant-time overhead to an application."
| | |-TextComment 0x560468139090 <line:4685:3, col:80> Text=" When an application sets a target FPS, frame time measurements are enabled by"
| | `-TextComment 0x5604681390b0 <line:4686:3, col:11> Text=" default."
| |-ParagraphComment 0x560468139140 <line:4688:3>
| | `-TextComment 0x560468139110 <col:3> Text=" "
| |-ParamCommandComment 0x560468139160 <col:4, line:4689:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468139210 <line:4688:16, line:4689:3>
| | |-TextComment 0x5604681391c0 <line:4688:16, col:26> Text=" The world."
| | `-TextComment 0x5604681391e0 <line:4689:3> Text=" "
| `-ParamCommandComment 0x560468139230 <col:4, col:67> [in] implicitly Param="enable" ParamIndex=1
| `-ParagraphComment 0x5604681392c0 <col:17, col:67>
| `-TextComment 0x560468139290 <col:17, col:67> Text=" Whether to enable or disable frame time measuring."
|-FunctionDecl 0x560468037c98 <line:4705:11, line:4707:16> line:4705:16 ecs_measure_system_time 'void (ecs_world_t *, bool)'
| |-ParmVarDecl 0x560468037b88 <line:4706:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468037c00 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:4707:10> col:10 enable 'bool'
| `-FullComment 0x560468139690 <line:4695:4, line:4703:68>
| |-ParagraphComment 0x5604681393d0 <line:4695:4, line:4696:66>
| | |-TextComment 0x560468139380 <line:4695:4, col:25> Text=" Measure system time. "
| | `-TextComment 0x5604681393a0 <line:4696:3, col:66> Text=" System time measurements measure the time spent in each system."
| |-ParagraphComment 0x560468139470 <line:4698:3, line:4700:79>
| | |-TextComment 0x5604681393f0 <line:4698:3, col:72> Text=" System time measurements add overhead to every system invocation and "
| | |-TextComment 0x560468139410 <line:4699:3, col:75> Text=" therefore have a small but measurable impact on application performance."
| | `-TextComment 0x560468139430 <line:4700:3, col:79> Text=" System time measurements must be enabled before obtaining system statistics."
| |-ParagraphComment 0x5604681394c0 <line:4702:3>
| | `-TextComment 0x560468139490 <col:3> Text=" "
| |-ParamCommandComment 0x5604681394e0 <col:4, line:4703:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468139590 <line:4702:16, line:4703:3>
| | |-TextComment 0x560468139540 <line:4702:16, col:26> Text=" The world."
| | `-TextComment 0x560468139560 <line:4703:3> Text=" "
| `-ParamCommandComment 0x5604681395b0 <col:4, col:68> [in] implicitly Param="enable" ParamIndex=1
| `-ParagraphComment 0x560468139640 <col:17, col:68>
| `-TextComment 0x560468139610 <col:17, col:68> Text=" Whether to enable or disable system time measuring."
|-FunctionDecl 0x560468037f18 <line:4725:1, line:4727:20> line:4725:6 ecs_set_target_fps 'void (ecs_world_t *, float)'
| |-ParmVarDecl 0x560468037d88 <line:4726:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468037e08 <line:37:21, line:4727:17> col:17 fps 'float'
| `-FullComment 0x560468139ad0 <line:4709:4, line:4722:29>
| |-ParagraphComment 0x5604681397a0 <line:4709:4, line:4712:76>
| | |-TextComment 0x560468139700 <line:4709:4, col:55> Text=" Set target frames per second (FPS) for application."
| | |-TextComment 0x560468139720 <line:4710:3, col:78> Text=" Setting the target FPS ensures that ecs_progress is not invoked faster than"
| | |-TextComment 0x560468139740 <line:4711:3, col:77> Text=" the specified FPS. When enabled, ecs_progress tracks the time passed since"
| | `-TextComment 0x560468139760 <line:4712:3, col:76> Text=" the last invocation, and sleeps the remaining time of the frame (if any)."
| |-ParagraphComment 0x560468139810 <line:4714:3, line:4715:71>
| | |-TextComment 0x5604681397c0 <line:4714:3, col:76> Text=" This feature ensures systems are ran at a consistent interval, as well as"
| | `-TextComment 0x5604681397e0 <line:4715:3, col:71> Text=" conserving CPU time by not running systems more often than required."
| |-ParagraphComment 0x5604681398b0 <line:4717:3, line:4719:11>
| | |-TextComment 0x560468139830 <line:4717:3, col:78> Text=" Note that ecs_progress only sleeps if there is time left in the frame. Both"
| | |-TextComment 0x560468139850 <line:4718:3, col:68> Text=" time spent in flecs as time spent outside of flecs are taken into"
| | `-TextComment 0x560468139870 <line:4719:3, col:11> Text=" account."
| |-ParagraphComment 0x560468139900 <line:4721:3>
| | `-TextComment 0x5604681398d0 <col:3> Text=" "
| |-ParamCommandComment 0x560468139920 <col:4, line:4722:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681399d0 <line:4721:16, line:4722:3>
| | |-TextComment 0x560468139980 <line:4721:16, col:26> Text=" The world."
| | `-TextComment 0x5604681399a0 <line:4722:3> Text=" "
| `-ParamCommandComment 0x5604681399f0 <col:4, col:29> [in] implicitly Param="fps" ParamIndex=1
| `-ParagraphComment 0x560468139a80 <col:14, col:29>
| `-TextComment 0x560468139a50 <col:14, col:29> Text=" The target FPS."
|-FunctionDecl 0x560468038158 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:4767:23> line:4766:6 ecs_readonly_begin 'bool (ecs_world_t *)'
| |-ParmVarDecl 0x560468038068 <line:4767:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x56046813a120 <line:4736:4, line:4763:45>
| |-ParagraphComment 0x560468139be0 <line:4736:4, line:4739:42>
| | |-TextComment 0x560468139b40 <line:4736:4, col:24> Text=" Begin readonly mode."
| | |-TextComment 0x560468139b60 <line:4737:3, col:76> Text=" Readonly mode guarantees that no mutations will occur on the world, which"
| | |-TextComment 0x560468139b80 <line:4738:3, col:78> Text=" makes the world safe to access from multiple threads. While the world is in"
| | `-TextComment 0x560468139ba0 <line:4739:3, col:42> Text=" readonly mode, operations are deferred."
| |-ParagraphComment 0x560468139ca0 <line:4741:3, line:4744:55>
| | |-TextComment 0x560468139c00 <line:4741:3, col:80> Text=" Note that while similar to ecs_defer_begin, deferring only does not guarantee"
| | |-TextComment 0x560468139c20 <line:4742:3, col:78> Text=" the world is not mutated. Operations that are not deferred (like creating a"
| | |-TextComment 0x560468139c40 <line:4743:3, col:79> Text=" query) update data structures on the world and are allowed when deferring is"
| | `-TextComment 0x560468139c60 <line:4744:3, col:55> Text=" enabled, but not when the world is in readonly mode."
| |-ParagraphComment 0x560468139cf0 <line:4746:3, col:74>
| | `-TextComment 0x560468139cc0 <col:3, col:74> Text=" A call to ecs_readonly_begin must be followed up with ecs_readonly_end."
| |-ParagraphComment 0x560468139d60 <line:4748:3, line:4749:16>
| | |-TextComment 0x560468139d10 <line:4748:3, col:80> Text=" The ecs_progress() function automatically enables readonly mode while systems"
| | `-TextComment 0x560468139d30 <line:4749:3, col:16> Text=" are executed."
| |-ParagraphComment 0x560468139e00 <line:4751:3, line:4753:74>
| | |-TextComment 0x560468139d80 <line:4751:3, col:79> Text=" When a world has more than one stage, the specific stage must be provided to"
| | |-TextComment 0x560468139da0 <line:4752:3, col:76> Text=" mutating ECS operations. Failing to do so will throw a readonly assert. A"
| | `-TextComment 0x560468139dc0 <line:4753:3, col:74> Text=" world typically has more than one stage when using threads. An example:"
| |-ParagraphComment 0x560468139e70 <line:4755:3, line:4756:48>
| | |-TextComment 0x560468139e20 <line:4755:3, col:33> Text=" ecs_set_stage_count(world, 2);"
| | `-TextComment 0x560468139e40 <line:4756:3, col:48> Text=" ecs_stage_t *stage = ecs_get_stage(world, 1);"
| |-ParagraphComment 0x560468139f10 <line:4758:3, line:4760:32>
| | |-TextComment 0x560468139e90 <line:4758:3, col:29> Text=" ecs_readonly_begin(world);"
| | |-TextComment 0x560468139eb0 <line:4759:3, col:45> Text=" ecs_add(world, e, Tag); // readonly assert"
| | `-TextComment 0x560468139ed0 <line:4760:3, col:32> Text=" ecs_add(stage, e, Tag); // OK"
| |-ParagraphComment 0x560468139f60 <line:4762:3>
| | `-TextComment 0x560468139f30 <col:3> Text=" "
| |-ParamCommandComment 0x560468139f80 <col:4, line:4763:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813a030 <line:4762:16, line:4763:3>
| | |-TextComment 0x560468139fe0 <line:4762:16, col:25> Text=" The world"
| | `-TextComment 0x56046813a000 <line:4763:3> Text=" "
| `-BlockCommandComment 0x56046813a050 <col:4, col:45> Name="return"
| `-ParagraphComment 0x56046813a0b0 <col:11, col:45>
| `-TextComment 0x56046813a080 <col:11, col:45> Text=" Whether world is in readonly mode."
|-FunctionDecl 0x560468038568 <line:4777:1, line:4778:23> line:4777:6 ecs_readonly_end 'void (ecs_world_t *)'
| |-ParmVarDecl 0x560468038238 <line:4778:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x56046813a390 <line:4769:4, line:4774:25>
| |-ParagraphComment 0x56046813a250 <line:4769:4, line:4772:33>
| | |-TextComment 0x56046813a190 <line:4769:4, col:22> Text=" End readonly mode."
| | |-TextComment 0x56046813a1b0 <line:4770:3, col:63> Text=" This operation ends readonly mode, and must be called after "
| | |-TextComment 0x56046813a1d0 <line:4771:3, col:75> Text=" ecs_readonly_begin. Operations that were deferred while the world was in"
| | `-TextComment 0x56046813a210 <line:4772:3, col:33> Text=" readonly mode will be flushed."
| |-ParagraphComment 0x56046813a2a0 <line:4774:3>
| | `-TextComment 0x56046813a270 <col:3> Text=" "
| `-ParamCommandComment 0x56046813a2c0 <col:4, col:25> [in] implicitly Param="world" ParamIndex=0
| `-ParagraphComment 0x56046813a350 <col:16, col:25>
| `-TextComment 0x56046813a320 <col:16, col:25> Text=" The world"
|-FunctionDecl 0x5604680386d8 <line:4791:1, line:4792:23> line:4791:6 ecs_merge 'void (ecs_world_t *)'
| |-ParmVarDecl 0x560468038648 <line:4792:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x56046813a660 <line:4780:4, line:4788:26>
| |-ParagraphComment 0x56046813a4d0 <line:4780:4, line:4784:53>
| | |-TextComment 0x56046813a400 <line:4780:4, col:25> Text=" Merge world or stage."
| | |-TextComment 0x56046813a420 <line:4781:3, col:67> Text=" When automatic merging is disabled, an application can call this"
| | |-TextComment 0x56046813a440 <line:4782:3, col:76> Text=" operation on either an individual stage, or on the world which will merge"
| | |-TextComment 0x56046813a460 <line:4783:3, col:76> Text=" all stages. This operation may only be called when staging is not enabled"
| | `-TextComment 0x56046813a480 <line:4784:3, col:53> Text=" (either after progress() or after readonly_end())."
| |-ParagraphComment 0x56046813a520 <line:4786:3, col:68>
| | `-TextComment 0x56046813a4f0 <col:3, col:68> Text=" This operation may be called on an already merged stage or world."
| |-ParagraphComment 0x56046813a570 <line:4788:3>
| | `-TextComment 0x56046813a540 <col:3> Text=" "
| `-ParamCommandComment 0x56046813a590 <col:4, col:26> [in] implicitly Param="world" ParamIndex=0
| `-ParagraphComment 0x56046813a620 <col:16, col:26>
| `-TextComment 0x56046813a5f0 <col:16, col:26> Text=" The world."
|-FunctionDecl 0x560468038848 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:4805:23> line:4804:6 ecs_defer_begin 'bool (ecs_world_t *)'
| |-ParmVarDecl 0x5604680387b8 <line:4805:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x56046813a990 <line:4794:4, line:4801:73>
| |-ParagraphComment 0x56046813a750 <line:4794:4, line:4796:77>
| | |-TextComment 0x56046813a6d0 <line:4794:4, col:41> Text=" Defer operations until end of frame. "
| | |-TextComment 0x56046813a6f0 <line:4795:3, col:75> Text=" When this operation is invoked while iterating, operations inbetween the"
| | `-TextComment 0x56046813a710 <line:4796:3, col:77> Text=" defer_begin and defer_end operations are executed at the end of the frame."
| |-ParagraphComment 0x56046813a7a0 <line:4798:3, col:33>
| | `-TextComment 0x56046813a770 <col:3, col:33> Text=" This operation is thread safe."
| |-ParagraphComment 0x56046813a7f0 <line:4800:3>
| | `-TextComment 0x56046813a7c0 <col:3> Text=" "
| |-ParamCommandComment 0x56046813a810 <col:4, line:4801:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813a8c0 <line:4800:16, line:4801:3>
| | |-TextComment 0x56046813a870 <line:4800:16, col:26> Text=" The world."
| | `-TextComment 0x56046813a890 <line:4801:3> Text=" "
| `-BlockCommandComment 0x56046813a8e0 <col:4, col:73> Name="return"
| `-ParagraphComment 0x56046813a940 <col:11, col:73>
| `-TextComment 0x56046813a910 <col:11, col:73> Text=" true if world changed from non-deferred mode to deferred mode."
|-FunctionDecl 0x5604680389b8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:4814:29> line:4813:6 ecs_is_deferred 'bool (const ecs_world_t *)'
| |-ParmVarDecl 0x560468038928 <line:4814:5, col:24> col:24 world 'const ecs_world_t *'
| `-FullComment 0x56046813ac10 <line:4807:4, line:4810:42>
| |-ParagraphComment 0x56046813aa30 <line:4807:4, col:51>
| | `-TextComment 0x56046813aa00 <col:4, col:51> Text=" Test if deferring is enabled for current stage."
| |-ParagraphComment 0x56046813aa80 <line:4809:3>
| | `-TextComment 0x56046813aa50 <col:3> Text=" "
| |-ParamCommandComment 0x56046813aaa0 <col:4, line:4810:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813ab50 <line:4809:16, line:4810:3>
| | |-TextComment 0x56046813ab00 <line:4809:16, col:26> Text=" The world."
| | `-TextComment 0x56046813ab20 <line:4810:3> Text=" "
| `-BlockCommandComment 0x56046813ab70 <col:4, col:42> Name="return"
| `-ParagraphComment 0x56046813abd0 <col:11, col:42>
| `-TextComment 0x56046813aba0 <col:11, col:42> Text=" True if deferred, false if not."
|-FunctionDecl 0x560468038b28 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:4826:23> line:4825:6 ecs_defer_end 'bool (ecs_world_t *)'
| |-ParmVarDecl 0x560468038a98 <line:4826:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x56046813af10 <line:4816:4, line:4822:73>
| |-ParagraphComment 0x56046813acd0 <line:4816:4, line:4817:19>
| | |-TextComment 0x56046813ac80 <line:4816:4, col:38> Text=" End block of operations to defer. "
| | `-TextComment 0x56046813aca0 <line:4817:3, col:19> Text=" See defer_begin."
| |-ParagraphComment 0x56046813ad20 <line:4819:3, col:33>
| | `-TextComment 0x56046813acf0 <col:3, col:33> Text=" This operation is thread safe."
| |-ParagraphComment 0x56046813ad70 <line:4821:3>
| | `-TextComment 0x56046813ad40 <col:3> Text=" "
| |-ParamCommandComment 0x56046813ad90 <col:4, line:4822:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813ae40 <line:4821:16, line:4822:3>
| | |-TextComment 0x56046813adf0 <line:4821:16, col:26> Text=" The world."
| | `-TextComment 0x56046813ae10 <line:4822:3> Text=" "
| `-BlockCommandComment 0x56046813ae60 <col:4, col:73> Name="return"
| `-ParagraphComment 0x56046813aec0 <col:11, col:73>
| `-TextComment 0x56046813ae90 <col:11, col:73> Text=" true if world changed from deferred mode to non-deferred mode."
|-FunctionDecl 0x560468038c98 <line:4838:1, line:4839:23> line:4838:6 ecs_defer_suspend 'void (ecs_world_t *)'
| |-ParmVarDecl 0x560468038c08 <line:4839:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x56046813b1b0 <line:4828:4, line:4835:26>
| |-ParagraphComment 0x56046813b000 <line:4828:4, line:4830:31>
| | |-TextComment 0x56046813af80 <line:4828:4, col:45> Text=" Suspend deferring but do not flush queue."
| | |-TextComment 0x56046813afa0 <line:4829:3, col:78> Text=" This operation can be used to do an undeferred operation while not flushing"
| | `-TextComment 0x56046813afc0 <line:4830:3, col:31> Text=" the operations in the queue."
| |-ParagraphComment 0x56046813b070 <line:4832:3, line:4833:62>
| | |-TextComment 0x56046813b020 <line:4832:3, col:80> Text=" An application should invoke ecs_defer_resume before ecs_defer_end is called."
| | `-TextComment 0x56046813b040 <line:4833:3, col:62> Text=" The operation may only be called when deferring is enabled."
| |-ParagraphComment 0x56046813b0c0 <line:4835:3>
| | `-TextComment 0x56046813b090 <col:3> Text=" "
| `-ParamCommandComment 0x56046813b0e0 <col:4, col:26> [in] implicitly Param="world" ParamIndex=0
| `-ParagraphComment 0x56046813b170 <col:16, col:26>
| `-TextComment 0x56046813b140 <col:16, col:26> Text=" The world."
|-FunctionDecl 0x560468038e08 <line:4847:1, line:4848:23> line:4847:6 ecs_defer_resume 'void (ecs_world_t *)'
| |-ParmVarDecl 0x560468038d78 <line:4848:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x56046813b3b0 <line:4841:4, line:4844:26>
| |-ParagraphComment 0x56046813b270 <line:4841:4, line:4842:25>
| | |-TextComment 0x56046813b220 <line:4841:4, col:21> Text=" Resume deferring."
| | `-TextComment 0x56046813b240 <line:4842:3, col:25> Text=" See ecs_defer_suspend."
| |-ParagraphComment 0x56046813b2c0 <line:4844:3>
| | `-TextComment 0x56046813b290 <col:3> Text=" "
| `-ParamCommandComment 0x56046813b2e0 <col:4, col:26> [in] implicitly Param="world" ParamIndex=0
| `-ParagraphComment 0x56046813b370 <col:16, col:26>
| `-TextComment 0x56046813b340 <col:16, col:26> Text=" The world."
|-FunctionDecl 0x560468038ff8 <line:4867:1, line:4869:19> line:4867:6 ecs_set_automerge 'void (ecs_world_t *, bool)'
| |-ParmVarDecl 0x560468038ee8 <line:4868:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468038f60 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:4869:10> col:10 automerge 'bool'
| `-FullComment 0x56046813b820 <line:4850:4, line:4864:61>
| |-ParagraphComment 0x56046813b4c0 <line:4850:4, line:4853:47>
| | |-TextComment 0x56046813b420 <line:4850:4, col:50> Text=" Enable/disable automerging for world or stage."
| | |-TextComment 0x56046813b440 <line:4851:3, col:77> Text=" When automerging is enabled, staged data will automatically be merged with"
| | |-TextComment 0x56046813b460 <line:4852:3, col:75> Text=" the world when staging ends. This happens at the end of progress(), at a"
| | `-TextComment 0x56046813b480 <line:4853:3, col:47> Text=" sync point or when readonly_end() is called."
| |-ParagraphComment 0x56046813b560 <line:4855:3, line:4857:24>
| | |-TextComment 0x56046813b4e0 <line:4855:3, col:79> Text=" Applications can exercise more control over when data from a stage is merged"
| | |-TextComment 0x56046813b500 <line:4856:3, col:76> Text=" by disabling automerging. This requires an application to explicitly call"
| | `-TextComment 0x56046813b520 <line:4857:3, col:24> Text=" merge() on the stage."
| |-ParagraphComment 0x56046813b600 <line:4859:3, line:4861:71>
| | |-TextComment 0x56046813b580 <line:4859:3, col:76> Text=" When this function is invoked on the world, it sets all current stages to"
| | |-TextComment 0x56046813b5a0 <line:4860:3, col:80> Text=" the provided value and sets the default for new stages. When this function is"
| | `-TextComment 0x56046813b5c0 <line:4861:3, col:71> Text=" invoked on a stage, automerging is only set for that specific stage."
| |-ParagraphComment 0x56046813b650 <line:4863:3>
| | `-TextComment 0x56046813b620 <col:3> Text=" "
| |-ParamCommandComment 0x56046813b670 <col:4, line:4864:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813b720 <line:4863:16, line:4864:3>
| | |-TextComment 0x56046813b6d0 <line:4863:16, col:26> Text=" The world."
| | `-TextComment 0x56046813b6f0 <line:4864:3> Text=" "
| `-ParamCommandComment 0x56046813b740 <col:4, col:61> [in] implicitly Param="automerge" ParamIndex=1
| `-ParagraphComment 0x56046813b7d0 <col:20, col:61>
| `-TextComment 0x56046813b7a0 <col:20, col:61> Text=" Whether to enable or disable automerging."
|-FunctionDecl 0x560468039278 <line:4885:1, line:4887:19> line:4885:6 ecs_set_stage_count 'void (ecs_world_t *, int32_t)'
| |-ParmVarDecl 0x5604680390e8 <line:4886:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468039160 <line:4887:5, col:13> col:13 stages 'int32_t':'int'
| `-FullComment 0x56046813bc20 <line:4871:4, line:4882:38>
| |-ParagraphComment 0x56046813b960 <line:4871:4, line:4875:40>
| | |-TextComment 0x56046813b890 <line:4871:4, col:37> Text=" Configure world to have N stages."
| | |-TextComment 0x56046813b8b0 <line:4872:3, col:78> Text=" This initializes N stages, which allows applications to defer operations to"
| | |-TextComment 0x56046813b8d0 <line:4873:3, col:79> Text=" multiple isolated defer queues. This is typically used for applications with"
| | |-TextComment 0x56046813b8f0 <line:4874:3, col:75> Text=" multiple threads, where each thread gets its own queue, and commands are"
| | `-TextComment 0x56046813b910 <line:4875:3, col:40> Text=" merged when threads are synchronized."
| |-ParagraphComment 0x56046813ba00 <line:4877:3, line:4879:50>
| | |-TextComment 0x56046813b980 <line:4877:3, col:73> Text=" Note that the ecs_set_threads function already creates the appropriate"
| | |-TextComment 0x56046813b9a0 <line:4878:3, col:84> Text=" number of stages. The set_stage_count() operation is useful for applications that"
| | `-TextComment 0x56046813b9c0 <line:4879:3, col:50> Text=" want to manage their own stages and/or threads."
| |-ParagraphComment 0x56046813ba50 <line:4881:3>
| | `-TextComment 0x56046813ba20 <col:3> Text=" "
| |-ParamCommandComment 0x56046813ba70 <col:4, line:4882:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813bb20 <line:4881:16, line:4882:3>
| | |-TextComment 0x56046813bad0 <line:4881:16, col:26> Text=" The world."
| | `-TextComment 0x56046813baf0 <line:4882:3> Text=" "
| `-ParamCommandComment 0x56046813bb40 <col:4, col:38> [in] implicitly Param="stages" ParamIndex=1
| `-ParagraphComment 0x56046813bbd0 <col:17, col:38>
| `-TextComment 0x56046813bba0 <col:17, col:38> Text=" The number of stages."
|-FunctionDecl 0x560468039458 <line:4896:1, line:4897:29> line:4896:9 ecs_get_stage_count 'int32_t (const ecs_world_t *)'
| |-ParmVarDecl 0x560468039368 <line:4897:5, col:24> col:24 world 'const ecs_world_t *'
| `-FullComment 0x56046813bec0 <line:4889:4, line:4893:51>
| |-ParagraphComment 0x56046813bce0 <line:4889:4, line:4890:54>
| | |-TextComment 0x56046813bc90 <line:4889:4, col:36> Text=" Get number of configured stages."
| | `-TextComment 0x56046813bcb0 <line:4890:3, col:54> Text=" Return number of stages set by ecs_set_stage_count."
| |-ParagraphComment 0x56046813bd30 <line:4892:3>
| | `-TextComment 0x56046813bd00 <col:3> Text=" "
| |-ParamCommandComment 0x56046813bd50 <col:4, line:4893:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813be00 <line:4892:16, line:4893:3>
| | |-TextComment 0x56046813bdb0 <line:4892:16, col:26> Text=" The world."
| | `-TextComment 0x56046813bdd0 <line:4893:3> Text=" "
| `-BlockCommandComment 0x56046813be20 <col:4, col:51> Name="return"
| `-ParagraphComment 0x56046813be80 <col:11, col:51>
| `-TextComment 0x56046813be50 <col:11, col:51> Text=" The number of stages used for threading."
|-FunctionDecl 0x560468039860 <line:4907:1, line:4908:29> line:4907:9 ecs_get_stage_id 'int32_t (const ecs_world_t *)'
| |-ParmVarDecl 0x5604680397d0 <line:4908:5, col:24> col:24 world 'const ecs_world_t *'
| `-FullComment 0x56046813c190 <line:4899:4, line:4904:24>
| |-ParagraphComment 0x56046813bfb0 <line:4899:4, line:4901:64>
| | |-TextComment 0x56046813bf30 <line:4899:4, col:25> Text=" Get current stage id."
| | |-TextComment 0x56046813bf50 <line:4900:3, col:78> Text=" The stage id can be used by an application to learn about which stage it is"
| | `-TextComment 0x56046813bf70 <line:4901:3, col:64> Text=" using, which typically corresponds with the worker thread id."
| |-ParagraphComment 0x56046813c000 <line:4903:3>
| | `-TextComment 0x56046813bfd0 <col:3> Text=" "
| |-ParamCommandComment 0x56046813c020 <col:4, line:4904:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813c0d0 <line:4903:16, line:4904:3>
| | |-TextComment 0x56046813c080 <line:4903:16, col:26> Text=" The world."
| | `-TextComment 0x56046813c0a0 <line:4904:3> Text=" "
| `-BlockCommandComment 0x56046813c0f0 <col:4, col:24> Name="return"
| `-ParagraphComment 0x56046813c150 <col:11, col:24>
| `-TextComment 0x56046813c120 <col:11, col:24> Text=" The stage id."
|-FunctionDecl 0x560468039ad8 <line:4926:1, line:4928:21> line:4926:14 ecs_get_stage 'ecs_world_t *(const ecs_world_t *, int32_t)'
| |-ParmVarDecl 0x560468039948 <line:4927:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680399c0 <line:4928:5, col:13> col:13 stage_id 'int32_t':'int'
| `-FullComment 0x56046813c670 <line:4910:4, line:4923:51>
| |-ParagraphComment 0x56046813c2c0 <line:4910:4, line:4913:52>
| | |-TextComment 0x56046813c220 <line:4910:4, col:37> Text=" Get stage-specific world pointer."
| | |-TextComment 0x56046813c240 <line:4911:3, col:74> Text=" Flecs threads can safely invoke the API as long as they have a private "
| | |-TextComment 0x56046813c260 <line:4912:3, col:78> Text=" context to write to, also referred to as the stage. This function returns a"
| | `-TextComment 0x56046813c280 <line:4913:3, col:52> Text=" pointer to a stage, disguised as a world pointer."
| |-ParagraphComment 0x56046813c3b0 <line:4915:3, line:4919:39>
| | |-TextComment 0x56046813c2e0 <line:4915:3, col:78> Text=" Note that this function does not(!) create a new world. It simply wraps the"
| | |-TextComment 0x56046813c300 <line:4916:3, col:74> Text=" existing world in a thread-specific context, which the API knows how to"
| | |-TextComment 0x56046813c320 <line:4917:3, col:75> Text=" unwrap. The reason the stage is returned as an ecs_world_t is so that it"
| | |-TextComment 0x56046813c340 <line:4918:3, col:76> Text=" can be passed transparently to the existing API functions, vs. having to "
| | `-TextComment 0x56046813c360 <line:4919:3, col:39> Text=" create a dediated API for threading."
| |-ParagraphComment 0x56046813c400 <line:4921:3>
| | `-TextComment 0x56046813c3d0 <col:3> Text=" "
| |-ParamCommandComment 0x56046813c420 <col:4, line:4922:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813c4d0 <line:4921:16, line:4922:3>
| | |-TextComment 0x56046813c480 <line:4921:16, col:26> Text=" The world."
| | `-TextComment 0x56046813c4a0 <line:4922:3> Text=" "
| |-ParamCommandComment 0x56046813c4f0 <col:4, line:4923:3> [in] implicitly Param="stage_id" ParamIndex=1
| | `-ParagraphComment 0x56046813c5a0 <line:4922:19, line:4923:3>
| | |-TextComment 0x56046813c550 <line:4922:19, col:54> Text=" The index of the stage to retrieve."
| | `-TextComment 0x56046813c570 <line:4923:3> Text=" "
| `-BlockCommandComment 0x56046813c5c0 <col:4, col:51> Name="return"
| `-ParagraphComment 0x56046813c620 <col:11, col:51>
| `-TextComment 0x56046813c5f0 <col:11, col:51> Text=" A thread-specific pointer to the world. "
|-FunctionDecl 0x560468039c58 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:4939:29> line:4938:6 ecs_stage_is_readonly 'bool (const ecs_world_t *)'
| |-ParmVarDecl 0x560468039bc8 <line:4939:5, col:24> col:24 world 'const ecs_world_t *'
| `-FullComment 0x56046813c940 <line:4930:4, line:4935:50>
| |-ParagraphComment 0x56046813c760 <line:4930:4, line:4932:50>
| | |-TextComment 0x56046813c6e0 <line:4930:4, col:47> Text=" Test whether the current world is readonly."
| | |-TextComment 0x56046813c700 <line:4931:3, col:73> Text=" This function allows the code to test whether the currently used world"
| | `-TextComment 0x56046813c720 <line:4932:3, col:50> Text=" is readonly or whether it allows for writing. "
| |-ParagraphComment 0x56046813c7b0 <line:4934:3>
| | `-TextComment 0x56046813c780 <col:3> Text=" "
| |-ParamCommandComment 0x56046813c7d0 <col:4, line:4935:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813c880 <line:4934:16, line:4935:3>
| | |-TextComment 0x56046813c830 <line:4934:16, col:50> Text=" A pointer to a stage or the world."
| | `-TextComment 0x56046813c850 <line:4935:3> Text=" "
| `-BlockCommandComment 0x56046813c8a0 <col:4, col:50> Name="return"
| `-ParagraphComment 0x56046813c900 <col:11, col:50>
| `-TextComment 0x56046813c8d0 <col:11, col:50> Text=" True if the world or stage is readonly."
|-FunctionDecl 0x560468039e28 <line:4960:1, line:4961:23> line:4960:14 ecs_async_stage_new 'ecs_world_t *(ecs_world_t *)'
| |-ParmVarDecl 0x560468039d38 <line:4961:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x56046813cdd0 <line:4941:4, line:4957:21>
| |-ParagraphComment 0x56046813ca50 <line:4941:4, line:4944:63>
| | |-TextComment 0x56046813c9b0 <line:4941:4, col:30> Text=" Create asynchronous stage."
| | |-TextComment 0x56046813c9d0 <line:4942:3, col:75> Text=" An asynchronous stage can be used to asynchronously queue operations for"
| | |-TextComment 0x56046813c9f0 <line:4943:3, col:78> Text=" later merging with the world. An asynchronous stage is similar to a regular"
| | `-TextComment 0x56046813ca10 <line:4944:3, col:63> Text=" stage, except that it does not allow reading from the world."
| |-ParagraphComment 0x56046813cb10 <line:4946:3, line:4949:56>
| | |-TextComment 0x56046813ca70 <line:4946:3, col:76> Text=" Asynchronous stages are never merged automatically, and must therefore be"
| | |-TextComment 0x56046813ca90 <line:4947:3, col:75> Text=" manually merged with the ecs_merge function. It is not necessary to call"
| | |-TextComment 0x56046813cab0 <line:4948:3, col:71> Text=" defer_begin or defer_end before and after enqueuing commands, as an "
| | `-TextComment 0x56046813cad0 <line:4949:3, col:56> Text=" asynchronous stage unconditionally defers operations."
| |-ParagraphComment 0x56046813cb80 <line:4951:3, line:4952:25>
| | |-TextComment 0x56046813cb30 <line:4951:3, col:80> Text=" The application must ensure that no commands are added to the stage while the"
| | `-TextComment 0x56046813cb50 <line:4952:3, col:25> Text=" stage is being merged."
| |-ParagraphComment 0x56046813cbd0 <line:4954:3, col:69>
| | `-TextComment 0x56046813cba0 <col:3, col:69> Text=" An asynchronous stage must be cleaned up by ecs_async_stage_free. "
| |-ParagraphComment 0x56046813cc20 <line:4956:3>
| | `-TextComment 0x56046813cbf0 <col:3> Text=" "
| |-ParamCommandComment 0x56046813cc40 <col:4, line:4957:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813ccf0 <line:4956:16, line:4957:3>
| | |-TextComment 0x56046813cca0 <line:4956:16, col:26> Text=" The world."
| | `-TextComment 0x56046813ccc0 <line:4957:3> Text=" "
| `-BlockCommandComment 0x56046813cd10 <col:4, col:21> Name="return"
| `-ParagraphComment 0x56046813cd70 <col:11, col:21>
| `-TextComment 0x56046813cd40 <col:11, col:21> Text=" The stage."
|-FunctionDecl 0x560468039f98 <line:4970:1, line:4971:23> line:4970:6 ecs_async_stage_free 'void (ecs_world_t *)'
| |-ParmVarDecl 0x560468039f08 <line:4971:5, col:18> col:18 stage 'ecs_world_t *'
| `-FullComment 0x56046813d000 <line:4963:4, line:4967:34>
| |-ParagraphComment 0x56046813cec0 <line:4963:4, line:4965:40>
| | |-TextComment 0x56046813ce40 <line:4963:4, col:28> Text=" Free asynchronous stage."
| | |-TextComment 0x56046813ce60 <line:4964:3, col:80> Text=" The provided stage must be an asynchronous stage. If a non-asynchronous stage"
| | `-TextComment 0x56046813ce80 <line:4965:3, col:40> Text=" is provided, the operation will fail."
| |-ParagraphComment 0x56046813cf10 <line:4967:3>
| | `-TextComment 0x56046813cee0 <col:3> Text=" "
| `-ParamCommandComment 0x56046813cf30 <col:4, col:34> [in] implicitly Param="stage" ParamIndex=0
| `-ParagraphComment 0x56046813cfc0 <col:16, col:34>
| `-TextComment 0x56046813cf90 <col:16, col:34> Text=" The stage to free."
|-FunctionDecl 0x56046803a108 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:4981:23> line:4980:6 ecs_stage_is_async 'bool (ecs_world_t *)'
| |-ParmVarDecl 0x56046803a078 <line:4981:5, col:18> col:18 stage 'ecs_world_t *'
| `-FullComment 0x56046813d2a0 <line:4973:4, line:4977:17>
| |-ParagraphComment 0x56046813d0a0 <line:4973:4, col:48>
| | `-TextComment 0x56046813d070 <col:4, col:48> Text=" Test whether provided stage is asynchronous."
| |-ParagraphComment 0x56046813d0f0 <line:4975:3>
| | `-TextComment 0x56046813d0c0 <col:3> Text=" "
| |-ParamCommandComment 0x56046813d110 <col:4, line:4976:3> [in] implicitly Param="stage" ParamIndex=0
| | `-ParagraphComment 0x56046813d1c0 <line:4975:16, line:4976:3>
| | |-TextComment 0x56046813d170 <line:4975:16, col:26> Text=" The stage."
| | `-TextComment 0x56046813d190 <line:4976:3> Text=" "
| `-BlockCommandComment 0x56046813d1e0 <col:4, line:4977:17> Name="return"
| `-ParagraphComment 0x56046813d260 <line:4976:11, line:4977:17>
| |-TextComment 0x56046813d210 <line:4976:11, col:77> Text=" True when the stage is asynchronous, false for a regular stage or "
| `-TextComment 0x56046813d230 <line:4977:3, col:17> Text=" world."
|-FunctionDecl 0x56046803a360 <line:4998:1, line:5000:14> line:4998:6 ecs_set_context 'void (ecs_world_t *, void *)'
| |-ParmVarDecl 0x56046803a248 <line:4999:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803a2c8 <line:5000:5, col:11> col:11 ctx 'void *'
| `-FullComment 0x56046813d5a0 <line:4990:4, line:4995:52>
| |-ParagraphComment 0x56046813d390 <line:4990:4, line:4992:69>
| | |-TextComment 0x56046813d310 <line:4990:4, col:24> Text=" Set a world context."
| | |-TextComment 0x56046813d330 <line:4991:3, col:76> Text=" This operation allows an application to register custom data with a world"
| | `-TextComment 0x56046813d350 <line:4992:3, col:69> Text=" that can be accessed anywhere where the application has the world."
| |-ParagraphComment 0x56046813d3e0 <line:4994:3>
| | `-TextComment 0x56046813d3b0 <col:3> Text=" "
| |-ParamCommandComment 0x56046813d400 <col:4, line:4995:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813d4b0 <line:4994:16, line:4995:3>
| | |-TextComment 0x56046813d460 <line:4994:16, col:26> Text=" The world."
| | `-TextComment 0x56046813d480 <line:4995:3> Text=" "
| `-ParamCommandComment 0x56046813d4d0 <col:4, col:52> [in] implicitly Param="ctx" ParamIndex=1
| `-ParagraphComment 0x56046813d560 <col:14, col:52>
| `-TextComment 0x56046813d530 <col:14, col:52> Text=" A pointer to a user defined structure."
|-FunctionDecl 0x56046803a540 <line:5010:1, line:5011:29> line:5010:7 ecs_get_context 'void *(const ecs_world_t *)'
| |-ParmVarDecl 0x56046803a448 <line:5011:5, col:24> col:24 world 'const ecs_world_t *'
| `-FullComment 0x56046813d860 <line:5002:4, line:5007:33>
| |-ParagraphComment 0x56046813d660 <line:5002:4, line:5003:59>
| | |-TextComment 0x56046813d610 <line:5002:4, col:26> Text=" Get the world context."
| | `-TextComment 0x56046813d630 <line:5003:3, col:59> Text=" This operation retrieves a previously set world context."
| |-ParagraphComment 0x56046813d6b0 <line:5005:3>
| | `-TextComment 0x56046813d680 <col:3> Text=" "
| |-ParamCommandComment 0x56046813d6d0 <col:4, line:5006:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813d780 <line:5005:16, line:5006:3>
| | |-TextComment 0x56046813d730 <line:5005:16, col:26> Text=" The world."
| | `-TextComment 0x56046813d750 <line:5006:3> Text=" "
| `-BlockCommandComment 0x56046813d7a0 <col:4, line:5007:33> Name="return"
| `-ParagraphComment 0x56046813d820 <line:5006:11, line:5007:33>
| |-TextComment 0x56046813d7d0 <line:5006:11, col:75> Text=" The context set with ecs_set_context. If no context was set, the"
| `-TextComment 0x56046813d7f0 <line:5007:3, col:33> Text=" function returns NULL."
|-FunctionDecl 0x56046803aa60 <line:5020:1, line:5021:29> line:5020:25 ecs_get_world_info 'const ecs_world_info_t *(const ecs_world_t *)'
| |-ParmVarDecl 0x56046803a650 <line:5021:5, col:24> col:24 world 'const ecs_world_t *'
| `-FullComment 0x56046813db00 <line:5013:4, line:5017:33>
| |-ParagraphComment 0x56046813d900 <line:5013:4, col:19>
| | `-TextComment 0x56046813d8d0 <col:4, col:19> Text=" Get world info."
| |-ParagraphComment 0x56046813d950 <line:5015:3>
| | `-TextComment 0x56046813d920 <col:3> Text=" "
| |-ParamCommandComment 0x56046813d970 <col:4, line:5016:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813da20 <line:5015:16, line:5016:3>
| | |-TextComment 0x56046813d9d0 <line:5015:16, col:26> Text=" The world."
| | `-TextComment 0x56046813d9f0 <line:5016:3> Text=" "
| `-BlockCommandComment 0x56046813da40 <col:4, line:5017:33> Name="return"
| `-ParagraphComment 0x56046813dac0 <line:5016:11, line:5017:33>
| |-TextComment 0x56046813da70 <line:5016:11, col:80> Text=" Pointer to the world info. This pointer will remain valid for as long"
| `-TextComment 0x56046813da90 <line:5017:3, col:33> Text=" as the world is valid."
|-FunctionDecl 0x56046803ac58 <line:5032:1, line:5034:25> line:5032:6 ecs_dim 'void (ecs_world_t *, int32_t)'
| |-ParmVarDecl 0x56046803ab48 <line:5033:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803abc0 <line:5034:5, col:13> col:13 entity_count 'int32_t':'int'
| `-FullComment 0x56046813de20 <line:5023:4, line:5029:61>
| |-ParagraphComment 0x56046813dc10 <line:5023:4, line:5026:33>
| | |-TextComment 0x56046813db70 <line:5023:4, col:59> Text=" Dimension the world for a specified number of entities."
| | |-TextComment 0x56046813db90 <line:5024:3, col:79> Text=" This operation will preallocate memory in the world for the specified number"
| | |-TextComment 0x56046813dbb0 <line:5025:3, col:80> Text=" of entities. Specifying a number lower than the current number of entities in"
| | `-TextComment 0x56046813dbd0 <line:5026:3, col:33> Text=" the world will have no effect."
| |-ParagraphComment 0x56046813dc60 <line:5028:3>
| | `-TextComment 0x56046813dc30 <col:3> Text=" "
| |-ParamCommandComment 0x56046813dc80 <col:4, line:5029:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813dd30 <line:5028:16, line:5029:3>
| | |-TextComment 0x56046813dce0 <line:5028:16, col:26> Text=" The world."
| | `-TextComment 0x56046813dd00 <line:5029:3> Text=" "
| `-ParamCommandComment 0x56046813dd50 <col:4, col:61> [in] implicitly Param="entity_count" ParamIndex=1
| `-ParagraphComment 0x56046813dde0 <col:23, col:61>
| `-TextComment 0x56046813ddb0 <col:23, col:61> Text=" The number of entities to preallocate."
|-FunctionDecl 0x56046803af58 <line:5052:1, line:5055:24> line:5052:6 ecs_set_entity_range 'void (ecs_world_t *, ecs_entity_t, ecs_entity_t)'
| |-ParmVarDecl 0x56046803ad48 <line:5053:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803adc0 <line:5054:5, col:18> col:18 id_start 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x56046803ae38 <line:5055:5, col:18> col:18 id_end 'ecs_entity_t':'unsigned long'
| `-FullComment 0x56046813e330 <line:5036:4, line:5049:38>
| |-ParagraphComment 0x56046813df60 <line:5036:4, line:5040:36>
| | |-TextComment 0x56046813de90 <line:5036:4, col:44> Text=" Set a range for issueing new entity ids."
| | |-TextComment 0x56046813deb0 <line:5037:3, col:78> Text=" This function constrains the entity identifiers returned by ecs_new to the "
| | |-TextComment 0x56046813ded0 <line:5038:3, col:80> Text=" specified range. This operation can be used to ensure that multiple processes"
| | |-TextComment 0x56046813def0 <line:5039:3, col:74> Text=" can run in the same simulation without requiring a central service that"
| | `-TextComment 0x56046813df10 <line:5040:3, col:36> Text=" coordinates issueing identifiers."
| |-ParagraphComment 0x56046813e020 <line:5042:3, line:5045:9>
| | |-TextComment 0x56046813df80 <line:5042:3, col:79> Text=" If id_end is set to 0, the range is infinite. If id_end is set to a non-zero"
| | |-TextComment 0x56046813dfa0 <line:5043:3, col:76> Text=" value, it has to be larger than id_start. If id_end is set and ecs_new is"
| | |-TextComment 0x56046813dfc0 <line:5044:3, col:78> Text=" invoked after an id is issued that is equal to id_end, the application will"
| | `-TextComment 0x56046813dfe0 <line:5045:3, col:9> Text=" abort."
| |-ParagraphComment 0x56046813e070 <line:5047:3>
| | `-TextComment 0x56046813e040 <col:3> Text=" "
| |-ParamCommandComment 0x56046813e090 <col:4, line:5048:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813e140 <line:5047:16, line:5048:3>
| | |-TextComment 0x56046813e0f0 <line:5047:16, col:26> Text=" The world."
| | `-TextComment 0x56046813e110 <line:5048:3> Text=" "
| |-ParamCommandComment 0x56046813e160 <col:4, line:5049:3> [in] implicitly Param="id_start" ParamIndex=1
| | `-ParagraphComment 0x56046813e230 <line:5048:19, line:5049:3>
| | |-TextComment 0x56046813e1c0 <line:5048:19, col:42> Text=" The start of the range."
| | `-TextComment 0x56046813e1e0 <line:5049:3> Text=" "
| `-ParamCommandComment 0x56046813e250 <col:4, col:38> [in] implicitly Param="id_end" ParamIndex=2
| `-ParagraphComment 0x56046813e2e0 <col:17, col:38>
| `-TextComment 0x56046813e2b0 <col:17, col:38> Text=" The end of the range."
|-FunctionDecl 0x56046803b1d8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:5070:16> line:5068:6 ecs_enable_range_check 'bool (ecs_world_t *, bool)'
| |-ParmVarDecl 0x56046803b048 <line:5069:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803b0c0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:5070:10> col:10 enable 'bool'
| `-FullComment 0x56046813e730 <line:5057:4, line:5065:30>
| |-ParagraphComment 0x56046813e470 <line:5057:4, line:5061:47>
| | |-TextComment 0x56046813e3a0 <line:5057:4, col:32> Text=" Enable/disable range limits."
| | |-TextComment 0x56046813e3c0 <line:5058:3, col:73> Text=" When an application is both a receiver of range-limited entities and a"
| | |-TextComment 0x56046813e3e0 <line:5059:3, col:77> Text=" producer of range-limited entities, range checking needs to be temporarily"
| | |-TextComment 0x56046813e400 <line:5060:3, col:78> Text=" disabled when inserting received entities. Range checking is disabled on a "
| | `-TextComment 0x56046813e420 <line:5061:3, col:47> Text=" stage, so setting this value is thread safe."
| |-ParagraphComment 0x56046813e4c0 <line:5063:3>
| | `-TextComment 0x56046813e490 <col:3> Text=" "
| |-ParamCommandComment 0x56046813e4e0 <col:4, line:5064:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813e590 <line:5063:16, line:5064:3>
| | |-TextComment 0x56046813e540 <line:5063:16, col:26> Text=" The world."
| | `-TextComment 0x56046813e560 <line:5064:3> Text=" "
| |-ParamCommandComment 0x56046813e5b0 <col:4, line:5065:3> [in] implicitly Param="enable" ParamIndex=1
| | `-ParagraphComment 0x56046813e660 <line:5064:17, line:5065:3>
| | |-TextComment 0x56046813e610 <line:5064:17, col:76> Text=" True if range checking should be enabled, false to disable."
| | `-TextComment 0x56046813e630 <line:5065:3> Text=" "
| `-BlockCommandComment 0x56046813e680 <col:4, col:30> Name="return"
| `-ParagraphComment 0x56046813e6e0 <col:11, col:30>
| `-TextComment 0x56046813e6b0 <col:11, col:30> Text=" The previous value."
|-FunctionDecl 0x56046803b458 <line:5086:1, line:5088:24> line:5086:6 ecs_run_aperiodic 'void (ecs_world_t *, ecs_flags32_t)'
| |-ParmVarDecl 0x56046803b2c8 <line:5087:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803b340 <line:5088:5, col:19> col:19 flags 'ecs_flags32_t':'unsigned int'
| `-FullComment 0x56046813eb30 <line:5072:4, line:5083:58>
| |-ParagraphComment 0x56046813e870 <line:5072:4, line:5076:32>
| | |-TextComment 0x56046813e7a0 <line:5072:4, col:28> Text=" Force aperiodic actions."
| | |-TextComment 0x56046813e7c0 <line:5073:3, col:74> Text=" The world may delay certain operations until they are necessary for the"
| | |-TextComment 0x56046813e7e0 <line:5074:3, col:76> Text=" application to function correctly. This may cause observable side effects"
| | |-TextComment 0x56046813e800 <line:5075:3, col:75> Text=" such as delayed triggering of events, which can be inconvenient when for"
| | `-TextComment 0x56046813e820 <line:5076:3, col:32> Text=" example running a test suite."
| |-ParagraphComment 0x56046813e910 <line:5078:3, line:5080:50>
| | |-TextComment 0x56046813e890 <line:5078:3, col:77> Text=" The flags parameter specifies which aperiodic actions to run. Specify 0 to"
| | |-TextComment 0x56046813e8b0 <line:5079:3, col:77> Text=" run all actions. Supported flags start with 'EcsAperiodic'. Flags identify"
| | `-TextComment 0x56046813e8d0 <line:5080:3, col:50> Text=" internal mechanisms and may change unannounced."
| |-ParagraphComment 0x56046813e960 <line:5082:3>
| | `-TextComment 0x56046813e930 <col:3> Text=" "
| |-ParamCommandComment 0x56046813e980 <col:4, line:5083:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813ea30 <line:5082:16, line:5083:3>
| | |-TextComment 0x56046813e9e0 <line:5082:16, col:26> Text=" The world."
| | `-TextComment 0x56046813ea00 <line:5083:3> Text=" "
| `-ParamCommandComment 0x56046813ea50 <col:4, col:58> [in] implicitly Param="flags" ParamIndex=1
| `-ParagraphComment 0x56046813eae0 <col:16, col:58>
| `-TextComment 0x56046813eab0 <col:16, col:58> Text=" The flags specifying which actions to run."
|-FunctionDecl 0x56046803b918 <line:5124:1, line:5130:31> line:5124:9 ecs_delete_empty_tables 'int32_t (ecs_world_t *, ecs_id_t, uint16_t, uint16_t, int32_t, double)'
| |-ParmVarDecl 0x56046803b548 <line:5125:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803b5c0 <line:5126:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| |-ParmVarDecl 0x56046803b638 <line:5127:5, col:14> col:14 clear_generation 'uint16_t':'unsigned short'
| |-ParmVarDecl 0x56046803b6b0 <line:5128:5, col:14> col:14 delete_generation 'uint16_t':'unsigned short'
| |-ParmVarDecl 0x56046803b728 <line:5129:5, col:13> col:13 min_id_count 'int32_t':'int'
| |-ParmVarDecl 0x56046803b7a8 <line:5130:5, col:12> col:12 time_budget_seconds 'double'
| `-FullComment 0x56046813f5d0 <line:5090:4, line:5121:36>
| |-ParagraphComment 0x56046813ec70 <line:5090:4, line:5094:69>
| | |-TextComment 0x56046813eba0 <line:5090:4, col:25> Text=" Cleanup empty tables."
| | |-TextComment 0x56046813ebc0 <line:5091:3, col:77> Text=" This operation cleans up empty tables that meet certain conditions. Having"
| | |-TextComment 0x56046813ebe0 <line:5092:3, col:78> Text=" large amounts of empty tables does not negatively impact performance of the"
| | |-TextComment 0x56046813ec00 <line:5093:3, col:70> Text=" ECS, but can take up considerable amounts of memory, especially in "
| | `-TextComment 0x56046813ec20 <line:5094:3, col:69> Text=" applications with many components, and many components per entity."
| |-ParagraphComment 0x56046813ed10 <line:5096:3, line:5098:34>
| | |-TextComment 0x56046813ec90 <line:5096:3, col:74> Text=" The generation specifies the minimum number of times this operation has"
| | |-TextComment 0x56046813ecb0 <line:5097:3, col:75> Text=" to be called before an empty table is cleaned up. If a table becomes non"
| | `-TextComment 0x56046813ecd0 <line:5098:3, col:34> Text=" empty, the generation is reset."
| |-ParagraphComment 0x56046813edd0 <line:5100:3, line:5103:78>
| | |-TextComment 0x56046813ed30 <line:5100:3, col:68> Text=" The operation allows for both a "clear" generation and a "delete""
| | |-TextComment 0x56046813ed50 <line:5101:3, col:65> Text=" generation. When the clear generation is reached, the table's "
| | |-TextComment 0x56046813ed70 <line:5102:3, col:74> Text=" resources are freed (like component arrays) but the table itself is not"
| | `-TextComment 0x56046813ed90 <line:5103:3, col:78> Text=" deleted. When the delete generation is reached, the empty table is deleted."
| |-ParagraphComment 0x56046813ee70 <line:5105:3, line:5107:28>
| | |-TextComment 0x56046813edf0 <line:5105:3, col:78> Text=" By specifying a non-zero id the cleanup logic can be limited to tables with"
| | |-TextComment 0x56046813ee10 <line:5106:3, col:77> Text=" a specific (component) id. The operation will only increase the generation"
| | `-TextComment 0x56046813ee30 <line:5107:3, col:28> Text=" count of matching tables."
| |-ParagraphComment 0x56046813ef10 <line:5109:3, line:5111:42>
| | |-TextComment 0x56046813ee90 <line:5109:3, col:80> Text=" The min_id_count specifies a lower bound for the number of components a table"
| | |-TextComment 0x56046813eeb0 <line:5110:3, col:79> Text=" should have. Often the more components a table has, the more specific it is "
| | `-TextComment 0x56046813eed0 <line:5111:3, col:42> Text=" and therefore less likely to be reused."
| |-ParagraphComment 0x56046813ef60 <line:5113:3, col:72>
| | `-TextComment 0x56046813ef30 <col:3, col:72> Text=" The time budget specifies how long the operation should take at most."
| |-ParagraphComment 0x56046813efb0 <line:5115:3>
| | `-TextComment 0x56046813ef80 <col:3> Text=" "
| |-ParamCommandComment 0x56046813efd0 <col:4, line:5116:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046813f080 <line:5115:16, line:5116:3>
| | |-TextComment 0x56046813f030 <line:5115:16, col:26> Text=" The world."
| | `-TextComment 0x56046813f050 <line:5116:3> Text=" "
| |-ParamCommandComment 0x56046813f0a0 <col:4, line:5117:3> [in] implicitly Param="id" ParamIndex=1
| | `-ParagraphComment 0x56046813f150 <line:5116:13, line:5117:3>
| | |-TextComment 0x56046813f100 <line:5116:13, col:66> Text=" Optional component filter for the tables to evaluate."
| | `-TextComment 0x56046813f120 <line:5117:3> Text=" "
| |-ParamCommandComment 0x56046813f170 <col:4, line:5118:3> [in] implicitly Param="clear_generation" ParamIndex=2
| | `-ParagraphComment 0x56046813f230 <line:5117:27, line:5118:3>
| | |-TextComment 0x56046813f1e0 <line:5117:27, col:78> Text=" Free table data when generation > clear_generation."
| | `-TextComment 0x56046813f200 <line:5118:3> Text=" "
| |-ParamCommandComment 0x56046813f250 <col:4, line:5119:3> [in] implicitly Param="delete_generation" ParamIndex=3
| | `-ParagraphComment 0x56046813f310 <line:5118:28, line:5119:3>
| | |-TextComment 0x56046813f2c0 <line:5118:28, col:77> Text=" Delete table when generation > delete_generation."
| | `-TextComment 0x56046813f2e0 <line:5119:3> Text=" "
| |-ParamCommandComment 0x56046813f330 <col:4, line:5120:3> [in] implicitly Param="min_id_count" ParamIndex=4
| | `-ParagraphComment 0x56046813f3e0 <line:5119:23, line:5120:3>
| | |-TextComment 0x56046813f390 <line:5119:23, col:77> Text=" Minimum number of component ids the table should have."
| | `-TextComment 0x56046813f3b0 <line:5120:3> Text=" "
| |-ParamCommandComment 0x56046813f400 <col:4, line:5121:3> [in] implicitly Param="time_budget_seconds" ParamIndex=5
| | `-ParagraphComment 0x56046813f4c0 <line:5120:30, line:5121:3>
| | |-TextComment 0x56046813f470 <line:5120:30, col:75> Text=" Amount of time operation is allowed to spend."
| | `-TextComment 0x56046813f490 <line:5121:3> Text=" "
| `-BlockCommandComment 0x56046813f4e0 <col:4, col:36> Name="return"
| `-ParagraphComment 0x56046813f540 <col:11, col:36>
| `-TextComment 0x56046813f510 <col:11, col:36> Text=" Number of deleted tables."
|-FunctionDecl 0x56046803bce8 <line:5138:1, line:5139:27> line:5138:20 ecs_get_world 'const ecs_world_t *(const ecs_poly_t *)'
| |-ParmVarDecl 0x56046803bbf0 <line:5139:5, col:23> col:23 poly 'const ecs_poly_t *'
| `-FullComment 0x56046813f850 <line:5132:4, line:5135:21>
| |-ParagraphComment 0x56046813f670 <line:5132:4, col:24>
| | `-TextComment 0x56046813f640 <col:4, col:24> Text=" Get world from poly."
| |-ParagraphComment 0x56046813f6c0 <line:5134:3>
| | `-TextComment 0x56046813f690 <col:3> Text=" "
| |-ParamCommandComment 0x56046813f6e0 <col:4, line:5135:3> [in] implicitly Param="poly" ParamIndex=0
| | `-ParagraphComment 0x56046813f790 <line:5134:15, line:5135:3>
| | |-TextComment 0x56046813f740 <line:5134:15, col:42> Text=" A pointer to a poly object."
| | `-TextComment 0x56046813f760 <line:5135:3> Text=" "
| `-BlockCommandComment 0x56046813f7b0 <col:4, col:21> Name="return"
| `-ParagraphComment 0x56046813f810 <col:11, col:21>
| `-TextComment 0x56046813f7e0 <col:11, col:21> Text=" The world."
|-FunctionDecl 0x56046803be88 <line:5147:1, line:5148:27> line:5147:14 ecs_get_entity 'ecs_entity_t (const ecs_poly_t *)'
| |-ParmVarDecl 0x56046803bdc8 <line:5148:5, col:23> col:23 poly 'const ecs_poly_t *'
| `-FullComment 0x56046813fad0 <line:5141:4, line:5144:50>
| |-ParagraphComment 0x56046813f8f0 <line:5141:4, col:25>
| | `-TextComment 0x56046813f8c0 <col:4, col:25> Text=" Get entity from poly."
| |-ParagraphComment 0x56046813f940 <line:5143:3>
| | `-TextComment 0x56046813f910 <col:3> Text=" "
| |-ParamCommandComment 0x56046813f960 <col:4, line:5144:3> [in] implicitly Param="poly" ParamIndex=0
| | `-ParagraphComment 0x56046813fa10 <line:5143:15, line:5144:3>
| | |-TextComment 0x56046813f9c0 <line:5143:15, col:42> Text=" A pointer to a poly object."
| | `-TextComment 0x56046813f9e0 <line:5144:3> Text=" "
| `-BlockCommandComment 0x56046813fa30 <col:4, col:50> Name="return"
| `-ParagraphComment 0x56046813fa90 <col:11, col:50>
| `-TextComment 0x56046813fa60 <col:11, col:50> Text=" Entity associated with the poly object."
|-FunctionDecl 0x56046803c0f8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:5163:17> line:5161:6 _ecs_poly_is 'bool (const ecs_poly_t *, int32_t)'
| |-ParmVarDecl 0x56046803bf68 <line:5162:5, col:23> col:23 object 'const ecs_poly_t *'
| |-ParmVarDecl 0x56046803bfe0 <line:5163:5, col:13> col:13 type 'int32_t':'int'
| `-FullComment 0x56046813fed0 <line:5150:4, line:5158:56>
| |-ParagraphComment 0x56046813fbc0 <line:5150:4, line:5152:34>
| | |-TextComment 0x56046813fb40 <line:5150:4, col:41> Text=" Test if pointer is of specified type."
| | |-TextComment 0x56046813fb60 <line:5151:3, col:9> Text=" Usage:"
| | `-TextComment 0x56046813fb80 <line:5152:3, col:34> Text=" ecs_poly_is(ptr, ecs_world_t)"
| |-ParagraphComment 0x56046813fc10 <line:5154:3, col:44>
| | `-TextComment 0x56046813fbe0 <col:3, col:44> Text=" This operation only works for poly types."
| |-ParagraphComment 0x56046813fc60 <line:5156:3>
| | `-TextComment 0x56046813fc30 <col:3> Text=" "
| |-ParamCommandComment 0x56046813fc80 <col:4, line:5157:3> [in] implicitly Param="object" ParamIndex=0
| | `-ParagraphComment 0x56046813fd30 <line:5156:17, line:5157:3>
| | |-TextComment 0x56046813fce0 <line:5156:17, col:36> Text=" The object to test."
| | `-TextComment 0x56046813fd00 <line:5157:3> Text=" "
| |-ParamCommandComment 0x56046813fd50 <col:4, line:5158:3> [in] implicitly Param="type" ParamIndex=1
| | `-ParagraphComment 0x56046813fe00 <line:5157:15, line:5158:3>
| | |-TextComment 0x56046813fdb0 <line:5157:15, col:34> Text=" The id of the type."
| | `-TextComment 0x56046813fdd0 <line:5158:3> Text=" "
| `-BlockCommandComment 0x56046813fe20 <col:4, col:56> Name="return"
| `-ParagraphComment 0x56046813fe80 <col:11, col:56>
| `-TextComment 0x56046813fe50 <col:11, col:56> Text=" True if the pointer is of the specified type."
|-FunctionDecl 0x56046803c378 <line:5176:1, line:5178:24> line:5176:10 ecs_make_pair 'ecs_id_t (ecs_entity_t, ecs_entity_t)'
| |-ParmVarDecl 0x56046803c1e8 <line:5177:5, col:18> col:18 first 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x56046803c260 <line:5178:5, col:18> col:18 second 'ecs_entity_t':'unsigned long'
| `-FullComment 0x5604681401d0 <line:5168:4, line:5173:40>
| |-ParagraphComment 0x56046813ffc0 <line:5168:4, line:5170:75>
| | |-TextComment 0x56046813ff40 <line:5168:4, col:19> Text=" Make a pair id."
| | |-TextComment 0x56046813ff60 <line:5169:3, col:76> Text=" This function is equivalent to using the ecs_pair macro, and is added for"
| | `-TextComment 0x56046813ff80 <line:5170:3, col:75> Text=" convenience to make it easier for non C/C++ bindings to work with pairs."
| |-ParagraphComment 0x560468140010 <line:5172:3>
| | `-TextComment 0x56046813ffe0 <col:3> Text=" "
| |-ParamCommandComment 0x560468140030 <col:4, line:5173:3> [in] implicitly Param="first" ParamIndex=0
| | `-ParagraphComment 0x5604681400e0 <line:5172:16, line:5173:3>
| | |-TextComment 0x560468140090 <line:5172:16, col:58> Text=" The first element of the pair of the pair."
| | `-TextComment 0x5604681400b0 <line:5173:3> Text=" "
| `-ParamCommandComment 0x560468140100 <col:4, col:40> [in] implicitly Param="second" ParamIndex=1
| `-ParagraphComment 0x560468140190 <col:17, col:40>
| `-TextComment 0x560468140160 <col:17, col:40> Text=" The target of the pair."
|-FunctionDecl 0x56046803c618 <line:5205:1, line:5206:23> line:5205:14 ecs_new_id 'ecs_entity_t (ecs_world_t *)'
| |-ParmVarDecl 0x56046803c528 <line:5206:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x560468140500 <line:5196:4, line:5202:29>
| |-ParagraphComment 0x560468140320 <line:5196:4, line:5199:16>
| | |-TextComment 0x560468140280 <line:5196:4, col:25> Text=" Create new entity id."
| | |-TextComment 0x5604681402a0 <line:5197:3, col:78> Text=" This operation returns an unused entity id. This operation is guaranteed to"
| | |-TextComment 0x5604681402c0 <line:5198:3, col:75> Text=" return an empty entity as it does not use values set by ecs_set_scope or"
| | `-TextComment 0x5604681402e0 <line:5199:3, col:16> Text=" ecs_set_with."
| |-ParagraphComment 0x560468140370 <line:5201:3>
| | `-TextComment 0x560468140340 <col:3> Text=" "
| |-ParamCommandComment 0x560468140390 <col:4, line:5202:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468140440 <line:5201:16, line:5202:3>
| | |-TextComment 0x5604681403f0 <line:5201:16, col:26> Text=" The world."
| | `-TextComment 0x560468140410 <line:5202:3> Text=" "
| `-BlockCommandComment 0x560468140460 <col:4, col:29> Name="return"
| `-ParagraphComment 0x5604681404c0 <col:11, col:29>
| `-TextComment 0x560468140490 <col:11, col:29> Text=" The new entity id."
|-FunctionDecl 0x56046803c788 <line:5226:1, line:5227:23> line:5226:14 ecs_new_low_id 'ecs_entity_t (ecs_world_t *)'
| |-ParmVarDecl 0x56046803c6f8 <line:5227:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x560468140970 <line:5208:4, line:5223:32>
| |-ParagraphComment 0x560468140610 <line:5208:4, line:5211:72>
| | |-TextComment 0x560468140570 <line:5208:4, col:22> Text=" Create new low id."
| | |-TextComment 0x560468140590 <line:5209:3, col:66> Text=" This operation returns a new low id. Entity ids start after the"
| | |-TextComment 0x5604681405b0 <line:5210:3, col:77> Text=" ECS_HI_COMPONENT_ID constant. This reserves a range of low ids for things "
| | `-TextComment 0x5604681405d0 <line:5211:3, col:72> Text=" like components, and allows parts of the code to optimize operations."
| |-ParagraphComment 0x5604681406b0 <line:5213:3, line:5215:45>
| | |-TextComment 0x560468140630 <line:5213:3, col:74> Text=" Note that ECS_HI_COMPONENT_ID does not represent the maximum number of "
| | |-TextComment 0x560468140650 <line:5214:3, col:77> Text=" components that can be created, only the maximum number of components that"
| | `-TextComment 0x560468140670 <line:5215:3, col:45> Text=" can take advantage of these optimizations."
| |-ParagraphComment 0x560468140720 <line:5217:3, line:5218:47>
| | |-TextComment 0x5604681406d0 <line:5217:3, col:77> Text=" This operation is guaranteed to return an empty entity as it does not use "
| | `-TextComment 0x5604681406f0 <line:5218:3, col:47> Text=" values set by ecs_set_scope or ecs_set_with."
| |-ParagraphComment 0x560468140770 <line:5220:3, col:39>
| | `-TextComment 0x560468140740 <col:3, col:39> Text=" This operation does not recycle ids."
| |-ParagraphComment 0x5604681407c0 <line:5222:3>
| | `-TextComment 0x560468140790 <col:3> Text=" "
| |-ParamCommandComment 0x5604681407e0 <col:4, line:5223:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468140890 <line:5222:16, line:5223:3>
| | |-TextComment 0x560468140840 <line:5222:16, col:26> Text=" The world."
| | `-TextComment 0x560468140860 <line:5223:3> Text=" "
| `-BlockCommandComment 0x5604681408b0 <col:4, col:32> Name="return"
| `-ParagraphComment 0x560468140910 <col:11, col:32>
| `-TextComment 0x5604681408e0 <col:11, col:32> Text=" The new component id."
|-FunctionDecl 0x56046803c9f8 <line:5238:1, line:5240:16> line:5238:14 ecs_new_w_id 'ecs_entity_t (ecs_world_t *, ecs_id_t)'
| |-ParmVarDecl 0x56046803c868 <line:5239:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803c8e0 <line:5240:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468140d20 <line:5229:4, line:5235:26>
| |-ParagraphComment 0x560468140a60 <line:5229:4, line:5231:73>
| | |-TextComment 0x5604681409e0 <line:5229:4, col:42> Text=" Create new entity with (component) id."
| | |-TextComment 0x560468140a00 <line:5230:3, col:78> Text=" This operation creates a new entity with an optional (component) id. When 0"
| | `-TextComment 0x560468140a20 <line:5231:3, col:73> Text=" is passed to the id paramter, no component is added to the new entity."
| |-ParagraphComment 0x560468140ab0 <line:5233:3>
| | `-TextComment 0x560468140a80 <col:3> Text=" "
| |-ParamCommandComment 0x560468140ad0 <col:4, line:5234:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468140b80 <line:5233:16, line:5234:3>
| | |-TextComment 0x560468140b30 <line:5233:16, col:26> Text=" The world."
| | `-TextComment 0x560468140b50 <line:5234:3> Text=" "
| |-ParamCommandComment 0x560468140ba0 <col:4, line:5235:3> [in] implicitly Param="id" ParamIndex=1
| | `-ParagraphComment 0x560468140c50 <line:5234:13, line:5235:3>
| | |-TextComment 0x560468140c00 <line:5234:13, col:64> Text=" The component id to initialize the new entity with."
| | `-TextComment 0x560468140c20 <line:5235:3> Text=" "
| `-BlockCommandComment 0x560468140c70 <col:4, col:26> Name="return"
| `-ParagraphComment 0x560468140cd0 <col:11, col:26>
| `-TextComment 0x560468140ca0 <col:11, col:26> Text=" The new entity."
|-FunctionDecl 0x56046803dfe8 <line:5261:1, line:5263:34> line:5261:14 ecs_entity_init 'ecs_entity_t (ecs_world_t *, const ecs_entity_desc_t *)'
| |-ParmVarDecl 0x56046803cae8 <line:5262:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803ded0 <line:5263:5, col:30> col:30 desc 'const ecs_entity_desc_t *'
| `-FullComment 0x560468141270 <line:5242:4, line:5258:66>
| |-ParagraphComment 0x560468140e60 <line:5242:4, line:5246:70>
| | |-TextComment 0x560468140d90 <line:5242:4, col:30> Text=" Find or create an entity. "
| | |-TextComment 0x560468140db0 <line:5243:3, col:80> Text=" This operation creates a new entity, or modifies an existing one. When a name"
| | |-TextComment 0x560468140dd0 <line:5244:3, col:79> Text=" is set in the ecs_entity_desc_t::name field and ecs_entity_desc_t::entity is"
| | |-TextComment 0x560468140df0 <line:5245:3, col:79> Text=" not set, the operation will first attempt to find an existing entity by that"
| | `-TextComment 0x560468140e10 <line:5246:3, col:70> Text=" name. If no entity with that name can be found, it will be created."
| |-ParagraphComment 0x560468140f00 <line:5248:3, line:5250:39>
| | |-TextComment 0x560468140e80 <line:5248:3, col:77> Text=" If both a name and entity handle are provided, the operation will check if"
| | |-TextComment 0x560468140ea0 <line:5249:3, col:77> Text=" the entity name matches with the provided name. If the names do not match,"
| | `-TextComment 0x560468140ec0 <line:5250:3, col:39> Text=" the function will fail and return 0."
| |-ParagraphComment 0x560468140f50 <line:5252:3, col:78>
| | `-TextComment 0x560468140f20 <col:3, col:78> Text=" If an id to a non-existing entity is provided, that entity id become alive."
| |-ParagraphComment 0x560468140fa0 <line:5254:3, col:64>
| | `-TextComment 0x560468140f70 <col:3, col:64> Text=" See the documentation of ecs_entity_desc_t for more details. "
| |-ParagraphComment 0x560468140ff0 <line:5256:3>
| | `-TextComment 0x560468140fc0 <col:3> Text=" "
| |-ParamCommandComment 0x560468141010 <col:4, line:5257:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681410c0 <line:5256:16, line:5257:3>
| | |-TextComment 0x560468141070 <line:5256:16, col:26> Text=" The world."
| | `-TextComment 0x560468141090 <line:5257:3> Text=" "
| |-ParamCommandComment 0x5604681410e0 <col:4, line:5258:3> [in] implicitly Param="desc" ParamIndex=1
| | `-ParagraphComment 0x560468141190 <line:5257:15, line:5258:3>
| | |-TextComment 0x560468141140 <line:5257:15, col:38> Text=" Entity init parameters."
| | `-TextComment 0x560468141160 <line:5258:3> Text=" "
| `-BlockCommandComment 0x5604681411b0 <col:4, col:66> Name="return"
| `-ParagraphComment 0x560468141210 <col:11, col:66>
| `-TextComment 0x5604681411e0 <col:11, col:66> Text=" A handle to the new or existing entity, or 0 if failed."
|-FunctionDecl 0x56046803e308 <line:5292:1, line:5294:32> line:5292:21 ecs_bulk_init 'const ecs_entity_t *(ecs_world_t *, const ecs_bulk_desc_t *)'
| |-ParmVarDecl 0x56046803e0d8 <line:5293:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803e1c8 <line:5294:5, col:28> col:28 desc 'const ecs_bulk_desc_t *'
| `-FullComment 0x560468141900 <line:5265:4, line:5289:63>
| |-ParagraphComment 0x560468141360 <line:5265:4, line:5267:16>
| | |-TextComment 0x5604681412e0 <line:5265:4, col:38> Text=" Bulk create/populate new entities."
| | |-TextComment 0x560468141300 <line:5266:3, col:74> Text=" This operation bulk inserts a list of new or predefined entities into a"
| | `-TextComment 0x560468141320 <line:5267:3, col:16> Text=" single table."
| |-ParagraphComment 0x560468141400 <line:5269:3, line:5271:15>
| | |-TextComment 0x560468141380 <line:5269:3, col:76> Text=" The operation does not take ownership of component arrays provided by the"
| | |-TextComment 0x5604681413a0 <line:5270:3, col:77> Text=" application. Components that are non-trivially copyable will be moved into"
| | `-TextComment 0x5604681413c0 <line:5271:3, col:15> Text=" the storage."
| |-ParagraphComment 0x560468141470 <line:5273:3, line:5274:36>
| | |-TextComment 0x560468141420 <line:5273:3, col:79> Text=" The operation will emit OnAdd events for each added id, and OnSet events for"
| | `-TextComment 0x560468141440 <line:5274:3, col:36> Text=" each component that has been set."
| |-ParagraphComment 0x560468141510 <line:5276:3, line:5278:19>
| | |-TextComment 0x560468141490 <line:5276:3, col:78> Text=" If no entity ids are provided by the application, the returned array of ids"
| | |-TextComment 0x5604681414b0 <line:5277:3, col:74> Text=" points to an internal datastructure which changes when new entities are"
| | `-TextComment 0x5604681414d0 <line:5278:3, col:19> Text=" created/deleted."
| |-ParagraphComment 0x560468141620 <line:5280:3, line:5285:12>
| | |-TextComment 0x560468141530 <line:5280:3, col:68> Text=" If as a result of the operation triggers are invoked that deletes"
| | |-TextComment 0x560468141550 <line:5281:3, col:76> Text=" entities and no entity ids were provided by the application, the returned"
| | |-TextComment 0x560468141570 <line:5282:3, col:79> Text=" array of identifiers may be incorrect. To avoid this problem, an application"
| | |-TextComment 0x560468141590 <line:5283:3, col:79> Text=" can first call ecs_bulk_init to create empty entities, copy the array to one"
| | |-TextComment 0x5604681415b0 <line:5284:3, col:76> Text=" that is owned by the application, and then use this array to populate the"
| | `-TextComment 0x5604681415d0 <line:5285:3, col:12> Text=" entities."
| |-ParagraphComment 0x560468141670 <line:5287:3>
| | `-TextComment 0x560468141640 <col:3> Text=" "
| |-ParamCommandComment 0x560468141690 <col:4, line:5288:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468141740 <line:5287:16, line:5288:3>
| | |-TextComment 0x5604681416f0 <line:5287:16, col:26> Text=" The world."
| | `-TextComment 0x560468141710 <line:5288:3> Text=" "
| |-ParamCommandComment 0x560468141760 <col:4, line:5289:3> [in] implicitly Param="desc" ParamIndex=1
| | `-ParagraphComment 0x560468141810 <line:5288:15, line:5289:3>
| | |-TextComment 0x5604681417c0 <line:5288:15, col:40> Text=" Bulk creation parameters."
| | `-TextComment 0x5604681417e0 <line:5289:3> Text=" "
| `-BlockCommandComment 0x560468141830 <col:4, col:63> Name="return"
| `-ParagraphComment 0x560468141890 <col:11, col:63>
| `-TextComment 0x560468141860 <col:11, col:63> Text=" Array with the list of entity ids created/populated."
|-FunctionDecl 0x56046803e608 <line:5306:1, line:5309:18> line:5306:21 ecs_bulk_new_w_id 'const ecs_entity_t *(ecs_world_t *, ecs_id_t, int32_t)'
| |-ParmVarDecl 0x56046803e3f8 <line:5307:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803e470 <line:5308:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| |-ParmVarDecl 0x56046803e4e8 <line:5309:5, col:13> col:13 count 'int32_t':'int'
| `-FullComment 0x560468141d80 <line:5296:4, line:5303:61>
| |-ParagraphComment 0x5604681419f0 <line:5296:4, line:5298:43>
| | |-TextComment 0x560468141970 <line:5296:4, col:26> Text=" Create N new entities."
| | |-TextComment 0x560468141990 <line:5297:3, col:69> Text=" This operation is the same as ecs_new_w_id, but creates N entities"
| | `-TextComment 0x5604681419b0 <line:5298:3, col:43> Text=" instead of one and does not recycle ids."
| |-ParagraphComment 0x560468141a40 <line:5300:3>
| | `-TextComment 0x560468141a10 <col:3> Text=" "
| |-ParamCommandComment 0x560468141a60 <col:4, line:5301:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468141b10 <line:5300:16, line:5301:3>
| | |-TextComment 0x560468141ac0 <line:5300:16, col:26> Text=" The world."
| | `-TextComment 0x560468141ae0 <line:5301:3> Text=" "
| |-ParamCommandComment 0x560468141b30 <col:4, line:5302:3> [in] implicitly Param="id" ParamIndex=1
| | `-ParagraphComment 0x560468141be0 <line:5301:13, line:5302:3>
| | |-TextComment 0x560468141b90 <line:5301:13, col:58> Text=" The component id to create the entities with."
| | `-TextComment 0x560468141bb0 <line:5302:3> Text=" "
| |-ParamCommandComment 0x560468141c00 <col:4, line:5303:3> [in] implicitly Param="count" ParamIndex=2
| | `-ParagraphComment 0x560468141cb0 <line:5302:16, line:5303:3>
| | |-TextComment 0x560468141c60 <line:5302:16, col:49> Text=" The number of entities to create."
| | `-TextComment 0x560468141c80 <line:5303:3> Text=" "
| `-BlockCommandComment 0x560468141cd0 <col:4, col:61> Name="return"
| `-ParagraphComment 0x560468141d30 <col:11, col:61>
| `-TextComment 0x560468141d00 <col:11, col:61> Text=" The first entity id of the newly created entities."
|-FunctionDecl 0x56046803e9a8 <line:5323:1, line:5327:20> line:5323:14 ecs_clone 'ecs_entity_t (ecs_world_t *, ecs_entity_t, ecs_entity_t, bool)'
| |-ParmVarDecl 0x56046803e6f8 <line:5324:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803e770 <line:5325:5, col:18> col:18 dst 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x56046803e7e8 <line:5326:5, col:18> col:18 src 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x56046803e860 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:5327:10> col:10 copy_value 'bool'
| `-FullComment 0x560468142310 <line:5311:4, line:5320:34>
| |-ParagraphComment 0x560468141e90 <line:5311:4, line:5314:51>
| | |-TextComment 0x560468141df0 <line:5311:4, col:19> Text=" Clone an entity"
| | |-TextComment 0x560468141e10 <line:5312:3, col:77> Text=" This operation clones the components of one entity into another entity. If"
| | |-TextComment 0x560468141e30 <line:5313:3, col:77> Text=" no destination entity is provided, a new entity will be created. Component"
| | `-TextComment 0x560468141e50 <line:5314:3, col:51> Text=" values are not copied unless copy_value is true."
| |-ParagraphComment 0x560468141ee0 <line:5316:3>
| | `-TextComment 0x560468141eb0 <col:3> Text=" "
| |-ParamCommandComment 0x560468141f00 <col:4, line:5317:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468141fb0 <line:5316:16, line:5317:3>
| | |-TextComment 0x560468141f60 <line:5316:16, col:26> Text=" The world."
| | `-TextComment 0x560468141f80 <line:5317:3> Text=" "
| |-ParamCommandComment 0x560468141fd0 <col:4, line:5318:3> [in] implicitly Param="dst" ParamIndex=1
| | `-ParagraphComment 0x560468142080 <line:5317:14, line:5318:3>
| | |-TextComment 0x560468142030 <line:5317:14, col:51> Text=" The entity to copy the components to."
| | `-TextComment 0x560468142050 <line:5318:3> Text=" "
| |-ParamCommandComment 0x5604681420a0 <col:4, line:5319:3> [in] implicitly Param="src" ParamIndex=2
| | `-ParagraphComment 0x560468142150 <line:5318:14, line:5319:3>
| | |-TextComment 0x560468142100 <line:5318:14, col:53> Text=" The entity to copy the components from."
| | `-TextComment 0x560468142120 <line:5319:3> Text=" "
| |-ParamCommandComment 0x560468142170 <col:4, line:5320:3> [in] implicitly Param="copy_value" ParamIndex=3
| | `-ParagraphComment 0x560468142220 <line:5319:21, line:5320:3>
| | |-TextComment 0x5604681421d0 <line:5319:21, col:76> Text=" If true, the value of components will be copied to dst."
| | `-TextComment 0x5604681421f0 <line:5320:3> Text=" "
| `-BlockCommandComment 0x560468142250 <col:4, col:34> Name="return"
| `-ParagraphComment 0x5604681422b0 <col:11, col:34>
| `-TextComment 0x560468142280 <col:11, col:34> Text=" The destination entity."
|-FunctionDecl 0x56046803ec38 <line:5339:1, line:5341:24> line:5339:6 ecs_delete 'void (ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x56046803eaa8 <line:5340:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803eb20 <line:5341:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468142660 <line:5329:4, line:5336:28>
| |-ParagraphComment 0x560468142450 <line:5329:4, line:5333:60>
| | |-TextComment 0x560468142380 <line:5329:4, col:21> Text=" Delete an entity."
| | |-TextComment 0x5604681423a0 <line:5330:3, col:80> Text=" This operation will delete an entity and all of its components. The entity id"
| | |-TextComment 0x5604681423c0 <line:5331:3, col:69> Text=" will be recycled. Repeatedly calling ecs_delete without ecs_new or"
| | |-TextComment 0x5604681423e0 <line:5332:3, col:57> Text=" ecs_new_w_id will cause a memory leak as it will cause"
| | `-TextComment 0x560468142400 <line:5333:3, col:60> Text=" the list with ids that can be recycled to grow unbounded."
| |-ParagraphComment 0x5604681424a0 <line:5335:3>
| | `-TextComment 0x560468142470 <col:3> Text=" "
| |-ParamCommandComment 0x5604681424c0 <col:4, line:5336:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468142570 <line:5335:16, line:5336:3>
| | |-TextComment 0x560468142520 <line:5335:16, col:26> Text=" The world."
| | `-TextComment 0x560468142540 <line:5336:3> Text=" "
| `-ParamCommandComment 0x560468142590 <col:4, col:28> [in] implicitly Param="entity" ParamIndex=1
| `-ParagraphComment 0x560468142620 <col:17, col:28>
| `-TextComment 0x5604681425f0 <col:17, col:28> Text=" The entity."
|-FunctionDecl 0x56046803f020 <line:5351:1, line:5353:16> line:5351:6 ecs_delete_with 'void (ecs_world_t *, ecs_id_t)'
| |-ParmVarDecl 0x56046803ed28 <line:5352:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803eda0 <line:5353:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468142960 <line:5343:4, line:5348:20>
| |-ParagraphComment 0x560468142750 <line:5343:4, line:5345:35>
| | |-TextComment 0x5604681426d0 <line:5343:4, col:46> Text=" Delete all entities with the specified id."
| | |-TextComment 0x5604681426f0 <line:5344:3, col:77> Text=" This will delete all entities (tables) that have the specified id. The id "
| | `-TextComment 0x560468142710 <line:5345:3, col:35> Text=" may be a wildcard and/or a pair."
| |-ParagraphComment 0x5604681427a0 <line:5347:3>
| | `-TextComment 0x560468142770 <col:3> Text=" "
| |-ParamCommandComment 0x5604681427c0 <col:4, line:5348:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468142870 <line:5347:16, line:5348:3>
| | |-TextComment 0x560468142820 <line:5347:16, col:26> Text=" The world."
| | `-TextComment 0x560468142840 <line:5348:3> Text=" "
| `-ParamCommandComment 0x560468142890 <col:4, col:20> [in] implicitly Param="id" ParamIndex=1
| `-ParagraphComment 0x560468142920 <col:13, col:20>
| `-TextComment 0x5604681428f0 <col:13, col:20> Text=" The id."
|-FunctionDecl 0x56046803f338 <line:5372:1, line:5375:16> line:5372:6 ecs_add_id 'void (ecs_world_t *, ecs_entity_t, ecs_id_t)'
| |-ParmVarDecl 0x56046803f168 <line:5373:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803f1e0 <line:5374:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x56046803f258 <line:5375:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468142d40 <line:5363:4, line:5369:27>
| |-ParagraphComment 0x560468142a50 <line:5363:4, line:5365:58>
| | |-TextComment 0x5604681429d0 <line:5363:4, col:38> Text=" Add a (component) id to an entity."
| | |-TextComment 0x5604681429f0 <line:5364:3, col:75> Text=" This operation adds a single (component) id to an entity. If the entity "
| | `-TextComment 0x560468142a10 <line:5365:3, col:58> Text=" already has the id, this operation has no side effects."
| |-ParagraphComment 0x560468142aa0 <line:5367:3>
| | `-TextComment 0x560468142a70 <col:3> Text=" "
| |-ParamCommandComment 0x560468142ac0 <col:4, line:5368:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468142b70 <line:5367:16, line:5368:3>
| | |-TextComment 0x560468142b20 <line:5367:16, col:26> Text=" The world."
| | `-TextComment 0x560468142b40 <line:5368:3> Text=" "
| |-ParamCommandComment 0x560468142b90 <col:4, line:5369:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468142c40 <line:5368:17, line:5369:3>
| | |-TextComment 0x560468142bf0 <line:5368:17, col:28> Text=" The entity."
| | `-TextComment 0x560468142c10 <line:5369:3> Text=" "
| `-ParamCommandComment 0x560468142c60 <col:4, col:27> [in] implicitly Param="id" ParamIndex=2
| `-ParagraphComment 0x560468142cf0 <col:13, col:27>
| `-TextComment 0x560468142cc0 <col:13, col:27> Text=" The id to add."
|-FunctionDecl 0x56046803f5b8 <line:5386:1, line:5389:16> line:5386:6 ecs_remove_id 'void (ecs_world_t *, ecs_entity_t, ecs_id_t)'
| |-ParmVarDecl 0x56046803f428 <line:5387:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803f4a0 <line:5388:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x56046803f518 <line:5389:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468143120 <line:5377:4, line:5383:30>
| |-ParagraphComment 0x560468142e30 <line:5377:4, line:5379:60>
| | |-TextComment 0x560468142db0 <line:5377:4, col:43> Text=" Remove a (component) id from an entity."
| | |-TextComment 0x560468142dd0 <line:5378:3, col:78> Text=" This operation removes a single (component) id to an entity. If the entity "
| | `-TextComment 0x560468142df0 <line:5379:3, col:60> Text=" does not have the id, this operation has no side effects."
| |-ParagraphComment 0x560468142e80 <line:5381:3>
| | `-TextComment 0x560468142e50 <col:3> Text=" "
| |-ParamCommandComment 0x560468142ea0 <col:4, line:5382:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468142f50 <line:5381:16, line:5382:3>
| | |-TextComment 0x560468142f00 <line:5381:16, col:26> Text=" The world."
| | `-TextComment 0x560468142f20 <line:5382:3> Text=" "
| |-ParamCommandComment 0x560468142f70 <col:4, line:5383:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468143020 <line:5382:17, line:5383:3>
| | |-TextComment 0x560468142fd0 <line:5382:17, col:28> Text=" The entity."
| | `-TextComment 0x560468142ff0 <line:5383:3> Text=" "
| `-ParamCommandComment 0x560468143040 <col:4, col:30> [in] implicitly Param="id" ParamIndex=2
| `-ParagraphComment 0x5604681430d0 <col:13, col:30>
| `-TextComment 0x5604681430a0 <col:13, col:30> Text=" The id to remove."
|-FunctionDecl 0x56046803f838 <line:5414:1, line:5417:16> line:5414:6 ecs_override_id 'void (ecs_world_t *, ecs_entity_t, ecs_id_t)'
| |-ParmVarDecl 0x56046803f6a8 <line:5415:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803f720 <line:5416:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x56046803f798 <line:5417:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468143730 <line:5391:4, line:5411:32>
| |-ParagraphComment 0x560468143260 <line:5391:4, line:5395:52>
| | |-TextComment 0x560468143190 <line:5391:4, col:36> Text=" Add override for (component) id."
| | |-TextComment 0x5604681431b0 <line:5392:3, col:79> Text=" Adding an override to an entity ensures that when the entity is instantiated"
| | |-TextComment 0x5604681431d0 <line:5393:3, col:75> Text=" (by adding an IsA relationship to it) the component with the override is"
| | |-TextComment 0x5604681431f0 <line:5394:3, col:79> Text=" copied to a component that is private to the instance. By default components"
| | `-TextComment 0x560468143210 <line:5395:3, col:52> Text=" reachable through an IsA relationship are shared."
| |-ParagraphComment 0x560468143350 <line:5397:3, line:5401:61>
| | |-TextComment 0x560468143280 <line:5397:3, col:79> Text=" Adding an override does not add the component. If an override is added to an"
| | |-TextComment 0x5604681432a0 <line:5398:3, col:73> Text=" entity that does not have the component, it will still be added to the"
| | |-TextComment 0x5604681432c0 <line:5399:3, col:79> Text=" instance, but with an uninitialized value (unless the component has a ctor)."
| | |-TextComment 0x5604681432e0 <line:5400:3, col:78> Text=" When the entity does have the entity, the component of the instance will be"
| | `-TextComment 0x560468143300 <line:5401:3, col:61> Text=" initialized with the value of the component on the entity."
| |-ParagraphComment 0x5604681433c0 <line:5403:3, line:5404:53>
| | |-TextComment 0x560468143370 <line:5403:3, col:77> Text=" This is the same as what happens when calling ecs_add_id for an id that is"
| | `-TextComment 0x560468143390 <line:5404:3, col:53> Text=" inherited (reachable through an IsA relationship)."
| |-ParagraphComment 0x560468143430 <line:5406:3, line:5407:50>
| | |-TextComment 0x5604681433e0 <line:5406:3, col:41> Text=" This operation is equivalent to doing:"
| | `-TextComment 0x560468143400 <line:5407:3, col:50> Text=" ecs_add_id(world, entity, ECS_OVERRIDE | id);"
| |-ParagraphComment 0x560468143480 <line:5409:3>
| | `-TextComment 0x560468143450 <col:3> Text=" "
| |-ParamCommandComment 0x5604681434a0 <col:4, line:5410:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468143550 <line:5409:16, line:5410:3>
| | |-TextComment 0x560468143500 <line:5409:16, col:26> Text=" The world."
| | `-TextComment 0x560468143520 <line:5410:3> Text=" "
| |-ParamCommandComment 0x560468143570 <col:4, line:5411:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468143620 <line:5410:17, line:5411:3>
| | |-TextComment 0x5604681435d0 <line:5410:17, col:28> Text=" The entity."
| | `-TextComment 0x5604681435f0 <line:5411:3> Text=" "
| `-ParamCommandComment 0x560468143640 <col:4, col:32> [in] implicitly Param="id" ParamIndex=2
| `-ParagraphComment 0x5604681436d0 <col:13, col:32>
| `-TextComment 0x5604681436a0 <col:13, col:32> Text=" The id to override."
|-FunctionDecl 0x56046803fa38 <line:5428:1, line:5430:24> line:5428:6 ecs_clear 'void (ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x56046803f928 <line:5429:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803f9a0 <line:5430:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468143a50 <line:5419:4, line:5425:28>
| |-ParagraphComment 0x560468143840 <line:5419:4, line:5422:12>
| | |-TextComment 0x5604681437a0 <line:5419:4, col:25> Text=" Clear all components."
| | |-TextComment 0x5604681437c0 <line:5420:3, col:78> Text=" This operation will clear all components from an entity but will not delete"
| | |-TextComment 0x5604681437e0 <line:5421:3, col:73> Text=" the entity itself. This effectively prevents the entity id from being "
| | `-TextComment 0x560468143800 <line:5422:3, col:12> Text=" recycled."
| |-ParagraphComment 0x560468143890 <line:5424:3>
| | `-TextComment 0x560468143860 <col:3> Text=" "
| |-ParamCommandComment 0x5604681438b0 <col:4, line:5425:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468143960 <line:5424:16, line:5425:3>
| | |-TextComment 0x560468143910 <line:5424:16, col:26> Text=" The world."
| | `-TextComment 0x560468143930 <line:5425:3> Text=" "
| `-ParamCommandComment 0x560468143980 <col:4, col:28> [in] implicitly Param="entity" ParamIndex=1
| `-ParagraphComment 0x560468143a10 <col:17, col:28>
| `-TextComment 0x5604681439e0 <col:17, col:28> Text=" The entity."
|-FunctionDecl 0x56046803fc38 <line:5441:1, line:5443:16> line:5441:6 ecs_remove_all 'void (ecs_world_t *, ecs_id_t)'
| |-ParmVarDecl 0x56046803fb28 <line:5442:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803fba0 <line:5443:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468143d50 <line:5433:4, line:5438:20>
| |-ParagraphComment 0x560468143b40 <line:5433:4, line:5435:28>
| | |-TextComment 0x560468143ac0 <line:5433:4, col:45> Text=" Remove all instances of the specified id."
| | |-TextComment 0x560468143ae0 <line:5434:3, col:78> Text=" This will remove the specified id from all entities (tables). Teh id may be"
| | `-TextComment 0x560468143b00 <line:5435:3, col:28> Text=" a wildcard and/or a pair."
| |-ParagraphComment 0x560468143b90 <line:5437:3>
| | `-TextComment 0x560468143b60 <col:3> Text=" "
| |-ParamCommandComment 0x560468143bb0 <col:4, line:5438:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468143c60 <line:5437:16, line:5438:3>
| | |-TextComment 0x560468143c10 <line:5437:16, col:26> Text=" The world."
| | `-TextComment 0x560468143c30 <line:5438:3> Text=" "
| `-ParamCommandComment 0x560468143c80 <col:4, col:20> [in] implicitly Param="id" ParamIndex=1
| `-ParagraphComment 0x560468143d10 <col:13, col:20>
| `-TextComment 0x560468143ce0 <col:13, col:20> Text=" The id."
|-FunctionDecl 0x56046803fe38 <line:5453:1, line:5455:16> line:5453:14 ecs_set_with 'ecs_entity_t (ecs_world_t *, ecs_id_t)'
| |-ParmVarDecl 0x56046803fd28 <line:5454:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046803fda0 <line:5455:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x5604681440d0 <line:5445:4, line:5450:27>
| |-ParagraphComment 0x560468143e10 <line:5445:4, line:5446:64>
| | |-TextComment 0x560468143dc0 <line:5445:4, col:24> Text=" Set current with id."
| | `-TextComment 0x560468143de0 <line:5446:3, col:64> Text=" New entities are automatically created with the specified id."
| |-ParagraphComment 0x560468143e60 <line:5448:3>
| | `-TextComment 0x560468143e30 <col:3> Text=" "
| |-ParamCommandComment 0x560468143e80 <col:4, line:5449:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468143f30 <line:5448:16, line:5449:3>
| | |-TextComment 0x560468143ee0 <line:5448:16, col:26> Text=" The world."
| | `-TextComment 0x560468143f00 <line:5449:3> Text=" "
| |-ParamCommandComment 0x560468143f50 <col:4, line:5450:3> [in] implicitly Param="id" ParamIndex=1
| | `-ParagraphComment 0x560468144000 <line:5449:13, line:5450:3>
| | |-TextComment 0x560468143fb0 <line:5449:13, col:20> Text=" The id."
| | `-TextComment 0x560468143fd0 <line:5450:3> Text=" "
| `-BlockCommandComment 0x560468144020 <col:4, col:27> Name="return"
| `-ParagraphComment 0x560468144080 <col:11, col:27>
| `-TextComment 0x560468144050 <col:11, col:27> Text=" The previous id."
|-FunctionDecl 0x560468040270 <line:5464:1, line:5465:29> line:5464:10 ecs_get_with 'ecs_id_t (const ecs_world_t *)'
| |-ParmVarDecl 0x56046803ff28 <line:5465:5, col:24> col:24 world 'const ecs_world_t *'
| `-FullComment 0x560468144390 <line:5457:4, line:5461:48>
| |-ParagraphComment 0x560468144190 <line:5457:4, line:5458:36>
| | |-TextComment 0x560468144140 <line:5457:4, col:24> Text=" Get current with id."
| | `-TextComment 0x560468144160 <line:5458:3, col:36> Text=" Get the id set with ecs_set_with."
| |-ParagraphComment 0x5604681441e0 <line:5460:3>
| | `-TextComment 0x5604681441b0 <col:3> Text=" "
| |-ParamCommandComment 0x560468144200 <col:4, line:5461:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681442d0 <line:5460:16, line:5461:3>
| | |-TextComment 0x560468144280 <line:5460:16, col:26> Text=" The world."
| | `-TextComment 0x5604681442a0 <line:5461:3> Text=" "
| `-BlockCommandComment 0x5604681442f0 <col:4, col:48> Name="return"
| `-ParagraphComment 0x560468144350 <col:11, col:48>
| `-TextComment 0x560468144320 <col:11, col:48> Text=" The last id provided to ecs_set_with."
|-FunctionDecl 0x5604680405c8 <line:5485:1, line:5488:17> line:5485:6 ecs_enable 'void (ecs_world_t *, ecs_entity_t, bool)'
| |-ParmVarDecl 0x5604680403b8 <line:5486:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468040430 <line:5487:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680404a8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:5488:10> col:10 enabled 'bool'
| `-FullComment 0x560468144790 <line:5475:4, line:5482:62>
| |-ParagraphComment 0x5604681444a0 <line:5475:4, line:5478:62>
| | |-TextComment 0x560468144400 <line:5475:4, col:29> Text=" Enable or disable entity."
| | |-TextComment 0x560468144420 <line:5476:3, col:73> Text=" This operation enables or disables an entity by adding or removing the"
| | |-TextComment 0x560468144440 <line:5477:3, col:75> Text=" EcsDisabled tag. A disabled entity will not be matched with any systems,"
| | `-TextComment 0x560468144460 <line:5478:3, col:62> Text=" unless the system explicitly specifies the EcsDisabled tag."
| |-ParagraphComment 0x5604681444f0 <line:5480:3>
| | `-TextComment 0x5604681444c0 <col:3> Text=" "
| |-ParamCommandComment 0x560468144510 <col:4, line:5481:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681445c0 <line:5480:16, line:5481:3>
| | |-TextComment 0x560468144570 <line:5480:16, col:26> Text=" The world."
| | `-TextComment 0x560468144590 <line:5481:3> Text=" "
| |-ParamCommandComment 0x5604681445e0 <col:4, line:5482:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468144690 <line:5481:17, line:5482:3>
| | |-TextComment 0x560468144640 <line:5481:17, col:49> Text=" The entity to enable or disable."
| | `-TextComment 0x560468144660 <line:5482:3> Text=" "
| `-ParamCommandComment 0x5604681446b0 <col:4, col:62> [in] implicitly Param="enabled" ParamIndex=2
| `-ParagraphComment 0x560468144740 <col:18, col:62>
| `-TextComment 0x560468144710 <col:18, col:62> Text=" true to enable the entity, false to disable."
|-FunctionDecl 0x560468040968 <line:5504:1, line:5508:16> line:5504:6 ecs_enable_id 'void (ecs_world_t *, ecs_entity_t, ecs_id_t, bool)'
| |-ParmVarDecl 0x5604680406b8 <line:5505:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468040730 <line:5506:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680407a8 <line:5507:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| |-ParmVarDecl 0x560468040820 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:5508:10> col:10 enable 'bool'
| `-FullComment 0x560468144ce0 <line:5490:4, line:5501:64>
| |-ParagraphComment 0x560468144920 <line:5490:4, line:5496:40>
| | |-TextComment 0x560468144800 <line:5490:4, col:32> Text=" Enable or disable component."
| | |-TextComment 0x560468144820 <line:5491:3, col:79> Text=" Enabling or disabling a component does not add or remove a component from an"
| | |-TextComment 0x560468144840 <line:5492:3, col:78> Text=" entity, but prevents it from being matched with queries. This operation can"
| | |-TextComment 0x560468144860 <line:5493:3, col:77> Text=" be useful when a component must be temporarily disabled without destroying"
| | |-TextComment 0x560468144880 <line:5494:3, col:76> Text=" its value. It is also a more performant operation for when an application"
| | |-TextComment 0x5604681448a0 <line:5495:3, col:77> Text=" needs to add/remove components at high frequency, as enabling/disabling is"
| | `-TextComment 0x5604681448c0 <line:5496:3, col:40> Text=" cheaper than a regular add or remove."
| |-ParagraphComment 0x560468144970 <line:5498:3>
| | `-TextComment 0x560468144940 <col:3> Text=" "
| |-ParamCommandComment 0x560468144990 <col:4, line:5499:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468144a40 <line:5498:16, line:5499:3>
| | |-TextComment 0x5604681449f0 <line:5498:16, col:26> Text=" The world."
| | `-TextComment 0x560468144a10 <line:5499:3> Text=" "
| |-ParamCommandComment 0x560468144a60 <col:4, line:5500:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468144b10 <line:5499:17, line:5500:3>
| | |-TextComment 0x560468144ac0 <line:5499:17, col:28> Text=" The entity."
| | `-TextComment 0x560468144ae0 <line:5500:3> Text=" "
| |-ParamCommandComment 0x560468144b30 <col:4, line:5501:3> [in] implicitly Param="id" ParamIndex=2
| | `-ParagraphComment 0x560468144be0 <line:5500:13, line:5501:3>
| | |-TextComment 0x560468144b90 <line:5500:13, col:27> Text=" The component."
| | `-TextComment 0x560468144bb0 <line:5501:3> Text=" "
| `-ParamCommandComment 0x560468144c00 <col:4, col:64> [in] implicitly Param="enable" ParamIndex=3
| `-ParagraphComment 0x560468144c90 <col:17, col:64>
| `-TextComment 0x560468144c60 <col:17, col:64> Text=" True to enable the component, false to disable."
|-FunctionDecl 0x560468040c78 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:5524:16> line:5521:6 ecs_is_enabled_id 'bool (const ecs_world_t *, ecs_entity_t, ecs_id_t)'
| |-ParmVarDecl 0x560468040a68 <line:5522:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468040ae0 <line:5523:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560468040b58 <line:5524:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468145180 <line:5510:4, line:5518:61>
| |-ParagraphComment 0x560468144df0 <line:5510:4, line:5513:36>
| | |-TextComment 0x560468144d50 <line:5510:4, col:33> Text=" Test if component is enabled."
| | |-TextComment 0x560468144d70 <line:5511:3, col:76> Text=" Test whether a component is currently enabled or disabled. This operation"
| | |-TextComment 0x560468144d90 <line:5512:3, col:76> Text=" will return true when the entity has the component and if it has not been"
| | `-TextComment 0x560468144db0 <line:5513:3, col:36> Text=" disabled by ecs_enable_component."
| |-ParagraphComment 0x560468144e40 <line:5515:3>
| | `-TextComment 0x560468144e10 <col:3> Text=" "
| |-ParamCommandComment 0x560468144e60 <col:4, line:5516:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468144f10 <line:5515:16, line:5516:3>
| | |-TextComment 0x560468144ec0 <line:5515:16, col:26> Text=" The world."
| | `-TextComment 0x560468144ee0 <line:5516:3> Text=" "
| |-ParamCommandComment 0x560468144f30 <col:4, line:5517:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468144fe0 <line:5516:17, line:5517:3>
| | |-TextComment 0x560468144f90 <line:5516:17, col:28> Text=" The entity."
| | `-TextComment 0x560468144fb0 <line:5517:3> Text=" "
| |-ParamCommandComment 0x560468145000 <col:4, line:5518:3> [in] implicitly Param="id" ParamIndex=2
| | `-ParagraphComment 0x5604681450b0 <line:5517:13, line:5518:3>
| | |-TextComment 0x560468145060 <line:5517:13, col:27> Text=" The component."
| | `-TextComment 0x560468145080 <line:5518:3> Text=" "
| `-BlockCommandComment 0x5604681450d0 <col:4, col:61> Name="return"
| `-ParagraphComment 0x560468145130 <col:11, col:61>
| `-TextComment 0x560468145100 <col:11, col:61> Text=" True if the component is enabled, otherwise false."
|-FunctionDecl 0x560468040fe0 <line:5544:1, line:5547:16> line:5544:13 ecs_get_id 'const void *(const ecs_world_t *, ecs_entity_t, ecs_id_t)'
| |-ParmVarDecl 0x560468040dc8 <line:5545:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468040e40 <line:5546:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560468040eb8 <line:5547:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468145600 <line:5534:4, line:5541:81>
| |-ParagraphComment 0x560468145270 <line:5534:4, line:5536:45>
| | |-TextComment 0x5604681451f0 <line:5534:4, col:44> Text=" Get an immutable pointer to a component."
| | |-TextComment 0x560468145210 <line:5535:3, col:73> Text=" This operation obtains a const pointer to the requested component. The"
| | `-TextComment 0x560468145230 <line:5536:3, col:45> Text=" operation accepts the component entity id."
| |-ParagraphComment 0x5604681452c0 <line:5538:3>
| | `-TextComment 0x560468145290 <col:3> Text=" "
| |-ParamCommandComment 0x5604681452e0 <col:4, line:5539:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468145390 <line:5538:16, line:5539:3>
| | |-TextComment 0x560468145340 <line:5538:16, col:26> Text=" The world."
| | `-TextComment 0x560468145360 <line:5539:3> Text=" "
| |-ParamCommandComment 0x5604681453b0 <col:4, line:5540:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468145460 <line:5539:17, line:5540:3>
| | |-TextComment 0x560468145410 <line:5539:17, col:28> Text=" The entity."
| | `-TextComment 0x560468145430 <line:5540:3> Text=" "
| |-ParamCommandComment 0x560468145480 <col:4, line:5541:3> [in] implicitly Param="id" ParamIndex=2
| | `-ParagraphComment 0x560468145530 <line:5540:13, line:5541:3>
| | |-TextComment 0x5604681454e0 <line:5540:13, col:44> Text=" The id of the component to get."
| | `-TextComment 0x560468145500 <line:5541:3> Text=" "
| `-BlockCommandComment 0x560468145550 <col:4, col:81> Name="return"
| `-ParagraphComment 0x5604681455b0 <col:11, col:81>
| `-TextComment 0x560468145580 <col:11, col:81> Text=" The component pointer, NULL if the entity does not have the component."
|-FunctionDecl 0x560468041538 <line:5560:1, line:5563:16> line:5560:11 ecs_ref_init_id 'ecs_ref_t (const ecs_world_t *, ecs_entity_t, ecs_id_t)'
| |-ParmVarDecl 0x5604680410d8 <line:5561:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468041150 <line:5562:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680411c8 <line:5563:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468145aa0 <line:5549:4, line:5557:25>
| |-ParagraphComment 0x560468145710 <line:5549:4, line:5552:41>
| | |-TextComment 0x560468145670 <line:5549:4, col:27> Text=" Create a component ref."
| | |-TextComment 0x560468145690 <line:5550:3, col:76> Text=" A ref is a handle to an entity + component which caches a small amount of"
| | |-TextComment 0x5604681456b0 <line:5551:3, col:70> Text=" data to reduce overhead of repeatedly accessing the component. Use "
| | `-TextComment 0x5604681456d0 <line:5552:3, col:41> Text=" ecs_ref_get to get the component data."
| |-ParagraphComment 0x560468145760 <line:5554:3>
| | `-TextComment 0x560468145730 <col:3> Text=" "
| |-ParamCommandComment 0x560468145780 <col:4, line:5555:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468145830 <line:5554:16, line:5555:3>
| | |-TextComment 0x5604681457e0 <line:5554:16, col:26> Text=" The world."
| | `-TextComment 0x560468145800 <line:5555:3> Text=" "
| |-ParamCommandComment 0x560468145850 <col:4, line:5556:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468145900 <line:5555:17, line:5556:3>
| | |-TextComment 0x5604681458b0 <line:5555:17, col:28> Text=" The entity."
| | `-TextComment 0x5604681458d0 <line:5556:3> Text=" "
| |-ParamCommandComment 0x560468145920 <col:4, line:5557:3> [in] implicitly Param="id" ParamIndex=2
| | `-ParagraphComment 0x5604681459d0 <line:5556:13, line:5557:3>
| | |-TextComment 0x560468145980 <line:5556:13, col:37> Text=" The id of the component."
| | `-TextComment 0x5604681459a0 <line:5557:3> Text=" "
| `-BlockCommandComment 0x5604681459f0 <col:4, col:25> Name="return"
| `-ParagraphComment 0x560468145a50 <col:11, col:25>
| `-TextComment 0x560468145a20 <col:11, col:25> Text=" The reference."
|-FunctionDecl 0x560468041840 <line:5574:1, line:5577:16> line:5574:7 ecs_ref_get_id 'void *(const ecs_world_t *, ecs_ref_t *, ecs_id_t)'
| |-ParmVarDecl 0x560468041628 <line:5575:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680416a0 <line:5576:5, col:16> col:16 ref 'ecs_ref_t *'
| |-ParmVarDecl 0x560468041718 <line:5577:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468145ef0 <line:5565:4, line:5571:81>
| |-ParagraphComment 0x560468145b60 <line:5565:4, line:5566:77>
| | |-TextComment 0x560468145b10 <line:5565:4, col:27> Text=" Get component from ref."
| | `-TextComment 0x560468145b30 <line:5566:3, col:77> Text=" Get component pointer from ref. The ref must be created with ecs_ref_init."
| |-ParagraphComment 0x560468145bb0 <line:5568:3>
| | `-TextComment 0x560468145b80 <col:3> Text=" "
| |-ParamCommandComment 0x560468145bd0 <col:4, line:5569:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468145c80 <line:5568:16, line:5569:3>
| | |-TextComment 0x560468145c30 <line:5568:16, col:26> Text=" The world."
| | `-TextComment 0x560468145c50 <line:5569:3> Text=" "
| |-ParamCommandComment 0x560468145ca0 <col:4, line:5570:3> [in] implicitly Param="ref" ParamIndex=1
| | `-ParagraphComment 0x560468145d50 <line:5569:14, line:5570:3>
| | |-TextComment 0x560468145d00 <line:5569:14, col:22> Text=" The ref."
| | `-TextComment 0x560468145d20 <line:5570:3> Text=" "
| |-ParamCommandComment 0x560468145d70 <col:4, line:5571:3> [in] implicitly Param="id" ParamIndex=2
| | `-ParagraphComment 0x560468145e20 <line:5570:13, line:5571:3>
| | |-TextComment 0x560468145dd0 <line:5570:13, col:30> Text=" The component id."
| | `-TextComment 0x560468145df0 <line:5571:3> Text=" "
| `-BlockCommandComment 0x560468145e40 <col:4, col:81> Name="return"
| `-ParagraphComment 0x560468145ea0 <col:11, col:81>
| `-TextComment 0x560468145e70 <col:11, col:81> Text=" The component pointer, NULL if the entity does not have the component."
|-FunctionDecl 0x560468041ac8 <line:5587:1, line:5589:19> line:5587:6 ecs_ref_update 'void (const ecs_world_t *, ecs_ref_t *)'
| |-ParmVarDecl 0x560468041938 <line:5588:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680419b0 <line:5589:5, col:16> col:16 ref 'ecs_ref_t *'
| `-FullComment 0x5604681461f0 <line:5579:4, line:5584:22>
| |-ParagraphComment 0x560468145fe0 <line:5579:4, line:5581:35>
| | |-TextComment 0x560468145f60 <line:5579:4, col:15> Text=" Update ref."
| | |-TextComment 0x560468145f80 <line:5580:3, col:79> Text=" Ensures contents of ref are up to date. Same as ecs_ref_get_id, but does not"
| | `-TextComment 0x560468145fa0 <line:5581:3, col:35> Text=" return pointer to component id. "
| |-ParagraphComment 0x560468146030 <line:5583:3>
| | `-TextComment 0x560468146000 <col:3> Text=" "
| |-ParamCommandComment 0x560468146050 <col:4, line:5584:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468146100 <line:5583:16, line:5584:3>
| | |-TextComment 0x5604681460b0 <line:5583:16, col:26> Text=" The world."
| | `-TextComment 0x5604681460d0 <line:5584:3> Text=" "
| `-ParamCommandComment 0x560468146120 <col:4, col:22> [in] implicitly Param="ref" ParamIndex=1
| `-ParagraphComment 0x5604681461b0 <col:14, col:22>
| `-TextComment 0x560468146180 <col:14, col:22> Text=" The ref."
|-FunctionDecl 0x560468041dd0 <line:5605:1, line:5608:16> line:5605:7 ecs_get_mut_id 'void *(ecs_world_t *, ecs_entity_t, ecs_id_t)'
| |-ParmVarDecl 0x560468041bb8 <line:5606:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468041c30 <line:5607:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560468041ca8 <line:5608:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468146720 <line:5591:4, line:5602:33>
| |-ParagraphComment 0x560468146310 <line:5591:4, line:5594:68>
| | |-TextComment 0x560468146270 <line:5591:4, col:41> Text=" Get a mutable pointer to a component."
| | |-TextComment 0x560468146290 <line:5592:3, col:68> Text=" This operation is similar to ecs_get_id but it returns a mutable "
| | |-TextComment 0x5604681462b0 <line:5593:3, col:78> Text=" pointer. If this operation is invoked from inside a system, the entity will"
| | `-TextComment 0x5604681462d0 <line:5594:3, col:68> Text=" be staged and a pointer to the staged component will be returned."
| |-ParagraphComment 0x560468146380 <line:5596:3, line:5597:79>
| | |-TextComment 0x560468146330 <line:5596:3, col:79> Text=" If the entity did not yet have the component, the component will be added by"
| | `-TextComment 0x560468146350 <line:5597:3, col:79> Text=" this operation. In this case the is_added out parameter will be set to true."
| |-ParagraphComment 0x5604681463d0 <line:5599:3>
| | `-TextComment 0x5604681463a0 <col:3> Text=" "
| |-ParamCommandComment 0x5604681463f0 <col:4, line:5600:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681464a0 <line:5599:16, line:5600:3>
| | |-TextComment 0x560468146450 <line:5599:16, col:26> Text=" The world."
| | `-TextComment 0x560468146470 <line:5600:3> Text=" "
| |-ParamCommandComment 0x5604681464c0 <col:4, line:5601:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468146570 <line:5600:17, line:5601:3>
| | |-TextComment 0x560468146520 <line:5600:17, col:28> Text=" The entity."
| | `-TextComment 0x560468146540 <line:5601:3> Text=" "
| |-ParamCommandComment 0x560468146590 <col:4, line:5602:3> [in] implicitly Param="id" ParamIndex=2
| | `-ParagraphComment 0x560468146640 <line:5601:13, line:5602:3>
| | |-TextComment 0x5604681465f0 <line:5601:13, col:54> Text=" The entity id of the component to obtain."
| | `-TextComment 0x560468146610 <line:5602:3> Text=" "
| `-BlockCommandComment 0x560468146660 <col:4, col:33> Name="return"
| `-ParagraphComment 0x5604681466c0 <col:11, col:33>
| `-TextComment 0x560468146690 <col:11, col:33> Text=" The component pointer."
|-FunctionDecl 0x560468042058 <line:5629:1, line:5631:24> line:5629:15 ecs_write_begin 'ecs_record_t *(ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x560468041ec8 <line:5630:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468041f40 <line:5631:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468146c60 <line:5610:4, line:5626:34>
| |-ParagraphComment 0x560468146810 <line:5610:4, line:5612:48>
| | |-TextComment 0x560468146790 <line:5610:4, col:43> Text=" Begin exclusive write access to entity."
| | |-TextComment 0x5604681467b0 <line:5611:3, col:79> Text=" This operation provides safe exclusive access to the components of an entity"
| | `-TextComment 0x5604681467d0 <line:5612:3, col:48> Text=" without the overhead of deferring operations."
| |-ParagraphComment 0x5604681468d0 <line:5614:3, line:5617:39>
| | |-TextComment 0x560468146830 <line:5614:3, col:77> Text=" When this operation is called simultaneously for the same entity more than"
| | |-TextComment 0x560468146850 <line:5615:3, col:78> Text=" once it will throw an assert. Note that for this to happen, asserts must be"
| | |-TextComment 0x560468146870 <line:5616:3, col:79> Text=" enabled. It is up to the application to ensure that access is exclusive, for"
| | `-TextComment 0x560468146890 <line:5617:3, col:39> Text=" example by using a read-write mutex."
| |-ParagraphComment 0x560468146940 <line:5619:3, line:5620:77>
| | |-TextComment 0x5604681468f0 <line:5619:3, col:77> Text=" Exclusive access is enforced at the table level, so only one entity can be"
| | `-TextComment 0x560468146910 <line:5620:3, col:77> Text=" exclusively accessed per table. The exclusive access check is thread safe."
| |-ParagraphComment 0x560468146990 <line:5622:3, col:57>
| | `-TextComment 0x560468146960 <col:3, col:57> Text=" This operation must be followed up with ecs_write_end."
| |-ParagraphComment 0x5604681469e0 <line:5624:3>
| | `-TextComment 0x5604681469b0 <col:3> Text=" "
| |-ParamCommandComment 0x560468146a00 <col:4, line:5625:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468146ab0 <line:5624:16, line:5625:3>
| | |-TextComment 0x560468146a60 <line:5624:16, col:26> Text=" The world."
| | `-TextComment 0x560468146a80 <line:5625:3> Text=" "
| |-ParamCommandComment 0x560468146ad0 <col:4, line:5626:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468146b80 <line:5625:17, line:5626:3>
| | |-TextComment 0x560468146b30 <line:5625:17, col:28> Text=" The entity."
| | `-TextComment 0x560468146b50 <line:5626:3> Text=" "
| `-BlockCommandComment 0x560468146ba0 <col:4, col:34> Name="return"
| `-ParagraphComment 0x560468146c00 <col:11, col:34>
| `-TextComment 0x560468146bd0 <col:11, col:34> Text=" A record to the entity."
|-FunctionDecl 0x560468042238 <line:5640:1, line:5641:25> line:5640:6 ecs_write_end 'void (ecs_record_t *)'
| |-ParmVarDecl 0x560468042148 <line:5641:5, col:19> col:19 record 'ecs_record_t *'
| `-FullComment 0x560468146e90 <line:5633:4, line:5637:38>
| |-ParagraphComment 0x560468146d50 <line:5633:4, line:5635:19>
| | |-TextComment 0x560468146cd0 <line:5633:4, col:41> Text=" End exclusive write access to entity."
| | |-TextComment 0x560468146cf0 <line:5634:3, col:66> Text=" This operation ends exclusive access, and must be called after "
| | `-TextComment 0x560468146d10 <line:5635:3, col:19> Text=" ecs_write_begin."
| |-ParagraphComment 0x560468146da0 <line:5637:3>
| | `-TextComment 0x560468146d70 <col:3> Text=" "
| `-ParamCommandComment 0x560468146dc0 <col:4, col:38> [in] implicitly Param="record" ParamIndex=0
| `-ParagraphComment 0x560468146e50 <col:17, col:38>
| `-TextComment 0x560468146e20 <col:17, col:38> Text=" Record to the entity."
|-FunctionDecl 0x5604680426b8 <line:5663:1, line:5665:24> line:5663:21 ecs_read_begin 'const ecs_record_t *(ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x560468042318 <line:5664:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468042390 <line:5665:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468147400 <line:5643:4, line:5660:34>
| |-ParagraphComment 0x560468146f80 <line:5643:4, line:5645:54>
| | |-TextComment 0x560468146f00 <line:5643:4, col:32> Text=" Begin read access to entity."
| | |-TextComment 0x560468146f20 <line:5644:3, col:75> Text=" This operation provides safe read access to the components of an entity."
| | `-TextComment 0x560468146f40 <line:5645:3, col:54> Text=" Multiple simultaneous reads are allowed per entity."
| |-ParagraphComment 0x560468147040 <line:5647:3, line:5650:28>
| | |-TextComment 0x560468146fa0 <line:5647:3, col:80> Text=" This operation ensures that code attempting to mutate the entity's table will"
| | |-TextComment 0x560468146fc0 <line:5648:3, col:80> Text=" throw an assert. Note that for this to happen, asserts must be enabled. It is"
| | |-TextComment 0x560468146fe0 <line:5649:3, col:76> Text=" up to the application to ensure that this does not happen, for example by"
| | `-TextComment 0x560468147000 <line:5650:3, col:28> Text=" using a read-write mutex."
| |-ParagraphComment 0x5604681470e0 <line:5652:3, line:5654:61>
| | |-TextComment 0x560468147060 <line:5652:3, col:79> Text=" This operation does *not* provide the same guarantees as a read-write mutex,"
| | |-TextComment 0x560468147080 <line:5653:3, col:80> Text=" as it is possible to call ecs_read_begin after calling ecs_write_begin. It is"
| | `-TextComment 0x5604681470a0 <line:5654:3, col:61> Text=" up to application has to ensure that this does not happen."
| |-ParagraphComment 0x560468147130 <line:5656:3, col:56>
| | `-TextComment 0x560468147100 <col:3, col:56> Text=" This operation must be followed up with ecs_read_end."
| |-ParagraphComment 0x560468147180 <line:5658:3>
| | `-TextComment 0x560468147150 <col:3> Text=" "
| |-ParamCommandComment 0x5604681471a0 <col:4, line:5659:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468147250 <line:5658:16, line:5659:3>
| | |-TextComment 0x560468147200 <line:5658:16, col:26> Text=" The world."
| | `-TextComment 0x560468147220 <line:5659:3> Text=" "
| |-ParamCommandComment 0x560468147270 <col:4, line:5660:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468147320 <line:5659:17, line:5660:3>
| | |-TextComment 0x5604681472d0 <line:5659:17, col:28> Text=" The entity."
| | `-TextComment 0x5604681472f0 <line:5660:3> Text=" "
| `-BlockCommandComment 0x560468147340 <col:4, col:34> Name="return"
| `-ParagraphComment 0x5604681473a0 <col:11, col:34>
| `-TextComment 0x560468147370 <col:11, col:34> Text=" A record to the entity."
|-FunctionDecl 0x560468042898 <line:5673:1, line:5674:31> line:5673:6 ecs_read_end 'void (const ecs_record_t *)'
| |-ParmVarDecl 0x5604680427a8 <line:5674:5, col:25> col:25 record 'const ecs_record_t *'
| `-FullComment 0x560468147600 <line:5667:4, line:5670:38>
| |-ParagraphComment 0x5604681474c0 <line:5667:4, line:5668:76>
| | |-TextComment 0x560468147470 <line:5667:4, col:30> Text=" End read access to entity."
| | `-TextComment 0x560468147490 <line:5668:3, col:76> Text=" This operation ends read access, and must be called after ecs_read_begin."
| |-ParagraphComment 0x560468147510 <line:5670:3>
| | `-TextComment 0x5604681474e0 <col:3> Text=" "
| `-ParamCommandComment 0x560468147530 <col:4, col:38> [in] implicitly Param="record" ParamIndex=0
| `-ParagraphComment 0x5604681475c0 <col:17, col:38>
| `-TextComment 0x560468147590 <col:17, col:38> Text=" Record to the entity."
|-FunctionDecl 0x560468042b90 <line:5690:1, line:5693:16> line:5690:13 ecs_record_get_id 'const void *(ecs_world_t *, const ecs_record_t *, ecs_id_t)'
| |-ParmVarDecl 0x560468042978 <line:5691:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680429f0 <line:5692:5, col:25> col:25 record 'const ecs_record_t *'
| |-ParmVarDecl 0x560468042a68 <line:5693:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468147b20 <line:5676:4, line:5687:79>
| |-ParagraphComment 0x560468147710 <line:5676:4, line:5679:53>
| | |-TextComment 0x560468147670 <line:5676:4, col:37> Text=" Get component from entity record."
| | |-TextComment 0x560468147690 <line:5677:3, col:66> Text=" This operation returns a pointer to a component for the entity "
| | |-TextComment 0x5604681476b0 <line:5678:3, col:80> Text=" associated with the provided record. For safe access to the component, obtain"
| | `-TextComment 0x5604681476d0 <line:5679:3, col:53> Text=" the record with ecs_read_begin or ecs_write_begin."
| |-ParagraphComment 0x560468147780 <line:5681:3, line:5682:63>
| | |-TextComment 0x560468147730 <line:5681:3, col:75> Text=" Obtaining a component from a record is faster than obtaining it from the"
| | `-TextComment 0x560468147750 <line:5682:3, col:63> Text=" entity handle, as it reduces the number of lookups required."
| |-ParagraphComment 0x5604681477d0 <line:5684:3>
| | `-TextComment 0x5604681477a0 <col:3> Text=" "
| |-ParamCommandComment 0x5604681477f0 <col:4, line:5685:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681478a0 <line:5684:16, line:5685:3>
| | |-TextComment 0x560468147850 <line:5684:16, col:26> Text=" The world."
| | `-TextComment 0x560468147870 <line:5685:3> Text=" "
| |-ParamCommandComment 0x5604681478c0 <col:4, line:5686:3> [in] implicitly Param="record" ParamIndex=1
| | `-ParagraphComment 0x560468147970 <line:5685:17, line:5686:3>
| | |-TextComment 0x560468147920 <line:5685:17, col:38> Text=" Record to the entity."
| | `-TextComment 0x560468147940 <line:5686:3> Text=" "
| |-ParamCommandComment 0x560468147990 <col:4, line:5687:3> [in] implicitly Param="id" ParamIndex=2
| | `-ParagraphComment 0x560468147a40 <line:5686:13, line:5687:3>
| | |-TextComment 0x5604681479f0 <line:5686:13, col:32> Text=" The (component) id."
| | `-TextComment 0x560468147a10 <line:5687:3> Text=" "
| `-BlockCommandComment 0x560468147a60 <col:4, col:79> Name="return"
| `-ParagraphComment 0x560468147ac0 <col:11, col:79>
| `-TextComment 0x560468147a90 <col:11, col:79> Text=" Pointer to component, or NULL if entity does not have the component."
|-FunctionDecl 0x560468042ea0 <line:5704:1, line:5707:16> line:5704:7 ecs_record_get_mut_id 'void *(ecs_world_t *, ecs_record_t *, ecs_id_t)'
| |-ParmVarDecl 0x560468042c88 <line:5705:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468042d00 <line:5706:5, col:19> col:19 record 'ecs_record_t *'
| |-ParmVarDecl 0x560468042d78 <line:5707:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468147f70 <line:5695:4, line:5701:79>
| |-ParagraphComment 0x560468147be0 <line:5695:4, line:5696:76>
| | |-TextComment 0x560468147b90 <line:5695:4, col:61> Text=" Same as ecs_record_get_id, but returns a mutable pointer."
| | `-TextComment 0x560468147bb0 <line:5696:3, col:76> Text=" For safe access to the component, obtain the record with ecs_write_begin."
| |-ParagraphComment 0x560468147c30 <line:5698:3>
| | `-TextComment 0x560468147c00 <col:3> Text=" "
| |-ParamCommandComment 0x560468147c50 <col:4, line:5699:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468147d00 <line:5698:16, line:5699:3>
| | |-TextComment 0x560468147cb0 <line:5698:16, col:26> Text=" The world."
| | `-TextComment 0x560468147cd0 <line:5699:3> Text=" "
| |-ParamCommandComment 0x560468147d20 <col:4, line:5700:3> [in] implicitly Param="record" ParamIndex=1
| | `-ParagraphComment 0x560468147dd0 <line:5699:17, line:5700:3>
| | |-TextComment 0x560468147d80 <line:5699:17, col:38> Text=" Record to the entity."
| | `-TextComment 0x560468147da0 <line:5700:3> Text=" "
| |-ParamCommandComment 0x560468147df0 <col:4, line:5701:3> [in] implicitly Param="id" ParamIndex=2
| | `-ParagraphComment 0x560468147ea0 <line:5700:13, line:5701:3>
| | |-TextComment 0x560468147e50 <line:5700:13, col:32> Text=" The (component) id."
| | `-TextComment 0x560468147e70 <line:5701:3> Text=" "
| `-BlockCommandComment 0x560468147ec0 <col:4, col:79> Name="return"
| `-ParagraphComment 0x560468147f20 <col:11, col:79>
| `-TextComment 0x560468147ef0 <col:11, col:79> Text=" Pointer to component, or NULL if entity does not have the component."
|-FunctionDecl 0x560468043130 <line:5723:1, line:5726:16> line:5723:7 ecs_emplace_id 'void *(ecs_world_t *, ecs_entity_t, ecs_id_t)'
| |-ParmVarDecl 0x560468042f98 <line:5724:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468043010 <line:5725:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560468043088 <line:5726:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x5604681484a0 <line:5709:4, line:5720:49>
| |-ParagraphComment 0x560468148080 <line:5709:4, line:5712:27>
| | |-TextComment 0x560468147fe0 <line:5709:4, col:24> Text=" Emplace a component."
| | |-TextComment 0x560468148000 <line:5710:3, col:77> Text=" Emplace is similar to get_mut except that the component constructor is not"
| | |-TextComment 0x560468148020 <line:5711:3, col:79> Text=" invoked for the returned pointer, allowing the component to be "constructed""
| | `-TextComment 0x560468148040 <line:5712:3, col:27> Text=" directly in the storage."
| |-ParagraphComment 0x5604681480f0 <line:5714:3, line:5715:57>
| | |-TextComment 0x5604681480a0 <line:5714:3, col:77> Text=" Emplace can only be used if the entity does not yet have the component. If"
| | `-TextComment 0x5604681480c0 <line:5715:3, col:57> Text=" the entity has the component, the operation will fail."
| |-ParagraphComment 0x560468148140 <line:5717:3>
| | `-TextComment 0x560468148110 <col:3> Text=" "
| |-ParamCommandComment 0x560468148160 <col:4, line:5718:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468148210 <line:5717:16, line:5718:3>
| | |-TextComment 0x5604681481c0 <line:5717:16, col:26> Text=" The world."
| | `-TextComment 0x5604681481e0 <line:5718:3> Text=" "
| |-ParamCommandComment 0x560468148230 <col:4, line:5719:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x5604681482f0 <line:5718:17, line:5719:3>
| | |-TextComment 0x5604681482a0 <line:5718:17, col:28> Text=" The entity."
| | `-TextComment 0x5604681482c0 <line:5719:3> Text=" "
| |-ParamCommandComment 0x560468148310 <col:4, line:5720:3> [in] implicitly Param="id" ParamIndex=2
| | `-ParagraphComment 0x5604681483c0 <line:5719:13, line:5720:3>
| | |-TextComment 0x560468148370 <line:5719:13, col:37> Text=" The component to obtain."
| | `-TextComment 0x560468148390 <line:5720:3> Text=" "
| `-BlockCommandComment 0x5604681483e0 <col:4, col:49> Name="return"
| `-ParagraphComment 0x560468148440 <col:11, col:49>
| `-TextComment 0x560468148410 <col:11, col:49> Text=" The (uninitialized) component pointer."
|-FunctionDecl 0x5604680433b8 <line:5739:1, line:5742:16> line:5739:6 ecs_modified_id 'void (ecs_world_t *, ecs_entity_t, ecs_id_t)'
| |-ParmVarDecl 0x560468043228 <line:5740:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680432a0 <line:5741:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560468043318 <line:5742:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x5604681488d0 <line:5728:4, line:5736:55>
| |-ParagraphComment 0x560468148590 <line:5728:4, line:5730:61>
| | |-TextComment 0x560468148510 <line:5728:4, col:46> Text=" Signal that a component has been modified."
| | |-TextComment 0x560468148530 <line:5729:3, col:79> Text=" This operation allows an application to signal to Flecs that a component has"
| | `-TextComment 0x560468148550 <line:5730:3, col:61> Text=" been modified. As a result, OnSet systems will be invoked."
| |-ParagraphComment 0x5604681485e0 <line:5732:3, col:61>
| | `-TextComment 0x5604681485b0 <col:3, col:61> Text=" This operation is commonly used together with ecs_get_mut."
| |-ParagraphComment 0x560468148630 <line:5734:3>
| | `-TextComment 0x560468148600 <col:3> Text=" "
| |-ParamCommandComment 0x560468148650 <col:4, line:5735:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468148700 <line:5734:16, line:5735:3>
| | |-TextComment 0x5604681486b0 <line:5734:16, col:26> Text=" The world."
| | `-TextComment 0x5604681486d0 <line:5735:3> Text=" "
| |-ParamCommandComment 0x560468148720 <col:4, line:5736:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x5604681487d0 <line:5735:17, line:5736:3>
| | |-TextComment 0x560468148780 <line:5735:17, col:28> Text=" The entity."
| | `-TextComment 0x5604681487a0 <line:5736:3> Text=" "
| `-ParamCommandComment 0x5604681487f0 <col:4, col:55> [in] implicitly Param="id" ParamIndex=2
| `-ParagraphComment 0x560468148880 <col:13, col:55>
| `-TextComment 0x560468148850 <col:13, col:55> Text=" The id of the component that was modified."
|-FunctionDecl 0x5604680439b8 <line:5758:1, line:5763:20> line:5758:14 ecs_set_id 'ecs_entity_t (ecs_world_t *, ecs_entity_t, ecs_id_t, size_t, const void *)'
| |-ParmVarDecl 0x5604680434a8 <line:5759:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468043520 <line:5760:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560468043598 <line:5761:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| |-ParmVarDecl 0x5604680437e0 <line:5762:5, col:12> col:12 size 'size_t':'unsigned long'
| |-ParmVarDecl 0x560468043860 <line:5763:5, col:17> col:17 ptr 'const void *'
| `-FullComment 0x560468148f60 <line:5744:4, line:5755:62>
| |-ParagraphComment 0x5604681489c0 <line:5744:4, line:5746:67>
| | |-TextComment 0x560468148940 <line:5744:4, col:33> Text=" Set the value of a component."
| | |-TextComment 0x560468148960 <line:5745:3, col:76> Text=" This operation allows an application to set the value of a component. The"
| | `-TextComment 0x560468148980 <line:5746:3, col:67> Text=" operation is equivalent to calling ecs_get_mut and ecs_modified."
| |-ParagraphComment 0x560468148a10 <line:5748:3, col:61>
| | `-TextComment 0x5604681489e0 <col:3, col:61> Text=" If the provided entity is 0, a new entity will be created."
| |-ParagraphComment 0x560468148a60 <line:5750:3>
| | `-TextComment 0x560468148a30 <col:3> Text=" "
| |-ParamCommandComment 0x560468148a80 <col:4, line:5751:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468148b30 <line:5750:16, line:5751:3>
| | |-TextComment 0x560468148ae0 <line:5750:16, col:26> Text=" The world."
| | `-TextComment 0x560468148b00 <line:5751:3> Text=" "
| |-ParamCommandComment 0x560468148b50 <col:4, line:5752:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468148c00 <line:5751:17, line:5752:3>
| | |-TextComment 0x560468148bb0 <line:5751:17, col:28> Text=" The entity."
| | `-TextComment 0x560468148bd0 <line:5752:3> Text=" "
| |-ParamCommandComment 0x560468148c20 <col:4, line:5753:3> [in] implicitly Param="id" ParamIndex=2
| | `-ParagraphComment 0x560468148cd0 <line:5752:13, line:5753:3>
| | |-TextComment 0x560468148c80 <line:5752:13, col:44> Text=" The id of the component to set."
| | `-TextComment 0x560468148ca0 <line:5753:3> Text=" "
| |-ParamCommandComment 0x560468148cf0 <col:4, line:5754:3> [in] implicitly Param="size" ParamIndex=3
| | `-ParagraphComment 0x560468148da0 <line:5753:15, line:5754:3>
| | |-TextComment 0x560468148d50 <line:5753:15, col:52> Text=" The size of the pointer to the value."
| | `-TextComment 0x560468148d70 <line:5754:3> Text=" "
| |-ParamCommandComment 0x560468148dc0 <col:4, line:5755:3> [in] implicitly Param="ptr" ParamIndex=4
| | `-ParagraphComment 0x560468148e70 <line:5754:14, line:5755:3>
| | |-TextComment 0x560468148e20 <line:5754:14, col:39> Text=" The pointer to the value."
| | `-TextComment 0x560468148e40 <line:5755:3> Text=" "
| `-BlockCommandComment 0x560468148e90 <col:4, col:62> Name="return"
| `-ParagraphComment 0x560468148ef0 <col:11, col:62>
| `-TextComment 0x560468148ec0 <col:11, col:62> Text=" The entity. A new entity if no entity was provided."
|-FunctionDecl 0x560468043ca8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:5794:19> line:5792:6 ecs_is_valid 'bool (const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x560468043b18 <line:5793:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468043b90 <line:5794:5, col:18> col:18 e 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468149490 <line:5773:4, line:5789:73>
| |-ParagraphComment 0x560468149020 <line:5773:4, line:5774:58>
| | |-TextComment 0x560468148fd0 <line:5773:4, col:36> Text=" Test whether an entity is valid."
| | `-TextComment 0x560468148ff0 <line:5774:3, col:58> Text=" Entities that are valid can be used with API functions."
| |-ParagraphComment 0x560468149090 <line:5776:3, line:5777:65>
| | |-TextComment 0x560468149040 <line:5776:3, col:78> Text=" An entity is valid if it is not 0 and if it is alive. If the provided id is"
| | `-TextComment 0x560468149060 <line:5777:3, col:65> Text=" a pair, the contents of the pair will be checked for validity."
| |-ParagraphComment 0x560468149150 <line:5779:3, line:5782:34>
| | |-TextComment 0x5604681490b0 <line:5779:3, col:80> Text=" is_valid will return true for ids that don't exist (alive or not alive). This"
| | |-TextComment 0x5604681490d0 <line:5780:3, col:78> Text=" allows for using ids that have never been created by ecs_new or similar. In"
| | |-TextComment 0x5604681490f0 <line:5781:3, col:75> Text=" this the function differs from ecs_is_alive, which will return false for"
| | `-TextComment 0x560468149110 <line:5782:3, col:34> Text=" entities that do not yet exist."
| |-ParagraphComment 0x5604681491c0 <line:5784:3, line:5785:64>
| | |-TextComment 0x560468149170 <line:5784:3, col:77> Text=" The operation will return false for an id that exists and is not alive, as"
| | `-TextComment 0x560468149190 <line:5785:3, col:64> Text=" using this id with an API operation would cause it to assert."
| |-ParagraphComment 0x560468149210 <line:5787:3>
| | `-TextComment 0x5604681491e0 <col:3> Text=" "
| |-ParamCommandComment 0x560468149230 <col:4, line:5788:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681492e0 <line:5787:16, line:5788:3>
| | |-TextComment 0x560468149290 <line:5787:16, col:26> Text=" The world."
| | `-TextComment 0x5604681492b0 <line:5788:3> Text=" "
| |-ParamCommandComment 0x560468149300 <col:4, line:5789:3> [in] implicitly Param="e" ParamIndex=1
| | `-ParagraphComment 0x5604681493b0 <line:5788:12, line:5789:3>
| | |-TextComment 0x560468149360 <line:5788:12, col:23> Text=" The entity."
| | `-TextComment 0x560468149380 <line:5789:3> Text=" "
| `-BlockCommandComment 0x5604681493d0 <col:4, col:73> Name="return"
| `-ParagraphComment 0x560468149430 <col:11, col:73>
| `-TextComment 0x560468149400 <col:11, col:73> Text=" True if the entity is valid, false if the entity is not valid."
|-FunctionDecl 0x560468043ea8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:5807:19> line:5805:6 ecs_is_alive 'bool (const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x560468043d98 <line:5806:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468043e10 <line:5807:5, col:18> col:18 e 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468149840 <line:5796:4, line:5802:73>
| |-ParagraphComment 0x560468149580 <line:5796:4, line:5798:70>
| | |-TextComment 0x560468149500 <line:5796:4, col:36> Text=" Test whether an entity is alive."
| | |-TextComment 0x560468149520 <line:5797:3, col:77> Text=" An entity is alive when it has been returned by ecs_new (or similar) or if"
| | `-TextComment 0x560468149540 <line:5798:3, col:70> Text=" it is not empty (componentts have been explicitly added to the id)."
| |-ParagraphComment 0x5604681495d0 <line:5800:3>
| | `-TextComment 0x5604681495a0 <col:3> Text=" "
| |-ParamCommandComment 0x5604681495f0 <col:4, line:5801:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681496a0 <line:5800:16, line:5801:3>
| | |-TextComment 0x560468149650 <line:5800:16, col:26> Text=" The world."
| | `-TextComment 0x560468149670 <line:5801:3> Text=" "
| |-ParamCommandComment 0x5604681496c0 <col:4, line:5802:3> [in] implicitly Param="e" ParamIndex=1
| | `-ParagraphComment 0x560468149770 <line:5801:12, line:5802:3>
| | |-TextComment 0x560468149720 <line:5801:12, col:23> Text=" The entity."
| | `-TextComment 0x560468149740 <line:5802:3> Text=" "
| `-BlockCommandComment 0x560468149790 <col:4, col:73> Name="return"
| `-ParagraphComment 0x5604681497f0 <col:11, col:73>
| `-TextComment 0x5604681497c0 <col:11, col:73> Text=" True if the entity is alive, false if the entity is not alive."
|-FunctionDecl 0x560468044088 <line:5815:1, line:5816:19> line:5815:10 ecs_strip_generation 'ecs_id_t (ecs_entity_t)'
| |-ParmVarDecl 0x560468043f98 <line:5816:5, col:18> col:18 e 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468149ac0 <line:5809:4, line:5812:54>
| |-ParagraphComment 0x5604681498e0 <line:5809:4, col:37>
| | `-TextComment 0x5604681498b0 <col:4, col:37> Text=" Remove generation from entity id."
| |-ParagraphComment 0x560468149930 <line:5811:3>
| | `-TextComment 0x560468149900 <col:3> Text=" "
| |-ParamCommandComment 0x560468149950 <col:4, line:5812:3> [in] implicitly Param="e" ParamIndex=0
| | `-ParagraphComment 0x560468149a00 <line:5811:12, line:5812:3>
| | |-TextComment 0x5604681499b0 <line:5811:12, col:26> Text=" The entity id."
| | `-TextComment 0x5604681499d0 <line:5812:3> Text=" "
| `-BlockCommandComment 0x560468149a20 <col:4, col:54> Name="return"
| `-ParagraphComment 0x560468149a80 <col:11, col:54>
| `-TextComment 0x560468149a50 <col:11, col:54> Text=" The entity id without the generation count."
|-FunctionDecl 0x560468044278 <line:5830:1, line:5832:24> line:5830:6 ecs_set_entity_generation 'void (ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x560468044168 <line:5831:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680441e0 <line:5832:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468149e70 <line:5818:4, line:5827:80>
| |-ParagraphComment 0x560468149bb0 <line:5818:4, line:5820:53>
| | |-TextComment 0x560468149b30 <line:5818:4, col:41> Text=" Override the generation of an entity."
| | |-TextComment 0x560468149b50 <line:5819:3, col:80> Text=" The generation count of an entity is increased each time an entity is deleted"
| | `-TextComment 0x560468149b70 <line:5820:3, col:53> Text=" and is used to test whether an entity id is alive."
| |-ParagraphComment 0x560468149c50 <line:5822:3, line:5824:49>
| | |-TextComment 0x560468149bd0 <line:5822:3, col:72> Text=" This operation overrides the current generation of an entity with the"
| | |-TextComment 0x560468149bf0 <line:5823:3, col:80> Text=" specified generation, which can be useful if an entity is externally managed,"
| | `-TextComment 0x560468149c10 <line:5824:3, col:49> Text=" like for external pools, savefiles or netcode."
| |-ParagraphComment 0x560468149ca0 <line:5826:3>
| | `-TextComment 0x560468149c70 <col:3> Text=" "
| |-ParamCommandComment 0x560468149cc0 <col:4, line:5827:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468149d70 <line:5826:16, line:5827:3>
| | |-TextComment 0x560468149d20 <line:5826:16, col:26> Text=" The world."
| | `-TextComment 0x560468149d40 <line:5827:3> Text=" "
| `-ParamCommandComment 0x560468149d90 <col:4, col:80> [in] implicitly Param="entity" ParamIndex=1
| `-ParagraphComment 0x560468149e20 <col:17, col:80>
| `-TextComment 0x560468149df0 <col:17, col:80> Text=" Entity for which to set the generation with the new generation."
|-FunctionDecl 0x5604680444f8 <line:5851:1, line:5853:19> line:5851:14 ecs_get_alive 'ecs_entity_t (const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x560468044368 <line:5852:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680443e0 <line:5853:5, col:18> col:18 e 'ecs_entity_t':'unsigned long'
| `-FullComment 0x56046814a370 <line:5834:4, line:5848:76>
| |-ParagraphComment 0x560468149f80 <line:5834:4, line:5837:50>
| | |-TextComment 0x560468149ee0 <line:5834:4, col:25> Text=" Get alive identifier."
| | |-TextComment 0x560468149f00 <line:5835:3, col:76> Text=" In some cases an application may need to work with identifiers from which"
| | |-TextComment 0x560468149f20 <line:5836:3, col:80> Text=" the generation has been stripped. A typical scenario in which this happens is"
| | `-TextComment 0x560468149f40 <line:5837:3, col:50> Text=" when iterating relationships in an entity type."
| |-ParagraphComment 0x56046814a040 <line:5839:3, line:5842:43>
| | |-TextComment 0x560468149fa0 <line:5839:3, col:84> Text=" For example, when obtaining the parent id from a ChildOf relationship, the parent"
| | |-TextComment 0x560468149fc0 <line:5840:3, col:79> Text=" (second element of the pair) will have been stored in a 32 bit value, which "
| | |-TextComment 0x560468149fe0 <line:5841:3, col:80> Text=" cannot store the entity generation. This function can retrieve the identifier"
| | `-TextComment 0x56046814a000 <line:5842:3, col:43> Text=" with the current generation for that id."
| |-ParagraphComment 0x56046814a090 <line:5844:3, col:71>
| | `-TextComment 0x56046814a060 <col:3, col:71> Text=" If the provided identifier is not alive, the function will return 0."
| |-ParagraphComment 0x56046814a0e0 <line:5846:3>
| | `-TextComment 0x56046814a0b0 <col:3> Text=" "
| |-ParamCommandComment 0x56046814a100 <col:4, line:5847:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814a1b0 <line:5846:16, line:5847:3>
| | |-TextComment 0x56046814a160 <line:5846:16, col:26> Text=" The world."
| | `-TextComment 0x56046814a180 <line:5847:3> Text=" "
| |-ParamCommandComment 0x56046814a1d0 <col:4, line:5848:3> [in] implicitly Param="e" ParamIndex=1
| | `-ParagraphComment 0x56046814a290 <line:5847:12, line:5848:3>
| | |-TextComment 0x56046814a230 <line:5847:12, col:64> Text=" The for which to obtain the current alive entity id."
| | `-TextComment 0x56046814a250 <line:5848:3> Text=" "
| `-BlockCommandComment 0x56046814a2b0 <col:4, col:76> Name="return"
| `-ParagraphComment 0x56046814a310 <col:11, col:76>
| `-TextComment 0x56046814a2e0 <col:11, col:76> Text=" The alive entity id if there is one, or 0 if the id is not alive."
|-FunctionDecl 0x5604680446f8 <line:5876:1, line:5878:24> line:5876:6 ecs_ensure 'void (ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x5604680445e8 <line:5877:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468044660 <line:5878:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x56046814a870 <line:5855:4, line:5873:45>
| |-ParagraphComment 0x56046814a480 <line:5855:4, line:5858:79>
| | |-TextComment 0x56046814a3e0 <line:5855:4, col:23> Text=" Ensure id is alive."
| | |-TextComment 0x56046814a400 <line:5856:3, col:74> Text=" This operation ensures that the provided id is alive. This is useful in"
| | |-TextComment 0x56046814a420 <line:5857:3, col:78> Text=" scenarios where an application has an existing id that has not been created"
| | `-TextComment 0x56046814a440 <line:5858:3, col:79> Text=" with ecs_new (such as a global constant or an id from a remote application)."
| |-ParagraphComment 0x56046814a4f0 <line:5860:3, line:5861:25>
| | |-TextComment 0x56046814a4a0 <line:5860:3, col:80> Text=" When this operation is successful it guarantees that the provided id exists, "
| | `-TextComment 0x56046814a4c0 <line:5861:3, col:25> Text=" is valid and is alive."
| |-ParagraphComment 0x56046814a560 <line:5863:3, line:5864:41>
| | |-TextComment 0x56046814a510 <line:5863:3, col:77> Text=" Before this operation the id must either not be alive or have a generation"
| | `-TextComment 0x56046814a530 <line:5864:3, col:41> Text=" that is equal to the passed in entity."
| |-ParagraphComment 0x56046814a5d0 <line:5866:3, line:5867:70>
| | |-TextComment 0x56046814a580 <line:5866:3, col:79> Text=" If the provided id has a non-zero generation count and the id does not exist"
| | `-TextComment 0x56046814a5a0 <line:5867:3, col:70> Text=" in the world, the id will be created with the specified generation."
| |-ParagraphComment 0x56046814a640 <line:5869:3, line:5870:44>
| | |-TextComment 0x56046814a5f0 <line:5869:3, col:77> Text=" If the provided id is alive and has a generation count that does not match"
| | `-TextComment 0x56046814a610 <line:5870:3, col:44> Text=" the provided id, the operation will fail."
| |-ParagraphComment 0x56046814a690 <line:5872:3>
| | `-TextComment 0x56046814a660 <col:3> Text=" "
| |-ParamCommandComment 0x56046814a6b0 <col:4, line:5873:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814a760 <line:5872:16, line:5873:3>
| | |-TextComment 0x56046814a710 <line:5872:16, col:26> Text=" The world."
| | `-TextComment 0x56046814a730 <line:5873:3> Text=" "
| `-ParamCommandComment 0x56046814a780 <col:4, col:45> [in] implicitly Param="entity" ParamIndex=1
| `-ParagraphComment 0x56046814a810 <col:17, col:45>
| `-TextComment 0x56046814a7e0 <col:17, col:45> Text=" The entity id to make alive."
|-FunctionDecl 0x560467f6cfe0 <line:5899:1, line:5901:16> line:5899:6 ecs_ensure_id 'void (ecs_world_t *, ecs_id_t)'
| |-ParmVarDecl 0x560467f6ced0 <line:5900:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560467f6cf48 <line:5901:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x56046814ad40 <line:5880:4, line:5896:34>
| |-ParagraphComment 0x56046814a960 <line:5880:4, line:5882:63>
| | |-TextComment 0x56046814a8e0 <line:5880:4, col:48> Text=" Same as ecs_ensure, but for (component) ids."
| | |-TextComment 0x56046814a900 <line:5881:3, col:75> Text=" An id can be an entity or pair, and can contain id flags. This operation"
| | `-TextComment 0x56046814a920 <line:5882:3, col:63> Text=" ensures that the entity (or entities, for a pair) are alive."
| |-ParagraphComment 0x56046814a9d0 <line:5884:3, line:5885:40>
| | |-TextComment 0x56046814a980 <line:5884:3, col:78> Text=" When this operation is successful it guarantees that the provided id can be"
| | `-TextComment 0x56046814a9a0 <line:5885:3, col:40> Text=" used in operations that accept an id."
| |-ParagraphComment 0x56046814aa70 <line:5887:3, line:5889:14>
| | |-TextComment 0x56046814a9f0 <line:5887:3, col:78> Text=" Since entities in a pair do not encode their generation ids, this operation"
| | |-TextComment 0x56046814aa10 <line:5888:3, col:80> Text=" will not fail when an entity with non-zero generation count already exists in"
| | `-TextComment 0x56046814aa30 <line:5889:3, col:14> Text=" the world. "
| |-ParagraphComment 0x56046814ab10 <line:5891:3, line:5893:9>
| | |-TextComment 0x56046814aa90 <line:5891:3, col:77> Text=" This is different from ecs_ensure, which will fail if attempted with an id"
| | |-TextComment 0x56046814aab0 <line:5892:3, col:79> Text=" that has generation 0 and an entity with a non-zero generation is currently "
| | `-TextComment 0x56046814aad0 <line:5893:3, col:9> Text=" alive."
| |-ParagraphComment 0x56046814ab60 <line:5895:3>
| | `-TextComment 0x56046814ab30 <col:3> Text=" "
| |-ParamCommandComment 0x56046814ab80 <col:4, line:5896:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814ac30 <line:5895:16, line:5896:3>
| | |-TextComment 0x56046814abe0 <line:5895:16, col:26> Text=" The world."
| | `-TextComment 0x56046814ac00 <line:5896:3> Text=" "
| `-ParamCommandComment 0x56046814ac50 <col:4, col:34> [in] implicitly Param="id" ParamIndex=1
| `-ParagraphComment 0x56046814ace0 <col:13, col:34>
| `-TextComment 0x56046814acb0 <col:13, col:34> Text=" The id to make alive."
|-FunctionDecl 0x560467f6d1d8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:5913:24> line:5911:6 ecs_exists 'bool (const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x560467f6d0c8 <line:5912:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f6d140 <line:5913:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x56046814b0c0 <line:5903:4, line:5908:73>
| |-ParagraphComment 0x56046814ae00 <line:5903:4, line:5904:64>
| | |-TextComment 0x56046814adb0 <line:5903:4, col:34> Text=" Test whether an entity exists."
| | `-TextComment 0x56046814add0 <line:5904:3, col:64> Text=" Similar as ecs_is_alive, but ignores entity generation count."
| |-ParagraphComment 0x56046814ae50 <line:5906:3>
| | `-TextComment 0x56046814ae20 <col:3> Text=" "
| |-ParamCommandComment 0x56046814ae70 <col:4, line:5907:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814af20 <line:5906:16, line:5907:3>
| | |-TextComment 0x56046814aed0 <line:5906:16, col:26> Text=" The world."
| | `-TextComment 0x56046814aef0 <line:5907:3> Text=" "
| |-ParamCommandComment 0x56046814af40 <col:4, line:5908:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x56046814aff0 <line:5907:17, line:5908:3>
| | |-TextComment 0x56046814afa0 <line:5907:17, col:28> Text=" The entity."
| | `-TextComment 0x56046814afc0 <line:5908:3> Text=" "
| `-BlockCommandComment 0x56046814b010 <col:4, col:73> Name="return"
| `-ParagraphComment 0x56046814b070 <col:11, col:73>
| `-TextComment 0x56046814b040 <col:11, col:73> Text=" True if the entity exists, false if the entity does not exist."
|-FunctionDecl 0x560467f6d538 <line:5930:1, line:5932:24> line:5930:19 ecs_get_type 'const ecs_type_t *(const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x560467f6d350 <line:5931:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f6d3c8 <line:5932:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x56046814b420 <line:5923:4, line:5927:72>
| |-ParagraphComment 0x56046814b160 <line:5923:4, col:30>
| | `-TextComment 0x56046814b130 <col:4, col:30> Text=" Get the type of an entity."
| |-ParagraphComment 0x56046814b1b0 <line:5925:3>
| | `-TextComment 0x56046814b180 <col:3> Text=" "
| |-ParamCommandComment 0x56046814b1d0 <col:4, line:5926:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814b280 <line:5925:16, line:5926:3>
| | |-TextComment 0x56046814b230 <line:5925:16, col:26> Text=" The world."
| | `-TextComment 0x56046814b250 <line:5926:3> Text=" "
| |-ParamCommandComment 0x56046814b2a0 <col:4, line:5927:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x56046814b350 <line:5926:17, line:5927:3>
| | |-TextComment 0x56046814b300 <line:5926:17, col:28> Text=" The entity."
| | `-TextComment 0x56046814b320 <line:5927:3> Text=" "
| `-BlockCommandComment 0x56046814b370 <col:4, col:72> Name="return"
| `-ParagraphComment 0x56046814b3d0 <col:11, col:72>
| `-TextComment 0x56046814b3a0 <col:11, col:72> Text=" The type of the entity, NULL if the entity has no components."
|-FunctionDecl 0x560467f6d7b8 <line:5941:1, line:5943:24> line:5941:14 ecs_get_table 'ecs_table_t *(const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x560467f6d628 <line:5942:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f6d6a0 <line:5943:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x56046814b780 <line:5934:4, line:5938:78>
| |-ParagraphComment 0x56046814b4c0 <line:5934:4, col:31>
| | `-TextComment 0x56046814b490 <col:4, col:31> Text=" Get the table of an entity."
| |-ParagraphComment 0x56046814b510 <line:5936:3>
| | `-TextComment 0x56046814b4e0 <col:3> Text=" "
| |-ParamCommandComment 0x56046814b530 <col:4, line:5937:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814b5e0 <line:5936:16, line:5937:3>
| | |-TextComment 0x56046814b590 <line:5936:16, col:26> Text=" The world."
| | `-TextComment 0x56046814b5b0 <line:5937:3> Text=" "
| |-ParamCommandComment 0x56046814b600 <col:4, line:5938:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x56046814b6b0 <line:5937:17, line:5938:3>
| | |-TextComment 0x56046814b660 <line:5937:17, col:28> Text=" The entity."
| | `-TextComment 0x56046814b680 <line:5938:3> Text=" "
| `-BlockCommandComment 0x56046814b6d0 <col:4, col:78> Name="return"
| `-ParagraphComment 0x56046814b730 <col:11, col:78>
| `-TextComment 0x56046814b700 <col:11, col:78> Text=" The table of the entity, NULL if the entity has no components/tags."
|-FunctionDecl 0x560467f6da40 <line:5953:1, line:5955:27> line:5953:7 ecs_type_str 'char *(const ecs_world_t *, const ecs_type_t *)'
| |-ParmVarDecl 0x560467f6d8a8 <line:5954:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f6d920 <line:5955:5, col:23> col:23 type 'const ecs_type_t *'
| `-FullComment 0x56046814bb00 <line:5945:4, line:5950:32>
| |-ParagraphComment 0x56046814b840 <line:5945:4, line:5946:63>
| | |-TextComment 0x56046814b7f0 <line:5945:4, col:27> Text=" Convert type to string."
| | `-TextComment 0x56046814b810 <line:5946:3, col:63> Text=" The result of this operation must be freed with ecs_os_free."
| |-ParagraphComment 0x56046814b890 <line:5948:3>
| | `-TextComment 0x56046814b860 <col:3> Text=" "
| |-ParamCommandComment 0x56046814b8b0 <col:4, line:5949:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814b960 <line:5948:16, line:5949:3>
| | |-TextComment 0x56046814b910 <line:5948:16, col:26> Text=" The world."
| | `-TextComment 0x56046814b930 <line:5949:3> Text=" "
| |-ParamCommandComment 0x56046814b980 <col:4, line:5950:3> [in] implicitly Param="type" ParamIndex=1
| | `-ParagraphComment 0x56046814ba30 <line:5949:15, line:5950:3>
| | |-TextComment 0x56046814b9e0 <line:5949:15, col:24> Text=" The type."
| | `-TextComment 0x56046814ba00 <line:5950:3> Text=" "
| `-BlockCommandComment 0x56046814ba50 <col:4, col:32> Name="return"
| `-ParagraphComment 0x56046814bab0 <col:11, col:32>
| `-TextComment 0x56046814ba80 <col:11, col:32> Text=" The stringified type."
|-FunctionDecl 0x560467f6dcc0 <line:5966:1, line:5968:29> line:5966:7 ecs_table_str 'char *(const ecs_world_t *, const ecs_table_t *)'
| |-ParmVarDecl 0x560467f6db28 <line:5967:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f6dba0 <line:5968:5, col:24> col:24 table 'const ecs_table_t *'
| `-FullComment 0x56046814beb0 <line:5957:4, line:5963:38>
| |-ParagraphComment 0x56046814bbf0 <line:5957:4, line:5959:44>
| | |-TextComment 0x56046814bb70 <line:5957:4, col:28> Text=" Convert table to string."
| | |-TextComment 0x56046814bb90 <line:5958:3, col:77> Text=" Same as ecs_type_str(world, ecs_table_get_type(table)). The result of this"
| | `-TextComment 0x56046814bbb0 <line:5959:3, col:44> Text=" operation must be freed with ecs_os_free."
| |-ParagraphComment 0x56046814bc40 <line:5961:3>
| | `-TextComment 0x56046814bc10 <col:3> Text=" "
| |-ParamCommandComment 0x56046814bc60 <col:4, line:5962:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814bd10 <line:5961:16, line:5962:3>
| | |-TextComment 0x56046814bcc0 <line:5961:16, col:26> Text=" The world."
| | `-TextComment 0x56046814bce0 <line:5962:3> Text=" "
| |-ParamCommandComment 0x56046814bd30 <col:4, line:5963:3> [in] implicitly Param="table" ParamIndex=1
| | `-ParagraphComment 0x56046814bde0 <line:5962:16, line:5963:3>
| | |-TextComment 0x56046814bd90 <line:5962:16, col:26> Text=" The table."
| | `-TextComment 0x56046814bdb0 <line:5963:3> Text=" "
| `-BlockCommandComment 0x56046814be00 <col:4, col:38> Name="return"
| `-ParagraphComment 0x56046814be60 <col:11, col:38>
| `-TextComment 0x56046814be30 <col:11, col:38> Text=" The stringified table type."
|-FunctionDecl 0x560467f6e180 <line:5982:1, line:5984:24> line:5982:7 ecs_entity_str 'char *(const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x560467f6dda8 <line:5983:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f6de20 <line:5984:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x56046814c2f0 <line:5970:4, line:5979:49>
| |-ParagraphComment 0x56046814bfc0 <line:5970:4, line:5973:53>
| | |-TextComment 0x56046814bf20 <line:5970:4, col:29> Text=" Convert entity to string."
| | |-TextComment 0x56046814bf40 <line:5971:3, col:21> Text=" Same as combining:"
| | |-TextComment 0x56046814bf60 <line:5972:3, col:36> Text=" - ecs_get_fullpath(world, entity)"
| | `-TextComment 0x56046814bf80 <line:5973:3, col:53> Text=" - ecs_type_str(world, ecs_get_type(world, entity))"
| |-ParagraphComment 0x56046814c010 <line:5975:3, col:63>
| | `-TextComment 0x56046814bfe0 <col:3, col:63> Text=" The result of this operation must be freed with ecs_os_free."
| |-ParagraphComment 0x56046814c060 <line:5977:3>
| | `-TextComment 0x56046814c030 <col:3> Text=" "
| |-ParamCommandComment 0x56046814c080 <col:4, line:5978:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814c130 <line:5977:16, line:5978:3>
| | |-TextComment 0x56046814c0e0 <line:5977:16, col:26> Text=" The world."
| | `-TextComment 0x56046814c100 <line:5978:3> Text=" "
| |-ParamCommandComment 0x56046814c150 <col:4, line:5979:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x56046814c200 <line:5978:17, line:5979:3>
| | |-TextComment 0x56046814c1b0 <line:5978:17, col:28> Text=" The entity."
| | `-TextComment 0x56046814c1d0 <line:5979:3> Text=" "
| `-BlockCommandComment 0x56046814c220 <col:4, col:49> Name="return"
| `-ParagraphComment 0x56046814c2a0 <col:11, col:49>
| `-TextComment 0x56046814c250 <col:11, col:49> Text=" The entity path with stringified type."
|-FunctionDecl 0x560467f6e3f8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:5999:16> line:5996:6 ecs_has_id 'bool (const ecs_world_t *, ecs_entity_t, ecs_id_t)'
| |-ParmVarDecl 0x560467f6e268 <line:5997:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f6e2e0 <line:5998:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560467f6e358 <line:5999:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x56046814c770 <line:5986:4, line:5993:59>
| |-ParagraphComment 0x56046814c3e0 <line:5986:4, line:5988:8>
| | |-TextComment 0x56046814c360 <line:5986:4, col:36> Text=" Test if an entity has an entity."
| | |-TextComment 0x56046814c380 <line:5987:3, col:76> Text=" This operation returns true if the entity has the provided entity in its "
| | `-TextComment 0x56046814c3a0 <line:5988:3, col:8> Text=" type."
| |-ParagraphComment 0x56046814c430 <line:5990:3>
| | `-TextComment 0x56046814c400 <col:3> Text=" "
| |-ParamCommandComment 0x56046814c450 <col:4, line:5991:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814c500 <line:5990:16, line:5991:3>
| | |-TextComment 0x56046814c4b0 <line:5990:16, col:26> Text=" The world."
| | `-TextComment 0x56046814c4d0 <line:5991:3> Text=" "
| |-ParamCommandComment 0x56046814c520 <col:4, line:5992:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x56046814c5d0 <line:5991:17, line:5992:3>
| | |-TextComment 0x56046814c580 <line:5991:17, col:28> Text=" The entity."
| | `-TextComment 0x56046814c5a0 <line:5992:3> Text=" "
| |-ParamCommandComment 0x56046814c5f0 <col:4, line:5993:3> [in] implicitly Param="id" ParamIndex=2
| | `-ParagraphComment 0x56046814c6a0 <line:5992:13, line:5993:3>
| | |-TextComment 0x56046814c650 <line:5992:13, col:32> Text=" The id to test for."
| | `-TextComment 0x56046814c670 <line:5993:3> Text=" "
| `-BlockCommandComment 0x56046814c6c0 <col:4, col:59> Name="return"
| `-ParagraphComment 0x56046814c720 <col:11, col:59>
| `-TextComment 0x56046814c6f0 <col:11, col:59> Text=" True if the entity has the entity, false if not."
|-FunctionDecl 0x560467f6e798 <line:6016:1, line:6020:18> line:6016:14 ecs_get_target 'ecs_entity_t (const ecs_world_t *, ecs_entity_t, ecs_entity_t, int32_t)'
| |-ParmVarDecl 0x560467f6e4e8 <line:6017:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f6e560 <line:6018:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560467f6e5d8 <line:6019:5, col:18> col:18 rel 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560467f6e650 <line:6020:5, col:13> col:13 index 'int32_t':'int'
| `-FullComment 0x56046814cd60 <line:6001:4, line:6013:66>
| |-ParagraphComment 0x56046814c880 <line:6001:4, line:6004:64>
| | |-TextComment 0x56046814c7e0 <line:6001:4, col:37> Text=" Get the target of a relationship."
| | |-TextComment 0x56046814c800 <line:6002:3, col:78> Text=" This will return a target (second element of a pair) of the entity for the "
| | |-TextComment 0x56046814c820 <line:6003:3, col:84> Text=" specified relationship. The index allows for iterating through the targets, if a "
| | `-TextComment 0x56046814c840 <line:6004:3, col:64> Text=" single entity has multiple targets for the same relationship."
| |-ParagraphComment 0x56046814c8f0 <line:6006:3, line:6007:49>
| | |-TextComment 0x56046814c8a0 <line:6006:3, col:79> Text=" If the index is larger than the total number of instances the entity has for"
| | `-TextComment 0x56046814c8c0 <line:6007:3, col:49> Text=" the relationship, the operation will return 0."
| |-ParagraphComment 0x56046814c940 <line:6009:3>
| | `-TextComment 0x56046814c910 <col:3> Text=" "
| |-ParamCommandComment 0x56046814c960 <col:4, line:6010:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814ca10 <line:6009:16, line:6010:3>
| | |-TextComment 0x56046814c9c0 <line:6009:16, col:26> Text=" The world."
| | `-TextComment 0x56046814c9e0 <line:6010:3> Text=" "
| |-ParamCommandComment 0x56046814ca30 <col:4, line:6011:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x56046814cae0 <line:6010:17, line:6011:3>
| | |-TextComment 0x56046814ca90 <line:6010:17, col:28> Text=" The entity."
| | `-TextComment 0x56046814cab0 <line:6011:3> Text=" "
| |-ParamCommandComment 0x56046814cb00 <col:4, line:6012:3> [in] implicitly Param="rel" ParamIndex=2
| | `-ParagraphComment 0x56046814cbb0 <line:6011:14, line:6012:3>
| | |-TextComment 0x56046814cb60 <line:6011:14, col:65> Text=" The relationship between the entity and the target."
| | `-TextComment 0x56046814cb80 <line:6012:3> Text=" "
| |-ParamCommandComment 0x56046814cbd0 <col:4, line:6013:3> [in] implicitly Param="index" ParamIndex=3
| | `-ParagraphComment 0x56046814cc80 <line:6012:16, line:6013:3>
| | |-TextComment 0x56046814cc30 <line:6012:16, col:55> Text=" The index of the relationship instance."
| | `-TextComment 0x56046814cc50 <line:6013:3> Text=" "
| `-BlockCommandComment 0x56046814cca0 <col:4, col:66> Name="return"
| `-ParagraphComment 0x56046814cd00 <col:11, col:66>
| `-TextComment 0x56046814ccd0 <col:11, col:66> Text=" The target for the relationship at the specified index."
|-FunctionDecl 0x560467f6eb48 <line:6041:1, line:6045:16> line:6041:14 ecs_get_target_for_id 'ecs_entity_t (const ecs_world_t *, ecs_entity_t, ecs_entity_t, ecs_id_t)'
| |-ParmVarDecl 0x560467f6e898 <line:6042:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f6e910 <line:6043:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560467f6e988 <line:6044:5, col:18> col:18 rel 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560467f6ea00 <line:6045:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x56046814d400 <line:6022:4, line:6038:58>
| |-ParagraphComment 0x56046814cea0 <line:6022:4, line:6026:45>
| | |-TextComment 0x56046814cdd0 <line:6022:4, col:52> Text=" Get the target of a relationship for a given id."
| | |-TextComment 0x56046814cdf0 <line:6023:3, col:80> Text=" This operation returns the first entity that has the provided id by following"
| | |-TextComment 0x56046814ce10 <line:6024:3, col:79> Text=" the specified relationship. If the entity itself has the id then entity will"
| | |-TextComment 0x56046814ce30 <line:6025:3, col:75> Text=" be returned. If the id cannot be found on the entity or by following the"
| | `-TextComment 0x56046814ce50 <line:6026:3, col:45> Text=" relationship, the operation will return 0."
| |-ParagraphComment 0x56046814cf10 <line:6028:3, line:6029:50>
| | |-TextComment 0x56046814cec0 <line:6028:3, col:79> Text=" This operation can be used to lookup, for example, which prefab is providing"
| | `-TextComment 0x56046814cee0 <line:6029:3, col:50> Text=" a component by specifying the IsA relationship:"
| |-ParagraphComment 0x56046814cf80 <line:6031:3, line:6032:67>
| | |-TextComment 0x56046814cf30 <line:6031:3, col:71> Text=" // Is Position provided by the entity or one of its base entities?"
| | `-TextComment 0x56046814cf50 <line:6032:3, col:67> Text=" ecs_get_target_for_id(world, entity, EcsIsA, ecs_id(Position))"
| |-ParagraphComment 0x56046814cfd0 <line:6034:3>
| | `-TextComment 0x56046814cfa0 <col:3> Text=" "
| |-ParamCommandComment 0x56046814cff0 <col:4, line:6035:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814d0a0 <line:6034:16, line:6035:3>
| | |-TextComment 0x56046814d050 <line:6034:16, col:26> Text=" The world."
| | `-TextComment 0x56046814d070 <line:6035:3> Text=" "
| |-ParamCommandComment 0x56046814d0c0 <col:4, line:6036:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x56046814d170 <line:6035:17, line:6036:3>
| | |-TextComment 0x56046814d120 <line:6035:17, col:28> Text=" The entity."
| | `-TextComment 0x56046814d140 <line:6036:3> Text=" "
| |-ParamCommandComment 0x56046814d190 <col:4, line:6037:3> [in] implicitly Param="rel" ParamIndex=2
| | `-ParagraphComment 0x56046814d240 <line:6036:14, line:6037:3>
| | |-TextComment 0x56046814d1f0 <line:6036:14, col:41> Text=" The relationship to follow."
| | `-TextComment 0x56046814d210 <line:6037:3> Text=" "
| |-ParamCommandComment 0x56046814d260 <col:4, line:6038:3> [in] implicitly Param="id" ParamIndex=3
| | `-ParagraphComment 0x56046814d310 <line:6037:13, line:6038:3>
| | |-TextComment 0x56046814d2c0 <line:6037:13, col:30> Text=" The id to lookup."
| | `-TextComment 0x56046814d2e0 <line:6038:3> Text=" "
| `-BlockCommandComment 0x56046814d330 <col:4, col:58> Name="return"
| `-ParagraphComment 0x56046814d390 <col:11, col:58>
| `-TextComment 0x56046814d360 <col:11, col:58> Text=" The entity for which the target has been found."
|-FunctionDecl 0x560467f6ee58 <line:6058:1, line:6061:21> line:6058:9 ecs_get_depth 'int32_t (const ecs_world_t *, ecs_entity_t, ecs_entity_t)'
| |-ParmVarDecl 0x560467f6ec48 <line:6059:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f6ecc0 <line:6060:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560467f6ed38 <line:6061:5, col:18> col:18 rel 'ecs_entity_t':'unsigned long'
| `-FullComment 0x56046814d8a0 <line:6047:4, line:6055:47>
| |-ParagraphComment 0x56046814d510 <line:6047:4, line:6050:13>
| | |-TextComment 0x56046814d470 <line:6047:4, col:57> Text=" Return depth for entity in tree for relationship rel."
| | |-TextComment 0x56046814d490 <line:6048:3, col:75> Text=" Depth is determined by counting the number of targets encountered while "
| | |-TextComment 0x56046814d4b0 <line:6049:3, col:78> Text=" traversing up the relationship tree for rel. Only acyclic relationships are"
| | `-TextComment 0x56046814d4d0 <line:6050:3, col:13> Text=" supported."
| |-ParagraphComment 0x56046814d560 <line:6052:3>
| | `-TextComment 0x56046814d530 <col:3> Text=" "
| |-ParamCommandComment 0x56046814d580 <col:4, line:6053:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814d630 <line:6052:16, line:6053:3>
| | |-TextComment 0x56046814d5e0 <line:6052:16, col:26> Text=" The world."
| | `-TextComment 0x56046814d600 <line:6053:3> Text=" "
| |-ParamCommandComment 0x56046814d650 <col:4, line:6054:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x56046814d700 <line:6053:17, line:6054:3>
| | |-TextComment 0x56046814d6b0 <line:6053:17, col:28> Text=" The entity."
| | `-TextComment 0x56046814d6d0 <line:6054:3> Text=" "
| |-ParamCommandComment 0x56046814d720 <col:4, line:6055:3> [in] implicitly Param="rel" ParamIndex=2
| | `-ParagraphComment 0x56046814d7d0 <line:6054:14, line:6055:3>
| | |-TextComment 0x56046814d780 <line:6054:14, col:31> Text=" The relationship."
| | `-TextComment 0x56046814d7a0 <line:6055:3> Text=" "
| `-BlockCommandComment 0x56046814d7f0 <col:4, col:47> Name="return"
| `-ParagraphComment 0x56046814d850 <col:11, col:47>
| `-TextComment 0x56046814d820 <col:11, col:47> Text=" The depth of the entity in the tree."
|-FunctionDecl 0x560467f6f250 <line:6071:1, line:6073:20> line:6071:9 ecs_count_id 'int32_t (const ecs_world_t *, ecs_id_t)'
| |-ParmVarDecl 0x560467f6ef48 <line:6072:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f6efc0 <line:6073:5, col:14> col:14 entity 'ecs_id_t':'unsigned long'
| `-FullComment 0x56046814dc20 <line:6063:4, line:6068:51>
| |-ParagraphComment 0x56046814d960 <line:6063:4, line:6064:61>
| | |-TextComment 0x56046814d910 <line:6063:4, col:46> Text=" Count entities that have the specified id."
| | `-TextComment 0x56046814d930 <line:6064:3, col:61> Text=" Returns the number of entities that have the specified id."
| |-ParagraphComment 0x56046814d9b0 <line:6066:3>
| | `-TextComment 0x56046814d980 <col:3> Text=" "
| |-ParamCommandComment 0x56046814d9d0 <col:4, line:6067:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814da80 <line:6066:16, line:6067:3>
| | |-TextComment 0x56046814da30 <line:6066:16, col:26> Text=" The world."
| | `-TextComment 0x56046814da50 <line:6067:3> Text=" "
| |-ParamCommandComment 0x56046814daa0 <col:4, line:6068:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x56046814db50 <line:6067:17, line:6068:3>
| | |-TextComment 0x56046814db00 <line:6067:17, col:38> Text=" The id to search for."
| | `-TextComment 0x56046814db20 <line:6068:3> Text=" "
| `-BlockCommandComment 0x56046814db70 <col:4, col:51> Name="return"
| `-ParagraphComment 0x56046814dbd0 <col:11, col:51>
| `-TextComment 0x56046814dba0 <col:11, col:51> Text=" The number of entities that have the id."
|-FunctionDecl 0x560467f6f530 <line:6092:1, line:6094:24> line:6092:13 ecs_get_name 'const char *(const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x560467f6f398 <line:6093:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f6f410 <line:6094:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x56046814dfa0 <line:6084:4, line:6089:66>
| |-ParagraphComment 0x56046814dce0 <line:6084:4, line:6085:64>
| | |-TextComment 0x56046814dc90 <line:6084:4, col:30> Text=" Get the name of an entity."
| | `-TextComment 0x56046814dcb0 <line:6085:3, col:64> Text=" This will return the name stored in (EcsIdentifier, EcsName)."
| |-ParagraphComment 0x56046814dd30 <line:6087:3>
| | `-TextComment 0x56046814dd00 <col:3> Text=" "
| |-ParamCommandComment 0x56046814dd50 <col:4, line:6088:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814de00 <line:6087:16, line:6088:3>
| | |-TextComment 0x56046814ddb0 <line:6087:16, col:26> Text=" The world."
| | `-TextComment 0x56046814ddd0 <line:6088:3> Text=" "
| |-ParamCommandComment 0x56046814de20 <col:4, line:6089:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x56046814ded0 <line:6088:17, line:6089:3>
| | |-TextComment 0x56046814de80 <line:6088:17, col:28> Text=" The entity."
| | `-TextComment 0x56046814dea0 <line:6089:3> Text=" "
| `-BlockCommandComment 0x56046814def0 <col:4, col:66> Name="return"
| `-ParagraphComment 0x56046814df50 <col:11, col:66>
| `-TextComment 0x56046814df20 <col:11, col:66> Text=" The type of the entity, NULL if the entity has no name."
|-FunctionDecl 0x560467f6f730 <line:6104:1, line:6106:24> line:6104:13 ecs_get_symbol 'const char *(const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x560467f6f618 <line:6105:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f6f690 <line:6106:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x56046814e330 <line:6096:4, line:6101:66>
| |-ParagraphComment 0x56046814e060 <line:6096:4, line:6097:68>
| | |-TextComment 0x56046814e010 <line:6096:4, col:32> Text=" Get the symbol of an entity."
| | `-TextComment 0x56046814e030 <line:6097:3, col:68> Text=" This will return the symbol stored in (EcsIdentifier, EcsSymbol)."
| |-ParagraphComment 0x56046814e0b0 <line:6099:3>
| | `-TextComment 0x56046814e080 <col:3> Text=" "
| |-ParamCommandComment 0x56046814e0d0 <col:4, line:6100:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814e180 <line:6099:16, line:6100:3>
| | |-TextComment 0x56046814e130 <line:6099:16, col:26> Text=" The world."
| | `-TextComment 0x56046814e150 <line:6100:3> Text=" "
| |-ParamCommandComment 0x56046814e1a0 <col:4, line:6101:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x56046814e250 <line:6100:17, line:6101:3>
| | |-TextComment 0x56046814e200 <line:6100:17, col:28> Text=" The entity."
| | `-TextComment 0x56046814e220 <line:6101:3> Text=" "
| `-BlockCommandComment 0x56046814e270 <col:4, col:66> Name="return"
| `-ParagraphComment 0x56046814e2e0 <col:11, col:66>
| `-TextComment 0x56046814e2b0 <col:11, col:66> Text=" The type of the entity, NULL if the entity has no name."
|-FunctionDecl 0x560467f6fa38 <line:6120:1, line:6123:21> line:6120:14 ecs_set_name 'ecs_entity_t (ecs_world_t *, ecs_entity_t, const char *)'
| |-ParmVarDecl 0x560467f6f818 <line:6121:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560467f6f890 <line:6122:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560467f6f910 <line:6123:5, col:17> col:17 name 'const char *'
| `-FullComment 0x56046814e810 <line:6108:4, line:6117:66>
| |-ParagraphComment 0x56046814e420 <line:6108:4, line:6110:32>
| | |-TextComment 0x56046814e3a0 <line:6108:4, col:30> Text=" Set the name of an entity."
| | |-TextComment 0x56046814e3c0 <line:6109:3, col:78> Text=" This will set or overwrite the name of an entity. If no entity is provided,"
| | `-TextComment 0x56046814e3e0 <line:6110:3, col:32> Text=" a new entity will be created."
| |-ParagraphComment 0x56046814e470 <line:6112:3, col:50>
| | `-TextComment 0x56046814e440 <col:3, col:50> Text=" The name is stored in (EcsIdentifier, EcsName)."
| |-ParagraphComment 0x56046814e4c0 <line:6114:3>
| | `-TextComment 0x56046814e490 <col:3> Text=" "
| |-ParamCommandComment 0x56046814e4e0 <col:4, line:6115:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814e590 <line:6114:16, line:6115:3>
| | |-TextComment 0x56046814e540 <line:6114:16, col:26> Text=" The world."
| | `-TextComment 0x56046814e560 <line:6115:3> Text=" "
| |-ParamCommandComment 0x56046814e5b0 <col:4, line:6116:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x56046814e660 <line:6115:17, line:6116:3>
| | |-TextComment 0x56046814e610 <line:6115:17, col:28> Text=" The entity."
| | `-TextComment 0x56046814e630 <line:6116:3> Text=" "
| |-ParamCommandComment 0x56046814e680 <col:4, line:6117:3> [in] implicitly Param="name" ParamIndex=2
| | `-ParagraphComment 0x56046814e730 <line:6116:15, line:6117:3>
| | |-TextComment 0x56046814e6e0 <line:6116:15, col:24> Text=" The name."
| | `-TextComment 0x56046814e700 <line:6117:3> Text=" "
| `-BlockCommandComment 0x56046814e750 <col:4, col:66> Name="return"
| `-ParagraphComment 0x56046814e7b0 <col:11, col:66>
| `-TextComment 0x56046814e780 <col:11, col:66> Text=" The provided entity, or a new entity if 0 was provided."
|-FunctionDecl 0x560467f6fcc0 <line:6137:1, line:6140:23> line:6137:14 ecs_set_symbol 'ecs_entity_t (ecs_world_t *, ecs_entity_t, const char *)'
| |-ParmVarDecl 0x560467f6fb28 <line:6138:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560467f6fba0 <line:6139:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560467f6fc20 <line:6140:5, col:17> col:17 symbol 'const char *'
| `-FullComment 0x56046814ecf0 <line:6125:4, line:6134:66>
| |-ParagraphComment 0x56046814e900 <line:6125:4, line:6127:32>
| | |-TextComment 0x56046814e880 <line:6125:4, col:32> Text=" Set the symbol of an entity."
| | |-TextComment 0x56046814e8a0 <line:6126:3, col:80> Text=" This will set or overwrite the symbol of an entity. If no entity is provided,"
| | `-TextComment 0x56046814e8c0 <line:6127:3, col:32> Text=" a new entity will be created."
| |-ParagraphComment 0x56046814e950 <line:6129:3, col:54>
| | `-TextComment 0x56046814e920 <col:3, col:54> Text=" The symbol is stored in (EcsIdentifier, EcsSymbol)."
| |-ParagraphComment 0x56046814e9a0 <line:6131:3>
| | `-TextComment 0x56046814e970 <col:3> Text=" "
| |-ParamCommandComment 0x56046814e9c0 <col:4, line:6132:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814ea70 <line:6131:16, line:6132:3>
| | |-TextComment 0x56046814ea20 <line:6131:16, col:26> Text=" The world."
| | `-TextComment 0x56046814ea40 <line:6132:3> Text=" "
| |-ParamCommandComment 0x56046814ea90 <col:4, line:6133:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x56046814eb40 <line:6132:17, line:6133:3>
| | |-TextComment 0x56046814eaf0 <line:6132:17, col:28> Text=" The entity."
| | `-TextComment 0x56046814eb10 <line:6133:3> Text=" "
| |-ParamCommandComment 0x56046814eb60 <col:4, line:6134:3> [in] implicitly Param="symbol" ParamIndex=2
| | `-ParagraphComment 0x56046814ec10 <line:6133:17, line:6134:3>
| | |-TextComment 0x56046814ebc0 <line:6133:17, col:28> Text=" The symbol."
| | `-TextComment 0x56046814ebe0 <line:6134:3> Text=" "
| `-BlockCommandComment 0x56046814ec30 <col:4, col:66> Name="return"
| `-ParagraphComment 0x56046814ec90 <col:11, col:66>
| `-TextComment 0x56046814ec60 <col:11, col:66> Text=" The provided entity, or a new entity if 0 was provided."
|-FunctionDecl 0x560467f6ffd8 <line:6154:1, line:6157:22> line:6154:6 ecs_set_alias 'void (ecs_world_t *, ecs_entity_t, const char *)'
| |-ParmVarDecl 0x560467f6fdb8 <line:6155:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560467f6fe30 <line:6156:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560467f6feb0 <line:6157:5, col:17> col:17 alias 'const char *'
| `-FullComment 0x56046814f140 <line:6142:4, line:6151:26>
| |-ParagraphComment 0x56046814ee00 <line:6142:4, line:6145:18>
| | |-TextComment 0x56046814ed60 <line:6142:4, col:26> Text=" Set alias for entity. "
| | |-TextComment 0x56046814ed80 <line:6143:3, col:74> Text=" An entity can be looked up using its alias from the root scope without "
| | |-TextComment 0x56046814eda0 <line:6144:3, col:76> Text=" providing the fully qualified name if its parent. An entity can only have"
| | `-TextComment 0x56046814edc0 <line:6145:3, col:18> Text=" a single alias."
| |-ParagraphComment 0x56046814ee50 <line:6147:3, col:53>
| | `-TextComment 0x56046814ee20 <col:3, col:53> Text=" The symbol is stored in (EcsIdentifier, EcsAlias)."
| |-ParagraphComment 0x56046814eea0 <line:6149:3>
| | `-TextComment 0x56046814ee70 <col:3> Text=" "
| |-ParamCommandComment 0x56046814eec0 <col:4, line:6150:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814ef70 <line:6149:16, line:6150:3>
| | |-TextComment 0x56046814ef20 <line:6149:16, col:26> Text=" The world."
| | `-TextComment 0x56046814ef40 <line:6150:3> Text=" "
| |-ParamCommandComment 0x56046814ef90 <col:4, line:6151:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x56046814f040 <line:6150:17, line:6151:3>
| | |-TextComment 0x56046814eff0 <line:6150:17, col:28> Text=" The entity."
| | `-TextComment 0x56046814f010 <line:6151:3> Text=" "
| `-ParamCommandComment 0x56046814f060 <col:4, col:26> [in] implicitly Param="alias" ParamIndex=2
| `-ParagraphComment 0x56046814f0f0 <col:16, col:26>
| `-TextComment 0x56046814f0c0 <col:16, col:26> Text=" The alias."
|-FunctionDecl 0x560467f70498 <line:6168:1, line:6170:21> line:6168:14 ecs_lookup 'ecs_entity_t (const ecs_world_t *, const char *)'
| |-ParmVarDecl 0x560467f700c8 <line:6169:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f70148 <line:6170:5, col:17> col:17 name 'const char *'
| `-FullComment 0x56046814f4f0 <line:6159:4, line:6165:75>
| |-ParagraphComment 0x56046814f230 <line:6159:4, line:6161:52>
| | |-TextComment 0x56046814f1b0 <line:6159:4, col:29> Text=" Lookup an entity by name."
| | |-TextComment 0x56046814f1d0 <line:6160:3, col:80> Text=" Returns an entity that matches the specified name. Only looks for entities in"
| | `-TextComment 0x56046814f1f0 <line:6161:3, col:52> Text=" the current scope (root if no scope is provided)."
| |-ParagraphComment 0x56046814f280 <line:6163:3>
| | `-TextComment 0x56046814f250 <col:3> Text=" "
| |-ParamCommandComment 0x56046814f2a0 <col:4, line:6164:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814f350 <line:6163:16, line:6164:3>
| | |-TextComment 0x56046814f300 <line:6163:16, col:26> Text=" The world."
| | `-TextComment 0x56046814f320 <line:6164:3> Text=" "
| |-ParamCommandComment 0x56046814f370 <col:4, line:6165:3> [in] implicitly Param="name" ParamIndex=1
| | `-ParagraphComment 0x56046814f420 <line:6164:15, line:6165:3>
| | |-TextComment 0x56046814f3d0 <line:6164:15, col:31> Text=" The entity name."
| | `-TextComment 0x56046814f3f0 <line:6165:3> Text=" "
| `-BlockCommandComment 0x56046814f440 <col:4, col:75> Name="return"
| `-ParagraphComment 0x56046814f4a0 <col:11, col:75>
| `-TextComment 0x56046814f470 <col:11, col:75> Text=" The entity with the specified name, or 0 if no entity was found."
|-FunctionDecl 0x560467f707a8 <line:6182:1, line:6185:21> line:6182:14 ecs_lookup_child 'ecs_entity_t (const ecs_world_t *, ecs_entity_t, const char *)'
| |-ParmVarDecl 0x560467f70588 <line:6183:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f70600 <line:6184:5, col:18> col:18 parent 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560467f70680 <line:6185:5, col:17> col:17 name 'const char *'
| `-FullComment 0x56046814f8c0 <line:6172:4, line:6179:75>
| |-ParagraphComment 0x56046814f600 <line:6172:4, line:6175:33>
| | |-TextComment 0x56046814f560 <line:6172:4, col:34> Text=" Lookup a child entity by name."
| | |-TextComment 0x56046814f580 <line:6173:3, col:80> Text=" Returns an entity that matches the specified name. Only looks for entities in"
| | |-TextComment 0x56046814f5a0 <line:6174:3, col:77> Text=" the provided parent. If no parent is provided, look in the current scope ("
| | `-TextComment 0x56046814f5c0 <line:6175:3, col:33> Text=" root if no scope is provided)."
| |-ParagraphComment 0x56046814f650 <line:6177:3>
| | `-TextComment 0x56046814f620 <col:3> Text=" "
| |-ParamCommandComment 0x56046814f670 <col:4, line:6178:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814f720 <line:6177:16, line:6178:3>
| | |-TextComment 0x56046814f6d0 <line:6177:16, col:26> Text=" The world."
| | `-TextComment 0x56046814f6f0 <line:6178:3> Text=" "
| |-ParamCommandComment 0x56046814f740 <col:4, line:6179:3> [in] implicitly Param="name" ParamIndex=2
| | `-ParagraphComment 0x56046814f7f0 <line:6178:15, line:6179:3>
| | |-TextComment 0x56046814f7a0 <line:6178:15, col:31> Text=" The entity name."
| | `-TextComment 0x56046814f7c0 <line:6179:3> Text=" "
| `-BlockCommandComment 0x56046814f810 <col:4, col:75> Name="return"
| `-ParagraphComment 0x56046814f870 <col:11, col:75>
| `-TextComment 0x56046814f840 <col:11, col:75> Text=" The entity with the specified name, or 0 if no entity was found."
|-FunctionDecl 0x560467f70c78 <line:6206:1, line:6212:19> line:6206:14 ecs_lookup_path_w_sep 'ecs_entity_t (const ecs_world_t *, ecs_entity_t, const char *, const char *, const char *, bool)'
| |-ParmVarDecl 0x560467f70898 <line:6207:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f70910 <line:6208:5, col:18> col:18 parent 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560467f70990 <line:6209:5, col:17> col:17 path 'const char *'
| |-ParmVarDecl 0x560467f70a10 <line:6210:5, col:17> col:17 sep 'const char *'
| |-ParmVarDecl 0x560467f70a90 <line:6211:5, col:17> col:17 prefix 'const char *'
| |-ParmVarDecl 0x560467f70b08 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:6212:10> col:10 recursive 'bool'
| `-FullComment 0x5604681500b0 <line:6187:4, line:6203:39>
| |-ParagraphComment 0x56046814f9d0 <line:6187:4, line:6190:78>
| | |-TextComment 0x56046814f930 <line:6187:4, col:33> Text=" Lookup an entity from a path."
| | |-TextComment 0x56046814f950 <line:6188:3, col:78> Text=" Lookup an entity from a provided path, relative to the provided parent. The"
| | |-TextComment 0x56046814f970 <line:6189:3, col:80> Text=" operation will use the provided separator to tokenize the path expression. If"
| | `-TextComment 0x56046814f990 <line:6190:3, col:78> Text=" the provided path contains the prefix, the search will start from the root."
| |-ParagraphComment 0x56046814fa90 <line:6192:3, line:6195:74>
| | |-TextComment 0x56046814f9f0 <line:6192:3, col:73> Text=" If the entity is not found in the provided parent, the operation will "
| | |-TextComment 0x56046814fa10 <line:6193:3, col:80> Text=" continue to search in the parent of the parent, until the root is reached. If"
| | |-TextComment 0x56046814fa30 <line:6194:3, col:74> Text=" the entity is still not found, the lookup will search in the flecs.core"
| | `-TextComment 0x56046814fa50 <line:6195:3, col:74> Text=" scope. If the entity is not found there either, the function returns 0."
| |-ParagraphComment 0x56046814fae0 <line:6197:3>
| | `-TextComment 0x56046814fab0 <col:3> Text=" "
| |-ParamCommandComment 0x56046814fb00 <col:4, line:6198:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046814fbb0 <line:6197:16, line:6198:3>
| | |-TextComment 0x56046814fb60 <line:6197:16, col:26> Text=" The world."
| | `-TextComment 0x56046814fb80 <line:6198:3> Text=" "
| |-ParamCommandComment 0x56046814fbd0 <col:4, line:6199:3> [in] implicitly Param="parent" ParamIndex=1
| | `-ParagraphComment 0x56046814fc80 <line:6198:17, line:6199:3>
| | |-TextComment 0x56046814fc30 <line:6198:17, col:59> Text=" The entity from which to resolve the path."
| | `-TextComment 0x56046814fc50 <line:6199:3> Text=" "
| |-ParamCommandComment 0x56046814fca0 <col:4, line:6200:3> [in] implicitly Param="path" ParamIndex=2
| | `-ParagraphComment 0x56046814fd50 <line:6199:15, line:6200:3>
| | |-TextComment 0x56046814fd00 <line:6199:15, col:35> Text=" The path to resolve."
| | `-TextComment 0x56046814fd20 <line:6200:3> Text=" "
| |-ParamCommandComment 0x56046814fd70 <col:4, line:6201:3> [in] implicitly Param="sep" ParamIndex=3
| | `-ParagraphComment 0x56046814fe20 <line:6200:14, line:6201:3>
| | |-TextComment 0x56046814fdd0 <line:6200:14, col:33> Text=" The path separator."
| | `-TextComment 0x56046814fdf0 <line:6201:3> Text=" "
| |-ParamCommandComment 0x56046814fe40 <col:4, line:6202:3> [in] implicitly Param="prefix" ParamIndex=4
| | `-ParagraphComment 0x56046814fef0 <line:6201:17, line:6202:3>
| | |-TextComment 0x56046814fea0 <line:6201:17, col:33> Text=" The path prefix."
| | `-TextComment 0x56046814fec0 <line:6202:3> Text=" "
| |-ParamCommandComment 0x56046814ff10 <col:4, line:6203:3> [in] implicitly Param="recursive" ParamIndex=5
| | `-ParagraphComment 0x56046814ffc0 <line:6202:20, line:6203:3>
| | |-TextComment 0x56046814ff70 <line:6202:20, col:75> Text=" Recursively traverse up the tree until entity is found."
| | `-TextComment 0x56046814ff90 <line:6203:3> Text=" "
| `-BlockCommandComment 0x56046814ffe0 <col:4, col:39> Name="return"
| `-ParagraphComment 0x560468150040 <col:11, col:39>
| `-TextComment 0x560468150010 <col:11, col:39> Text=" The entity if found, else 0."
|-FunctionDecl 0x560467f70fa8 <line:6222:1, line:6225:24> line:6222:14 ecs_lookup_symbol 'ecs_entity_t (const ecs_world_t *, const char *, bool)'
| |-ParmVarDecl 0x560467f70d88 <line:6223:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f70e08 <line:6224:5, col:17> col:17 symbol 'const char *'
| |-ParmVarDecl 0x560467f70e80 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:6225:10> col:10 lookup_as_path 'bool'
| `-FullComment 0x560468150240 <line:6214:4, line:6219:60>
| |-ParagraphComment 0x5604681501a0 <line:6214:4, line:6216:52>
| | |-TextComment 0x560468150120 <line:6214:4, col:40> Text=" Lookup an entity by its symbol name."
| | |-TextComment 0x560468150140 <line:6215:3, col:78> Text=" This looks up an entity by symbol stored in (EcsIdentifier, EcsSymbol). The"
| | `-TextComment 0x560468150160 <line:6216:3, col:52> Text=" operation does not take into account hierarchies."
| `-ParagraphComment 0x560468150210 <line:6218:3, line:6219:60>
| |-TextComment 0x5604681501c0 <line:6218:3, col:73> Text=" This operation can be useful to resolve, for example, a type by its C "
| `-TextComment 0x5604681501e0 <line:6219:3, col:60> Text=" identifier, which does not include the Flecs namespacing."
|-FunctionDecl 0x560467f71540 <line:6247:1, line:6252:23> line:6247:7 ecs_get_path_w_sep 'char *(const ecs_world_t *, ecs_entity_t, ecs_entity_t, const char *, const char *)'
| |-ParmVarDecl 0x560467f71098 <line:6248:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f71110 <line:6249:5, col:18> col:18 parent 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560467f71188 <line:6250:5, col:18> col:18 child 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560467f71208 <line:6251:5, col:17> col:17 sep 'const char *'
| |-ParmVarDecl 0x560467f71288 <line:6252:5, col:17> col:17 prefix 'const char *'
| `-FullComment 0x5604681509d0 <line:6227:4, line:6244:36>
| |-ParagraphComment 0x560468150390 <line:6227:4, line:6231:65>
| | |-TextComment 0x5604681502c0 <line:6227:4, col:40> Text=" Get a path identifier for an entity."
| | |-TextComment 0x5604681502e0 <line:6228:3, col:77> Text=" This operation creates a path that contains the names of the entities from"
| | |-TextComment 0x560468150300 <line:6229:3, col:74> Text=" the specified parent to the provided entity, separated by the provided "
| | |-TextComment 0x560468150320 <line:6230:3, col:80> Text=" separator. If no parent is provided the path will be relative to the root. If"
| | `-TextComment 0x560468150340 <line:6231:3, col:65> Text=" a prefix is provided, the path will be prefixed by the prefix."
| |-ParagraphComment 0x560468150430 <line:6233:3, line:6235:43>
| | |-TextComment 0x5604681503b0 <line:6233:3, col:77> Text=" If the parent is equal to the provided child, the operation will return an"
| | |-TextComment 0x5604681503d0 <line:6234:3, col:81> Text=" empty string. If a nonzero component is provided, the path will be created by "
| | `-TextComment 0x5604681503f0 <line:6235:3, col:43> Text=" looking for parents with that component."
| |-ParagraphComment 0x560468150480 <line:6237:3, col:56>
| | `-TextComment 0x560468150450 <col:3, col:56> Text=" The returned path should be freed by the application."
| |-ParagraphComment 0x5604681504d0 <line:6239:3>
| | `-TextComment 0x5604681504a0 <col:3> Text=" "
| |-ParamCommandComment 0x5604681504f0 <col:4, line:6240:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681505a0 <line:6239:16, line:6240:3>
| | |-TextComment 0x560468150550 <line:6239:16, col:26> Text=" The world."
| | `-TextComment 0x560468150570 <line:6240:3> Text=" "
| |-ParamCommandComment 0x5604681505c0 <col:4, line:6241:3> [in] implicitly Param="parent" ParamIndex=1
| | `-ParagraphComment 0x560468150670 <line:6240:17, line:6241:3>
| | |-TextComment 0x560468150620 <line:6240:17, col:58> Text=" The entity from which to create the path."
| | `-TextComment 0x560468150640 <line:6241:3> Text=" "
| |-ParamCommandComment 0x560468150690 <col:4, line:6242:3> [in] implicitly Param="child" ParamIndex=2
| | `-ParagraphComment 0x560468150740 <line:6241:16, line:6242:3>
| | |-TextComment 0x5604681506f0 <line:6241:16, col:55> Text=" The entity to which to create the path."
| | `-TextComment 0x560468150710 <line:6242:3> Text=" "
| |-ParamCommandComment 0x560468150760 <col:4, line:6243:3> [in] implicitly Param="sep" ParamIndex=3
| | `-ParagraphComment 0x560468150810 <line:6242:14, line:6243:3>
| | |-TextComment 0x5604681507c0 <line:6242:14, col:57> Text=" The separator to use between path elements."
| | `-TextComment 0x5604681507e0 <line:6243:3> Text=" "
| |-ParamCommandComment 0x560468150830 <col:4, line:6244:3> [in] implicitly Param="prefix" ParamIndex=4
| | `-ParagraphComment 0x5604681508e0 <line:6243:17, line:6244:3>
| | |-TextComment 0x560468150890 <line:6243:17, col:64> Text=" The initial character to use for root elements."
| | `-TextComment 0x5604681508b0 <line:6244:3> Text=" "
| `-BlockCommandComment 0x560468150900 <col:4, col:36> Name="return"
| `-ParagraphComment 0x560468150960 <col:11, col:36>
| `-TextComment 0x560468150930 <col:11, col:36> Text=" The relative entity path."
|-FunctionDecl 0x560467f71a28 <line:6264:1, line:6270:22> line:6264:6 ecs_get_path_w_sep_buf 'void (const ecs_world_t *, ecs_entity_t, ecs_entity_t, const char *, const char *, ecs_strbuf_t *)'
| |-ParmVarDecl 0x560467f71648 <line:6265:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560467f716c0 <line:6266:5, col:18> col:18 parent 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560467f71738 <line:6267:5, col:18> col:18 child 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560467f717b8 <line:6268:5, col:17> col:17 sep 'const char *'
| |-ParmVarDecl 0x560467f71838 <line:6269:5, col:17> col:17 prefix 'const char *'
| |-ParmVarDecl 0x560467f718b0 <line:6270:5, col:19> col:19 buf 'ecs_strbuf_t *'
| `-FullComment 0x560468151000 <line:6254:4, line:6262:37>
| |-ParagraphComment 0x560468150a90 <line:6254:4, line:6255:68>
| | |-TextComment 0x560468150a40 <line:6254:4, col:36> Text=" Write path identifier to buffer."
| | `-TextComment 0x560468150a60 <line:6255:3, col:68> Text=" Same as ecs_get_path_w_sep, but writes result to an ecs_strbuf_t."
| |-ParagraphComment 0x560468150ae0 <line:6257:3>
| | `-TextComment 0x560468150ab0 <col:3> Text=" "
| |-ParamCommandComment 0x560468150b00 <col:4, line:6258:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468150bb0 <line:6257:16, line:6258:3>
| | |-TextComment 0x560468150b60 <line:6257:16, col:26> Text=" The world."
| | `-TextComment 0x560468150b80 <line:6258:3> Text=" "
| |-ParamCommandComment 0x560468150bd0 <col:4, line:6259:3> [in] implicitly Param="parent" ParamIndex=1
| | `-ParagraphComment 0x560468150c80 <line:6258:17, line:6259:3>
| | |-TextComment 0x560468150c30 <line:6258:17, col:58> Text=" The entity from which to create the path."
| | `-TextComment 0x560468150c50 <line:6259:3> Text=" "
| |-ParamCommandComment 0x560468150ca0 <col:4, line:6260:3> [in] implicitly Param="child" ParamIndex=2
| | `-ParagraphComment 0x560468150d50 <line:6259:16, line:6260:3>
| | |-TextComment 0x560468150d00 <line:6259:16, col:55> Text=" The entity to which to create the path."
| | `-TextComment 0x560468150d20 <line:6260:3> Text=" "
| |-ParamCommandComment 0x560468150d70 <col:4, line:6261:3> [in] implicitly Param="sep" ParamIndex=3
| | `-ParagraphComment 0x560468150e20 <line:6260:14, line:6261:3>
| | |-TextComment 0x560468150dd0 <line:6260:14, col:57> Text=" The separator to use between path elements."
| | `-TextComment 0x560468150df0 <line:6261:3> Text=" "
| |-ParamCommandComment 0x560468150e40 <col:4, line:6262:3> [in] implicitly Param="prefix" ParamIndex=4
| | `-ParagraphComment 0x560468150ef0 <line:6261:17, line:6262:3>
| | |-TextComment 0x560468150ea0 <line:6261:17, col:64> Text=" The initial character to use for root elements."
| | `-TextComment 0x560468150ec0 <line:6262:3> Text=" "
| `-ParamCommandComment 0x560468150f10 <col:4, col:37> [in] implicitly Param="buf" ParamIndex=5
| `-ParagraphComment 0x560468150fa0 <col:14, col:37>
| `-TextComment 0x560468150f70 <col:14, col:37> Text=" The buffer to write to."
|-FunctionDecl 0x560467f71e88 <line:6288:1, line:6293:23> line:6288:14 ecs_new_from_path_w_sep 'ecs_entity_t (ecs_world_t *, ecs_entity_t, const char *, const char *, const char *)'
| |-ParmVarDecl 0x560467f71b38 <line:6289:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560467f71bb0 <line:6290:5, col:18> col:18 parent 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560467f71c30 <line:6291:5, col:17> col:17 path 'const char *'
| |-ParmVarDecl 0x560467f71cb0 <line:6292:5, col:17> col:17 sep 'const char *'
| |-ParmVarDecl 0x560467f71d30 <line:6293:5, col:17> col:17 prefix 'const char *'
| `-FullComment 0x5604681516d0 <line:6272:4, line:6285:22>
| |-ParagraphComment 0x560468151110 <line:6272:4, line:6275:19>
| | |-TextComment 0x560468151070 <line:6272:4, col:36> Text=" Find or create entity from path."
| | |-TextComment 0x560468151090 <line:6273:3, col:80> Text=" This operation will find or create an entity from a path, and will create any"
| | |-TextComment 0x5604681510b0 <line:6274:3, col:79> Text=" intermediate entities if required. If the entity already exists, no entities"
| | `-TextComment 0x5604681510d0 <line:6275:3, col:19> Text=" will be created."
| |-ParagraphComment 0x560468151180 <line:6277:3, line:6278:14>
| | |-TextComment 0x560468151130 <line:6277:3, col:79> Text=" If the path starts with the prefix, then the entity will be created from the"
| | `-TextComment 0x560468151150 <line:6278:3, col:14> Text=" root scope."
| |-ParagraphComment 0x5604681511d0 <line:6280:3>
| | `-TextComment 0x5604681511a0 <col:3> Text=" "
| |-ParamCommandComment 0x5604681511f0 <col:4, line:6281:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681512a0 <line:6280:16, line:6281:3>
| | |-TextComment 0x560468151250 <line:6280:16, col:26> Text=" The world."
| | `-TextComment 0x560468151270 <line:6281:3> Text=" "
| |-ParamCommandComment 0x5604681512c0 <col:4, line:6282:3> [in] implicitly Param="parent" ParamIndex=1
| | `-ParagraphComment 0x560468151370 <line:6281:17, line:6282:3>
| | |-TextComment 0x560468151320 <line:6281:17, col:75> Text=" The entity relative to which the entity should be created."
| | `-TextComment 0x560468151340 <line:6282:3> Text=" "
| |-ParamCommandComment 0x560468151390 <col:4, line:6283:3> [in] implicitly Param="path" ParamIndex=2
| | `-ParagraphComment 0x560468151440 <line:6282:15, line:6283:3>
| | |-TextComment 0x5604681513f0 <line:6282:15, col:49> Text=" The path to create the entity for."
| | `-TextComment 0x560468151410 <line:6283:3> Text=" "
| |-ParamCommandComment 0x560468151460 <col:4, line:6284:3> [in] implicitly Param="sep" ParamIndex=3
| | `-ParagraphComment 0x560468151510 <line:6283:14, line:6284:3>
| | |-TextComment 0x5604681514c0 <line:6283:14, col:45> Text=" The separator used in the path."
| | `-TextComment 0x5604681514e0 <line:6284:3> Text=" "
| |-ParamCommandComment 0x560468151530 <col:4, line:6285:3> [in] implicitly Param="prefix" ParamIndex=4
| | `-ParagraphComment 0x5604681515e0 <line:6284:17, line:6285:3>
| | |-TextComment 0x560468151590 <line:6284:17, col:45> Text=" The prefix used in the path."
| | `-TextComment 0x5604681515b0 <line:6285:3> Text=" "
| `-BlockCommandComment 0x560468151600 <col:4, col:22> Name="return"
| `-ParagraphComment 0x560468151660 <col:11, col:22>
| `-TextComment 0x560468151630 <col:11, col:22> Text=" The entity."
|-FunctionDecl 0x560467f72368 <line:6310:1, line:6316:23> line:6310:14 ecs_add_path_w_sep 'ecs_entity_t (ecs_world_t *, ecs_entity_t, ecs_entity_t, const char *, const char *, const char *)'
| |-ParmVarDecl 0x560467f71f88 <line:6311:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560467f72000 <line:6312:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560467f72078 <line:6313:5, col:18> col:18 parent 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560467f720f8 <line:6314:5, col:17> col:17 path 'const char *'
| |-ParmVarDecl 0x560467f72178 <line:6315:5, col:17> col:17 sep 'const char *'
| |-ParmVarDecl 0x560467f721f8 <line:6316:5, col:17> col:17 prefix 'const char *'
| `-FullComment 0x560468151e30 <line:6295:4, line:6307:22>
| |-ParagraphComment 0x5604681517c0 <line:6295:4, line:6297:25>
| | |-TextComment 0x560468151740 <line:6295:4, col:33> Text=" Add specified path to entity."
| | |-TextComment 0x560468151760 <line:6296:3, col:80> Text=" This operation is similar to ecs_new_from_path, but will instead add the path"
| | `-TextComment 0x560468151780 <line:6297:3, col:25> Text=" to an existing entity."
| |-ParagraphComment 0x560468151810 <line:6299:3, col:73>
| | `-TextComment 0x5604681517e0 <col:3, col:73> Text=" If an entity already exists for the path, it will be returned instead."
| |-ParagraphComment 0x560468151860 <line:6301:3>
| | `-TextComment 0x560468151830 <col:3> Text=" "
| |-ParamCommandComment 0x560468151880 <col:4, line:6302:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468151930 <line:6301:16, line:6302:3>
| | |-TextComment 0x5604681518e0 <line:6301:16, col:26> Text=" The world."
| | `-TextComment 0x560468151900 <line:6302:3> Text=" "
| |-ParamCommandComment 0x560468151950 <col:4, line:6303:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468151a00 <line:6302:17, line:6303:3>
| | |-TextComment 0x5604681519b0 <line:6302:17, col:53> Text=" The entity to which to add the path."
| | `-TextComment 0x5604681519d0 <line:6303:3> Text=" "
| |-ParamCommandComment 0x560468151a20 <col:4, line:6304:3> [in] implicitly Param="parent" ParamIndex=2
| | `-ParagraphComment 0x560468151ad0 <line:6303:17, line:6304:3>
| | |-TextComment 0x560468151a80 <line:6303:17, col:75> Text=" The entity relative to which the entity should be created."
| | `-TextComment 0x560468151aa0 <line:6304:3> Text=" "
| |-ParamCommandComment 0x560468151af0 <col:4, line:6305:3> [in] implicitly Param="path" ParamIndex=3
| | `-ParagraphComment 0x560468151ba0 <line:6304:15, line:6305:3>
| | |-TextComment 0x560468151b50 <line:6304:15, col:49> Text=" The path to create the entity for."
| | `-TextComment 0x560468151b70 <line:6305:3> Text=" "
| |-ParamCommandComment 0x560468151bc0 <col:4, line:6306:3> [in] implicitly Param="sep" ParamIndex=4
| | `-ParagraphComment 0x560468151c70 <line:6305:14, line:6306:3>
| | |-TextComment 0x560468151c20 <line:6305:14, col:45> Text=" The separator used in the path."
| | `-TextComment 0x560468151c40 <line:6306:3> Text=" "
| |-ParamCommandComment 0x560468151c90 <col:4, line:6307:3> [in] implicitly Param="prefix" ParamIndex=5
| | `-ParagraphComment 0x560468151d40 <line:6306:17, line:6307:3>
| | |-TextComment 0x560468151cf0 <line:6306:17, col:45> Text=" The prefix used in the path."
| | `-TextComment 0x560468151d10 <line:6307:3> Text=" "
| `-BlockCommandComment 0x560468151d60 <col:4, col:22> Name="return"
| `-ParagraphComment 0x560468151dc0 <col:11, col:22>
| `-TextComment 0x560468151d90 <col:11, col:22> Text=" The entity."
|-FunctionDecl 0x560468050978 <line:6330:1, line:6332:23> line:6330:14 ecs_set_scope 'ecs_entity_t (ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x560467f72478 <line:6331:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680508a0 <line:6332:5, col:18> col:18 scope 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468152250 <line:6318:4, line:6327:30>
| |-ParagraphComment 0x560468151f40 <line:6318:4, line:6321:34>
| | |-TextComment 0x560468151ea0 <line:6318:4, col:26> Text=" Set the current scope."
| | |-TextComment 0x560468151ec0 <line:6319:3, col:77> Text=" This operation sets the scope of the current stage to the provided entity."
| | |-TextComment 0x560468151ee0 <line:6320:3, col:78> Text=" As a result new entities will be created in this scope, and lookups will be"
| | `-TextComment 0x560468151f00 <line:6321:3, col:34> Text=" relative to the provided scope."
| |-ParagraphComment 0x560468151f90 <line:6323:3, col:72>
| | `-TextComment 0x560468151f60 <col:3, col:72> Text=" It is considered good practice to restore the scope to the old value."
| |-ParagraphComment 0x560468151fe0 <line:6325:3>
| | `-TextComment 0x560468151fb0 <col:3> Text=" "
| |-ParamCommandComment 0x560468152000 <col:4, line:6326:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681520b0 <line:6325:16, line:6326:3>
| | |-TextComment 0x560468152060 <line:6325:16, col:26> Text=" The world."
| | `-TextComment 0x560468152080 <line:6326:3> Text=" "
| |-ParamCommandComment 0x5604681520d0 <col:4, line:6327:3> [in] implicitly Param="scope" ParamIndex=1
| | `-ParagraphComment 0x560468152180 <line:6326:16, line:6327:3>
| | |-TextComment 0x560468152130 <line:6326:16, col:43> Text=" The entity to use as scope."
| | `-TextComment 0x560468152150 <line:6327:3> Text=" "
| `-BlockCommandComment 0x5604681521a0 <col:4, col:30> Name="return"
| `-ParagraphComment 0x560468152200 <col:11, col:30>
| `-TextComment 0x5604681521d0 <col:11, col:30> Text=" The previous scope."
|-FunctionDecl 0x560468050b28 <line:6342:1, line:6343:29> line:6342:14 ecs_get_scope 'ecs_entity_t (const ecs_world_t *)'
| |-ParmVarDecl 0x560468050a68 <line:6343:5, col:24> col:24 world 'const ecs_world_t *'
| `-FullComment 0x560468152530 <line:6334:4, line:6339:29>
| |-ParagraphComment 0x560468152350 <line:6334:4, line:6336:12>
| | |-TextComment 0x5604681522d0 <line:6334:4, col:26> Text=" Get the current scope."
| | |-TextComment 0x5604681522f0 <line:6335:3, col:78> Text=" Get the scope set by ecs_set_scope. If no scope is set, this operation will"
| | `-TextComment 0x560468152310 <line:6336:3, col:12> Text=" return 0."
| |-ParagraphComment 0x5604681523a0 <line:6338:3>
| | `-TextComment 0x560468152370 <col:3> Text=" "
| |-ParamCommandComment 0x5604681523c0 <col:4, line:6339:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468152470 <line:6338:16, line:6339:3>
| | |-TextComment 0x560468152420 <line:6338:16, col:26> Text=" The world."
| | `-TextComment 0x560468152440 <line:6339:3> Text=" "
| `-BlockCommandComment 0x560468152490 <col:4, col:29> Name="return"
| `-ParagraphComment 0x5604681524f0 <col:11, col:29>
| `-TextComment 0x5604681524c0 <col:11, col:29> Text=" The current scope."
|-FunctionDecl 0x560468050da0 <line:6355:1, line:6357:23> line:6355:13 ecs_set_name_prefix 'const char *(ecs_world_t *, const char *)'
| |-ParmVarDecl 0x560468050c08 <line:6356:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468050c88 <line:6357:5, col:17> col:17 prefix 'const char *'
| `-FullComment 0x560468152900 <line:6345:4, line:6352:31>
| |-ParagraphComment 0x560468152640 <line:6345:4, line:6348:67>
| | |-TextComment 0x5604681525a0 <line:6345:4, col:49> Text=" Set a name prefix for newly created entities."
| | |-TextComment 0x5604681525c0 <line:6346:3, col:75> Text=" This is a utility that lets C modules use prefixed names for C types and"
| | |-TextComment 0x5604681525e0 <line:6347:3, col:76> Text=" C functions, while using names for the entity names that do not have the "
| | `-TextComment 0x560468152600 <line:6348:3, col:67> Text=" prefix. The name prefix is currently only used by ECS_COMPONENT."
| |-ParagraphComment 0x560468152690 <line:6350:3>
| | `-TextComment 0x560468152660 <col:3> Text=" "
| |-ParamCommandComment 0x5604681526b0 <col:4, line:6351:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468152760 <line:6350:16, line:6351:3>
| | |-TextComment 0x560468152710 <line:6350:16, col:26> Text=" The world."
| | `-TextComment 0x560468152730 <line:6351:3> Text=" "
| |-ParamCommandComment 0x560468152780 <col:4, line:6352:3> [in] implicitly Param="prefix" ParamIndex=1
| | `-ParagraphComment 0x560468152830 <line:6351:17, line:6352:3>
| | |-TextComment 0x5604681527e0 <line:6351:17, col:40> Text=" The name prefix to use."
| | `-TextComment 0x560468152800 <line:6352:3> Text=" "
| `-BlockCommandComment 0x560468152850 <col:4, col:31> Name="return"
| `-ParagraphComment 0x5604681528b0 <col:11, col:31>
| `-TextComment 0x560468152880 <col:11, col:31> Text=" The previous prefix."
|-FunctionDecl 0x560468051018 <line:6384:1, line:6386:36> line:6384:15 ecs_set_lookup_path 'ecs_entity_t *(ecs_world_t *, const ecs_entity_t *)'
| |-ParmVarDecl 0x560468050e88 <line:6385:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468050f00 <line:6386:5, col:25> col:25 lookup_path 'const ecs_entity_t *'
| `-FullComment 0x560468152f40 <line:6359:4, line:6381:37>
| |-ParagraphComment 0x560468152a10 <line:6359:4, line:6362:54>
| | |-TextComment 0x560468152970 <line:6359:4, col:42> Text=" Set search path for lookup operations."
| | |-TextComment 0x560468152990 <line:6360:3, col:76> Text=" This operation accepts an array of entity ids that will be used as search"
| | |-TextComment 0x5604681529b0 <line:6361:3, col:78> Text=" scopes by lookup operations. The operation returns the current search path."
| | `-TextComment 0x5604681529d0 <line:6362:3, col:54> Text=" It is good practice to restore the old search path."
| |-ParagraphComment 0x560468152a60 <line:6364:3, col:68>
| | `-TextComment 0x560468152a30 <col:3, col:68> Text=" The search path will be evaluated starting from the last element."
| |-ParagraphComment 0x560468152b20 <line:6366:3, line:6369:69>
| | |-TextComment 0x560468152a80 <line:6366:3, col:76> Text=" The default search path includes flecs.core. When a custom search path is"
| | |-TextComment 0x560468152aa0 <line:6367:3, col:75> Text=" provided it overwrites the existing search path. Operations that rely on"
| | |-TextComment 0x560468152ac0 <line:6368:3, col:79> Text=" looking up names from flecs.core without providing the namespace may fail if"
| | `-TextComment 0x560468152ae0 <line:6369:3, col:69> Text=" the custom search path does not include flecs.core (EcsFlecsCore)."
| |-ParagraphComment 0x560468152bc0 <line:6371:3, line:6373:15>
| | |-TextComment 0x560468152b40 <line:6371:3, col:80> Text=" The search path array is not copied into managed memory. The application must"
| | |-TextComment 0x560468152b60 <line:6372:3, col:75> Text=" ensure that the provided array is valid for as long as it is used as the"
| | `-TextComment 0x560468152b80 <line:6373:3, col:15> Text=" search path."
| |-ParagraphComment 0x560468152c60 <line:6375:3, line:6377:39>
| | |-TextComment 0x560468152be0 <line:6375:3, col:74> Text=" The provided array must be terminated with a 0 element. This enables an"
| | |-TextComment 0x560468152c00 <line:6376:3, col:77> Text=" application to push/pop elements to an existing array without invoking the"
| | `-TextComment 0x560468152c20 <line:6377:3, col:39> Text=" ecs_set_lookup_path operation again."
| |-ParagraphComment 0x560468152cb0 <line:6379:3>
| | `-TextComment 0x560468152c80 <col:3> Text=" "
| |-ParamCommandComment 0x560468152cd0 <col:4, line:6380:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468152d80 <line:6379:16, line:6380:3>
| | |-TextComment 0x560468152d30 <line:6379:16, col:26> Text=" The world."
| | `-TextComment 0x560468152d50 <line:6380:3> Text=" "
| |-ParamCommandComment 0x560468152da0 <col:4, line:6381:3> [in] implicitly Param="lookup_path" ParamIndex=1
| | `-ParagraphComment 0x560468152e50 <line:6380:22, line:6381:3>
| | |-TextComment 0x560468152e00 <line:6380:22, col:77> Text=" 0-terminated array with entity ids for the lookup path."
| | `-TextComment 0x560468152e20 <line:6381:3> Text=" "
| `-BlockCommandComment 0x560468152e70 <col:4, col:37> Name="return"
| `-ParagraphComment 0x560468152ed0 <col:11, col:37>
| `-TextComment 0x560468152ea0 <col:11, col:37> Text=" Current lookup path array."
|-FunctionDecl 0x5604680511f8 <line:6395:1, line:6396:29> line:6395:15 ecs_get_lookup_path 'ecs_entity_t *(const ecs_world_t *)'
| |-ParmVarDecl 0x560468051108 <line:6396:5, col:24> col:24 world 'const ecs_world_t *'
| `-FullComment 0x5604681531e0 <line:6388:4, line:6392:35>
| |-ParagraphComment 0x560468153000 <line:6388:4, line:6389:44>
| | |-TextComment 0x560468152fb0 <line:6388:4, col:28> Text=" Get current lookup path."
| | `-TextComment 0x560468152fd0 <line:6389:3, col:44> Text=" Returns value set by ecs_set_lookup_path."
| |-ParagraphComment 0x560468153050 <line:6391:3>
| | `-TextComment 0x560468153020 <col:3> Text=" "
| |-ParamCommandComment 0x560468153070 <col:4, line:6392:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468153120 <line:6391:16, line:6392:3>
| | |-TextComment 0x5604681530d0 <line:6391:16, col:26> Text=" The world."
| | `-TextComment 0x5604681530f0 <line:6392:3> Text=" "
| `-BlockCommandComment 0x560468153140 <col:4, col:35> Name="return"
| `-ParagraphComment 0x5604681531a0 <col:11, col:35>
| `-TextComment 0x560468153170 <col:11, col:35> Text=" The current lookup path."
|-FunctionDecl 0x560468051568 <line:6422:1, line:6424:37> line:6422:14 ecs_component_init 'ecs_entity_t (ecs_world_t *, const ecs_component_desc_t *)'
| |-ParmVarDecl 0x560468051368 <line:6423:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468051458 <line:6424:5, col:33> col:33 desc 'const ecs_component_desc_t *'
| `-FullComment 0x560468153660 <line:6408:4, line:6419:69>
| |-ParagraphComment 0x5604681532d0 <line:6408:4, line:6410:50>
| | |-TextComment 0x560468153250 <line:6408:4, col:32> Text=" Find or create a component. "
| | |-TextComment 0x560468153270 <line:6409:3, col:80> Text=" This operation creates a new component, or finds an existing one. The find or"
| | `-TextComment 0x560468153290 <line:6410:3, col:50> Text=" create behavior is the same as ecs_entity_init."
| |-ParagraphComment 0x560468153340 <line:6412:3, line:6413:76>
| | |-TextComment 0x5604681532f0 <line:6412:3, col:80> Text=" When an existing component is found, the size and alignment are verified with"
| | `-TextComment 0x560468153310 <line:6413:3, col:76> Text=" the provided values. If the values do not match, the operation will fail."
| |-ParagraphComment 0x560468153390 <line:6415:3, col:67>
| | `-TextComment 0x560468153360 <col:3, col:67> Text=" See the documentation of ecs_component_desc_t for more details. "
| |-ParagraphComment 0x5604681533e0 <line:6417:3>
| | `-TextComment 0x5604681533b0 <col:3> Text=" "
| |-ParamCommandComment 0x560468153400 <col:4, line:6418:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681534b0 <line:6417:16, line:6418:3>
| | |-TextComment 0x560468153460 <line:6417:16, col:26> Text=" The world."
| | `-TextComment 0x560468153480 <line:6418:3> Text=" "
| |-ParamCommandComment 0x5604681534d0 <col:4, line:6419:3> [in] implicitly Param="desc" ParamIndex=1
| | `-ParagraphComment 0x560468153580 <line:6418:15, line:6419:3>
| | |-TextComment 0x560468153530 <line:6418:15, col:41> Text=" Component init parameters."
| | `-TextComment 0x560468153550 <line:6419:3> Text=" "
| `-BlockCommandComment 0x5604681535a0 <col:4, col:69> Name="return"
| `-ParagraphComment 0x560468153600 <col:11, col:69>
| `-TextComment 0x5604681535d0 <col:11, col:69> Text=" A handle to the new or existing component, or 0 if failed."
|-FunctionDecl 0x560468056908 <line:6438:1, line:6441:34> line:6438:6 ecs_set_hooks_id 'void (ecs_world_t *, ecs_entity_t, const ecs_type_hooks_t *)'
| |-ParmVarDecl 0x560468051658 <line:6439:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680516d0 <line:6440:5, col:18> col:18 id 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680517a8 <line:6441:5, col:29> col:29 hooks 'const ecs_type_hooks_t *'
| `-FullComment 0x560468153ab0 <line:6426:4, line:6435:57>
| |-ParagraphComment 0x560468153770 <line:6426:4, line:6429:69>
| | |-TextComment 0x5604681536d0 <line:6426:4, col:33> Text=" Register hooks for component."
| | |-TextComment 0x5604681536f0 <line:6427:3, col:78> Text=" Hooks allow for the execution of user code when components are constructed,"
| | |-TextComment 0x560468153710 <line:6428:3, col:77> Text=" copied, moved, destructed, added, removed or set. Hooks can be assigned as"
| | `-TextComment 0x560468153730 <line:6429:3, col:69> Text=" as long as a component has not yet been used (added to an entity)."
| |-ParagraphComment 0x5604681537c0 <line:6431:3, col:75>
| | `-TextComment 0x560468153790 <col:3, col:75> Text=" The hooks that are currently set can be accessed with ecs_get_type_info."
| |-ParagraphComment 0x560468153810 <line:6433:3>
| | `-TextComment 0x5604681537e0 <col:3> Text=" "
| |-ParamCommandComment 0x560468153830 <col:4, line:6434:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681538e0 <line:6433:16, line:6434:3>
| | |-TextComment 0x560468153890 <line:6433:16, col:26> Text=" The world."
| | `-TextComment 0x5604681538b0 <line:6434:3> Text=" "
| |-ParamCommandComment 0x560468153900 <col:4, line:6435:3> [in] implicitly Param="id" ParamIndex=1
| | `-ParagraphComment 0x5604681539b0 <line:6434:13, line:6435:3>
| | |-TextComment 0x560468153960 <line:6434:13, col:63> Text=" The component id for which to register the actions"
| | `-TextComment 0x560468153980 <line:6435:3> Text=" "
| `-ParamCommandComment 0x5604681539d0 <col:4, col:57> [in] implicitly Param="hooks" ParamIndex=2
| `-ParagraphComment 0x560468153a60 <col:16, col:57>
| `-TextComment 0x560468153a30 <col:16, col:57> Text=" Type that contains the component actions."
|-FunctionDecl 0x560468056b88 <line:6450:1, line:6452:20> line:6450:25 ecs_get_hooks_id 'const ecs_type_hooks_t *(ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x5604680569f8 <line:6451:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468056a70 <line:6452:5, col:18> col:18 id 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468153e10 <line:6443:4, line:6447:66>
| |-ParagraphComment 0x560468153b50 <line:6443:4, col:28>
| | `-TextComment 0x560468153b20 <col:4, col:28> Text=" Get hooks for component."
| |-ParagraphComment 0x560468153ba0 <line:6445:3>
| | `-TextComment 0x560468153b70 <col:3> Text=" "
| |-ParamCommandComment 0x560468153bc0 <col:4, line:6446:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468153c70 <line:6445:16, line:6446:3>
| | |-TextComment 0x560468153c20 <line:6445:16, col:26> Text=" The world."
| | `-TextComment 0x560468153c40 <line:6446:3> Text=" "
| |-ParamCommandComment 0x560468153c90 <col:4, line:6447:3> [in] implicitly Param="id" ParamIndex=1
| | `-ParagraphComment 0x560468153d40 <line:6446:13, line:6447:3>
| | |-TextComment 0x560468153cf0 <line:6446:13, col:62> Text=" The component id for which to retrieve the hooks."
| | `-TextComment 0x560468153d10 <line:6447:3> Text=" "
| `-BlockCommandComment 0x560468153d60 <col:4, col:66> Name="return"
| `-ParagraphComment 0x560468153dc0 <col:11, col:66>
| `-TextComment 0x560468153d90 <col:11, col:66> Text=" The hooks for the component, or NULL if not registered."
|-FunctionDecl 0x560468056e28 <line:6477:1, line:6479:16> line:6477:14 ecs_id_is_tag 'ecs_entity_t (const ecs_world_t *, ecs_id_t)'
| |-ParmVarDecl 0x560468056cd8 <line:6478:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468056d50 <line:6479:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x5604681542e0 <line:6462:4, line:6474:44>
| |-ParagraphComment 0x560468153f00 <line:6462:4, line:6464:22>
| | |-TextComment 0x560468153e80 <line:6462:4, col:39> Text=" Returns whether specified id a tag."
| | |-TextComment 0x560468153ea0 <line:6463:3, col:75> Text=" This operation returns whether the specified type is a tag (a component "
| | `-TextComment 0x560468153ec0 <line:6464:3, col:22> Text=" without data/size)."
| |-ParagraphComment 0x560468153ff0 <line:6466:3, line:6470:60>
| | |-TextComment 0x560468153f20 <line:6466:3, col:23> Text=" An id is a tag when:"
| | |-TextComment 0x560468153f40 <line:6467:3, col:55> Text=" - it is an entity without the EcsComponent component"
| | |-TextComment 0x560468153f60 <line:6468:3, col:53> Text=" - it has an EcsComponent with size member set to 0"
| | |-TextComment 0x560468153f80 <line:6469:3, col:47> Text=" - it is a pair where both elements are a tag"
| | `-TextComment 0x560468153fa0 <line:6470:3, col:60> Text=" - it is a pair where the first element has the EcsTag tag"
| |-ParagraphComment 0x560468154040 <line:6472:3>
| | `-TextComment 0x560468154010 <col:3> Text=" "
| |-ParamCommandComment 0x560468154060 <col:4, line:6473:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468154110 <line:6472:16, line:6473:3>
| | |-TextComment 0x5604681540c0 <line:6472:16, col:26> Text=" The world."
| | `-TextComment 0x5604681540e0 <line:6473:3> Text=" "
| |-ParamCommandComment 0x560468154130 <col:4, line:6474:3> [in] implicitly Param="id" ParamIndex=1
| | `-ParagraphComment 0x5604681541e0 <line:6473:13, line:6474:3>
| | |-TextComment 0x560468154190 <line:6473:13, col:20> Text=" The id."
| | `-TextComment 0x5604681541b0 <line:6474:3> Text=" "
| `-BlockCommandComment 0x560468154200 <col:4, col:44> Name="return"
| `-ParagraphComment 0x560468154260 <col:11, col:44>
| `-TextComment 0x560468154230 <col:11, col:44> Text=" Whether the provided id is a tag."
|-FunctionDecl 0x5604680570a8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:6492:16> line:6490:6 ecs_id_in_use 'bool (ecs_world_t *, ecs_id_t)'
| |-ParmVarDecl 0x560468056f18 <line:6491:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468056f90 <line:6492:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468154690 <line:6481:4, line:6487:36>
| |-ParagraphComment 0x5604681543d0 <line:6481:4, line:6483:46>
| | |-TextComment 0x560468154350 <line:6481:4, col:43> Text=" Returns whether specified id is in use."
| | |-TextComment 0x560468154370 <line:6482:3, col:79> Text=" This operation returns whether an id is in use in the world. An id is in use"
| | `-TextComment 0x560468154390 <line:6483:3, col:46> Text=" if it has been added to one or more tables."
| |-ParagraphComment 0x560468154420 <line:6485:3>
| | `-TextComment 0x5604681543f0 <col:3> Text=" "
| |-ParamCommandComment 0x560468154440 <col:4, line:6486:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681544f0 <line:6485:16, line:6486:3>
| | |-TextComment 0x5604681544a0 <line:6485:16, col:26> Text=" The world."
| | `-TextComment 0x5604681544c0 <line:6486:3> Text=" "
| |-ParamCommandComment 0x560468154510 <col:4, line:6487:3> [in] implicitly Param="id" ParamIndex=1
| | `-ParagraphComment 0x5604681545c0 <line:6486:13, line:6487:3>
| | |-TextComment 0x560468154570 <line:6486:13, col:20> Text=" The id."
| | `-TextComment 0x560468154590 <line:6487:3> Text=" "
| `-BlockCommandComment 0x5604681545e0 <col:4, col:36> Name="return"
| `-ParagraphComment 0x560468154640 <col:11, col:36>
| `-TextComment 0x560468154610 <col:11, col:36> Text=" Whether the id is in use."
|-FunctionDecl 0x560468057328 <line:6504:1, line:6506:16> line:6504:24 ecs_get_type_info 'const ecs_type_info_t *(const ecs_world_t *, ecs_id_t)'
| |-ParmVarDecl 0x560468057198 <line:6505:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468057210 <line:6506:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468154a60 <line:6494:4, line:6501:42>
| |-ParagraphComment 0x5604681547a0 <line:6494:4, line:6497:26>
| | |-TextComment 0x560468154700 <line:6494:4, col:27> Text=" Get the type for an id."
| | |-TextComment 0x560468154720 <line:6495:3, col:79> Text=" This function returnsthe type information for an id. The specified id can be"
| | |-TextComment 0x560468154740 <line:6496:3, col:77> Text=" any valid id. For the rules on how type information is determined based on"
| | `-TextComment 0x560468154760 <line:6497:3, col:26> Text=" id, see ecs_get_typeid."
| |-ParagraphComment 0x5604681547f0 <line:6499:3>
| | `-TextComment 0x5604681547c0 <col:3> Text=" "
| |-ParamCommandComment 0x560468154810 <col:4, line:6500:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681548c0 <line:6499:16, line:6500:3>
| | |-TextComment 0x560468154870 <line:6499:16, col:26> Text=" The world."
| | `-TextComment 0x560468154890 <line:6500:3> Text=" "
| |-ParamCommandComment 0x5604681548e0 <col:4, line:6501:3> [in] implicitly Param="id" ParamIndex=1
| | `-ParagraphComment 0x560468154990 <line:6500:13, line:6501:3>
| | |-TextComment 0x560468154940 <line:6500:13, col:20> Text=" The id."
| | `-TextComment 0x560468154960 <line:6501:3> Text=" "
| `-BlockCommandComment 0x5604681549b0 <col:4, col:42> Name="return"
| `-ParagraphComment 0x560468154a10 <col:11, col:42>
| `-TextComment 0x5604681549e0 <col:11, col:42> Text=" The type information of the id."
|-FunctionDecl 0x560468057528 <line:6528:1, line:6530:16> line:6528:14 ecs_get_typeid 'ecs_entity_t (const ecs_world_t *, ecs_id_t)'
| |-ParmVarDecl 0x560468057418 <line:6529:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468057490 <line:6530:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468154fc0 <line:6508:4, line:6525:33>
| |-ParagraphComment 0x560468154b70 <line:6508:4, line:6511:71>
| | |-TextComment 0x560468154ad0 <line:6508:4, col:27> Text=" Get the type for an id."
| | |-TextComment 0x560468154af0 <line:6509:3, col:77> Text=" This operation returns the component id for an id, if the id is associated"
| | |-TextComment 0x560468154b10 <line:6510:3, col:80> Text=" with a type. For a regular component with a non-zero size (an entity with the"
| | `-TextComment 0x560468154b30 <line:6511:3, col:71> Text=" EcsComponent component) the operation will return the entity itself."
| |-ParagraphComment 0x560468154be0 <line:6513:3, line:6514:63>
| | |-TextComment 0x560468154b90 <line:6513:3, col:74> Text=" For an entity that does not have the EcsComponent component, or with an"
| | `-TextComment 0x560468154bb0 <line:6514:3, col:63> Text=" EcsComponent value with size 0, the operation will return 0."
| |-ParagraphComment 0x560468154cf0 <line:6516:3, line:6521:19>
| | |-TextComment 0x560468154c00 <line:6516:3, col:80> Text=" For a pair id the operation will return the type associated with the pair, by"
| | |-TextComment 0x560468154c20 <line:6517:3, col:41> Text=" applying the following rules in order:"
| | |-TextComment 0x560468154c40 <line:6518:3, col:60> Text=" - The first pair element is returned if it is a component"
| | |-TextComment 0x560468154c60 <line:6519:3, col:66> Text=" - 0 is returned if the relationship entity has the Tag property"
| | |-TextComment 0x560468154c80 <line:6520:3, col:61> Text=" - The second pair element is returned if it is a component"
| | `-TextComment 0x560468154ca0 <line:6521:3, col:19> Text=" - 0 is returned."
| |-ParagraphComment 0x560468154d40 <line:6523:3>
| | `-TextComment 0x560468154d10 <col:3> Text=" "
| |-ParamCommandComment 0x560468154d60 <col:4, line:6524:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468154e10 <line:6523:16, line:6524:3>
| | |-TextComment 0x560468154dc0 <line:6523:16, col:26> Text=" The world."
| | `-TextComment 0x560468154de0 <line:6524:3> Text=" "
| |-ParamCommandComment 0x560468154e30 <col:4, line:6525:3> [in] implicitly Param="id" ParamIndex=1
| | `-ParagraphComment 0x560468154ee0 <line:6524:13, line:6525:3>
| | |-TextComment 0x560468154e90 <line:6524:13, col:20> Text=" The id."
| | `-TextComment 0x560468154eb0 <line:6525:3> Text=" "
| `-BlockCommandComment 0x560468154f00 <col:4, col:33> Name="return"
| `-ParagraphComment 0x560468154f60 <col:11, col:33>
| `-TextComment 0x560468154f30 <col:11, col:33> Text=" The type id of the id."
|-FunctionDecl 0x5604680577a8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:6542:21> line:6540:6 ecs_id_match 'bool (ecs_id_t, ecs_id_t)'
| |-ParmVarDecl 0x560468057618 <line:6541:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| |-ParmVarDecl 0x560468057690 <line:6542:5, col:14> col:14 pattern 'ecs_id_t':'unsigned long'
| `-FullComment 0x5604681552c0 <line:6532:4, line:6537:46>
| |-ParagraphComment 0x5604681550b0 <line:6532:4, line:6534:70>
| | |-TextComment 0x560468155030 <line:6532:4, col:42> Text=" Utility to match an id with a pattern."
| | |-TextComment 0x560468155050 <line:6533:3, col:75> Text=" This operation returns true if the provided pattern matches the provided"
| | `-TextComment 0x560468155070 <line:6534:3, col:70> Text=" id. The pattern may contain a wildcard (or wildcards, when a pair)."
| |-ParagraphComment 0x560468155100 <line:6536:3>
| | `-TextComment 0x5604681550d0 <col:3> Text=" "
| |-ParamCommandComment 0x560468155120 <col:4, line:6537:3> [in] implicitly Param="id" ParamIndex=0
| | `-ParagraphComment 0x5604681551d0 <line:6536:13, line:6537:3>
| | |-TextComment 0x560468155180 <line:6536:13, col:20> Text=" The id."
| | `-TextComment 0x5604681551a0 <line:6537:3> Text=" "
| `-ParamCommandComment 0x5604681551f0 <col:4, col:46> [in] implicitly Param="pattern" ParamIndex=1
| `-ParagraphComment 0x560468155280 <col:18, col:46>
| `-TextComment 0x560468155250 <col:18, col:46> Text=" The pattern to compare with."
|-FunctionDecl 0x5604680579d8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:6551:16> line:6550:6 ecs_id_is_pair 'bool (ecs_id_t)'
| |-ParmVarDecl 0x5604680578e0 <line:6551:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468155540 <line:6544:4, line:6547:32>
| |-ParagraphComment 0x560468155360 <line:6544:4, col:37>
| | `-TextComment 0x560468155330 <col:4, col:37> Text=" Utility to check if id is a pair."
| |-ParagraphComment 0x5604681553b0 <line:6546:3>
| | `-TextComment 0x560468155380 <col:3> Text=" "
| |-ParamCommandComment 0x5604681553d0 <col:4, line:6547:3> [in] implicitly Param="id" ParamIndex=0
| | `-ParagraphComment 0x560468155480 <line:6546:13, line:6547:3>
| | |-TextComment 0x560468155430 <line:6546:13, col:20> Text=" The id."
| | `-TextComment 0x560468155450 <line:6547:3> Text=" "
| `-BlockCommandComment 0x5604681554a0 <col:4, col:32> Name="return"
| `-ParagraphComment 0x560468155500 <col:11, col:32>
| `-TextComment 0x5604681554d0 <col:11, col:32> Text=" True if id is a pair."
|-FunctionDecl 0x560468057b48 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:6560:16> line:6559:6 ecs_id_is_wildcard 'bool (ecs_id_t)'
| |-ParmVarDecl 0x560468057ab8 <line:6560:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x5604681557c0 <line:6553:4, line:6556:68>
| |-ParagraphComment 0x5604681555e0 <line:6553:4, col:41>
| | `-TextComment 0x5604681555b0 <col:4, col:41> Text=" Utility to check if id is a wildcard."
| |-ParagraphComment 0x560468155630 <line:6555:3>
| | `-TextComment 0x560468155600 <col:3> Text=" "
| |-ParamCommandComment 0x560468155650 <col:4, line:6556:3> [in] implicitly Param="id" ParamIndex=0
| | `-ParagraphComment 0x560468155700 <line:6555:13, line:6556:3>
| | |-TextComment 0x5604681556b0 <line:6555:13, col:20> Text=" The id."
| | `-TextComment 0x5604681556d0 <line:6556:3> Text=" "
| `-BlockCommandComment 0x560468155720 <col:4, col:68> Name="return"
| `-ParagraphComment 0x560468155780 <col:11, col:68>
| `-TextComment 0x560468155750 <col:11, col:68> Text=" True if id is a wildcard or a pair containing a wildcard."
|-FunctionDecl 0x560468057d78 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:6578:16> line:6576:6 ecs_id_is_valid 'bool (const ecs_world_t *, ecs_id_t)'
| |-ParmVarDecl 0x560468057c28 <line:6577:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468057ca0 <line:6578:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468155c30 <line:6562:4, line:6573:35>
| |-ParagraphComment 0x560468155900 <line:6562:4, line:6566:41>
| | |-TextComment 0x560468155830 <line:6562:4, col:36> Text=" Utility to check if id is valid."
| | |-TextComment 0x560468155850 <line:6563:3, col:71> Text=" A valid id is an id that can be added to an entity. Invalid ids are:"
| | |-TextComment 0x560468155870 <line:6564:3, col:31> Text=" - ids that contain wildcards"
| | |-TextComment 0x560468155890 <line:6565:3, col:38> Text=" - ids that contain invalid entities"
| | `-TextComment 0x5604681558b0 <line:6566:3, col:41> Text=" - ids that are 0 or contain 0 entities"
| |-ParagraphComment 0x560468155970 <line:6568:3, line:6569:16>
| | |-TextComment 0x560468155920 <line:6568:3, col:80> Text=" Note that the same rules apply to removing from an entity, with the exception"
| | `-TextComment 0x560468155940 <line:6569:3, col:16> Text=" of wildcards."
| |-ParagraphComment 0x5604681559c0 <line:6571:3>
| | `-TextComment 0x560468155990 <col:3> Text=" "
| |-ParamCommandComment 0x5604681559e0 <col:4, line:6572:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468155a90 <line:6571:16, line:6572:3>
| | |-TextComment 0x560468155a40 <line:6571:16, col:26> Text=" The world."
| | `-TextComment 0x560468155a60 <line:6572:3> Text=" "
| |-ParamCommandComment 0x560468155ab0 <col:4, line:6573:3> [in] implicitly Param="id" ParamIndex=1
| | `-ParagraphComment 0x560468155b60 <line:6572:13, line:6573:3>
| | |-TextComment 0x560468155b10 <line:6572:13, col:20> Text=" The id."
| | `-TextComment 0x560468155b30 <line:6573:3> Text=" "
| `-BlockCommandComment 0x560468155b80 <col:4, col:35> Name="return"
| `-ParagraphComment 0x560468155be0 <col:11, col:35>
| `-TextComment 0x560468155bb0 <col:11, col:35> Text=" True if the id is valid."
|-FunctionDecl 0x560468057ff8 <line:6589:1, line:6591:16> line:6589:15 ecs_id_get_flags 'ecs_flags32_t (const ecs_world_t *, ecs_id_t)'
| |-ParmVarDecl 0x560468057e68 <line:6590:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468057ee0 <line:6591:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468155fe0 <line:6580:4, line:6586:70>
| |-ParagraphComment 0x560468155d20 <line:6580:4, line:6582:35>
| | |-TextComment 0x560468155ca0 <line:6580:4, col:33> Text=" Get flags associated with id."
| | |-TextComment 0x560468155cc0 <line:6581:3, col:72> Text=" This operation returns the internal flags (see api_flags.h) that are "
| | `-TextComment 0x560468155ce0 <line:6582:3, col:35> Text=" associated with the provided id."
| |-ParagraphComment 0x560468155d70 <line:6584:3>
| | `-TextComment 0x560468155d40 <col:3> Text=" "
| |-ParamCommandComment 0x560468155d90 <col:4, line:6585:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468155e40 <line:6584:16, line:6585:3>
| | |-TextComment 0x560468155df0 <line:6584:16, col:26> Text=" The world."
| | `-TextComment 0x560468155e10 <line:6585:3> Text=" "
| |-ParamCommandComment 0x560468155e60 <col:4, line:6586:3> [in] implicitly Param="id" ParamIndex=1
| | `-ParagraphComment 0x560468155f10 <line:6585:13, line:6586:3>
| | |-TextComment 0x560468155ec0 <line:6585:13, col:20> Text=" The id."
| | `-TextComment 0x560468155ee0 <line:6586:3> Text=" "
| `-BlockCommandComment 0x560468155f30 <col:4, col:70> Name="return"
| `-ParagraphComment 0x560468155f90 <col:11, col:70>
| `-TextComment 0x560468155f60 <col:11, col:70> Text=" Flags associated with the id, or 0 if the id is not in use."
|-FunctionDecl 0x5604680581e0 <line:6600:1, line:6601:22> line:6600:13 ecs_id_flag_str 'const char *(ecs_id_t)'
| |-ParmVarDecl 0x5604680580e8 <line:6601:5, col:14> col:14 id_flags 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468156280 <line:6593:4, line:6597:66>
| |-ParagraphComment 0x5604681560a0 <line:6593:4, line:6594:49>
| | |-TextComment 0x560468156050 <line:6593:4, col:30> Text=" Convert id flag to string."
| | `-TextComment 0x560468156070 <line:6594:3, col:49> Text=" This operation converts a id flag to a string."
| |-ParagraphComment 0x5604681560f0 <line:6596:3>
| | `-TextComment 0x5604681560c0 <col:3> Text=" "
| |-ParamCommandComment 0x560468156110 <col:4, line:6597:3> [in] implicitly Param="id_flags" ParamIndex=0
| | `-ParagraphComment 0x5604681561c0 <line:6596:19, line:6597:3>
| | |-TextComment 0x560468156170 <line:6596:19, col:31> Text=" The id flag."
| | `-TextComment 0x560468156190 <line:6597:3> Text=" "
| `-BlockCommandComment 0x5604681561e0 <col:4, col:66> Name="return"
| `-ParagraphComment 0x560468156240 <col:11, col:66>
| `-TextComment 0x560468156210 <col:11, col:66> Text=" The id flag string, or NULL if no valid id is provided."
|-FunctionDecl 0x560468058420 <line:6611:1, line:6613:16> line:6611:7 ecs_id_str 'char *(const ecs_world_t *, ecs_id_t)'
| |-ParmVarDecl 0x5604680582c8 <line:6612:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468058340 <line:6613:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x560468156640 <line:6603:4, line:6608:40>
| |-ParagraphComment 0x560468156380 <line:6603:4, line:6604:80>
| | |-TextComment 0x560468156330 <line:6603:4, col:25> Text=" Convert id to string."
| | `-TextComment 0x560468156350 <line:6604:3, col:80> Text=" This operation interprets the structure of an id and converts it to a string."
| |-ParagraphComment 0x5604681563d0 <line:6606:3>
| | `-TextComment 0x5604681563a0 <col:3> Text=" "
| |-ParamCommandComment 0x5604681563f0 <col:4, line:6607:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681564a0 <line:6606:16, line:6607:3>
| | |-TextComment 0x560468156450 <line:6606:16, col:26> Text=" The world."
| | `-TextComment 0x560468156470 <line:6607:3> Text=" "
| |-ParamCommandComment 0x5604681564c0 <col:4, line:6608:3> [in] implicitly Param="id" ParamIndex=1
| | `-ParagraphComment 0x560468156570 <line:6607:13, line:6608:3>
| | |-TextComment 0x560468156520 <line:6607:13, col:43> Text=" The id to convert to a string."
| | `-TextComment 0x560468156540 <line:6608:3> Text=" "
| `-BlockCommandComment 0x560468156590 <col:4, col:40> Name="return"
| `-ParagraphComment 0x5604681565f0 <col:11, col:40>
| `-TextComment 0x5604681565c0 <col:11, col:40> Text=" The id converted to a string."
|-FunctionDecl 0x560468058718 <line:6623:1, line:6626:22> line:6623:6 ecs_id_str_buf 'void (const ecs_world_t *, ecs_id_t, ecs_strbuf_t *)'
| |-ParmVarDecl 0x560468058508 <line:6624:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468058580 <line:6625:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| |-ParmVarDecl 0x5604680585f8 <line:6626:5, col:19> col:19 buf 'ecs_strbuf_t *'
| `-FullComment 0x5604681569f0 <line:6615:4, line:6620:37>
| |-ParagraphComment 0x560468156700 <line:6615:4, line:6616:56>
| | |-TextComment 0x5604681566b0 <line:6615:4, col:30> Text=" Write id string to buffer."
| | `-TextComment 0x5604681566d0 <line:6616:3, col:56> Text=" Same as ecs_id_str but writes result to ecs_strbuf_t."
| |-ParagraphComment 0x560468156750 <line:6618:3>
| | `-TextComment 0x560468156720 <col:3> Text=" "
| |-ParamCommandComment 0x560468156770 <col:4, line:6619:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468156820 <line:6618:16, line:6619:3>
| | |-TextComment 0x5604681567d0 <line:6618:16, col:26> Text=" The world."
| | `-TextComment 0x5604681567f0 <line:6619:3> Text=" "
| |-ParamCommandComment 0x560468156840 <col:4, line:6620:3> [in] implicitly Param="id" ParamIndex=1
| | `-ParagraphComment 0x5604681568f0 <line:6619:13, line:6620:3>
| | |-TextComment 0x5604681568a0 <line:6619:13, col:43> Text=" The id to convert to a string."
| | `-TextComment 0x5604681568c0 <line:6620:3> Text=" "
| `-ParamCommandComment 0x560468156910 <col:4, col:37> [in] implicitly Param="buf" ParamIndex=2
| `-ParagraphComment 0x5604681569a0 <col:14, col:37>
| `-TextComment 0x560468156970 <col:14, col:37> Text=" The buffer to write to."
|-FunctionDecl 0x560468058a08 <line:6646:1, line:6648:21> line:6646:12 ecs_term_iter 'ecs_iter_t (const ecs_world_t *, ecs_term_t *)'
| |-ParmVarDecl 0x560468058868 <line:6647:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680588f0 <line:6648:5, col:17> col:17 term 'ecs_term_t *'
| `-FullComment 0x560468156dc0 <line:6636:4, line:6643:24>
| |-ParagraphComment 0x560468156b00 <line:6636:4, line:6639:17>
| | |-TextComment 0x560468156a60 <line:6636:4, col:41> Text=" Iterator for a single (component) id."
| | |-TextComment 0x560468156a80 <line:6637:3, col:80> Text=" A term iterator returns all entities (tables) that match a single (component)"
| | |-TextComment 0x560468156aa0 <line:6638:3, col:76> Text=" id. The search for the matching set of entities (tables) is performed in "
| | `-TextComment 0x560468156ac0 <line:6639:3, col:17> Text=" constant time."
| |-ParagraphComment 0x560468156b50 <line:6641:3>
| | `-TextComment 0x560468156b20 <col:3> Text=" "
| |-ParamCommandComment 0x560468156b70 <col:4, line:6642:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468156c20 <line:6641:16, line:6642:3>
| | |-TextComment 0x560468156bd0 <line:6641:16, col:26> Text=" The world."
| | `-TextComment 0x560468156bf0 <line:6642:3> Text=" "
| |-ParamCommandComment 0x560468156c40 <col:4, line:6643:3> [in] implicitly Param="term" ParamIndex=1
| | `-ParagraphComment 0x560468156cf0 <line:6642:15, line:6643:3>
| | |-TextComment 0x560468156ca0 <line:6642:15, col:24> Text=" The term."
| | `-TextComment 0x560468156cc0 <line:6643:3> Text=" "
| `-BlockCommandComment 0x560468156d10 <col:4, col:24> Name="return"
| `-ParagraphComment 0x560468156d70 <col:11, col:24>
| `-TextComment 0x560468156d40 <col:11, col:24> Text=" The iterator."
|-FunctionDecl 0x560468058ce8 <line:6659:1, line:6661:21> line:6659:12 ecs_term_chain_iter 'ecs_iter_t (const ecs_iter_t *, ecs_term_t *)'
| |-ParmVarDecl 0x560468058b58 <line:6660:5, col:23> col:23 it 'const ecs_iter_t *'
| |-ParmVarDecl 0x560468058bd0 <line:6661:5, col:17> col:17 term 'ecs_term_t *'
| `-FullComment 0x560468157170 <line:6650:4, line:6656:33>
| |-ParagraphComment 0x560468156eb0 <line:6650:4, line:6652:58>
| | |-TextComment 0x560468156e30 <line:6650:4, col:35> Text=" Return a chained term iterator."
| | |-TextComment 0x560468156e50 <line:6651:3, col:80> Text=" A chained iterator applies a filter to the results of the input iterator. The"
| | `-TextComment 0x560468156e70 <line:6652:3, col:58> Text=" resulting iterator must be iterated with ecs_term_next."
| |-ParagraphComment 0x560468156f00 <line:6654:3>
| | `-TextComment 0x560468156ed0 <col:3> Text=" "
| |-ParamCommandComment 0x560468156f20 <col:4, line:6655:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468156fd0 <line:6654:13, line:6655:3>
| | |-TextComment 0x560468156f80 <line:6654:13, col:31> Text=" The input iterator"
| | `-TextComment 0x560468156fa0 <line:6655:3> Text=" "
| |-ParamCommandComment 0x560468156ff0 <col:4, line:6656:3> [in] implicitly Param="term" ParamIndex=1
| | `-ParagraphComment 0x5604681570a0 <line:6655:15, line:6656:3>
| | |-TextComment 0x560468157050 <line:6655:15, col:56> Text=" The term filter to apply to the iterator."
| | `-TextComment 0x560468157070 <line:6656:3> Text=" "
| `-BlockCommandComment 0x5604681570c0 <col:4, col:33> Name="return"
| `-ParagraphComment 0x560468157120 <col:11, col:33>
| `-TextComment 0x5604681570f0 <col:11, col:33> Text=" The chained iterator. "
|-FunctionDecl 0x560468058e68 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:6674:19> line:6673:6 ecs_term_next 'bool (ecs_iter_t *)'
| |-ParmVarDecl 0x560468058dd8 <line:6674:5, col:17> col:17 it 'ecs_iter_t *'
| `-FullComment 0x560468157490 <line:6663:4, line:6670:57>
| |-ParagraphComment 0x5604681572b0 <line:6663:4, line:6667:12>
| | |-TextComment 0x5604681571e0 <line:6663:4, col:29> Text=" Progress a term iterator."
| | |-TextComment 0x560468157200 <line:6664:3, col:70> Text=" This operation progresses the term iterator to the next table. The "
| | |-TextComment 0x560468157220 <line:6665:3, col:76> Text=" iterator must have been initialized with `ecs_term_iter`. This operation "
| | |-TextComment 0x560468157240 <line:6666:3, col:73> Text=" must be invoked at least once before interpreting the contents of the "
| | `-TextComment 0x560468157260 <line:6667:3, col:12> Text=" iterator."
| |-ParagraphComment 0x560468157300 <line:6669:3>
| | `-TextComment 0x5604681572d0 <col:3> Text=" "
| |-ParamCommandComment 0x560468157320 <col:4, line:6670:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x5604681573d0 <line:6669:13, line:6670:3>
| | |-TextComment 0x560468157380 <line:6669:13, col:26> Text=" The iterator."
| | `-TextComment 0x5604681573a0 <line:6670:3> Text=" "
| `-BlockCommandComment 0x5604681573f0 <col:4, col:57> Name="returns"
| `-ParagraphComment 0x560468157450 <col:12, col:57>
| `-TextComment 0x560468157420 <col:12, col:57> Text=" True if more data is available, false if not."
|-FunctionDecl 0x5604680590d8 <line:6685:1, line:6687:24> line:6685:12 ecs_children 'ecs_iter_t (const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x560468058f48 <line:6686:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468058fc0 <line:6687:5, col:18> col:18 parent 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468157840 <line:6676:4, line:6682:24>
| |-ParagraphComment 0x560468157580 <line:6676:4, line:6678:45>
| | |-TextComment 0x560468157500 <line:6676:4, col:37> Text=" Iterator for a parent's children."
| | |-TextComment 0x560468157520 <line:6677:3, col:74> Text=" This operation is equivalent to a term iterator for (ChildOf, parent). "
| | `-TextComment 0x560468157540 <line:6678:3, col:45> Text=" Iterate the result with ecs_children_next."
| |-ParagraphComment 0x5604681575d0 <line:6680:3>
| | `-TextComment 0x5604681575a0 <col:3> Text=" "
| |-ParamCommandComment 0x5604681575f0 <col:4, line:6681:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681576a0 <line:6680:16, line:6681:3>
| | |-TextComment 0x560468157650 <line:6680:16, col:26> Text=" The world."
| | `-TextComment 0x560468157670 <line:6681:3> Text=" "
| |-ParamCommandComment 0x5604681576c0 <col:4, line:6682:3> [in] implicitly Param="parent" ParamIndex=1
| | `-ParagraphComment 0x560468157770 <line:6681:17, line:6682:3>
| | |-TextComment 0x560468157720 <line:6681:17, col:62> Text=" The parent for which to iterate the children."
| | `-TextComment 0x560468157740 <line:6682:3> Text=" "
| `-BlockCommandComment 0x560468157790 <col:4, col:24> Name="return"
| `-ParagraphComment 0x5604681577f0 <col:11, col:24>
| `-TextComment 0x5604681577c0 <col:11, col:24> Text=" The iterator."
|-FunctionDecl 0x560468059258 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:6697:19> line:6696:6 ecs_children_next 'bool (ecs_iter_t *)'
| |-ParmVarDecl 0x5604680591c8 <line:6697:5, col:17> col:17 it 'ecs_iter_t *'
| `-FullComment 0x560468157ae0 <line:6689:4, line:6693:57>
| |-ParagraphComment 0x560468157900 <line:6689:4, line:6690:31>
| | |-TextComment 0x5604681578b0 <line:6689:4, col:33> Text=" Progress a children iterator."
| | `-TextComment 0x5604681578d0 <line:6690:3, col:31> Text=" Equivalent to ecs_term_next."
| |-ParagraphComment 0x560468157950 <line:6692:3>
| | `-TextComment 0x560468157920 <col:3> Text=" "
| |-ParamCommandComment 0x560468157970 <col:4, line:6693:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468157a20 <line:6692:13, line:6693:3>
| | |-TextComment 0x5604681579d0 <line:6692:13, col:26> Text=" The iterator."
| | `-TextComment 0x5604681579f0 <line:6693:3> Text=" "
| `-BlockCommandComment 0x560468157a40 <col:4, col:57> Name="returns"
| `-ParagraphComment 0x560468157aa0 <col:12, col:57>
| `-TextComment 0x560468157a70 <col:12, col:57> Text=" True if more data is available, false if not."
|-FunctionDecl 0x560468059488 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:6706:28> line:6705:6 ecs_term_id_is_set 'bool (const ecs_term_id_t *)'
| |-ParmVarDecl 0x560468059398 <line:6706:5, col:26> col:26 id 'const ecs_term_id_t *'
| `-FullComment 0x560468157d60 <line:6699:4, line:6702:45>
| |-ParagraphComment 0x560468157b80 <line:6699:4, col:32>
| | `-TextComment 0x560468157b50 <col:4, col:32> Text=" Test whether term id is set."
| |-ParagraphComment 0x560468157bd0 <line:6701:3>
| | `-TextComment 0x560468157ba0 <col:3> Text=" "
| |-ParamCommandComment 0x560468157bf0 <col:4, line:6702:3> [in] implicitly Param="id" ParamIndex=0
| | `-ParagraphComment 0x560468157ca0 <line:6701:13, line:6702:3>
| | |-TextComment 0x560468157c50 <line:6701:13, col:25> Text=" The term id."
| | `-TextComment 0x560468157c70 <line:6702:3> Text=" "
| `-BlockCommandComment 0x560468157cc0 <col:4, col:45> Name="return"
| `-ParagraphComment 0x560468157d20 <col:11, col:45>
| `-TextComment 0x560468157cf0 <col:11, col:45> Text=" True when set, false when not set."
|-FunctionDecl 0x5604680596b8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:6721:27> line:6720:6 ecs_term_is_initialized 'bool (const ecs_term_t *)'
| |-ParmVarDecl 0x5604680595c8 <line:6721:5, col:23> col:23 term 'const ecs_term_t *'
| `-FullComment 0x5604681580e0 <line:6708:4, line:6717:45>
| |-ParagraphComment 0x560468157e50 <line:6708:4, line:6710:33>
| | |-TextComment 0x560468157dd0 <line:6708:4, col:31> Text=" Test whether a term is set."
| | |-TextComment 0x560468157df0 <line:6709:3, col:78> Text=" This operation can be used to test whether a term has been initialized with"
| | `-TextComment 0x560468157e10 <line:6710:3, col:33> Text=" values or whether it is empty."
| |-ParagraphComment 0x560468157ef0 <line:6712:3, line:6714:67>
| | |-TextComment 0x560468157e70 <line:6712:3, col:80> Text=" An application generally does not need to invoke this operation. It is useful"
| | |-TextComment 0x560468157e90 <line:6713:3, col:80> Text=" when initializing a 0-initialized array of terms (like in ecs_term_desc_t) as"
| | `-TextComment 0x560468157eb0 <line:6714:3, col:67> Text=" this operation can be used to find the last initialized element."
| |-ParagraphComment 0x560468157f40 <line:6716:3>
| | `-TextComment 0x560468157f10 <col:3> Text=" "
| |-ParamCommandComment 0x560468157f60 <col:4, line:6717:3> [in] implicitly Param="term" ParamIndex=0
| | `-ParagraphComment 0x560468158010 <line:6716:15, line:6717:3>
| | |-TextComment 0x560468157fc0 <line:6716:15, col:24> Text=" The term."
| | `-TextComment 0x560468157fe0 <line:6717:3> Text=" "
| `-BlockCommandComment 0x560468158030 <col:4, col:45> Name="return"
| `-ParagraphComment 0x560468158090 <col:11, col:45>
| `-TextComment 0x560468158060 <col:11, col:45> Text=" True when set, false when not set."
|-FunctionDecl 0x560468059800 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:6725:27> line:6724:6 ecs_term_match_this 'bool (const ecs_term_t *)'
| `-ParmVarDecl 0x560468059770 <line:6725:5, col:23> col:23 term 'const ecs_term_t *'
|-FunctionDecl 0x560468059990 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:6729:27> line:6728:6 ecs_term_match_0 'bool (const ecs_term_t *)'
| `-ParmVarDecl 0x560468059900 <line:6729:5, col:23> col:23 term 'const ecs_term_t *'
|-FunctionDecl 0x560468059c10 <line:6750:1, line:6752:21> line:6750:5 ecs_term_finalize 'int (const ecs_world_t *, ecs_term_t *)'
| |-ParmVarDecl 0x560468059a78 <line:6751:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468059af0 <line:6752:5, col:17> col:17 term 'ecs_term_t *'
| `-FullComment 0x56046812e4f0 <line:6731:4, line:6747:57>
| |-ParagraphComment 0x560468158240 <line:6731:4, line:6736:52>
| | |-TextComment 0x560468158150 <line:6731:4, col:18> Text=" Finalize term."
| | |-TextComment 0x560468158170 <line:6732:3, col:72> Text=" Ensure that all fields of a term are consistent and filled out. This "
| | |-TextComment 0x560468158190 <line:6733:3, col:79> Text=" operation should be invoked before using and after assigning members to, or "
| | |-TextComment 0x5604681581b0 <line:6734:3, col:78> Text=" parsing a term. When a term contains unresolved identifiers, this operation"
| | |-TextComment 0x5604681581d0 <line:6735:3, col:80> Text=" will resolve and assign the identifiers. If the term contains any identifiers"
| | `-TextComment 0x5604681581f0 <line:6736:3, col:52> Text=" that cannot be resolved, the operation will fail."
| |-ParagraphComment 0x56046812e1b0 <line:6738:3, line:6740:25>
| | |-TextComment 0x560468158260 <line:6738:3, col:78> Text=" An application generally does not need to invoke this operation as the APIs"
| | |-TextComment 0x560468158280 <line:6739:3, col:77> Text=" that use terms (such as filters, queries and triggers) will finalize terms"
| | `-TextComment 0x5604681582a0 <line:6740:3, col:25> Text=" when they are created."
| |-ParagraphComment 0x56046812e220 <line:6742:3, line:6743:30>
| | |-TextComment 0x56046812e1d0 <line:6742:3, col:76> Text=" The name and expr parameters are optional, and only used for giving more "
| | `-TextComment 0x56046812e1f0 <line:6743:3, col:30> Text=" descriptive error messages."
| |-ParagraphComment 0x56046812e270 <line:6745:3>
| | `-TextComment 0x56046812e240 <col:3> Text=" "
| |-ParamCommandComment 0x56046812e290 <col:4, line:6746:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046812e340 <line:6745:16, line:6746:3>
| | |-TextComment 0x56046812e2f0 <line:6745:16, col:26> Text=" The world."
| | `-TextComment 0x56046812e310 <line:6746:3> Text=" "
| |-ParamCommandComment 0x56046812e360 <col:4, line:6747:3> [in] implicitly Param="term" ParamIndex=1
| | `-ParagraphComment 0x56046812e410 <line:6746:15, line:6747:3>
| | |-TextComment 0x56046812e3c0 <line:6746:15, col:36> Text=" The term to finalize."
| | `-TextComment 0x56046812e3e0 <line:6747:3> Text=" "
| `-BlockCommandComment 0x56046812e430 <col:4, col:57> Name="return"
| `-ParagraphComment 0x56046812e490 <col:11, col:57>
| `-TextComment 0x56046812e460 <col:11, col:57> Text=" Zero if success, nonzero if an error occurred."
|-FunctionDecl 0x560468059de8 <line:6763:1, line:6764:26> line:6763:12 ecs_term_copy 'ecs_term_t (const ecs_term_t *)'
| |-ParmVarDecl 0x560468059cf8 <line:6764:5, col:23> col:23 src 'const ecs_term_t *'
| `-FullComment 0x56046812e7e0 <line:6754:4, line:6760:32>
| |-ParagraphComment 0x56046812e600 <line:6754:4, line:6757:41>
| | |-TextComment 0x56046812e560 <line:6754:4, col:45> Text=" Copy resources of a term to another term."
| | |-TextComment 0x56046812e580 <line:6755:3, col:78> Text=" This operation copies one term to another term. If the source term contains"
| | |-TextComment 0x56046812e5a0 <line:6756:3, col:77> Text=" allocated resources (such as identifiers), they will be duplicated so that"
| | `-TextComment 0x56046812e5c0 <line:6757:3, col:41> Text=" no memory is shared between the terms."
| |-ParagraphComment 0x56046812e650 <line:6759:3>
| | `-TextComment 0x56046812e620 <col:3> Text=" "
| |-ParamCommandComment 0x56046812e670 <col:4, line:6760:3> [in] implicitly Param="src" ParamIndex=0
| | `-ParagraphComment 0x56046812e720 <line:6759:14, line:6760:3>
| | |-TextComment 0x56046812e6d0 <line:6759:14, col:36> Text=" The term to copy from."
| | `-TextComment 0x56046812e6f0 <line:6760:3> Text=" "
| `-BlockCommandComment 0x56046812e740 <col:4, col:32> Name="return"
| `-ParagraphComment 0x56046812e7a0 <col:11, col:32>
| `-TextComment 0x56046812e770 <col:11, col:32> Text=" The destination term."
|-FunctionDecl 0x560468059fb8 <line:6777:1, line:6778:20> line:6777:12 ecs_term_move 'ecs_term_t (ecs_term_t *)'
| |-ParmVarDecl 0x560468059ec8 <line:6778:5, col:17> col:17 src 'ecs_term_t *'
| `-FullComment 0x56046812eb30 <line:6766:4, line:6774:32>
| |-ParagraphComment 0x56046812e8d0 <line:6766:4, line:6768:63>
| | |-TextComment 0x56046812e850 <line:6766:4, col:45> Text=" Move resources of a term to another term."
| | |-TextComment 0x56046812e870 <line:6767:3, col:78> Text=" Same as copy, but moves resources from src, if src->move is set to true. If"
| | `-TextComment 0x56046812e890 <line:6768:3, col:63> Text=" src->move is not set to true, this operation will do a copy."
| |-ParagraphComment 0x56046812e940 <line:6770:3, line:6771:58>
| | |-TextComment 0x56046812e8f0 <line:6770:3, col:80> Text=" The conditional move reduces redundant allocations in scenarios where a list "
| | `-TextComment 0x56046812e910 <line:6771:3, col:58> Text=" of terms is partially created with allocated resources."
| |-ParagraphComment 0x56046812e990 <line:6773:3>
| | `-TextComment 0x56046812e960 <col:3> Text=" "
| |-ParamCommandComment 0x56046812e9b0 <col:4, line:6774:3> [in] implicitly Param="src" ParamIndex=0
| | `-ParagraphComment 0x56046812ea60 <line:6773:14, line:6774:3>
| | |-TextComment 0x56046812ea10 <line:6773:14, col:36> Text=" The term to move from."
| | `-TextComment 0x56046812ea30 <line:6774:3> Text=" "
| `-BlockCommandComment 0x56046812ea80 <col:4, col:32> Name="return"
| `-ParagraphComment 0x56046812eae0 <col:11, col:32>
| `-TextComment 0x56046812eab0 <col:11, col:32> Text=" The destination term."
|-FunctionDecl 0x56046805a188 <line:6787:1, line:6788:21> line:6787:6 ecs_term_fini 'void (ecs_term_t *)'
| |-ParmVarDecl 0x56046805a098 <line:6788:5, col:17> col:17 term 'ecs_term_t *'
| `-FullComment 0x56046812ed60 <line:6780:4, line:6784:32>
| |-ParagraphComment 0x56046812ec20 <line:6780:4, line:6782:23>
| | |-TextComment 0x56046812eba0 <line:6780:4, col:27> Text=" Free resources of term."
| | |-TextComment 0x56046812ebc0 <line:6781:3, col:79> Text=" This operation frees all resources (such as identifiers) of a term. The term"
| | `-TextComment 0x56046812ebe0 <line:6782:3, col:23> Text=" itself is not freed."
| |-ParagraphComment 0x56046812ec70 <line:6784:3>
| | `-TextComment 0x56046812ec40 <col:3> Text=" "
| `-ParamCommandComment 0x56046812ec90 <col:4, col:32> [in] implicitly Param="term" ParamIndex=0
| `-ParagraphComment 0x56046812ed20 <col:15, col:32>
| `-TextComment 0x56046812ecf0 <col:15, col:32> Text=" The term to free."
|-FunctionDecl 0x56046805a448 <line:6814:1, line:6816:34> line:6814:16 ecs_filter_init 'ecs_filter_t *(ecs_world_t *, const ecs_filter_desc_t *)'
| |-ParmVarDecl 0x56046805a268 <line:6815:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046805a338 <line:6816:5, col:30> col:30 desc 'const ecs_filter_desc_t *'
| `-FullComment 0x56046812f4b0 <line:6790:4, line:6811:60>
| |-ParagraphComment 0x56046812ee70 <line:6790:4, line:6793:57>
| | |-TextComment 0x56046812edd0 <line:6790:4, col:22> Text=" Initialize filter "
| | |-TextComment 0x56046812edf0 <line:6791:3, col:77> Text=" A filter is a lightweight object that can be used to query for entities in"
| | |-TextComment 0x56046812ee10 <line:6792:3, col:75> Text=" a world. Filters, as opposed to queries, do not cache results. They are "
| | `-TextComment 0x56046812ee30 <line:6793:3, col:57> Text=" therefore slower to iterate, but are faster to create."
| |-ParagraphComment 0x56046812eee0 <line:6795:3, line:6796:66>
| | |-TextComment 0x56046812ee90 <line:6795:3, col:75> Text=" When a filter is copied by value, make sure to use "ecs_filter_move" to "
| | `-TextComment 0x56046812eeb0 <line:6796:3, col:66> Text=" ensure that the terms pointer still points to the inline array:"
| |-ParagraphComment 0x56046812efd0 <line:6798:3, col:46>
| | |-TextComment 0x56046812ef00 <col:3, col:21> Text=" ecs_filter_move("
| | |-TextComment 0x56046812ef20 <col:22, col:25> Text="&dst"
| | |-TextComment 0x56046812ef40 <col:26, col:34> Text="_filter, "
| | |-TextComment 0x56046812ef60 <col:35, col:38> Text="&src"
| | `-TextComment 0x56046812ef80 <col:39, col:46> Text="_filter)"
| |-ParagraphComment 0x56046812f040 <line:6800:3, line:6801:58>
| | |-TextComment 0x56046812eff0 <line:6800:3, col:80> Text=" Alternatively, the ecs_filter_move function can be called with both arguments"
| | `-TextComment 0x56046812f010 <line:6801:3, col:58> Text=" set to the same filter, to ensure the pointer is valid:"
| |-ParagraphComment 0x56046812f130 <line:6803:3, col:28>
| | |-TextComment 0x56046812f060 <col:3, col:21> Text=" ecs_filter_move("
| | |-TextComment 0x56046812f080 <col:22, col:23> Text="&f"
| | |-TextComment 0x56046812f0a0 <col:24, col:25> Text=", "
| | |-TextComment 0x56046812f0c0 <col:26, col:27> Text="&f"
| | `-TextComment 0x56046812f0e0 <col:28> Text=")"
| |-ParagraphComment 0x56046812f1d0 <line:6805:3, line:6807:27>
| | |-TextComment 0x56046812f150 <line:6805:3, col:78> Text=" It is possible to create a filter without allocating any memory, by setting"
| | |-TextComment 0x56046812f170 <line:6806:3, col:75> Text=" the .storage member in ecs_filter_desc_t. See the documentation for the "
| | `-TextComment 0x56046812f190 <line:6807:3, col:27> Text=" member for more details."
| |-ParagraphComment 0x56046812f220 <line:6809:3>
| | `-TextComment 0x56046812f1f0 <col:3> Text=" "
| |-ParamCommandComment 0x56046812f240 <col:4, line:6810:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046812f2f0 <line:6809:16, line:6810:3>
| | |-TextComment 0x56046812f2a0 <line:6809:16, col:26> Text=" The world."
| | `-TextComment 0x56046812f2c0 <line:6810:3> Text=" "
| |-ParamCommandComment 0x56046812f310 <col:4, line:6811:3> [in] implicitly Param="desc" ParamIndex=1
| | `-ParagraphComment 0x56046812f3c0 <line:6810:15, line:6811:3>
| | |-TextComment 0x56046812f370 <line:6810:15, col:51> Text=" Properties for the filter to create."
| | `-TextComment 0x56046812f390 <line:6811:3> Text=" "
| `-BlockCommandComment 0x56046812f3e0 <col:4, col:60> Name="return"
| `-ParagraphComment 0x56046812f440 <col:11, col:60>
| `-TextComment 0x56046812f410 <col:11, col:60> Text=" The filter if successful, NULL if not successful."
|-FunctionDecl 0x56046805a628 <line:6824:1, line:6825:25> line:6824:6 ecs_filter_fini 'void (ecs_filter_t *)'
| |-ParmVarDecl 0x56046805a538 <line:6825:5, col:19> col:19 filter 'ecs_filter_t *'
| `-FullComment 0x56046812f6b0 <line:6818:4, line:6821:44>
| |-ParagraphComment 0x56046812f570 <line:6818:4, line:6819:41>
| | |-TextComment 0x56046812f520 <line:6818:4, col:24> Text=" Deinitialize filter."
| | `-TextComment 0x56046812f540 <line:6819:3, col:41> Text=" Free resources associated with filter."
| |-ParagraphComment 0x56046812f5c0 <line:6821:3>
| | `-TextComment 0x56046812f590 <col:3> Text=" "
| `-ParamCommandComment 0x56046812f5e0 <col:4, col:44> [in] implicitly Param="filter" ParamIndex=0
| `-ParagraphComment 0x56046812f670 <col:17, col:44>
| `-TextComment 0x56046812f640 <col:17, col:44> Text=" The filter to deinitialize."
|-FunctionDecl 0x56046805a910 <line:6841:1, line:6843:25> line:6841:5 ecs_filter_finalize 'int (const ecs_world_t *, ecs_filter_t *)'
| |-ParmVarDecl 0x56046805a708 <line:6842:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x56046805a780 <line:6843:5, col:19> col:19 filter 'ecs_filter_t *'
| `-FullComment 0x56046812faa0 <line:6827:4, line:6838:4>
| |-ParagraphComment 0x56046812f7c0 <line:6827:4, line:6830:70>
| | |-TextComment 0x56046812f720 <line:6827:4, col:20> Text=" Finalize filter."
| | |-TextComment 0x56046812f740 <line:6828:3, col:78> Text=" When manually assigning an array of terms to the filter struct (so not when"
| | |-TextComment 0x56046812f760 <line:6829:3, col:76> Text=" using ecs_filter_init), this operation should be used to ensure that all "
| | `-TextComment 0x56046812f780 <line:6830:3, col:70> Text=" terms are assigned properly and all (derived) fields have been set."
| |-ParagraphComment 0x56046812f860 <line:6832:3, line:6834:29>
| | |-TextComment 0x56046812f7e0 <line:6832:3, col:78> Text=" When ecs_filter_init is used to create the filter, this function should not"
| | |-TextComment 0x56046812f800 <line:6833:3, col:77> Text=" be called. The purpose of this operation is to support creation of filters"
| | `-TextComment 0x56046812f820 <line:6834:3, col:29> Text=" without allocating memory."
| |-ParagraphComment 0x56046812f8b0 <line:6836:3>
| | `-TextComment 0x56046812f880 <col:3> Text=" "
| |-ParamCommandComment 0x56046812f8d0 <col:4, line:6837:3> [in] implicitly Param="filter" ParamIndex=1
| | `-ParagraphComment 0x56046812f980 <line:6836:17, line:6837:3>
| | |-TextComment 0x56046812f930 <line:6836:17, col:40> Text=" The filter to finalize."
| | `-TextComment 0x56046812f950 <line:6837:3> Text=" "
| `-BlockCommandComment 0x56046812f9a0 <col:4, line:6838:4> Name="return"
| `-ParagraphComment 0x56046812fa50 <line:6837:11, line:6838:4>
| |-TextComment 0x56046812f9d0 <line:6837:11, col:67> Text=" Zero if filter is valid, non-zero if it contains errors."
| |-TextComment 0x56046812f9f0 <line:6838:3> Text=" "
| `-TextComment 0x56046812fa10 <col:4> Text="@"
|-FunctionDecl 0x56046805aae8 <line:6857:1, line:6858:31> line:6857:9 ecs_filter_find_this_var 'int32_t (const ecs_filter_t *)'
| |-ParmVarDecl 0x56046805a9f8 <line:6858:5, col:25> col:25 filter 'const ecs_filter_t *'
| `-FullComment 0x56046812fe20 <line:6845:4, line:6854:42>
| |-ParagraphComment 0x56046812fb90 <line:6845:4, line:6847:68>
| | |-TextComment 0x56046812fb10 <line:6845:4, col:33> Text=" Find index for This variable."
| | |-TextComment 0x56046812fb30 <line:6846:3, col:73> Text=" This operation looks up the index of the This variable. This index can"
| | `-TextComment 0x56046812fb50 <line:6847:3, col:68> Text=" be used in operations like ecs_iter_set_var and ecs_iter_get_var."
| |-ParagraphComment 0x56046812fc30 <line:6849:3, line:6851:56>
| | |-TextComment 0x56046812fbb0 <line:6849:3, col:80> Text=" The operation will return -1 if the variable was not found. This happens when"
| | |-TextComment 0x56046812fbd0 <line:6850:3, col:76> Text=" a filter only has terms that are not matched on the This variable, like a"
| | `-TextComment 0x56046812fbf0 <line:6851:3, col:56> Text=" filter that exclusively matches singleton components."
| |-ParagraphComment 0x56046812fc80 <line:6853:3>
| | `-TextComment 0x56046812fc50 <col:3> Text=" "
| |-ParamCommandComment 0x56046812fca0 <col:4, line:6854:3> [in] implicitly Param="filter" ParamIndex=0
| | `-ParagraphComment 0x56046812fd50 <line:6853:17, line:6854:3>
| | |-TextComment 0x56046812fd00 <line:6853:17, col:26> Text=" The rule."
| | `-TextComment 0x56046812fd20 <line:6854:3> Text=" "
| `-BlockCommandComment 0x56046812fd70 <col:4, col:42> Name="return"
| `-ParagraphComment 0x56046812fdd0 <col:11, col:42>
| `-TextComment 0x56046812fda0 <col:11, col:42> Text=" The index of the This variable."
|-FunctionDecl 0x56046805ad60 <line:6865:1, line:6867:27> line:6865:7 ecs_term_str 'char *(const ecs_world_t *, const ecs_term_t *)'
| |-ParmVarDecl 0x56046805abc8 <line:6866:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x56046805ac40 <line:6867:5, col:23> col:23 term 'const ecs_term_t *'
| `-FullComment 0x56046812ff90 <line:6860:4, line:6862:62>
| `-ParagraphComment 0x56046812ff60 <line:6860:4, line:6862:62>
| |-TextComment 0x56046812fe90 <line:6860:4, col:38> Text=" Convert ter, to string expression."
| |-TextComment 0x56046812feb0 <line:6861:3, col:78> Text=" Convert term to a string expression. The resulting expression is equivalent"
| |-TextComment 0x56046812fed0 <line:6862:3, col:47> Text=" to the same term, with the exception of And "
| |-TextComment 0x56046812fef0 <col:48> Text="&"
| `-TextComment 0x56046812ff10 <col:49, col:62> Text=" Or operators."
|-FunctionDecl 0x56046805afe0 <line:6874:1, line:6876:31> line:6874:7 ecs_filter_str 'char *(const ecs_world_t *, const ecs_filter_t *)'
| |-ParmVarDecl 0x56046805ae48 <line:6875:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x56046805aec0 <line:6876:5, col:25> col:25 filter 'const ecs_filter_t *'
| `-FullComment 0x5604681300b0 <line:6869:4, line:6871:36>
| `-ParagraphComment 0x560468130080 <line:6869:4, line:6871:36>
| |-TextComment 0x560468130000 <line:6869:4, col:40> Text=" Convert filter to string expression."
| |-TextComment 0x560468130020 <line:6870:3, col:79> Text=" Convert filter terms to a string expression. The resulting expression can be"
| `-TextComment 0x560468130040 <line:6871:3, col:36> Text=" parsed to create the same filter."
|-FunctionDecl 0x56046805b258 <line:6888:1, line:6890:31> line:6888:12 ecs_filter_iter 'ecs_iter_t (const ecs_world_t *, const ecs_filter_t *)'
| |-ParmVarDecl 0x56046805b0c8 <line:6889:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x56046805b140 <line:6890:5, col:25> col:25 filter 'const ecs_filter_t *'
| `-FullComment 0x56046815c5f0 <line:6878:4, line:6885:61>
| |-ParagraphComment 0x56046815c330 <line:6878:4, line:6881:35>
| | |-TextComment 0x560468130120 <line:6878:4, col:29> Text=" Return a filter iterator."
| | |-TextComment 0x560468130140 <line:6879:3, col:77> Text=" A filter iterator lets an application iterate over entities that match the"
| | |-TextComment 0x560468130160 <line:6880:3, col:74> Text=" specified filter. If NULL is provided for the filter, the iterator will"
| | `-TextComment 0x560468130180 <line:6881:3, col:35> Text=" iterate all tables in the world."
| |-ParagraphComment 0x56046815c380 <line:6883:3>
| | `-TextComment 0x56046815c350 <col:3> Text=" "
| |-ParamCommandComment 0x56046815c3a0 <col:4, line:6884:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046815c450 <line:6883:16, line:6884:3>
| | |-TextComment 0x56046815c400 <line:6883:16, col:26> Text=" The world."
| | `-TextComment 0x56046815c420 <line:6884:3> Text=" "
| |-ParamCommandComment 0x56046815c470 <col:4, line:6885:3> [in] implicitly Param="filter" ParamIndex=1
| | `-ParagraphComment 0x56046815c520 <line:6884:17, line:6885:3>
| | |-TextComment 0x56046815c4d0 <line:6884:17, col:28> Text=" The filter."
| | `-TextComment 0x56046815c4f0 <line:6885:3> Text=" "
| `-BlockCommandComment 0x56046815c540 <col:4, col:61> Name="return"
| `-ParagraphComment 0x56046815c5a0 <col:11, col:61>
| `-TextComment 0x56046815c570 <col:11, col:61> Text=" An iterator that can be used with ecs_filter_next."
|-FunctionDecl 0x56046805b4d8 <line:6901:1, line:6903:31> line:6901:12 ecs_filter_chain_iter 'ecs_iter_t (const ecs_iter_t *, const ecs_filter_t *)'
| |-ParmVarDecl 0x56046805b348 <line:6902:5, col:23> col:23 it 'const ecs_iter_t *'
| |-ParmVarDecl 0x56046805b3c0 <line:6903:5, col:25> col:25 filter 'const ecs_filter_t *'
| `-FullComment 0x56046815c9a0 <line:6892:4, line:6898:33>
| |-ParagraphComment 0x56046815c6e0 <line:6892:4, line:6894:60>
| | |-TextComment 0x56046815c660 <line:6892:4, col:37> Text=" Return a chained filter iterator."
| | |-TextComment 0x56046815c680 <line:6893:3, col:80> Text=" A chained iterator applies a filter to the results of the input iterator. The"
| | `-TextComment 0x56046815c6a0 <line:6894:3, col:60> Text=" resulting iterator must be iterated with ecs_filter_next."
| |-ParagraphComment 0x56046815c730 <line:6896:3>
| | `-TextComment 0x56046815c700 <col:3> Text=" "
| |-ParamCommandComment 0x56046815c750 <col:4, line:6897:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x56046815c800 <line:6896:13, line:6897:3>
| | |-TextComment 0x56046815c7b0 <line:6896:13, col:31> Text=" The input iterator"
| | `-TextComment 0x56046815c7d0 <line:6897:3> Text=" "
| |-ParamCommandComment 0x56046815c820 <col:4, line:6898:3> [in] implicitly Param="filter" ParamIndex=1
| | `-ParagraphComment 0x56046815c8d0 <line:6897:17, line:6898:3>
| | |-TextComment 0x56046815c880 <line:6897:17, col:53> Text=" The filter to apply to the iterator."
| | `-TextComment 0x56046815c8a0 <line:6898:3> Text=" "
| `-BlockCommandComment 0x56046815c8f0 <col:4, col:33> Name="return"
| `-ParagraphComment 0x56046815c950 <col:11, col:33>
| `-TextComment 0x56046815c920 <col:11, col:33> Text=" The chained iterator. "
|-FunctionDecl 0x56046805b758 <line:6925:1, line:6927:31> line:6925:9 ecs_filter_pivot_term 'int32_t (const ecs_world_t *, const ecs_filter_t *)'
| |-ParmVarDecl 0x56046805b5c8 <line:6926:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x56046805b640 <line:6927:5, col:25> col:25 filter 'const ecs_filter_t *'
| `-FullComment 0x56046815cf10 <line:6905:4, line:6922:59>
| |-ParagraphComment 0x56046815ca90 <line:6905:4, line:6907:46>
| | |-TextComment 0x56046815ca10 <line:6905:4, col:30> Text=" Get pivot term for filter."
| | |-TextComment 0x56046815ca30 <line:6906:3, col:77> Text=" The pivot term is the term that matches the smallest set of tables, and is"
| | `-TextComment 0x56046815ca50 <line:6907:3, col:46> Text=" a good default starting point for a search."
| |-ParagraphComment 0x56046815cb30 <line:6909:3, line:6911:34>
| | |-TextComment 0x56046815cab0 <line:6909:3, col:77> Text=" The following conditions must be met for a term to be considered as pivot:"
| | |-TextComment 0x56046815cad0 <line:6910:3, col:32> Text=" - It must have a This subject"
| | `-TextComment 0x56046815caf0 <line:6911:3, col:34> Text=" - It must have the And operator"
| |-ParagraphComment 0x56046815cba0 <line:6913:3, line:6914:13>
| | |-TextComment 0x56046815cb50 <line:6913:3, col:77> Text=" When a filter does not have any terms that match those conditions, it will"
| | `-TextComment 0x56046815cb70 <line:6914:3, col:13> Text=" return -1."
| |-ParagraphComment 0x56046815cc40 <line:6916:3, line:6918:43>
| | |-TextComment 0x56046815cbc0 <line:6916:3, col:78> Text=" If one or more terms in the filter have no matching tables the filter won't"
| | |-TextComment 0x56046815cbe0 <line:6917:3, col:77> Text=" yield any results. In this case the operation will return -2 which gives a"
| | `-TextComment 0x56046815cc00 <line:6918:3, col:43> Text=" search function the option to early out."
| |-ParagraphComment 0x56046815cc90 <line:6920:3>
| | `-TextComment 0x56046815cc60 <col:3> Text=" "
| |-ParamCommandComment 0x56046815ccb0 <col:4, line:6921:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046815cd60 <line:6920:16, line:6921:3>
| | |-TextComment 0x56046815cd10 <line:6920:16, col:26> Text=" The world."
| | `-TextComment 0x56046815cd30 <line:6921:3> Text=" "
| |-ParamCommandComment 0x56046815cd80 <col:4, line:6922:3> [in] implicitly Param="filter" ParamIndex=1
| | `-ParagraphComment 0x56046815ce30 <line:6921:17, line:6922:3>
| | |-TextComment 0x56046815cde0 <line:6921:17, col:28> Text=" The filter."
| | `-TextComment 0x56046815ce00 <line:6922:3> Text=" "
| `-BlockCommandComment 0x56046815ce50 <col:4, col:59> Name="return"
| `-ParagraphComment 0x56046815ceb0 <col:11, col:59>
| `-TextComment 0x56046815ce80 <col:11, col:59> Text=" Index of the pivot term (use with filter->terms)"
|-FunctionDecl 0x56046805b920 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:6940:19> line:6939:6 ecs_filter_next 'bool (ecs_iter_t *)'
| |-ParmVarDecl 0x56046805b848 <line:6940:5, col:17> col:17 it 'ecs_iter_t *'
| `-FullComment 0x56046815d230 <line:6929:4, line:6936:56>
| |-ParagraphComment 0x56046815d050 <line:6929:4, line:6933:12>
| | |-TextComment 0x56046815cf80 <line:6929:4, col:37> Text=" Iterate tables matched by filter."
| | |-TextComment 0x56046815cfa0 <line:6930:3, col:72> Text=" This operation progresses the filter iterator to the next table. The "
| | |-TextComment 0x56046815cfc0 <line:6931:3, col:78> Text=" iterator must have been initialized with `ecs_filter_iter`. This operation "
| | |-TextComment 0x56046815cfe0 <line:6932:3, col:73> Text=" must be invoked at least once before interpreting the contents of the "
| | `-TextComment 0x56046815d000 <line:6933:3, col:12> Text=" iterator."
| |-ParagraphComment 0x56046815d0a0 <line:6935:3>
| | `-TextComment 0x56046815d070 <col:3> Text=" "
| |-ParamCommandComment 0x56046815d0c0 <col:4, line:6936:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x56046815d170 <line:6935:13, line:6936:3>
| | |-TextComment 0x56046815d120 <line:6935:13, col:25> Text=" The iterator"
| | `-TextComment 0x56046815d140 <line:6936:3> Text=" "
| `-BlockCommandComment 0x56046815d190 <col:4, col:56> Name="return"
| `-ParagraphComment 0x56046815d1f0 <col:11, col:56>
| `-TextComment 0x56046815d1c0 <col:11, col:56> Text=" True if more data is available, false if not."
|-FunctionDecl 0x56046805ba98 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:6947:19> line:6946:6 ecs_filter_next_instanced 'bool (ecs_iter_t *)'
| |-ParmVarDecl 0x56046805ba08 <line:6947:5, col:17> col:17 it 'ecs_iter_t *'
| `-FullComment 0x56046815d320 <line:6942:4, line:6943:47>
| `-ParagraphComment 0x56046815d2f0 <line:6942:4, line:6943:47>
| |-TextComment 0x56046815d2a0 <line:6942:4, col:50> Text=" Same as ecs_filter_next, but always instanced."
| `-TextComment 0x56046815d2c0 <line:6943:3, col:47> Text=" See instanced property of ecs_filter_desc_t."
|-FunctionDecl 0x56046805bd08 <line:6951:1, line:6953:22> line:6951:6 ecs_filter_move 'void (ecs_filter_t *, ecs_filter_t *)'
| |-ParmVarDecl 0x56046805bb78 <line:6952:5, col:19> col:19 dst 'ecs_filter_t *'
| |-ParmVarDecl 0x56046805bbf0 <line:6953:5, col:19> col:19 src 'ecs_filter_t *'
| `-FullComment 0x56046815d3f0 <line:6949:4, col:45>
| `-ParagraphComment 0x56046815d3c0 <col:4, col:45>
| `-TextComment 0x56046815d390 <col:4, col:45> Text=" Move resources of one filter to another. "
|-FunctionDecl 0x56046805bf88 <line:6957:1, line:6959:28> line:6957:6 ecs_filter_copy 'void (ecs_filter_t *, const ecs_filter_t *)'
| |-ParmVarDecl 0x56046805bdf8 <line:6958:5, col:19> col:19 dst 'ecs_filter_t *'
| |-ParmVarDecl 0x56046805be70 <line:6959:5, col:25> col:25 src 'const ecs_filter_t *'
| `-FullComment 0x56046815d4c0 <line:6955:4, col:45>
| `-ParagraphComment 0x56046815d490 <col:4, col:45>
| `-TextComment 0x56046815d460 <col:4, col:45> Text=" Copy resources of one filter to another. "
|-FunctionDecl 0x56046805c2d8 <line:7004:1, line:7006:33> line:7004:14 ecs_query_init 'ecs_query_t *(ecs_world_t *, const ecs_query_desc_t *)'
| |-ParmVarDecl 0x56046805c0d8 <line:7005:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046805c1c8 <line:7006:5, col:29> col:29 desc 'const ecs_query_desc_t *'
| `-FullComment 0x56046815dc90 <line:6969:4, line:7001:25>
| |-ParagraphComment 0x56046815d5d0 <line:6969:4, line:6972:24>
| | |-TextComment 0x56046815d530 <line:6969:4, col:19> Text=" Create a query."
| | |-TextComment 0x56046815d550 <line:6970:3, col:76> Text=" This operation creates a query. Queries are used to iterate over entities"
| | |-TextComment 0x56046815d570 <line:6971:3, col:80> Text=" that match a filter and are the fastest way to find and iterate over entities"
| | `-TextComment 0x56046815d590 <line:6972:3, col:24> Text=" and their components."
| |-ParagraphComment 0x56046815d6c0 <line:6974:3, line:6978:56>
| | |-TextComment 0x56046815d5f0 <line:6974:3, col:79> Text=" Queries should be created once, and reused multiple times. While iterating a"
| | |-TextComment 0x56046815d610 <line:6975:3, col:78> Text=" query is a cheap operation, creating and deleting a query is expensive. The"
| | |-TextComment 0x56046815d630 <line:6976:3, col:77> Text=" reason for this is that queries are "prematched", which means that a query"
| | |-TextComment 0x56046815d650 <line:6977:3, col:78> Text=" stores state about which entities (or rather, tables) match with the query."
| | `-TextComment 0x56046815d670 <line:6978:3, col:56> Text=" Building up this state happens during query creation."
| |-ParagraphComment 0x56046815d7d0 <line:6980:3, line:6985:78>
| | |-TextComment 0x56046815d6e0 <line:6980:3, col:78> Text=" Once a query is created, matching only happens when new tables are created."
| | |-TextComment 0x56046815d700 <line:6981:3, col:80> Text=" In most applications this is an infrequent process, since it only occurs when"
| | |-TextComment 0x56046815d720 <line:6982:3, col:78> Text=" a new combination of components is introduced. While matching is expensive,"
| | |-TextComment 0x56046815d740 <line:6983:3, col:79> Text=" it is importent to note that matching does not happen on a per-entity basis,"
| | |-TextComment 0x56046815d760 <line:6984:3, col:79> Text=" but on a per-table basis. This means that the average time spent on matching"
| | `-TextComment 0x56046815d780 <line:6985:3, col:78> Text=" per frame should rapidly approach zero over the lifetime of an application."
| |-ParagraphComment 0x56046815d910 <line:6987:3, line:6993:38>
| | |-TextComment 0x56046815d7f0 <line:6987:3, col:78> Text=" A query provides direct access to the component arrays. When an application"
| | |-TextComment 0x56046815d810 <line:6988:3, col:78> Text=" creates/deletes entities or adds/removes components, these arrays can shift"
| | |-TextComment 0x56046815d830 <line:6989:3, col:77> Text=" component values around, or may grow in size. This can cause unexpected or"
| | |-TextComment 0x56046815d850 <line:6990:3, col:71> Text=" undefined behavior to occur if these operations are performed while "
| | |-TextComment 0x56046815d870 <line:6991:3, col:77> Text=" iterating. To prevent this from happening an application should either not"
| | |-TextComment 0x56046815d890 <line:6992:3, col:76> Text=" perform these operations while iterating, or use deferred operations (see"
| | `-TextComment 0x56046815d8b0 <line:6993:3, col:38> Text=" ecs_defer_begin and ecs_defer_end)."
| |-ParagraphComment 0x56046815d9b0 <line:6995:3, line:6997:17>
| | |-TextComment 0x56046815d930 <line:6995:3, col:77> Text=" Queries can be created and deleted dynamically. If a query was not deleted"
| | |-TextComment 0x56046815d950 <line:6996:3, col:74> Text=" (using ecs_query_fini) before the world is deleted, it will be deleted "
| | `-TextComment 0x56046815d970 <line:6997:3, col:17> Text=" automatically."
| |-ParagraphComment 0x56046815da00 <line:6999:3>
| | `-TextComment 0x56046815d9d0 <col:3> Text=" "
| |-ParamCommandComment 0x56046815da20 <col:4, line:7000:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046815dad0 <line:6999:16, line:7000:3>
| | |-TextComment 0x56046815da80 <line:6999:16, col:26> Text=" The world."
| | `-TextComment 0x56046815daa0 <line:7000:3> Text=" "
| |-ParamCommandComment 0x56046815daf0 <col:4, line:7001:3> [in] implicitly Param="desc" ParamIndex=1
| | `-ParagraphComment 0x56046815dba0 <line:7000:15, line:7001:3>
| | |-TextComment 0x56046815db50 <line:7000:15, col:59> Text=" A structure describing the query properties."
| | `-TextComment 0x56046815db70 <line:7001:3> Text=" "
| `-BlockCommandComment 0x56046815dbc0 <col:4, col:25> Name="return"
| `-ParagraphComment 0x56046815dc20 <col:11, col:25>
| `-TextComment 0x56046815dbf0 <col:11, col:25> Text=" The new query."
|-FunctionDecl 0x56046805c4b8 <line:7016:1, line:7017:23> line:7016:6 ecs_query_fini 'void (ecs_query_t *)'
| |-ParmVarDecl 0x56046805c3c8 <line:7017:5, col:18> col:18 query 'ecs_query_t *'
| `-FullComment 0x56046815dee0 <line:7008:4, line:7013:26>
| |-ParagraphComment 0x56046815dda0 <line:7008:4, line:7011:25>
| | |-TextComment 0x56046815dd00 <line:7008:4, col:20> Text=" Destroy a query."
| | |-TextComment 0x56046815dd20 <line:7009:3, col:77> Text=" This operation destroys a query and its resources. If the query is used as"
| | |-TextComment 0x56046815dd40 <line:7010:3, col:74> Text=" the parent of subqueries, those subqueries will be orphaned and must be"
| | `-TextComment 0x56046815dd60 <line:7011:3, col:25> Text=" deinitialized as well."
| |-ParagraphComment 0x56046815ddf0 <line:7013:3>
| | `-TextComment 0x56046815ddc0 <col:3> Text=" "
| `-ParamCommandComment 0x56046815de10 <col:4, col:26> [in] implicitly Param="query" ParamIndex=0
| `-ParagraphComment 0x56046815dea0 <col:16, col:26>
| `-TextComment 0x56046815de70 <col:16, col:26> Text=" The query."
|-FunctionDecl 0x56046805c688 <line:7026:1, line:7027:23> line:7026:21 ecs_query_get_filter 'const ecs_filter_t *(ecs_query_t *)'
| |-ParmVarDecl 0x56046805c598 <line:7027:5, col:18> col:18 query 'ecs_query_t *'
| `-FullComment 0x56046815e110 <line:7019:4, line:7023:26>
| |-ParagraphComment 0x56046815dfd0 <line:7019:4, line:7021:62>
| | |-TextComment 0x56046815df50 <line:7019:4, col:28> Text=" Get filter from a query."
| | |-TextComment 0x56046815df70 <line:7020:3, col:72> Text=" This operation obtains a pointer to the internally constructed filter"
| | `-TextComment 0x56046815df90 <line:7021:3, col:62> Text=" of the query and can be used to introspect the query terms."
| |-ParagraphComment 0x56046815e020 <line:7023:3>
| | `-TextComment 0x56046815dff0 <col:3> Text=" "
| `-ParamCommandComment 0x56046815e040 <col:4, col:26> [in] implicitly Param="query" ParamIndex=0
| `-ParagraphComment 0x56046815e0d0 <col:16, col:26>
| `-TextComment 0x56046815e0a0 <col:16, col:26> Text=" The query."
|-FunctionDecl 0x56046805c930 <line:7057:1, line:7059:23> line:7057:12 ecs_query_iter 'ecs_iter_t (const ecs_world_t *, ecs_query_t *)'
| |-ParmVarDecl 0x56046805c768 <line:7058:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x56046805c7e0 <line:7059:5, col:18> col:18 query 'ecs_query_t *'
| `-FullComment 0x56046815e7e0 <line:7029:4, line:7054:30>
| |-ParagraphComment 0x56046815e220 <line:7029:4, line:7032:59>
| | |-TextComment 0x56046815e180 <line:7029:4, col:28> Text=" Return a query iterator."
| | |-TextComment 0x56046815e1a0 <line:7030:3, col:76> Text=" A query iterator lets an application iterate over entities that match the"
| | |-TextComment 0x56046815e1c0 <line:7031:3, col:76> Text=" specified query. If a sorting function is specified, the query will check"
| | `-TextComment 0x56046815e1e0 <line:7032:3, col:59> Text=" whether a resort is required upon creating the iterator."
| |-ParagraphComment 0x56046815e2c0 <line:7034:3, line:7036:40>
| | |-TextComment 0x56046815e240 <line:7034:3, col:76> Text=" Creating a query iterator is a cheap operation that does not allocate any"
| | |-TextComment 0x56046815e260 <line:7035:3, col:75> Text=" resources. An application does not need to deinitialize or free a query "
| | `-TextComment 0x56046815e280 <line:7036:3, col:40> Text=" iterator before it goes out of scope."
| |-ParagraphComment 0x56046815e350 <line:7038:3, line:7039:40>
| | |-TextComment 0x56046815e2e0 <line:7038:3, col:80> Text=" To iterate the iterator, an application should use ecs_query_next to progress"
| | `-TextComment 0x56046815e320 <line:7039:3, col:40> Text=" the iterator and test if it has data."
| |-ParagraphComment 0x56046815e410 <line:7041:3, line:7044:50>
| | |-TextComment 0x56046815e370 <line:7041:3, col:75> Text=" Query iteration requires an outer and an inner loop. The outer loop uses"
| | |-TextComment 0x56046815e390 <line:7042:3, col:78> Text=" ecs_query_next to test if new tables are available. The inner loop iterates"
| | |-TextComment 0x56046815e3b0 <line:7043:3, col:79> Text=" the entities in the table, and is usually a for loop that uses iter.count to"
| | `-TextComment 0x56046815e3d0 <line:7044:3, col:50> Text=" loop through the entities and component arrays."
| |-ParagraphComment 0x56046815e500 <line:7046:3, line:7050:27>
| | |-TextComment 0x56046815e430 <line:7046:3, col:73> Text=" The two loops are necessary because of how data is stored internally. "
| | |-TextComment 0x56046815e450 <line:7047:3, col:79> Text=" Entities are grouped by the components they have, in tables. A single query "
| | |-TextComment 0x56046815e470 <line:7048:3, col:78> Text=" can (and often does) match with multiple tables. Because each table has its"
| | |-TextComment 0x56046815e490 <line:7049:3, col:77> Text=" own set of arrays, an application has to reobtain pointers to those arrays"
| | `-TextComment 0x56046815e4b0 <line:7050:3, col:27> Text=" for each matching table."
| |-ParagraphComment 0x56046815e550 <line:7052:3>
| | `-TextComment 0x56046815e520 <col:3> Text=" "
| |-ParamCommandComment 0x56046815e570 <col:4, line:7053:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046815e620 <line:7052:16, line:7053:3>
| | |-TextComment 0x56046815e5d0 <line:7052:16, col:68> Text=" The world or stage, when iterating in readonly mode."
| | `-TextComment 0x56046815e5f0 <line:7053:3> Text=" "
| |-ParamCommandComment 0x56046815e640 <col:4, line:7054:3> [in] implicitly Param="query" ParamIndex=1
| | `-ParagraphComment 0x56046815e6f0 <line:7053:16, line:7054:3>
| | |-TextComment 0x56046815e6a0 <line:7053:16, col:37> Text=" The query to iterate."
| | `-TextComment 0x56046815e6c0 <line:7054:3> Text=" "
| `-BlockCommandComment 0x56046815e710 <col:4, col:30> Name="return"
| `-ParagraphComment 0x56046815e770 <col:11, col:30>
| `-TextComment 0x56046815e740 <col:11, col:30> Text=" The query iterator."
|-FunctionDecl 0x56046805caa8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:7072:21> line:7071:6 ecs_query_next 'bool (ecs_iter_t *)'
| |-ParmVarDecl 0x56046805ca18 <line:7072:5, col:17> col:17 iter 'ecs_iter_t *'
| `-FullComment 0x56046815eb00 <line:7061:4, line:7068:57>
| |-ParagraphComment 0x56046815e920 <line:7061:4, line:7065:12>
| | |-TextComment 0x56046815e850 <line:7061:4, col:32> Text=" Progress the query iterator."
| | |-TextComment 0x56046815e870 <line:7062:3, col:71> Text=" This operation progresses the query iterator to the next table. The "
| | |-TextComment 0x56046815e890 <line:7063:3, col:77> Text=" iterator must have been initialized with `ecs_query_iter`. This operation "
| | |-TextComment 0x56046815e8b0 <line:7064:3, col:73> Text=" must be invoked at least once before interpreting the contents of the "
| | `-TextComment 0x56046815e8d0 <line:7065:3, col:12> Text=" iterator."
| |-ParagraphComment 0x56046815e970 <line:7067:3>
| | `-TextComment 0x56046815e940 <col:3> Text=" "
| |-ParamCommandComment 0x56046815e990 <col:4, line:7068:3> [in] implicitly Param="iter" ParamIndex=0
| | `-ParagraphComment 0x56046815ea40 <line:7067:15, line:7068:3>
| | |-TextComment 0x56046815e9f0 <line:7067:15, col:28> Text=" The iterator."
| | `-TextComment 0x56046815ea10 <line:7068:3> Text=" "
| `-BlockCommandComment 0x56046815ea60 <col:4, col:57> Name="returns"
| `-ParagraphComment 0x56046815eac0 <col:12, col:57>
| `-TextComment 0x56046815ea90 <col:12, col:57> Text=" True if more data is available, false if not."
|-FunctionDecl 0x56046805cc18 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:7079:21> line:7078:6 ecs_query_next_instanced 'bool (ecs_iter_t *)'
| |-ParmVarDecl 0x56046805cb88 <line:7079:5, col:17> col:17 iter 'ecs_iter_t *'
| `-FullComment 0x56046815ebf0 <line:7074:4, line:7075:49>
| `-ParagraphComment 0x56046815ebc0 <line:7074:4, line:7075:49>
| |-TextComment 0x56046815eb70 <line:7074:4, col:49> Text=" Same as ecs_query_next, but always instanced."
| `-TextComment 0x56046815eb90 <line:7075:3, col:49> Text=" See "instanced" property of ecs_filter_desc_t."
|-FunctionDecl 0x56046805cd88 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:7093:21> line:7092:6 ecs_query_next_table 'bool (ecs_iter_t *)'
| |-ParmVarDecl 0x56046805ccf8 <line:7093:5, col:17> col:17 iter 'ecs_iter_t *'
| `-FullComment 0x56046815ef40 <line:7081:4, line:7089:57>
| |-ParagraphComment 0x56046815ece0 <line:7081:4, line:7083:47>
| | |-TextComment 0x56046815ec60 <line:7081:4, col:72> Text=" Fast alternative to ecs_query_next that only returns matched tables."
| | |-TextComment 0x56046815ec80 <line:7082:3, col:75> Text=" This operation only populates the ecs_iter_t::table field. To access the"
| | `-TextComment 0x56046815eca0 <line:7083:3, col:47> Text=" matched components, call ecs_query_populate."
| |-ParagraphComment 0x56046815ed50 <line:7085:3, line:7086:65>
| | |-TextComment 0x56046815ed00 <line:7085:3, col:79> Text=" If this operation is used with a query that has inout/out terms, those terms"
| | `-TextComment 0x56046815ed20 <line:7086:3, col:65> Text=" will not be marked dirty unless ecs_query_populate is called. "
| |-ParagraphComment 0x56046815eda0 <line:7088:3>
| | `-TextComment 0x56046815ed70 <col:3> Text=" "
| |-ParamCommandComment 0x56046815edc0 <col:4, line:7089:3> [in] implicitly Param="iter" ParamIndex=0
| | `-ParagraphComment 0x56046815ee70 <line:7088:15, line:7089:3>
| | |-TextComment 0x56046815ee20 <line:7088:15, col:28> Text=" The iterator."
| | `-TextComment 0x56046815ee40 <line:7089:3> Text=" "
| `-BlockCommandComment 0x56046815ee90 <col:4, col:57> Name="returns"
| `-ParagraphComment 0x56046815eef0 <col:12, col:57>
| `-TextComment 0x56046815eec0 <col:12, col:57> Text=" True if more data is available, false if not."
|-FunctionDecl 0x56046805cef8 <line:7113:1, line:7114:21> line:7113:6 ecs_query_populate 'void (ecs_iter_t *)'
| |-ParmVarDecl 0x56046805ce68 <line:7114:5, col:17> col:17 iter 'ecs_iter_t *'
| `-FullComment 0x56046815f330 <line:7095:4, line:7110:28>
| |-ParagraphComment 0x56046815f030 <line:7095:4, line:7097:41>
| | |-TextComment 0x56046815efb0 <line:7095:4, col:29> Text=" Populate iterator fields."
| | |-TextComment 0x56046815efd0 <line:7096:3, col:75> Text=" This operation can be combined with ecs_query_next_table to populate the"
| | `-TextComment 0x56046815eff0 <line:7097:3, col:41> Text=" iterator fields for the current table."
| |-ParagraphComment 0x56046815f0d0 <line:7099:3, line:7101:61>
| | |-TextComment 0x56046815f050 <line:7099:3, col:74> Text=" Populating fields conditionally can save time when a query uses change "
| | |-TextComment 0x56046815f070 <line:7100:3, col:80> Text=" detection, and only needs iterator data when the table has changed. When this"
| | `-TextComment 0x56046815f090 <line:7101:3, col:61> Text=" operation is called, inout/out terms will be marked dirty."
| |-ParagraphComment 0x56046815f170 <line:7103:3, line:7105:77>
| | |-TextComment 0x56046815f0f0 <line:7103:3, col:74> Text=" In cases where inout/out terms are conditionally written and no changes"
| | |-TextComment 0x56046815f110 <line:7104:3, col:78> Text=" were made after calling ecs_query_populate, the ecs_query_skip function can"
| | `-TextComment 0x56046815f130 <line:7105:3, col:77> Text=" be called to prevent the matched table components from being marked dirty."
| |-ParagraphComment 0x56046815f1e0 <line:7107:3, line:7108:70>
| | |-TextComment 0x56046815f190 <line:7107:3, col:75> Text=" This operation does should not be used with queries that match disabled "
| | `-TextComment 0x56046815f1b0 <line:7108:3, col:70> Text=" components, union relationships, or with queries that use order_by."
| |-ParagraphComment 0x56046815f230 <line:7110:3>
| | `-TextComment 0x56046815f200 <col:3> Text=" "
| `-ParamCommandComment 0x56046815f250 <col:4, col:28> [in] implicitly Param="iter" ParamIndex=0
| `-ParagraphComment 0x56046815f2e0 <col:15, col:28>
| `-TextComment 0x56046815f2b0 <col:15, col:28> Text=" The iterator."
|-FunctionDecl 0x56046805d168 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:7148:25> line:7146:6 ecs_query_changed 'bool (ecs_query_t *, const ecs_iter_t *)'
| |-ParmVarDecl 0x56046805cfd8 <line:7147:5, col:18> col:18 query 'ecs_query_t *'
| |-ParmVarDecl 0x56046805d050 <line:7148:5, col:23> col:23 it 'const ecs_iter_t *'
| `-FullComment 0x56046815fa30 <line:7116:4, line:7143:53>
| |-ParagraphComment 0x56046815f490 <line:7116:4, line:7121:36>
| | |-TextComment 0x56046815f3a0 <line:7116:4, col:68> Text=" Returns whether the query data changed since the last iteration."
| | |-TextComment 0x56046815f3c0 <line:7117:3, col:40> Text=" The operation will return true after:"
| | |-TextComment 0x56046815f3e0 <line:7118:3, col:40> Text=" - new entities have been matched with"
| | |-TextComment 0x56046815f400 <line:7119:3, col:48> Text=" - new tables have been matched/unmatched with"
| | |-TextComment 0x56046815f420 <line:7120:3, col:34> Text=" - matched entities were deleted"
| | `-TextComment 0x56046815f440 <line:7121:3, col:36> Text=" - matched components were changed"
| |-ParagraphComment 0x56046815f530 <line:7123:3, line:7125:49>
| | |-TextComment 0x56046815f4b0 <line:7123:3, col:75> Text=" The operation will not return true after a write-only (EcsOut) or filter"
| | |-TextComment 0x56046815f4d0 <line:7124:3, col:71> Text=" (EcsInOutNone) term has changed, when a term is not matched with the"
| | `-TextComment 0x56046815f4f0 <line:7125:3, col:49> Text=" current table (This subject) or for tag terms."
| |-ParagraphComment 0x56046815f5a0 <line:7127:3, line:7128:72>
| | |-TextComment 0x56046815f550 <line:7127:3, col:80> Text=" The changed state of a table is reset after it is iterated. If a iterator was"
| | `-TextComment 0x56046815f570 <line:7128:3, col:72> Text=" not iterated until completion, tables may still be marked as changed."
| |-ParagraphComment 0x56046815f610 <line:7130:3, line:7131:36>
| | |-TextComment 0x56046815f5c0 <line:7130:3, col:80> Text=" If no iterator is provided the operation will return the changed state of the"
| | `-TextComment 0x56046815f5e0 <line:7131:3, col:36> Text=" all matched tables of the query. "
| |-ParagraphComment 0x56046815f6b0 <line:7133:3, line:7135:54>
| | |-TextComment 0x56046815f630 <line:7133:3, col:78> Text=" If an iterator is provided, the operation will return the changed state of "
| | |-TextComment 0x56046815f650 <line:7134:3, col:78> Text=" the currently returned iterator result. The following preconditions must be"
| | `-TextComment 0x56046815f670 <line:7135:3, col:54> Text=" met before using an iterator with change detection:"
| |-ParagraphComment 0x56046815f750 <line:7137:3, line:7139:35>
| | |-TextComment 0x56046815f6d0 <line:7137:3, col:67> Text=" - The iterator is a query iterator (created with ecs_query_iter)"
| | |-TextComment 0x56046815f6f0 <line:7138:3, col:72> Text=" - The iterator must be valid (ecs_query_next must have returned true)"
| | `-TextComment 0x56046815f710 <line:7139:3, col:35> Text=" - The iterator must be instanced"
| |-ParagraphComment 0x56046815f7a0 <line:7141:3>
| | `-TextComment 0x56046815f770 <col:3> Text=" "
| |-ParamCommandComment 0x56046815f7c0 <col:4, line:7142:3> [in] implicitly Param="query" ParamIndex=0
| | `-ParagraphComment 0x56046815f870 <line:7141:16, line:7142:3>
| | |-TextComment 0x56046815f820 <line:7141:16, col:57> Text=" The query (optional if 'it' is provided)."
| | `-TextComment 0x56046815f840 <line:7142:3> Text=" "
| |-ParamCommandComment 0x56046815f890 <col:4, line:7143:3> [in] implicitly Param="it" ParamIndex=1
| | `-ParagraphComment 0x56046815f940 <line:7142:13, line:7143:3>
| | |-TextComment 0x56046815f8f0 <line:7142:13, col:75> Text=" The iterator result to test (optional if 'query' is provided)."
| | `-TextComment 0x56046815f910 <line:7143:3> Text=" "
| `-BlockCommandComment 0x56046815f960 <col:4, col:53> Name="return"
| `-ParagraphComment 0x56046815f9c0 <col:11, col:53>
| `-TextComment 0x56046815f990 <col:11, col:53> Text=" true if entities changed, otherwise false."
|-FunctionDecl 0x56046805d2e8 <line:7161:1, line:7162:19> line:7161:6 ecs_query_skip 'void (ecs_iter_t *)'
| |-ParmVarDecl 0x56046805d258 <line:7162:5, col:17> col:17 it 'ecs_iter_t *'
| `-FullComment 0x56046815fd20 <line:7150:4, line:7158:41>
| |-ParagraphComment 0x56046815fb40 <line:7150:4, line:7153:68>
| | |-TextComment 0x56046815faa0 <line:7150:4, col:33> Text=" Skip a table while iterating."
| | |-TextComment 0x56046815fac0 <line:7151:3, col:77> Text=" This operation lets the query iterator know that a table was skipped while"
| | |-TextComment 0x56046815fae0 <line:7152:3, col:77> Text=" iterating. A skipped table will not reset its changed state, and the query"
| | `-TextComment 0x56046815fb00 <line:7153:3, col:68> Text=" will not update the dirty flags of the table for its out columns."
| |-ParagraphComment 0x56046815fbe0 <line:7155:3, line:7156:58>
| | |-TextComment 0x56046815fb60 <line:7155:3, col:78> Text=" Only valid iterators must be provided (next has to be called at least once "
| | |-TextComment 0x56046815fb80 <col:79> Text="&"
| | `-TextComment 0x56046815fba0 <line:7156:3, col:58> Text=" return true) and the iterator must be a query iterator."
| |-ParagraphComment 0x56046815fc30 <line:7158:3>
| | `-TextComment 0x56046815fc00 <col:3> Text=" "
| `-ParamCommandComment 0x56046815fc50 <col:4, col:41> [in] implicitly Param="it" ParamIndex=0
| `-ParagraphComment 0x56046815fce0 <col:13, col:41>
| `-TextComment 0x56046815fcb0 <col:13, col:41> Text=" The iterator result to skip."
|-FunctionDecl 0x56046805d558 <line:7187:1, line:7189:22> line:7187:6 ecs_query_set_group 'void (ecs_iter_t *, uint64_t)'
| |-ParmVarDecl 0x56046805d3c8 <line:7188:5, col:17> col:17 it 'ecs_iter_t *'
| |-ParmVarDecl 0x56046805d440 <line:7189:5, col:14> col:14 group_id 'uint64_t':'unsigned long'
| `-FullComment 0x560468160280 <line:7164:4, line:7184:40>
| |-ParagraphComment 0x56046815fe30 <line:7164:4, line:7167:23>
| | |-TextComment 0x56046815fd90 <line:7164:4, col:44> Text=" Set group to iterate for query iterator."
| | |-TextComment 0x56046815fdb0 <line:7165:3, col:79> Text=" This operation limits the results returned by the query to only the selected"
| | |-TextComment 0x56046815fdd0 <line:7166:3, col:75> Text=" group id. The query must have a group_by function, and the iterator must"
| | `-TextComment 0x56046815fdf0 <line:7167:3, col:23> Text=" be a query iterator."
| |-ParagraphComment 0x56046815fef0 <line:7169:3, line:7172:68>
| | |-TextComment 0x56046815fe50 <line:7169:3, col:78> Text=" Groups are sets of tables that are stored together in the query cache based"
| | |-TextComment 0x56046815fe70 <line:7170:3, col:77> Text=" on a group id, which is calculated per table by the group_by function. To "
| | |-TextComment 0x56046815fe90 <line:7171:3, col:80> Text=" iterate a group, an iterator only needs to know the first and last cache node"
| | `-TextComment 0x56046815feb0 <line:7172:3, col:68> Text=" for that group, which can both be found in a fast O(1) operation."
| |-ParagraphComment 0x56046815ffb0 <line:7174:3, line:7177:66>
| | |-TextComment 0x56046815ff10 <line:7174:3, col:75> Text=" As a result, group iteration is one of the most efficient mechanisms to "
| | |-TextComment 0x56046815ff30 <line:7175:3, col:79> Text=" filter out large numbers of entities, even if those entities are distributed"
| | |-TextComment 0x56046815ff50 <line:7176:3, col:75> Text=" across many tables. This makes it a good fit for things like dividing up"
| | `-TextComment 0x56046815ff70 <line:7177:3, col:66> Text=" a world into cells, and only iterating cells close to a player."
| |-ParagraphComment 0x560468160050 <line:7179:3, line:7181:42>
| | |-TextComment 0x56046815ffd0 <line:7179:3, col:79> Text=" The group to iterate must be set before the first call to ecs_query_next. No"
| | |-TextComment 0x56046815fff0 <line:7180:3, col:79> Text=" operations that can add/remove components should be invoked between calling "
| | `-TextComment 0x560468160010 <line:7181:3, col:42> Text=" ecs_query_set_group and ecs_query_next."
| |-ParagraphComment 0x5604681600a0 <line:7183:3>
| | `-TextComment 0x560468160070 <col:3> Text=" "
| |-ParamCommandComment 0x5604681600c0 <col:4, line:7184:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468160170 <line:7183:13, line:7184:3>
| | |-TextComment 0x560468160120 <line:7183:13, col:32> Text=" The query iterator."
| | `-TextComment 0x560468160140 <line:7184:3> Text=" "
| `-ParamCommandComment 0x560468160190 <col:4, col:40> [in] implicitly Param="group_id" ParamIndex=1
| `-ParagraphComment 0x560468160220 <col:19, col:40>
| `-TextComment 0x5604681601f0 <col:19, col:40> Text=" The group to iterate."
|-FunctionDecl 0x56046805d7e0 <line:7200:1, line:7202:22> line:7200:7 ecs_query_get_group_ctx 'void *(ecs_query_t *, uint64_t)'
| |-ParmVarDecl 0x56046805d648 <line:7201:5, col:18> col:18 query 'ecs_query_t *'
| |-ParmVarDecl 0x56046805d6c0 <line:7202:5, col:14> col:14 group_id 'uint64_t':'unsigned long'
| `-FullComment 0x560468160650 <line:7191:4, line:7197:62>
| |-ParagraphComment 0x560468160390 <line:7191:4, line:7193:28>
| | |-TextComment 0x5604681602f0 <line:7191:4, col:31> Text=" Get context of query group."
| | |-TextComment 0x560468160330 <line:7192:3, col:74> Text=" This operation returns the context of a query group as returned by the "
| | `-TextComment 0x560468160350 <line:7193:3, col:28> Text=" on_group_create callback."
| |-ParagraphComment 0x5604681603e0 <line:7195:3>
| | `-TextComment 0x5604681603b0 <col:3> Text=" "
| |-ParamCommandComment 0x560468160400 <col:4, line:7196:3> [in] implicitly Param="query" ParamIndex=0
| | `-ParagraphComment 0x5604681604b0 <line:7195:16, line:7196:3>
| | |-TextComment 0x560468160460 <line:7195:16, col:26> Text=" The query."
| | `-TextComment 0x560468160480 <line:7196:3> Text=" "
| |-ParamCommandComment 0x5604681604d0 <col:4, line:7197:3> [in] implicitly Param="group_id" ParamIndex=1
| | `-ParagraphComment 0x560468160580 <line:7196:19, line:7197:3>
| | |-TextComment 0x560468160530 <line:7196:19, col:61> Text=" The group for which to obtain the context."
| | `-TextComment 0x560468160550 <line:7197:3> Text=" "
| `-BlockCommandComment 0x5604681605a0 <col:4, col:62> Name="return"
| `-ParagraphComment 0x560468160600 <col:11, col:62>
| `-TextComment 0x5604681605d0 <col:11, col:62> Text=" The group context, NULL if the group doesn't exist."
|-FunctionDecl 0x56046805db28 <line:7213:1, line:7215:22> line:7213:31 ecs_query_get_group_info 'const ecs_query_group_info_t *(ecs_query_t *, uint64_t)'
| |-ParmVarDecl 0x56046805d940 <line:7214:5, col:18> col:18 query 'ecs_query_t *'
| |-ParmVarDecl 0x56046805d9b8 <line:7215:5, col:14> col:14 group_id 'uint64_t':'unsigned long'
| `-FullComment 0x560468160a00 <line:7204:4, line:7210:59>
| |-ParagraphComment 0x560468160740 <line:7204:4, line:7206:52>
| | |-TextComment 0x5604681606c0 <line:7204:4, col:38> Text=" Get information about query group."
| | |-TextComment 0x5604681606e0 <line:7205:3, col:78> Text=" This operation returns information about a query group, including the group"
| | `-TextComment 0x560468160700 <line:7206:3, col:52> Text=" context returned by the on_group_create callback."
| |-ParagraphComment 0x560468160790 <line:7208:3>
| | `-TextComment 0x560468160760 <col:3> Text=" "
| |-ParamCommandComment 0x5604681607b0 <col:4, line:7209:3> [in] implicitly Param="query" ParamIndex=0
| | `-ParagraphComment 0x560468160860 <line:7208:16, line:7209:3>
| | |-TextComment 0x560468160810 <line:7208:16, col:26> Text=" The query."
| | `-TextComment 0x560468160830 <line:7209:3> Text=" "
| |-ParamCommandComment 0x560468160880 <col:4, line:7210:3> [in] implicitly Param="group_id" ParamIndex=1
| | `-ParagraphComment 0x560468160930 <line:7209:19, line:7210:3>
| | |-TextComment 0x5604681608e0 <line:7209:19, col:64> Text=" The group for which to obtain the group info."
| | `-TextComment 0x560468160900 <line:7210:3> Text=" "
| `-BlockCommandComment 0x560468160950 <col:4, col:59> Name="return"
| `-ParagraphComment 0x5604681609b0 <col:11, col:59>
| `-TextComment 0x560468160980 <col:11, col:59> Text=" The group info, NULL if the group doesn't exist."
|-FunctionDecl 0x56046805dd08 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:7227:23> line:7226:6 ecs_query_orphaned 'bool (ecs_query_t *)'
| |-ParmVarDecl 0x56046805dc18 <line:7227:5, col:18> col:18 query 'ecs_query_t *'
| `-FullComment 0x560468160cf0 <line:7217:4, line:7223:54>
| |-ParagraphComment 0x560468160b10 <line:7217:4, line:7220:30>
| | |-TextComment 0x560468160a70 <line:7217:4, col:38> Text=" Returns whether query is orphaned."
| | |-TextComment 0x560468160a90 <line:7218:3, col:76> Text=" When the parent query of a subquery is deleted, it is left in an orphaned"
| | |-TextComment 0x560468160ab0 <line:7219:3, col:76> Text=" state. The only valid operation on an orphaned query is deleting it. Only"
| | `-TextComment 0x560468160ad0 <line:7220:3, col:30> Text=" subqueries can be orphaned."
| |-ParagraphComment 0x560468160b60 <line:7222:3>
| | `-TextComment 0x560468160b30 <col:3> Text=" "
| |-ParamCommandComment 0x560468160b80 <col:4, line:7223:3> [in] implicitly Param="query" ParamIndex=0
| | `-ParagraphComment 0x560468160c30 <line:7222:16, line:7223:3>
| | |-TextComment 0x560468160be0 <line:7222:16, col:26> Text=" The query."
| | `-TextComment 0x560468160c00 <line:7223:3> Text=" "
| `-BlockCommandComment 0x560468160c50 <col:4, col:54> Name="return"
| `-ParagraphComment 0x560468160cb0 <col:11, col:54>
| `-TextComment 0x560468160c80 <col:11, col:54> Text=" true if query is orphaned, otherwise false."
|-FunctionDecl 0x56046805df40 <line:7235:1, line:7236:29> line:7235:7 ecs_query_str 'char *(const ecs_query_t *)'
| |-ParmVarDecl 0x56046805de48 <line:7236:5, col:24> col:24 query 'const ecs_query_t *'
| `-FullComment 0x560468160f70 <line:7229:4, line:7232:28>
| |-ParagraphComment 0x560468160d90 <line:7229:4, col:28>
| | `-TextComment 0x560468160d60 <col:4, col:28> Text=" Convert query to string."
| |-ParagraphComment 0x560468160de0 <line:7231:3>
| | `-TextComment 0x560468160db0 <col:3> Text=" "
| |-ParamCommandComment 0x560468160e00 <col:4, line:7232:3> [in] implicitly Param="query" ParamIndex=0
| | `-ParagraphComment 0x560468160eb0 <line:7231:16, line:7232:3>
| | |-TextComment 0x560468160e60 <line:7231:16, col:26> Text=" The query."
| | `-TextComment 0x560468160e80 <line:7232:3> Text=" "
| `-BlockCommandComment 0x560468160ed0 <col:4, col:28> Name="return"
| `-ParagraphComment 0x560468160f30 <col:11, col:28>
| `-TextComment 0x560468160f00 <col:11, col:28> Text=" The query string."
|-FunctionDecl 0x56046805e118 <line:7244:1, line:7245:29> line:7244:9 ecs_query_table_count 'int32_t (const ecs_query_t *)'
| |-ParmVarDecl 0x56046805e028 <line:7245:5, col:24> col:24 query 'const ecs_query_t *'
| `-FullComment 0x5604681611f0 <line:7238:4, line:7241:40>
| |-ParagraphComment 0x560468161010 <line:7238:4, col:48>
| | `-TextComment 0x560468160fe0 <col:4, col:48> Text=" Returns number of tables query matched with."
| |-ParagraphComment 0x560468161060 <line:7240:3>
| | `-TextComment 0x560468161030 <col:3> Text=" "
| |-ParamCommandComment 0x560468161080 <col:4, line:7241:3> [in] implicitly Param="query" ParamIndex=0
| | `-ParagraphComment 0x560468161130 <line:7240:16, line:7241:3>
| | |-TextComment 0x5604681610e0 <line:7240:16, col:26> Text=" The query."
| | `-TextComment 0x560468161100 <line:7241:3> Text=" "
| `-BlockCommandComment 0x560468161150 <col:4, col:40> Name="return"
| `-ParagraphComment 0x5604681611b0 <col:11, col:40>
| `-TextComment 0x560468161180 <col:11, col:40> Text=" The number of matched tables."
|-FunctionDecl 0x56046805e288 <line:7253:1, line:7254:29> line:7253:9 ecs_query_empty_table_count 'int32_t (const ecs_query_t *)'
| |-ParmVarDecl 0x56046805e1f8 <line:7254:5, col:24> col:24 query 'const ecs_query_t *'
| `-FullComment 0x560468161470 <line:7247:4, line:7250:46>
| |-ParagraphComment 0x560468161290 <line:7247:4, col:54>
| | `-TextComment 0x560468161260 <col:4, col:54> Text=" Returns number of empty tables query matched with."
| |-ParagraphComment 0x5604681612e0 <line:7249:3>
| | `-TextComment 0x5604681612b0 <col:3> Text=" "
| |-ParamCommandComment 0x560468161300 <col:4, line:7250:3> [in] implicitly Param="query" ParamIndex=0
| | `-ParagraphComment 0x5604681613b0 <line:7249:16, line:7250:3>
| | |-TextComment 0x560468161360 <line:7249:16, col:26> Text=" The query."
| | `-TextComment 0x560468161380 <line:7250:3> Text=" "
| `-BlockCommandComment 0x5604681613d0 <col:4, col:46> Name="return"
| `-ParagraphComment 0x560468161430 <col:11, col:46>
| `-TextComment 0x560468161400 <col:11, col:46> Text=" The number of matched empty tables."
|-FunctionDecl 0x56046805e3f8 <line:7264:1, line:7265:29> line:7264:9 ecs_query_entity_count 'int32_t (const ecs_query_t *)'
| |-ParmVarDecl 0x56046805e368 <line:7265:5, col:24> col:24 query 'const ecs_query_t *'
| `-FullComment 0x560468161740 <line:7256:4, line:7261:42>
| |-ParagraphComment 0x560468161560 <line:7256:4, line:7258:28>
| | |-TextComment 0x5604681614e0 <line:7256:4, col:50> Text=" Returns number of entities query matched with."
| | |-TextComment 0x560468161500 <line:7257:3, col:78> Text=" This operation iterates all non-empty tables in the query cache to find the"
| | `-TextComment 0x560468161520 <line:7258:3, col:28> Text=" total number of entities."
| |-ParagraphComment 0x5604681615b0 <line:7260:3>
| | `-TextComment 0x560468161580 <col:3> Text=" "
| |-ParamCommandComment 0x5604681615d0 <col:4, line:7261:3> [in] implicitly Param="query" ParamIndex=0
| | `-ParagraphComment 0x560468161680 <line:7260:16, line:7261:3>
| | |-TextComment 0x560468161630 <line:7260:16, col:26> Text=" The query."
| | `-TextComment 0x560468161650 <line:7261:3> Text=" "
| `-BlockCommandComment 0x5604681616a0 <col:4, col:42> Name="return"
| `-ParagraphComment 0x560468161700 <col:11, col:42>
| `-TextComment 0x5604681616d0 <col:11, col:42> Text=" The number of matched entities."
|-RecordDecl 0x56046805e4f8 <line:7275:9, line:7310:1> line:7275:16 struct ecs_event_desc_t definition
| |-FullComment 0x5604681619a0 <line:7270:3, line:7272:5>
| | |-ParagraphComment 0x5604681617e0 <line:7270:3>
| | | `-TextComment 0x5604681617b0 <col:3> Text=" "
| | |-VerbatimLineComment 0x560468161800 <col:4, col:32> Text=" observer Observers"
| | |-ParagraphComment 0x560468161870 <line:7271:3>
| | | `-TextComment 0x560468161840 <col:3> Text=" "
| | `-BlockCommandComment 0x560468161890 <col:4, line:7272:5> Name="brief"
| | `-ParagraphComment 0x560468161960 <line:7271:10, line:7272:5>
| | |-TextComment 0x5604681618c0 <line:7271:10, col:58> Text=" Functions for working with events and observers."
| | |-TextComment 0x5604681618e0 <line:7272:3> Text=" "
| | |-TextComment 0x560468161900 <col:4> Text="@"
| | `-TextComment 0x560468161920 <col:5> Text="{"
| |-FieldDecl 0x56046805e5b0 <line:7277:5, col:18> col:18 event 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x56046805e610 <line:7282:5, col:23> col:23 ids 'const ecs_type_t *'
| |-FieldDecl 0x56046805e670 <line:7285:5, col:18> col:18 table 'ecs_table_t *'
| |-FieldDecl 0x56046805e6d0 <line:7289:5, col:18> col:18 other_table 'ecs_table_t *'
| |-FieldDecl 0x56046805e730 <line:7292:5, col:13> col:13 offset 'int32_t':'int'
| |-FieldDecl 0x56046805e790 <line:7297:5, col:13> col:13 count 'int32_t':'int'
| |-FieldDecl 0x56046805e7f0 <line:7300:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x56046805e858 <line:7303:5, col:17> col:17 param 'const void *'
| |-FieldDecl 0x56046805e8b8 <line:7306:5, col:17> col:17 observable 'ecs_poly_t *'
| `-FieldDecl 0x56046805e950 <line:7309:5, col:19> col:19 flags 'ecs_flags32_t':'unsigned int'
|-TypedefDecl 0x56046805e9f8 <line:7275:1, line:7310:3> col:3 referenced ecs_event_desc_t 'struct ecs_event_desc_t':'struct ecs_event_desc_t'
| |-ElaboratedType 0x56046805e9a0 'struct ecs_event_desc_t' sugar
| | `-RecordType 0x56046805e580 'struct ecs_event_desc_t'
| | `-Record 0x56046805e4f8 'ecs_event_desc_t'
| `-FullComment 0x560468161c00 <line:7270:3, line:7272:5>
| |-ParagraphComment 0x560468161a40 <line:7270:3>
| | `-TextComment 0x560468161a10 <col:3> Text=" "
| |-VerbatimLineComment 0x560468161a60 <col:4, col:32> Text=" observer Observers"
| |-ParagraphComment 0x560468161ad0 <line:7271:3>
| | `-TextComment 0x560468161aa0 <col:3> Text=" "
| `-BlockCommandComment 0x560468161af0 <col:4, line:7272:5> Name="brief"
| `-ParagraphComment 0x560468161bc0 <line:7271:10, line:7272:5>
| |-TextComment 0x560468161b20 <line:7271:10, col:58> Text=" Functions for working with events and observers."
| |-TextComment 0x560468161b40 <line:7272:3> Text=" "
| |-TextComment 0x560468161b60 <col:4> Text="@"
| `-TextComment 0x560468161b80 <col:5> Text="{"
|-FunctionDecl 0x56046805eca8 <line:7342:1, line:7344:27> line:7342:6 ecs_emit 'void (ecs_world_t *, ecs_event_desc_t *)'
| |-ParmVarDecl 0x56046805eaa0 <line:7343:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046805eb98 <line:7344:5, col:23> col:23 desc 'ecs_event_desc_t *'
| `-FullComment 0x560468162340 <line:7312:4, line:7339:32>
| |-ParagraphComment 0x560468161d40 <line:7312:4, line:7314:46>
| | |-TextComment 0x560468161c70 <line:7312:4, col:15> Text=" Send event."
| | |-TextComment 0x560468161c90 <line:7313:3, col:44> Text=" This sends an event to matching triggers "
| | |-TextComment 0x560468161cb0 <col:45> Text="&"
| | |-TextComment 0x560468161cd0 <col:46, col:76> Text=" is the mechanism used by flecs"
| | `-TextComment 0x560468161cf0 <line:7314:3, col:46> Text=" itself to send OnAdd, OnRemove, etc events."
| |-ParagraphComment 0x560468161db0 <line:7316:3, line:7317:35>
| | |-TextComment 0x560468161d60 <line:7316:3, col:75> Text=" Applications can use this function to send custom events, where a custom"
| | `-TextComment 0x560468161d80 <line:7317:3, col:35> Text=" event can be any regular entity."
| |-ParagraphComment 0x560468161e50 <line:7319:3, line:7321:8>
| | |-TextComment 0x560468161dd0 <line:7319:3, col:73> Text=" Applications should not send builtin flecs events, as this may violate"
| | |-TextComment 0x560468161df0 <line:7320:3, col:79> Text=" assumptions the code makes about the conditions under which those events are"
| | `-TextComment 0x560468161e10 <line:7321:3, col:8> Text=" sent."
| |-ParagraphComment 0x560468161ec0 <line:7323:3, line:7324:65>
| | |-TextComment 0x560468161e70 <line:7323:3, col:78> Text=" Triggers are invoked synchronously. It is therefore safe to use stack-based"
| | `-TextComment 0x560468161e90 <line:7324:3, col:65> Text=" data as event context, which can be set in the "param" member."
| |-ParagraphComment 0x560468161f30 <line:7326:3, line:7327:45>
| | |-TextComment 0x560468161ee0 <line:7326:3, col:76> Text=" To send a notification for a single entity, an application should set the"
| | `-TextComment 0x560468161f00 <line:7327:3, col:45> Text=" following members in the event descriptor:"
| |-ParagraphComment 0x560468161fd0 <line:7329:3, line:7331:20>
| | |-TextComment 0x560468161f50 <line:7329:3, col:42> Text=" - table: set to the table of the entity"
| | |-TextComment 0x560468161f70 <line:7330:3, col:54> Text=" - offset: set to the row of the entity in the table"
| | `-TextComment 0x560468161f90 <line:7331:3, col:20> Text=" - count: set to 1"
| |-ParagraphComment 0x5604681620e0 <line:7333:3, line:7336:45>
| | |-TextComment 0x560468161ff0 <line:7333:3, col:13> Text=" The table "
| | |-TextComment 0x560468162010 <col:14> Text="&"
| | |-TextComment 0x560468162030 <col:15, col:59> Text=" row of the entity can be obtained like this:"
| | |-TextComment 0x560468162050 <line:7334:3, col:49> Text=" ecs_record_t *r = ecs_record_find(world, e);"
| | |-TextComment 0x560468162070 <line:7335:3, col:27> Text=" desc.table = r->table;"
| | `-TextComment 0x560468162090 <line:7336:3, col:45> Text=" desc.offset = ECS_RECORD_TO_ROW(r->row);"
| |-ParagraphComment 0x560468162130 <line:7338:3>
| | `-TextComment 0x560468162100 <col:3> Text=" "
| |-ParamCommandComment 0x560468162150 <col:4, line:7339:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468162200 <line:7338:16, line:7339:3>
| | |-TextComment 0x5604681621b0 <line:7338:16, col:26> Text=" The world."
| | `-TextComment 0x5604681621d0 <line:7339:3> Text=" "
| `-ParamCommandComment 0x560468162220 <col:4, col:32> [in] implicitly Param="desc" ParamIndex=1
| `-ParagraphComment 0x5604681622b0 <col:15, col:32>
| `-TextComment 0x560468162280 <col:15, col:32> Text=" Event parameters."
|-FunctionDecl 0x56046805ef98 <line:7356:1, line:7358:36> line:7356:14 ecs_observer_init 'ecs_entity_t (ecs_world_t *, const ecs_observer_desc_t *)'
| |-ParmVarDecl 0x56046805ed98 <line:7357:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046805ee88 <line:7358:5, col:32> col:32 desc 'const ecs_observer_desc_t *'
| `-FullComment 0x5604681626a0 <line:7346:4, line:7353:48>
| |-ParagraphComment 0x560468162430 <line:7346:4, line:7348:71>
| | |-TextComment 0x5604681623b0 <line:7346:4, col:20> Text=" Create observer."
| | |-TextComment 0x5604681623d0 <line:7347:3, col:73> Text=" Observers are like triggers, but can subscribe for multiple terms. An "
| | `-TextComment 0x5604681623f0 <line:7348:3, col:71> Text=" observer only triggers when the source of the event meets all terms."
| |-ParagraphComment 0x560468162480 <line:7350:3, col:66>
| | `-TextComment 0x560468162450 <col:3, col:66> Text=" See the documentation for ecs_observer_desc_t for more details."
| |-ParagraphComment 0x5604681624d0 <line:7352:3>
| | `-TextComment 0x5604681624a0 <col:3> Text=" "
| |-ParamCommandComment 0x5604681624f0 <col:4, line:7353:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681625a0 <line:7352:16, line:7353:3>
| | |-TextComment 0x560468162550 <line:7352:16, col:26> Text=" The world."
| | `-TextComment 0x560468162570 <line:7353:3> Text=" "
| `-ParamCommandComment 0x5604681625c0 <col:4, col:48> [in] implicitly Param="desc" ParamIndex=1
| `-ParagraphComment 0x560468162650 <col:15, col:48>
| `-TextComment 0x560468162620 <col:15, col:48> Text=" The observer creation parameters."
|-FunctionDecl 0x56046805f118 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:7371:19> line:7370:6 ecs_observer_default_run_action 'bool (ecs_iter_t *)'
| |-ParmVarDecl 0x56046805f088 <line:7371:5, col:17> col:17 it 'ecs_iter_t *'
| `-FullComment 0x5604681629c0 <line:7360:4, line:7367:44>
| |-ParagraphComment 0x5604681627e0 <line:7360:4, line:7364:42>
| | |-TextComment 0x560468162710 <line:7360:4, col:36> Text=" Default run action for observer."
| | |-TextComment 0x560468162730 <line:7361:3, col:70> Text=" This function can be called from a custom observer run action (see "
| | |-TextComment 0x560468162750 <line:7362:3, col:78> Text=" ecs_observer_desc_t::run for more details). This function ensures that the "
| | |-TextComment 0x560468162770 <line:7363:3, col:79> Text=" observer's filter is applied to the iterator's table, filters out duplicate "
| | `-TextComment 0x560468162790 <line:7364:3, col:42> Text=" events and implements EcsMonitor logic."
| |-ParagraphComment 0x560468162830 <line:7366:3>
| | `-TextComment 0x560468162800 <col:3> Text=" "
| |-ParamCommandComment 0x560468162850 <col:4, line:7367:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468162900 <line:7366:13, line:7367:3>
| | |-TextComment 0x5604681628b0 <line:7366:13, col:26> Text=" The iterator."
| | `-TextComment 0x5604681628d0 <line:7367:3> Text=" "
| `-BlockCommandComment 0x560468162920 <col:4, col:44> Name="return"
| `-ParagraphComment 0x560468162980 <col:11, col:44>
| `-TextComment 0x560468162950 <col:11, col:44> Text=" True if the observer was invoked."
|-FunctionDecl 0x56046805f360 <line:7374:1, line:7376:26> line:7374:7 ecs_get_observer_ctx 'void *(const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x56046805f1d0 <line:7375:5, col:24> col:24 world 'const ecs_world_t *'
| `-ParmVarDecl 0x56046805f248 <line:7376:5, col:18> col:18 observer 'ecs_entity_t':'unsigned long'
|-FunctionDecl 0x56046805f538 <line:7379:1, line:7381:26> line:7379:7 ecs_get_observer_binding_ctx 'void *(const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x56046805f420 <line:7380:5, col:24> col:24 world 'const ecs_world_t *'
| `-ParmVarDecl 0x56046805f498 <line:7381:5, col:18> col:18 observer 'ecs_entity_t':'unsigned long'
|-FunctionDecl 0x56046805f898 <line:7413:1, line:7417:23> line:7413:6 ecs_iter_poly 'void (const ecs_world_t *, const ecs_poly_t *, ecs_iter_t *, ecs_term_t *)'
| |-ParmVarDecl 0x56046805f688 <line:7414:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x56046805f700 <line:7415:5, col:23> col:23 poly 'const ecs_poly_t *'
| |-ParmVarDecl 0x56046805f778 <line:7416:5, col:17> col:17 iter 'ecs_iter_t *'
| |-ParmVarDecl 0x56046805f7f0 <line:7417:5, col:17> col:17 filter 'ecs_term_t *'
| `-FullComment 0x560468163070 <line:7391:4, line:7410:62>
| |-ParagraphComment 0x560468162ab0 <line:7391:4, line:7393:68>
| | |-TextComment 0x560468162a30 <line:7391:4, col:37> Text=" Create iterator from poly object."
| | |-TextComment 0x560468162a50 <line:7392:3, col:74> Text=" The provided poly object must have the iterable mixin. If an object is "
| | `-TextComment 0x560468162a70 <line:7393:3, col:68> Text=" provided that does not have the mixin, the function will assert. "
| |-ParagraphComment 0x560468162b50 <line:7395:3, line:7397:55>
| | |-TextComment 0x560468162ad0 <line:7395:3, col:78> Text=" When a filter is provided, an array of two iterators must be passed to the "
| | |-TextComment 0x560468162af0 <line:7396:3, col:79> Text=" function. This allows the mixin implementation to create a chained iterator "
| | `-TextComment 0x560468162b10 <line:7397:3, col:55> Text=" when necessary, which requires two iterator objects."
| |-ParagraphComment 0x560468162bf0 <line:7399:3, line:7401:74>
| | |-TextComment 0x560468162b70 <line:7399:3, col:78> Text=" If a filter is provided, the first element in the array of two iterators is"
| | |-TextComment 0x560468162b90 <line:7400:3, col:79> Text=" the one that should be iterated. The mixin implementation may or may not set"
| | `-TextComment 0x560468162bb0 <line:7401:3, col:74> Text=" the second element, depending on whether an iterator chain is required."
| |-ParagraphComment 0x560468162c90 <line:7403:3, line:7405:71>
| | |-TextComment 0x560468162c10 <line:7403:3, col:78> Text=" Additionally, when a filter is provided the returned iterator will be for a"
| | |-TextComment 0x560468162c30 <line:7404:3, col:75> Text=" single term with the provided filter id. If the iterator is chained, the"
| | `-TextComment 0x560468162c50 <line:7405:3, col:71> Text=" previous iterator in the chain can be accessed through it->chain_it."
| |-ParagraphComment 0x560468162ce0 <line:7407:3>
| | `-TextComment 0x560468162cb0 <col:3> Text=" "
| |-ParamCommandComment 0x560468162d00 <col:4, line:7408:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468162db0 <line:7407:16, line:7408:3>
| | |-TextComment 0x560468162d60 <line:7407:16, col:68> Text=" The world or stage for which to create the iterator."
| | `-TextComment 0x560468162d80 <line:7408:3> Text=" "
| |-ParamCommandComment 0x560468162dd0 <col:4, line:7409:3> [in] implicitly Param="poly" ParamIndex=1
| | `-ParagraphComment 0x560468162e80 <line:7408:15, line:7409:3>
| | |-TextComment 0x560468162e30 <line:7408:15, col:65> Text=" The poly object from which to create the iterator."
| | `-TextComment 0x560468162e50 <line:7409:3> Text=" "
| |-ParamCommandComment 0x560468162ea0 <col:4, line:7410:3> [in] implicitly Param="iter" ParamIndex=2
| | `-ParagraphComment 0x560468162f50 <line:7409:15, line:7410:3>
| | |-TextComment 0x560468162f00 <line:7409:15, col:68> Text=" The iterator (out, ecs_iter_t[2] when filter is set)."
| | `-TextComment 0x560468162f20 <line:7410:3> Text=" "
| `-ParamCommandComment 0x560468162f70 <col:4, col:62> [in] implicitly Param="filter" ParamIndex=3
| `-ParagraphComment 0x560468163000 <col:17, col:62>
| `-TextComment 0x560468162fd0 <col:17, col:62> Text=" Optional term used for filtering the results."
|-FunctionDecl 0x560468060a58 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:7434:19> line:7433:6 ecs_iter_next 'bool (ecs_iter_t *)'
| |-ParmVarDecl 0x5604680609c8 <line:7434:5, col:17> col:17 it 'ecs_iter_t *'
| `-FullComment 0x560468163440 <line:7419:4, line:7430:59>
| |-ParagraphComment 0x5604681631b0 <line:7419:4, line:7423:11>
| | |-TextComment 0x5604681630e0 <line:7419:4, col:26> Text=" Progress any iterator."
| | |-TextComment 0x560468163100 <line:7420:3, col:77> Text=" This operation is useful in combination with iterators for which it is not"
| | |-TextComment 0x560468163120 <line:7421:3, col:78> Text=" known what created them. Example use cases are functions that should accept"
| | |-TextComment 0x560468163140 <line:7422:3, col:76> Text=" any kind of iterator (such as serializers) or iterators created from poly"
| | `-TextComment 0x560468163160 <line:7423:3, col:11> Text=" objects."
| |-ParagraphComment 0x560468163250 <line:7425:3, line:7427:37>
| | |-TextComment 0x5604681631d0 <line:7425:3, col:78> Text=" This operation is slightly slower than using a type-specific iterator (e.g."
| | |-TextComment 0x5604681631f0 <line:7426:3, col:78> Text=" ecs_filter_next, ecs_query_next) as it has to call a function pointer which"
| | `-TextComment 0x560468163210 <line:7427:3, col:37> Text=" introduces a level of indirection."
| |-ParagraphComment 0x5604681632a0 <line:7429:3>
| | `-TextComment 0x560468163270 <col:3> Text=" "
| |-ParamCommandComment 0x5604681632c0 <col:4, line:7430:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468163370 <line:7429:13, line:7430:3>
| | |-TextComment 0x560468163320 <line:7429:13, col:26> Text=" The iterator."
| | `-TextComment 0x560468163340 <line:7430:3> Text=" "
| `-BlockCommandComment 0x560468163390 <col:4, col:59> Name="return"
| `-ParagraphComment 0x5604681633f0 <col:11, col:59>
| `-TextComment 0x5604681633c0 <col:11, col:59> Text=" True if iterator has more results, false if not."
|-FunctionDecl 0x560468060bc8 <line:7446:1, line:7447:19> line:7446:6 ecs_iter_fini 'void (ecs_iter_t *)'
| |-ParmVarDecl 0x560468060b38 <line:7447:5, col:17> col:17 it 'ecs_iter_t *'
| `-FullComment 0x5604681636e0 <line:7436:4, line:7443:26>
| |-ParagraphComment 0x560468163500 <line:7436:4, line:7437:71>
| | |-TextComment 0x5604681634b0 <line:7436:4, col:31> Text=" Cleanup iterator resources."
| | `-TextComment 0x5604681634d0 <line:7437:3, col:71> Text=" This operation cleans up any resources associated with the iterator."
| |-ParagraphComment 0x5604681635a0 <line:7439:3, line:7441:55>
| | |-TextComment 0x560468163520 <line:7439:3, col:76> Text=" This operation should only be used when an iterator is not iterated until"
| | |-TextComment 0x560468163540 <line:7440:3, col:77> Text=" completion (next has not yet returned false). When an iterator is iterated"
| | `-TextComment 0x560468163560 <line:7441:3, col:55> Text=" until completion, resources are automatically freed."
| |-ParagraphComment 0x5604681635f0 <line:7443:3>
| | `-TextComment 0x5604681635c0 <col:3> Text=" "
| `-ParamCommandComment 0x560468163610 <col:4, col:26> [in] implicitly Param="it" ParamIndex=0
| `-ParagraphComment 0x5604681636a0 <col:13, col:26>
| `-TextComment 0x560468163670 <col:13, col:26> Text=" The iterator."
|-FunctionDecl 0x560468060d98 <line:7461:1, line:7462:19> line:7461:9 ecs_iter_count 'int32_t (ecs_iter_t *)'
| |-ParmVarDecl 0x560468060ca8 <line:7462:5, col:17> col:17 it 'ecs_iter_t *'
| `-FullComment 0x560468163a50 <line:7449:4, line:7458:59>
| |-ParagraphComment 0x5604681637f0 <line:7449:4, line:7452:40>
| | |-TextComment 0x560468163750 <line:7449:4, col:46> Text=" Count number of matched entities in query."
| | |-TextComment 0x560468163770 <line:7450:3, col:80> Text=" This operation returns the number of matched entities. If a query contains no"
| | |-TextComment 0x560468163790 <line:7451:3, col:76> Text=" matched entities but still yields results (e.g. it has no terms with This"
| | `-TextComment 0x5604681637b0 <line:7452:3, col:40> Text=" sources) the operation will return 0."
| |-ParagraphComment 0x560468163860 <line:7454:3, line:7455:44>
| | |-TextComment 0x560468163810 <line:7454:3, col:74> Text=" To determine the number of matched entities, the operation iterates the"
| | `-TextComment 0x560468163830 <line:7455:3, col:44> Text=" iterator until it yields no more results."
| |-ParagraphComment 0x5604681638b0 <line:7457:3>
| | `-TextComment 0x560468163880 <col:3> Text=" "
| |-ParamCommandComment 0x5604681638d0 <col:4, line:7458:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468163980 <line:7457:13, line:7458:3>
| | |-TextComment 0x560468163930 <line:7457:13, col:26> Text=" The iterator."
| | `-TextComment 0x560468163950 <line:7458:3> Text=" "
| `-BlockCommandComment 0x5604681639a0 <col:4, col:59> Name="return"
| `-ParagraphComment 0x560468163a00 <col:11, col:59>
| `-TextComment 0x5604681639d0 <col:11, col:59> Text=" True if iterator has more results, false if not."
|-FunctionDecl 0x560468060f08 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:7478:19> line:7477:6 ecs_iter_is_true 'bool (ecs_iter_t *)'
| |-ParmVarDecl 0x560468060e78 <line:7478:5, col:17> col:17 it 'ecs_iter_t *'
| `-FullComment 0x560468163df0 <line:7464:4, line:7474:60>
| |-ParagraphComment 0x560468163b60 <line:7464:4, line:7467:16>
| | |-TextComment 0x560468163ac0 <line:7464:4, col:29> Text=" Test if iterator is true."
| | |-TextComment 0x560468163ae0 <line:7465:3, col:79> Text=" This operation will return true if the iterator returns at least one result."
| | |-TextComment 0x560468163b00 <line:7466:3, col:77> Text=" This is especially useful in combination with fact-checking rules (see the"
| | `-TextComment 0x560468163b20 <line:7467:3, col:16> Text=" rules addon)."
| |-ParagraphComment 0x560468163c00 <line:7469:3, line:7471:51>
| | |-TextComment 0x560468163b80 <line:7469:3, col:79> Text=" The operation requires a valid iterator. After the operation is invoked, the"
| | |-TextComment 0x560468163ba0 <line:7470:3, col:79> Text=" application should no longer invoke next on the iterator and should treat it"
| | `-TextComment 0x560468163bc0 <line:7471:3, col:51> Text=" as if the iterator is iterated until completion."
| |-ParagraphComment 0x560468163c50 <line:7473:3>
| | `-TextComment 0x560468163c20 <col:3> Text=" "
| |-ParamCommandComment 0x560468163c70 <col:4, line:7474:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468163d20 <line:7473:13, line:7474:3>
| | |-TextComment 0x560468163cd0 <line:7473:13, col:26> Text=" The iterator."
| | `-TextComment 0x560468163cf0 <line:7474:3> Text=" "
| `-BlockCommandComment 0x560468163d40 <col:4, col:60> Name="return"
| `-ParagraphComment 0x560468163da0 <col:11, col:60>
| `-TextComment 0x560468163d70 <col:11, col:60> Text=" true if the iterator returns at least one result."
|-FunctionDecl 0x5604680610d8 <line:7488:1, line:7489:19> line:7488:14 ecs_iter_first 'ecs_entity_t (ecs_iter_t *)'
| |-ParmVarDecl 0x560468060fe8 <line:7489:5, col:17> col:17 it 'ecs_iter_t *'
| `-FullComment 0x5604681640c0 <line:7480:4, line:7485:71>
| |-ParagraphComment 0x560468163ee0 <line:7480:4, line:7482:34>
| | |-TextComment 0x560468163e60 <line:7480:4, col:44> Text=" Get first matching entity from iterator."
| | |-TextComment 0x560468163e80 <line:7481:3, col:78> Text=" After this operation the application should treat the iterator as if it has"
| | `-TextComment 0x560468163ea0 <line:7482:3, col:34> Text=" been iterated until completion."
| |-ParagraphComment 0x560468163f30 <line:7484:3>
| | `-TextComment 0x560468163f00 <col:3> Text=" "
| |-ParamCommandComment 0x560468163f50 <col:4, line:7485:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468164000 <line:7484:13, line:7485:3>
| | |-TextComment 0x560468163fb0 <line:7484:13, col:26> Text=" The iterator."
| | `-TextComment 0x560468163fd0 <line:7485:3> Text=" "
| `-BlockCommandComment 0x560468164020 <col:4, col:71> Name="return"
| `-ParagraphComment 0x560468164080 <col:11, col:71>
| `-TextComment 0x560468164050 <col:11, col:71> Text=" The first matching entity, or 0 if no entities were matched."
|-FunctionDecl 0x5604680613c8 <line:7525:1, line:7528:24> line:7525:6 ecs_iter_set_var 'void (ecs_iter_t *, int32_t, ecs_entity_t)'
| |-ParmVarDecl 0x5604680611b8 <line:7526:5, col:17> col:17 it 'ecs_iter_t *'
| |-ParmVarDecl 0x560468061230 <line:7527:5, col:13> col:13 var_id 'int32_t':'int'
| |-ParmVarDecl 0x5604680612a8 <line:7528:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x5604681649f0 <line:7491:4, line:7522:43>
| |-ParagraphComment 0x5604681641d0 <line:7491:4, line:7494:62>
| | |-TextComment 0x560468164130 <line:7491:4, col:36> Text=" Set value for iterator variable."
| | |-TextComment 0x560468164150 <line:7492:3, col:77> Text=" This constrains the iterator to return only results for which the variable"
| | |-TextComment 0x560468164170 <line:7493:3, col:70> Text=" equals the specified value. The default value for all variables is "
| | `-TextComment 0x560468164190 <line:7494:3, col:62> Text=" EcsWildcard, which means the variable can assume any value."
| |-ParagraphComment 0x560468164220 <line:7496:3, col:11>
| | `-TextComment 0x5604681641f0 <col:3, col:11> Text=" Example:"
| |-ParagraphComment 0x560468164390 <line:7498:3, line:7503:6>
| | |-TextComment 0x560468164240 <line:7498:3, col:33> Text=" // Rule that matches (Eats, *)"
| | |-TextComment 0x560468164260 <line:7499:3, col:40> Text=" ecs_rule_t *r = ecs_rule_init(world, "
| | |-TextComment 0x560468164280 <col:41> Text="&"
| | |-TextComment 0x5604681642a0 <col:42, col:61> Text="(ecs_filter_desc_t){"
| | |-TextComment 0x5604681642c0 <line:7500:3, col:15> Text=" .terms = {"
| | |-TextComment 0x5604681642e0 <line:7501:3, col:51> Text=" { .first.id = Eats, .second.name = "_Food" }"
| | |-TextComment 0x560468164300 <line:7502:3, col:6> Text=" }"
| | `-TextComment 0x560468164320 <line:7503:3, col:6> Text=" });"
| |-ParagraphComment 0x5604681643e0 <line:7505:3, col:47>
| | `-TextComment 0x5604681643b0 <col:3, col:47> Text=" int food_var = ecs_rule_find_var(r, "Food");"
| |-ParagraphComment 0x5604681644d0 <line:7507:3, line:7509:43>
| | |-TextComment 0x560468164400 <line:7507:3, col:63> Text=" // Set Food to Apples, so we're only matching (Eats, Apples)"
| | |-TextComment 0x560468164420 <line:7508:3, col:43> Text=" ecs_iter_t it = ecs_rule_iter(world, r);"
| | |-TextComment 0x560468164440 <line:7509:3, col:20> Text=" ecs_iter_set_var("
| | |-TextComment 0x560468164460 <col:21, col:23> Text="&it"
| | `-TextComment 0x560468164480 <col:24, col:43> Text=", food_var, Apples);"
| |-ParagraphComment 0x560468164660 <line:7511:3, line:7515:4>
| | |-TextComment 0x5604681644f0 <line:7511:3, col:24> Text=" while (ecs_rule_next("
| | |-TextComment 0x560468164510 <col:25, col:27> Text="&it"
| | |-TextComment 0x560468164530 <col:28, col:31> Text=")) {"
| | |-TextComment 0x560468164550 <line:7512:3, col:23> Text=" for (int i = 0; i "
| | |-TextComment 0x560468164570 <col:24> Text="<"
| | |-TextComment 0x560468164590 <col:25, col:42> Text=" it.count; i ++) {"
| | |-TextComment 0x5604681645b0 <line:7513:3, col:26> Text=" // iterate as usual"
| | |-TextComment 0x5604681645d0 <line:7514:3, col:6> Text=" }"
| | `-TextComment 0x5604681645f0 <line:7515:3, col:4> Text=" }"
| |-ParagraphComment 0x5604681646d0 <line:7517:3, line:7518:22>
| | |-TextComment 0x560468164680 <line:7517:3, col:78> Text=" The variable must be initialized after creating the iterator and before the"
| | `-TextComment 0x5604681646a0 <line:7518:3, col:22> Text=" first call to next."
| |-ParagraphComment 0x560468164720 <line:7520:3>
| | `-TextComment 0x5604681646f0 <col:3> Text=" "
| |-ParamCommandComment 0x560468164740 <col:4, line:7521:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x5604681647f0 <line:7520:13, line:7521:3>
| | |-TextComment 0x5604681647a0 <line:7520:13, col:26> Text=" The iterator."
| | `-TextComment 0x5604681647c0 <line:7521:3> Text=" "
| |-ParamCommandComment 0x560468164810 <col:4, line:7522:3> [in] implicitly Param="var_id" ParamIndex=1
| | `-ParagraphComment 0x5604681648c0 <line:7521:17, line:7522:3>
| | |-TextComment 0x560468164870 <line:7521:17, col:36> Text=" The variable index."
| | `-TextComment 0x560468164890 <line:7522:3> Text=" "
| `-ParamCommandComment 0x5604681648e0 <col:4, col:43> [in] implicitly Param="entity" ParamIndex=2
| `-ParagraphComment 0x560468164970 <col:17, col:43>
| `-TextComment 0x560468164940 <col:17, col:43> Text=" The entity variable value."
|-FunctionDecl 0x5604680616c8 <line:7538:1, line:7541:29> line:7538:6 ecs_iter_set_var_as_table 'void (ecs_iter_t *, int32_t, const ecs_table_t *)'
| |-ParmVarDecl 0x5604680614b8 <line:7539:5, col:17> col:17 it 'ecs_iter_t *'
| |-ParmVarDecl 0x560468061530 <line:7540:5, col:13> col:13 var_id 'int32_t':'int'
| |-ParmVarDecl 0x5604680615a8 <line:7541:5, col:24> col:24 table 'const ecs_table_t *'
| `-FullComment 0x560468164da0 <line:7530:4, line:7535:41>
| |-ParagraphComment 0x560468164ab0 <line:7530:4, line:7531:59>
| | |-TextComment 0x560468164a60 <line:7530:4, col:46> Text=" Same as ecs_iter_set_var, but for a table."
| | `-TextComment 0x560468164a80 <line:7531:3, col:59> Text=" This constrains the variable to all entities in a table."
| |-ParagraphComment 0x560468164b00 <line:7533:3>
| | `-TextComment 0x560468164ad0 <col:3> Text=" "
| |-ParamCommandComment 0x560468164b20 <col:4, line:7534:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468164bd0 <line:7533:13, line:7534:3>
| | |-TextComment 0x560468164b80 <line:7533:13, col:26> Text=" The iterator."
| | `-TextComment 0x560468164ba0 <line:7534:3> Text=" "
| |-ParamCommandComment 0x560468164bf0 <col:4, line:7535:3> [in] implicitly Param="var_id" ParamIndex=1
| | `-ParagraphComment 0x560468164ca0 <line:7534:17, line:7535:3>
| | |-TextComment 0x560468164c50 <line:7534:17, col:36> Text=" The variable index."
| | `-TextComment 0x560468164c70 <line:7535:3> Text=" "
| `-ParamCommandComment 0x560468164cc0 <col:4, col:41> [in] implicitly Param="table" ParamIndex=2
| `-ParagraphComment 0x560468164d50 <col:16, col:41>
| `-TextComment 0x560468164d20 <col:16, col:41> Text=" The table variable value."
|-FunctionDecl 0x560468061a38 <line:7551:1, line:7554:35> line:7551:6 ecs_iter_set_var_as_range 'void (ecs_iter_t *, int32_t, const ecs_table_range_t *)'
| |-ParmVarDecl 0x5604680617b8 <line:7552:5, col:17> col:17 it 'ecs_iter_t *'
| |-ParmVarDecl 0x560468061830 <line:7553:5, col:13> col:13 var_id 'int32_t':'int'
| |-ParmVarDecl 0x560468061908 <line:7554:5, col:30> col:30 range 'const ecs_table_range_t *'
| `-FullComment 0x560468165150 <line:7543:4, line:7548:41>
| |-ParagraphComment 0x560468164e60 <line:7543:4, line:7544:66>
| | |-TextComment 0x560468164e10 <line:7543:4, col:57> Text=" Same as ecs_iter_set_var, but for a range of entities"
| | `-TextComment 0x560468164e30 <line:7544:3, col:66> Text=" This constrains the variable to a range of entities in a table."
| |-ParagraphComment 0x560468164eb0 <line:7546:3>
| | `-TextComment 0x560468164e80 <col:3> Text=" "
| |-ParamCommandComment 0x560468164ed0 <col:4, line:7547:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468164f80 <line:7546:13, line:7547:3>
| | |-TextComment 0x560468164f30 <line:7546:13, col:26> Text=" The iterator."
| | `-TextComment 0x560468164f50 <line:7547:3> Text=" "
| |-ParamCommandComment 0x560468164fa0 <col:4, line:7548:3> [in] implicitly Param="var_id" ParamIndex=1
| | `-ParagraphComment 0x560468165050 <line:7547:17, line:7548:3>
| | |-TextComment 0x560468165000 <line:7547:17, col:36> Text=" The variable index."
| | `-TextComment 0x560468165020 <line:7548:3> Text=" "
| `-ParamCommandComment 0x560468165070 <col:4, col:41> [in] implicitly Param="range" ParamIndex=2
| `-ParagraphComment 0x560468165100 <col:16, col:41>
| `-TextComment 0x5604681650d0 <col:16, col:41> Text=" The range variable value."
|-FunctionDecl 0x560468061cb8 <line:7568:1, line:7570:19> line:7568:14 ecs_iter_get_var 'ecs_entity_t (ecs_iter_t *, int32_t)'
| |-ParmVarDecl 0x560468061b28 <line:7569:5, col:17> col:17 it 'ecs_iter_t *'
| |-ParmVarDecl 0x560468061ba0 <line:7570:5, col:13> col:13 var_id 'int32_t':'int'
| `-FullComment 0x560468165500 <line:7556:4, line:7565:36>
| |-ParagraphComment 0x560468165240 <line:7556:4, line:7558:40>
| | |-TextComment 0x5604681651c0 <line:7556:4, col:45> Text=" Get value of iterator variable as entity."
| | |-TextComment 0x5604681651e0 <line:7557:3, col:78> Text=" A variable can be interpreted as entity if it is set to an entity, or if it"
| | `-TextComment 0x560468165200 <line:7558:3, col:40> Text=" is set to a table range with count 1."
| |-ParagraphComment 0x5604681652e0 <line:7560:3, line:7562:42>
| | |-TextComment 0x560468165260 <line:7560:3, col:76> Text=" This operation can only be invoked on valid iterators. The variable index"
| | |-TextComment 0x560468165280 <line:7561:3, col:78> Text=" must be smaller than the total number of variables provided by the iterator"
| | `-TextComment 0x5604681652a0 <line:7562:3, col:42> Text=" (as set in ecs_iter_t::variable_count)."
| |-ParagraphComment 0x560468165330 <line:7564:3>
| | `-TextComment 0x560468165300 <col:3> Text=" "
| |-ParamCommandComment 0x560468165350 <col:4, line:7565:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468165400 <line:7564:13, line:7565:3>
| | |-TextComment 0x5604681653b0 <line:7564:13, col:26> Text=" The iterator."
| | `-TextComment 0x5604681653d0 <line:7565:3> Text=" "
| `-ParamCommandComment 0x560468165420 <col:4, col:36> [in] implicitly Param="var_id" ParamIndex=1
| `-ParagraphComment 0x5604681654b0 <col:17, col:36>
| `-TextComment 0x560468165480 <col:17, col:36> Text=" The variable index."
|-FunctionDecl 0x560468061f38 <line:7585:1, line:7587:19> line:7585:14 ecs_iter_get_var_as_table 'ecs_table_t *(ecs_iter_t *, int32_t)'
| |-ParmVarDecl 0x560468061da8 <line:7586:5, col:17> col:17 it 'ecs_iter_t *'
| |-ParmVarDecl 0x560468061e20 <line:7587:5, col:13> col:13 var_id 'int32_t':'int'
| `-FullComment 0x5604681658d0 <line:7572:4, line:7582:36>
| |-ParagraphComment 0x560468165610 <line:7572:4, line:7575:35>
| | |-TextComment 0x560468165570 <line:7572:4, col:44> Text=" Get value of iterator variable as table."
| | |-TextComment 0x560468165590 <line:7573:3, col:74> Text=" A variable can be interpreted as table if it is set as table range with"
| | |-TextComment 0x5604681655b0 <line:7574:3, col:74> Text=" both offset and count set to 0, or if offset is 0 and count matches the"
| | `-TextComment 0x5604681655d0 <line:7575:3, col:35> Text=" number of elements in the table."
| |-ParagraphComment 0x5604681656b0 <line:7577:3, line:7579:42>
| | |-TextComment 0x560468165630 <line:7577:3, col:76> Text=" This operation can only be invoked on valid iterators. The variable index"
| | |-TextComment 0x560468165650 <line:7578:3, col:78> Text=" must be smaller than the total number of variables provided by the iterator"
| | `-TextComment 0x560468165670 <line:7579:3, col:42> Text=" (as set in ecs_iter_t::variable_count)."
| |-ParagraphComment 0x560468165700 <line:7581:3>
| | `-TextComment 0x5604681656d0 <col:3> Text=" "
| |-ParamCommandComment 0x560468165720 <col:4, line:7582:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x5604681657d0 <line:7581:13, line:7582:3>
| | |-TextComment 0x560468165780 <line:7581:13, col:26> Text=" The iterator."
| | `-TextComment 0x5604681657a0 <line:7582:3> Text=" "
| `-ParamCommandComment 0x5604681657f0 <col:4, col:36> [in] implicitly Param="var_id" ParamIndex=1
| `-ParagraphComment 0x560468165880 <col:17, col:36>
| `-TextComment 0x560468165850 <col:17, col:36> Text=" The variable index."
|-FunctionDecl 0x5604680621b8 <line:7602:1, line:7604:19> line:7602:19 ecs_iter_get_var_as_range 'ecs_table_range_t (ecs_iter_t *, int32_t)'
| |-ParmVarDecl 0x560468062028 <line:7603:5, col:17> col:17 it 'ecs_iter_t *'
| |-ParmVarDecl 0x5604680620a0 <line:7604:5, col:13> col:13 var_id 'int32_t':'int'
| `-FullComment 0x560468165ca0 <line:7589:4, line:7599:36>
| |-ParagraphComment 0x5604681659e0 <line:7589:4, line:7592:51>
| | |-TextComment 0x560468165940 <line:7589:4, col:50> Text=" Get value of iterator variable as table range."
| | |-TextComment 0x560468165960 <line:7590:3, col:79> Text=" A value can be interpreted as table range if it is set as table range, or if"
| | |-TextComment 0x560468165980 <line:7591:3, col:78> Text=" it is set to an entity with a non-empty type (the entity must have at least"
| | `-TextComment 0x5604681659a0 <line:7592:3, col:51> Text=" one component, tag or relationship in its type)."
| |-ParagraphComment 0x560468165a80 <line:7594:3, line:7596:42>
| | |-TextComment 0x560468165a00 <line:7594:3, col:76> Text=" This operation can only be invoked on valid iterators. The variable index"
| | |-TextComment 0x560468165a20 <line:7595:3, col:78> Text=" must be smaller than the total number of variables provided by the iterator"
| | `-TextComment 0x560468165a40 <line:7596:3, col:42> Text=" (as set in ecs_iter_t::variable_count)."
| |-ParagraphComment 0x560468165ad0 <line:7598:3>
| | `-TextComment 0x560468165aa0 <col:3> Text=" "
| |-ParamCommandComment 0x560468165af0 <col:4, line:7599:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468165ba0 <line:7598:13, line:7599:3>
| | |-TextComment 0x560468165b50 <line:7598:13, col:26> Text=" The iterator."
| | `-TextComment 0x560468165b70 <line:7599:3> Text=" "
| `-ParamCommandComment 0x560468165bc0 <col:4, col:36> [in] implicitly Param="var_id" ParamIndex=1
| `-ParagraphComment 0x560468165c50 <col:17, col:36>
| `-TextComment 0x560468165c20 <col:17, col:36> Text=" The variable index."
|-FunctionDecl 0x560468062438 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:7621:19> line:7619:6 ecs_iter_var_is_constrained 'bool (ecs_iter_t *, int32_t)'
| |-ParmVarDecl 0x5604680622a8 <line:7620:5, col:17> col:17 it 'ecs_iter_t *'
| |-ParmVarDecl 0x560468062320 <line:7621:5, col:13> col:13 var_id 'int32_t':'int'
| `-FullComment 0x5604681660c0 <line:7607:4, line:7616:68>
| |-ParagraphComment 0x560468165d90 <line:7607:4, line:7609:14>
| | |-TextComment 0x560468165d10 <line:7607:4, col:44> Text=" Returns whether variable is constrained."
| | |-TextComment 0x560468165d30 <line:7608:3, col:80> Text=" This operation returns true for variables set by one of the ecs_iter_set_var*"
| | `-TextComment 0x560468165d50 <line:7609:3, col:14> Text=" operations."
| |-ParagraphComment 0x560468165e00 <line:7611:3, line:7612:18>
| | |-TextComment 0x560468165db0 <line:7611:3, col:78> Text=" A constrained variable is guaranteed not to change values while results are"
| | `-TextComment 0x560468165dd0 <line:7612:3, col:18> Text=" being iterated."
| |-ParagraphComment 0x560468165e50 <line:7614:3>
| | `-TextComment 0x560468165e20 <col:3> Text=" "
| |-ParamCommandComment 0x560468165e70 <col:4, line:7615:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468165f20 <line:7614:13, line:7615:3>
| | |-TextComment 0x560468165ed0 <line:7614:13, col:26> Text=" The iterator."
| | `-TextComment 0x560468165ef0 <line:7615:3> Text=" "
| |-ParamCommandComment 0x560468165f40 <col:4, line:7616:3> [in] implicitly Param="var_id" ParamIndex=1
| | `-ParagraphComment 0x560468165ff0 <line:7615:17, line:7616:3>
| | |-TextComment 0x560468165fa0 <line:7615:17, col:36> Text=" The variable index."
| | `-TextComment 0x560468165fc0 <line:7616:3> Text=" "
| `-BlockCommandComment 0x560468166010 <col:4, col:68> Name="return"
| `-ParagraphComment 0x560468166070 <col:11, col:68>
| `-TextComment 0x560468166040 <col:11, col:68> Text=" Whether the variable is constrained to a specified value."
|-FunctionDecl 0x560468062738 <line:7639:1, line:7642:18> line:7639:12 ecs_page_iter 'ecs_iter_t (const ecs_iter_t *, int32_t, int32_t)'
| |-ParmVarDecl 0x560468062528 <line:7640:5, col:23> col:23 it 'const ecs_iter_t *'
| |-ParmVarDecl 0x5604680625a0 <line:7641:5, col:13> col:13 offset 'int32_t':'int'
| |-ParmVarDecl 0x560468062618 <line:7642:5, col:13> col:13 limit 'int32_t':'int'
| `-FullComment 0x560468166650 <line:7623:4, line:7636:27>
| |-ParagraphComment 0x5604681661b0 <line:7623:4, line:7625:34>
| | |-TextComment 0x560468166130 <line:7623:4, col:28> Text=" Create a paged iterator."
| | |-TextComment 0x560468166150 <line:7624:3, col:78> Text=" Paged iterators limit the results to those starting from 'offset', and will"
| | `-TextComment 0x560468166170 <line:7625:3, col:34> Text=" return at most 'limit' results."
| |-ParagraphComment 0x560468166200 <line:7627:3, col:52>
| | `-TextComment 0x5604681661d0 <col:3, col:52> Text=" The iterator must be iterated with ecs_page_next."
| |-ParagraphComment 0x5604681662a0 <line:7629:3, line:7631:22>
| | |-TextComment 0x560468166220 <line:7629:3, col:72> Text=" A paged iterator acts as a passthrough for data exposed by the parent"
| | |-TextComment 0x560468166240 <line:7630:3, col:77> Text=" iterator, so that any data provided by the parent will also be provided by"
| | `-TextComment 0x560468166260 <line:7631:3, col:22> Text=" the paged iterator."
| |-ParagraphComment 0x5604681662f0 <line:7633:3>
| | `-TextComment 0x5604681662c0 <col:3> Text=" "
| |-ParamCommandComment 0x560468166310 <col:4, line:7634:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x5604681663d0 <line:7633:13, line:7634:3>
| | |-TextComment 0x560468166380 <line:7633:13, col:33> Text=" The source iterator."
| | `-TextComment 0x5604681663a0 <line:7634:3> Text=" "
| |-ParamCommandComment 0x5604681663f0 <col:4, line:7635:3> [in] implicitly Param="offset" ParamIndex=1
| | `-ParagraphComment 0x5604681664a0 <line:7634:17, line:7635:3>
| | |-TextComment 0x560468166450 <line:7634:17, col:48> Text=" The number of entities to skip."
| | `-TextComment 0x560468166470 <line:7635:3> Text=" "
| |-ParamCommandComment 0x5604681664c0 <col:4, line:7636:3> [in] implicitly Param="limit" ParamIndex=2
| | `-ParagraphComment 0x560468166570 <line:7635:16, line:7636:3>
| | |-TextComment 0x560468166520 <line:7635:16, col:58> Text=" The maximum number of entities to iterate."
| | `-TextComment 0x560468166540 <line:7636:3> Text=" "
| `-BlockCommandComment 0x560468166590 <col:4, col:27> Name="return"
| `-ParagraphComment 0x5604681665f0 <col:11, col:27>
| `-TextComment 0x5604681665c0 <col:11, col:27> Text=" A page iterator."
|-FunctionDecl 0x5604680628b8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:7652:19> line:7651:6 ecs_page_next 'bool (ecs_iter_t *)'
| |-ParmVarDecl 0x560468062828 <line:7652:5, col:17> col:17 it 'ecs_iter_t *'
| `-FullComment 0x5604681668f0 <line:7644:4, line:7648:59>
| |-ParagraphComment 0x560468166710 <line:7644:4, line:7645:51>
| | |-TextComment 0x5604681666c0 <line:7644:4, col:30> Text=" Progress a paged iterator."
| | `-TextComment 0x5604681666e0 <line:7645:3, col:51> Text=" Progresses an iterator created by ecs_page_iter."
| |-ParagraphComment 0x560468166760 <line:7647:3>
| | `-TextComment 0x560468166730 <col:3> Text=" "
| |-ParamCommandComment 0x560468166780 <col:4, line:7648:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468166830 <line:7647:13, line:7648:3>
| | |-TextComment 0x5604681667e0 <line:7647:13, col:26> Text=" The iterator."
| | `-TextComment 0x560468166800 <line:7648:3> Text=" "
| `-BlockCommandComment 0x560468166850 <col:4, col:59> Name="return"
| `-ParagraphComment 0x5604681668b0 <col:11, col:59>
| `-TextComment 0x560468166880 <col:11, col:59> Text=" true if iterator has more results, false if not."
|-FunctionDecl 0x560468062b58 <line:7675:1, line:7678:18> line:7675:12 ecs_worker_iter 'ecs_iter_t (const ecs_iter_t *, int32_t, int32_t)'
| |-ParmVarDecl 0x5604680629c8 <line:7676:5, col:23> col:23 it 'const ecs_iter_t *'
| |-ParmVarDecl 0x560468062a40 <line:7677:5, col:13> col:13 index 'int32_t':'int'
| |-ParmVarDecl 0x560468062ab8 <line:7678:5, col:13> col:13 count 'int32_t':'int'
| `-FullComment 0x560468166f40 <line:7654:4, line:7672:29>
| |-ParagraphComment 0x560468166a00 <line:7654:4, line:7657:49>
| | |-TextComment 0x560468166960 <line:7654:4, col:29> Text=" Create a worker iterator."
| | |-TextComment 0x560468166980 <line:7655:3, col:81> Text=" Worker iterators can be used to equally divide the number of matched entities "
| | |-TextComment 0x5604681669a0 <line:7656:3, col:77> Text=" across N resources (usually threads). Each resource will process the total"
| | `-TextComment 0x5604681669c0 <line:7657:3, col:49> Text=" number of matched entities divided by 'count'."
| |-ParagraphComment 0x560468166aa0 <line:7659:3, line:7661:44>
| | |-TextComment 0x560468166a20 <line:7659:3, col:74> Text=" Entities are distributed across resources such that the distribution is"
| | |-TextComment 0x560468166a40 <line:7660:3, col:79> Text=" stable between queries. Two queries that match the same table are guaranteed"
| | `-TextComment 0x560468166a60 <line:7661:3, col:44> Text=" to match the same entities in that table."
| |-ParagraphComment 0x560468166af0 <line:7663:3, col:54>
| | `-TextComment 0x560468166ac0 <col:3, col:54> Text=" The iterator must be iterated with ecs_worker_next."
| |-ParagraphComment 0x560468166b90 <line:7665:3, line:7667:23>
| | |-TextComment 0x560468166b10 <line:7665:3, col:73> Text=" A worker iterator acts as a passthrough for data exposed by the parent"
| | |-TextComment 0x560468166b30 <line:7666:3, col:77> Text=" iterator, so that any data provided by the parent will also be provided by"
| | `-TextComment 0x560468166b50 <line:7667:3, col:23> Text=" the worker iterator."
| |-ParagraphComment 0x560468166be0 <line:7669:3>
| | `-TextComment 0x560468166bb0 <col:3> Text=" "
| |-ParamCommandComment 0x560468166c00 <col:4, line:7670:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468166cb0 <line:7669:13, line:7670:3>
| | |-TextComment 0x560468166c60 <line:7669:13, col:33> Text=" The source iterator."
| | `-TextComment 0x560468166c80 <line:7670:3> Text=" "
| |-ParamCommandComment 0x560468166cd0 <col:4, line:7671:3> [in] implicitly Param="index" ParamIndex=1
| | `-ParagraphComment 0x560468166d80 <line:7670:16, line:7671:3>
| | |-TextComment 0x560468166d30 <line:7670:16, col:50> Text=" The index of the current resource."
| | `-TextComment 0x560468166d50 <line:7671:3> Text=" "
| |-ParamCommandComment 0x560468166da0 <col:4, line:7672:3> [in] implicitly Param="count" ParamIndex=2
| | `-ParagraphComment 0x560468166e50 <line:7671:16, line:7672:3>
| | |-TextComment 0x560468166e00 <line:7671:16, col:73> Text=" The total number of resources to divide entities between."
| | `-TextComment 0x560468166e20 <line:7672:3> Text=" "
| `-BlockCommandComment 0x560468166e70 <col:4, col:29> Name="return"
| `-ParagraphComment 0x560468166ed0 <col:11, col:29>
| `-TextComment 0x560468166ea0 <col:11, col:29> Text=" A worker iterator."
|-FunctionDecl 0x560468062cd8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:7688:19> line:7687:6 ecs_worker_next 'bool (ecs_iter_t *)'
| |-ParmVarDecl 0x560468062c48 <line:7688:5, col:17> col:17 it 'ecs_iter_t *'
| `-FullComment 0x5604681671e0 <line:7680:4, line:7684:59>
| |-ParagraphComment 0x560468167000 <line:7680:4, line:7681:53>
| | |-TextComment 0x560468166fb0 <line:7680:4, col:31> Text=" Progress a worker iterator."
| | `-TextComment 0x560468166fd0 <line:7681:3, col:53> Text=" Progresses an iterator created by ecs_worker_iter."
| |-ParagraphComment 0x560468167050 <line:7683:3>
| | `-TextComment 0x560468167020 <col:3> Text=" "
| |-ParamCommandComment 0x560468167070 <col:4, line:7684:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468167120 <line:7683:13, line:7684:3>
| | |-TextComment 0x5604681670d0 <line:7683:13, col:26> Text=" The iterator."
| | `-TextComment 0x5604681670f0 <line:7684:3> Text=" "
| `-BlockCommandComment 0x560468167140 <col:4, col:59> Name="return"
| `-ParagraphComment 0x5604681671a0 <col:11, col:59>
| `-TextComment 0x560468167170 <col:11, col:59> Text=" true if iterator has more results, false if not."
|-FunctionDecl 0x560468062fd0 <line:7714:1, line:7717:18> line:7714:7 ecs_field_w_size 'void *(const ecs_iter_t *, size_t, int32_t)'
| |-ParmVarDecl 0x560468062db8 <line:7715:5, col:23> col:23 it 'const ecs_iter_t *'
| |-ParmVarDecl 0x560468062e30 <line:7716:5, col:12> col:12 size 'size_t':'unsigned long'
| |-ParmVarDecl 0x560468062ea8 <line:7717:5, col:13> col:13 index 'int32_t':'int'
| `-FullComment 0x5604681678a0 <line:7690:4, line:7711:46>
| |-ParagraphComment 0x5604681672f0 <line:7690:4, line:7693:32>
| | |-TextComment 0x560468167250 <line:7690:4, col:34> Text=" Obtain data for a query field."
| | |-TextComment 0x560468167270 <line:7691:3, col:77> Text=" This operation retrieves a pointer to an array of data that belongs to the"
| | |-TextComment 0x560468167290 <line:7692:3, col:80> Text=" term in the query. The index refers to the location of the term in the query,"
| | `-TextComment 0x5604681672b0 <line:7693:3, col:32> Text=" and starts counting from one."
| |-ParagraphComment 0x560468167360 <line:7695:3, line:7696:51>
| | |-TextComment 0x560468167310 <line:7695:3, col:77> Text=" For example, the query "Position, Velocity" will return the Position array"
| | `-TextComment 0x560468167330 <line:7696:3, col:51> Text=" for index 1, and the Velocity array for index 2."
| |-ParagraphComment 0x560468167450 <line:7698:3, line:7702:55>
| | |-TextComment 0x560468167380 <line:7698:3, col:78> Text=" When the specified field is not owned by the entity this function returns a"
| | |-TextComment 0x5604681673a0 <line:7699:3, col:78> Text=" pointer instead of an array. This happens when the source of a field is not"
| | |-TextComment 0x5604681673c0 <line:7700:3, col:75> Text=" the entity being iterated, such as a shared component (from a prefab), a"
| | |-TextComment 0x5604681673e0 <line:7701:3, col:78> Text=" component from a parent, or another entity. The ecs_field_is_self operation"
| | `-TextComment 0x560468167400 <line:7702:3, col:55> Text=" can be used to test dynamically if a field is owned."
| |-ParagraphComment 0x5604681674f0 <line:7704:3, line:7706:60>
| | |-TextComment 0x560468167470 <line:7704:3, col:76> Text=" The provided size must be either 0 or must match the size of the datatype"
| | |-TextComment 0x560468167490 <line:7705:3, col:79> Text=" of the returned array. If the size does not match, the operation may assert."
| | `-TextComment 0x5604681674b0 <line:7706:3, col:60> Text=" The size can be dynamically obtained with ecs_field_size."
| |-ParagraphComment 0x560468167540 <line:7708:3>
| | `-TextComment 0x560468167510 <col:3> Text=" "
| |-ParamCommandComment 0x560468167560 <col:4, line:7709:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468167610 <line:7708:13, line:7709:3>
| | |-TextComment 0x5604681675c0 <line:7708:13, col:26> Text=" The iterator."
| | `-TextComment 0x5604681675e0 <line:7709:3> Text=" "
| |-ParamCommandComment 0x560468167630 <col:4, line:7710:3> [in] implicitly Param="size" ParamIndex=1
| | `-ParagraphComment 0x5604681676e0 <line:7709:15, line:7710:3>
| | |-TextComment 0x560468167690 <line:7709:15, col:51> Text=" The type size of the requested data."
| | `-TextComment 0x5604681676b0 <line:7710:3> Text=" "
| |-ParamCommandComment 0x560468167700 <col:4, line:7711:3> [in] implicitly Param="index" ParamIndex=2
| | `-ParagraphComment 0x5604681677b0 <line:7710:16, line:7711:3>
| | |-TextComment 0x560468167760 <line:7710:16, col:55> Text=" The index of the field in the iterator."
| | `-TextComment 0x560468167780 <line:7711:3> Text=" "
| `-BlockCommandComment 0x5604681677d0 <col:4, col:46> Name="return"
| `-ParagraphComment 0x560468167830 <col:11, col:46>
| `-TextComment 0x560468167800 <col:11, col:46> Text=" A pointer to the data of the field."
|-FunctionDecl 0x560468063258 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:7730:18> line:7728:6 ecs_field_is_readonly 'bool (const ecs_iter_t *, int32_t)'
| |-ParmVarDecl 0x5604680630c8 <line:7729:5, col:23> col:23 it 'const ecs_iter_t *'
| |-ParmVarDecl 0x560468063140 <line:7730:5, col:13> col:13 index 'int32_t':'int'
| `-FullComment 0x560468167c50 <line:7719:4, line:7725:41>
| |-ParagraphComment 0x560468167990 <line:7719:4, line:7721:68>
| | |-TextComment 0x560468167910 <line:7719:4, col:39> Text=" Test whether the field is readonly."
| | |-TextComment 0x560468167930 <line:7720:3, col:76> Text=" This operation returns whether the field is readonly. Readonly fields are"
| | `-TextComment 0x560468167950 <line:7721:3, col:68> Text=" annotated with [in], or are added as a const type in the C++ API."
| |-ParagraphComment 0x5604681679e0 <line:7723:3>
| | `-TextComment 0x5604681679b0 <col:3> Text=" "
| |-ParamCommandComment 0x560468167a00 <col:4, line:7724:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468167ab0 <line:7723:13, line:7724:3>
| | |-TextComment 0x560468167a60 <line:7723:13, col:26> Text=" The iterator."
| | `-TextComment 0x560468167a80 <line:7724:3> Text=" "
| |-ParamCommandComment 0x560468167ad0 <col:4, line:7725:3> [in] implicitly Param="index" ParamIndex=1
| | `-ParagraphComment 0x560468167b80 <line:7724:16, line:7725:3>
| | |-TextComment 0x560468167b30 <line:7724:16, col:55> Text=" The index of the field in the iterator."
| | `-TextComment 0x560468167b50 <line:7725:3> Text=" "
| `-BlockCommandComment 0x560468167ba0 <col:4, col:41> Name="return"
| `-ParagraphComment 0x560468167c00 <col:11, col:41>
| `-TextComment 0x560468167bd0 <col:11, col:41> Text=" Whether the field is readonly."
|-FunctionDecl 0x560468063458 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:7745:18> line:7743:6 ecs_field_is_writeonly 'bool (const ecs_iter_t *, int32_t)'
| |-ParmVarDecl 0x560468063348 <line:7744:5, col:23> col:23 it 'const ecs_iter_t *'
| |-ParmVarDecl 0x5604680633c0 <line:7745:5, col:13> col:13 index 'int32_t':'int'
| `-FullComment 0x560468168050 <line:7732:4, line:7740:42>
| |-ParagraphComment 0x560468167d40 <line:7732:4, line:7734:24>
| | |-TextComment 0x560468167cc0 <line:7732:4, col:40> Text=" Test whether the field is writeonly."
| | |-TextComment 0x560468167ce0 <line:7733:3, col:80> Text=" This operation returns whether this is a writeonly field. Writeonly terms are"
| | `-TextComment 0x560468167d00 <line:7734:3, col:24> Text=" annotated with [out]."
| |-ParagraphComment 0x560468167d90 <line:7736:3, col:77>
| | `-TextComment 0x560468167d60 <col:3, col:77> Text=" Serializers are not required to serialize the values of a writeonly field."
| |-ParagraphComment 0x560468167de0 <line:7738:3>
| | `-TextComment 0x560468167db0 <col:3> Text=" "
| |-ParamCommandComment 0x560468167e00 <col:4, line:7739:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468167eb0 <line:7738:13, line:7739:3>
| | |-TextComment 0x560468167e60 <line:7738:13, col:26> Text=" The iterator."
| | `-TextComment 0x560468167e80 <line:7739:3> Text=" "
| |-ParamCommandComment 0x560468167ed0 <col:4, line:7740:3> [in] implicitly Param="index" ParamIndex=1
| | `-ParagraphComment 0x560468167f80 <line:7739:16, line:7740:3>
| | |-TextComment 0x560468167f30 <line:7739:16, col:55> Text=" The index of the field in the iterator."
| | `-TextComment 0x560468167f50 <line:7740:3> Text=" "
| `-BlockCommandComment 0x560468167fa0 <col:4, col:42> Name="return"
| `-ParagraphComment 0x560468168000 <col:11, col:42>
| `-TextComment 0x560468167fd0 <col:11, col:42> Text=" Whether the field is writeonly."
|-FunctionDecl 0x560468063658 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:7756:18> line:7754:6 ecs_field_is_set 'bool (const ecs_iter_t *, int32_t)'
| |-ParmVarDecl 0x560468063548 <line:7755:5, col:23> col:23 it 'const ecs_iter_t *'
| |-ParmVarDecl 0x5604680635c0 <line:7756:5, col:13> col:13 index 'int32_t':'int'
| `-FullComment 0x5604681683c0 <line:7747:4, line:7751:36>
| |-ParagraphComment 0x5604681680f0 <line:7747:4, col:30>
| | `-TextComment 0x5604681680c0 <col:4, col:30> Text=" Test whether field is set."
| |-ParagraphComment 0x560468168140 <line:7749:3>
| | `-TextComment 0x560468168110 <col:3> Text=" "
| |-ParamCommandComment 0x560468168160 <col:4, line:7750:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468168210 <line:7749:13, line:7750:3>
| | |-TextComment 0x5604681681c0 <line:7749:13, col:26> Text=" The iterator."
| | `-TextComment 0x5604681681e0 <line:7750:3> Text=" "
| |-ParamCommandComment 0x560468168230 <col:4, line:7751:3> [in] implicitly Param="index" ParamIndex=1
| | `-ParagraphComment 0x5604681682e0 <line:7750:16, line:7751:3>
| | |-TextComment 0x560468168290 <line:7750:16, col:55> Text=" The index of the field in the iterator."
| | `-TextComment 0x5604681682b0 <line:7751:3> Text=" "
| `-BlockCommandComment 0x560468168300 <col:4, col:36> Name="return"
| `-ParagraphComment 0x560468168370 <col:11, col:36>
| `-TextComment 0x560468168330 <col:11, col:36> Text=" Whether the field is set."
|-FunctionDecl 0x5604680638d8 <line:7765:1, line:7767:18> line:7765:10 ecs_field_id 'ecs_id_t (const ecs_iter_t *, int32_t)'
| |-ParmVarDecl 0x560468063748 <line:7766:5, col:23> col:23 it 'const ecs_iter_t *'
| |-ParmVarDecl 0x5604680637c0 <line:7767:5, col:13> col:13 index 'int32_t':'int'
| `-FullComment 0x560468168720 <line:7758:4, line:7762:40>
| |-ParagraphComment 0x560468168460 <line:7758:4, col:32>
| | `-TextComment 0x560468168430 <col:4, col:32> Text=" Return id matched for field."
| |-ParagraphComment 0x5604681684b0 <line:7760:3>
| | `-TextComment 0x560468168480 <col:3> Text=" "
| |-ParamCommandComment 0x5604681684d0 <col:4, line:7761:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468168580 <line:7760:13, line:7761:3>
| | |-TextComment 0x560468168530 <line:7760:13, col:26> Text=" The iterator."
| | `-TextComment 0x560468168550 <line:7761:3> Text=" "
| |-ParamCommandComment 0x5604681685a0 <col:4, line:7762:3> [in] implicitly Param="index" ParamIndex=1
| | `-ParagraphComment 0x560468168650 <line:7761:16, line:7762:3>
| | |-TextComment 0x560468168600 <line:7761:16, col:55> Text=" The index of the field in the iterator."
| | `-TextComment 0x560468168620 <line:7762:3> Text=" "
| `-BlockCommandComment 0x560468168670 <col:4, col:40> Name="return"
| `-ParagraphComment 0x5604681686d0 <col:11, col:40>
| `-TextComment 0x5604681686a0 <col:11, col:40> Text=" The id matched for the field."
|-FunctionDecl 0x560468063b28 <line:7777:1, line:7779:18> line:7777:14 ecs_field_src 'ecs_entity_t (const ecs_iter_t *, int32_t)'
| |-ParmVarDecl 0x5604680639d8 <line:7778:5, col:23> col:23 it 'const ecs_iter_t *'
| |-ParmVarDecl 0x560468063a50 <line:7779:5, col:13> col:13 index 'int32_t':'int'
| `-FullComment 0x560468168aa0 <line:7769:4, line:7774:36>
| |-ParagraphComment 0x5604681687e0 <line:7769:4, line:7770:65>
| | |-TextComment 0x560468168790 <line:7769:4, col:24> Text=" Return field source."
| | `-TextComment 0x5604681687b0 <line:7770:3, col:65> Text=" The field source is the entity on which the field was matched."
| |-ParagraphComment 0x560468168830 <line:7772:3>
| | `-TextComment 0x560468168800 <col:3> Text=" "
| |-ParamCommandComment 0x560468168850 <col:4, line:7773:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468168900 <line:7772:13, line:7773:3>
| | |-TextComment 0x5604681688b0 <line:7772:13, col:26> Text=" The iterator."
| | `-TextComment 0x5604681688d0 <line:7773:3> Text=" "
| |-ParamCommandComment 0x560468168920 <col:4, line:7774:3> [in] implicitly Param="index" ParamIndex=1
| | `-ParagraphComment 0x5604681689d0 <line:7773:16, line:7774:3>
| | |-TextComment 0x560468168980 <line:7773:16, col:55> Text=" The index of the field in the iterator."
| | `-TextComment 0x5604681689a0 <line:7774:3> Text=" "
| `-BlockCommandComment 0x5604681689f0 <col:4, col:36> Name="return"
| `-ParagraphComment 0x560468168a50 <col:11, col:36>
| `-TextComment 0x560468168a20 <col:11, col:36> Text=" The source for the field."
|-FunctionDecl 0x560468063d68 <line:7790:1, line:7792:18> line:7790:8 ecs_field_size 'size_t (const ecs_iter_t *, int32_t)'
| |-ParmVarDecl 0x560468063c18 <line:7791:5, col:23> col:23 it 'const ecs_iter_t *'
| |-ParmVarDecl 0x560468063c90 <line:7792:5, col:13> col:13 index 'int32_t':'int'
| `-FullComment 0x560468168e50 <line:7781:4, line:7787:39>
| |-ParagraphComment 0x560468168b90 <line:7781:4, line:7783:8>
| | |-TextComment 0x560468168b10 <line:7781:4, col:27> Text=" Return field type size."
| | |-TextComment 0x560468168b30 <line:7782:3, col:77> Text=" Return type size of the data returned by field. Returns 0 if field has no "
| | `-TextComment 0x560468168b50 <line:7783:3, col:8> Text=" data."
| |-ParagraphComment 0x560468168be0 <line:7785:3>
| | `-TextComment 0x560468168bb0 <col:3> Text=" "
| |-ParamCommandComment 0x560468168c00 <col:4, line:7786:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468168cb0 <line:7785:13, line:7786:3>
| | |-TextComment 0x560468168c60 <line:7785:13, col:26> Text=" The iterator."
| | `-TextComment 0x560468168c80 <line:7786:3> Text=" "
| |-ParamCommandComment 0x560468168cd0 <col:4, line:7787:3> [in] implicitly Param="index" ParamIndex=1
| | `-ParagraphComment 0x560468168d80 <line:7786:16, line:7787:3>
| | |-TextComment 0x560468168d30 <line:7786:16, col:55> Text=" The index of the field in the iterator."
| | `-TextComment 0x560468168d50 <line:7787:3> Text=" "
| `-BlockCommandComment 0x560468168da0 <col:4, col:39> Name="return"
| `-ParagraphComment 0x560468168e00 <col:11, col:39>
| `-TextComment 0x560468168dd0 <col:11, col:39> Text=" The type size for the field."
|-FunctionDecl 0x560468063f68 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:7810:18> line:7808:6 ecs_field_is_self 'bool (const ecs_iter_t *, int32_t)'
| |-ParmVarDecl 0x560468063e58 <line:7809:5, col:23> col:23 it 'const ecs_iter_t *'
| |-ParmVarDecl 0x560468063ed0 <line:7810:5, col:13> col:13 index 'int32_t':'int'
| `-FullComment 0x5604681692c0 <line:7794:4, line:7805:48>
| |-ParagraphComment 0x560468168f60 <line:7794:4, line:7797:40>
| | |-TextComment 0x560468168ec0 <line:7794:4, col:46> Text=" Test whether the field is matched on self."
| | |-TextComment 0x560468168ee0 <line:7795:3, col:80> Text=" This operation returns whether the field is matched on the currently iterated"
| | |-TextComment 0x560468168f00 <line:7796:3, col:77> Text=" entity. This function will return false when the field is owned by another"
| | `-TextComment 0x560468168f20 <line:7797:3, col:40> Text=" entity, such as a parent or a prefab."
| |-ParagraphComment 0x560468169000 <line:7799:3, line:7801:39>
| | |-TextComment 0x560468168f80 <line:7799:3, col:77> Text=" When this operation returns false, the field must be accessed as a single "
| | |-TextComment 0x560468168fa0 <line:7800:3, col:74> Text=" value instead of an array. Fields for which this operation returns true"
| | `-TextComment 0x560468168fc0 <line:7801:3, col:39> Text=" return arrays with it->count values."
| |-ParagraphComment 0x560468169050 <line:7803:3>
| | `-TextComment 0x560468169020 <col:3> Text=" "
| |-ParamCommandComment 0x560468169070 <col:4, line:7804:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468169120 <line:7803:13, line:7804:3>
| | |-TextComment 0x5604681690d0 <line:7803:13, col:26> Text=" The iterator."
| | `-TextComment 0x5604681690f0 <line:7804:3> Text=" "
| |-ParamCommandComment 0x560468169140 <col:4, line:7805:3> [in] implicitly Param="index" ParamIndex=1
| | `-ParagraphComment 0x5604681691f0 <line:7804:16, line:7805:3>
| | |-TextComment 0x5604681691a0 <line:7804:16, col:55> Text=" The index of the field in the iterator."
| | `-TextComment 0x5604681691c0 <line:7805:3> Text=" "
| `-BlockCommandComment 0x560468169210 <col:4, col:48> Name="return"
| `-ParagraphComment 0x560468169270 <col:11, col:48>
| `-TextComment 0x560468169240 <col:11, col:48> Text=" Whether the field is matched on self."
|-FunctionDecl 0x560468064150 <line:7824:1, line:7825:25> line:7824:7 ecs_iter_str 'char *(const ecs_iter_t *)'
| |-ParmVarDecl 0x560468064058 <line:7825:5, col:23> col:23 it 'const ecs_iter_t *'
| `-FullComment 0x560468169640 <line:7812:4, line:7821:62>
| |-ParagraphComment 0x5604681693b0 <line:7812:4, line:7814:37>
| | |-TextComment 0x560468169330 <line:7812:4, col:31> Text=" Convert iterator to string."
| | |-TextComment 0x560468169350 <line:7813:3, col:78> Text=" Prints the contents of an iterator to a string. Useful for debugging and/or"
| | `-TextComment 0x560468169370 <line:7814:3, col:37> Text=" testing the output of an iterator."
| |-ParagraphComment 0x560468169450 <line:7816:3, line:7818:36>
| | |-TextComment 0x5604681693d0 <line:7816:3, col:74> Text=" The function only converts the currently iterated data to a string. To "
| | |-TextComment 0x5604681693f0 <line:7817:3, col:79> Text=" convert all data, the application has to manually call the next function and"
| | `-TextComment 0x560468169410 <line:7818:3, col:36> Text=" call ecs_iter_str on each result."
| |-ParagraphComment 0x5604681694a0 <line:7820:3>
| | `-TextComment 0x560468169470 <col:3> Text=" "
| |-ParamCommandComment 0x5604681694c0 <col:4, line:7821:3> [in] implicitly Param="it" ParamIndex=0
| | `-ParagraphComment 0x560468169570 <line:7820:13, line:7821:3>
| | |-TextComment 0x560468169520 <line:7820:13, col:26> Text=" The iterator."
| | `-TextComment 0x560468169540 <line:7821:3> Text=" "
| `-BlockCommandComment 0x560468169590 <col:4, col:62> Name="return"
| `-ParagraphComment 0x5604681695f0 <col:11, col:62>
| `-TextComment 0x5604681695c0 <col:11, col:62> Text=" A string representing the contents of the iterator."
|-FunctionDecl 0x560468064388 <line:7842:1, line:7843:29> line:7842:19 ecs_table_get_type 'const ecs_type_t *(const ecs_table_t *)'
| |-ParmVarDecl 0x560468064298 <line:7843:5, col:24> col:24 table 'const ecs_table_t *'
| `-FullComment 0x5604681698c0 <line:7836:4, line:7839:33>
| |-ParagraphComment 0x5604681696e0 <line:7836:4, col:23>
| | `-TextComment 0x5604681696b0 <col:4, col:23> Text=" Get type for table."
| |-ParagraphComment 0x560468169730 <line:7838:3>
| | `-TextComment 0x560468169700 <col:3> Text=" "
| |-ParamCommandComment 0x560468169750 <col:4, line:7839:3> [in] implicitly Param="table" ParamIndex=0
| | `-ParagraphComment 0x560468169800 <line:7838:16, line:7839:3>
| | |-TextComment 0x5604681697b0 <line:7838:16, col:26> Text=" The table."
| | `-TextComment 0x5604681697d0 <line:7839:3> Text=" "
| `-BlockCommandComment 0x560468169820 <col:4, col:33> Name="return"
| `-ParagraphComment 0x560468169880 <col:11, col:33>
| `-TextComment 0x560468169850 <col:11, col:33> Text=" The type of the table."
|-FunctionDecl 0x560468064680 <line:7854:1, line:7857:19> line:7854:7 ecs_table_get_column 'void *(const ecs_table_t *, int32_t, int32_t)'
| |-ParmVarDecl 0x560468064468 <line:7855:5, col:24> col:24 table 'const ecs_table_t *'
| |-ParmVarDecl 0x5604680644e0 <line:7856:5, col:13> col:13 index 'int32_t':'int'
| |-ParmVarDecl 0x560468064558 <line:7857:5, col:13> col:13 offset 'int32_t':'int'
| `-FullComment 0x560468169d10 <line:7845:4, line:7851:72>
| |-ParagraphComment 0x560468169980 <line:7845:4, line:7846:69>
| | |-TextComment 0x560468169930 <line:7845:4, col:26> Text=" Get column from table."
| | `-TextComment 0x560468169950 <line:7846:3, col:69> Text=" This operation returns the component array for the provided index."
| |-ParagraphComment 0x5604681699d0 <line:7848:3>
| | `-TextComment 0x5604681699a0 <col:3> Text=" "
| |-ParamCommandComment 0x5604681699f0 <col:4, line:7849:3> [in] implicitly Param="table" ParamIndex=0
| | `-ParagraphComment 0x560468169aa0 <line:7848:16, line:7849:3>
| | |-TextComment 0x560468169a50 <line:7848:16, col:26> Text=" The table."
| | `-TextComment 0x560468169a70 <line:7849:3> Text=" "
| |-ParamCommandComment 0x560468169ac0 <col:4, line:7850:3> [in] implicitly Param="index" ParamIndex=1
| | `-ParagraphComment 0x560468169b70 <line:7849:16, line:7850:3>
| | |-TextComment 0x560468169b20 <line:7849:16, col:75> Text=" The index of the column (corresponds with element in type)."
| | `-TextComment 0x560468169b40 <line:7850:3> Text=" "
| |-ParamCommandComment 0x560468169b90 <col:4, line:7851:3> [in] implicitly Param="offset" ParamIndex=2
| | `-ParagraphComment 0x560468169c40 <line:7850:17, line:7851:3>
| | |-TextComment 0x560468169bf0 <line:7850:17, col:76> Text=" The index of the first row to return (0 for entire column)."
| | `-TextComment 0x560468169c10 <line:7851:3> Text=" "
| `-BlockCommandComment 0x560468169c60 <col:4, col:72> Name="return"
| `-ParagraphComment 0x560468169cc0 <col:11, col:72>
| `-TextComment 0x560468169c90 <col:11, col:72> Text=" The component array, or NULL if the index is not a component."
|-FunctionDecl 0x5604680649b0 <line:7868:1, line:7871:16> line:7868:9 ecs_table_get_index 'int32_t (const ecs_world_t *, const ecs_table_t *, ecs_id_t)'
| |-ParmVarDecl 0x560468064778 <line:7869:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680647f0 <line:7870:5, col:24> col:24 table 'const ecs_table_t *'
| |-ParmVarDecl 0x560468064868 <line:7871:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x56046816a160 <line:7859:4, line:7865:69>
| |-ParagraphComment 0x560468169dd0 <line:7859:4, line:7860:66>
| | |-TextComment 0x560468169d80 <line:7859:4, col:28> Text=" Get column index for id."
| | `-TextComment 0x560468169da0 <line:7860:3, col:66> Text=" This operation returns the index for an id in the table's type."
| |-ParagraphComment 0x560468169e20 <line:7862:3>
| | `-TextComment 0x560468169df0 <col:3> Text=" "
| |-ParamCommandComment 0x560468169e40 <col:4, line:7863:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468169ef0 <line:7862:16, line:7863:3>
| | |-TextComment 0x560468169ea0 <line:7862:16, col:26> Text=" The world."
| | `-TextComment 0x560468169ec0 <line:7863:3> Text=" "
| |-ParamCommandComment 0x560468169f10 <col:4, line:7864:3> [in] implicitly Param="table" ParamIndex=1
| | `-ParagraphComment 0x560468169fc0 <line:7863:16, line:7864:3>
| | |-TextComment 0x560468169f70 <line:7863:16, col:26> Text=" The table."
| | `-TextComment 0x560468169f90 <line:7864:3> Text=" "
| |-ParamCommandComment 0x560468169fe0 <col:4, line:7865:3> [in] implicitly Param="id" ParamIndex=2
| | `-ParagraphComment 0x56046816a090 <line:7864:13, line:7865:3>
| | |-TextComment 0x56046816a040 <line:7864:13, col:20> Text=" The id."
| | `-TextComment 0x56046816a060 <line:7865:3> Text=" "
| `-BlockCommandComment 0x56046816a0b0 <col:4, col:69> Name="return"
| `-ParagraphComment 0x56046816a110 <col:11, col:69>
| `-TextComment 0x56046816a0e0 <col:11, col:69> Text=" The index of the id in the table type, or -1 if not found."
|-FunctionDecl 0x560468064d60 <line:7882:1, line:7886:19> line:7882:7 ecs_table_get_id 'void *(const ecs_world_t *, const ecs_table_t *, ecs_id_t, int32_t)'
| |-ParmVarDecl 0x560468064aa8 <line:7883:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468064b20 <line:7884:5, col:24> col:24 table 'const ecs_table_t *'
| |-ParmVarDecl 0x560468064b98 <line:7885:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| |-ParmVarDecl 0x560468064c10 <line:7886:5, col:13> col:13 offset 'int32_t':'int'
| `-FullComment 0x56046816a5d0 <line:7873:4, line:7879:72>
| |-ParagraphComment 0x56046816a220 <line:7873:4, line:7874:77>
| | |-TextComment 0x56046816a1d0 <line:7873:4, col:42> Text=" Get column from table by component id."
| | `-TextComment 0x56046816a1f0 <line:7874:3, col:77> Text=" This operation returns the component array for the provided component id."
| |-ParagraphComment 0x56046816a270 <line:7876:3>
| | `-TextComment 0x56046816a240 <col:3> Text=" "
| |-ParamCommandComment 0x56046816a290 <col:4, line:7877:3> [in] implicitly Param="table" ParamIndex=1
| | `-ParagraphComment 0x56046816a340 <line:7876:16, line:7877:3>
| | |-TextComment 0x56046816a2f0 <line:7876:16, col:26> Text=" The table."
| | `-TextComment 0x56046816a310 <line:7877:3> Text=" "
| |-ParamCommandComment 0x56046816a380 <col:4, line:7878:3> [in] implicitly Param="id" ParamIndex=2
| | `-ParagraphComment 0x56046816a430 <line:7877:13, line:7878:3>
| | |-TextComment 0x56046816a3e0 <line:7877:13, col:45> Text=" The component id for the column."
| | `-TextComment 0x56046816a400 <line:7878:3> Text=" "
| |-ParamCommandComment 0x56046816a450 <col:4, line:7879:3> [in] implicitly Param="offset" ParamIndex=3
| | `-ParagraphComment 0x56046816a500 <line:7878:17, line:7879:3>
| | |-TextComment 0x56046816a4b0 <line:7878:17, col:76> Text=" The index of the first row to return (0 for entire column)."
| | `-TextComment 0x56046816a4d0 <line:7879:3> Text=" "
| `-BlockCommandComment 0x56046816a520 <col:4, col:72> Name="return"
| `-ParagraphComment 0x56046816a580 <col:11, col:72>
| `-TextComment 0x56046816a550 <col:11, col:72> Text=" The component array, or NULL if the index is not a component."
|-FunctionDecl 0x560468065028 <line:7899:1, line:7902:21> line:7899:9 ecs_table_get_depth 'int32_t (const ecs_world_t *, const ecs_table_t *, ecs_entity_t)'
| |-ParmVarDecl 0x560468064e58 <line:7900:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468064ed0 <line:7901:5, col:24> col:24 table 'const ecs_table_t *'
| |-ParmVarDecl 0x560468064f48 <line:7902:5, col:18> col:18 rel 'ecs_entity_t':'unsigned long'
| `-FullComment 0x56046816aa70 <line:7888:4, line:7896:46>
| |-ParagraphComment 0x56046816a6e0 <line:7888:4, line:7891:13>
| | |-TextComment 0x56046816a640 <line:7888:4, col:56> Text=" Return depth for table in tree for relationship rel."
| | |-TextComment 0x56046816a660 <line:7889:3, col:75> Text=" Depth is determined by counting the number of targets encountered while "
| | |-TextComment 0x56046816a680 <line:7890:3, col:78> Text=" traversing up the relationship tree for rel. Only acyclic relationships are"
| | `-TextComment 0x56046816a6a0 <line:7891:3, col:13> Text=" supported."
| |-ParagraphComment 0x56046816a730 <line:7893:3>
| | `-TextComment 0x56046816a700 <col:3> Text=" "
| |-ParamCommandComment 0x56046816a750 <col:4, line:7894:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046816a800 <line:7893:16, line:7894:3>
| | |-TextComment 0x56046816a7b0 <line:7893:16, col:26> Text=" The world."
| | `-TextComment 0x56046816a7d0 <line:7894:3> Text=" "
| |-ParamCommandComment 0x56046816a820 <col:4, line:7895:3> [in] implicitly Param="table" ParamIndex=1
| | `-ParagraphComment 0x56046816a8d0 <line:7894:16, line:7895:3>
| | |-TextComment 0x56046816a880 <line:7894:16, col:26> Text=" The table."
| | `-TextComment 0x56046816a8a0 <line:7895:3> Text=" "
| |-ParamCommandComment 0x56046816a8f0 <col:4, line:7896:3> [in] implicitly Param="rel" ParamIndex=2
| | `-ParagraphComment 0x56046816a9a0 <line:7895:14, line:7896:3>
| | |-TextComment 0x56046816a950 <line:7895:14, col:31> Text=" The relationship."
| | `-TextComment 0x56046816a970 <line:7896:3> Text=" "
| `-BlockCommandComment 0x56046816a9c0 <col:4, col:46> Name="return"
| `-ParagraphComment 0x56046816aa20 <col:11, col:46>
| `-TextComment 0x56046816a9f0 <col:11, col:46> Text=" The depth of the table in the tree."
|-FunctionDecl 0x560468065208 <line:7910:1, line:7911:29> line:7910:14 ecs_table_get_storage_table 'ecs_table_t *(const ecs_table_t *)'
| |-ParmVarDecl 0x560468065118 <line:7911:5, col:24> col:24 table 'const ecs_table_t *'
| `-FullComment 0x56046816acf0 <line:7904:4, line:7907:59>
| |-ParagraphComment 0x56046816ab10 <line:7904:4, col:31>
| | `-TextComment 0x56046816aae0 <col:4, col:31> Text=" Get storage type for table."
| |-ParagraphComment 0x56046816ab60 <line:7906:3>
| | `-TextComment 0x56046816ab30 <col:3> Text=" "
| |-ParamCommandComment 0x56046816ab80 <col:4, line:7907:3> [in] implicitly Param="table" ParamIndex=0
| | `-ParagraphComment 0x56046816ac30 <line:7906:16, line:7907:3>
| | |-TextComment 0x56046816abe0 <line:7906:16, col:26> Text=" The table."
| | `-TextComment 0x56046816ac00 <line:7907:3> Text=" "
| `-BlockCommandComment 0x56046816ac50 <col:4, col:59> Name="return"
| `-ParagraphComment 0x56046816acb0 <col:11, col:59>
| `-TextComment 0x56046816ac80 <col:11, col:59> Text=" The storage type of the table (components only)."
|-FunctionDecl 0x560468065478 <line:7915:1, line:7917:18> line:7915:9 ecs_table_type_to_storage_index 'int32_t (const ecs_table_t *, int32_t)'
| |-ParmVarDecl 0x5604680652e8 <line:7916:5, col:24> col:24 table 'const ecs_table_t *'
| |-ParmVarDecl 0x560468065360 <line:7917:5, col:13> col:13 index 'int32_t':'int'
| `-FullComment 0x56046816adc0 <line:7913:4, col:64>
| `-ParagraphComment 0x56046816ad90 <col:4, col:64>
| `-TextComment 0x56046816ad60 <col:4, col:64> Text=" Convert index in table type to index in table storage type. "
|-FunctionDecl 0x560468065678 <line:7921:1, line:7923:18> line:7921:9 ecs_table_storage_to_type_index 'int32_t (const ecs_table_t *, int32_t)'
| |-ParmVarDecl 0x560468065568 <line:7922:5, col:24> col:24 table 'const ecs_table_t *'
| |-ParmVarDecl 0x5604680655e0 <line:7923:5, col:13> col:13 index 'int32_t':'int'
| `-FullComment 0x56046816ae90 <line:7919:4, col:64>
| `-ParagraphComment 0x56046816ae60 <col:4, col:64>
| `-TextComment 0x56046816ae30 <col:4, col:64> Text=" Convert index in table storage type to index in table type. "
|-FunctionDecl 0x5604680657f8 <line:7934:1, line:7935:29> line:7934:9 ecs_table_count 'int32_t (const ecs_table_t *)'
| |-ParmVarDecl 0x560468065768 <line:7935:5, col:24> col:24 table 'const ecs_table_t *'
| `-FullComment 0x56046816b180 <line:7925:4, line:7931:44>
| |-ParagraphComment 0x56046816afa0 <line:7925:4, line:7928:40>
| | |-TextComment 0x56046816af00 <line:7925:4, col:48> Text=" Returns the number of records in the table. "
| | |-TextComment 0x56046816af20 <line:7926:3, col:80> Text=" This operation returns the number of records that have been populated through"
| | |-TextComment 0x56046816af40 <line:7927:3, col:75> Text=" the regular (entity) API as well as the number of records that have been"
| | `-TextComment 0x56046816af60 <line:7928:3, col:40> Text=" inserted using the direct access API."
| |-ParagraphComment 0x56046816aff0 <line:7930:3>
| | `-TextComment 0x56046816afc0 <col:3> Text=" "
| |-ParamCommandComment 0x56046816b010 <col:4, line:7931:3> [in] implicitly Param="table" ParamIndex=0
| | `-ParagraphComment 0x56046816b0c0 <line:7930:16, line:7931:3>
| | |-TextComment 0x56046816b070 <line:7930:16, col:26> Text=" The table."
| | `-TextComment 0x56046816b090 <line:7931:3> Text=" "
| `-BlockCommandComment 0x56046816b0e0 <col:4, col:44> Name="return"
| `-ParagraphComment 0x56046816b140 <col:11, col:44>
| `-TextComment 0x56046816b110 <col:11, col:44> Text=" The number of records in a table."
|-FunctionDecl 0x560468065b58 <line:7947:1, line:7950:16> line:7947:14 ecs_table_add_id 'ecs_table_t *(ecs_world_t *, ecs_table_t *, ecs_id_t)'
| |-ParmVarDecl 0x5604680658d8 <line:7948:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680659c0 <line:7949:5, col:18> col:18 table 'ecs_table_t *'
| |-ParmVarDecl 0x560468065a38 <line:7950:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x56046816b600 <line:7937:4, line:7944:31>
| |-ParagraphComment 0x56046816b270 <line:7937:4, line:7939:22>
| | |-TextComment 0x56046816b1f0 <line:7937:4, col:77> Text=" Get table that has all components of current table plus the specified id."
| | |-TextComment 0x56046816b210 <line:7938:3, col:79> Text=" If the provided table already has the provided id, the operation will return"
| | `-TextComment 0x56046816b230 <line:7939:3, col:22> Text=" the provided table."
| |-ParagraphComment 0x56046816b2c0 <line:7941:3>
| | `-TextComment 0x56046816b290 <col:3> Text=" "
| |-ParamCommandComment 0x56046816b2e0 <col:4, line:7942:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046816b390 <line:7941:16, line:7942:3>
| | |-TextComment 0x56046816b340 <line:7941:16, col:26> Text=" The world."
| | `-TextComment 0x56046816b360 <line:7942:3> Text=" "
| |-ParamCommandComment 0x56046816b3b0 <col:4, line:7943:3> [in] implicitly Param="table" ParamIndex=1
| | `-ParagraphComment 0x56046816b460 <line:7942:16, line:7943:3>
| | |-TextComment 0x56046816b410 <line:7942:16, col:26> Text=" The table."
| | `-TextComment 0x56046816b430 <line:7943:3> Text=" "
| |-ParamCommandComment 0x56046816b480 <col:4, line:7944:3> [in] implicitly Param="id" ParamIndex=2
| | `-ParagraphComment 0x56046816b530 <line:7943:13, line:7944:3>
| | |-TextComment 0x56046816b4e0 <line:7943:13, col:27> Text=" The id to add."
| | `-TextComment 0x56046816b500 <line:7944:3> Text=" "
| `-BlockCommandComment 0x56046816b550 <col:4, col:31> Name="result"
| `-ParagraphComment 0x56046816b5b0 <col:11, col:31>
| `-TextComment 0x56046816b580 <col:11, col:31> Text=" The resulting table."
|-FunctionDecl 0x560468065dd8 <line:7962:1, line:7965:16> line:7962:14 ecs_table_remove_id 'ecs_table_t *(ecs_world_t *, ecs_table_t *, ecs_id_t)'
| |-ParmVarDecl 0x560468065c48 <line:7963:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468065cc0 <line:7964:5, col:18> col:18 table 'ecs_table_t *'
| |-ParmVarDecl 0x560468065d38 <line:7965:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| `-FullComment 0x56046816ba80 <line:7952:4, line:7959:31>
| |-ParagraphComment 0x56046816b6f0 <line:7952:4, line:7954:22>
| | |-TextComment 0x56046816b670 <line:7952:4, col:78> Text=" Get table that has all components of current table minus the specified id."
| | |-TextComment 0x56046816b690 <line:7953:3, col:80> Text=" If the provided table doesn't have the provided id, the operation will return"
| | `-TextComment 0x56046816b6b0 <line:7954:3, col:22> Text=" the provided table."
| |-ParagraphComment 0x56046816b740 <line:7956:3>
| | `-TextComment 0x56046816b710 <col:3> Text=" "
| |-ParamCommandComment 0x56046816b760 <col:4, line:7957:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046816b810 <line:7956:16, line:7957:3>
| | |-TextComment 0x56046816b7c0 <line:7956:16, col:26> Text=" The world."
| | `-TextComment 0x56046816b7e0 <line:7957:3> Text=" "
| |-ParamCommandComment 0x56046816b830 <col:4, line:7958:3> [in] implicitly Param="table" ParamIndex=1
| | `-ParagraphComment 0x56046816b8e0 <line:7957:16, line:7958:3>
| | |-TextComment 0x56046816b890 <line:7957:16, col:26> Text=" The table."
| | `-TextComment 0x56046816b8b0 <line:7958:3> Text=" "
| |-ParamCommandComment 0x56046816b900 <col:4, line:7959:3> [in] implicitly Param="id" ParamIndex=2
| | `-ParagraphComment 0x56046816b9b0 <line:7958:13, line:7959:3>
| | |-TextComment 0x56046816b960 <line:7958:13, col:30> Text=" The id to remove."
| | `-TextComment 0x56046816b980 <line:7959:3> Text=" "
| `-BlockCommandComment 0x56046816b9d0 <col:4, col:31> Name="result"
| `-ParagraphComment 0x56046816ba30 <col:11, col:31>
| `-TextComment 0x56046816ba00 <col:11, col:31> Text=" The resulting table."
|-FunctionDecl 0x560468066058 <line:7983:1, line:7985:23> line:7983:6 ecs_table_lock 'void (ecs_world_t *, ecs_table_t *)'
| |-ParmVarDecl 0x560468065ec8 <line:7984:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468065f40 <line:7985:5, col:18> col:18 table 'ecs_table_t *'
| `-FullComment 0x56046816bec0 <line:7967:4, line:7980:34>
| |-ParagraphComment 0x56046816bb90 <line:7967:4, line:7970:43>
| | |-TextComment 0x56046816baf0 <line:7967:4, col:25> Text=" Lock or unlock table."
| | |-TextComment 0x56046816bb10 <line:7968:3, col:78> Text=" When a table is locked, modifications to it will throw an assert. When the "
| | |-TextComment 0x56046816bb30 <line:7969:3, col:70> Text=" table is locked recursively, it will take an equal amount of unlock"
| | `-TextComment 0x56046816bb50 <line:7970:3, col:43> Text=" operations to actually unlock the table."
| |-ParagraphComment 0x56046816bc00 <line:7972:3, line:7973:71>
| | |-TextComment 0x56046816bbb0 <line:7972:3, col:78> Text=" Table locks can be used to build safe iterators where it is guaranteed that"
| | `-TextComment 0x56046816bbd0 <line:7973:3, col:71> Text=" the contents of a table are not modified while it is being iterated."
| |-ParagraphComment 0x56046816bca0 <line:7975:3, line:7977:35>
| | |-TextComment 0x56046816bc20 <line:7975:3, col:78> Text=" The operation only works when called on the world, and has no side effects "
| | |-TextComment 0x56046816bc40 <line:7976:3, col:73> Text=" when called on a stage. The assumption is that when called on a stage,"
| | `-TextComment 0x56046816bc60 <line:7977:3, col:35> Text=" operations are deferred already."
| |-ParagraphComment 0x56046816bcf0 <line:7979:3>
| | `-TextComment 0x56046816bcc0 <col:3> Text=" "
| |-ParamCommandComment 0x56046816bd10 <col:4, line:7980:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046816bdc0 <line:7979:16, line:7980:3>
| | |-TextComment 0x56046816bd70 <line:7979:16, col:26> Text=" The world."
| | `-TextComment 0x56046816bd90 <line:7980:3> Text=" "
| `-ParamCommandComment 0x56046816bde0 <col:4, col:34> [in] implicitly Param="table" ParamIndex=1
| `-ParagraphComment 0x56046816be70 <col:16, col:34>
| `-TextComment 0x56046816be40 <col:16, col:34> Text=" The table to lock."
|-FunctionDecl 0x560468066258 <line:7994:1, line:7996:23> line:7994:6 ecs_table_unlock 'void (ecs_world_t *, ecs_table_t *)'
| |-ParmVarDecl 0x560468066148 <line:7995:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680661c0 <line:7996:5, col:18> col:18 table 'ecs_table_t *'
| `-FullComment 0x56046816c190 <line:7987:4, line:7991:36>
| |-ParagraphComment 0x56046816bf80 <line:7987:4, line:7988:47>
| | |-TextComment 0x56046816bf30 <line:7987:4, col:19> Text=" Unlock a table."
| | `-TextComment 0x56046816bf50 <line:7988:3, col:47> Text=" Must be called after calling ecs_table_lock."
| |-ParagraphComment 0x56046816bfd0 <line:7990:3>
| | `-TextComment 0x56046816bfa0 <col:3> Text=" "
| |-ParamCommandComment 0x56046816bff0 <col:4, line:7991:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046816c0a0 <line:7990:16, line:7991:3>
| | |-TextComment 0x56046816c050 <line:7990:16, col:26> Text=" The world."
| | `-TextComment 0x56046816c070 <line:7991:3> Text=" "
| `-ParamCommandComment 0x56046816c0c0 <col:4, col:36> [in] implicitly Param="table" ParamIndex=1
| `-ParagraphComment 0x56046816c150 <col:16, col:36>
| `-TextComment 0x56046816c120 <col:16, col:36> Text=" The table to unlock."
|-FunctionDecl 0x560468066438 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:8007:23> line:8006:6 ecs_table_has_module 'bool (ecs_table_t *)'
| |-ParmVarDecl 0x560468066348 <line:8007:5, col:18> col:18 table 'ecs_table_t *'
| `-FullComment 0x56046816c480 <line:7998:4, line:8003:64>
| |-ParagraphComment 0x56046816c280 <line:7998:4, line:8000:47>
| | |-TextComment 0x56046816c200 <line:7998:4, col:65> Text=" Returns whether table is a module or contains module contents"
| | |-TextComment 0x56046816c220 <line:7999:3, col:79> Text=" Returns true for tables that have module contents. Can be used to filter out"
| | `-TextComment 0x56046816c240 <line:8000:3, col:47> Text=" tables that do not contain application data."
| |-ParagraphComment 0x56046816c2d0 <line:8002:3>
| | `-TextComment 0x56046816c2a0 <col:3> Text=" "
| |-ParamCommandComment 0x56046816c2f0 <col:4, line:8003:3> [in] implicitly Param="table" ParamIndex=0
| | `-ParagraphComment 0x56046816c3c0 <line:8002:16, line:8003:3>
| | |-TextComment 0x56046816c350 <line:8002:16, col:26> Text=" The table."
| | `-TextComment 0x56046816c390 <line:8003:3> Text=" "
| `-BlockCommandComment 0x56046816c3e0 <col:4, col:64> Name="return"
| `-ParagraphComment 0x56046816c440 <col:11, col:64>
| `-TextComment 0x56046816c410 <col:11, col:64> Text=" true if table contains module contents, false if not."
|-FunctionDecl 0x5604680667c8 <line:8017:1, line:8021:18> line:8017:6 ecs_table_swap_rows 'void (ecs_world_t *, ecs_table_t *, int32_t, int32_t)'
| |-ParmVarDecl 0x560468066518 <line:8018:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468066590 <line:8019:5, col:18> col:18 table 'ecs_table_t *'
| |-ParmVarDecl 0x560468066608 <line:8020:5, col:13> col:13 row_1 'int32_t':'int'
| |-ParmVarDecl 0x560468066680 <line:8021:5, col:13> col:13 row_2 'int32_t':'int'
| `-FullComment 0x56046816c8e0 <line:8009:4, line:8014:48>
| |-ParagraphComment 0x56046816c570 <line:8009:4, line:8011:3>
| | |-TextComment 0x56046816c4f0 <line:8009:4, col:79> Text=" Swaps two elements inside the table. This is useful for implementing custom"
| | |-TextComment 0x56046816c510 <line:8010:3, col:28> Text=" table sorting algorithms."
| | `-TextComment 0x56046816c530 <line:8011:3> Text=" "
| |-ParamCommandComment 0x56046816c590 <col:4, line:8012:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046816c640 <line:8011:16, line:8012:3>
| | |-TextComment 0x56046816c5f0 <line:8011:16, col:25> Text=" The world"
| | `-TextComment 0x56046816c610 <line:8012:3> Text=" "
| |-ParamCommandComment 0x56046816c660 <col:4, line:8013:3> [in] implicitly Param="table" ParamIndex=1
| | `-ParagraphComment 0x56046816c710 <line:8012:16, line:8013:3>
| | |-TextComment 0x56046816c6c0 <line:8012:16, col:45> Text=" The table to swap elements in"
| | `-TextComment 0x56046816c6e0 <line:8013:3> Text=" "
| |-ParamCommandComment 0x56046816c730 <col:4, line:8014:3> [in] implicitly Param="row_1" ParamIndex=2
| | `-ParagraphComment 0x56046816c7e0 <line:8013:16, line:8014:3>
| | |-TextComment 0x56046816c790 <line:8013:16, col:48> Text=" Table element to swap with row_2"
| | `-TextComment 0x56046816c7b0 <line:8014:3> Text=" "
| `-ParamCommandComment 0x56046816c800 <col:4, col:48> [in] implicitly Param="row_2" ParamIndex=3
| `-ParagraphComment 0x56046816c890 <col:16, col:48>
| `-TextComment 0x56046816c860 <col:16, col:48> Text=" Table element to swap with row_1"
|-FunctionDecl 0x560468066ca8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:8052:30> line:8046:6 ecs_commit 'bool (ecs_world_t *, ecs_entity_t, ecs_record_t *, ecs_table_t *, const ecs_type_t *, const ecs_type_t *)'
| |-ParmVarDecl 0x5604680668c8 <line:8047:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468066940 <line:8048:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680669d0 <line:8049:5, col:19> col:19 record 'ecs_record_t *'
| |-ParmVarDecl 0x560468066a48 <line:8050:5, col:18> col:18 table 'ecs_table_t *'
| |-ParmVarDecl 0x560468066ac0 <line:8051:5, col:23> col:23 added 'const ecs_type_t *'
| |-ParmVarDecl 0x560468066b38 <line:8052:5, col:23> col:23 removed 'const ecs_type_t *'
| `-FullComment 0x56046816d020 <line:8023:4, line:8043:57>
| |-ParagraphComment 0x56046816ca90 <line:8023:4, line:8030:74>
| | |-TextComment 0x56046816c950 <line:8023:4, col:36> Text=" Commit (move) entity to a table."
| | |-TextComment 0x56046816c970 <line:8024:3, col:73> Text=" This operation moves an entity from its current table to the specified"
| | |-TextComment 0x56046816c990 <line:8025:3, col:47> Text=" table. This may cause the following actions:"
| | |-TextComment 0x56046816c9b0 <line:8026:3, col:48> Text=" - Ctor for each component in the target table"
| | |-TextComment 0x56046816c9d0 <line:8027:3, col:40> Text=" - Move for each overlapping component"
| | |-TextComment 0x56046816c9f0 <line:8028:3, col:49> Text=" - Dtor for each component in the source table."
| | |-TextComment 0x56046816ca10 <line:8029:3, col:70> Text=" - OnAdd triggers for non-overlapping components in the target table"
| | `-TextComment 0x56046816ca30 <line:8030:3, col:74> Text=" - OnRemove triggers for non-overlapping components in the source table."
| |-ParagraphComment 0x56046816cae0 <line:8032:3, col:75>
| | `-TextComment 0x56046816cab0 <col:3, col:75> Text=" This operation is a faster than adding/removing components individually."
| |-ParagraphComment 0x56046816cba0 <line:8034:3, line:8037:56>
| | |-TextComment 0x56046816cb00 <line:8034:3, col:79> Text=" The application must explicitly provide the difference in components between"
| | |-TextComment 0x56046816cb20 <line:8035:3, col:79> Text=" tables as the added/removed parameters. This can usually be derived directly"
| | |-TextComment 0x56046816cb40 <line:8036:3, col:80> Text=" from the result of ecs_table_add_id and esc_table_remove_id. These arrays are"
| | `-TextComment 0x56046816cb60 <line:8037:3, col:56> Text=" required to properly execute OnAdd/OnRemove triggers."
| |-ParagraphComment 0x56046816cbf0 <line:8039:3>
| | `-TextComment 0x56046816cbc0 <col:3> Text=" "
| |-ParamCommandComment 0x56046816cc10 <col:4, line:8040:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046816ccc0 <line:8039:16, line:8040:3>
| | |-TextComment 0x56046816cc70 <line:8039:16, col:26> Text=" The world."
| | `-TextComment 0x56046816cc90 <line:8040:3> Text=" "
| |-ParamCommandComment 0x56046816cce0 <col:4, line:8041:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x56046816cd90 <line:8040:17, line:8041:3>
| | |-TextComment 0x56046816cd40 <line:8040:17, col:38> Text=" The entity to commit."
| | `-TextComment 0x56046816cd60 <line:8041:3> Text=" "
| |-ParamCommandComment 0x56046816cdb0 <col:4, line:8042:3> [in] implicitly Param="record" ParamIndex=2
| | `-ParagraphComment 0x56046816ce60 <line:8041:17, line:8042:3>
| | |-TextComment 0x56046816ce10 <line:8041:17, col:77> Text=" The entity's record (optional, providing it saves a lookup)."
| | `-TextComment 0x56046816ce30 <line:8042:3> Text=" "
| |-ParamCommandComment 0x56046816ce80 <col:4, line:8043:3> [in] implicitly Param="table" ParamIndex=3
| | `-ParagraphComment 0x56046816cf30 <line:8042:16, line:8043:3>
| | |-TextComment 0x56046816cee0 <line:8042:16, col:50> Text=" The table to commit the entity to."
| | `-TextComment 0x56046816cf00 <line:8043:3> Text=" "
| `-BlockCommandComment 0x56046816cf50 <col:4, col:57> Name="return"
| `-ParagraphComment 0x56046816cfb0 <col:11, col:57>
| `-TextComment 0x56046816cf80 <col:11, col:57> Text=" True if the entity got moved, false otherwise."
|-FunctionDecl 0x560468066f48 <line:8056:1, line:8058:24> line:8056:15 ecs_record_find 'ecs_record_t *(const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x560468066db8 <line:8057:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468066e30 <line:8058:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x56046816d0f0 <line:8054:4, col:28>
| `-ParagraphComment 0x56046816d0c0 <col:4, col:28>
| `-TextComment 0x56046816d090 <col:4, col:28> Text=" Find record for entity. "
|-FunctionDecl 0x560468067250 <line:8062:1, line:8065:18> line:8062:7 ecs_record_get_column 'void *(const ecs_record_t *, int32_t, size_t)'
| |-ParmVarDecl 0x560468067038 <line:8063:5, col:25> col:25 r 'const ecs_record_t *'
| |-ParmVarDecl 0x5604680670b0 <line:8064:5, col:13> col:13 column 'int32_t':'int'
| |-ParmVarDecl 0x560468067128 <line:8065:5, col:12> col:12 c_size 'size_t':'unsigned long'
| `-FullComment 0x56046816d1c0 <line:8060:4, col:46>
| `-ParagraphComment 0x56046816d190 <col:4, col:46>
| `-TextComment 0x56046816d160 <col:4, col:46> Text=" Get component pointer from column/record. "
|-FunctionDecl 0x5604680675f8 <line:8083:1, line:8087:21> line:8083:9 ecs_search 'int32_t (const ecs_world_t *, const ecs_table_t *, ecs_id_t, ecs_id_t *)'
| |-ParmVarDecl 0x560468067348 <line:8084:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680673c0 <line:8085:5, col:24> col:24 table 'const ecs_table_t *'
| |-ParmVarDecl 0x560468067438 <line:8086:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| |-ParmVarDecl 0x5604680674b0 <line:8087:5, col:15> col:15 id_out 'ecs_id_t *'
| `-FullComment 0x56046816d7f0 <line:8067:4, line:8080:49>
| |-ParagraphComment 0x56046816d2b0 <line:8067:4, line:8069:34>
| | |-TextComment 0x56046816d230 <line:8067:4, col:42> Text=" Search for component id in table type."
| | |-TextComment 0x56046816d250 <line:8068:3, col:78> Text=" This operation returns the index of first occurrance of the id in the table"
| | `-TextComment 0x56046816d270 <line:8069:3, col:34> Text=" type. The id may be a wildcard."
| |-ParagraphComment 0x56046816d320 <line:8071:3, line:8072:70>
| | |-TextComment 0x56046816d2d0 <line:8071:3, col:78> Text=" When id_out is provided, the function will assign it with the found id. The"
| | `-TextComment 0x56046816d2f0 <line:8072:3, col:70> Text=" found id may be different from the provided id if it is a wildcard."
| |-ParagraphComment 0x56046816d370 <line:8074:3, col:37>
| | `-TextComment 0x56046816d340 <col:3, col:37> Text=" This is a constant time operation."
| |-ParagraphComment 0x56046816d3c0 <line:8076:3>
| | `-TextComment 0x56046816d390 <col:3> Text=" "
| |-ParamCommandComment 0x56046816d3e0 <col:4, line:8077:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046816d490 <line:8076:16, line:8077:3>
| | |-TextComment 0x56046816d440 <line:8076:16, col:26> Text=" The world."
| | `-TextComment 0x56046816d460 <line:8077:3> Text=" "
| |-ParamCommandComment 0x56046816d4b0 <col:4, line:8078:3> [in] implicitly Param="table" ParamIndex=1
| | `-ParagraphComment 0x56046816d560 <line:8077:16, line:8078:3>
| | |-TextComment 0x56046816d510 <line:8077:16, col:26> Text=" The table."
| | `-TextComment 0x56046816d530 <line:8078:3> Text=" "
| |-ParamCommandComment 0x56046816d580 <col:4, line:8079:3> [in] implicitly Param="id" ParamIndex=2
| | `-ParagraphComment 0x56046816d630 <line:8078:13, line:8079:3>
| | |-TextComment 0x56046816d5e0 <line:8078:13, col:34> Text=" The id to search for."
| | `-TextComment 0x56046816d600 <line:8079:3> Text=" "
| |-ParamCommandComment 0x56046816d650 <col:4, line:8080:3> [in] implicitly Param="id_out" ParamIndex=3
| | `-ParagraphComment 0x56046816d700 <line:8079:17, line:8080:3>
| | |-TextComment 0x56046816d6b0 <line:8079:17, col:72> Text=" If provided, it will be set to the found id (optional)."
| | `-TextComment 0x56046816d6d0 <line:8080:3> Text=" "
| `-BlockCommandComment 0x56046816d720 <col:4, col:49> Name="return"
| `-ParagraphComment 0x56046816d780 <col:11, col:49>
| `-TextComment 0x56046816d750 <col:11, col:49> Text=" The index of the id in the table type."
|-FunctionDecl 0x560468067af8 <line:8120:1, line:8125:21> line:8120:9 ecs_search_offset 'int32_t (const ecs_world_t *, const ecs_table_t *, int32_t, ecs_id_t, ecs_id_t *)'
| |-ParmVarDecl 0x5604680676f8 <line:8121:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468067770 <line:8122:5, col:24> col:24 table 'const ecs_table_t *'
| |-ParmVarDecl 0x5604680677e8 <line:8123:5, col:13> col:13 offset 'int32_t':'int'
| |-ParmVarDecl 0x560468067860 <line:8124:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| |-ParmVarDecl 0x5604680678d8 <line:8125:5, col:15> col:15 id_out 'ecs_id_t *'
| `-FullComment 0x56046816e130 <line:8089:4, line:8117:49>
| |-ParagraphComment 0x56046816d8e0 <line:8089:4, line:8091:21>
| | |-TextComment 0x56046816d860 <line:8089:4, col:66> Text=" Search for component id in table type starting from an offset."
| | |-TextComment 0x56046816d880 <line:8090:3, col:80> Text=" This operation is the same as ecs_search, but starts searching from an offset"
| | `-TextComment 0x56046816d8a0 <line:8091:3, col:21> Text=" in the table type."
| |-ParagraphComment 0x56046816d950 <line:8093:3, line:8094:40>
| | |-TextComment 0x56046816d900 <line:8093:3, col:76> Text=" This operation is typically called in a loop where the resulting index is"
| | `-TextComment 0x56046816d920 <line:8094:3, col:40> Text=" used in the next iteration as offset:"
| |-ParagraphComment 0x56046816da10 <line:8096:3, line:8099:4>
| | |-TextComment 0x56046816d970 <line:8096:3, col:22> Text=" int32_t index = -1;"
| | |-TextComment 0x56046816d990 <line:8097:3, col:72> Text=" while ((index = ecs_search_offset(world, table, offset, id, NULL))) {"
| | |-TextComment 0x56046816d9b0 <line:8098:3, col:16> Text=" // do stuff"
| | `-TextComment 0x56046816d9d0 <line:8099:3, col:4> Text=" }"
| |-ParagraphComment 0x56046816dab0 <line:8101:3, line:8103:62>
| | |-TextComment 0x56046816da30 <line:8101:3, col:79> Text=" Depending on how the operation is used it is either linear or constant time."
| | |-TextComment 0x56046816da50 <line:8102:3, col:77> Text=" When the id has the form (id) or (rel, *) and the operation is invoked as "
| | `-TextComment 0x56046816da70 <line:8103:3, col:62> Text=" in the above example, it is guaranteed to be constant time."
| |-ParagraphComment 0x56046816db50 <line:8105:3, line:8107:33>
| | |-TextComment 0x56046816dad0 <line:8105:3, col:80> Text=" If the provided id has the form (*, tgt) the operation takes linear time. The"
| | |-TextComment 0x56046816daf0 <line:8106:3, col:77> Text=" reason for this is that ids for an target are not packed together, as they"
| | `-TextComment 0x56046816db10 <line:8107:3, col:33> Text=" are sorted relationship first."
| |-ParagraphComment 0x56046816dbc0 <line:8109:3, line:8110:41>
| | |-TextComment 0x56046816db70 <line:8109:3, col:80> Text=" If the id at the offset does not match the provided id, the operation will do"
| | `-TextComment 0x56046816db90 <line:8110:3, col:41> Text=" a linear search to find a matching id."
| |-ParagraphComment 0x56046816dc10 <line:8112:3>
| | `-TextComment 0x56046816dbe0 <col:3> Text=" "
| |-ParamCommandComment 0x56046816dc30 <col:4, line:8113:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046816dce0 <line:8112:16, line:8113:3>
| | |-TextComment 0x56046816dc90 <line:8112:16, col:26> Text=" The world."
| | `-TextComment 0x56046816dcb0 <line:8113:3> Text=" "
| |-ParamCommandComment 0x56046816dd00 <col:4, line:8114:3> [in] implicitly Param="table" ParamIndex=1
| | `-ParagraphComment 0x56046816ddb0 <line:8113:16, line:8114:3>
| | |-TextComment 0x56046816dd60 <line:8113:16, col:26> Text=" The table."
| | `-TextComment 0x56046816dd80 <line:8114:3> Text=" "
| |-ParamCommandComment 0x56046816ddd0 <col:4, line:8115:3> [in] implicitly Param="offset" ParamIndex=2
| | `-ParagraphComment 0x56046816de80 <line:8114:17, line:8115:3>
| | |-TextComment 0x56046816de30 <line:8114:17, col:54> Text=" Offset from where to start searching."
| | `-TextComment 0x56046816de50 <line:8115:3> Text=" "
| |-ParamCommandComment 0x56046816dea0 <col:4, line:8116:3> [in] implicitly Param="id" ParamIndex=3
| | `-ParagraphComment 0x56046816df50 <line:8115:13, line:8116:3>
| | |-TextComment 0x56046816df00 <line:8115:13, col:34> Text=" The id to search for."
| | `-TextComment 0x56046816df20 <line:8116:3> Text=" "
| |-ParamCommandComment 0x56046816df70 <col:4, line:8117:3> [in] implicitly Param="id_out" ParamIndex=4
| | `-ParagraphComment 0x56046816e020 <line:8116:17, line:8117:3>
| | |-TextComment 0x56046816dfd0 <line:8116:17, col:72> Text=" If provided, it will be set to the found id (optional)."
| | `-TextComment 0x56046816dff0 <line:8117:3> Text=" "
| `-BlockCommandComment 0x56046816e040 <col:4, col:49> Name="return"
| `-ParagraphComment 0x56046816e0a0 <col:11, col:49>
| `-TextComment 0x56046816e070 <col:11, col:49> Text=" The index of the id in the table type."
|-FunctionDecl 0x5604680681e8 <line:8164:1, line:8173:39> line:8164:9 ecs_search_relation 'int32_t (const ecs_world_t *, const ecs_table_t *, int32_t, ecs_id_t, ecs_entity_t, ecs_flags32_t, ecs_entity_t *, ecs_id_t *, struct ecs_table_record_t **)'
| |-ParmVarDecl 0x560468067bf8 <line:8165:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468067c70 <line:8166:5, col:24> col:24 table 'const ecs_table_t *'
| |-ParmVarDecl 0x560468067ce8 <line:8167:5, col:13> col:13 offset 'int32_t':'int'
| |-ParmVarDecl 0x560468067d60 <line:8168:5, col:14> col:14 id 'ecs_id_t':'unsigned long'
| |-ParmVarDecl 0x560468067dd8 <line:8169:5, col:18> col:18 rel 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560468067e50 <line:8170:5, col:19> col:19 flags 'ecs_flags32_t':'unsigned int'
| |-ParmVarDecl 0x560468067ec8 <line:8171:5, col:19> col:19 subject_out 'ecs_entity_t *'
| |-ParmVarDecl 0x560468067f40 <line:8172:5, col:15> col:15 id_out 'ecs_id_t *'
| |-ParmVarDecl 0x560468068030 <line:8173:5, col:33> col:33 tr_out 'struct ecs_table_record_t **'
| `-FullComment 0x56046816ee20 <line:8127:4, line:8161:49>
| |-ParagraphComment 0x56046816e290 <line:8127:4, line:8132:13>
| | |-TextComment 0x56046816e1a0 <line:8127:4, col:79> Text=" Search for component/relationship id in table type starting from an offset."
| | |-TextComment 0x56046816e1c0 <line:8128:3, col:74> Text=" This operation is the same as ecs_search_offset, but has the additional"
| | |-TextComment 0x56046816e1e0 <line:8129:3, col:78> Text=" capability of traversing relationships to find a component. For example, if"
| | |-TextComment 0x56046816e200 <line:8130:3, col:78> Text=" an application wants to find a component for either the provided table or a"
| | |-TextComment 0x56046816e220 <line:8131:3, col:81> Text=" prefab (using the IsA relationship) of that table, it could use the operation "
| | `-TextComment 0x56046816e240 <line:8132:3, col:13> Text=" like this:"
| |-ParagraphComment 0x56046816e480 <line:8134:3, line:8144:73>
| | |-TextComment 0x56046816e2b0 <line:8134:3, col:39> Text=" int32_t index = ecs_search_relation("
| | |-TextComment 0x56046816e2d0 <line:8135:3, col:35> Text=" world, // the world"
| | |-TextComment 0x56046816e2f0 <line:8136:3, col:35> Text=" table, // the table"
| | |-TextComment 0x56046816e310 <line:8137:3, col:34> Text=" 0, // offset 0"
| | |-TextComment 0x56046816e330 <line:8138:3, col:42> Text=" ecs_id(Position), // the component id"
| | |-TextComment 0x56046816e350 <line:8139:3, col:54> Text=" EcsIsA, // the relationship to traverse"
| | |-TextComment 0x56046816e370 <line:8140:3, col:61> Text=" 0, // start at depth 0 (the table itself)"
| | |-TextComment 0x56046816e3a0 <line:8141:3, col:40> Text=" 0, // no depth limit"
| | |-TextComment 0x56046816e3c0 <line:8142:3, col:72> Text=" NULL, // (optional) entity on which component was found"
| | |-TextComment 0x56046816e3e0 <line:8143:3, col:35> Text=" NULL, // see above"
| | `-TextComment 0x56046816e400 <line:8144:3, col:73> Text=" NULL); // internal type with information about matched id"
| |-ParagraphComment 0x56046816e4f0 <line:8146:3, line:8147:70>
| | |-TextComment 0x56046816e4a0 <line:8146:3, col:83> Text=" The operation searches depth first. If a table type has 2 IsA relationships, the"
| | `-TextComment 0x56046816e4c0 <line:8147:3, col:70> Text=" operation will first search the IsA tree of the first relationship."
| |-ParagraphComment 0x56046816e560 <line:8149:3, line:8150:55>
| | |-TextComment 0x56046816e510 <line:8149:3, col:78> Text=" When choosing betwen ecs_search, ecs_search_offset and ecs_search_relation,"
| | `-TextComment 0x56046816e530 <line:8150:3, col:55> Text=" the simpler the function the better its performance."
| |-ParagraphComment 0x56046816e5b0 <line:8152:3>
| | `-TextComment 0x56046816e580 <col:3> Text=" "
| |-ParamCommandComment 0x56046816e5d0 <col:4, line:8153:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046816e680 <line:8152:16, line:8153:3>
| | |-TextComment 0x56046816e630 <line:8152:16, col:26> Text=" The world."
| | `-TextComment 0x56046816e650 <line:8153:3> Text=" "
| |-ParamCommandComment 0x56046816e6a0 <col:4, line:8154:3> [in] implicitly Param="table" ParamIndex=1
| | `-ParagraphComment 0x56046816e750 <line:8153:16, line:8154:3>
| | |-TextComment 0x56046816e700 <line:8153:16, col:26> Text=" The table."
| | `-TextComment 0x56046816e720 <line:8154:3> Text=" "
| |-ParamCommandComment 0x56046816e770 <col:4, line:8155:3> [in] implicitly Param="offset" ParamIndex=2
| | `-ParagraphComment 0x56046816e820 <line:8154:17, line:8155:3>
| | |-TextComment 0x56046816e7d0 <line:8154:17, col:54> Text=" Offset from where to start searching."
| | `-TextComment 0x56046816e7f0 <line:8155:3> Text=" "
| |-ParamCommandComment 0x56046816e840 <col:4, line:8156:3> [in] implicitly Param="id" ParamIndex=3
| | `-ParagraphComment 0x56046816e8f0 <line:8155:13, line:8156:3>
| | |-TextComment 0x56046816e8a0 <line:8155:13, col:34> Text=" The id to search for."
| | `-TextComment 0x56046816e8c0 <line:8156:3> Text=" "
| |-ParamCommandComment 0x56046816e910 <col:4, line:8157:3> [in] implicitly Param="rel" ParamIndex=4
| | `-ParagraphComment 0x56046816e9c0 <line:8156:14, line:8157:3>
| | |-TextComment 0x56046816e970 <line:8156:14, col:54> Text=" The relationship to traverse (optional)."
| | `-TextComment 0x56046816e990 <line:8157:3> Text=" "
| |-ParamCommandComment 0x56046816e9e0 <col:4, line:8158:3> [in] implicitly Param="flags" ParamIndex=5
| | `-ParagraphComment 0x56046816ea90 <line:8157:16, line:8158:3>
| | |-TextComment 0x56046816ea40 <line:8157:16, col:55> Text=" Whether to search EcsSelf and/or EcsUp."
| | `-TextComment 0x56046816ea60 <line:8158:3> Text=" "
| |-ParamCommandComment 0x56046816eab0 <col:4, line:8159:3> [in] implicitly Param="subject_out" ParamIndex=6
| | `-ParagraphComment 0x56046816eb60 <line:8158:22, line:8159:3>
| | |-TextComment 0x56046816eb10 <line:8158:22, col:72> Text=" If provided, it will be set to the matched entity."
| | `-TextComment 0x56046816eb30 <line:8159:3> Text=" "
| |-ParamCommandComment 0x56046816eb80 <col:4, line:8160:3> [in] implicitly Param="id_out" ParamIndex=7
| | `-ParagraphComment 0x56046816ec30 <line:8159:17, line:8160:3>
| | |-TextComment 0x56046816ebe0 <line:8159:17, col:72> Text=" If provided, it will be set to the found id (optional)."
| | `-TextComment 0x56046816ec00 <line:8160:3> Text=" "
| |-ParamCommandComment 0x56046816ec50 <col:4, line:8161:3> [in] implicitly Param="tr_out" ParamIndex=8
| | `-ParagraphComment 0x56046816ed00 <line:8160:17, line:8161:3>
| | |-TextComment 0x56046816ecb0 <line:8160:17, col:35> Text=" Internal datatype."
| | `-TextComment 0x56046816ecd0 <line:8161:3> Text=" "
| `-BlockCommandComment 0x56046816ed20 <col:4, col:49> Name="return"
| `-ParagraphComment 0x56046816ed80 <col:11, col:49>
| `-TextComment 0x56046816ed50 <col:11, col:49> Text=" The index of the id in the table type."
|-FunctionDecl 0x560468068590 <line:8191:1, line:8194:14> line:8191:5 ecs_value_init 'int (const ecs_world_t *, ecs_entity_t, void *)'
| |-ParmVarDecl 0x560468068368 <line:8192:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680683e0 <line:8193:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560468068460 <line:8194:5, col:11> col:11 ptr 'void *'
| `-FullComment 0x56046816f250 <line:8183:4, line:8188:46>
| |-ParagraphComment 0x56046816eec0 <line:8183:4, col:42>
| | `-TextComment 0x56046816ee90 <col:4, col:42> Text=" Construct a value in existing storage "
| |-ParagraphComment 0x56046816ef10 <line:8185:3>
| | `-TextComment 0x56046816eee0 <col:3> Text=" "
| |-ParamCommandComment 0x56046816ef30 <col:4, line:8186:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046816efe0 <line:8185:16, line:8186:3>
| | |-TextComment 0x56046816ef90 <line:8185:16, col:26> Text=" The world."
| | `-TextComment 0x56046816efb0 <line:8186:3> Text=" "
| |-ParamCommandComment 0x56046816f000 <col:4, line:8187:3> [in] implicitly Param="type" ParamIndex=1
| | `-ParagraphComment 0x56046816f0b0 <line:8186:15, line:8187:3>
| | |-TextComment 0x56046816f060 <line:8186:15, col:47> Text=" The type of the value to create."
| | `-TextComment 0x56046816f080 <line:8187:3> Text=" "
| |-ParamCommandComment 0x56046816f0d0 <col:4, line:8188:3> [in] implicitly Param="ptr" ParamIndex=2
| | `-ParagraphComment 0x56046816f180 <line:8187:14, line:8188:3>
| | |-TextComment 0x56046816f130 <line:8187:14, col:47> Text=" Pointer to a value of type 'type'"
| | `-TextComment 0x56046816f150 <line:8188:3> Text=" "
| `-BlockCommandComment 0x56046816f1a0 <col:4, col:46> Name="return"
| `-ParagraphComment 0x56046816f200 <col:11, col:46>
| `-TextComment 0x56046816f1d0 <col:11, col:46> Text=" Zero if success, nonzero if failed."
|-FunctionDecl 0x5604680688b0 <line:8204:1, line:8207:14> line:8204:5 ecs_value_init_w_type_info 'int (const ecs_world_t *, const ecs_type_info_t *, void *)'
| |-ParmVarDecl 0x560468068688 <line:8205:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468068700 <line:8206:5, col:28> col:28 ti 'const ecs_type_info_t *'
| |-ParmVarDecl 0x560468068780 <line:8207:5, col:11> col:11 ptr 'void *'
| `-FullComment 0x56046816f680 <line:8196:4, line:8201:46>
| |-ParagraphComment 0x56046816f2f0 <line:8196:4, col:42>
| | `-TextComment 0x56046816f2c0 <col:4, col:42> Text=" Construct a value in existing storage "
| |-ParagraphComment 0x56046816f340 <line:8198:3>
| | `-TextComment 0x56046816f310 <col:3> Text=" "
| |-ParamCommandComment 0x56046816f360 <col:4, line:8199:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046816f410 <line:8198:16, line:8199:3>
| | |-TextComment 0x56046816f3c0 <line:8198:16, col:26> Text=" The world."
| | `-TextComment 0x56046816f3e0 <line:8199:3> Text=" "
| |-ParamCommandComment 0x56046816f430 <col:4, line:8200:3> [in] implicitly Param="ti" ParamIndex=1
| | `-ParagraphComment 0x56046816f4e0 <line:8199:13, line:8200:3>
| | |-TextComment 0x56046816f490 <line:8199:13, col:49> Text=" The type info of the type to create."
| | `-TextComment 0x56046816f4b0 <line:8200:3> Text=" "
| |-ParamCommandComment 0x56046816f500 <col:4, line:8201:3> [in] implicitly Param="ptr" ParamIndex=2
| | `-ParagraphComment 0x56046816f5b0 <line:8200:14, line:8201:3>
| | |-TextComment 0x56046816f560 <line:8200:14, col:47> Text=" Pointer to a value of type 'type'"
| | `-TextComment 0x56046816f580 <line:8201:3> Text=" "
| `-BlockCommandComment 0x56046816f5d0 <col:4, col:46> Name="return"
| `-ParagraphComment 0x56046816f630 <col:11, col:46>
| `-TextComment 0x56046816f600 <col:11, col:46> Text=" Zero if success, nonzero if failed."
|-FunctionDecl 0x560468068d10 <line:8216:1, line:8218:22> line:8216:7 ecs_value_new 'void *(ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x5604680689a8 <line:8217:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468068bf0 <line:8218:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| `-FullComment 0x56046816f9e0 <line:8209:4, line:8213:54>
| |-ParagraphComment 0x56046816f720 <line:8209:4, col:37>
| | `-TextComment 0x56046816f6f0 <col:4, col:37> Text=" Construct a value in new storage "
| |-ParagraphComment 0x56046816f770 <line:8211:3>
| | `-TextComment 0x56046816f740 <col:3> Text=" "
| |-ParamCommandComment 0x56046816f790 <col:4, line:8212:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046816f840 <line:8211:16, line:8212:3>
| | |-TextComment 0x56046816f7f0 <line:8211:16, col:26> Text=" The world."
| | `-TextComment 0x56046816f810 <line:8212:3> Text=" "
| |-ParamCommandComment 0x56046816f860 <col:4, line:8213:3> [in] implicitly Param="type" ParamIndex=1
| | `-ParagraphComment 0x56046816f910 <line:8212:15, line:8213:3>
| | |-TextComment 0x56046816f8c0 <line:8212:15, col:47> Text=" The type of the value to create."
| | `-TextComment 0x56046816f8e0 <line:8213:3> Text=" "
| `-BlockCommandComment 0x56046816f930 <col:4, col:54> Name="return"
| `-ParagraphComment 0x56046816f990 <col:11, col:54>
| `-TextComment 0x56046816f960 <col:11, col:54> Text=" Pointer to type if success, NULL if failed."
|-FunctionDecl 0x560468068f98 <line:8227:1, line:8230:14> line:8227:5 ecs_value_fini_w_type_info 'int (const ecs_world_t *, const ecs_type_info_t *, void *)'
| |-ParmVarDecl 0x560468068df8 <line:8228:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468068e70 <line:8229:5, col:28> col:28 ti 'const ecs_type_info_t *'
| |-ParmVarDecl 0x560468068ef0 <line:8230:5, col:11> col:11 ptr 'void *'
| `-FullComment 0x56046816fe10 <line:8220:4, line:8225:47>
| |-ParagraphComment 0x56046816fa80 <line:8220:4, col:21>
| | `-TextComment 0x56046816fa50 <col:4, col:21> Text=" Destruct a value "
| |-ParagraphComment 0x56046816fad0 <line:8222:3>
| | `-TextComment 0x56046816faa0 <col:3> Text=" "
| |-ParamCommandComment 0x56046816faf0 <col:4, line:8223:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046816fba0 <line:8222:16, line:8223:3>
| | |-TextComment 0x56046816fb50 <line:8222:16, col:26> Text=" The world."
| | `-TextComment 0x56046816fb70 <line:8223:3> Text=" "
| |-ParamCommandComment 0x56046816fbc0 <col:4, line:8224:3> [in] implicitly Param="ti" ParamIndex=1
| | `-ParagraphComment 0x56046816fc70 <line:8223:13, line:8224:3>
| | |-TextComment 0x56046816fc20 <line:8223:13, col:48> Text=" Type info of the value to destruct."
| | `-TextComment 0x56046816fc40 <line:8224:3> Text=" "
| |-ParamCommandComment 0x56046816fc90 <col:4, line:8225:3> [in] implicitly Param="ptr" ParamIndex=2
| | `-ParagraphComment 0x56046816fd40 <line:8224:14, line:8225:3>
| | |-TextComment 0x56046816fcf0 <line:8224:14, col:58> Text=" Pointer to constructed value of type 'type'."
| | `-TextComment 0x56046816fd10 <line:8225:3> Text=" "
| `-BlockCommandComment 0x56046816fd60 <col:4, col:47> Name="return"
| `-ParagraphComment 0x56046816fdc0 <col:11, col:47>
| `-TextComment 0x56046816fd90 <col:11, col:47> Text=" Zero if success, nonzero if failed. "
|-FunctionDecl 0x560468069228 <line:8240:1, line:8243:14> line:8240:5 ecs_value_fini 'int (const ecs_world_t *, ecs_entity_t, void *)'
| |-ParmVarDecl 0x560468069088 <line:8241:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468069100 <line:8242:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560468069180 <line:8243:5, col:11> col:11 ptr 'void *'
| `-FullComment 0x560468170240 <line:8232:4, line:8237:47>
| |-ParagraphComment 0x56046816feb0 <line:8232:4, col:21>
| | `-TextComment 0x56046816fe80 <col:4, col:21> Text=" Destruct a value "
| |-ParagraphComment 0x56046816ff00 <line:8234:3>
| | `-TextComment 0x56046816fed0 <col:3> Text=" "
| |-ParamCommandComment 0x56046816ff20 <col:4, line:8235:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046816ffd0 <line:8234:16, line:8235:3>
| | |-TextComment 0x56046816ff80 <line:8234:16, col:26> Text=" The world."
| | `-TextComment 0x56046816ffa0 <line:8235:3> Text=" "
| |-ParamCommandComment 0x56046816fff0 <col:4, line:8236:3> [in] implicitly Param="type" ParamIndex=1
| | `-ParagraphComment 0x5604681700a0 <line:8235:15, line:8236:3>
| | |-TextComment 0x560468170050 <line:8235:15, col:49> Text=" The type of the value to destruct."
| | `-TextComment 0x560468170070 <line:8236:3> Text=" "
| |-ParamCommandComment 0x5604681700c0 <col:4, line:8237:3> [in] implicitly Param="ptr" ParamIndex=2
| | `-ParagraphComment 0x560468170170 <line:8236:14, line:8237:3>
| | |-TextComment 0x560468170120 <line:8236:14, col:58> Text=" Pointer to constructed value of type 'type'."
| | `-TextComment 0x560468170140 <line:8237:3> Text=" "
| `-BlockCommandComment 0x560468170190 <col:4, col:47> Name="return"
| `-ParagraphComment 0x5604681701f0 <col:11, col:47>
| `-TextComment 0x5604681701c0 <col:11, col:47> Text=" Zero if success, nonzero if failed. "
|-FunctionDecl 0x560468069540 <line:8252:1, line:8255:14> line:8252:5 ecs_value_free 'int (ecs_world_t *, ecs_entity_t, void *)'
| |-ParmVarDecl 0x560468069318 <line:8253:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468069390 <line:8254:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560468069410 <line:8255:5, col:11> col:11 ptr 'void *'
| `-FullComment 0x5604681705c0 <line:8245:4, line:8249:47>
| |-ParagraphComment 0x5604681702e0 <line:8245:4, col:34>
| | `-TextComment 0x5604681702b0 <col:4, col:34> Text=" Destruct a value, free storage"
| |-ParagraphComment 0x560468170330 <line:8247:3>
| | `-TextComment 0x560468170300 <col:3> Text=" "
| |-ParamCommandComment 0x560468170350 <col:4, line:8248:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468170420 <line:8247:16, line:8248:3>
| | |-TextComment 0x5604681703d0 <line:8247:16, col:26> Text=" The world."
| | `-TextComment 0x5604681703f0 <line:8248:3> Text=" "
| |-ParamCommandComment 0x560468170440 <col:4, line:8249:3> [in] implicitly Param="type" ParamIndex=1
| | `-ParagraphComment 0x5604681704f0 <line:8248:15, line:8249:3>
| | |-TextComment 0x5604681704a0 <line:8248:15, col:49> Text=" The type of the value to destruct."
| | `-TextComment 0x5604681704c0 <line:8249:3> Text=" "
| `-BlockCommandComment 0x560468170510 <col:4, col:47> Name="return"
| `-ParagraphComment 0x560468170570 <col:11, col:47>
| `-TextComment 0x560468170540 <col:11, col:47> Text=" Zero if success, nonzero if failed. "
|-FunctionDecl 0x560468069900 <line:8266:1, line:8270:20> line:8266:5 ecs_value_copy_w_type_info 'int (const ecs_world_t *, const ecs_type_info_t *, void *, const void *)'
| |-ParmVarDecl 0x560468069638 <line:8267:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680696b0 <line:8268:5, col:28> col:28 ti 'const ecs_type_info_t *'
| |-ParmVarDecl 0x560468069730 <line:8269:5, col:11> col:11 dst 'void *'
| |-ParmVarDecl 0x5604680697b0 <line:8270:5, col:17> col:17 src 'const void *'
| `-FullComment 0x560468170ad0 <line:8257:4, line:8263:47>
| |-ParagraphComment 0x560468170660 <line:8257:4, col:15>
| | `-TextComment 0x560468170630 <col:4, col:15> Text=" Copy value."
| |-ParagraphComment 0x5604681706b0 <line:8259:3>
| | `-TextComment 0x560468170680 <col:3> Text=" "
| |-ParamCommandComment 0x5604681706d0 <col:4, line:8260:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468170780 <line:8259:16, line:8260:3>
| | |-TextComment 0x560468170730 <line:8259:16, col:26> Text=" The world."
| | `-TextComment 0x560468170750 <line:8260:3> Text=" "
| |-ParamCommandComment 0x5604681707a0 <col:4, line:8261:3> [in] implicitly Param="ti" ParamIndex=1
| | `-ParagraphComment 0x560468170850 <line:8260:13, line:8261:3>
| | |-TextComment 0x560468170800 <line:8260:13, col:44> Text=" Type info of the value to copy."
| | `-TextComment 0x560468170820 <line:8261:3> Text=" "
| |-ParamCommandComment 0x560468170870 <col:4, line:8262:3> [in] implicitly Param="dst" ParamIndex=2
| | `-ParagraphComment 0x560468170920 <line:8261:14, line:8262:3>
| | |-TextComment 0x5604681708d0 <line:8261:14, col:48> Text=" Pointer to the storage to copy to."
| | `-TextComment 0x5604681708f0 <line:8262:3> Text=" "
| |-ParamCommandComment 0x560468170940 <col:4, line:8263:3> [in] implicitly Param="src" ParamIndex=3
| | `-ParagraphComment 0x5604681709f0 <line:8262:14, line:8263:3>
| | |-TextComment 0x5604681709a0 <line:8262:14, col:43> Text=" Pointer to the value to copy."
| | `-TextComment 0x5604681709c0 <line:8263:3> Text=" "
| `-BlockCommandComment 0x560468170a10 <col:4, col:47> Name="return"
| `-ParagraphComment 0x560468170a70 <col:11, col:47>
| `-TextComment 0x560468170a40 <col:11, col:47> Text=" Zero if success, nonzero if failed. "
|-FunctionDecl 0x560468069e20 <line:8281:1, line:8285:20> line:8281:5 ecs_value_copy 'int (const ecs_world_t *, ecs_entity_t, void *, const void *)'
| |-ParmVarDecl 0x5604680699f8 <line:8282:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468069a70 <line:8283:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x560468069af0 <line:8284:5, col:11> col:11 dst 'void *'
| |-ParmVarDecl 0x560468069b70 <line:8285:5, col:17> col:17 src 'const void *'
| `-FullComment 0x560468170fe0 <line:8272:4, line:8278:47>
| |-ParagraphComment 0x560468170b70 <line:8272:4, col:15>
| | `-TextComment 0x560468170b40 <col:4, col:15> Text=" Copy value."
| |-ParagraphComment 0x560468170bc0 <line:8274:3>
| | `-TextComment 0x560468170b90 <col:3> Text=" "
| |-ParamCommandComment 0x560468170be0 <col:4, line:8275:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468170c90 <line:8274:16, line:8275:3>
| | |-TextComment 0x560468170c40 <line:8274:16, col:26> Text=" The world."
| | `-TextComment 0x560468170c60 <line:8275:3> Text=" "
| |-ParamCommandComment 0x560468170cb0 <col:4, line:8276:3> [in] implicitly Param="type" ParamIndex=1
| | `-ParagraphComment 0x560468170d60 <line:8275:15, line:8276:3>
| | |-TextComment 0x560468170d10 <line:8275:15, col:45> Text=" The type of the value to copy."
| | `-TextComment 0x560468170d30 <line:8276:3> Text=" "
| |-ParamCommandComment 0x560468170d80 <col:4, line:8277:3> [in] implicitly Param="dst" ParamIndex=2
| | `-ParagraphComment 0x560468170e30 <line:8276:14, line:8277:3>
| | |-TextComment 0x560468170de0 <line:8276:14, col:48> Text=" Pointer to the storage to copy to."
| | `-TextComment 0x560468170e00 <line:8277:3> Text=" "
| |-ParamCommandComment 0x560468170e50 <col:4, line:8278:3> [in] implicitly Param="src" ParamIndex=3
| | `-ParagraphComment 0x560468170f00 <line:8277:14, line:8278:3>
| | |-TextComment 0x560468170eb0 <line:8277:14, col:43> Text=" Pointer to the value to copy."
| | `-TextComment 0x560468170ed0 <line:8278:3> Text=" "
| `-BlockCommandComment 0x560468170f20 <col:4, col:47> Name="return"
| `-ParagraphComment 0x560468170f80 <col:11, col:47>
| `-TextComment 0x560468170f50 <col:11, col:47> Text=" Zero if success, nonzero if failed. "
|-FunctionDecl 0x56046806a1e0 <line:8295:1, line:8299:14> line:8295:5 ecs_value_move_w_type_info 'int (const ecs_world_t *, const ecs_type_info_t *, void *, void *)'
| |-ParmVarDecl 0x560468069f18 <line:8296:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x560468069f90 <line:8297:5, col:28> col:28 ti 'const ecs_type_info_t *'
| |-ParmVarDecl 0x56046806a010 <line:8298:5, col:11> col:11 dst 'void *'
| |-ParmVarDecl 0x56046806a090 <line:8299:5, col:11> col:11 src 'void *'
| `-FullComment 0x5604681714f0 <line:8287:4, line:8293:47>
| |-ParagraphComment 0x560468171080 <line:8287:4, col:15>
| | `-TextComment 0x560468171050 <col:4, col:15> Text=" Move value."
| |-ParagraphComment 0x5604681710d0 <line:8289:3>
| | `-TextComment 0x5604681710a0 <col:3> Text=" "
| |-ParamCommandComment 0x5604681710f0 <col:4, line:8290:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681711a0 <line:8289:16, line:8290:3>
| | |-TextComment 0x560468171150 <line:8289:16, col:26> Text=" The world."
| | `-TextComment 0x560468171170 <line:8290:3> Text=" "
| |-ParamCommandComment 0x5604681711c0 <col:4, line:8291:3> [in] implicitly Param="ti" ParamIndex=1
| | `-ParagraphComment 0x560468171270 <line:8290:13, line:8291:3>
| | |-TextComment 0x560468171220 <line:8290:13, col:44> Text=" Type info of the value to move."
| | `-TextComment 0x560468171240 <line:8291:3> Text=" "
| |-ParamCommandComment 0x560468171290 <col:4, line:8292:3> [in] implicitly Param="dst" ParamIndex=2
| | `-ParagraphComment 0x560468171340 <line:8291:14, line:8292:3>
| | |-TextComment 0x5604681712f0 <line:8291:14, col:48> Text=" Pointer to the storage to move to."
| | `-TextComment 0x560468171310 <line:8292:3> Text=" "
| |-ParamCommandComment 0x560468171360 <col:4, line:8293:3> [in] implicitly Param="src" ParamIndex=3
| | `-ParagraphComment 0x560468171410 <line:8292:14, line:8293:3>
| | |-TextComment 0x5604681713c0 <line:8292:14, col:43> Text=" Pointer to the value to move."
| | `-TextComment 0x5604681713e0 <line:8293:3> Text=" "
| `-BlockCommandComment 0x560468171430 <col:4, col:47> Name="return"
| `-ParagraphComment 0x560468171490 <col:11, col:47>
| `-TextComment 0x560468171460 <col:11, col:47> Text=" Zero if success, nonzero if failed. "
|-FunctionDecl 0x56046806a5a0 <line:8309:1, line:8313:14> line:8309:5 ecs_value_move 'int (const ecs_world_t *, ecs_entity_t, void *, void *)'
| |-ParmVarDecl 0x56046806a2d8 <line:8310:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x56046806a350 <line:8311:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x56046806a3d0 <line:8312:5, col:11> col:11 dst 'void *'
| |-ParmVarDecl 0x56046806a450 <line:8313:5, col:11> col:11 src 'void *'
| `-FullComment 0x560468171a00 <line:8301:4, line:8307:47>
| |-ParagraphComment 0x560468171590 <line:8301:4, col:15>
| | `-TextComment 0x560468171560 <col:4, col:15> Text=" Move value."
| |-ParagraphComment 0x5604681715e0 <line:8303:3>
| | `-TextComment 0x5604681715b0 <col:3> Text=" "
| |-ParamCommandComment 0x560468171600 <col:4, line:8304:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681716b0 <line:8303:16, line:8304:3>
| | |-TextComment 0x560468171660 <line:8303:16, col:26> Text=" The world."
| | `-TextComment 0x560468171680 <line:8304:3> Text=" "
| |-ParamCommandComment 0x5604681716d0 <col:4, line:8305:3> [in] implicitly Param="type" ParamIndex=1
| | `-ParagraphComment 0x560468171780 <line:8304:15, line:8305:3>
| | |-TextComment 0x560468171730 <line:8304:15, col:45> Text=" The type of the value to move."
| | `-TextComment 0x560468171750 <line:8305:3> Text=" "
| |-ParamCommandComment 0x5604681717a0 <col:4, line:8306:3> [in] implicitly Param="dst" ParamIndex=2
| | `-ParagraphComment 0x560468171850 <line:8305:14, line:8306:3>
| | |-TextComment 0x560468171800 <line:8305:14, col:48> Text=" Pointer to the storage to move to."
| | `-TextComment 0x560468171820 <line:8306:3> Text=" "
| |-ParamCommandComment 0x560468171870 <col:4, line:8307:3> [in] implicitly Param="src" ParamIndex=3
| | `-ParagraphComment 0x560468171920 <line:8306:14, line:8307:3>
| | |-TextComment 0x5604681718d0 <line:8306:14, col:43> Text=" Pointer to the value to move."
| | `-TextComment 0x5604681718f0 <line:8307:3> Text=" "
| `-BlockCommandComment 0x560468171940 <col:4, col:47> Name="return"
| `-ParagraphComment 0x5604681719a0 <col:11, col:47>
| `-TextComment 0x560468171970 <col:11, col:47> Text=" Zero if success, nonzero if failed. "
|-FunctionDecl 0x56046806a8c0 <line:8323:1, line:8327:14> line:8323:5 ecs_value_move_ctor_w_type_info 'int (const ecs_world_t *, const ecs_type_info_t *, void *, void *)'
| |-ParmVarDecl 0x56046806a698 <line:8324:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x56046806a710 <line:8325:5, col:28> col:28 ti 'const ecs_type_info_t *'
| |-ParmVarDecl 0x56046806a790 <line:8326:5, col:11> col:11 dst 'void *'
| |-ParmVarDecl 0x56046806a810 <line:8327:5, col:11> col:11 src 'void *'
| `-FullComment 0x560468171f10 <line:8315:4, line:8321:47>
| |-ParagraphComment 0x560468171aa0 <line:8315:4, col:25>
| | `-TextComment 0x560468171a70 <col:4, col:25> Text=" Move construct value."
| |-ParagraphComment 0x560468171af0 <line:8317:3>
| | `-TextComment 0x560468171ac0 <col:3> Text=" "
| |-ParamCommandComment 0x560468171b10 <col:4, line:8318:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468171bc0 <line:8317:16, line:8318:3>
| | |-TextComment 0x560468171b70 <line:8317:16, col:26> Text=" The world."
| | `-TextComment 0x560468171b90 <line:8318:3> Text=" "
| |-ParamCommandComment 0x560468171be0 <col:4, line:8319:3> [in] implicitly Param="ti" ParamIndex=1
| | `-ParagraphComment 0x560468171c90 <line:8318:13, line:8319:3>
| | |-TextComment 0x560468171c40 <line:8318:13, col:44> Text=" Type info of the value to move."
| | `-TextComment 0x560468171c60 <line:8319:3> Text=" "
| |-ParamCommandComment 0x560468171cb0 <col:4, line:8320:3> [in] implicitly Param="dst" ParamIndex=2
| | `-ParagraphComment 0x560468171d60 <line:8319:14, line:8320:3>
| | |-TextComment 0x560468171d10 <line:8319:14, col:48> Text=" Pointer to the storage to move to."
| | `-TextComment 0x560468171d30 <line:8320:3> Text=" "
| |-ParamCommandComment 0x560468171d80 <col:4, line:8321:3> [in] implicitly Param="src" ParamIndex=3
| | `-ParagraphComment 0x560468171e30 <line:8320:14, line:8321:3>
| | |-TextComment 0x560468171de0 <line:8320:14, col:43> Text=" Pointer to the value to move."
| | `-TextComment 0x560468171e00 <line:8321:3> Text=" "
| `-BlockCommandComment 0x560468171e50 <col:4, col:47> Name="return"
| `-ParagraphComment 0x560468171eb0 <col:11, col:47>
| `-TextComment 0x560468171e80 <col:11, col:47> Text=" Zero if success, nonzero if failed. "
|-FunctionDecl 0x56046806abe0 <line:8337:1, line:8341:14> line:8337:5 ecs_value_move_ctor 'int (const ecs_world_t *, ecs_entity_t, void *, void *)'
| |-ParmVarDecl 0x56046806a9b8 <line:8338:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x56046806aa30 <line:8339:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x56046806aab0 <line:8340:5, col:11> col:11 dst 'void *'
| |-ParmVarDecl 0x56046806ab30 <line:8341:5, col:11> col:11 src 'void *'
| `-FullComment 0x560468172430 <line:8329:4, line:8335:47>
| |-ParagraphComment 0x560468171fb0 <line:8329:4, col:25>
| | `-TextComment 0x560468171f80 <col:4, col:25> Text=" Move construct value."
| |-ParagraphComment 0x560468172000 <line:8331:3>
| | `-TextComment 0x560468171fd0 <col:3> Text=" "
| |-ParamCommandComment 0x560468172020 <col:4, line:8332:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681720d0 <line:8331:16, line:8332:3>
| | |-TextComment 0x560468172080 <line:8331:16, col:26> Text=" The world."
| | `-TextComment 0x5604681720a0 <line:8332:3> Text=" "
| |-ParamCommandComment 0x5604681720f0 <col:4, line:8333:3> [in] implicitly Param="type" ParamIndex=1
| | `-ParagraphComment 0x5604681721a0 <line:8332:15, line:8333:3>
| | |-TextComment 0x560468172150 <line:8332:15, col:45> Text=" The type of the value to move."
| | `-TextComment 0x560468172170 <line:8333:3> Text=" "
| |-ParamCommandComment 0x5604681721c0 <col:4, line:8334:3> [in] implicitly Param="dst" ParamIndex=2
| | `-ParagraphComment 0x560468172270 <line:8333:14, line:8334:3>
| | |-TextComment 0x560468172220 <line:8333:14, col:48> Text=" Pointer to the storage to move to."
| | `-TextComment 0x560468172240 <line:8334:3> Text=" "
| |-ParamCommandComment 0x560468172290 <col:4, line:8335:3> [in] implicitly Param="src" ParamIndex=3
| | `-ParagraphComment 0x560468172340 <line:8334:14, line:8335:3>
| | |-TextComment 0x5604681722f0 <line:8334:14, col:43> Text=" Pointer to the value to move."
| | `-TextComment 0x560468172310 <line:8335:3> Text=" "
| `-BlockCommandComment 0x560468172360 <col:4, col:47> Name="return"
| `-ParagraphComment 0x5604681723d0 <col:11, col:47>
| `-TextComment 0x560468172390 <col:11, col:47> Text=" Zero if success, nonzero if failed. "
|-FunctionDecl 0x56046806c9c8 <line:9212:1, line:9215:20> line:9212:6 _ecs_deprecated 'void (const char *, int32_t, const char *)'
| |-ParmVarDecl 0x56046806c830 <line:9213:5, col:17> col:17 file 'const char *'
| |-ParmVarDecl 0x56046806c8a8 <line:9214:5, col:13> col:13 line 'int32_t':'int'
| |-ParmVarDecl 0x56046806c928 <line:9215:5, col:17> col:17 msg 'const char *'
| `-FullComment 0x560468172550 <line:9207:4, line:9209:80>
| `-ParagraphComment 0x560468172520 <line:9207:4, line:9209:80>
| |-TextComment 0x5604681724a0 <line:9207:4, col:80> Text="/////////////////////////////////////////////////////////////////////////////"
| |-TextComment 0x5604681724c0 <line:9208:4, col:12> Text="/ Tracing"
| `-TextComment 0x5604681724e0 <line:9209:4, col:80> Text="/////////////////////////////////////////////////////////////////////////////"
|-FunctionDecl 0x56046806cba8 <line:9224:1, col:33> col:6 _ecs_log_push 'void (int32_t)'
| |-ParmVarDecl 0x56046806cab8 <col:20, col:28> col:28 level 'int32_t':'int'
| `-FullComment 0x560468172780 <line:9217:4, line:9221:30>
| |-ParagraphComment 0x560468172640 <line:9217:4, line:9219:37>
| | |-TextComment 0x5604681725c0 <line:9217:4, col:23> Text=" Increase log stack."
| | |-TextComment 0x5604681725e0 <line:9218:3, col:80> Text=" This operation increases the indent_ value of the OS API and can be useful to"
| | `-TextComment 0x560468172600 <line:9219:3, col:37> Text=" make nested behavior more visible."
| |-ParagraphComment 0x560468172690 <line:9221:3>
| | `-TextComment 0x560468172660 <col:3> Text=" "
| `-ParamCommandComment 0x5604681726b0 <col:4, col:30> [in] implicitly Param="level" ParamIndex=0
| `-ParagraphComment 0x560468172740 <col:16, col:30>
| `-TextComment 0x560468172710 <col:16, col:30> Text=" The log level."
|-FunctionDecl 0x56046806cd18 <line:9233:1, col:32> col:6 _ecs_log_pop 'void (int32_t)'
| |-ParmVarDecl 0x56046806cc88 <col:19, col:27> col:27 level 'int32_t':'int'
| `-FullComment 0x5604681729b0 <line:9226:4, line:9230:30>
| |-ParagraphComment 0x560468172870 <line:9226:4, line:9228:37>
| | |-TextComment 0x5604681727f0 <line:9226:4, col:23> Text=" Decrease log stack."
| | |-TextComment 0x560468172810 <line:9227:3, col:80> Text=" This operation decreases the indent_ value of the OS API and can be useful to"
| | `-TextComment 0x560468172830 <line:9228:3, col:37> Text=" make nested behavior more visible."
| |-ParagraphComment 0x5604681728c0 <line:9230:3>
| | `-TextComment 0x560468172890 <col:3> Text=" "
| `-ParamCommandComment 0x5604681728e0 <col:4, col:30> [in] implicitly Param="level" ParamIndex=0
| `-ParagraphComment 0x560468172970 <col:16, col:30>
| `-TextComment 0x560468172940 <col:16, col:30> Text=" The log level."
|-FunctionDecl 0x56046808be20 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:9243:34> col:6 ecs_should_log 'bool (int32_t)'
| |-ParmVarDecl 0x56046806cdf8 <col:21, col:29> col:29 level 'int32_t':'int'
| `-FullComment 0x560468172c80 <line:9235:4, line:9240:60>
| |-ParagraphComment 0x560468172aa0 <line:9235:4, line:9237:30>
| | |-TextComment 0x560468172a20 <line:9235:4, col:35> Text=" Should current level be logged."
| | |-TextComment 0x560468172a40 <line:9236:3, col:77> Text=" This operation returns true when the specified log level should be logged "
| | `-TextComment 0x560468172a60 <line:9237:3, col:30> Text=" with the current log level."
| |-ParagraphComment 0x560468172af0 <line:9239:3>
| | `-TextComment 0x560468172ac0 <col:3> Text=" "
| |-ParamCommandComment 0x560468172b10 <col:4, line:9240:3> [in] implicitly Param="level" ParamIndex=0
| | `-ParagraphComment 0x560468172bc0 <line:9239:16, line:9240:3>
| | |-TextComment 0x560468172b70 <line:9239:16, col:43> Text=" The log level to check for."
| | `-TextComment 0x560468172b90 <line:9240:3> Text=" "
| `-BlockCommandComment 0x560468172be0 <col:4, col:60> Name="return"
| `-ParagraphComment 0x560468172c40 <col:11, col:60>
| `-TextComment 0x560468172c10 <col:11, col:60> Text=" Whether logging is enabled for the current level."
|-FunctionDecl 0x56046808c000 <line:9251:1, line:9252:23> line:9251:13 ecs_strerror 'const char *(int32_t)'
| |-ParmVarDecl 0x56046808bf38 <line:9252:5, col:13> col:13 error_code 'int32_t':'int'
| `-FullComment 0x560468172d50 <line:9249:4, col:35>
| `-ParagraphComment 0x560468172d20 <col:4, col:35>
| `-TextComment 0x560468172cf0 <col:4, col:35> Text=" Get description for error code "
|-FunctionDecl 0x56046808c3b0 <line:9280:1, line:9285:8> line:9280:6 _ecs_print 'void (int32_t, const char *, int32_t, const char *, ...)'
| |-ParmVarDecl 0x56046808c0e8 <line:9281:5, col:13> col:13 level 'int32_t':'int'
| |-ParmVarDecl 0x56046808c168 <line:9282:5, col:17> col:17 file 'const char *'
| |-ParmVarDecl 0x56046808c1e0 <line:9283:5, col:13> col:13 line 'int32_t':'int'
| |-ParmVarDecl 0x56046808c260 <line:9284:5, col:17> col:17 fmt 'const char *'
| `-FullComment 0x560468172e70 <line:9275:4, line:9277:80>
| `-ParagraphComment 0x560468172e40 <line:9275:4, line:9277:80>
| |-TextComment 0x560468172dc0 <line:9275:4, col:80> Text="/////////////////////////////////////////////////////////////////////////////"
| |-TextComment 0x560468172de0 <line:9276:4, col:59> Text="/ Logging functions (do nothing when logging is enabled)"
| `-TextComment 0x560468172e00 <line:9277:4, col:80> Text="/////////////////////////////////////////////////////////////////////////////"
|-FunctionDecl 0x56046808c7c8 <line:9288:1, line:9293:17> line:9288:6 _ecs_printv 'void (int, const char *, int32_t, const char *, struct __va_list_tag *)'
| |-ParmVarDecl 0x56046808c488 <line:9289:5, col:9> col:9 level 'int'
| |-ParmVarDecl 0x56046808c508 <line:9290:5, col:17> col:17 file 'const char *'
| |-ParmVarDecl 0x56046808c580 <line:9291:5, col:13> col:13 line 'int32_t':'int'
| |-ParmVarDecl 0x56046808c600 <line:9292:5, col:17> col:17 fmt 'const char *'
| `-ParmVarDecl 0x56046808c678 <line:9293:5, col:13> col:13 args 'struct __va_list_tag *':'struct __va_list_tag *'
|-FunctionDecl 0x56046808cac0 <line:9296:1, line:9301:8> line:9296:6 _ecs_log 'void (int32_t, const char *, int32_t, const char *, ...)'
| |-ParmVarDecl 0x56046808c8a0 <line:9297:5, col:13> col:13 level 'int32_t':'int'
| |-ParmVarDecl 0x56046808c920 <line:9298:5, col:17> col:17 file 'const char *'
| |-ParmVarDecl 0x56046808c998 <line:9299:5, col:13> col:13 line 'int32_t':'int'
| `-ParmVarDecl 0x56046808ca18 <line:9300:5, col:17> col:17 fmt 'const char *'
|-FunctionDecl 0x56046808cf38 <line:9304:1, line:9309:17> line:9304:6 _ecs_logv 'void (int, const char *, int32_t, const char *, struct __va_list_tag *)'
| |-ParmVarDecl 0x56046808cb98 <line:9305:5, col:9> col:9 level 'int'
| |-ParmVarDecl 0x56046808cc18 <line:9306:5, col:17> col:17 file 'const char *'
| |-ParmVarDecl 0x56046808cc90 <line:9307:5, col:13> col:13 line 'int32_t':'int'
| |-ParmVarDecl 0x56046808cd10 <line:9308:5, col:17> col:17 fmt 'const char *'
| `-ParmVarDecl 0x56046808cd88 <line:9309:5, col:13> col:13 args 'struct __va_list_tag *':'struct __va_list_tag *'
|-FunctionDecl 0x56046808d230 <line:9312:1, line:9317:8> line:9312:6 _ecs_abort 'void (int32_t, const char *, int32_t, const char *, ...)'
| |-ParmVarDecl 0x56046808d010 <line:9313:5, col:13> col:13 error_code 'int32_t':'int'
| |-ParmVarDecl 0x56046808d090 <line:9314:5, col:17> col:17 file 'const char *'
| |-ParmVarDecl 0x56046808d108 <line:9315:5, col:13> col:13 line 'int32_t':'int'
| `-ParmVarDecl 0x56046808d188 <line:9316:5, col:17> col:17 fmt 'const char *'
|-FunctionDecl 0x56046808d6f0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:9327:8> line:9320:6 _ecs_assert 'bool (bool, int32_t, const char *, const char *, int32_t, const char *, ...)'
| |-ParmVarDecl 0x56046808d300 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:9321:10> col:10 condition 'bool'
| |-ParmVarDecl 0x56046808d378 <line:9322:5, col:13> col:13 error_code 'int32_t':'int'
| |-ParmVarDecl 0x56046808d3f8 <line:9323:5, col:17> col:17 condition_str 'const char *'
| |-ParmVarDecl 0x56046808d478 <line:9324:5, col:17> col:17 file 'const char *'
| |-ParmVarDecl 0x56046808d4f0 <line:9325:5, col:13> col:13 line 'int32_t':'int'
| `-ParmVarDecl 0x56046808d570 <line:9326:5, col:17> col:17 fmt 'const char *'
|-FunctionDecl 0x56046808daa0 <line:9330:1, line:9335:8> line:9330:6 _ecs_parser_error 'void (const char *, const char *, int64_t, const char *, ...)'
| |-ParmVarDecl 0x56046808d7d8 <line:9331:5, col:17> col:17 name 'const char *'
| |-ParmVarDecl 0x56046808d858 <line:9332:5, col:17> col:17 expr 'const char *'
| |-ParmVarDecl 0x56046808d8d0 <line:9333:5, col:13> col:13 column 'int64_t':'long'
| `-ParmVarDecl 0x56046808d950 <line:9334:5, col:17> col:17 fmt 'const char *'
|-FunctionDecl 0x56046808df00 <line:9338:1, line:9343:17> line:9338:6 _ecs_parser_errorv 'void (const char *, const char *, int64_t, const char *, struct __va_list_tag *)'
| |-ParmVarDecl 0x56046808db78 <line:9339:5, col:17> col:17 name 'const char *'
| |-ParmVarDecl 0x56046808dbf8 <line:9340:5, col:17> col:17 expr 'const char *'
| |-ParmVarDecl 0x56046808dc70 <line:9341:5, col:13> col:13 column 'int64_t':'long'
| |-ParmVarDecl 0x56046808dcf0 <line:9342:5, col:17> col:17 fmt 'const char *'
| `-ParmVarDecl 0x56046808dd68 <line:9343:5, col:13> col:13 args 'struct __va_list_tag *':'struct __va_list_tag *'
|-FunctionDecl 0x56046808e228 <line:9605:1, line:9606:14> line:9605:5 ecs_log_set_level 'int (int)'
| |-ParmVarDecl 0x56046808e190 <line:9606:5, col:9> col:9 level 'int'
| `-FullComment 0x560468173300 <line:9586:4, line:9602:34>
| |-ParagraphComment 0x560468172f60 <line:9586:4, line:9588:67>
| | |-TextComment 0x560468172ee0 <line:9586:4, col:30> Text=" Enable or disable tracing."
| | |-TextComment 0x560468172f00 <line:9587:3, col:76> Text=" This will enable builtin tracing. For tracing to work, it will have to be"
| | `-TextComment 0x560468172f20 <line:9588:3, col:67> Text=" compiled in which requires defining one of the following macros:"
| |-ParagraphComment 0x560468173020 <line:9590:3, line:9593:49>
| | |-TextComment 0x560468172f80 <line:9590:3, col:40> Text=" FLECS_LOG_0 - All tracing is disabled"
| | |-TextComment 0x560468172fa0 <line:9591:3, col:39> Text=" FLECS_LOG_1 - Enable tracing level 1"
| | |-TextComment 0x560468172fc0 <line:9592:3, col:49> Text=" FLECS_LOG_2 - Enable tracing level 2 and below"
| | `-TextComment 0x560468172fe0 <line:9593:3, col:49> Text=" FLECS_LOG_3 - Enable tracing level 3 and below"
| |-ParagraphComment 0x560468173090 <line:9595:3, line:9596:35>
| | |-TextComment 0x560468173040 <line:9595:3, col:77> Text=" If no tracing level is defined and this is a debug build, FLECS_LOG_3 will"
| | `-TextComment 0x560468173060 <line:9596:3, col:35> Text=" have been automatically defined."
| |-ParagraphComment 0x560468173100 <line:9598:3, line:9599:80>
| | |-TextComment 0x5604681730b0 <line:9598:3, col:78> Text=" The provided level corresponds with the tracing level. If -1 is provided as"
| | `-TextComment 0x5604681730d0 <line:9599:3, col:80> Text=" value, warnings are disabled. If -2 is provided, errors are disabled as well."
| |-ParagraphComment 0x560468173150 <line:9601:3>
| | `-TextComment 0x560468173120 <col:3> Text=" "
| |-ParamCommandComment 0x560468173170 <col:4, line:9602:3> [in] implicitly Param="level" ParamIndex=0
| | `-ParagraphComment 0x560468173220 <line:9601:16, line:9602:3>
| | |-TextComment 0x5604681731d0 <line:9601:16, col:38> Text=" Desired tracing level."
| | `-TextComment 0x5604681731f0 <line:9602:3> Text=" "
| `-BlockCommandComment 0x560468173240 <col:4, col:34> Name="return"
| `-ParagraphComment 0x5604681732a0 <col:11, col:34>
| `-TextComment 0x560468173270 <col:11, col:34> Text=" Previous tracing level."
|-FunctionDecl 0x56046808e3c8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:9616:17> line:9615:6 ecs_log_enable_colors 'bool (bool)'
| |-ParmVarDecl 0x56046808e308 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:9616:10> col:10 enabled 'bool'
| `-FullComment 0x5604681735a0 <line:9608:4, line:9612:34>
| |-ParagraphComment 0x5604681733c0 <line:9608:4, line:9609:33>
| | |-TextComment 0x560468173370 <line:9608:4, col:39> Text=" Enable/disable tracing with colors."
| | `-TextComment 0x560468173390 <line:9609:3, col:33> Text=" By default colors are enabled."
| |-ParagraphComment 0x560468173410 <line:9611:3>
| | `-TextComment 0x5604681733e0 <col:3> Text=" "
| |-ParamCommandComment 0x560468173430 <col:4, line:9612:3> [in] implicitly Param="enabled" ParamIndex=0
| | `-ParagraphComment 0x5604681734e0 <line:9611:18, line:9612:3>
| | |-TextComment 0x560468173490 <line:9611:18, col:56> Text=" Whether to enable tracing with colors."
| | `-TextComment 0x5604681734b0 <line:9612:3> Text=" "
| `-BlockCommandComment 0x560468173500 <col:4, col:34> Name="return"
| `-ParagraphComment 0x560468173560 <col:11, col:34>
| `-TextComment 0x560468173530 <col:11, col:34> Text=" Previous color setting."
|-FunctionDecl 0x56046808e538 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:9627:17> line:9626:6 ecs_log_enable_timestamp 'bool (bool)'
| |-ParmVarDecl 0x56046808e4a8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:9627:10> col:10 enabled 'bool'
| `-FullComment 0x560468173870 <line:9618:4, line:9623:38>
| |-ParagraphComment 0x560468173690 <line:9618:4, line:9620:69>
| | |-TextComment 0x560468173610 <line:9618:4, col:37> Text=" Enable/disable logging timestamp."
| | |-TextComment 0x560468173630 <line:9619:3, col:79> Text=" By default timestamps are disabled. Note that enabling timestamps introduces"
| | `-TextComment 0x560468173650 <line:9620:3, col:69> Text=" overhead as the logging code will need to obtain the current time."
| |-ParagraphComment 0x5604681736e0 <line:9622:3>
| | `-TextComment 0x5604681736b0 <col:3> Text=" "
| |-ParamCommandComment 0x560468173700 <col:4, line:9623:3> [in] implicitly Param="enabled" ParamIndex=0
| | `-ParagraphComment 0x5604681737b0 <line:9622:18, line:9623:3>
| | |-TextComment 0x560468173760 <line:9622:18, col:60> Text=" Whether to enable tracing with timestamps."
| | `-TextComment 0x560468173780 <line:9623:3> Text=" "
| `-BlockCommandComment 0x5604681737d0 <col:4, col:38> Name="return"
| `-ParagraphComment 0x560468173830 <col:11, col:38>
| `-TextComment 0x560468173800 <col:11, col:38> Text=" Previous timestamp setting."
|-FunctionDecl 0x56046808e6a8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:9644:17> line:9643:6 ecs_log_enable_timedelta 'bool (bool)'
| |-ParmVarDecl 0x56046808e618 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:9644:10> col:10 enabled 'bool'
| `-FullComment 0x560468173c40 <line:9629:4, line:9640:38>
| |-ParagraphComment 0x560468173960 <line:9629:4, line:9631:69>
| | |-TextComment 0x5604681738e0 <line:9629:4, col:47> Text=" Enable/disable logging time since last log."
| | |-TextComment 0x560468173900 <line:9630:3, col:77> Text=" By default deltatime is disabled. Note that enabling timestamps introduces"
| | `-TextComment 0x560468173920 <line:9631:3, col:69> Text=" overhead as the logging code will need to obtain the current time."
| |-ParagraphComment 0x560468173a00 <line:9633:3, line:9635:25>
| | |-TextComment 0x560468173980 <line:9633:3, col:78> Text=" When enabled, this logs the amount of time in seconds passed since the last"
| | |-TextComment 0x5604681739a0 <line:9634:3, col:79> Text=" log, when this amount is non-zero. The format is a '+' character followed by"
| | `-TextComment 0x5604681739c0 <line:9635:3, col:25> Text=" the number of seconds:"
| |-ParagraphComment 0x560468173a50 <line:9637:3, col:26>
| | `-TextComment 0x560468173a20 <col:3, col:26> Text=" +1 trace: log message"
| |-ParagraphComment 0x560468173aa0 <line:9639:3>
| | `-TextComment 0x560468173a70 <col:3> Text=" "
| |-ParamCommandComment 0x560468173ac0 <col:4, line:9640:3> [in] implicitly Param="enabled" ParamIndex=0
| | `-ParagraphComment 0x560468173b70 <line:9639:18, line:9640:3>
| | |-TextComment 0x560468173b20 <line:9639:18, col:60> Text=" Whether to enable tracing with timestamps."
| | `-TextComment 0x560468173b40 <line:9640:3> Text=" "
| `-BlockCommandComment 0x560468173b90 <col:4, col:38> Name="return"
| `-ParagraphComment 0x560468173bf0 <col:11, col:38>
| `-TextComment 0x560468173bc0 <col:11, col:38> Text=" Previous timestamp setting."
|-FunctionDecl 0x56046808e840 <line:9652:1, col:28> col:5 ecs_log_last_error 'int (void)'
| `-FullComment 0x560468173e10 <line:9646:4, line:9649:74>
| |-ParagraphComment 0x560468173d00 <line:9646:4, line:9647:48>
| | |-TextComment 0x560468173cb0 <line:9646:4, col:31> Text=" Get last logged error code."
| | `-TextComment 0x560468173cd0 <line:9647:3, col:48> Text=" Calling this operation resets the error code."
| |-ParagraphComment 0x560468173d50 <line:9649:3>
| | `-TextComment 0x560468173d20 <col:3> Text=" "
| `-BlockCommandComment 0x560468173d70 <col:4, col:74> Name="return"
| `-ParagraphComment 0x560468173dd0 <col:11, col:74>
| `-TextComment 0x560468173da0 <col:11, col:74> Text=" Last error, 0 if none was logged since last call to last_error."
|-TypedefDecl 0x56046808eb38 <line:9770:1, line:9771:23> line:9770:14 referenced ecs_app_init_action_t 'int (*)(ecs_world_t *)'
| |-PointerType 0x56046808ead0 'int (*)(ecs_world_t *)'
| | `-ParenType 0x56046808ea70 'int (ecs_world_t *)' sugar
| | `-FunctionProtoType 0x560468036630 'int (ecs_world_t *)' cdecl
| | |-BuiltinType 0x560467ec18b0 'int'
| | `-PointerType 0x560468002270 'ecs_world_t *'
| | `-TypedefType 0x5604680013d0 'ecs_world_t' sugar
| | |-Typedef 0x560467fff598 'ecs_world_t'
| | `-ElaboratedType 0x560467fff540 'struct ecs_world_t' sugar
| | `-RecordType 0x560467fff520 'struct ecs_world_t'
| | `-Record 0x560467fff4a0 'ecs_world_t'
| `-FullComment 0x560468173ee0 <line:9769:4, col:35>
| `-ParagraphComment 0x560468173eb0 <col:4, col:35>
| `-TextComment 0x560468173e80 <col:4, col:35> Text=" Callback type for init action. "
|-RecordDecl 0x56046808ebb8 <line:9774:9, line:9786:1> line:9774:16 struct ecs_app_desc_t definition
| |-FullComment 0x560468173fb0 <line:9773:4, col:27>
| | `-ParagraphComment 0x560468173f80 <col:4, col:27>
| | `-TextComment 0x560468173f50 <col:4, col:27> Text=" Used with ecs_app_run. "
| |-FieldDecl 0x56046808ec78 <line:37:21, line:9775:17> col:17 target_fps 'float'
| | `-FullComment 0x560468174080 <col:35, col:47>
| | `-ParagraphComment 0x560468174050 <col:35, col:47>
| | `-TextComment 0x560468174020 <col:35, col:47> Text=" Target FPS. "
| |-FieldDecl 0x56046808ed10 <line:37:21, line:9776:17> col:17 delta_time 'float'
| | `-FullComment 0x560468174150 <col:35, col:80>
| | `-ParagraphComment 0x560468174120 <col:35, col:80>
| | `-TextComment 0x5604681740f0 <col:35, col:80> Text=" Frame time increment (0 for measured values) "
| |-FieldDecl 0x56046808ed98 <line:9777:5, col:13> col:13 threads 'int32_t':'int'
| | `-FullComment 0x560468174220 <col:35, col:54>
| | `-ParagraphComment 0x5604681741f0 <col:35, col:54>
| | `-TextComment 0x5604681741c0 <col:35, col:54> Text=" Number of threads. "
| |-FieldDecl 0x56046808ee28 <line:9778:5, col:13> col:13 frames 'int32_t':'int'
| | `-FullComment 0x5604681742f0 <col:35, col:76>
| | `-ParagraphComment 0x5604681742c0 <col:35, col:76>
| | `-TextComment 0x560468174290 <col:35, col:76> Text=" Number of frames to run (0 for infinite) "
| |-FieldDecl 0x560468099150 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:9779:10> col:10 enable_rest 'bool'
| | `-FullComment 0x5604681743d0 <col:35, col:74>
| | `-ParagraphComment 0x560468174390 <col:35, col:74>
| | `-TextComment 0x560468174360 <col:35, col:74> Text=" Allows HTTP clients to access ECS data "
| |-FieldDecl 0x5604680991d8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:9780:10> col:10 enable_monitor 'bool'
| | `-FullComment 0x5604681744a0 <col:35, col:67>
| | `-ParagraphComment 0x560468174470 <col:35, col:67>
| | `-TextComment 0x560468174440 <col:35, col:67> Text=" Periodically collect statistics "
| |-FieldDecl 0x560468099290 <line:9782:5, col:27> col:27 init 'ecs_app_init_action_t':'int (*)(ecs_world_t *)'
| | `-FullComment 0x560468174590 <col:37, line:9783:46>
| | `-ParagraphComment 0x560468174560 <line:9782:37, line:9783:46>
| | |-TextComment 0x560468174510 <line:9782:37, col:80> Text=" If set, function is ran before starting the"
| | `-TextComment 0x560468174530 <line:9783:35, col:46> Text=" main loop. "
| `-FieldDecl 0x560468099320 <line:9785:5, col:11> col:11 ctx 'void *'
| `-FullComment 0x560468174660 <col:35, col:73>
| `-ParagraphComment 0x560468174630 <col:35, col:73>
| `-TextComment 0x560468174600 <col:35, col:73> Text=" Reserved for custom run/frame actions "
|-TypedefDecl 0x5604680993f8 <line:9774:1, line:9786:3> col:3 referenced ecs_app_desc_t 'struct ecs_app_desc_t':'struct ecs_app_desc_t'
| |-ElaboratedType 0x5604680993a0 'struct ecs_app_desc_t' sugar
| | `-RecordType 0x56046808ec40 'struct ecs_app_desc_t'
| | `-Record 0x56046808ebb8 'ecs_app_desc_t'
| `-FullComment 0x560468174730 <line:9773:4, col:27>
| `-ParagraphComment 0x560468174700 <col:4, col:27>
| `-TextComment 0x5604681746d0 <col:4, col:27> Text=" Used with ecs_app_run. "
|-TypedefDecl 0x560468099750 <line:9789:1, line:9791:25> line:9789:14 referenced ecs_app_run_action_t 'int (*)(ecs_world_t *, ecs_app_desc_t *)'
| |-PointerType 0x5604680996e0 'int (*)(ecs_world_t *, ecs_app_desc_t *)'
| | `-ParenType 0x560468099680 'int (ecs_world_t *, ecs_app_desc_t *)' sugar
| | `-FunctionProtoType 0x560468099640 'int (ecs_world_t *, ecs_app_desc_t *)' cdecl
| | |-BuiltinType 0x560467ec18b0 'int'
| | |-PointerType 0x560468002270 'ecs_world_t *'
| | | `-TypedefType 0x5604680013d0 'ecs_world_t' sugar
| | | |-Typedef 0x560467fff598 'ecs_world_t'
| | | `-ElaboratedType 0x560467fff540 'struct ecs_world_t' sugar
| | | `-RecordType 0x560467fff520 'struct ecs_world_t'
| | | `-Record 0x560467fff4a0 'ecs_world_t'
| | `-PointerType 0x560468099560 'ecs_app_desc_t *'
| | `-TypedefType 0x560468099510 'ecs_app_desc_t' sugar
| | |-Typedef 0x5604680993f8 'ecs_app_desc_t'
| | `-ElaboratedType 0x5604680993a0 'struct ecs_app_desc_t' sugar
| | `-RecordType 0x56046808ec40 'struct ecs_app_desc_t'
| | `-Record 0x56046808ebb8 'ecs_app_desc_t'
| `-FullComment 0x560468174800 <line:9788:4, col:34>
| `-ParagraphComment 0x5604681747d0 <col:4, col:34>
| `-TextComment 0x5604681747a0 <col:4, col:34> Text=" Callback type for run action. "
|-TypedefDecl 0x560468099a70 <line:9794:1, line:9796:31> line:9794:14 referenced ecs_app_frame_action_t 'int (*)(ecs_world_t *, const ecs_app_desc_t *)'
| |-PointerType 0x560468099a00 'int (*)(ecs_world_t *, const ecs_app_desc_t *)'
| | `-ParenType 0x5604680999a0 'int (ecs_world_t *, const ecs_app_desc_t *)' sugar
| | `-FunctionProtoType 0x560468099960 'int (ecs_world_t *, const ecs_app_desc_t *)' cdecl
| | |-BuiltinType 0x560467ec18b0 'int'
| | |-PointerType 0x560468002270 'ecs_world_t *'
| | | `-TypedefType 0x5604680013d0 'ecs_world_t' sugar
| | | |-Typedef 0x560467fff598 'ecs_world_t'
| | | `-ElaboratedType 0x560467fff540 'struct ecs_world_t' sugar
| | | `-RecordType 0x560467fff520 'struct ecs_world_t'
| | | `-Record 0x560467fff4a0 'ecs_world_t'
| | `-PointerType 0x560468099880 'const ecs_app_desc_t *'
| | `-QualType 0x560468099511 'const ecs_app_desc_t' const
| | `-TypedefType 0x560468099510 'ecs_app_desc_t' sugar
| | |-Typedef 0x5604680993f8 'ecs_app_desc_t'
| | `-ElaboratedType 0x5604680993a0 'struct ecs_app_desc_t' sugar
| | `-RecordType 0x56046808ec40 'struct ecs_app_desc_t'
| | `-Record 0x56046808ebb8 'ecs_app_desc_t'
| `-FullComment 0x5604681748d0 <line:9793:4, col:36>
| `-ParagraphComment 0x5604681748a0 <col:4, col:36>
| `-TextComment 0x560468174870 <col:4, col:36> Text=" Callback type for frame action. "
|-FunctionDecl 0x560468099c20 <line:9810:1, line:9812:25> line:9810:5 ecs_app_run 'int (ecs_world_t *, ecs_app_desc_t *)'
| |-ParmVarDecl 0x560468099b08 <line:9811:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468099b80 <line:9812:5, col:21> col:21 desc 'ecs_app_desc_t *'
| `-FullComment 0x560468174c80 <line:9798:4, line:9807:38>
| |-ParagraphComment 0x5604681749c0 <line:9798:4, line:9800:75>
| | |-TextComment 0x560468174940 <line:9798:4, col:20> Text=" Run application."
| | |-TextComment 0x560468174960 <line:9799:3, col:77> Text=" This will run the application with the parameters specified in desc. After"
| | `-TextComment 0x560468174980 <line:9800:3, col:75> Text=" the application quits (ecs_quit is called) the world will be cleaned up."
| |-ParagraphComment 0x560468174a60 <line:9802:3, line:9804:18>
| | |-TextComment 0x5604681749e0 <line:9802:3, col:75> Text=" If a custom run action is set, it will be invoked by this operation. The"
| | |-TextComment 0x560468174a00 <line:9803:3, col:73> Text=" default run action calls the frame action in a loop until it returns a"
| | `-TextComment 0x560468174a20 <line:9804:3, col:18> Text=" non-zero value."
| |-ParagraphComment 0x560468174ab0 <line:9806:3>
| | `-TextComment 0x560468174a80 <col:3> Text=" "
| |-ParamCommandComment 0x560468174ad0 <col:4, line:9807:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468174b80 <line:9806:16, line:9807:3>
| | |-TextComment 0x560468174b30 <line:9806:16, col:26> Text=" The world."
| | `-TextComment 0x560468174b50 <line:9807:3> Text=" "
| `-ParamCommandComment 0x560468174ba0 <col:4, col:38> [in] implicitly Param="desc" ParamIndex=1
| `-ParagraphComment 0x560468174c30 <col:15, col:38>
| `-TextComment 0x560468174c00 <col:15, col:38> Text=" Application parameters."
|-FunctionDecl 0x560468099e20 <line:9823:1, line:9825:31> line:9823:5 ecs_app_run_frame 'int (ecs_world_t *, const ecs_app_desc_t *)'
| |-ParmVarDecl 0x560468099d08 <line:9824:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x560468099d80 <line:9825:5, col:27> col:27 desc 'const ecs_app_desc_t *'
| `-FullComment 0x560468175030 <line:9814:4, line:9820:41>
| |-ParagraphComment 0x560468174d70 <line:9814:4, line:9816:62>
| | |-TextComment 0x560468174cf0 <line:9814:4, col:27> Text=" Default frame callback."
| | |-TextComment 0x560468174d10 <line:9815:3, col:80> Text=" This operation will run a single frame. By default this operation will invoke"
| | `-TextComment 0x560468174d30 <line:9816:3, col:62> Text=" ecs_progress directly, unless a custom frame action is set."
| |-ParagraphComment 0x560468174dc0 <line:9818:3>
| | `-TextComment 0x560468174d90 <col:3> Text=" "
| |-ParamCommandComment 0x560468174de0 <col:4, line:9819:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468174e90 <line:9818:16, line:9819:3>
| | |-TextComment 0x560468174e40 <line:9818:16, col:26> Text=" The world."
| | `-TextComment 0x560468174e60 <line:9819:3> Text=" "
| |-ParamCommandComment 0x560468174eb0 <col:4, line:9820:3> [in] implicitly Param="desc" ParamIndex=1
| | `-ParagraphComment 0x560468174f60 <line:9819:15, line:9820:3>
| | |-TextComment 0x560468174f10 <line:9819:15, col:53> Text=" The desc struct passed to ecs_app_run."
| | `-TextComment 0x560468174f30 <line:9820:3> Text=" "
| `-BlockCommandComment 0x560468174f80 <col:4, col:41> Name="return"
| `-ParagraphComment 0x560468174fe0 <col:11, col:41>
| `-TextComment 0x560468174fb0 <col:11, col:41> Text=" value returned by ecs_progress"
|-FunctionDecl 0x56046809a030 <line:9833:1, line:9834:34> line:9833:5 ecs_app_set_run_action 'int (ecs_app_run_action_t)'
| |-ParmVarDecl 0x560468099f30 <line:9834:5, col:26> col:26 callback 'ecs_app_run_action_t':'int (*)(ecs_world_t *, ecs_app_desc_t *)'
| `-FullComment 0x560468175230 <line:9827:4, line:9830:34>
| |-ParagraphComment 0x5604681750f0 <line:9827:4, line:9828:19>
| | |-TextComment 0x5604681750a0 <line:9827:4, col:26> Text=" Set custom run action."
| | `-TextComment 0x5604681750c0 <line:9828:3, col:19> Text=" See ecs_app_run."
| |-ParagraphComment 0x560468175140 <line:9830:3>
| | `-TextComment 0x560468175110 <col:3> Text=" "
| `-ParamCommandComment 0x560468175160 <col:4, col:34> [in] implicitly Param="callback" ParamIndex=0
| `-ParagraphComment 0x5604681751f0 <col:19, col:34>
| `-TextComment 0x5604681751c0 <col:19, col:34> Text=" The run action."
|-FunctionDecl 0x56046809acf0 <line:9842:1, line:9843:36> line:9842:5 ecs_app_set_frame_action 'int (ecs_app_frame_action_t)'
| |-ParmVarDecl 0x56046809abf0 <line:9843:5, col:28> col:28 callback 'ecs_app_frame_action_t':'int (*)(ecs_world_t *, const ecs_app_desc_t *)'
| `-FullComment 0x560468175430 <line:9836:4, line:9839:36>
| |-ParagraphComment 0x5604681752f0 <line:9836:4, line:9837:25>
| | |-TextComment 0x5604681752a0 <line:9836:4, col:28> Text=" Set custom frame action."
| | `-TextComment 0x5604681752c0 <line:9837:3, col:25> Text=" See ecs_app_run_frame."
| |-ParagraphComment 0x560468175340 <line:9839:3>
| | `-TextComment 0x560468175310 <col:3> Text=" "
| `-ParamCommandComment 0x560468175360 <col:4, col:36> [in] implicitly Param="callback" ParamIndex=0
| `-ParagraphComment 0x5604681753f0 <col:19, col:36>
| `-TextComment 0x5604681753c0 <col:19, col:36> Text=" The frame action."
|-VarDecl 0x56046809ae68 <line:9910:11, <scratch space>:52:1> col:1 FLECS__EEcsRest 'const ecs_entity_t':'const unsigned long' extern
|-RecordDecl 0x56046809aed0 <flecs.h:9912:9, line:9916:1> line:9912:9 struct definition
| |-FieldDecl 0x56046809af80 <line:9913:5, col:14> col:14 port 'uint16_t':'unsigned short'
| | `-FullComment 0x560468175500 <col:29, col:72>
| | `-ParagraphComment 0x5604681754d0 <col:29, col:72>
| | `-TextComment 0x5604681754a0 <col:29, col:72> Text=" Port of server (optional, default = 27750) "
| |-FieldDecl 0x56046809b010 <line:9914:5, col:11> col:11 ipaddr 'char *'
| | `-FullComment 0x5604681755d0 <col:29, col:77>
| | `-ParagraphComment 0x5604681755a0 <col:29, col:77>
| | `-TextComment 0x560468175570 <col:29, col:77> Text=" Interface address (optional, default = 0.0.0.0) "
| `-FieldDecl 0x56046809b0a0 <line:9915:5, col:11> col:11 impl 'void *'
|-TypedefDecl 0x56046809b148 <line:9912:1, line:9916:3> col:3 EcsRest 'struct EcsRest':'EcsRest'
| `-ElaboratedType 0x56046809b0f0 'struct EcsRest' sugar
| `-RecordType 0x56046809af50 'EcsRest'
| `-Record 0x56046809aed0 ''
|-VarDecl 0x56046809b1c8 <line:9919:1, col:16> col:16 ecs_rest_request_count 'int64_t':'long' extern
|-VarDecl 0x56046809b240 <line:9920:1, col:16> col:16 ecs_rest_entity_count 'int64_t':'long' extern
|-VarDecl 0x56046809b2b8 <line:9921:1, col:16> col:16 ecs_rest_entity_error_count 'int64_t':'long' extern
|-VarDecl 0x56046809b330 <line:9922:1, col:16> col:16 ecs_rest_query_count 'int64_t':'long' extern
|-VarDecl 0x56046809b3a8 <line:9923:1, col:16> col:16 ecs_rest_query_error_count 'int64_t':'long' extern
|-VarDecl 0x56046809b420 <line:9924:1, col:16> col:16 ecs_rest_query_name_count 'int64_t':'long' extern
|-VarDecl 0x56046809b498 <line:9925:1, col:16> col:16 ecs_rest_query_name_error_count 'int64_t':'long' extern
|-VarDecl 0x56046809b510 <line:9926:1, col:16> col:16 ecs_rest_query_name_from_cache_count 'int64_t':'long' extern
|-VarDecl 0x56046809b588 <line:9927:1, col:16> col:16 ecs_rest_enable_count 'int64_t':'long' extern
|-VarDecl 0x56046809b600 <line:9928:1, col:16> col:16 ecs_rest_enable_error_count 'int64_t':'long' extern
|-VarDecl 0x56046809b678 <line:9929:1, col:16> col:16 ecs_rest_delete_count 'int64_t':'long' extern
|-VarDecl 0x56046809b6f0 <line:9930:1, col:16> col:16 ecs_rest_delete_error_count 'int64_t':'long' extern
|-VarDecl 0x56046809b768 <line:9931:1, col:16> col:16 ecs_rest_world_stats_count 'int64_t':'long' extern
|-VarDecl 0x56046809b7e0 <line:9932:1, col:16> col:16 ecs_rest_pipeline_stats_count 'int64_t':'long' extern
|-VarDecl 0x56046809b858 <line:9933:1, col:16> col:16 ecs_rest_stats_error_count 'int64_t':'long' extern
|-FunctionDecl 0x56046809b960 <line:9937:1, line:9938:23> line:9937:6 FlecsRestImport 'void (ecs_world_t *)'
| `-ParmVarDecl 0x56046809b8d0 <line:9938:5, col:18> col:18 world 'ecs_world_t *'
|-RecordDecl 0x56046809bac8 <line:9989:9, line:9995:1> line:9989:16 struct EcsTimer definition
| |-FullComment 0x5604681756a0 <line:9988:4, col:61>
| | `-ParagraphComment 0x560468175670 <col:4, col:61>
| | `-TextComment 0x560468175640 <col:4, col:61> Text=" Component used for one shot/interval timer functionality "
| |-FieldDecl 0x56046809bb88 <line:37:21, line:9990:17> col:17 timeout 'float'
| | `-FullComment 0x560468175770 <col:38, col:59>
| | `-ParagraphComment 0x560468175740 <col:38, col:59>
| | `-TextComment 0x560468175710 <col:38, col:59> Text=" Timer timeout period "
| |-FieldDecl 0x56046809bec0 <line:37:21, line:9991:17> col:17 time 'float'
| | `-FullComment 0x560468175840 <col:38, col:62>
| | `-ParagraphComment 0x560468175810 <col:38, col:62>
| | `-TextComment 0x5604681757e0 <col:38, col:62> Text=" Incrementing time value "
| |-FieldDecl 0x56046809bf48 <line:9992:5, col:13> col:13 fired_count 'int32_t':'int'
| | `-FullComment 0x560468175910 <col:38, col:61>
| | `-ParagraphComment 0x5604681758e0 <col:38, col:61>
| | `-TextComment 0x5604681758b0 <col:38, col:61> Text=" Number of times ticked "
| |-FieldDecl 0x56046809bfd8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:9993:10> col:10 active 'bool'
| | `-FullComment 0x5604681759e0 <col:38, col:65>
| | `-ParagraphComment 0x5604681759b0 <col:38, col:65>
| | `-TextComment 0x560468175980 <col:38, col:65> Text=" Is the timer active or not "
| `-FieldDecl 0x56046809c068 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:9994:10> col:10 single_shot 'bool'
| `-FullComment 0x560468175ab0 <col:38, col:66>
| `-ParagraphComment 0x560468175a80 <col:38, col:66>
| `-TextComment 0x560468175a50 <col:38, col:66> Text=" Is this a single shot timer "
|-TypedefDecl 0x56046809c148 <line:9989:1, line:9995:3> col:3 EcsTimer 'struct EcsTimer':'struct EcsTimer'
| |-ElaboratedType 0x56046809c0f0 'struct EcsTimer' sugar
| | `-RecordType 0x56046809bb50 'struct EcsTimer'
| | `-Record 0x56046809bac8 'EcsTimer'
| `-FullComment 0x560468175b80 <line:9988:4, col:61>
| `-ParagraphComment 0x560468175b50 <col:4, col:61>
| `-TextComment 0x560468175b20 <col:4, col:61> Text=" Component used for one shot/interval timer functionality "
|-RecordDecl 0x56046809c1e0 <line:9998:9, line:10003:1> line:9998:16 struct EcsRateFilter definition
| |-FullComment 0x560468175c50 <line:9997:4, col:41>
| | `-ParagraphComment 0x560468175c20 <col:4, col:41>
| | `-TextComment 0x560468175bf0 <col:4, col:41> Text=" Apply a rate filter to a tick source "
| |-FieldDecl 0x56046809c290 <line:9999:5, col:18> col:18 src 'ecs_entity_t':'unsigned long'
| | `-FullComment 0x560468175d20 <col:38, col:64>
| | `-ParagraphComment 0x560468175cf0 <col:38, col:64>
| | `-TextComment 0x560468175cc0 <col:38, col:64> Text=" Source of the rate filter "
| |-FieldDecl 0x56046809c318 <line:10000:5, col:13> col:13 rate 'int32_t':'int'
| | `-FullComment 0x560468175df0 <col:38, col:62>
| | `-ParagraphComment 0x560468175dc0 <col:38, col:62>
| | `-TextComment 0x560468175d90 <col:38, col:62> Text=" Rate of the rate filter "
| |-FieldDecl 0x56046809c3a8 <line:10001:5, col:13> col:13 tick_count 'int32_t':'int'
| | `-FullComment 0x560468175ec0 <col:38, col:77>
| | `-ParagraphComment 0x560468175e90 <col:38, col:77>
| | `-TextComment 0x560468175e60 <col:38, col:77> Text=" Number of times the rate filter ticked "
| `-FieldDecl 0x56046809c440 <line:37:21, line:10002:17> col:17 time_elapsed 'float'
| `-FullComment 0x560468175f90 <col:38, col:67>
| `-ParagraphComment 0x560468175f60 <col:38, col:67>
| `-TextComment 0x560468175f30 <col:38, col:67> Text=" Time elapsed since last tick "
|-TypedefDecl 0x56046809c518 <line:9998:1, line:10003:3> col:3 EcsRateFilter 'struct EcsRateFilter':'struct EcsRateFilter'
| |-ElaboratedType 0x56046809c4c0 'struct EcsRateFilter' sugar
| | `-RecordType 0x56046809c260 'struct EcsRateFilter'
| | `-Record 0x56046809c1e0 'EcsRateFilter'
| `-FullComment 0x560468176060 <line:9997:4, col:41>
| `-ParagraphComment 0x560468176030 <col:4, col:41>
| `-TextComment 0x560468176000 <col:4, col:41> Text=" Apply a rate filter to a tick source "
|-FunctionDecl 0x56046809c7d8 <line:10025:1, line:10028:24> line:10025:14 ecs_set_timeout 'ecs_entity_t (ecs_world_t *, ecs_entity_t, float)'
| |-ParmVarDecl 0x56046809c5c0 <line:10026:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046809c638 <line:10027:5, col:18> col:18 tick_source 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x56046809c6b8 <line:37:21, line:10028:17> col:17 timeout 'float'
| `-FullComment 0x560468176660 <line:10006:4, line:10022:28>
| |-ParagraphComment 0x5604681761a0 <line:10006:4, line:10010:38>
| | |-TextComment 0x5604681760d0 <line:10006:4, col:22> Text=" Set timer timeout."
| | |-TextComment 0x5604681760f0 <line:10007:3, col:74> Text=" This operation executes any systems associated with the timer after the"
| | |-TextComment 0x560468176110 <line:10008:3, col:74> Text=" specified timeout value. If the entity contains an existing timer, the "
| | |-TextComment 0x560468176130 <line:10009:3, col:74> Text=" timeout value will be reset. The timer can be started and stopped with "
| | `-TextComment 0x560468176150 <line:10010:3, col:38> Text=" ecs_start_timer and ecs_stop_timer."
| |-ParagraphComment 0x5604681761f0 <line:10012:3, col:73>
| | `-TextComment 0x5604681761c0 <col:3, col:73> Text=" The timer is synchronous, and is incremented each frame by delta_time."
| |-ParagraphComment 0x5604681762b0 <line:10014:3, line:10017:65>
| | |-TextComment 0x560468176210 <line:10014:3, col:77> Text=" The tick_source entity will be be a tick source after this operation. Tick"
| | |-TextComment 0x560468176230 <line:10015:3, col:74> Text=" sources can be read by getting the EcsTickSource component. If the tick"
| | |-TextComment 0x560468176250 <line:10016:3, col:75> Text=" source ticked this frame, the 'tick' member will be true. When the tick "
| | `-TextComment 0x560468176270 <line:10017:3, col:65> Text=" source is a system, the system will tick when the timer ticks."
| |-ParagraphComment 0x560468176300 <line:10019:3>
| | `-TextComment 0x5604681762d0 <col:3> Text=" "
| |-ParamCommandComment 0x560468176320 <col:4, line:10020:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681763e0 <line:10019:16, line:10020:3>
| | |-TextComment 0x560468176380 <line:10019:16, col:26> Text=" The world."
| | `-TextComment 0x5604681763a0 <line:10020:3> Text=" "
| |-ParamCommandComment 0x560468176400 <col:4, line:10021:3> [in] implicitly Param="tick_source" ParamIndex=1
| | `-ParagraphComment 0x5604681764b0 <line:10020:22, line:10021:3>
| | |-TextComment 0x560468176460 <line:10020:22, col:79> Text=" The timer for which to set the timeout (0 to create one)."
| | `-TextComment 0x560468176480 <line:10021:3> Text=" "
| |-ParamCommandComment 0x5604681764d0 <col:4, line:10022:3> [in] implicitly Param="timeout" ParamIndex=2
| | `-ParagraphComment 0x560468176580 <line:10021:18, line:10022:3>
| | |-TextComment 0x560468176530 <line:10021:18, col:36> Text=" The timeout value."
| | `-TextComment 0x560468176550 <line:10022:3> Text=" "
| `-BlockCommandComment 0x5604681765a0 <col:4, col:28> Name="return"
| `-ParagraphComment 0x560468176600 <col:11, col:28>
| `-TextComment 0x5604681765d0 <col:11, col:28> Text=" The timer entity."
|-FunctionDecl 0x56046809ca60 <line:37:21, line:10052:29> line:10050:13 ecs_get_timeout 'float (const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x56046809c8c8 <line:10051:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x56046809c940 <line:10052:5, col:18> col:18 tick_source 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468176bd0 <line:10030:4, line:10047:65>
| |-ParagraphComment 0x560468176750 <line:10030:4, line:10032:51>
| | |-TextComment 0x5604681766d0 <line:10030:4, col:54> Text=" Get current timeout value for the specified timer."
| | |-TextComment 0x5604681766f0 <line:10031:3, col:74> Text=" This operation returns the value set by ecs_set_timeout. If no timer is"
| | `-TextComment 0x560468176710 <line:10032:3, col:51> Text=" active for this entity, the operation returns 0."
| |-ParagraphComment 0x5604681767f0 <line:10034:3, line:10036:27>
| | |-TextComment 0x560468176770 <line:10034:3, col:79> Text=" After the timeout expires the EcsTimer component is removed from the entity."
| | |-TextComment 0x560468176790 <line:10035:3, col:80> Text=" This means that if ecs_get_timeout is invoked after the timer is expired, the"
| | `-TextComment 0x5604681767b0 <line:10036:3, col:27> Text=" operation will return 0."
| |-ParagraphComment 0x560468176840 <line:10038:3, col:73>
| | `-TextComment 0x560468176810 <col:3, col:73> Text=" The timer is synchronous, and is incremented each frame by delta_time."
| |-ParagraphComment 0x560468176900 <line:10040:3, line:10043:65>
| | |-TextComment 0x560468176860 <line:10040:3, col:77> Text=" The tick_source entity will be be a tick source after this operation. Tick"
| | |-TextComment 0x560468176880 <line:10041:3, col:74> Text=" sources can be read by getting the EcsTickSource component. If the tick"
| | |-TextComment 0x5604681768a0 <line:10042:3, col:75> Text=" source ticked this frame, the 'tick' member will be true. When the tick "
| | `-TextComment 0x5604681768c0 <line:10043:3, col:65> Text=" source is a system, the system will tick when the timer ticks."
| |-ParagraphComment 0x560468176950 <line:10045:3>
| | `-TextComment 0x560468176920 <col:3> Text=" "
| |-ParamCommandComment 0x560468176970 <col:4, line:10046:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468176a20 <line:10045:16, line:10046:3>
| | |-TextComment 0x5604681769d0 <line:10045:16, col:26> Text=" The world."
| | `-TextComment 0x5604681769f0 <line:10046:3> Text=" "
| |-ParamCommandComment 0x560468176a40 <col:4, line:10047:3> [in] implicitly Param="tick_source" ParamIndex=1
| | `-ParagraphComment 0x560468176af0 <line:10046:22, line:10047:3>
| | |-TextComment 0x560468176aa0 <line:10046:22, col:32> Text=" The timer."
| | `-TextComment 0x560468176ac0 <line:10047:3> Text=" "
| `-BlockCommandComment 0x560468176b10 <col:4, col:65> Name="return"
| `-ParagraphComment 0x560468176b70 <col:11, col:65>
| `-TextComment 0x560468176b40 <col:11, col:65> Text=" The current timeout value, or 0 if no timer is active."
|-FunctionDecl 0x56046809cce0 <line:10072:1, line:10075:25> line:10072:14 ecs_set_interval 'ecs_entity_t (ecs_world_t *, ecs_entity_t, float)'
| |-ParmVarDecl 0x56046809cb48 <line:10073:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046809cbc0 <line:10074:5, col:18> col:18 tick_source 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x56046809cc40 <line:37:21, line:10075:17> col:17 interval 'float'
| `-FullComment 0x560468177190 <line:10054:4, line:10069:28>
| |-ParagraphComment 0x560468176ce0 <line:10054:4, line:10057:36>
| | |-TextComment 0x560468176c40 <line:10054:4, col:23> Text=" Set timer interval."
| | |-TextComment 0x560468176c60 <line:10055:3, col:76> Text=" This operation will continously invoke systems associated with the timer "
| | |-TextComment 0x560468176c80 <line:10056:3, col:79> Text=" after the interval period expires. If the entity contains an existing timer,"
| | `-TextComment 0x560468176ca0 <line:10057:3, col:36> Text=" the interval value will be reset."
| |-ParagraphComment 0x560468176d30 <line:10059:3, col:73>
| | `-TextComment 0x560468176d00 <col:3, col:73> Text=" The timer is synchronous, and is incremented each frame by delta_time."
| |-ParagraphComment 0x560468176df0 <line:10061:3, line:10064:66>
| | |-TextComment 0x560468176d50 <line:10061:3, col:77> Text=" The tick_source entity will be be a tick source after this operation. Tick"
| | |-TextComment 0x560468176d70 <line:10062:3, col:74> Text=" sources can be read by getting the EcsTickSource component. If the tick"
| | |-TextComment 0x560468176d90 <line:10063:3, col:75> Text=" source ticked this frame, the 'tick' member will be true. When the tick "
| | `-TextComment 0x560468176db0 <line:10064:3, col:66> Text=" source is a system, the system will tick when the timer ticks. "
| |-ParagraphComment 0x560468176e40 <line:10066:3>
| | `-TextComment 0x560468176e10 <col:3> Text=" "
| |-ParamCommandComment 0x560468176e60 <col:4, line:10067:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468176f10 <line:10066:16, line:10067:3>
| | |-TextComment 0x560468176ec0 <line:10066:16, col:26> Text=" The world."
| | `-TextComment 0x560468176ee0 <line:10067:3> Text=" "
| |-ParamCommandComment 0x560468176f30 <col:4, line:10068:3> [in] implicitly Param="tick_source" ParamIndex=1
| | `-ParagraphComment 0x560468176fe0 <line:10067:22, line:10068:3>
| | |-TextComment 0x560468176f90 <line:10067:22, col:80> Text=" The timer for which to set the interval (0 to create one)."
| | `-TextComment 0x560468176fb0 <line:10068:3> Text=" "
| |-ParamCommandComment 0x560468177000 <col:4, line:10069:3> [in] implicitly Param="interval" ParamIndex=2
| | `-ParagraphComment 0x5604681770b0 <line:10068:19, line:10069:3>
| | |-TextComment 0x560468177060 <line:10068:19, col:38> Text=" The interval value."
| | `-TextComment 0x560468177080 <line:10069:3> Text=" "
| `-BlockCommandComment 0x5604681770d0 <col:4, col:28> Name="return"
| `-ParagraphComment 0x560468177130 <col:11, col:28>
| `-TextComment 0x560468177100 <col:11, col:28> Text=" The timer entity."
|-FunctionDecl 0x56046809d2b0 <line:37:21, line:10088:29> line:10086:13 ecs_get_interval 'float (const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x56046809cdd8 <line:10087:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x56046809d210 <line:10088:5, col:18> col:18 tick_source 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468177540 <line:10077:4, line:10083:66>
| |-ParagraphComment 0x560468177280 <line:10077:4, line:10079:44>
| | |-TextComment 0x560468177200 <line:10077:4, col:55> Text=" Get current interval value for the specified timer."
| | |-TextComment 0x560468177220 <line:10078:3, col:77> Text=" This operation returns the value set by ecs_set_interval. If the entity is"
| | `-TextComment 0x560468177240 <line:10079:3, col:44> Text=" not a timer, the operation will return 0."
| |-ParagraphComment 0x5604681772d0 <line:10081:3>
| | `-TextComment 0x5604681772a0 <col:3> Text=" "
| |-ParamCommandComment 0x5604681772f0 <col:4, line:10082:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681773a0 <line:10081:16, line:10082:3>
| | |-TextComment 0x560468177350 <line:10081:16, col:26> Text=" The world."
| | `-TextComment 0x560468177370 <line:10082:3> Text=" "
| |-ParamCommandComment 0x5604681773c0 <col:4, line:10083:3> [in] implicitly Param="tick_source" ParamIndex=1
| | `-ParagraphComment 0x560468177470 <line:10082:22, line:10083:3>
| | |-TextComment 0x560468177420 <line:10082:22, col:62> Text=" The timer for which to set the interval."
| | `-TextComment 0x560468177440 <line:10083:3> Text=" "
| `-BlockCommandComment 0x560468177490 <col:4, col:66> Name="return"
| `-ParagraphComment 0x5604681774f0 <col:11, col:66>
| `-TextComment 0x5604681774c0 <col:11, col:66> Text=" The current interval value, or 0 if no timer is active."
|-FunctionDecl 0x56046809d4a8 <line:10100:1, line:10102:29> line:10100:6 ecs_start_timer 'void (ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x56046809d398 <line:10101:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046809d410 <line:10102:5, col:18> col:18 tick_source 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468177890 <line:10090:4, line:10097:41>
| |-ParagraphComment 0x560468177680 <line:10090:4, line:10094:25>
| | |-TextComment 0x5604681775b0 <line:10090:4, col:16> Text=" Start timer."
| | |-TextComment 0x5604681775d0 <line:10091:3, col:80> Text=" This operation resets the timer and starts it with the specified timeout. The"
| | |-TextComment 0x5604681775f0 <line:10092:3, col:73> Text=" entity must have the EcsTimer component (added by ecs_set_timeout and "
| | |-TextComment 0x560468177610 <line:10093:3, col:77> Text=" ecs_set_interval). If the entity does not have the EcsTimer component this"
| | `-TextComment 0x560468177630 <line:10094:3, col:25> Text=" operation will assert."
| |-ParagraphComment 0x5604681776d0 <line:10096:3>
| | `-TextComment 0x5604681776a0 <col:3> Text=" "
| |-ParamCommandComment 0x5604681776f0 <col:4, line:10097:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681777a0 <line:10096:16, line:10097:3>
| | |-TextComment 0x560468177750 <line:10096:16, col:26> Text=" The world."
| | `-TextComment 0x560468177770 <line:10097:3> Text=" "
| `-ParamCommandComment 0x5604681777c0 <col:4, col:41> [in] implicitly Param="tick_source" ParamIndex=1
| `-ParagraphComment 0x560468177850 <col:22, col:41>
| `-TextComment 0x560468177820 <col:22, col:41> Text=" The timer to start."
|-FunctionDecl 0x56046809d6a8 <line:10112:1, line:10114:29> line:10112:6 ecs_stop_timer 'void (ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x56046809d598 <line:10113:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046809d610 <line:10114:5, col:18> col:18 tick_source 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468177b90 <line:10104:4, line:10109:40>
| |-ParagraphComment 0x560468177980 <line:10104:4, line:10106:52>
| | |-TextComment 0x560468177900 <line:10104:4, col:14> Text=" Stop timer"
| | |-TextComment 0x560468177920 <line:10105:3, col:74> Text=" This operation stops a timer from triggering. The entity must have the "
| | `-TextComment 0x560468177940 <line:10106:3, col:52> Text=" EcsTimer component or this operation will assert."
| |-ParagraphComment 0x5604681779d0 <line:10108:3>
| | `-TextComment 0x5604681779a0 <col:3> Text=" "
| |-ParamCommandComment 0x5604681779f0 <col:4, line:10109:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468177aa0 <line:10108:16, line:10109:3>
| | |-TextComment 0x560468177a50 <line:10108:16, col:26> Text=" The world."
| | `-TextComment 0x560468177a70 <line:10109:3> Text=" "
| `-ParamCommandComment 0x560468177ac0 <col:4, col:40> [in] implicitly Param="tick_source" ParamIndex=1
| `-ParagraphComment 0x560468177b50 <col:22, col:40>
| `-TextComment 0x560468177b20 <col:22, col:40> Text=" The timer to stop."
|-FunctionDecl 0x56046809da48 <line:10147:1, line:10151:24> line:10147:14 ecs_set_rate 'ecs_entity_t (ecs_world_t *, ecs_entity_t, int32_t, ecs_entity_t)'
| |-ParmVarDecl 0x56046809d798 <line:10148:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046809d810 <line:10149:5, col:18> col:18 tick_source 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x56046809d888 <line:10150:5, col:13> col:13 rate 'int32_t':'int'
| |-ParmVarDecl 0x56046809d900 <line:10151:5, col:18> col:18 source 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468178450 <line:10116:4, line:10144:29>
| |-ParagraphComment 0x560468177ca0 <line:10116:4, line:10119:48>
| | |-TextComment 0x560468177c00 <line:10116:4, col:20> Text=" Set rate filter."
| | |-TextComment 0x560468177c20 <line:10117:3, col:77> Text=" This operation initializes a rate filter. Rate filters sample tick sources"
| | |-TextComment 0x560468177c40 <line:10118:3, col:78> Text=" and tick at a configurable multiple. A rate filter is a tick source itself,"
| | `-TextComment 0x560468177c60 <line:10119:3, col:48> Text=" which means that rate filters can be chained."
| |-ParagraphComment 0x560468177d90 <line:10121:3, line:10125:61>
| | |-TextComment 0x560468177cc0 <line:10121:3, col:78> Text=" Rate filters enable deterministic system execution which cannot be achieved"
| | |-TextComment 0x560468177ce0 <line:10122:3, col:75> Text=" with interval timers alone. For example, if timer A has interval 2.0 and"
| | |-TextComment 0x560468177d00 <line:10123:3, col:77> Text=" timer B has interval 4.0, it is not guaranteed that B will tick at exactly"
| | |-TextComment 0x560468177d20 <line:10124:3, col:79> Text=" twice the multiple of A. This is partly due to the indeterministic nature of"
| | `-TextComment 0x560468177d40 <line:10125:3, col:61> Text=" timers, and partly due to floating point rounding errors. "
| |-ParagraphComment 0x560468177e50 <line:10127:3, line:10130:40>
| | |-TextComment 0x560468177db0 <line:10127:3, col:78> Text=" Rate filters can be combined with timers (or other rate filters) to ensure "
| | |-TextComment 0x560468177dd0 <line:10128:3, col:74> Text=" that a system ticks at an exact multiple of a tick source (which can be"
| | |-TextComment 0x560468177df0 <line:10129:3, col:77> Text=" another system). If a rate filter is created with a rate of 1 it will tick"
| | `-TextComment 0x560468177e10 <line:10130:3, col:40> Text=" at the exact same time as its source."
| |-ParagraphComment 0x560468177ec0 <line:10132:3, line:10133:77>
| | |-TextComment 0x560468177e70 <line:10132:3, col:76> Text=" If no tick source is provided, the rate filter will use the frame tick as"
| | `-TextComment 0x560468177e90 <line:10133:3, col:77> Text=" source, which corresponds with the number of times ecs_progress is called."
| |-ParagraphComment 0x560468177f80 <line:10135:3, line:10138:67>
| | |-TextComment 0x560468177ee0 <line:10135:3, col:77> Text=" The tick_source entity will be be a tick source after this operation. Tick"
| | |-TextComment 0x560468177f00 <line:10136:3, col:74> Text=" sources can be read by getting the EcsTickSource component. If the tick"
| | |-TextComment 0x560468177f20 <line:10137:3, col:75> Text=" source ticked this frame, the 'tick' member will be true. When the tick "
| | `-TextComment 0x560468177f40 <line:10138:3, col:67> Text=" source is a system, the system will tick when the timer ticks. "
| |-ParagraphComment 0x560468177fd0 <line:10140:3>
| | `-TextComment 0x560468177fa0 <col:3> Text=" "
| |-ParamCommandComment 0x560468177ff0 <col:4, line:10141:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681780a0 <line:10140:16, line:10141:3>
| | |-TextComment 0x560468178050 <line:10140:16, col:26> Text=" The world."
| | `-TextComment 0x560468178070 <line:10141:3> Text=" "
| |-ParamCommandComment 0x5604681780c0 <col:4, line:10142:3> [in] implicitly Param="tick_source" ParamIndex=1
| | `-ParagraphComment 0x560468178170 <line:10141:22, line:10142:3>
| | |-TextComment 0x560468178120 <line:10141:22, col:63> Text=" The rate filter entity (0 to create one)."
| | `-TextComment 0x560468178140 <line:10142:3> Text=" "
| |-ParamCommandComment 0x560468178190 <col:4, line:10143:3> [in] implicitly Param="rate" ParamIndex=2
| | `-ParagraphComment 0x560468178240 <line:10142:15, line:10143:3>
| | |-TextComment 0x5604681781f0 <line:10142:15, col:33> Text=" The rate to apply."
| | `-TextComment 0x560468178210 <line:10143:3> Text=" "
| |-ParamCommandComment 0x560468178260 <col:4, line:10144:3> [in] implicitly Param="source" ParamIndex=3
| | `-ParagraphComment 0x560468178310 <line:10143:17, line:10144:3>
| | |-TextComment 0x5604681782c0 <line:10143:17, col:50> Text=" The tick source (0 to use frames)"
| | `-TextComment 0x5604681782e0 <line:10144:3> Text=" "
| `-BlockCommandComment 0x560468178330 <col:4, col:29> Name="return"
| `-ParagraphComment 0x560468178390 <col:11, col:29>
| `-TextComment 0x560468178360 <col:11, col:29> Text=" The filter entity."
|-FunctionDecl 0x56046809dcd8 <line:10176:1, line:10179:29> line:10176:6 ecs_set_tick_source 'void (ecs_world_t *, ecs_entity_t, ecs_entity_t)'
| |-ParmVarDecl 0x56046809db48 <line:10177:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046809dbc0 <line:10178:5, col:18> col:18 system 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x56046809dc38 <line:10179:5, col:18> col:18 tick_source 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468178a50 <line:10153:4, line:10173:67>
| |-ParagraphComment 0x560468178560 <line:10153:4, line:10156:77>
| | |-TextComment 0x5604681784c0 <line:10153:4, col:33> Text=" Assign tick source to system."
| | |-TextComment 0x5604681784e0 <line:10154:3, col:77> Text=" Systems can be their own tick source, which can be any of the tick sources"
| | |-TextComment 0x560468178500 <line:10155:3, col:80> Text=" (one shot timers, interval times and rate filters). However, in some cases it"
| | `-TextComment 0x560468178520 <line:10156:3, col:77> Text=" is must be guaranteed that different systems tick on the exact same frame."
| |-ParagraphComment 0x560468178620 <line:10158:3, line:10161:71>
| | |-TextComment 0x560468178580 <line:10158:3, col:80> Text=" This cannot be guaranteed by giving two systems the same interval/rate filter"
| | |-TextComment 0x5604681785a0 <line:10159:3, col:75> Text=" as it is possible that one system is (for example) disabled, which would"
| | |-TextComment 0x5604681785c0 <line:10160:3, col:76> Text=" cause the systems to go out of sync. To provide these guarantees, systems"
| | `-TextComment 0x5604681785e0 <line:10161:3, col:71> Text=" must use the same tick source, which is what this operation enables."
| |-ParagraphComment 0x5604681786e0 <line:10163:3, line:10166:30>
| | |-TextComment 0x560468178640 <line:10163:3, col:79> Text=" When two systems share the same tick source, it is guaranteed that they tick"
| | |-TextComment 0x560468178660 <line:10164:3, col:79> Text=" in the same frame. The provided tick source can be any entity that is a tick"
| | |-TextComment 0x560468178680 <line:10165:3, col:80> Text=" source, including another system. If the provided entity is not a tick source"
| | `-TextComment 0x5604681786a0 <line:10166:3, col:30> Text=" the system will not be ran."
| |-ParagraphComment 0x560468178750 <line:10168:3, line:10169:13>
| | |-TextComment 0x560468178700 <line:10168:3, col:74> Text=" To disassociate a tick source from a system, use 0 for the tick_source "
| | `-TextComment 0x560468178720 <line:10169:3, col:13> Text=" parameter."
| |-ParagraphComment 0x5604681787a0 <line:10171:3>
| | `-TextComment 0x560468178770 <col:3> Text=" "
| |-ParamCommandComment 0x5604681787c0 <col:4, line:10172:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468178870 <line:10171:16, line:10172:3>
| | |-TextComment 0x560468178820 <line:10171:16, col:26> Text=" The world."
| | `-TextComment 0x560468178840 <line:10172:3> Text=" "
| |-ParamCommandComment 0x560468178890 <col:4, line:10173:3> [in] implicitly Param="system" ParamIndex=1
| | `-ParagraphComment 0x560468178940 <line:10172:17, line:10173:3>
| | |-TextComment 0x5604681788f0 <line:10172:17, col:56> Text=" The system to associate with the timer."
| | `-TextComment 0x560468178910 <line:10173:3> Text=" "
| `-ParamCommandComment 0x560468178960 <col:4, col:67> [in] implicitly Param="tick_source" ParamIndex=2
| `-ParagraphComment 0x5604681789f0 <col:22, col:67>
| `-TextComment 0x5604681789c0 <col:22, col:67> Text=" The tick source to associate with the system."
|-FunctionDecl 0x56046809de58 <line:10187:1, line:10188:23> line:10187:6 FlecsTimerImport 'void (ecs_world_t *)'
| |-ParmVarDecl 0x56046809ddc8 <line:10188:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x560468178b70 <line:10182:4, line:10184:80>
| `-ParagraphComment 0x560468178b40 <line:10182:4, line:10184:80>
| |-TextComment 0x560468178ac0 <line:10182:4, col:80> Text="/////////////////////////////////////////////////////////////////////////////"
| |-TextComment 0x560468178ae0 <line:10183:4, col:11> Text="/ Module"
| `-TextComment 0x560468178b00 <line:10184:4, col:80> Text="/////////////////////////////////////////////////////////////////////////////"
|-RecordDecl 0x56046809df88 <line:10275:9, line:10282:1> line:10275:16 struct ecs_pipeline_desc_t definition
| |-FieldDecl 0x56046809e040 <line:10277:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FieldDecl 0x56046809e0a0 <line:10281:5, col:22> col:22 query 'ecs_query_desc_t':'struct ecs_query_desc_t'
|-TypedefDecl 0x56046809e148 <line:10275:1, line:10282:3> col:3 referenced ecs_pipeline_desc_t 'struct ecs_pipeline_desc_t':'struct ecs_pipeline_desc_t'
| `-ElaboratedType 0x56046809e0f0 'struct ecs_pipeline_desc_t' sugar
| `-RecordType 0x56046809e010 'struct ecs_pipeline_desc_t'
| `-Record 0x56046809df88 'ecs_pipeline_desc_t'
|-FunctionDecl 0x56046809e3f8 <line:10287:1, line:10289:36> line:10287:14 ecs_pipeline_init 'ecs_entity_t (ecs_world_t *, const ecs_pipeline_desc_t *)'
| |-ParmVarDecl 0x56046809e1f0 <line:10288:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046809e2e8 <line:10289:5, col:32> col:32 desc 'const ecs_pipeline_desc_t *'
| `-FullComment 0x560468178c40 <line:10284:4, col:29>
| `-ParagraphComment 0x560468178c10 <col:4, col:29>
| `-TextComment 0x560468178be0 <col:4, col:29> Text=" Create a custom pipeline."
|-FunctionDecl 0x56046809e5f8 <line:10298:1, line:10300:26> line:10298:6 ecs_set_pipeline 'void (ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x56046809e4e8 <line:10299:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046809e560 <line:10300:5, col:18> col:18 pipeline 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468178f10 <line:10291:4, line:10295:39>
| |-ParagraphComment 0x560468178d00 <line:10291:4, line:10292:72>
| | |-TextComment 0x560468178cb0 <line:10291:4, col:26> Text=" Set a custom pipeline."
| | `-TextComment 0x560468178cd0 <line:10292:3, col:72> Text=" This operation sets the pipeline to run when ecs_progress is invoked."
| |-ParagraphComment 0x560468178d50 <line:10294:3>
| | `-TextComment 0x560468178d20 <col:3> Text=" "
| |-ParamCommandComment 0x560468178d70 <col:4, line:10295:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468178e20 <line:10294:16, line:10295:3>
| | |-TextComment 0x560468178dd0 <line:10294:16, col:26> Text=" The world."
| | `-TextComment 0x560468178df0 <line:10295:3> Text=" "
| `-ParamCommandComment 0x560468178e40 <col:4, col:39> [in] implicitly Param="pipeline" ParamIndex=1
| `-ParagraphComment 0x560468178ed0 <col:19, col:39>
| `-TextComment 0x560468178ea0 <col:19, col:39> Text=" The pipeline to set."
|-FunctionDecl 0x56046809e778 <line:10309:1, line:10310:29> line:10309:14 ecs_get_pipeline 'ecs_entity_t (const ecs_world_t *)'
| |-ParmVarDecl 0x56046809e6e8 <line:10310:5, col:24> col:24 world 'const ecs_world_t *'
| `-FullComment 0x5604681791b0 <line:10302:4, line:10306:32>
| |-ParagraphComment 0x560468178fd0 <line:10302:4, line:10303:44>
| | |-TextComment 0x560468178f80 <line:10302:4, col:29> Text=" Get the current pipeline."
| | `-TextComment 0x560468178fa0 <line:10303:3, col:44> Text=" This operation gets the current pipeline."
| |-ParagraphComment 0x560468179020 <line:10305:3>
| | `-TextComment 0x560468178ff0 <col:3> Text=" "
| |-ParamCommandComment 0x560468179040 <col:4, line:10306:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681790f0 <line:10305:16, line:10306:3>
| | |-TextComment 0x5604681790a0 <line:10305:16, col:26> Text=" The world."
| | `-TextComment 0x5604681790c0 <line:10306:3> Text=" "
| `-BlockCommandComment 0x560468179110 <col:4, col:32> Name="return"
| `-ParagraphComment 0x560468179170 <col:11, col:32>
| `-TextComment 0x560468179140 <col:11, col:32> Text=" The current pipeline."
|-FunctionDecl 0x56046809e9e8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:10333:27> line:10331:6 ecs_progress 'bool (ecs_world_t *, float)'
| |-ParmVarDecl 0x56046809e858 <line:10332:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046809e8d8 <line:37:21, line:10333:17> col:17 delta_time 'float'
| `-FullComment 0x5604681796f0 <line:10312:4, line:10328:61>
| |-ParagraphComment 0x5604681792a0 <line:10312:4, line:10314:51>
| | |-TextComment 0x560468179220 <line:10312:4, col:21> Text=" Progress a world."
| | |-TextComment 0x560468179240 <line:10313:3, col:75> Text=" This operation progresses the world by running all systems that are both"
| | `-TextComment 0x560468179260 <line:10314:3, col:51> Text=" enabled and periodic on their matching entities."
| |-ParagraphComment 0x560468179360 <line:10316:3, line:10319:14>
| | |-TextComment 0x5604681792c0 <line:10316:3, col:76> Text=" An application can pass a delta_time into the function, which is the time"
| | |-TextComment 0x5604681792e0 <line:10317:3, col:75> Text=" passed since the last frame. This value is passed to systems so they can"
| | |-TextComment 0x560468179300 <line:10318:3, col:73> Text=" update entity values proportional to the elapsed time since their last"
| | `-TextComment 0x560468179320 <line:10319:3, col:14> Text=" invocation."
| |-ParagraphComment 0x560468179420 <line:10321:3, line:10324:69>
| | |-TextComment 0x560468179380 <line:10321:3, col:78> Text=" When an application passes 0 to delta_time, ecs_progress will automatically"
| | |-TextComment 0x5604681793a0 <line:10322:3, col:80> Text=" measure the time passed since the last frame. If an application does not uses"
| | |-TextComment 0x5604681793c0 <line:10323:3, col:74> Text=" time management, it should pass a non-zero value for delta_time (1.0 is"
| | `-TextComment 0x5604681793e0 <line:10324:3, col:69> Text=" recommended). That way, no time will be wasted measuring the time."
| |-ParagraphComment 0x560468179470 <line:10326:3>
| | `-TextComment 0x560468179440 <col:3> Text=" "
| |-ParamCommandComment 0x560468179490 <col:4, line:10327:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468179540 <line:10326:16, line:10327:3>
| | |-TextComment 0x5604681794f0 <line:10326:16, col:38> Text=" The world to progress."
| | `-TextComment 0x560468179510 <line:10327:3> Text=" "
| |-ParamCommandComment 0x560468179560 <col:4, line:10328:3> [in] implicitly Param="delta_time" ParamIndex=1
| | `-ParagraphComment 0x560468179610 <line:10327:21, line:10328:3>
| | |-TextComment 0x5604681795c0 <line:10327:21, col:58> Text=" The time passed since the last frame."
| | `-TextComment 0x5604681795e0 <line:10328:3> Text=" "
| `-BlockCommandComment 0x560468179630 <col:4, col:61> Name="return"
| `-ParagraphComment 0x560468179690 <col:11, col:61>
| `-TextComment 0x560468179660 <col:11, col:61> Text=" false if ecs_quit has been called, true otherwise."
|-FunctionDecl 0x56046809ebf0 <line:10342:1, line:10344:22> line:10342:6 ecs_set_time_scale 'void (ecs_world_t *, float)'
| |-ParmVarDecl 0x56046809ead8 <line:10343:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046809eb58 <line:37:21, line:10344:17> col:17 scale 'float'
| `-FullComment 0x5604681799c0 <line:10335:4, line:10339:49>
| |-ParagraphComment 0x5604681797b0 <line:10335:4, line:10336:68>
| | |-TextComment 0x560468179760 <line:10335:4, col:19> Text=" Set time scale."
| | `-TextComment 0x560468179780 <line:10336:3, col:68> Text=" Increase or decrease simulation speed by the provided multiplier."
| |-ParagraphComment 0x560468179800 <line:10338:3>
| | `-TextComment 0x5604681797d0 <col:3> Text=" "
| |-ParamCommandComment 0x560468179820 <col:4, line:10339:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681798d0 <line:10338:16, line:10339:3>
| | |-TextComment 0x560468179880 <line:10338:16, col:26> Text=" The world."
| | `-TextComment 0x5604681798a0 <line:10339:3> Text=" "
| `-ParamCommandComment 0x5604681798f0 <col:4, col:49> [in] implicitly Param="scale" ParamIndex=1
| `-ParagraphComment 0x560468179980 <col:16, col:49>
| `-TextComment 0x560468179950 <col:16, col:49> Text=" The scale to apply (default = 1)."
|-FunctionDecl 0x56046809ed68 <line:10352:1, line:10353:23> line:10352:6 ecs_reset_clock 'void (ecs_world_t *)'
| |-ParmVarDecl 0x56046809ecd8 <line:10353:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x560468179bc0 <line:10346:4, line:10349:26>
| |-ParagraphComment 0x560468179a80 <line:10346:4, line:10347:79>
| | |-TextComment 0x560468179a30 <line:10346:4, col:22> Text=" Reset world clock."
| | `-TextComment 0x560468179a50 <line:10347:3, col:79> Text=" Reset the clock that keeps track of the total time passed in the simulation."
| |-ParagraphComment 0x560468179ad0 <line:10349:3>
| | `-TextComment 0x560468179aa0 <col:3> Text=" "
| `-ParamCommandComment 0x560468179af0 <col:4, col:26> [in] implicitly Param="world" ParamIndex=0
| `-ParagraphComment 0x560468179b80 <col:16, col:26>
| `-TextComment 0x560468179b50 <col:16, col:26> Text=" The world."
|-FunctionDecl 0x56046809f068 <line:10374:1, line:10377:27> line:10374:6 ecs_run_pipeline 'void (ecs_world_t *, ecs_entity_t, float)'
| |-ParmVarDecl 0x56046809ee48 <line:10375:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x56046809eec0 <line:10376:5, col:18> col:18 pipeline 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x56046809ef40 <line:37:21, line:10377:17> col:17 delta_time 'float'
| `-FullComment 0x56046817a080 <line:10355:4, line:10371:39>
| |-ParagraphComment 0x560468179cd0 <line:10355:4, line:10358:79>
| | |-TextComment 0x560468179c30 <line:10355:4, col:17> Text=" Run pipeline."
| | |-TextComment 0x560468179c50 <line:10356:3, col:76> Text=" This will run all systems in the provided pipeline. This operation may be"
| | |-TextComment 0x560468179c70 <line:10357:3, col:75> Text=" invoked from multiple threads, and only when staging is disabled, as the"
| | `-TextComment 0x560468179c90 <line:10358:3, col:79> Text=" pipeline manages staging and, if necessary, synchronization between threads."
| |-ParagraphComment 0x560468179d40 <line:10360:3, line:10361:76>
| | |-TextComment 0x560468179cf0 <line:10360:3, col:79> Text=" If 0 is provided for the pipeline id, the default pipeline will be ran (this"
| | `-TextComment 0x560468179d10 <line:10361:3, col:76> Text=" is either the builtin pipeline or the pipeline set with set_pipeline()). "
| |-ParagraphComment 0x560468179de0 <line:10363:3, line:10365:64>
| | |-TextComment 0x560468179d60 <line:10363:3, col:77> Text=" When using progress() this operation will be invoked automatically for the"
| | |-TextComment 0x560468179d80 <line:10364:3, col:74> Text=" default pipeline (either the builtin pipeline or the pipeline set with "
| | `-TextComment 0x560468179da0 <line:10365:3, col:64> Text=" set_pipeline()). An application may run additional pipelines."
| |-ParagraphComment 0x560468179e50 <line:10367:3, line:10368:52>
| | |-TextComment 0x560468179e00 <line:10367:3, col:74> Text=" Note: calling this function from an application currently only works in"
| | `-TextComment 0x560468179e20 <line:10368:3, col:52> Text=" single threaded applications with a single stage."
| |-ParagraphComment 0x560468179ea0 <line:10370:3>
| | `-TextComment 0x560468179e70 <col:3> Text=" "
| |-ParamCommandComment 0x560468179ec0 <col:4, line:10371:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468179f70 <line:10370:16, line:10371:3>
| | |-TextComment 0x560468179f20 <line:10370:16, col:26> Text=" The world."
| | `-TextComment 0x560468179f40 <line:10371:3> Text=" "
| `-ParamCommandComment 0x560468179f90 <col:4, col:39> [in] implicitly Param="pipeline" ParamIndex=1
| `-ParagraphComment 0x56046817a020 <col:19, col:39>
| `-TextComment 0x560468179ff0 <col:19, col:39> Text=" The pipeline to run."
|-FunctionDecl 0x5604680a1968 <line:10390:1, line:10392:20> line:10390:6 ecs_set_threads 'void (ecs_world_t *, int32_t)'
| |-ParmVarDecl 0x56046809f188 <line:10391:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680a18d0 <line:10392:5, col:13> col:13 threads 'int32_t':'int'
| `-FullComment 0x56046817a1f0 <line:10384:4, line:10388:54>
| `-ParagraphComment 0x56046817a1c0 <line:10384:4, line:10388:54>
| |-TextComment 0x56046817a0f0 <line:10384:4, col:33> Text=" Set number of worker threads."
| |-TextComment 0x56046817a110 <line:10385:3, col:77> Text=" Setting this value to a value higher than 1 will start as many threads and"
| |-TextComment 0x56046817a130 <line:10386:3, col:79> Text=" will cause systems to evenly distribute matched entities across threads. The"
| |-TextComment 0x56046817a150 <line:10387:3, col:78> Text=" operation may be called multiple times to reconfigure the number of threads"
| `-TextComment 0x56046817a170 <line:10388:3, col:54> Text=" used, but never while running a system / pipeline. "
|-FunctionDecl 0x5604680a1ae8 <line:10399:1, line:10400:23> line:10399:6 FlecsPipelineImport 'void (ecs_world_t *)'
| |-ParmVarDecl 0x5604680a1a58 <line:10400:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x56046817a310 <line:10394:4, line:10396:80>
| `-ParagraphComment 0x56046817a2e0 <line:10394:4, line:10396:80>
| |-TextComment 0x56046817a260 <line:10394:4, col:80> Text="/////////////////////////////////////////////////////////////////////////////"
| |-TextComment 0x56046817a280 <line:10395:4, col:11> Text="/ Module"
| `-TextComment 0x56046817a2a0 <line:10396:4, col:80> Text="/////////////////////////////////////////////////////////////////////////////"
|-RecordDecl 0x5604680a1c48 <line:10448:9, line:10451:1> line:10448:16 struct EcsTickSource definition
| |-FullComment 0x56046817a400 <line:10447:4, col:55>
| | `-ParagraphComment 0x56046817a3b0 <col:4, col:55>
| | `-TextComment 0x56046817a380 <col:4, col:55> Text=" Component used to provide a tick source to systems "
| |-FieldDecl 0x5604680a1d00 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:10449:10> col:10 tick 'bool'
| | `-FullComment 0x56046817a4d0 <col:36, col:59>
| | `-ParagraphComment 0x56046817a4a0 <col:36, col:59>
| | `-TextComment 0x56046817a470 <col:36, col:59> Text=" True if providing tick "
| `-FieldDecl 0x5604680a1d90 <line:37:21, line:10450:17> col:17 time_elapsed 'float'
| `-FullComment 0x56046817a5a0 <col:36, col:65>
| `-ParagraphComment 0x56046817a570 <col:36, col:65>
| `-TextComment 0x56046817a540 <col:36, col:65> Text=" Time elapsed since last tick "
|-TypedefDecl 0x5604680a1e68 <line:10448:1, line:10451:3> col:3 EcsTickSource 'struct EcsTickSource':'struct EcsTickSource'
| |-ElaboratedType 0x5604680a1e10 'struct EcsTickSource' sugar
| | `-RecordType 0x5604680a1cd0 'struct EcsTickSource'
| | `-Record 0x5604680a1c48 'EcsTickSource'
| `-FullComment 0x56046817a670 <line:10447:4, col:55>
| `-ParagraphComment 0x56046817a640 <col:4, col:55>
| `-TextComment 0x56046817a610 <col:4, col:55> Text=" Component used to provide a tick source to systems "
|-RecordDecl 0x5604680a1f00 <line:10454:9, line:10509:1> line:10454:16 struct ecs_system_desc_t definition
| |-FullComment 0x56046817a740 <line:10453:4, col:29>
| | `-ParagraphComment 0x56046817a710 <col:4, col:29>
| | `-TextComment 0x56046817a6e0 <col:4, col:29> Text=" Use with ecs_system_init "
| |-FieldDecl 0x5604680a1fb0 <line:10455:5, col:13> col:13 _canary 'int32_t':'int'
| |-FieldDecl 0x5604680a2038 <line:10458:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| | `-FullComment 0x56046817a810 <line:10457:8, col:60>
| | `-ParagraphComment 0x56046817a7e0 <col:8, col:60>
| | `-TextComment 0x56046817a7b0 <col:8, col:60> Text=" Existing entity to associate with system (optional) "
| |-FieldDecl 0x5604680a20c8 <line:10461:5, col:22> col:22 query 'ecs_query_desc_t':'struct ecs_query_desc_t'
| | `-FullComment 0x56046817a8e0 <line:10460:8, col:32>
| | `-ParagraphComment 0x56046817a8b0 <col:8, col:32>
| | `-TextComment 0x56046817a880 <col:8, col:32> Text=" System query parameters "
| |-FieldDecl 0x5604680a2158 <line:10475:5, col:22> col:22 run 'ecs_run_action_t':'void (*)(ecs_iter_t *)'
| | `-FullComment 0x56046817ab70 <line:10463:8, line:10474:70>
| | |-ParagraphComment 0x56046817a9d0 <line:10463:8, line:10465:75>
| | | |-TextComment 0x56046817a950 <line:10463:8, col:55> Text=" Callback that is invoked when a system is ran. "
| | | |-TextComment 0x56046817a970 <line:10464:7, col:77> Text=" When left to NULL, the default system runner is used, which calls the "
| | | `-TextComment 0x56046817a990 <line:10465:7, col:75> Text=" "callback" action for each result returned from the system's query. "
| | |-ParagraphComment 0x56046817aac0 <line:10467:7, line:10471:62>
| | | |-TextComment 0x56046817a9f0 <line:10467:7, col:78> Text=" It should not be assumed that the input iterator can always be iterated"
| | | |-TextComment 0x56046817aa10 <line:10468:7, col:76> Text=" with ecs_query_next. When a system is multithreaded and/or paged, the"
| | | |-TextComment 0x56046817aa30 <line:10469:7, col:78> Text=" iterator can be either a worker or paged iterator. Future use cases may"
| | | |-TextComment 0x56046817aa50 <line:10470:7, col:79> Text=" introduce additional inputs for a system, such as rules and filters. The"
| | | `-TextComment 0x56046817aa70 <line:10471:7, col:62> Text=" correct function to use for iteration is ecs_iter_next."
| | `-ParagraphComment 0x56046817ab30 <line:10473:7, line:10474:70>
| | |-TextComment 0x56046817aae0 <line:10473:7, col:77> Text=" An implementation can test whether the iterator is a query iterator by"
| | `-TextComment 0x56046817ab00 <line:10474:7, col:70> Text=" testing whether the it->next value is equal to ecs_query_next. "
| |-FieldDecl 0x5604680a21e8 <line:10480:5, col:23> col:23 callback 'ecs_iter_action_t':'void (*)(ecs_iter_t *)'
| | `-FullComment 0x56046817ac90 <line:10477:8, line:10479:54>
| | `-ParagraphComment 0x56046817ac60 <line:10477:8, line:10479:54>
| | |-TextComment 0x56046817abe0 <line:10477:8, col:81> Text=" Callback that is ran for each result returned by the system's query. This"
| | |-TextComment 0x56046817ac00 <line:10478:7, col:76> Text=" means that this callback can be invoked multiple times per system per"
| | `-TextComment 0x56046817ac20 <line:10479:7, col:54> Text=" frame, typically once for each matching table. "
| |-FieldDecl 0x5604680a2280 <line:10483:5, col:11> col:11 ctx 'void *'
| | `-FullComment 0x56046817ad60 <line:10482:8, col:64>
| | `-ParagraphComment 0x56046817ad30 <col:8, col:64>
| | `-TextComment 0x56046817ad00 <col:8, col:64> Text=" Context to be passed to callback (as ecs_iter_t::param) "
| |-FieldDecl 0x5604680a2310 <line:10486:5, col:11> col:11 binding_ctx 'void *'
| | `-FullComment 0x56046817ae30 <line:10485:8, col:74>
| | `-ParagraphComment 0x56046817ae00 <col:8, col:74>
| | `-TextComment 0x56046817add0 <col:8, col:74> Text=" Binding context, for when system is implemented in other language "
| |-FieldDecl 0x5604680a2398 <line:10491:5, col:20> col:20 ctx_free 'ecs_ctx_free_t':'void (*)(void *)'
| | `-FullComment 0x56046817af50 <line:10488:8, line:10490:26>
| | `-ParagraphComment 0x56046817af20 <line:10488:8, line:10490:26>
| | |-TextComment 0x56046817aea0 <line:10488:8, col:78> Text=" Functions that are invoked during system cleanup to free context data."
| | |-TextComment 0x56046817aec0 <line:10489:7, col:72> Text=" When set, functions are called unconditionally, even when the ctx"
| | `-TextComment 0x56046817aee0 <line:10490:7, col:26> Text=" pointers are NULL. "
| |-FieldDecl 0x5604680a23f8 <line:10492:5, col:20> col:20 binding_ctx_free 'ecs_ctx_free_t':'void (*)(void *)'
| |-FieldDecl 0x5604680a2490 <line:37:21, line:10495:17> col:17 interval 'float'
| | `-FullComment 0x56046817b020 <line:10494:8, col:59>
| | `-ParagraphComment 0x56046817aff0 <col:8, col:59>
| | `-TextComment 0x56046817afc0 <col:8, col:59> Text=" Interval in seconds at which the system should run "
| |-FieldDecl 0x5604680a2518 <line:10498:5, col:13> col:13 rate 'int32_t':'int'
| | `-FullComment 0x56046817b0f0 <line:10497:8, col:44>
| | `-ParagraphComment 0x56046817b0c0 <col:8, col:44>
| | `-TextComment 0x56046817b090 <col:8, col:44> Text=" Rate at which the system should run "
| |-FieldDecl 0x5604680a25a8 <line:10501:5, col:18> col:18 tick_source 'ecs_entity_t':'unsigned long'
| | `-FullComment 0x56046817b1c0 <line:10500:8, col:63>
| | `-ParagraphComment 0x56046817b190 <col:8, col:63>
| | `-TextComment 0x56046817b160 <col:8, col:63> Text=" External tick soutce that determines when system ticks "
| |-FieldDecl 0x5604680a2638 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:10504:10> col:10 multi_threaded 'bool'
| | `-FullComment 0x56046817b290 <line:10503:8, col:56>
| | `-ParagraphComment 0x56046817b260 <col:8, col:56>
| | `-TextComment 0x56046817b230 <col:8, col:56> Text=" If true, system will be ran on multiple threads "
| `-FieldDecl 0x5604680a26c8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:10508:10> col:10 no_readonly 'bool'
| `-FullComment 0x56046817b380 <line:10506:8, line:10507:36>
| `-ParagraphComment 0x56046817b350 <line:10506:8, line:10507:36>
| |-TextComment 0x56046817b300 <line:10506:8, col:80> Text=" If true, system will have access to actuall world. Cannot be true at the"
| `-TextComment 0x56046817b320 <line:10507:7, col:36> Text=" same time as multi_threaded. "
|-TypedefDecl 0x5604680a2778 <line:10454:1, line:10509:3> col:3 referenced ecs_system_desc_t 'struct ecs_system_desc_t':'struct ecs_system_desc_t'
| |-ElaboratedType 0x5604680a2720 'struct ecs_system_desc_t' sugar
| | `-RecordType 0x5604680a1f80 'struct ecs_system_desc_t'
| | `-Record 0x5604680a1f00 'ecs_system_desc_t'
| `-FullComment 0x56046817b450 <line:10453:4, col:29>
| `-ParagraphComment 0x56046817b420 <col:4, col:29>
| `-TextComment 0x56046817b3f0 <col:4, col:29> Text=" Use with ecs_system_init "
|-FunctionDecl 0x5604680a2a28 <line:10513:1, line:10515:34> line:10513:14 ecs_system_init 'ecs_entity_t (ecs_world_t *, const ecs_system_desc_t *)'
| |-ParmVarDecl 0x5604680a2820 <line:10514:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680a2918 <line:10515:5, col:30> col:30 desc 'const ecs_system_desc_t *'
| `-FullComment 0x56046817b520 <line:10511:4, col:20>
| `-ParagraphComment 0x56046817b4f0 <col:4, col:20>
| `-TextComment 0x56046817b4c0 <col:4, col:20> Text=" Create a system "
|-FunctionDecl 0x5604680a2dd8 <line:10572:1, line:10576:16> line:10572:14 ecs_run 'ecs_entity_t (ecs_world_t *, ecs_entity_t, float, void *)'
| |-ParmVarDecl 0x5604680a2b18 <line:10573:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680a2b90 <line:10574:5, col:18> col:18 system 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680a2c10 <line:37:21, line:10575:17> col:17 delta_time 'float'
| |-ParmVarDecl 0x5604680a2c90 <line:10576:5, col:11> col:11 param 'void *'
| `-FullComment 0x56046817bd20 <line:10544:4, line:10569:69>
| |-ParagraphComment 0x56046817b630 <line:10544:4, line:10547:79>
| | |-TextComment 0x56046817b590 <line:10544:4, col:35> Text=" Run a specific system manually."
| | |-TextComment 0x56046817b5b0 <line:10545:3, col:74> Text=" This operation runs a single system manually. It is an efficient way to"
| | |-TextComment 0x56046817b5d0 <line:10546:3, col:75> Text=" invoke logic on a set of entities, as manual systems are only matched to"
| | `-TextComment 0x56046817b5f0 <line:10547:3, col:79> Text=" tables at creation time or after creation time, when a new table is created."
| |-ParagraphComment 0x56046817b6f0 <line:10549:3, line:10552:73>
| | |-TextComment 0x56046817b650 <line:10549:3, col:72> Text=" Manual systems are useful to evaluate lists of prematched entities at"
| | |-TextComment 0x56046817b670 <line:10550:3, col:77> Text=" application defined times. Because none of the matching logic is evaluated"
| | |-TextComment 0x56046817b690 <line:10551:3, col:76> Text=" before the system is invoked, manual systems are much more efficient than"
| | `-TextComment 0x56046817b6b0 <line:10552:3, col:73> Text=" manually obtaining a list of entities and retrieving their components."
| |-ParagraphComment 0x56046817b790 <line:10554:3, line:10556:58>
| | |-TextComment 0x56046817b710 <line:10554:3, col:79> Text=" An application may pass custom data to a system through the param parameter."
| | |-TextComment 0x56046817b730 <line:10555:3, col:74> Text=" This data can be accessed by the system through the param member in the"
| | `-TextComment 0x56046817b750 <line:10556:3, col:58> Text=" ecs_iter_t value that is passed to the system callback."
| |-ParagraphComment 0x56046817b8a0 <line:10558:3, line:10563:55>
| | |-TextComment 0x56046817b7b0 <line:10558:3, col:77> Text=" Any system may interrupt execution by setting the interrupted_by member in"
| | |-TextComment 0x56046817b7d0 <line:10559:3, col:78> Text=" the ecs_iter_t value. This is particularly useful for manual systems, where"
| | |-TextComment 0x56046817b7f0 <line:10560:3, col:70> Text=" the value of interrupted_by is returned by this operation. This, in"
| | |-TextComment 0x56046817b810 <line:10561:3, col:75> Text=" cominbation with the param argument lets applications use manual systems"
| | |-TextComment 0x56046817b830 <line:10562:3, col:77> Text=" to lookup entities: once the entity has been found its handle is passed to"
| | `-TextComment 0x56046817b850 <line:10563:3, col:55> Text=" interrupted_by, which is then subsequently returned."
| |-ParagraphComment 0x56046817b8f0 <line:10565:3>
| | `-TextComment 0x56046817b8c0 <col:3> Text=" "
| |-ParamCommandComment 0x56046817b910 <col:4, line:10566:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046817b9c0 <line:10565:16, line:10566:3>
| | |-TextComment 0x56046817b970 <line:10565:16, col:26> Text=" The world."
| | `-TextComment 0x56046817b990 <line:10566:3> Text=" "
| |-ParamCommandComment 0x56046817b9e0 <col:4, line:10567:3> [in] implicitly Param="system" ParamIndex=1
| | `-ParagraphComment 0x56046817ba90 <line:10566:17, line:10567:3>
| | |-TextComment 0x56046817ba40 <line:10566:17, col:35> Text=" The system to run."
| | `-TextComment 0x56046817ba60 <line:10567:3> Text=" "
| |-ParamCommandComment 0x56046817bab0 <col:4, line:10568:3> [in] implicitly Param="delta_time" ParamIndex=2
| | `-ParagraphComment 0x56046817bb60 <line:10567:21, line:10568:3>
| | |-TextComment 0x56046817bb10 <line:10567:21, col:70> Text=" The time passed since the last system invocation."
| | `-TextComment 0x56046817bb30 <line:10568:3> Text=" "
| |-ParamCommandComment 0x56046817bb80 <col:4, line:10569:3> [in] implicitly Param="param" ParamIndex=3
| | `-ParagraphComment 0x56046817bc30 <line:10568:16, line:10569:3>
| | |-TextComment 0x56046817bbe0 <line:10568:16, col:63> Text=" A user-defined parameter to pass to the system."
| | `-TextComment 0x56046817bc00 <line:10569:3> Text=" "
| `-BlockCommandComment 0x56046817bc50 <col:4, col:69> Name="return"
| `-ParagraphComment 0x56046817bcb0 <col:11, col:69>
| `-TextComment 0x56046817bc80 <col:11, col:69> Text=" handle to last evaluated entity if system was interrupted."
|-FunctionDecl 0x5604680a32b8 <line:10589:1, line:10595:16> line:10589:14 ecs_run_worker 'ecs_entity_t (ecs_world_t *, ecs_entity_t, int32_t, int32_t, float, void *)'
| |-ParmVarDecl 0x5604680a2ed8 <line:10590:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680a2f50 <line:10591:5, col:18> col:18 system 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680a2fc8 <line:10592:5, col:13> col:13 stage_current 'int32_t':'int'
| |-ParmVarDecl 0x5604680a3040 <line:10593:5, col:13> col:13 stage_count 'int32_t':'int'
| |-ParmVarDecl 0x5604680a30c0 <line:37:21, line:10594:17> col:17 delta_time 'float'
| |-ParmVarDecl 0x5604680a3140 <line:10595:5, col:11> col:11 param 'void *'
| `-FullComment 0x56046817c410 <line:10578:4, line:10586:69>
| |-ParagraphComment 0x56046817bdc0 <line:10578:4, col:78>
| | `-TextComment 0x56046817bd90 <col:4, col:78> Text=" Same as ecs_run, but subdivides entities across number of provided stages."
| |-ParagraphComment 0x56046817be10 <line:10580:3>
| | `-TextComment 0x56046817bde0 <col:3> Text=" "
| |-ParamCommandComment 0x56046817be30 <col:4, line:10581:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046817bee0 <line:10580:16, line:10581:3>
| | |-TextComment 0x56046817be90 <line:10580:16, col:26> Text=" The world."
| | `-TextComment 0x56046817beb0 <line:10581:3> Text=" "
| |-ParamCommandComment 0x56046817bf00 <col:4, line:10582:3> [in] implicitly Param="system" ParamIndex=1
| | `-ParagraphComment 0x56046817bfb0 <line:10581:17, line:10582:3>
| | |-TextComment 0x56046817bf60 <line:10581:17, col:35> Text=" The system to run."
| | `-TextComment 0x56046817bf80 <line:10582:3> Text=" "
| |-ParamCommandComment 0x56046817bfd0 <col:4, line:10583:3> [in] implicitly Param="stage_current" ParamIndex=2
| | `-ParagraphComment 0x56046817c080 <line:10582:24, line:10583:3>
| | |-TextComment 0x56046817c030 <line:10582:24, col:52> Text=" The id of the current stage."
| | `-TextComment 0x56046817c050 <line:10583:3> Text=" "
| |-ParamCommandComment 0x56046817c0a0 <col:4, line:10584:3> [in] implicitly Param="stage_count" ParamIndex=3
| | `-ParagraphComment 0x56046817c150 <line:10583:22, line:10584:3>
| | |-TextComment 0x56046817c100 <line:10583:22, col:49> Text=" The total number of stages."
| | `-TextComment 0x56046817c120 <line:10584:3> Text=" "
| |-ParamCommandComment 0x56046817c170 <col:4, line:10585:3> [in] implicitly Param="delta_time" ParamIndex=4
| | `-ParagraphComment 0x56046817c220 <line:10584:21, line:10585:3>
| | |-TextComment 0x56046817c1d0 <line:10584:21, col:70> Text=" The time passed since the last system invocation."
| | `-TextComment 0x56046817c1f0 <line:10585:3> Text=" "
| |-ParamCommandComment 0x56046817c240 <col:4, line:10586:3> [in] implicitly Param="param" ParamIndex=5
| | `-ParagraphComment 0x56046817c2f0 <line:10585:16, line:10586:3>
| | |-TextComment 0x56046817c2a0 <line:10585:16, col:63> Text=" A user-defined parameter to pass to the system."
| | `-TextComment 0x56046817c2c0 <line:10586:3> Text=" "
| `-BlockCommandComment 0x56046817c310 <col:4, col:69> Name="return"
| `-ParagraphComment 0x56046817c370 <col:11, col:69>
| `-TextComment 0x56046817c340 <col:11, col:69> Text=" handle to last evaluated entity if system was interrupted."
|-FunctionDecl 0x5604680a37a8 <line:10618:1, line:10624:16> line:10618:14 ecs_run_w_filter 'ecs_entity_t (ecs_world_t *, ecs_entity_t, float, int32_t, int32_t, void *)'
| |-ParmVarDecl 0x5604680a33c8 <line:10619:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680a3440 <line:10620:5, col:18> col:18 system 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680a34c0 <line:37:21, line:10621:17> col:17 delta_time 'float'
| |-ParmVarDecl 0x5604680a3538 <line:10622:5, col:13> col:13 offset 'int32_t':'int'
| |-ParmVarDecl 0x5604680a35b0 <line:10623:5, col:13> col:13 limit 'int32_t':'int'
| |-ParmVarDecl 0x5604680a3630 <line:10624:5, col:11> col:11 param 'void *'
| `-FullComment 0x56046817cb10 <line:10597:4, line:10615:69>
| |-ParagraphComment 0x56046817c500 <line:10597:4, line:10599:26>
| | |-TextComment 0x56046817c480 <line:10597:4, col:49> Text=" Run system with offset/limit and type filter."
| | |-TextComment 0x56046817c4a0 <line:10598:3, col:79> Text=" This operation is the same as ecs_run, but filters the entities that will be"
| | `-TextComment 0x56046817c4c0 <line:10599:3, col:26> Text=" iterated by the system."
| |-ParagraphComment 0x56046817c5a0 <line:10601:3, line:10603:55>
| | |-TextComment 0x56046817c520 <line:10601:3, col:78> Text=" Entities can be filtered in two ways. Offset and limit control the range of"
| | |-TextComment 0x56046817c540 <line:10602:3, col:79> Text=" entities that is iterated over. The range is applied to all entities matched"
| | `-TextComment 0x56046817c560 <line:10603:3, col:55> Text=" with the system, thus may cover multiple archetypes."
| |-ParagraphComment 0x56046817c690 <line:10605:3, line:10609:46>
| | |-TextComment 0x56046817c5c0 <line:10605:3, col:77> Text=" The type filter controls which entity types the system will evaluate. Only"
| | |-TextComment 0x56046817c5e0 <line:10606:3, col:80> Text=" types that contain all components in the type filter will be iterated over. A"
| | |-TextComment 0x56046817c600 <line:10607:3, col:79> Text=" type filter is only evaluated once per table, which makes filtering cheap if"
| | |-TextComment 0x56046817c620 <line:10608:3, col:80> Text=" the number of entities is large and the number of tables is small, but not as"
| | `-TextComment 0x56046817c640 <line:10609:3, col:46> Text=" cheap as filtering in the system signature."
| |-ParagraphComment 0x56046817c6e0 <line:10611:3>
| | `-TextComment 0x56046817c6b0 <col:3> Text=" "
| |-ParamCommandComment 0x56046817c700 <col:4, line:10612:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046817c7b0 <line:10611:16, line:10612:3>
| | |-TextComment 0x56046817c760 <line:10611:16, col:26> Text=" The world."
| | `-TextComment 0x56046817c780 <line:10612:3> Text=" "
| |-ParamCommandComment 0x56046817c7d0 <col:4, line:10613:3> [in] implicitly Param="system" ParamIndex=1
| | `-ParagraphComment 0x56046817c880 <line:10612:17, line:10613:3>
| | |-TextComment 0x56046817c830 <line:10612:17, col:38> Text=" The system to invoke."
| | `-TextComment 0x56046817c850 <line:10613:3> Text=" "
| |-ParamCommandComment 0x56046817c8a0 <col:4, line:10614:3> [in] implicitly Param="delta_time" ParamIndex=2
| | `-ParagraphComment 0x56046817c950 <line:10613:21, line:10614:3>
| | |-TextComment 0x56046817c900 <line:10613:21, col:70> Text=" The time passed since the last system invocation."
| | `-TextComment 0x56046817c920 <line:10614:3> Text=" "
| |-ParamCommandComment 0x56046817c970 <col:4, line:10615:3> [in] implicitly Param="param" ParamIndex=5
| | `-ParagraphComment 0x56046817ca20 <line:10614:16, line:10615:3>
| | |-TextComment 0x56046817c9d0 <line:10614:16, col:63> Text=" A user-defined parameter to pass to the system."
| | `-TextComment 0x56046817c9f0 <line:10615:3> Text=" "
| `-BlockCommandComment 0x56046817ca40 <col:4, col:69> Name="return"
| `-ParagraphComment 0x56046817caa0 <col:11, col:69>
| `-TextComment 0x56046817ca70 <col:11, col:69> Text=" handle to last evaluated entity if system was interrupted."
|-FunctionDecl 0x5604680a6678 <line:10636:1, line:10638:24> line:10636:14 ecs_system_get_query 'ecs_query_t *(const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x5604680a64f0 <line:10637:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680a6568 <line:10638:5, col:18> col:18 system 'ecs_entity_t':'unsigned long'
| `-FullComment 0x56046817cee0 <line:10626:4, line:10633:21>
| |-ParagraphComment 0x56046817cc20 <line:10626:4, line:10629:64>
| | |-TextComment 0x56046817cb80 <line:10626:4, col:38> Text=" Get the query object for a system."
| | |-TextComment 0x56046817cba0 <line:10627:3, col:80> Text=" Systems use queries under the hood. This enables an application to get access"
| | |-TextComment 0x56046817cbc0 <line:10628:3, col:76> Text=" to the underlying query object of a system. This can be useful when, for "
| | `-TextComment 0x56046817cbe0 <line:10629:3, col:64> Text=" example, an application needs to enable sorting for a system."
| |-ParagraphComment 0x56046817cc70 <line:10631:3>
| | `-TextComment 0x56046817cc40 <col:3> Text=" "
| |-ParamCommandComment 0x56046817cc90 <col:4, line:10632:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046817cd40 <line:10631:16, line:10632:3>
| | |-TextComment 0x56046817ccf0 <line:10631:16, col:26> Text=" The world."
| | `-TextComment 0x56046817cd10 <line:10632:3> Text=" "
| |-ParamCommandComment 0x56046817cd60 <col:4, line:10633:3> [in] implicitly Param="system" ParamIndex=1
| | `-ParagraphComment 0x56046817ce10 <line:10632:17, line:10633:3>
| | |-TextComment 0x56046817cdc0 <line:10632:17, col:59> Text=" The system from which to obtain the query."
| | `-TextComment 0x56046817cde0 <line:10633:3> Text=" "
| `-BlockCommandComment 0x56046817ce30 <col:4, col:21> Name="return"
| `-ParagraphComment 0x56046817ce90 <col:11, col:21>
| `-TextComment 0x56046817ce60 <col:11, col:21> Text=" The query."
|-FunctionDecl 0x5604680a6880 <line:10649:1, line:10651:24> line:10649:7 ecs_get_system_ctx 'void *(const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x5604680a6768 <line:10650:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680a67e0 <line:10651:5, col:18> col:18 system 'ecs_entity_t':'unsigned long'
| `-FullComment 0x56046817d290 <line:10640:4, line:10646:23>
| |-ParagraphComment 0x56046817cfd0 <line:10640:4, line:10642:70>
| | |-TextComment 0x56046817cf50 <line:10640:4, col:23> Text=" Get system context."
| | |-TextComment 0x56046817cf70 <line:10641:3, col:68> Text=" This operation returns the context pointer set for the system. If"
| | `-TextComment 0x56046817cf90 <line:10642:3, col:70> Text=" the provided entity is not a system, the function will return NULL."
| |-ParagraphComment 0x56046817d020 <line:10644:3>
| | `-TextComment 0x56046817cff0 <col:3> Text=" "
| |-ParamCommandComment 0x56046817d040 <col:4, line:10645:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046817d0f0 <line:10644:16, line:10645:3>
| | |-TextComment 0x56046817d0a0 <line:10644:16, col:26> Text=" The world."
| | `-TextComment 0x56046817d0c0 <line:10645:3> Text=" "
| |-ParamCommandComment 0x56046817d110 <col:4, line:10646:3> [in] implicitly Param="system" ParamIndex=1
| | `-ParagraphComment 0x56046817d1c0 <line:10645:17, line:10646:3>
| | |-TextComment 0x56046817d170 <line:10645:17, col:61> Text=" The system from which to obtain the context."
| | `-TextComment 0x56046817d190 <line:10646:3> Text=" "
| `-BlockCommandComment 0x56046817d1e0 <col:4, col:23> Name="return"
| `-ParagraphComment 0x56046817d240 <col:11, col:23>
| `-TextComment 0x56046817d210 <col:11, col:23> Text=" The context."
|-FunctionDecl 0x5604680a6a80 <line:10663:1, line:10665:24> line:10663:7 ecs_get_system_binding_ctx 'void *(const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x5604680a6968 <line:10664:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680a69e0 <line:10665:5, col:18> col:18 system 'ecs_entity_t':'unsigned long'
| `-FullComment 0x56046817d660 <line:10653:4, line:10660:23>
| |-ParagraphComment 0x56046817d3a0 <line:10653:4, line:10656:35>
| | |-TextComment 0x56046817d300 <line:10653:4, col:31> Text=" Get system binding context."
| | |-TextComment 0x56046817d320 <line:10654:3, col:74> Text=" The binding context is a context typically used to attach any language "
| | |-TextComment 0x56046817d340 <line:10655:3, col:73> Text=" binding specific data that is needed when invoking a callback that is "
| | `-TextComment 0x56046817d360 <line:10656:3, col:35> Text=" implemented in another language."
| |-ParagraphComment 0x56046817d3f0 <line:10658:3>
| | `-TextComment 0x56046817d3c0 <col:3> Text=" "
| |-ParamCommandComment 0x56046817d410 <col:4, line:10659:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046817d4c0 <line:10658:16, line:10659:3>
| | |-TextComment 0x56046817d470 <line:10658:16, col:26> Text=" The world."
| | `-TextComment 0x56046817d490 <line:10659:3> Text=" "
| |-ParamCommandComment 0x56046817d4e0 <col:4, line:10660:3> [in] implicitly Param="system" ParamIndex=1
| | `-ParagraphComment 0x56046817d590 <line:10659:17, line:10660:3>
| | |-TextComment 0x56046817d540 <line:10659:17, col:61> Text=" The system from which to obtain the context."
| | `-TextComment 0x56046817d560 <line:10660:3> Text=" "
| `-BlockCommandComment 0x56046817d5b0 <col:4, col:23> Name="return"
| `-ParagraphComment 0x56046817d610 <col:11, col:23>
| `-TextComment 0x56046817d5e0 <col:11, col:23> Text=" The context."
|-FunctionDecl 0x5604680a6bd0 <line:10668:1, line:10669:23> line:10668:6 FlecsSystemImport 'void (ecs_world_t *)'
| `-ParmVarDecl 0x5604680a6b40 <line:10669:5, col:18> col:18 world 'ecs_world_t *'
|-RecordDecl 0x5604680a6d38 <line:10714:9, line:10718:1> line:10714:16 struct ecs_gauge_t definition
| |-FullComment 0x56046817d730 <line:10713:4, col:46>
| | `-ParagraphComment 0x56046817d700 <col:4, col:46>
| | `-TextComment 0x56046817d6d0 <col:4, col:46> Text=" Simple value that indicates current state "
| |-FieldDecl 0x5604680a6ea0 <line:37:21, line:10715:36> col:17 avg 'float[60]'
| |-FieldDecl 0x5604680a6f78 <line:37:21, line:10716:36> col:17 min 'float[60]'
| `-FieldDecl 0x5604680a7050 <line:37:21, line:10717:36> col:17 max 'float[60]'
|-TypedefDecl 0x5604680a70f8 <line:10714:1, line:10718:3> col:3 referenced ecs_gauge_t 'struct ecs_gauge_t':'struct ecs_gauge_t'
| |-ElaboratedType 0x5604680a70a0 'struct ecs_gauge_t' sugar
| | `-RecordType 0x5604680a6dc0 'struct ecs_gauge_t'
| | `-Record 0x5604680a6d38 'ecs_gauge_t'
| `-FullComment 0x56046817d800 <line:10713:4, col:46>
| `-ParagraphComment 0x56046817d7d0 <col:4, col:46>
| `-TextComment 0x56046817d7a0 <col:4, col:46> Text=" Simple value that indicates current state "
|-RecordDecl 0x5604680a7168 <line:10721:9, line:10724:1> line:10721:16 struct ecs_counter_t definition
| |-FieldDecl 0x5604680a7240 <line:10722:5, col:17> col:17 rate 'ecs_gauge_t':'struct ecs_gauge_t'
| | `-FullComment 0x56046817d8d0 <col:47, col:72>
| | `-ParagraphComment 0x56046817d8a0 <col:47, col:72>
| | `-TextComment 0x56046817d870 <col:47, col:72> Text=" Keep track of deltas too "
| `-FieldDecl 0x5604680a7380 <line:10723:5, col:33> col:12 value 'double[60]'
|-TypedefDecl 0x5604680a7498 <line:10721:1, line:10724:3> col:3 referenced ecs_counter_t 'struct ecs_counter_t':'struct ecs_counter_t'
| `-ElaboratedType 0x5604680a7440 'struct ecs_counter_t' sugar
| `-RecordType 0x5604680a71f0 'struct ecs_counter_t'
| `-Record 0x5604680a7168 'ecs_counter_t'
|-RecordDecl 0x5604680a7508 <line:10727:9, line:10730:1> line:10727:15 union ecs_metric_t definition
| |-FieldDecl 0x5604680a75c0 <line:10728:5, col:17> col:17 gauge 'ecs_gauge_t':'struct ecs_gauge_t'
| `-FieldDecl 0x5604680a7640 <line:10729:5, col:19> col:19 counter 'ecs_counter_t':'struct ecs_counter_t'
|-TypedefDecl 0x5604680a76e8 <line:10727:1, line:10730:3> col:3 referenced ecs_metric_t 'union ecs_metric_t':'union ecs_metric_t'
| `-ElaboratedType 0x5604680a7690 'union ecs_metric_t' sugar
| `-RecordType 0x5604680a7590 'union ecs_metric_t'
| `-Record 0x5604680a7508 'ecs_metric_t'
|-RecordDecl 0x5604680a7758 <line:10732:9, line:10861:1> line:10732:16 struct ecs_world_stats_t definition
| |-FieldDecl 0x5604680a7810 <line:10733:5, col:13> col:13 first_ 'int64_t':'long'
| |-RecordDecl 0x5604680a7860 <line:10736:5, line:10739:5> line:10736:5 struct definition
| | |-FieldDecl 0x5604680a7930 <line:10737:9, col:22> col:22 count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817d9a0 <col:47, col:66>
| | | `-ParagraphComment 0x56046817d970 <col:47, col:66>
| | | `-TextComment 0x56046817d940 <col:47, col:66> Text=" Number of entities "
| | `-FieldDecl 0x5604680a79b8 <line:10738:9, col:22> col:22 not_alive_count 'ecs_metric_t':'union ecs_metric_t'
| | `-FullComment 0x56046817da70 <col:47, col:91>
| | `-ParagraphComment 0x56046817da40 <col:47, col:91>
| | `-TextComment 0x56046817da10 <col:47, col:91> Text=" Number of not alive (recyclable) entity ids "
| |-FieldDecl 0x5604680a7b58 <line:10736:5, line:10739:7> col:7 entities 'struct (unnamed struct at flecs.h:10736:5)':'struct ecs_world_stats_t::(unnamed at flecs.h:10736:5)'
| |-RecordDecl 0x5604680a7ba8 <line:10742:5, line:10751:5> line:10742:5 struct definition
| | |-FieldDecl 0x5604680a7c60 <line:10743:9, col:22> col:22 count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817db40 <col:47, col:83>
| | | `-ParagraphComment 0x56046817db10 <col:47, col:83>
| | | `-TextComment 0x56046817dae0 <col:47, col:83> Text=" Number of ids (excluding wildcards) "
| | |-FieldDecl 0x5604680a7ce8 <line:10744:9, col:22> col:22 tag_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817dc10 <col:47, col:84>
| | | `-ParagraphComment 0x56046817dbe0 <col:47, col:84>
| | | `-TextComment 0x56046817dbb0 <col:47, col:84> Text=" Number of tag ids (ids without data) "
| | |-FieldDecl 0x5604680a7d78 <line:10745:9, col:22> col:22 component_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817dce0 <col:47, col:88>
| | | `-ParagraphComment 0x56046817dcb0 <col:47, col:88>
| | | `-TextComment 0x56046817dc80 <col:47, col:88> Text=" Number of components ids (ids with data) "
| | |-FieldDecl 0x5604680a7e08 <line:10746:9, col:22> col:22 pair_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817ddb0 <col:47, col:66>
| | | `-ParagraphComment 0x56046817dd80 <col:47, col:66>
| | | `-TextComment 0x56046817dd50 <col:47, col:66> Text=" Number of pair ids "
| | |-FieldDecl 0x5604680a7e98 <line:10747:9, col:22> col:22 wildcard_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817de80 <col:47, col:70>
| | | `-ParagraphComment 0x56046817de50 <col:47, col:70>
| | | `-TextComment 0x56046817de20 <col:47, col:70> Text=" Number of wildcard ids "
| | |-FieldDecl 0x5604680a7f28 <line:10748:9, col:22> col:22 type_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817df50 <col:47, col:74>
| | | `-ParagraphComment 0x56046817df20 <col:47, col:74>
| | | `-TextComment 0x56046817def0 <col:47, col:74> Text=" Number of registered types "
| | |-FieldDecl 0x5604680a7fb8 <line:10749:9, col:22> col:22 create_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817e020 <col:47, col:83>
| | | `-ParagraphComment 0x56046817dff0 <col:47, col:83>
| | | `-TextComment 0x56046817dfc0 <col:47, col:83> Text=" Number of times id has been created "
| | `-FieldDecl 0x5604680a8048 <line:10750:9, col:22> col:22 delete_count 'ecs_metric_t':'union ecs_metric_t'
| | `-FullComment 0x56046817e0f0 <col:47, col:83>
| | `-ParagraphComment 0x56046817e0c0 <col:47, col:83>
| | `-TextComment 0x56046817e090 <col:47, col:83> Text=" Number of times id has been deleted "
| |-FieldDecl 0x5604680a8128 <line:10742:5, line:10751:7> col:7 ids 'struct (unnamed struct at flecs.h:10742:5)':'struct ecs_world_stats_t::(unnamed at flecs.h:10742:5)'
| |-RecordDecl 0x5604680a8178 <line:10754:5, line:10763:5> line:10754:5 struct definition
| | |-FieldDecl 0x5604680a8230 <line:10755:9, col:22> col:22 count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817e1c0 <col:48, col:65>
| | | `-ParagraphComment 0x56046817e190 <col:48, col:65>
| | | `-TextComment 0x56046817e160 <col:48, col:65> Text=" Number of tables "
| | |-FieldDecl 0x5604680a82b8 <line:10756:9, col:22> col:22 empty_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817e290 <col:48, col:71>
| | | `-ParagraphComment 0x56046817e260 <col:48, col:71>
| | | `-TextComment 0x56046817e230 <col:48, col:71> Text=" Number of empty tables "
| | |-FieldDecl 0x5604680a8348 <line:10757:9, col:22> col:22 tag_only_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817e360 <col:48, col:80>
| | | `-ParagraphComment 0x56046817e330 <col:48, col:80>
| | | `-TextComment 0x56046817e300 <col:48, col:80> Text=" Number of tables with only tags "
| | |-FieldDecl 0x5604680a83d8 <line:10758:9, col:22> col:22 trivial_only_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817e450 <col:48, col:94>
| | | `-ParagraphComment 0x56046817e420 <col:48, col:94>
| | | `-TextComment 0x56046817e3d0 <col:48, col:94> Text=" Number of tables with only trivial components "
| | |-FieldDecl 0x5604680a8468 <line:10759:9, col:22> col:22 record_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817e520 <col:48, col:78>
| | | `-ParagraphComment 0x56046817e4f0 <col:48, col:78>
| | | `-TextComment 0x56046817e4c0 <col:48, col:78> Text=" Number of table cache records "
| | |-FieldDecl 0x5604680a8a90 <line:10760:9, col:22> col:22 storage_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817e5f0 <col:48, col:73>
| | | `-ParagraphComment 0x56046817e5c0 <col:48, col:73>
| | | `-TextComment 0x56046817e590 <col:48, col:73> Text=" Number of table storages "
| | |-FieldDecl 0x5604680a8b18 <line:10761:9, col:22> col:22 create_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817e6c0 <col:48, col:87>
| | | `-ParagraphComment 0x56046817e690 <col:48, col:87>
| | | `-TextComment 0x56046817e660 <col:48, col:87> Text=" Number of times table has been created "
| | `-FieldDecl 0x5604680a8ba8 <line:10762:9, col:22> col:22 delete_count 'ecs_metric_t':'union ecs_metric_t'
| | `-FullComment 0x56046817e790 <col:48, col:87>
| | `-ParagraphComment 0x56046817e760 <col:48, col:87>
| | `-TextComment 0x56046817e730 <col:48, col:87> Text=" Number of times table has been deleted "
| |-FieldDecl 0x5604680a8c88 <line:10754:5, line:10763:7> col:7 tables 'struct (unnamed struct at flecs.h:10754:5)':'struct ecs_world_stats_t::(unnamed at flecs.h:10754:5)'
| |-RecordDecl 0x5604680a8cd8 <line:10766:5, line:10770:5> line:10766:5 struct definition
| | |-FieldDecl 0x5604680a8d90 <line:10767:9, col:22> col:22 query_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817e860 <col:48, col:66>
| | | `-ParagraphComment 0x56046817e830 <col:48, col:66>
| | | `-TextComment 0x56046817e800 <col:48, col:66> Text=" Number of queries "
| | |-FieldDecl 0x5604680a8e18 <line:10768:9, col:22> col:22 observer_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817e930 <col:48, col:68>
| | | `-ParagraphComment 0x56046817e900 <col:48, col:68>
| | | `-TextComment 0x56046817e8d0 <col:48, col:68> Text=" Number of observers "
| | `-FieldDecl 0x5604680a8ea8 <line:10769:9, col:22> col:22 system_count 'ecs_metric_t':'union ecs_metric_t'
| | `-FullComment 0x56046817ea00 <col:48, col:66>
| | `-ParagraphComment 0x56046817e9d0 <col:48, col:66>
| | `-TextComment 0x56046817e9a0 <col:48, col:66> Text=" Number of systems "
| |-FieldDecl 0x5604680a8f88 <line:10766:5, line:10770:7> col:7 queries 'struct (unnamed struct at flecs.h:10766:5)':'struct ecs_world_stats_t::(unnamed at flecs.h:10766:5)'
| |-RecordDecl 0x5604680a8fd8 <line:10773:5, line:10785:5> line:10773:5 struct definition
| | |-FieldDecl 0x5604680a9090 <line:10774:9, col:22> col:22 add_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680a90f0 <line:10775:9, col:22> col:22 remove_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680a9150 <line:10776:9, col:22> col:22 delete_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680a91b0 <line:10777:9, col:22> col:22 clear_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680a9210 <line:10778:9, col:22> col:22 set_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680a9270 <line:10779:9, col:22> col:22 get_mut_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680a92d0 <line:10780:9, col:22> col:22 modified_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680a9330 <line:10781:9, col:22> col:22 other_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680a9390 <line:10782:9, col:22> col:22 discard_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680a93f0 <line:10783:9, col:22> col:22 batched_entity_count 'ecs_metric_t':'union ecs_metric_t'
| | `-FieldDecl 0x5604680a9450 <line:10784:9, col:22> col:22 batched_count 'ecs_metric_t':'union ecs_metric_t'
| |-FieldDecl 0x5604680a94f8 <line:10773:5, line:10785:7> col:7 commands 'struct (unnamed struct at flecs.h:10773:5)':'struct ecs_world_stats_t::(unnamed at flecs.h:10773:5)'
| |-RecordDecl 0x5604680a9548 <line:10787:5, line:10796:5> line:10787:5 struct definition
| | |-FieldDecl 0x5604680a9600 <line:10789:9, col:22> col:22 frame_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817ead0 <col:48, col:76>
| | | `-ParagraphComment 0x56046817eaa0 <col:48, col:76>
| | | `-TextComment 0x56046817ea70 <col:48, col:76> Text=" Number of frames processed. "
| | |-FieldDecl 0x5604680a9688 <line:10790:9, col:22> col:22 merge_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817eba0 <col:48, col:75>
| | | `-ParagraphComment 0x56046817eb70 <col:48, col:75>
| | | `-TextComment 0x56046817eb40 <col:48, col:75> Text=" Number of merges executed. "
| | |-FieldDecl 0x5604680a9718 <line:10791:9, col:22> col:22 rematch_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817ec70 <col:48, col:74>
| | | `-ParagraphComment 0x56046817ec40 <col:48, col:74>
| | | `-TextComment 0x56046817ec10 <col:48, col:74> Text=" Number of query rematches "
| | |-FieldDecl 0x5604680a97a8 <line:10792:9, col:22> col:22 pipeline_build_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817ed40 <col:48, col:132>
| | | `-ParagraphComment 0x56046817ed10 <col:48, col:132>
| | | `-TextComment 0x56046817ece0 <col:48, col:132> Text=" Number of system pipeline rebuilds (occurs when an inactive system becomes active). "
| | |-FieldDecl 0x5604680a9838 <line:10793:9, col:22> col:22 systems_ran 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817ee10 <col:48, col:71>
| | | `-ParagraphComment 0x56046817ede0 <col:48, col:71>
| | | `-TextComment 0x56046817edb0 <col:48, col:71> Text=" Number of systems ran. "
| | |-FieldDecl 0x5604680a98c8 <line:10794:9, col:22> col:22 observers_ran 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817eee0 <col:48, col:89>
| | | `-ParagraphComment 0x56046817eeb0 <col:48, col:89>
| | | `-TextComment 0x56046817ee80 <col:48, col:89> Text=" Number of times an observer was invoked. "
| | `-FieldDecl 0x5604680a9958 <line:10795:9, col:22> col:22 event_emit_count 'ecs_metric_t':'union ecs_metric_t'
| | `-FullComment 0x56046817efb0 <col:48, col:73>
| | `-ParagraphComment 0x56046817ef80 <col:48, col:73>
| | `-TextComment 0x56046817ef50 <col:48, col:73> Text=" Number of events emitted "
| |-FieldDecl 0x5604680a9a38 <line:10787:5, line:10796:7> col:7 frame 'struct (unnamed struct at flecs.h:10787:5)':'struct ecs_world_stats_t::(unnamed at flecs.h:10787:5)'
| |-RecordDecl 0x5604680a9a88 <line:10798:5, line:10809:5> line:10798:5 struct definition
| | |-FieldDecl 0x5604680a9b40 <line:10800:9, col:22> col:22 world_time_raw 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817f080 <col:48, col:124>
| | | `-ParagraphComment 0x56046817f050 <col:48, col:124>
| | | `-TextComment 0x56046817f020 <col:48, col:124> Text=" Actual time passed since simulation start (first time progress() is called) "
| | |-FieldDecl 0x5604680a9bc8 <line:10801:9, col:22> col:22 world_time 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817f150 <col:48, col:127>
| | | `-ParagraphComment 0x56046817f120 <col:48, col:127>
| | | `-TextComment 0x56046817f0f0 <col:48, col:127> Text=" Simulation time passed since simulation start. Takes into account time scaling "
| | |-FieldDecl 0x5604680a9c58 <line:10802:9, col:22> col:22 frame_time 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817f220 <col:48, col:131>
| | | `-ParagraphComment 0x56046817f1f0 <col:48, col:131>
| | | `-TextComment 0x56046817f1c0 <col:48, col:131> Text=" Time spent processing a frame. Smaller than world_time_total when load is not 100% "
| | |-FieldDecl 0x5604680a9ce8 <line:10803:9, col:22> col:22 system_time 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817f2f0 <col:48, col:79>
| | | `-ParagraphComment 0x56046817f2c0 <col:48, col:79>
| | | `-TextComment 0x56046817f290 <col:48, col:79> Text=" Time spent on running systems. "
| | |-FieldDecl 0x5604680a9d78 <line:10804:9, col:22> col:22 emit_time 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817f3c0 <col:48, col:83>
| | | `-ParagraphComment 0x56046817f390 <col:48, col:83>
| | | `-TextComment 0x56046817f360 <col:48, col:83> Text=" Time spent on notifying observers. "
| | |-FieldDecl 0x5604680a9e08 <line:10805:9, col:22> col:22 merge_time 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817f490 <col:48, col:80>
| | | `-ParagraphComment 0x56046817f460 <col:48, col:80>
| | | `-TextComment 0x56046817f430 <col:48, col:80> Text=" Time spent on merging commands. "
| | |-FieldDecl 0x5604680a9e98 <line:10806:9, col:22> col:22 rematch_time 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817f560 <col:48, col:74>
| | | `-ParagraphComment 0x56046817f530 <col:48, col:74>
| | | `-TextComment 0x56046817f500 <col:48, col:74> Text=" Time spent on rematching. "
| | |-FieldDecl 0x5604680a9f28 <line:10807:9, col:22> col:22 fps 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817f630 <col:48, col:67>
| | | `-ParagraphComment 0x56046817f600 <col:48, col:67>
| | | `-TextComment 0x56046817f5d0 <col:48, col:67> Text=" Frames per second. "
| | `-FieldDecl 0x5604680a9fb8 <line:10808:9, col:22> col:22 delta_time 'ecs_metric_t':'union ecs_metric_t'
| | `-FullComment 0x56046817f700 <col:48, col:60>
| | `-ParagraphComment 0x56046817f6d0 <col:48, col:60>
| | `-TextComment 0x56046817f6a0 <col:48, col:60> Text=" Delta_time. "
| |-FieldDecl 0x5604680aa098 <line:10798:5, line:10809:7> col:7 performance 'struct (unnamed struct at flecs.h:10798:5)':'struct ecs_world_stats_t::(unnamed at flecs.h:10798:5)'
| |-RecordDecl 0x5604680aa0e8 <line:10811:5, line:10825:5> line:10811:5 struct definition
| | |-FieldDecl 0x5604680aa1a0 <line:10813:9, col:22> col:22 alloc_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817f7d0 <col:48, col:65>
| | | `-ParagraphComment 0x56046817f7a0 <col:48, col:65>
| | | `-TextComment 0x56046817f770 <col:48, col:65> Text=" Allocs per frame "
| | |-FieldDecl 0x5604680aa228 <line:10814:9, col:22> col:22 realloc_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817f8a0 <col:48, col:67>
| | | `-ParagraphComment 0x56046817f870 <col:48, col:67>
| | | `-TextComment 0x56046817f840 <col:48, col:67> Text=" Reallocs per frame "
| | |-FieldDecl 0x5604680aa2b8 <line:10815:9, col:22> col:22 free_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817f970 <col:48, col:64>
| | | `-ParagraphComment 0x56046817f940 <col:48, col:64>
| | | `-TextComment 0x56046817f910 <col:48, col:64> Text=" Frees per frame "
| | |-FieldDecl 0x5604680aa348 <line:10816:9, col:22> col:22 outstanding_alloc_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817fa90 <col:51, col:85>
| | | `-ParagraphComment 0x56046817fa60 <col:51, col:85>
| | | |-TextComment 0x56046817f9e0 <col:51, col:77> Text=" Difference between allocs "
| | | |-TextComment 0x56046817fa00 <col:78> Text="&"
| | | `-TextComment 0x56046817fa20 <col:79, col:85> Text=" frees "
| | |-FieldDecl 0x5604680aa3d8 <line:10819:9, col:22> col:22 block_alloc_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817fb60 <col:48, col:76>
| | | `-ParagraphComment 0x56046817fb30 <col:48, col:76>
| | | `-TextComment 0x56046817fb00 <col:48, col:76> Text=" Block allocations per frame "
| | |-FieldDecl 0x5604680aa468 <line:10820:9, col:22> col:22 block_free_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817fc30 <col:48, col:70>
| | | `-ParagraphComment 0x56046817fc00 <col:48, col:70>
| | | `-TextComment 0x56046817fbd0 <col:48, col:70> Text=" Block frees per frame "
| | |-FieldDecl 0x5604680aa4f8 <line:10821:9, col:22> col:22 block_outstanding_alloc_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817fd50 <col:57, col:91>
| | | `-ParagraphComment 0x56046817fd20 <col:57, col:91>
| | | |-TextComment 0x56046817fca0 <col:57, col:83> Text=" Difference between allocs "
| | | |-TextComment 0x56046817fcc0 <col:84> Text="&"
| | | `-TextComment 0x56046817fce0 <col:85, col:91> Text=" frees "
| | |-FieldDecl 0x5604680aa588 <line:10822:9, col:22> col:22 stack_alloc_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817fe20 <col:48, col:75>
| | | `-ParagraphComment 0x56046817fdf0 <col:48, col:75>
| | | `-TextComment 0x56046817fdc0 <col:48, col:75> Text=" Page allocations per frame "
| | |-FieldDecl 0x5604680aa618 <line:10823:9, col:22> col:22 stack_free_count 'ecs_metric_t':'union ecs_metric_t'
| | | `-FullComment 0x56046817fef0 <col:48, col:69>
| | | `-ParagraphComment 0x56046817fec0 <col:48, col:69>
| | | `-TextComment 0x56046817fe90 <col:48, col:69> Text=" Page frees per frame "
| | `-FieldDecl 0x5604680aa6a8 <line:10824:9, col:22> col:22 stack_outstanding_alloc_count 'ecs_metric_t':'union ecs_metric_t'
| | `-FullComment 0x560468180010 <col:57, col:91>
| | `-ParagraphComment 0x56046817ffe0 <col:57, col:91>
| | |-TextComment 0x56046817ff60 <col:57, col:83> Text=" Difference between allocs "
| | |-TextComment 0x56046817ff80 <col:84> Text="&"
| | `-TextComment 0x56046817ffa0 <col:85, col:91> Text=" frees "
| |-FieldDecl 0x5604680aa788 <line:10811:5, line:10825:7> col:7 memory 'struct (unnamed struct at flecs.h:10811:5)':'struct ecs_world_stats_t::(unnamed at flecs.h:10811:5)'
| |-RecordDecl 0x5604680aa7d8 <line:10827:5, line:10842:5> line:10827:5 struct definition
| | |-FieldDecl 0x5604680aa890 <line:10829:9, col:22> col:22 request_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680aa8f0 <line:10830:9, col:22> col:22 entity_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680aa950 <line:10831:9, col:22> col:22 entity_error_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680aa9b0 <line:10832:9, col:22> col:22 query_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680aaa10 <line:10833:9, col:22> col:22 query_error_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680ac2a0 <line:10834:9, col:22> col:22 query_name_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680ac300 <line:10835:9, col:22> col:22 query_name_error_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680ac360 <line:10836:9, col:22> col:22 query_name_from_cache_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680ac3c0 <line:10837:9, col:22> col:22 enable_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680ac420 <line:10838:9, col:22> col:22 enable_error_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680ac480 <line:10839:9, col:22> col:22 world_stats_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680ac4e0 <line:10840:9, col:22> col:22 pipeline_stats_count 'ecs_metric_t':'union ecs_metric_t'
| | `-FieldDecl 0x5604680ac540 <line:10841:9, col:22> col:22 stats_error_count 'ecs_metric_t':'union ecs_metric_t'
| |-FieldDecl 0x5604680ac5e8 <line:10827:5, line:10842:7> col:7 rest 'struct (unnamed struct at flecs.h:10827:5)':'struct ecs_world_stats_t::(unnamed at flecs.h:10827:5)'
| |-RecordDecl 0x5604680ac638 <line:10844:5, line:10855:5> line:10844:5 struct definition
| | |-FieldDecl 0x5604680ac6f0 <line:10846:9, col:22> col:22 request_received_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680ac750 <line:10847:9, col:22> col:22 request_invalid_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680ac7b0 <line:10848:9, col:22> col:22 request_handled_ok_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680ac810 <line:10849:9, col:22> col:22 request_handled_error_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680ac870 <line:10850:9, col:22> col:22 request_not_handled_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680ac8d0 <line:10851:9, col:22> col:22 request_preflight_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680ac930 <line:10852:9, col:22> col:22 send_ok_count 'ecs_metric_t':'union ecs_metric_t'
| | |-FieldDecl 0x5604680ac990 <line:10853:9, col:22> col:22 send_error_count 'ecs_metric_t':'union ecs_metric_t'
| | `-FieldDecl 0x5604680ac9f0 <line:10854:9, col:22> col:22 busy_count 'ecs_metric_t':'union ecs_metric_t'
| |-FieldDecl 0x5604680aca98 <line:10844:5, line:10855:7> col:7 http 'struct (unnamed struct at flecs.h:10844:5)':'struct ecs_world_stats_t::(unnamed at flecs.h:10844:5)'
| |-FieldDecl 0x5604680acaf8 <line:10857:5, col:13> col:13 last_ 'int64_t':'long'
| `-FieldDecl 0x5604680acb88 <line:10860:5, col:13> col:13 t 'int32_t':'int'
| `-FullComment 0x5604681800e0 <line:10859:8, col:39>
| `-ParagraphComment 0x5604681800b0 <col:8, col:39>
| `-TextComment 0x560468180080 <col:8, col:39> Text=" Current position in ringbuffer "
|-TypedefDecl 0x5604680acc38 <line:10732:1, line:10861:3> col:3 referenced ecs_world_stats_t 'struct ecs_world_stats_t':'struct ecs_world_stats_t'
| `-ElaboratedType 0x5604680acbe0 'struct ecs_world_stats_t' sugar
| `-RecordType 0x5604680a77e0 'struct ecs_world_stats_t'
| `-Record 0x5604680a7758 'ecs_world_stats_t'
|-RecordDecl 0x5604680acca8 <line:10864:9, line:10873:1> line:10864:16 struct ecs_query_stats_t definition
| |-FieldDecl 0x5604680acd60 <line:10865:5, col:13> col:13 first_ 'int64_t':'long'
| |-FieldDecl 0x5604680acdc0 <line:10866:5, col:18> col:18 matched_table_count 'ecs_metric_t':'union ecs_metric_t'
| | `-FullComment 0x5604681801b0 <col:49, col:74>
| | `-ParagraphComment 0x560468180180 <col:49, col:74>
| | `-TextComment 0x560468180150 <col:49, col:74> Text=" Matched non-empty tables "
| |-FieldDecl 0x5604680ace48 <line:10867:5, col:18> col:18 matched_empty_table_count 'ecs_metric_t':'union ecs_metric_t'
| | `-FullComment 0x560468180280 <col:49, col:70>
| | `-ParagraphComment 0x560468180250 <col:49, col:70>
| | `-TextComment 0x560468180220 <col:49, col:70> Text=" Matched empty tables "
| |-FieldDecl 0x5604680aced8 <line:10868:5, col:18> col:18 matched_entity_count 'ecs_metric_t':'union ecs_metric_t'
| | `-FullComment 0x560468180350 <col:49, col:76>
| | `-ParagraphComment 0x560468180320 <col:49, col:76>
| | `-TextComment 0x5604681802f0 <col:49, col:76> Text=" Number of matched entities "
| |-FieldDecl 0x5604680acf68 <line:10869:5, col:13> col:13 last_ 'int64_t':'long'
| `-FieldDecl 0x5604680acff8 <line:10872:5, col:13> col:13 t 'int32_t':'int'
| `-FullComment 0x560468182440 <line:10871:8, col:39>
| `-ParagraphComment 0x5604681803f0 <col:8, col:39>
| `-TextComment 0x5604681803c0 <col:8, col:39> Text=" Current position in ringbuffer "
|-TypedefDecl 0x5604680ad0a8 <line:10864:1, line:10873:3> col:3 referenced ecs_query_stats_t 'struct ecs_query_stats_t':'struct ecs_query_stats_t'
| `-ElaboratedType 0x5604680ad050 'struct ecs_query_stats_t' sugar
| `-RecordType 0x5604680acd30 'struct ecs_query_stats_t'
| `-Record 0x5604680acca8 'ecs_query_stats_t'
|-RecordDecl 0x5604680ad140 <line:10876:9, line:10887:1> line:10876:16 struct ecs_system_stats_t definition
| |-FullComment 0x560468182510 <line:10875:4, col:62>
| | `-ParagraphComment 0x5604681824e0 <col:4, col:62>
| | `-TextComment 0x5604681824b0 <col:4, col:62> Text=" Statistics for a single system (use ecs_system_stats_get) "
| |-FieldDecl 0x5604680ad1f0 <line:10877:5, col:13> col:13 first_ 'int64_t':'long'
| |-FieldDecl 0x5604680ad250 <line:10878:5, col:18> col:18 time_spent 'ecs_metric_t':'union ecs_metric_t'
| | `-FullComment 0x5604681825e0 <col:40, col:71>
| | `-ParagraphComment 0x5604681825b0 <col:40, col:71>
| | `-TextComment 0x560468182580 <col:40, col:71> Text=" Time spent processing a system "
| |-FieldDecl 0x5604680ad2d8 <line:10879:5, col:18> col:18 invoke_count 'ecs_metric_t':'union ecs_metric_t'
| | `-FullComment 0x5604681826b0 <col:40, col:74>
| | `-ParagraphComment 0x560468182680 <col:40, col:74>
| | `-TextComment 0x560468182650 <col:40, col:74> Text=" Number of times system is invoked "
| |-FieldDecl 0x5604680ad368 <line:10880:5, col:18> col:18 active 'ecs_metric_t':'union ecs_metric_t'
| | `-FullComment 0x560468182780 <col:40, col:95>
| | `-ParagraphComment 0x560468182750 <col:40, col:95>
| | `-TextComment 0x560468182720 <col:40, col:95> Text=" Whether system is active (is matched with >0 entities) "
| |-FieldDecl 0x5604680ad3f8 <line:10881:5, col:18> col:18 enabled 'ecs_metric_t':'union ecs_metric_t'
| | `-FullComment 0x560468182850 <col:40, col:66>
| | `-ParagraphComment 0x560468182820 <col:40, col:66>
| | `-TextComment 0x5604681827f0 <col:40, col:66> Text=" Whether system is enabled "
| |-FieldDecl 0x5604680ad488 <line:10882:5, col:13> col:13 last_ 'int64_t':'long'
| |-FieldDecl 0x5604680ad4e8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:10884:10> col:10 task 'bool'
| | `-FullComment 0x560468182920 <col:40, col:57>
| | `-ParagraphComment 0x5604681828f0 <col:40, col:57>
| | `-TextComment 0x5604681828c0 <col:40, col:57> Text=" Is system a task "
| `-FieldDecl 0x5604680ad5a0 <line:10886:5, col:23> col:23 query 'ecs_query_stats_t':'struct ecs_query_stats_t'
|-TypedefDecl 0x5604680ad648 <line:10876:1, line:10887:3> col:3 referenced ecs_system_stats_t 'struct ecs_system_stats_t':'struct ecs_system_stats_t'
| |-ElaboratedType 0x5604680ad5f0 'struct ecs_system_stats_t' sugar
| | `-RecordType 0x5604680ad1c0 'struct ecs_system_stats_t'
| | `-Record 0x5604680ad140 'ecs_system_stats_t'
| `-FullComment 0x5604681829f0 <line:10875:4, col:62>
| `-ParagraphComment 0x5604681829c0 <col:4, col:62>
| `-TextComment 0x560468182990 <col:4, col:62> Text=" Statistics for a single system (use ecs_system_stats_get) "
|-RecordDecl 0x5604680ad6e0 <line:10890:9, line:10905:1> line:10890:16 struct ecs_pipeline_stats_t definition
| |-FullComment 0x560468182ac0 <line:10889:4, col:46>
| | `-ParagraphComment 0x560468182a90 <col:4, col:46>
| | `-TextComment 0x560468182a60 <col:4, col:46> Text=" Statistics for all systems in a pipeline. "
| |-FieldDecl 0x5604680ad7b8 <line:10893:5, col:19> col:19 systems 'ecs_vector_t *'
| | `-FullComment 0x560468182bb0 <line:10891:8, line:10892:77>
| | `-ParagraphComment 0x560468182b80 <line:10891:8, line:10892:77>
| | |-TextComment 0x560468182b30 <line:10891:8, col:78> Text=" Vector with system ids of all systems in the pipeline. The systems are"
| | `-TextComment 0x560468182b50 <line:10892:7, col:77> Text=" stored in the order they are executed. Merges are represented by a 0. "
| |-FieldDecl 0x5604680ad848 <line:10897:5, col:15> col:15 system_stats 'ecs_map_t':'struct ecs_map_t'
| | `-FullComment 0x560468182ca0 <line:10895:8, line:10896:59>
| | `-ParagraphComment 0x560468182c70 <line:10895:8, line:10896:59>
| | |-TextComment 0x560468182c20 <line:10895:8, col:77> Text=" Map with system statistics. For each system in the systems vector, an"
| | `-TextComment 0x560468182c40 <line:10896:7, col:59> Text=" entry in the map exists of type ecs_system_stats_t. "
| |-FieldDecl 0x5604680ad8d8 <line:10900:5, col:13> col:13 t 'int32_t':'int'
| | `-FullComment 0x560468182d70 <line:10899:8, col:39>
| | `-ParagraphComment 0x560468182d40 <col:8, col:39>
| | `-TextComment 0x560468182d10 <col:8, col:39> Text=" Current position in ringbuffer "
| |-FieldDecl 0x5604680ad938 <line:10902:5, col:13> col:13 system_count 'int32_t':'int'
| | `-FullComment 0x560468182e40 <col:31, col:61>
| | `-ParagraphComment 0x560468182e10 <col:31, col:61>
| | `-TextComment 0x560468182de0 <col:31, col:61> Text=" Number of systems in pipeline "
| |-FieldDecl 0x5604680ad9c8 <line:10903:5, col:13> col:13 active_system_count 'int32_t':'int'
| | `-FullComment 0x560468182f10 <col:38, col:75>
| | `-ParagraphComment 0x560468182ee0 <col:38, col:75>
| | `-TextComment 0x560468182eb0 <col:38, col:75> Text=" Number of active systems in pipeline "
| `-FieldDecl 0x5604680ada58 <line:10904:5, col:13> col:13 rebuild_count 'int32_t':'int'
| `-FullComment 0x560468182fe0 <col:32, col:69>
| `-ParagraphComment 0x560468182fb0 <col:32, col:69>
| `-TextComment 0x560468182f80 <col:32, col:69> Text=" Number of times pipeline has rebuilt "
|-TypedefDecl 0x5604680adb38 <line:10890:1, line:10905:3> col:3 referenced ecs_pipeline_stats_t 'struct ecs_pipeline_stats_t':'struct ecs_pipeline_stats_t'
| |-ElaboratedType 0x5604680adae0 'struct ecs_pipeline_stats_t' sugar
| | `-RecordType 0x5604680ad760 'struct ecs_pipeline_stats_t'
| | `-Record 0x5604680ad6e0 'ecs_pipeline_stats_t'
| `-FullComment 0x5604681830b0 <line:10889:4, col:46>
| `-ParagraphComment 0x560468183080 <col:4, col:46>
| `-TextComment 0x560468183050 <col:4, col:46> Text=" Statistics for all systems in a pipeline. "
|-FunctionDecl 0x5604680adde8 <line:10913:1, line:10915:29> line:10913:6 ecs_world_stats_get 'void (const ecs_world_t *, ecs_world_stats_t *)'
| |-ParmVarDecl 0x5604680adbe0 <line:10914:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680adcd8 <line:10915:5, col:24> col:24 stats 'ecs_world_stats_t *'
| `-FullComment 0x560468183360 <line:10907:4, line:10910:45>
| |-ParagraphComment 0x560468183150 <line:10907:4, col:25>
| | `-TextComment 0x560468183120 <col:4, col:25> Text=" Get world statistics."
| |-ParagraphComment 0x5604681831a0 <line:10909:3>
| | `-TextComment 0x560468183170 <col:3> Text=" "
| |-ParamCommandComment 0x5604681831c0 <col:4, line:10910:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468183270 <line:10909:16, line:10910:3>
| | |-TextComment 0x560468183220 <line:10909:16, col:26> Text=" The world."
| | `-TextComment 0x560468183240 <line:10910:3> Text=" "
| `-ParamCommandComment 0x560468183290 <col:4, col:45> [in] implicitly Param="stats" ParamIndex=1
| `-ParagraphComment 0x560468183320 <col:16, col:45>
| `-TextComment 0x5604681832f0 <col:16, col:45> Text=" Out parameter for statistics."
|-FunctionDecl 0x5604680ae0b8 <line:10919:1, line:10921:33> line:10919:6 ecs_world_stats_reduce 'void (ecs_world_stats_t *, const ecs_world_stats_t *)'
| |-ParmVarDecl 0x5604680aded8 <line:10920:5, col:24> col:24 dst 'ecs_world_stats_t *'
| |-ParmVarDecl 0x5604680adfa8 <line:10921:5, col:30> col:30 src 'const ecs_world_stats_t *'
| `-FullComment 0x560468183430 <line:10917:4, col:74>
| `-ParagraphComment 0x560468183400 <col:4, col:74>
| `-TextComment 0x5604681833d0 <col:4, col:74> Text=" Reduce source measurement window into single destination measurement. "
|-FunctionDecl 0x5604680ae918 <line:10925:1, line:10928:18> line:10925:6 ecs_world_stats_reduce_last 'void (ecs_world_stats_t *, const ecs_world_stats_t *, int32_t)'
| |-ParmVarDecl 0x5604680ae1a8 <line:10926:5, col:24> col:24 stats 'ecs_world_stats_t *'
| |-ParmVarDecl 0x5604680ae220 <line:10927:5, col:30> col:30 old 'const ecs_world_stats_t *'
| |-ParmVarDecl 0x5604680ae7f0 <line:10928:5, col:13> col:13 count 'int32_t':'int'
| `-FullComment 0x560468183500 <line:10923:4, col:74>
| `-ParagraphComment 0x5604681834d0 <col:4, col:74>
| `-TextComment 0x5604681834a0 <col:4, col:74> Text=" Reduce last measurement into previous measurement, restore old value. "
|-FunctionDecl 0x5604680aeaf8 <line:10932:1, line:10933:29> line:10932:6 ecs_world_stats_repeat_last 'void (ecs_world_stats_t *)'
| |-ParmVarDecl 0x5604680aea08 <line:10933:5, col:24> col:24 stats 'ecs_world_stats_t *'
| `-FullComment 0x5604681835d0 <line:10930:4, col:29>
| `-ParagraphComment 0x5604681835a0 <col:4, col:29>
| `-TextComment 0x560468183570 <col:4, col:29> Text=" Repeat last measurement. "
|-FunctionDecl 0x5604680aece8 <line:10937:1, line:10939:33> line:10937:6 ecs_world_stats_copy_last 'void (ecs_world_stats_t *, const ecs_world_stats_t *)'
| |-ParmVarDecl 0x5604680aebd8 <line:10938:5, col:24> col:24 dst 'ecs_world_stats_t *'
| |-ParmVarDecl 0x5604680aec50 <line:10939:5, col:30> col:30 src 'const ecs_world_stats_t *'
| `-FullComment 0x5604681836a0 <line:10935:4, col:54>
| `-ParagraphComment 0x560468183670 <col:4, col:54>
| `-TextComment 0x560468183640 <col:4, col:54> Text=" Copy last measurement from source to destination. "
|-FunctionDecl 0x5604680aef38 <line:10942:1, line:10944:35> line:10942:6 ecs_world_stats_log 'void (const ecs_world_t *, const ecs_world_stats_t *)'
| |-ParmVarDecl 0x5604680aeda8 <line:10943:5, col:24> col:24 world 'const ecs_world_t *'
| `-ParmVarDecl 0x5604680aee20 <line:10944:5, col:30> col:30 stats 'const ecs_world_stats_t *'
|-FunctionDecl 0x5604680af298 <line:10954:1, line:10957:29> line:10954:6 ecs_query_stats_get 'void (const ecs_world_t *, const ecs_query_t *, ecs_query_stats_t *)'
| |-ParmVarDecl 0x5604680af028 <line:10955:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680af0a0 <line:10956:5, col:24> col:24 query 'const ecs_query_t *'
| |-ParmVarDecl 0x5604680af178 <line:10957:5, col:24> col:24 stats 'ecs_query_stats_t *'
| `-FullComment 0x560468183a50 <line:10946:4, line:10951:45>
| |-ParagraphComment 0x560468183760 <line:10946:4, line:10947:44>
| | |-TextComment 0x560468183710 <line:10946:4, col:25> Text=" Get query statistics."
| | `-TextComment 0x560468183730 <line:10947:3, col:44> Text=" Obtain statistics for the provided query."
| |-ParagraphComment 0x5604681837b0 <line:10949:3>
| | `-TextComment 0x560468183780 <col:3> Text=" "
| |-ParamCommandComment 0x5604681837d0 <col:4, line:10950:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468183880 <line:10949:16, line:10950:3>
| | |-TextComment 0x560468183830 <line:10949:16, col:26> Text=" The world."
| | `-TextComment 0x560468183850 <line:10950:3> Text=" "
| |-ParamCommandComment 0x5604681838a0 <col:4, line:10951:3> [in] implicitly Param="query" ParamIndex=1
| | `-ParagraphComment 0x560468183950 <line:10950:16, line:10951:3>
| | |-TextComment 0x560468183900 <line:10950:16, col:26> Text=" The query."
| | `-TextComment 0x560468183920 <line:10951:3> Text=" "
| `-ParamCommandComment 0x560468183970 <col:4, col:45> [in] implicitly Param="stats" ParamIndex=2
| `-ParagraphComment 0x560468183a00 <col:16, col:45>
| `-TextComment 0x5604681839d0 <col:16, col:45> Text=" Out parameter for statistics."
|-FunctionDecl 0x5604680af568 <line:10961:1, line:10963:33> line:10961:6 ecs_query_stats_reduce 'void (ecs_query_stats_t *, const ecs_query_stats_t *)'
| |-ParmVarDecl 0x5604680af388 <line:10962:5, col:24> col:24 dst 'ecs_query_stats_t *'
| |-ParmVarDecl 0x5604680af458 <line:10963:5, col:30> col:30 src 'const ecs_query_stats_t *'
| `-FullComment 0x560468183b20 <line:10959:4, col:74>
| `-ParagraphComment 0x560468183af0 <col:4, col:74>
| `-TextComment 0x560468183ac0 <col:4, col:74> Text=" Reduce source measurement window into single destination measurement. "
|-FunctionDecl 0x5604680af868 <line:10967:1, line:10970:18> line:10967:6 ecs_query_stats_reduce_last 'void (ecs_query_stats_t *, const ecs_query_stats_t *, int32_t)'
| |-ParmVarDecl 0x5604680af658 <line:10968:5, col:24> col:24 stats 'ecs_query_stats_t *'
| |-ParmVarDecl 0x5604680af6d0 <line:10969:5, col:30> col:30 old 'const ecs_query_stats_t *'
| |-ParmVarDecl 0x5604680af748 <line:10970:5, col:13> col:13 count 'int32_t':'int'
| `-FullComment 0x560468183bf0 <line:10965:4, col:74>
| `-ParagraphComment 0x560468183bc0 <col:4, col:74>
| `-TextComment 0x560468183b90 <col:4, col:74> Text=" Reduce last measurement into previous measurement, restore old value. "
|-FunctionDecl 0x5604680afa48 <line:10974:1, line:10975:29> line:10974:6 ecs_query_stats_repeat_last 'void (ecs_query_stats_t *)'
| |-ParmVarDecl 0x5604680af958 <line:10975:5, col:24> col:24 stats 'ecs_query_stats_t *'
| `-FullComment 0x560468183cc0 <line:10972:4, col:29>
| `-ParagraphComment 0x560468183c90 <col:4, col:29>
| `-TextComment 0x560468183c60 <col:4, col:29> Text=" Repeat last measurement. "
|-FunctionDecl 0x5604680afc38 <line:10979:1, line:10981:33> line:10979:6 ecs_query_stats_copy_last 'void (ecs_query_stats_t *, const ecs_query_stats_t *)'
| |-ParmVarDecl 0x5604680afb28 <line:10980:5, col:24> col:24 dst 'ecs_query_stats_t *'
| |-ParmVarDecl 0x5604680afba0 <line:10981:5, col:30> col:30 src 'const ecs_query_stats_t *'
| `-FullComment 0x560468183d90 <line:10977:4, col:54>
| `-ParagraphComment 0x560468183d60 <col:4, col:54>
| `-TextComment 0x560468183d30 <col:4, col:54> Text=" Copy last measurement from source to destination. "
|-FunctionDecl 0x5604680affb8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:10996:30> line:10993:6 ecs_system_stats_get 'bool (const ecs_world_t *, ecs_entity_t, ecs_system_stats_t *)'
| |-ParmVarDecl 0x5604680afd28 <line:10994:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680afda0 <line:10995:5, col:18> col:18 system 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680afe98 <line:10996:5, col:25> col:25 stats 'ecs_system_stats_t *'
| `-FullComment 0x5604681841e0 <line:10984:4, line:10990:50>
| |-ParagraphComment 0x560468183e50 <line:10984:4, line:10985:45>
| | |-TextComment 0x560468183e00 <line:10984:4, col:26> Text=" Get system statistics."
| | `-TextComment 0x560468183e20 <line:10985:3, col:45> Text=" Obtain statistics for the provided system."
| |-ParagraphComment 0x560468183ea0 <line:10987:3>
| | `-TextComment 0x560468183e70 <col:3> Text=" "
| |-ParamCommandComment 0x560468183ec0 <col:4, line:10988:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468183f70 <line:10987:16, line:10988:3>
| | |-TextComment 0x560468183f20 <line:10987:16, col:26> Text=" The world."
| | `-TextComment 0x560468183f40 <line:10988:3> Text=" "
| |-ParamCommandComment 0x560468183f90 <col:4, line:10989:3> [in] implicitly Param="system" ParamIndex=1
| | `-ParagraphComment 0x560468184040 <line:10988:17, line:10989:3>
| | |-TextComment 0x560468183ff0 <line:10988:17, col:28> Text=" The system."
| | `-TextComment 0x560468184010 <line:10989:3> Text=" "
| |-ParamCommandComment 0x560468184060 <col:4, line:10990:3> [in] implicitly Param="stats" ParamIndex=2
| | `-ParagraphComment 0x560468184110 <line:10989:16, line:10990:3>
| | |-TextComment 0x5604681840c0 <line:10989:16, col:45> Text=" Out parameter for statistics."
| | `-TextComment 0x5604681840e0 <line:10990:3> Text=" "
| `-BlockCommandComment 0x560468184130 <col:4, col:50> Name="return"
| `-ParagraphComment 0x560468184190 <col:11, col:50>
| `-TextComment 0x560468184160 <col:11, col:50> Text=" true if success, false if not a system."
|-FunctionDecl 0x5604680b0288 <line:11000:1, line:11002:34> line:11000:6 ecs_system_stats_reduce 'void (ecs_system_stats_t *, const ecs_system_stats_t *)'
| |-ParmVarDecl 0x5604680b00a8 <line:11001:5, col:25> col:25 dst 'ecs_system_stats_t *'
| |-ParmVarDecl 0x5604680b0178 <line:11002:5, col:31> col:31 src 'const ecs_system_stats_t *'
| `-FullComment 0x5604681842b0 <line:10998:4, col:73>
| `-ParagraphComment 0x560468184280 <col:4, col:73>
| `-TextComment 0x560468184250 <col:4, col:73> Text=" Reduce source measurement window into single destination measurement "
|-FunctionDecl 0x5604680b0588 <line:11006:1, line:11009:18> line:11006:6 ecs_system_stats_reduce_last 'void (ecs_system_stats_t *, const ecs_system_stats_t *, int32_t)'
| |-ParmVarDecl 0x5604680b0378 <line:11007:5, col:25> col:25 stats 'ecs_system_stats_t *'
| |-ParmVarDecl 0x5604680b03f0 <line:11008:5, col:31> col:31 old 'const ecs_system_stats_t *'
| |-ParmVarDecl 0x5604680b0468 <line:11009:5, col:13> col:13 count 'int32_t':'int'
| `-FullComment 0x560468184380 <line:11004:4, col:74>
| `-ParagraphComment 0x560468184350 <col:4, col:74>
| `-TextComment 0x560468184320 <col:4, col:74> Text=" Reduce last measurement into previous measurement, restore old value. "
|-FunctionDecl 0x5604680b0ac0 <line:11013:1, line:11014:30> line:11013:6 ecs_system_stats_repeat_last 'void (ecs_system_stats_t *)'
| |-ParmVarDecl 0x5604680b0678 <line:11014:5, col:25> col:25 stats 'ecs_system_stats_t *'
| `-FullComment 0x560468184460 <line:11011:4, col:29>
| `-ParagraphComment 0x560468184420 <col:4, col:29>
| `-TextComment 0x5604681843f0 <col:4, col:29> Text=" Repeat last measurement. "
|-FunctionDecl 0x5604680b0cb8 <line:11018:1, line:11020:34> line:11018:6 ecs_system_stats_copy_last 'void (ecs_system_stats_t *, const ecs_system_stats_t *)'
| |-ParmVarDecl 0x5604680b0ba8 <line:11019:5, col:25> col:25 dst 'ecs_system_stats_t *'
| |-ParmVarDecl 0x5604680b0c20 <line:11020:5, col:31> col:31 src 'const ecs_system_stats_t *'
| `-FullComment 0x560468184530 <line:11016:4, col:54>
| `-ParagraphComment 0x560468184500 <col:4, col:54>
| `-TextComment 0x5604681844d0 <col:4, col:54> Text=" Copy last measurement from source to destination. "
|-FunctionDecl 0x5604680b1038 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11036:32> line:11033:6 ecs_pipeline_stats_get 'bool (ecs_world_t *, ecs_entity_t, ecs_pipeline_stats_t *)'
| |-ParmVarDecl 0x5604680b0da8 <line:11034:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680b0e20 <line:11035:5, col:18> col:18 pipeline 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680b0f18 <line:11036:5, col:27> col:27 stats 'ecs_pipeline_stats_t *'
| `-FullComment 0x560468184980 <line:11024:4, line:11030:52>
| |-ParagraphComment 0x5604681845f0 <line:11024:4, line:11025:47>
| | |-TextComment 0x5604681845a0 <line:11024:4, col:28> Text=" Get pipeline statistics."
| | `-TextComment 0x5604681845c0 <line:11025:3, col:47> Text=" Obtain statistics for the provided pipeline."
| |-ParagraphComment 0x560468184640 <line:11027:3>
| | `-TextComment 0x560468184610 <col:3> Text=" "
| |-ParamCommandComment 0x560468184660 <col:4, line:11028:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468184710 <line:11027:16, line:11028:3>
| | |-TextComment 0x5604681846c0 <line:11027:16, col:26> Text=" The world."
| | `-TextComment 0x5604681846e0 <line:11028:3> Text=" "
| |-ParamCommandComment 0x560468184730 <col:4, line:11029:3> [in] implicitly Param="pipeline" ParamIndex=1
| | `-ParagraphComment 0x5604681847e0 <line:11028:19, line:11029:3>
| | |-TextComment 0x560468184790 <line:11028:19, col:32> Text=" The pipeline."
| | `-TextComment 0x5604681847b0 <line:11029:3> Text=" "
| |-ParamCommandComment 0x560468184800 <col:4, line:11030:3> [in] implicitly Param="stats" ParamIndex=2
| | `-ParagraphComment 0x5604681848b0 <line:11029:16, line:11030:3>
| | |-TextComment 0x560468184860 <line:11029:16, col:45> Text=" Out parameter for statistics."
| | `-TextComment 0x560468184880 <line:11030:3> Text=" "
| `-BlockCommandComment 0x5604681848d0 <col:4, col:52> Name="return"
| `-ParagraphComment 0x560468184930 <col:11, col:52>
| `-TextComment 0x560468184900 <col:11, col:52> Text=" true if success, false if not a pipeline."
|-FunctionDecl 0x5604680b1218 <line:11043:1, line:11044:32> line:11043:6 ecs_pipeline_stats_fini 'void (ecs_pipeline_stats_t *)'
| |-ParmVarDecl 0x5604680b1128 <line:11044:5, col:27> col:27 stats 'ecs_pipeline_stats_t *'
| `-FullComment 0x560468184b60 <line:11038:4, line:11040:34>
| |-ParagraphComment 0x560468184a20 <line:11038:4, col:24>
| | `-TextComment 0x5604681849f0 <col:4, col:24> Text=" Free pipeline stats."
| |-ParagraphComment 0x560468184a70 <line:11040:3>
| | `-TextComment 0x560468184a40 <col:3> Text=" "
| `-ParamCommandComment 0x560468184a90 <col:4, col:34> [in] implicitly Param="stats" ParamIndex=0
| `-ParagraphComment 0x560468184b20 <col:16, col:34>
| `-TextComment 0x560468184af0 <col:16, col:34> Text=" The stats to free."
|-FunctionDecl 0x5604680b14d8 <line:11048:1, line:11050:36> line:11048:6 ecs_pipeline_stats_reduce 'void (ecs_pipeline_stats_t *, const ecs_pipeline_stats_t *)'
| |-ParmVarDecl 0x5604680b12f8 <line:11049:5, col:27> col:27 dst 'ecs_pipeline_stats_t *'
| |-ParmVarDecl 0x5604680b13c8 <line:11050:5, col:33> col:33 src 'const ecs_pipeline_stats_t *'
| `-FullComment 0x560468184c30 <line:11046:4, col:73>
| `-ParagraphComment 0x560468184c00 <col:4, col:73>
| `-TextComment 0x560468184bd0 <col:4, col:73> Text=" Reduce source measurement window into single destination measurement "
|-FunctionDecl 0x5604680b17d8 <line:11054:1, line:11057:18> line:11054:6 ecs_pipeline_stats_reduce_last 'void (ecs_pipeline_stats_t *, const ecs_pipeline_stats_t *, int32_t)'
| |-ParmVarDecl 0x5604680b15c8 <line:11055:5, col:27> col:27 stats 'ecs_pipeline_stats_t *'
| |-ParmVarDecl 0x5604680b1640 <line:11056:5, col:33> col:33 old 'const ecs_pipeline_stats_t *'
| |-ParmVarDecl 0x5604680b16b8 <line:11057:5, col:13> col:13 count 'int32_t':'int'
| `-FullComment 0x560468184d00 <line:11052:4, col:74>
| `-ParagraphComment 0x560468184cd0 <col:4, col:74>
| `-TextComment 0x560468184ca0 <col:4, col:74> Text=" Reduce last measurement into previous measurement, restore old value. "
|-FunctionDecl 0x5604680b1958 <line:11061:1, line:11062:32> line:11061:6 ecs_pipeline_stats_repeat_last 'void (ecs_pipeline_stats_t *)'
| |-ParmVarDecl 0x5604680b18c8 <line:11062:5, col:27> col:27 stats 'ecs_pipeline_stats_t *'
| `-FullComment 0x560468184dd0 <line:11059:4, col:29>
| `-ParagraphComment 0x560468184da0 <col:4, col:29>
| `-TextComment 0x560468184d70 <col:4, col:29> Text=" Repeat last measurement. "
|-FunctionDecl 0x5604680b1b48 <line:11072:1, line:11074:36> line:11072:6 ecs_pipeline_stats_copy_last 'void (ecs_pipeline_stats_t *, const ecs_pipeline_stats_t *)'
| |-ParmVarDecl 0x5604680b1a38 <line:11073:5, col:27> col:27 dst 'ecs_pipeline_stats_t *'
| |-ParmVarDecl 0x5604680b1ab0 <line:11074:5, col:33> col:33 src 'const ecs_pipeline_stats_t *'
| `-FullComment 0x5604681850d0 <line:11064:4, line:11069:34>
| |-ParagraphComment 0x560468184ec0 <line:11064:4, line:11066:21>
| | |-TextComment 0x560468184e40 <line:11064:4, col:41> Text=" Copy last measurement to destination."
| | |-TextComment 0x560468184e60 <line:11065:3, col:79> Text=" This operation copies the last measurement into the destination. It does not"
| | `-TextComment 0x560468184e80 <line:11066:3, col:21> Text=" modify the cursor."
| |-ParagraphComment 0x560468184f10 <line:11068:3>
| | `-TextComment 0x560468184ee0 <col:3> Text=" "
| |-ParamCommandComment 0x560468184f30 <col:4, line:11069:3> [in] implicitly Param="dst" ParamIndex=0
| | `-ParagraphComment 0x560468184fe0 <line:11068:14, line:11069:3>
| | |-TextComment 0x560468184f90 <line:11068:14, col:26> Text=" The metrics."
| | `-TextComment 0x560468184fb0 <line:11069:3> Text=" "
| `-ParamCommandComment 0x560468185000 <col:4, col:34> [in] implicitly Param="src" ParamIndex=1
| `-ParagraphComment 0x560468185090 <col:14, col:34>
| `-TextComment 0x560468185060 <col:14, col:34> Text=" The metrics to copy."
|-FunctionDecl 0x5604680b1f98 <line:11080:1, line:11084:18> line:11080:6 ecs_metric_reduce 'void (ecs_metric_t *, const ecs_metric_t *, int32_t, int32_t)'
| |-ParmVarDecl 0x5604680b1c98 <line:11081:5, col:19> col:19 dst 'ecs_metric_t *'
| |-ParmVarDecl 0x5604680b1d68 <line:11082:5, col:25> col:25 src 'const ecs_metric_t *'
| |-ParmVarDecl 0x5604680b1de0 <line:11083:5, col:13> col:13 t_dst 'int32_t':'int'
| |-ParmVarDecl 0x5604680b1e58 <line:11084:5, col:13> col:13 t_src 'int32_t':'int'
| `-FullComment 0x5604681851a0 <line:11078:4, col:69>
| `-ParagraphComment 0x560468185170 <col:4, col:69>
| `-TextComment 0x560468185140 <col:4, col:69> Text=" Reduce all measurements from a window into a single measurement. "
|-FunctionDecl 0x5604680b22a8 <line:11088:1, line:11091:18> line:11088:6 ecs_metric_reduce_last 'void (ecs_metric_t *, int32_t, int32_t)'
| |-ParmVarDecl 0x5604680b2098 <line:11089:5, col:19> col:19 m 'ecs_metric_t *'
| |-ParmVarDecl 0x5604680b2110 <line:11090:5, col:13> col:13 t 'int32_t':'int'
| |-ParmVarDecl 0x5604680b2188 <line:11091:5, col:13> col:13 count 'int32_t':'int'
| `-FullComment 0x560468185270 <line:11086:4, col:54>
| `-ParagraphComment 0x560468185240 <col:4, col:54>
| `-TextComment 0x560468185210 <col:4, col:54> Text=" Reduce last measurement into previous measurement "
|-FunctionDecl 0x5604680b2528 <line:11095:1, line:11098:16> line:11095:6 ecs_metric_copy 'void (ecs_metric_t *, int32_t, int32_t)'
| |-ParmVarDecl 0x5604680b2398 <line:11096:5, col:19> col:19 m 'ecs_metric_t *'
| |-ParmVarDecl 0x5604680b2410 <line:11097:5, col:13> col:13 dst 'int32_t':'int'
| |-ParmVarDecl 0x5604680b2488 <line:11098:5, col:13> col:13 src 'int32_t':'int'
| `-FullComment 0x560468185340 <line:11093:4, col:21>
| `-ParagraphComment 0x560468185310 <col:4, col:21>
| `-TextComment 0x5604681852e0 <col:4, col:21> Text=" Copy measurement "
|-VarDecl 0x5604680b2678 <line:11148:11, <scratch space>:53:1> col:1 FLECS__EFlecsMonitor 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680b26f0 <flecs.h:11149:11, <scratch space>:54:1> col:1 FLECS__EEcsWorldStats 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680b2768 <flecs.h:11150:11, <scratch space>:55:1> col:1 FLECS__EEcsPipelineStats 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680b27e0 <flecs.h:11152:11, col:31> col:31 EcsPeriod1s 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680b2858 <line:11153:11, col:31> col:31 EcsPeriod1m 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680b28d0 <line:11154:11, col:31> col:31 EcsPeriod1h 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680b2948 <line:11155:11, col:31> col:31 EcsPeriod1d 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680b29c0 <line:11156:11, col:31> col:31 EcsPeriod1w 'ecs_entity_t':'unsigned long' extern
|-RecordDecl 0x5604680b2a28 <line:11158:9, line:11161:1> line:11158:9 struct definition
| |-FieldDecl 0x5604680b3e58 <line:37:21, line:11159:17> col:17 elapsed 'float'
| `-FieldDecl 0x5604680b3eb8 <line:11160:5, col:13> col:13 reduce_count 'int32_t':'int'
|-TypedefDecl 0x5604680b3f68 <line:11158:1, line:11161:3> col:3 referenced EcsStatsHeader 'struct EcsStatsHeader':'EcsStatsHeader'
| `-ElaboratedType 0x5604680b3f10 'struct EcsStatsHeader' sugar
| `-RecordType 0x5604680b3e20 'EcsStatsHeader'
| `-Record 0x5604680b2a28 ''
|-RecordDecl 0x5604680b3fd8 <line:11163:9, line:11166:1> line:11163:9 struct definition
| |-FieldDecl 0x5604680b40b0 <line:11164:5, col:20> col:20 hdr 'EcsStatsHeader':'EcsStatsHeader'
| `-FieldDecl 0x5604680b4110 <line:11165:5, col:23> col:23 stats 'ecs_world_stats_t':'struct ecs_world_stats_t'
|-TypedefDecl 0x5604680b4218 <line:11163:1, line:11166:3> col:3 EcsWorldStats 'struct EcsWorldStats':'EcsWorldStats'
| `-ElaboratedType 0x5604680b41c0 'struct EcsWorldStats' sugar
| `-RecordType 0x5604680b4060 'EcsWorldStats'
| `-Record 0x5604680b3fd8 ''
|-RecordDecl 0x5604680b4288 <line:11168:9, line:11171:1> line:11168:9 struct definition
| |-FieldDecl 0x5604680b4340 <line:11169:5, col:20> col:20 hdr 'EcsStatsHeader':'EcsStatsHeader'
| `-FieldDecl 0x5604680b43a0 <line:11170:5, col:26> col:26 stats 'ecs_pipeline_stats_t':'struct ecs_pipeline_stats_t'
|-TypedefDecl 0x5604680b4448 <line:11168:1, line:11171:3> col:3 EcsPipelineStats 'struct EcsPipelineStats':'EcsPipelineStats'
| `-ElaboratedType 0x5604680b43f0 'struct EcsPipelineStats' sugar
| `-RecordType 0x5604680b4310 'EcsPipelineStats'
| `-Record 0x5604680b4288 ''
|-FunctionDecl 0x5604680b4558 <line:11175:1, line:11176:23> line:11175:6 FlecsMonitorImport 'void (ecs_world_t *)'
| `-ParmVarDecl 0x5604680b44c8 <line:11176:5, col:18> col:18 world 'ecs_world_t *'
|-FunctionDecl 0x5604680b4728 <line:11229:1, line:11230:23> line:11229:6 FlecsCoreDocImport 'void (ecs_world_t *)'
| |-ParmVarDecl 0x5604680b4698 <line:11230:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x560468185680 <line:11219:3, line:11223:5>
| |-ParagraphComment 0x5604681853e0 <line:11219:3>
| | `-TextComment 0x5604681853b0 <col:3> Text=" "
| |-VerbatimLineComment 0x560468185400 <col:4, col:38> Text=" c_addons_coredoc Coredoc"
| |-ParagraphComment 0x560468185470 <line:11220:3>
| | `-TextComment 0x560468185440 <col:3> Text=" "
| |-BlockCommandComment 0x560468185490 <col:4, col:73> Name="brief"
| | `-ParagraphComment 0x5604681854f0 <col:10, col:73>
| | `-TextComment 0x5604681854c0 <col:10, col:73> Text=" Module that adds documentation and reflection to core entities."
| |-ParagraphComment 0x560468185540 <line:11222:3>
| | `-TextComment 0x560468185510 <col:3> Text=" "
| |-VerbatimLineComment 0x560468185560 <col:4, col:21> Text=" c_addons"
| `-ParagraphComment 0x560468185620 <line:11223:3, col:5>
| |-TextComment 0x5604681855a0 <col:3> Text=" "
| |-TextComment 0x5604681855c0 <col:4> Text="@"
| `-TextComment 0x5604681855e0 <col:5> Text="{"
|-VarDecl 0x5604680b4838 <line:11278:11, <scratch space>:56:1> col:1 FLECS__EEcsDocDescription 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680b48b0 <flecs.h:11279:11, col:37> col:37 EcsDocBrief 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680b4928 <line:11280:11, col:37> col:37 EcsDocDetail 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680b49a0 <line:11281:11, col:37> col:37 EcsDocLink 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680b4a18 <line:11282:11, col:37> col:37 EcsDocColor 'const ecs_entity_t':'const unsigned long' extern
|-RecordDecl 0x5604680b4a80 <line:11284:9, line:11286:1> line:11284:16 struct EcsDocDescription definition
| `-FieldDecl 0x5604680b4b38 <line:11285:5, col:11> col:11 value 'char *'
|-TypedefDecl 0x5604680b4be8 <line:11284:1, line:11286:3> col:3 EcsDocDescription 'struct EcsDocDescription':'struct EcsDocDescription'
| `-ElaboratedType 0x5604680b4b90 'struct EcsDocDescription' sugar
| `-RecordType 0x5604680b4b00 'struct EcsDocDescription'
| `-Record 0x5604680b4a80 'EcsDocDescription'
|-FunctionDecl 0x5604680b4e28 <line:11297:1, line:11300:21> line:11297:6 ecs_doc_set_name 'void (ecs_world_t *, ecs_entity_t, const char *)'
| |-ParmVarDecl 0x5604680b4c90 <line:11298:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680b4d08 <line:11299:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680b4d88 <line:11300:5, col:17> col:17 name 'const char *'
| `-FullComment 0x560468185a60 <line:11288:4, line:11294:31>
| |-ParagraphComment 0x560468185770 <line:11288:4, line:11290:70>
| | |-TextComment 0x5604681856f0 <line:11288:4, col:38> Text=" Add human-readable name to entity."
| | |-TextComment 0x560468185710 <line:11289:3, col:78> Text=" Contrary to entity names, human readable names do not have to be unique and"
| | `-TextComment 0x560468185730 <line:11290:3, col:70> Text=" can contain special characters used in the query language like '*'."
| |-ParagraphComment 0x5604681857c0 <line:11292:3>
| | `-TextComment 0x560468185790 <col:3> Text=" "
| |-ParamCommandComment 0x5604681857e0 <col:4, line:11293:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468185890 <line:11292:16, line:11293:3>
| | |-TextComment 0x560468185840 <line:11292:16, col:26> Text=" The world."
| | `-TextComment 0x560468185860 <line:11293:3> Text=" "
| |-ParamCommandComment 0x5604681858b0 <col:4, line:11294:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468185960 <line:11293:17, line:11294:3>
| | |-TextComment 0x560468185910 <line:11293:17, col:53> Text=" The entity to which to add the name."
| | `-TextComment 0x560468185930 <line:11294:3> Text=" "
| `-ParamCommandComment 0x560468185980 <col:4, col:31> [in] implicitly Param="name" ParamIndex=2
| `-ParagraphComment 0x560468185a10 <col:15, col:31>
| `-TextComment 0x5604681859e0 <col:15, col:31> Text=" The name to add."
|-FunctionDecl 0x5604680b50b0 <line:11309:1, line:11312:28> line:11309:6 ecs_doc_set_brief 'void (ecs_world_t *, ecs_entity_t, const char *)'
| |-ParmVarDecl 0x5604680b4f18 <line:11310:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680b4f90 <line:11311:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680b5010 <line:11312:5, col:17> col:17 description 'const char *'
| `-FullComment 0x560468185df0 <line:11302:4, line:11306:45>
| |-ParagraphComment 0x560468185b00 <line:11302:4, col:36>
| | `-TextComment 0x560468185ad0 <col:4, col:36> Text=" Add brief description to entity."
| |-ParagraphComment 0x560468185b50 <line:11304:3>
| | `-TextComment 0x560468185b20 <col:3> Text=" "
| |-ParamCommandComment 0x560468185b70 <col:4, line:11305:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468185c20 <line:11304:16, line:11305:3>
| | |-TextComment 0x560468185bd0 <line:11304:16, col:26> Text=" The world."
| | `-TextComment 0x560468185bf0 <line:11305:3> Text=" "
| |-ParamCommandComment 0x560468185c40 <col:4, line:11306:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468185cf0 <line:11305:17, line:11306:3>
| | |-TextComment 0x560468185ca0 <line:11305:17, col:60> Text=" The entity to which to add the description."
| | `-TextComment 0x560468185cc0 <line:11306:3> Text=" "
| `-ParamCommandComment 0x560468185d10 <col:4, col:45> [in] implicitly Param="description" ParamIndex=2
| `-ParagraphComment 0x560468185da0 <col:22, col:45>
| `-TextComment 0x560468185d70 <col:22, col:45> Text=" The description to add."
|-FunctionDecl 0x5604680b5340 <line:11321:1, line:11324:28> line:11321:6 ecs_doc_set_detail 'void (ecs_world_t *, ecs_entity_t, const char *)'
| |-ParmVarDecl 0x5604680b51a8 <line:11322:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680b5220 <line:11323:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680b52a0 <line:11324:5, col:17> col:17 description 'const char *'
| `-FullComment 0x560468186180 <line:11314:4, line:11318:45>
| |-ParagraphComment 0x560468185e90 <line:11314:4, col:39>
| | `-TextComment 0x560468185e60 <col:4, col:39> Text=" Add detailed description to entity."
| |-ParagraphComment 0x560468185ee0 <line:11316:3>
| | `-TextComment 0x560468185eb0 <col:3> Text=" "
| |-ParamCommandComment 0x560468185f00 <col:4, line:11317:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468185fb0 <line:11316:16, line:11317:3>
| | |-TextComment 0x560468185f60 <line:11316:16, col:26> Text=" The world."
| | `-TextComment 0x560468185f80 <line:11317:3> Text=" "
| |-ParamCommandComment 0x560468185fd0 <col:4, line:11318:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468186080 <line:11317:17, line:11318:3>
| | |-TextComment 0x560468186030 <line:11317:17, col:60> Text=" The entity to which to add the description."
| | `-TextComment 0x560468186050 <line:11318:3> Text=" "
| `-ParamCommandComment 0x5604681860a0 <col:4, col:45> [in] implicitly Param="description" ParamIndex=2
| `-ParagraphComment 0x560468186130 <col:22, col:45>
| `-TextComment 0x560468186100 <col:22, col:45> Text=" The description to add."
|-FunctionDecl 0x5604680b55d0 <line:11333:1, line:11336:21> line:11333:6 ecs_doc_set_link 'void (ecs_world_t *, ecs_entity_t, const char *)'
| |-ParmVarDecl 0x5604680b5438 <line:11334:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680b54b0 <line:11335:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680b5530 <line:11336:5, col:17> col:17 link 'const char *'
| `-FullComment 0x560468186540 <line:11326:4, line:11330:31>
| |-ParagraphComment 0x560468186220 <line:11326:4, col:49>
| | `-TextComment 0x5604681861f0 <col:4, col:49> Text=" Add link to external documentation to entity."
| |-ParagraphComment 0x560468186270 <line:11328:3>
| | `-TextComment 0x560468186240 <col:3> Text=" "
| |-ParamCommandComment 0x560468186290 <col:4, line:11329:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468186340 <line:11328:16, line:11329:3>
| | |-TextComment 0x5604681862f0 <line:11328:16, col:26> Text=" The world."
| | `-TextComment 0x560468186310 <line:11329:3> Text=" "
| |-ParamCommandComment 0x560468186360 <col:4, line:11330:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468186410 <line:11329:17, line:11330:3>
| | |-TextComment 0x5604681863c0 <line:11329:17, col:53> Text=" The entity to which to add the link."
| | `-TextComment 0x5604681863e0 <line:11330:3> Text=" "
| `-ParamCommandComment 0x560468186460 <col:4, col:31> [in] implicitly Param="link" ParamIndex=2
| `-ParagraphComment 0x5604681864f0 <col:15, col:31>
| `-TextComment 0x5604681864c0 <col:15, col:31> Text=" The link to add."
|-FunctionDecl 0x5604680b5860 <line:11346:1, line:11349:22> line:11346:6 ecs_doc_set_color 'void (ecs_world_t *, ecs_entity_t, const char *)'
| |-ParmVarDecl 0x5604680b56c8 <line:11347:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680b5740 <line:11348:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680b57c0 <line:11349:5, col:17> col:17 color 'const char *'
| `-FullComment 0x5604681868f0 <line:11338:4, line:11343:33>
| |-ParagraphComment 0x560468186600 <line:11338:4, line:11339:61>
| | |-TextComment 0x5604681865b0 <line:11338:4, col:24> Text=" Add color to entity."
| | `-TextComment 0x5604681865d0 <line:11339:3, col:61> Text=" UIs can use color as hint to improve visualizing entities."
| |-ParagraphComment 0x560468186650 <line:11341:3>
| | `-TextComment 0x560468186620 <col:3> Text=" "
| |-ParamCommandComment 0x560468186670 <col:4, line:11342:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468186720 <line:11341:16, line:11342:3>
| | |-TextComment 0x5604681866d0 <line:11341:16, col:26> Text=" The world."
| | `-TextComment 0x5604681866f0 <line:11342:3> Text=" "
| |-ParamCommandComment 0x560468186740 <col:4, line:11343:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x5604681867f0 <line:11342:17, line:11343:3>
| | |-TextComment 0x5604681867a0 <line:11342:17, col:53> Text=" The entity to which to add the link."
| | `-TextComment 0x5604681867c0 <line:11343:3> Text=" "
| `-ParamCommandComment 0x560468186810 <col:4, col:33> [in] implicitly Param="color" ParamIndex=2
| `-ParagraphComment 0x5604681868a0 <col:16, col:33>
| `-TextComment 0x560468186870 <col:16, col:33> Text=" The color to add."
|-FunctionDecl 0x5604680b5a70 <line:11365:1, line:11367:24> line:11365:13 ecs_doc_get_name 'const char *(const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x5604680b5958 <line:11366:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680b59d0 <line:11367:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468186db0 <line:11351:4, line:11362:20>
| |-ParagraphComment 0x5604681869e0 <line:11351:4, line:11353:26>
| | |-TextComment 0x560468186960 <line:11351:4, col:40> Text=" Get human readable name from entity."
| | |-TextComment 0x560468186980 <line:11352:3, col:79> Text=" If entity does not have an explicit human readable name, this operation will"
| | `-TextComment 0x5604681869a0 <line:11353:3, col:26> Text=" return the entity name."
| |-ParagraphComment 0x560468186af0 <line:11355:3, line:11358:44>
| | |-TextComment 0x560468186a00 <line:11355:3, col:55> Text=" To test if an entity has a human readable name, use:"
| | |-TextComment 0x560468186a20 <line:11356:3, col:61> Text=" ecs_has_pair(world, e, ecs_id(EcsDescription), EcsName);"
| | |-TextComment 0x560468186a40 <line:11357:3, col:13> Text=" Or in C++:"
| | |-TextComment 0x560468186a60 <line:11358:3, col:10> Text=" e.has"
| | |-TextComment 0x560468186a80 <col:11, col:16> Text="<flecs"
| | `-TextComment 0x560468186aa0 <col:17, col:44> Text="::Description>(flecs::Name);"
| |-ParagraphComment 0x560468186b40 <line:11360:3>
| | `-TextComment 0x560468186b10 <col:3> Text=" "
| |-ParamCommandComment 0x560468186b60 <col:4, line:11361:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468186c10 <line:11360:16, line:11361:3>
| | |-TextComment 0x560468186bc0 <line:11360:16, col:26> Text=" The world."
| | `-TextComment 0x560468186be0 <line:11361:3> Text=" "
| |-ParamCommandComment 0x560468186c30 <col:4, line:11362:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468186ce0 <line:11361:17, line:11362:3>
| | |-TextComment 0x560468186c90 <line:11361:17, col:55> Text=" The entity from which to get the name."
| | `-TextComment 0x560468186cb0 <line:11362:3> Text=" "
| `-BlockCommandComment 0x560468186d00 <col:4, col:20> Name="return"
| `-ParagraphComment 0x560468186d60 <col:11, col:20>
| `-TextComment 0x560468186d30 <col:11, col:20> Text=" The name."
|-FunctionDecl 0x5604680b5c70 <line:11376:1, line:11378:24> line:11376:13 ecs_doc_get_brief 'const char *(const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x5604680b5b58 <line:11377:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680b5bd0 <line:11378:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468187110 <line:11369:4, line:11373:27>
| |-ParagraphComment 0x560468186e50 <line:11369:4, col:38>
| | `-TextComment 0x560468186e20 <col:4, col:38> Text=" Get brief description from entity."
| |-ParagraphComment 0x560468186ea0 <line:11371:3>
| | `-TextComment 0x560468186e70 <col:3> Text=" "
| |-ParamCommandComment 0x560468186ec0 <col:4, line:11372:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468186f70 <line:11371:16, line:11372:3>
| | |-TextComment 0x560468186f20 <line:11371:16, col:26> Text=" The world."
| | `-TextComment 0x560468186f40 <line:11372:3> Text=" "
| |-ParamCommandComment 0x560468186f90 <col:4, line:11373:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468187040 <line:11372:17, line:11373:3>
| | |-TextComment 0x560468186ff0 <line:11372:17, col:62> Text=" The entity from which to get the description."
| | `-TextComment 0x560468187010 <line:11373:3> Text=" "
| `-BlockCommandComment 0x560468187060 <col:4, col:27> Name="return"
| `-ParagraphComment 0x5604681870c0 <col:11, col:27>
| `-TextComment 0x560468187090 <col:11, col:27> Text=" The description."
|-FunctionDecl 0x5604680b6210 <line:11387:1, line:11389:24> line:11387:13 ecs_doc_get_detail 'const char *(const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x5604680b5d58 <line:11388:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680b6170 <line:11389:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468187470 <line:11380:4, line:11384:27>
| |-ParagraphComment 0x5604681871b0 <line:11380:4, col:41>
| | `-TextComment 0x560468187180 <col:4, col:41> Text=" Get detailed description from entity."
| |-ParagraphComment 0x560468187200 <line:11382:3>
| | `-TextComment 0x5604681871d0 <col:3> Text=" "
| |-ParamCommandComment 0x560468187220 <col:4, line:11383:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681872d0 <line:11382:16, line:11383:3>
| | |-TextComment 0x560468187280 <line:11382:16, col:26> Text=" The world."
| | `-TextComment 0x5604681872a0 <line:11383:3> Text=" "
| |-ParamCommandComment 0x5604681872f0 <col:4, line:11384:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x5604681873a0 <line:11383:17, line:11384:3>
| | |-TextComment 0x560468187350 <line:11383:17, col:62> Text=" The entity from which to get the description."
| | `-TextComment 0x560468187370 <line:11384:3> Text=" "
| `-BlockCommandComment 0x5604681873c0 <col:4, col:27> Name="return"
| `-ParagraphComment 0x560468187420 <col:11, col:27>
| `-TextComment 0x5604681873f0 <col:11, col:27> Text=" The description."
|-FunctionDecl 0x5604680b6410 <line:11398:1, line:11400:24> line:11398:13 ecs_doc_get_link 'const char *(const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x5604680b62f8 <line:11399:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680b6370 <line:11400:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x5604681877d0 <line:11391:4, line:11395:20>
| |-ParagraphComment 0x560468187510 <line:11391:4, col:51>
| | `-TextComment 0x5604681874e0 <col:4, col:51> Text=" Get link to external documentation from entity."
| |-ParagraphComment 0x560468187560 <line:11393:3>
| | `-TextComment 0x560468187530 <col:3> Text=" "
| |-ParamCommandComment 0x560468187580 <col:4, line:11394:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468187630 <line:11393:16, line:11394:3>
| | |-TextComment 0x5604681875e0 <line:11393:16, col:26> Text=" The world."
| | `-TextComment 0x560468187600 <line:11394:3> Text=" "
| |-ParamCommandComment 0x560468187650 <col:4, line:11395:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468187700 <line:11394:17, line:11395:3>
| | |-TextComment 0x5604681876b0 <line:11394:17, col:55> Text=" The entity from which to get the link."
| | `-TextComment 0x5604681876d0 <line:11395:3> Text=" "
| `-BlockCommandComment 0x560468187720 <col:4, col:20> Name="return"
| `-ParagraphComment 0x560468187780 <col:11, col:20>
| `-TextComment 0x560468187750 <col:11, col:20> Text=" The link."
|-FunctionDecl 0x5604680b6610 <line:11409:1, line:11411:24> line:11409:13 ecs_doc_get_color 'const char *(const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x5604680b64f8 <line:11410:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680b6570 <line:11411:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468187b30 <line:11402:4, line:11406:21>
| |-ParagraphComment 0x560468187870 <line:11402:4, col:26>
| | `-TextComment 0x560468187840 <col:4, col:26> Text=" Get color from entity."
| |-ParagraphComment 0x5604681878c0 <line:11404:3>
| | `-TextComment 0x560468187890 <col:3> Text=" "
| |-ParamCommandComment 0x5604681878e0 <col:4, line:11405:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468187990 <line:11404:16, line:11405:3>
| | |-TextComment 0x560468187940 <line:11404:16, col:26> Text=" The world."
| | `-TextComment 0x560468187960 <line:11405:3> Text=" "
| |-ParamCommandComment 0x5604681879b0 <col:4, line:11406:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x560468187a60 <line:11405:17, line:11406:3>
| | |-TextComment 0x560468187a10 <line:11405:17, col:55> Text=" The entity from which to get the link."
| | `-TextComment 0x560468187a30 <line:11406:3> Text=" "
| `-BlockCommandComment 0x560468187a80 <col:4, col:21> Name="return"
| `-ParagraphComment 0x560468187ae0 <col:11, col:21>
| `-TextComment 0x560468187ab0 <col:11, col:21> Text=" The color."
|-FunctionDecl 0x5604680b6760 <line:11415:1, line:11416:23> line:11415:6 FlecsDocImport 'void (ecs_world_t *)'
| `-ParmVarDecl 0x5604680b66d0 <line:11416:5, col:18> col:18 world 'ecs_world_t *'
|-RecordDecl 0x5604680b6898 <line:11465:9, line:11468:1> line:11465:16 struct ecs_parse_json_desc_t definition
| |-FullComment 0x560468187c00 <line:11464:4, col:30>
| | `-ParagraphComment 0x560468187bd0 <col:4, col:30>
| | `-TextComment 0x560468187ba0 <col:4, col:30> Text=" Used with ecs_parse_json. "
| |-FieldDecl 0x5604680b6958 <line:11466:5, col:17> col:17 name 'const char *'
| `-FieldDecl 0x5604680b69c0 <line:11467:5, col:17> col:17 expr 'const char *'
|-TypedefDecl 0x5604680b6a68 <line:11465:1, line:11468:3> col:3 referenced ecs_parse_json_desc_t 'struct ecs_parse_json_desc_t':'struct ecs_parse_json_desc_t'
| |-ElaboratedType 0x5604680b6a10 'struct ecs_parse_json_desc_t' sugar
| | `-RecordType 0x5604680b6920 'struct ecs_parse_json_desc_t'
| | `-Record 0x5604680b6898 'ecs_parse_json_desc_t'
| `-FullComment 0x560468187cd0 <line:11464:4, col:30>
| `-ParagraphComment 0x560468187ca0 <col:4, col:30>
| `-TextComment 0x560468187c70 <col:4, col:30> Text=" Used with ecs_parse_json. "
|-FunctionDecl 0x5604680b6ed0 <line:11482:1, line:11487:38> line:11482:13 ecs_parse_json 'const char *(const ecs_world_t *, const char *, ecs_entity_t, void *, const ecs_parse_json_desc_t *)'
| |-ParmVarDecl 0x5604680b6b10 <line:11483:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680b6b90 <line:11484:5, col:17> col:17 ptr 'const char *'
| |-ParmVarDecl 0x5604680b6c08 <line:11485:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680b6c88 <line:11486:5, col:11> col:11 data_out 'void *'
| |-ParmVarDecl 0x5604680b6d78 <line:11487:5, col:34> col:34 desc 'const ecs_parse_json_desc_t *'
| `-FullComment 0x560468188300 <line:11470:4, line:11479:79>
| |-ParagraphComment 0x560468187dc0 <line:11470:4, line:11472:78>
| | |-TextComment 0x560468187d40 <line:11470:4, col:33> Text=" Parse JSON string into value."
| | |-TextComment 0x560468187d60 <line:11471:3, col:73> Text=" This operation parses a JSON expression into the provided pointer. The"
| | `-TextComment 0x560468187d80 <line:11472:3, col:78> Text=" memory pointed to must be large enough to contain a value of the used type."
| |-ParagraphComment 0x560468187e10 <line:11474:3>
| | `-TextComment 0x560468187de0 <col:3> Text=" "
| |-ParamCommandComment 0x560468187e30 <col:4, line:11475:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468187ee0 <line:11474:16, line:11475:3>
| | |-TextComment 0x560468187e90 <line:11474:16, col:26> Text=" The world."
| | `-TextComment 0x560468187eb0 <line:11475:3> Text=" "
| |-ParamCommandComment 0x560468187f00 <col:4, line:11476:3> [in] implicitly Param="ptr" ParamIndex=1
| | `-ParagraphComment 0x560468187fb0 <line:11475:14, line:11476:3>
| | |-TextComment 0x560468187f60 <line:11475:14, col:53> Text=" The pointer to the expression to parse."
| | `-TextComment 0x560468187f80 <line:11476:3> Text=" "
| |-ParamCommandComment 0x560468187fd0 <col:4, line:11477:3> [in] implicitly Param="type" ParamIndex=2
| | `-ParagraphComment 0x560468188080 <line:11476:15, line:11477:3>
| | |-TextComment 0x560468188030 <line:11476:15, col:51> Text=" The type of the expression to parse."
| | `-TextComment 0x560468188050 <line:11477:3> Text=" "
| |-ParamCommandComment 0x5604681880a0 <col:4, line:11478:3> [in] implicitly Param="data_out" ParamIndex=3
| | `-ParagraphComment 0x560468188150 <line:11477:19, line:11478:3>
| | |-TextComment 0x560468188100 <line:11477:19, col:53> Text=" Pointer to the memory to write to."
| | `-TextComment 0x560468188120 <line:11478:3> Text=" "
| |-ParamCommandComment 0x560468188170 <col:4, line:11479:3> [in] implicitly Param="desc" ParamIndex=4
| | `-ParagraphComment 0x560468188220 <line:11478:15, line:11479:3>
| | |-TextComment 0x5604681881d0 <line:11478:15, col:57> Text=" Configuration parameters for deserializer."
| | `-TextComment 0x5604681881f0 <line:11479:3> Text=" "
| `-BlockCommandComment 0x560468188240 <col:4, col:79> Name="return"
| `-ParagraphComment 0x5604681882a0 <col:11, col:79>
| `-TextComment 0x560468188270 <col:11, col:79> Text=" Pointer to the character after the last one read, or NULL if failed."
|-FunctionDecl 0x5604680b7290 <line:11494:1, line:11498:38> line:11494:13 ecs_parse_json_values 'const char *(ecs_world_t *, ecs_entity_t, const char *, const ecs_parse_json_desc_t *)'
| |-ParmVarDecl 0x5604680b6fd8 <line:11495:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680b7050 <line:11496:5, col:18> col:18 e 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680b70d0 <line:11497:5, col:17> col:17 ptr 'const char *'
| |-ParmVarDecl 0x5604680b7148 <line:11498:5, col:34> col:34 desc 'const ecs_parse_json_desc_t *'
| `-FullComment 0x560468188420 <line:11489:4, line:11491:47>
| `-ParagraphComment 0x5604681883f0 <line:11489:4, line:11491:47>
| |-TextComment 0x560468188370 <line:11489:4, col:76> Text=" Parse JSON object with multiple component values into entity. The format"
| |-TextComment 0x560468188390 <line:11490:3, col:76> Text=" is the same as the one outputted by ecs_entity_to_json, but at the moment"
| `-TextComment 0x5604681883b0 <line:11491:3, col:47> Text=" only supports the "ids" and "values" member."
|-FunctionDecl 0x5604680b7640 <line:11515:1, line:11519:18> line:11515:7 ecs_array_to_json 'char *(const ecs_world_t *, ecs_entity_t, const void *, int32_t)'
| |-ParmVarDecl 0x5604680b7388 <line:11516:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680b7400 <line:11517:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680b7480 <line:11518:5, col:17> col:17 data 'const void *'
| |-ParmVarDecl 0x5604680b74f8 <line:11519:5, col:13> col:13 count 'int32_t':'int'
| `-FullComment 0x560468188a40 <line:11500:4, line:11512:58>
| |-ParagraphComment 0x560468188530 <line:11500:4, line:11502:78>
| | |-TextComment 0x5604681884b0 <line:11500:4, col:37> Text=" Serialize value into JSON string."
| | |-TextComment 0x5604681884d0 <line:11501:3, col:80> Text=" This operation serializes a value of the provided type to a JSON string. The "
| | `-TextComment 0x5604681884f0 <line:11502:3, col:78> Text=" memory pointed to must be large enough to contain a value of the used type."
| |-ParagraphComment 0x5604681885d0 <line:11504:3, line:11506:51>
| | |-TextComment 0x560468188550 <line:11504:3, col:76> Text=" If count is 0, the function will serialize a single value, not wrapped in"
| | |-TextComment 0x560468188570 <line:11505:3, col:77> Text=" array brackets. If count is >= 1, the operation will serialize values to a"
| | `-TextComment 0x560468188590 <line:11506:3, col:51> Text=" a comma-separated list inside of array brackets."
| |-ParagraphComment 0x560468188620 <line:11508:3>
| | `-TextComment 0x5604681885f0 <col:3> Text=" "
| |-ParamCommandComment 0x560468188640 <col:4, line:11509:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681886f0 <line:11508:16, line:11509:3>
| | |-TextComment 0x5604681886a0 <line:11508:16, col:26> Text=" The world."
| | `-TextComment 0x5604681886c0 <line:11509:3> Text=" "
| |-ParamCommandComment 0x560468188710 <col:4, line:11510:3> [in] implicitly Param="type" ParamIndex=1
| | `-ParagraphComment 0x5604681887c0 <line:11509:15, line:11510:3>
| | |-TextComment 0x560468188770 <line:11509:15, col:50> Text=" The type of the value to serialize."
| | `-TextComment 0x560468188790 <line:11510:3> Text=" "
| |-ParamCommandComment 0x5604681887e0 <col:4, line:11511:3> [in] implicitly Param="data" ParamIndex=2
| | `-ParagraphComment 0x560468188890 <line:11510:15, line:11511:3>
| | |-TextComment 0x560468188840 <line:11510:15, col:38> Text=" The value to serialize."
| | `-TextComment 0x560468188860 <line:11511:3> Text=" "
| |-ParamCommandComment 0x5604681888b0 <col:4, line:11512:3> [in] implicitly Param="count" ParamIndex=3
| | `-ParagraphComment 0x560468188960 <line:11511:16, line:11512:3>
| | |-TextComment 0x560468188910 <line:11511:16, col:52> Text=" The number of elements to serialize."
| | `-TextComment 0x560468188930 <line:11512:3> Text=" "
| `-BlockCommandComment 0x560468188980 <col:4, col:58> Name="return"
| `-ParagraphComment 0x5604681889e0 <col:11, col:58>
| `-TextComment 0x5604681889b0 <col:11, col:58> Text=" String with JSON expression, or NULL if failed."
|-FunctionDecl 0x5604680b7a80 <line:11532:1, line:11537:26> line:11532:5 ecs_array_to_json_buf 'int (const ecs_world_t *, ecs_entity_t, const void *, int32_t, ecs_strbuf_t *)'
| |-ParmVarDecl 0x5604680b7738 <line:11533:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680b77b0 <line:11534:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680b7830 <line:11535:5, col:17> col:17 data 'const void *'
| |-ParmVarDecl 0x5604680b78a8 <line:11536:5, col:13> col:13 count 'int32_t':'int'
| |-ParmVarDecl 0x5604680b7920 <line:11537:5, col:19> col:19 buf_out 'ecs_strbuf_t *'
| `-FullComment 0x560468189040 <line:11521:4, line:11529:47>
| |-ParagraphComment 0x560468188b00 <line:11521:4, line:11522:77>
| | |-TextComment 0x560468188ab0 <line:11521:4, col:44> Text=" Serialize value into JSON string buffer."
| | `-TextComment 0x560468188ad0 <line:11522:3, col:77> Text=" Same as ecs_array_to_json_buf, but serializes to an ecs_strbuf_t instance."
| |-ParagraphComment 0x560468188b50 <line:11524:3>
| | `-TextComment 0x560468188b20 <col:3> Text=" "
| |-ParamCommandComment 0x560468188b70 <col:4, line:11525:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468188c20 <line:11524:16, line:11525:3>
| | |-TextComment 0x560468188bd0 <line:11524:16, col:26> Text=" The world."
| | `-TextComment 0x560468188bf0 <line:11525:3> Text=" "
| |-ParamCommandComment 0x560468188c40 <col:4, line:11526:3> [in] implicitly Param="type" ParamIndex=1
| | `-ParagraphComment 0x560468188cf0 <line:11525:15, line:11526:3>
| | |-TextComment 0x560468188ca0 <line:11525:15, col:50> Text=" The type of the value to serialize."
| | `-TextComment 0x560468188cc0 <line:11526:3> Text=" "
| |-ParamCommandComment 0x560468188d10 <col:4, line:11527:3> [in] implicitly Param="data" ParamIndex=2
| | `-ParagraphComment 0x560468188dc0 <line:11526:15, line:11527:3>
| | |-TextComment 0x560468188d70 <line:11526:15, col:38> Text=" The value to serialize."
| | `-TextComment 0x560468188d90 <line:11527:3> Text=" "
| |-ParamCommandComment 0x560468188de0 <col:4, line:11528:3> [in] implicitly Param="count" ParamIndex=3
| | `-ParagraphComment 0x560468188e90 <line:11527:16, line:11528:3>
| | |-TextComment 0x560468188e40 <line:11527:16, col:52> Text=" The number of elements to serialize."
| | `-TextComment 0x560468188e60 <line:11528:3> Text=" "
| |-ParamCommandComment 0x560468188eb0 <col:4, line:11529:3> [in] implicitly Param="buf_out" ParamIndex=4
| | `-ParagraphComment 0x560468188f60 <line:11528:18, line:11529:3>
| | |-TextComment 0x560468188f10 <line:11528:18, col:53> Text=" The strbuf to append the string to."
| | `-TextComment 0x560468188f30 <line:11529:3> Text=" "
| `-BlockCommandComment 0x560468188f80 <col:4, col:47> Name="return"
| `-ParagraphComment 0x560468188fe0 <col:11, col:47>
| `-TextComment 0x560468188fb0 <col:11, col:47> Text=" Zero if success, non-zero if failed."
|-FunctionDecl 0x5604680b7db0 <line:11548:1, line:11551:21> line:11548:7 ecs_ptr_to_json 'char *(const ecs_world_t *, ecs_entity_t, const void *)'
| |-ParmVarDecl 0x5604680b7b88 <line:11549:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680b7c00 <line:11550:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680b7c80 <line:11551:5, col:17> col:17 data 'const void *'
| `-FullComment 0x560468189490 <line:11539:4, line:11545:58>
| |-ParagraphComment 0x560468189100 <line:11539:4, line:11540:45>
| | |-TextComment 0x5604681890b0 <line:11539:4, col:37> Text=" Serialize value into JSON string."
| | `-TextComment 0x5604681890d0 <line:11540:3, col:45> Text=" Same as ecs_array_to_json, with count = 0."
| |-ParagraphComment 0x560468189150 <line:11542:3>
| | `-TextComment 0x560468189120 <col:3> Text=" "
| |-ParamCommandComment 0x560468189170 <col:4, line:11543:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468189220 <line:11542:16, line:11543:3>
| | |-TextComment 0x5604681891d0 <line:11542:16, col:26> Text=" The world."
| | `-TextComment 0x5604681891f0 <line:11543:3> Text=" "
| |-ParamCommandComment 0x560468189240 <col:4, line:11544:3> [in] implicitly Param="type" ParamIndex=1
| | `-ParagraphComment 0x5604681892f0 <line:11543:15, line:11544:3>
| | |-TextComment 0x5604681892a0 <line:11543:15, col:50> Text=" The type of the value to serialize."
| | `-TextComment 0x5604681892c0 <line:11544:3> Text=" "
| |-ParamCommandComment 0x560468189310 <col:4, line:11545:3> [in] implicitly Param="data" ParamIndex=2
| | `-ParagraphComment 0x5604681893c0 <line:11544:15, line:11545:3>
| | |-TextComment 0x560468189370 <line:11544:15, col:38> Text=" The value to serialize."
| | `-TextComment 0x560468189390 <line:11545:3> Text=" "
| `-BlockCommandComment 0x5604681893e0 <col:4, col:58> Name="return"
| `-ParagraphComment 0x560468189440 <col:11, col:58>
| `-TextComment 0x560468189410 <col:11, col:58> Text=" String with JSON expression, or NULL if failed."
|-FunctionDecl 0x5604680b8440 <line:11563:1, line:11567:26> line:11563:5 ecs_ptr_to_json_buf 'int (const ecs_world_t *, ecs_entity_t, const void *, ecs_strbuf_t *)'
| |-ParmVarDecl 0x5604680b7ea8 <line:11564:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680b7f20 <line:11565:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680b7fa0 <line:11566:5, col:17> col:17 data 'const void *'
| |-ParmVarDecl 0x5604680b8018 <line:11567:5, col:19> col:19 buf_out 'ecs_strbuf_t *'
| `-FullComment 0x5604681899c0 <line:11553:4, line:11560:47>
| |-ParagraphComment 0x560468189550 <line:11553:4, line:11554:71>
| | |-TextComment 0x560468189500 <line:11553:4, col:44> Text=" Serialize value into JSON string buffer."
| | `-TextComment 0x560468189520 <line:11554:3, col:71> Text=" Same as ecs_ptr_to_json, but serializes to an ecs_strbuf_t instance."
| |-ParagraphComment 0x5604681895a0 <line:11556:3>
| | `-TextComment 0x560468189570 <col:3> Text=" "
| |-ParamCommandComment 0x5604681895c0 <col:4, line:11557:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468189670 <line:11556:16, line:11557:3>
| | |-TextComment 0x560468189620 <line:11556:16, col:26> Text=" The world."
| | `-TextComment 0x560468189640 <line:11557:3> Text=" "
| |-ParamCommandComment 0x560468189690 <col:4, line:11558:3> [in] implicitly Param="type" ParamIndex=1
| | `-ParagraphComment 0x560468189740 <line:11557:15, line:11558:3>
| | |-TextComment 0x5604681896f0 <line:11557:15, col:50> Text=" The type of the value to serialize."
| | `-TextComment 0x560468189710 <line:11558:3> Text=" "
| |-ParamCommandComment 0x560468189760 <col:4, line:11559:3> [in] implicitly Param="data" ParamIndex=2
| | `-ParagraphComment 0x560468189810 <line:11558:15, line:11559:3>
| | |-TextComment 0x5604681897c0 <line:11558:15, col:38> Text=" The value to serialize."
| | `-TextComment 0x5604681897e0 <line:11559:3> Text=" "
| |-ParamCommandComment 0x560468189830 <col:4, line:11560:3> [in] implicitly Param="buf_out" ParamIndex=3
| | `-ParagraphComment 0x5604681898e0 <line:11559:18, line:11560:3>
| | |-TextComment 0x560468189890 <line:11559:18, col:53> Text=" The strbuf to append the string to."
| | `-TextComment 0x5604681898b0 <line:11560:3> Text=" "
| `-BlockCommandComment 0x560468189900 <col:4, col:47> Name="return"
| `-ParagraphComment 0x560468189960 <col:11, col:47>
| `-TextComment 0x560468189930 <col:11, col:47> Text=" Zero if success, non-zero if failed."
|-FunctionDecl 0x5604680b8650 <line:11580:1, line:11582:22> line:11580:7 ecs_type_info_to_json 'char *(const ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x5604680b8538 <line:11581:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680b85b0 <line:11582:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468189dc0 <line:11569:4, line:11577:74>
| |-ParagraphComment 0x560468189ab0 <line:11569:4, line:11571:40>
| | |-TextComment 0x560468189a30 <line:11569:4, col:32> Text=" Serialize type info to JSON."
| | |-TextComment 0x560468189a50 <line:11570:3, col:78> Text=" This serializes type information to JSON, and can be used to store/transmit"
| | `-TextComment 0x560468189a70 <line:11571:3, col:40> Text=" the structure of a (component) value."
| |-ParagraphComment 0x560468189b00 <line:11573:3, col:76>
| | `-TextComment 0x560468189ad0 <col:3, col:76> Text=" If the provided type does not have reflection data, "0" will be returned."
| |-ParagraphComment 0x560468189b50 <line:11575:3>
| | `-TextComment 0x560468189b20 <col:3> Text=" "
| |-ParamCommandComment 0x560468189b70 <col:4, line:11576:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468189c20 <line:11575:16, line:11576:3>
| | |-TextComment 0x560468189bd0 <line:11575:16, col:26> Text=" The world."
| | `-TextComment 0x560468189bf0 <line:11576:3> Text=" "
| |-ParamCommandComment 0x560468189c40 <col:4, line:11577:3> [in] implicitly Param="type" ParamIndex=1
| | `-ParagraphComment 0x560468189cf0 <line:11576:15, line:11577:3>
| | |-TextComment 0x560468189ca0 <line:11576:15, col:45> Text=" The type to serialize to JSON."
| | `-TextComment 0x560468189cc0 <line:11577:3> Text=" "
| `-BlockCommandComment 0x560468189d10 <col:4, col:74> Name="return"
| `-ParagraphComment 0x560468189d70 <col:11, col:74>
| `-TextComment 0x560468189d40 <col:11, col:74> Text=" A JSON string with the serialized type info, or NULL if failed."
|-FunctionDecl 0x5604680b8950 <line:11593:1, line:11596:26> line:11593:5 ecs_type_info_to_json_buf 'int (const ecs_world_t *, ecs_entity_t, ecs_strbuf_t *)'
| |-ParmVarDecl 0x5604680b8738 <line:11594:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680b87b0 <line:11595:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680b8828 <line:11596:5, col:19> col:19 buf_out 'ecs_strbuf_t *'
| `-FullComment 0x56046818a210 <line:11584:4, line:11590:47>
| |-ParagraphComment 0x560468189e80 <line:11584:4, line:11585:77>
| | |-TextComment 0x560468189e30 <line:11584:4, col:48> Text=" Serialize type info into JSON string buffer."
| | `-TextComment 0x560468189e50 <line:11585:3, col:77> Text=" Same as ecs_type_info_to_json, but serializes to an ecs_strbuf_t instance."
| |-ParagraphComment 0x560468189ed0 <line:11587:3>
| | `-TextComment 0x560468189ea0 <col:3> Text=" "
| |-ParamCommandComment 0x560468189ef0 <col:4, line:11588:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468189fa0 <line:11587:16, line:11588:3>
| | |-TextComment 0x560468189f50 <line:11587:16, col:26> Text=" The world."
| | `-TextComment 0x560468189f70 <line:11588:3> Text=" "
| |-ParamCommandComment 0x560468189fc0 <col:4, line:11589:3> [in] implicitly Param="type" ParamIndex=1
| | `-ParagraphComment 0x56046818a070 <line:11588:15, line:11589:3>
| | |-TextComment 0x56046818a020 <line:11588:15, col:37> Text=" The type to serialize."
| | `-TextComment 0x56046818a040 <line:11589:3> Text=" "
| |-ParamCommandComment 0x56046818a090 <col:4, line:11590:3> [in] implicitly Param="buf_out" ParamIndex=2
| | `-ParagraphComment 0x56046818a140 <line:11589:18, line:11590:3>
| | |-TextComment 0x56046818a0f0 <line:11589:18, col:53> Text=" The strbuf to append the string to."
| | `-TextComment 0x56046818a110 <line:11590:3> Text=" "
| `-BlockCommandComment 0x56046818a160 <col:4, col:47> Name="return"
| `-ParagraphComment 0x56046818a1c0 <col:11, col:47>
| `-TextComment 0x56046818a190 <col:11, col:47> Text=" Zero if success, non-zero if failed."
|-RecordDecl 0x5604680b8a38 <line:11599:9, line:11612:1> line:11599:16 struct ecs_entity_to_json_desc_t definition
| |-FullComment 0x56046818a2e0 <line:11598:4, col:32>
| | `-ParagraphComment 0x56046818a2b0 <col:4, col:32>
| | `-TextComment 0x56046818a280 <col:4, col:32> Text=" Used with ecs_iter_to_json. "
| |-FieldDecl 0x5604680b8af0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11600:10> col:10 serialize_path 'bool'
| |-FieldDecl 0x5604680b8b50 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11601:10> col:10 serialize_meta_ids 'bool'
| |-FieldDecl 0x5604680b8bb0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11602:10> col:10 serialize_label 'bool'
| |-FieldDecl 0x5604680b8c10 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11603:10> col:10 serialize_brief 'bool'
| |-FieldDecl 0x5604680b8c70 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11604:10> col:10 serialize_link 'bool'
| |-FieldDecl 0x5604680b8cd0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11605:10> col:10 serialize_color 'bool'
| |-FieldDecl 0x5604680b8d30 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11606:10> col:10 serialize_id_labels 'bool'
| |-FieldDecl 0x5604680b8d90 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11607:10> col:10 serialize_base 'bool'
| |-FieldDecl 0x5604680b8df0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11608:10> col:10 serialize_private 'bool'
| |-FieldDecl 0x5604680b8e50 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11609:10> col:10 serialize_hidden 'bool'
| |-FieldDecl 0x5604680b8eb0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11610:10> col:10 serialize_values 'bool'
| `-FieldDecl 0x5604680b8f10 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11611:10> col:10 serialize_type_info 'bool'
|-TypedefDecl 0x5604680b8fb8 <line:11599:1, line:11612:3> col:3 referenced ecs_entity_to_json_desc_t 'struct ecs_entity_to_json_desc_t':'struct ecs_entity_to_json_desc_t'
| |-ElaboratedType 0x5604680b8f60 'struct ecs_entity_to_json_desc_t' sugar
| | `-RecordType 0x5604680b8ac0 'struct ecs_entity_to_json_desc_t'
| | `-Record 0x5604680b8a38 'ecs_entity_to_json_desc_t'
| `-FullComment 0x56046818a3b0 <line:11598:4, col:32>
| `-ParagraphComment 0x56046818a380 <col:4, col:32>
| `-TextComment 0x56046818a350 <col:4, col:32> Text=" Used with ecs_iter_to_json. "
|-FunctionDecl 0x5604680b92f0 <line:11628:1, line:11631:42> line:11628:7 ecs_entity_to_json 'char *(const ecs_world_t *, ecs_entity_t, const ecs_entity_to_json_desc_t *)'
| |-ParmVarDecl 0x5604680b9060 <line:11629:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680b90d8 <line:11630:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680b91c8 <line:11631:5, col:38> col:38 desc 'const ecs_entity_to_json_desc_t *'
| `-FullComment 0x56046818a7d0 <line:11617:4, line:11625:76>
| |-ParagraphComment 0x56046818a4c0 <line:11617:4, line:11619:53>
| | |-TextComment 0x56046818a420 <line:11617:4, col:38> Text=" Serialize entity into JSON string."
| | |-TextComment 0x56046818a440 <line:11618:3, col:77> Text=" This creates a JSON object with the entity's (path) name, which components"
| | `-TextComment 0x56046818a480 <line:11619:3, col:53> Text=" and tags the entity has, and the component values."
| |-ParagraphComment 0x56046818a510 <line:11621:3, col:80>
| | `-TextComment 0x56046818a4e0 <col:3, col:80> Text=" The operation may fail if the entity contains components with invalid values."
| |-ParagraphComment 0x56046818a560 <line:11623:3>
| | `-TextComment 0x56046818a530 <col:3> Text=" "
| |-ParamCommandComment 0x56046818a580 <col:4, line:11624:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046818a630 <line:11623:16, line:11624:3>
| | |-TextComment 0x56046818a5e0 <line:11623:16, col:26> Text=" The world."
| | `-TextComment 0x56046818a600 <line:11624:3> Text=" "
| |-ParamCommandComment 0x56046818a650 <col:4, line:11625:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x56046818a700 <line:11624:17, line:11625:3>
| | |-TextComment 0x56046818a6b0 <line:11624:17, col:49> Text=" The entity to serialize to JSON."
| | `-TextComment 0x56046818a6d0 <line:11625:3> Text=" "
| `-BlockCommandComment 0x56046818a720 <col:4, col:76> Name="return"
| `-ParagraphComment 0x56046818a780 <col:11, col:76>
| `-TextComment 0x56046818a750 <col:11, col:76> Text=" A JSON string with the serialized entity data, or NULL if failed."
|-FunctionDecl 0x5604680b96a0 <line:11642:1, line:11646:42> line:11642:5 ecs_entity_to_json_buf 'int (const ecs_world_t *, ecs_entity_t, ecs_strbuf_t *, const ecs_entity_to_json_desc_t *)'
| |-ParmVarDecl 0x5604680b93e8 <line:11643:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680b9460 <line:11644:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680b94d8 <line:11645:5, col:19> col:19 buf_out 'ecs_strbuf_t *'
| |-ParmVarDecl 0x5604680b9550 <line:11646:5, col:38> col:38 desc 'const ecs_entity_to_json_desc_t *'
| `-FullComment 0x56046818ac20 <line:11633:4, line:11639:47>
| |-ParagraphComment 0x56046818a890 <line:11633:4, line:11634:74>
| | |-TextComment 0x56046818a840 <line:11633:4, col:45> Text=" Serialize entity into JSON string buffer."
| | `-TextComment 0x56046818a860 <line:11634:3, col:74> Text=" Same as ecs_entity_to_json, but serializes to an ecs_strbuf_t instance."
| |-ParagraphComment 0x56046818a8e0 <line:11636:3>
| | `-TextComment 0x56046818a8b0 <col:3> Text=" "
| |-ParamCommandComment 0x56046818a900 <col:4, line:11637:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046818a9b0 <line:11636:16, line:11637:3>
| | |-TextComment 0x56046818a960 <line:11636:16, col:26> Text=" The world."
| | `-TextComment 0x56046818a980 <line:11637:3> Text=" "
| |-ParamCommandComment 0x56046818a9d0 <col:4, line:11638:3> [in] implicitly Param="entity" ParamIndex=1
| | `-ParagraphComment 0x56046818aa80 <line:11637:17, line:11638:3>
| | |-TextComment 0x56046818aa30 <line:11637:17, col:41> Text=" The entity to serialize."
| | `-TextComment 0x56046818aa50 <line:11638:3> Text=" "
| |-ParamCommandComment 0x56046818aaa0 <col:4, line:11639:3> [in] implicitly Param="buf_out" ParamIndex=2
| | `-ParagraphComment 0x56046818ab50 <line:11638:18, line:11639:3>
| | |-TextComment 0x56046818ab00 <line:11638:18, col:53> Text=" The strbuf to append the string to."
| | `-TextComment 0x56046818ab20 <line:11639:3> Text=" "
| `-BlockCommandComment 0x56046818ab70 <col:4, col:47> Name="return"
| `-ParagraphComment 0x56046818abd0 <col:11, col:47>
| `-TextComment 0x56046818aba0 <col:11, col:47> Text=" Zero if success, non-zero if failed."
|-RecordDecl 0x5604680b9788 <line:11649:9, line:11664:1> line:11649:16 struct ecs_iter_to_json_desc_t definition
| |-FullComment 0x56046818acf0 <line:11648:4, col:32>
| | `-ParagraphComment 0x56046818acc0 <col:4, col:32>
| | `-TextComment 0x56046818ac90 <col:4, col:32> Text=" Used with ecs_iter_to_json. "
| |-FieldDecl 0x5604680b9840 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11650:10> col:10 serialize_term_ids 'bool'
| |-FieldDecl 0x5604680b98a0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11651:10> col:10 serialize_ids 'bool'
| |-FieldDecl 0x5604680b9900 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11652:10> col:10 serialize_sources 'bool'
| |-FieldDecl 0x5604680b9960 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11653:10> col:10 serialize_variables 'bool'
| |-FieldDecl 0x5604680b99c0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11654:10> col:10 serialize_is_set 'bool'
| |-FieldDecl 0x5604680b9a20 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11655:10> col:10 serialize_values 'bool'
| |-FieldDecl 0x5604680b9a80 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11656:10> col:10 serialize_entities 'bool'
| |-FieldDecl 0x5604680b9ae0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11657:10> col:10 serialize_entity_labels 'bool'
| |-FieldDecl 0x5604680b9b40 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11658:10> col:10 serialize_entity_ids 'bool'
| |-FieldDecl 0x5604680b9ba0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11659:10> col:10 serialize_variable_labels 'bool'
| |-FieldDecl 0x5604680b9c00 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11660:10> col:10 serialize_variable_ids 'bool'
| |-FieldDecl 0x5604680b9c60 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11661:10> col:10 serialize_colors 'bool'
| |-FieldDecl 0x5604680b9cc0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11662:10> col:10 measure_eval_duration 'bool'
| `-FieldDecl 0x5604680b9d20 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:11663:10> col:10 serialize_type_info 'bool'
|-TypedefDecl 0x5604680b9dc8 <line:11649:1, line:11664:3> col:3 referenced ecs_iter_to_json_desc_t 'struct ecs_iter_to_json_desc_t':'struct ecs_iter_to_json_desc_t'
| |-ElaboratedType 0x5604680b9d70 'struct ecs_iter_to_json_desc_t' sugar
| | `-RecordType 0x5604680b9810 'struct ecs_iter_to_json_desc_t'
| | `-Record 0x5604680b9788 'ecs_iter_to_json_desc_t'
| `-FullComment 0x56046818adc0 <line:11648:4, col:32>
| `-ParagraphComment 0x56046818ad90 <col:4, col:32>
| `-TextComment 0x56046818ad60 <col:4, col:32> Text=" Used with ecs_iter_to_json. "
|-FunctionDecl 0x5604680ba100 <line:11692:1, line:11695:40> line:11692:7 ecs_iter_to_json 'char *(const ecs_world_t *, ecs_iter_t *, const ecs_iter_to_json_desc_t *)'
| |-ParmVarDecl 0x5604680b9e70 <line:11693:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680b9ee8 <line:11694:5, col:17> col:17 iter 'ecs_iter_t *'
| |-ParmVarDecl 0x5604680b9fd8 <line:11695:5, col:36> col:36 desc 'const ecs_iter_to_json_desc_t *'
| `-FullComment 0x56046818b170 <line:11683:4, line:11689:78>
| |-ParagraphComment 0x56046818aeb0 <line:11683:4, line:11685:60>
| | |-TextComment 0x56046818ae30 <line:11683:4, col:40> Text=" Serialize iterator into JSON string."
| | |-TextComment 0x56046818ae50 <line:11684:3, col:78> Text=" This operation will iterate the contents of the iterator and serialize them"
| | `-TextComment 0x56046818ae70 <line:11685:3, col:60> Text=" to JSON. The function acccepts iterators from any source."
| |-ParagraphComment 0x56046818af00 <line:11687:3>
| | `-TextComment 0x56046818aed0 <col:3> Text=" "
| |-ParamCommandComment 0x56046818af20 <col:4, line:11688:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046818afd0 <line:11687:16, line:11688:3>
| | |-TextComment 0x56046818af80 <line:11687:16, col:26> Text=" The world."
| | `-TextComment 0x56046818afa0 <line:11688:3> Text=" "
| |-ParamCommandComment 0x56046818aff0 <col:4, line:11689:3> [in] implicitly Param="iter" ParamIndex=1
| | `-ParagraphComment 0x56046818b0a0 <line:11688:15, line:11689:3>
| | |-TextComment 0x56046818b050 <line:11688:15, col:49> Text=" The iterator to serialize to JSON."
| | `-TextComment 0x56046818b070 <line:11689:3> Text=" "
| `-BlockCommandComment 0x56046818b0c0 <col:4, col:78> Name="return"
| `-ParagraphComment 0x56046818b120 <col:11, col:78>
| `-TextComment 0x56046818b0f0 <col:11, col:78> Text=" A JSON string with the serialized iterator data, or NULL if failed."
|-FunctionDecl 0x5604680bcbc0 <line:11706:1, line:11710:40> line:11706:5 ecs_iter_to_json_buf 'int (const ecs_world_t *, ecs_iter_t *, ecs_strbuf_t *, const ecs_iter_to_json_desc_t *)'
| |-ParmVarDecl 0x5604680ba1f8 <line:11707:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680ba270 <line:11708:5, col:17> col:17 iter 'ecs_iter_t *'
| |-ParmVarDecl 0x5604680ba2e8 <line:11709:5, col:19> col:19 buf_out 'ecs_strbuf_t *'
| |-ParmVarDecl 0x5604680ba360 <line:11710:5, col:36> col:36 desc 'const ecs_iter_to_json_desc_t *'
| `-FullComment 0x56046818b5c0 <line:11697:4, line:11703:47>
| |-ParagraphComment 0x56046818b230 <line:11697:4, line:11698:72>
| | |-TextComment 0x56046818b1e0 <line:11697:4, col:47> Text=" Serialize iterator into JSON string buffer."
| | `-TextComment 0x56046818b200 <line:11698:3, col:72> Text=" Same as ecs_iter_to_json, but serializes to an ecs_strbuf_t instance."
| |-ParagraphComment 0x56046818b280 <line:11700:3>
| | `-TextComment 0x56046818b250 <col:3> Text=" "
| |-ParamCommandComment 0x56046818b2a0 <col:4, line:11701:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046818b350 <line:11700:16, line:11701:3>
| | |-TextComment 0x56046818b300 <line:11700:16, col:26> Text=" The world."
| | `-TextComment 0x56046818b320 <line:11701:3> Text=" "
| |-ParamCommandComment 0x56046818b370 <col:4, line:11702:3> [in] implicitly Param="iter" ParamIndex=1
| | `-ParagraphComment 0x56046818b420 <line:11701:15, line:11702:3>
| | |-TextComment 0x56046818b3d0 <line:11701:15, col:41> Text=" The iterator to serialize."
| | `-TextComment 0x56046818b3f0 <line:11702:3> Text=" "
| |-ParamCommandComment 0x56046818b440 <col:4, line:11703:3> [in] implicitly Param="buf_out" ParamIndex=2
| | `-ParagraphComment 0x56046818b4f0 <line:11702:18, line:11703:3>
| | |-TextComment 0x56046818b4a0 <line:11702:18, col:53> Text=" The strbuf to append the string to."
| | `-TextComment 0x56046818b4c0 <line:11703:3> Text=" "
| `-BlockCommandComment 0x56046818b510 <col:4, col:47> Name="return"
| `-ParagraphComment 0x56046818b570 <col:11, col:47>
| `-TextComment 0x56046818b540 <col:11, col:47> Text=" Zero if success, non-zero if failed."
|-VarDecl 0x5604680bcd48 <line:11783:11, col:30> col:30 EcsUnitPrefixes 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bcdc0 <col:11, <scratch space>:57:1> col:1 FLECS__EEcsUnitPrefixes 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bce50 <flecs.h:11785:11, col:30> col:30 EcsYocto 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bcec8 <col:11, <scratch space>:58:1> col:1 FLECS__EEcsYocto 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bcf58 <flecs.h:11786:11, col:30> col:30 EcsZepto 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bcfd0 <col:11, <scratch space>:59:1> col:1 FLECS__EEcsZepto 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd060 <flecs.h:11787:11, col:30> col:30 EcsAtto 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd0d8 <col:11, <scratch space>:60:1> col:1 FLECS__EEcsAtto 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd168 <flecs.h:11788:11, col:30> col:30 EcsFemto 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd1e0 <col:11, <scratch space>:61:1> col:1 FLECS__EEcsFemto 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd270 <flecs.h:11789:11, col:30> col:30 EcsPico 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd2e8 <col:11, <scratch space>:62:1> col:1 FLECS__EEcsPico 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd378 <flecs.h:11790:11, col:30> col:30 EcsNano 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd3f0 <col:11, <scratch space>:63:1> col:1 FLECS__EEcsNano 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd480 <flecs.h:11791:11, col:30> col:30 EcsMicro 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd4f8 <col:11, <scratch space>:64:1> col:1 FLECS__EEcsMicro 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd588 <flecs.h:11792:11, col:30> col:30 EcsMilli 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd600 <col:11, <scratch space>:65:1> col:1 FLECS__EEcsMilli 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd690 <flecs.h:11793:11, col:30> col:30 EcsCenti 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd708 <col:11, <scratch space>:66:1> col:1 FLECS__EEcsCenti 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd798 <flecs.h:11794:11, col:30> col:30 EcsDeci 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd810 <col:11, <scratch space>:67:1> col:1 FLECS__EEcsDeci 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd8a0 <flecs.h:11795:11, col:30> col:30 EcsDeca 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd918 <col:11, <scratch space>:68:1> col:1 FLECS__EEcsDeca 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bd9a8 <flecs.h:11796:11, col:30> col:30 EcsHecto 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bda20 <col:11, <scratch space>:69:1> col:1 FLECS__EEcsHecto 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bdab0 <flecs.h:11797:11, col:30> col:30 EcsKilo 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bdb28 <col:11, <scratch space>:70:1> col:1 FLECS__EEcsKilo 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bdbb8 <flecs.h:11798:11, col:30> col:30 EcsMega 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bdc30 <col:11, <scratch space>:71:1> col:1 FLECS__EEcsMega 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bdcc0 <flecs.h:11799:11, col:30> col:30 EcsGiga 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bdd38 <col:11, <scratch space>:72:1> col:1 FLECS__EEcsGiga 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bddc8 <flecs.h:11800:11, col:30> col:30 EcsTera 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bde40 <col:11, <scratch space>:73:1> col:1 FLECS__EEcsTera 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bded0 <flecs.h:11801:11, col:30> col:30 EcsPeta 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bdf48 <col:11, <scratch space>:74:1> col:1 FLECS__EEcsPeta 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bdfd8 <flecs.h:11802:11, col:30> col:30 EcsExa 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be050 <col:11, <scratch space>:75:1> col:1 FLECS__EEcsExa 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be0e0 <flecs.h:11803:11, col:30> col:30 EcsZetta 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be158 <col:11, <scratch space>:76:1> col:1 FLECS__EEcsZetta 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be1e8 <flecs.h:11804:11, col:30> col:30 EcsYotta 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be260 <col:11, <scratch space>:77:1> col:1 FLECS__EEcsYotta 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be2f0 <flecs.h:11806:11, col:30> col:30 EcsKibi 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be368 <col:11, <scratch space>:78:1> col:1 FLECS__EEcsKibi 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be3f8 <flecs.h:11807:11, col:30> col:30 EcsMebi 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be470 <col:11, <scratch space>:79:1> col:1 FLECS__EEcsMebi 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be500 <flecs.h:11808:11, col:30> col:30 EcsGibi 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be578 <col:11, <scratch space>:80:1> col:1 FLECS__EEcsGibi 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be608 <flecs.h:11809:11, col:30> col:30 EcsTebi 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be680 <col:11, <scratch space>:81:1> col:1 FLECS__EEcsTebi 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be710 <flecs.h:11810:11, col:30> col:30 EcsPebi 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be788 <col:11, <scratch space>:82:1> col:1 FLECS__EEcsPebi 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be818 <flecs.h:11811:11, col:30> col:30 EcsExbi 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be890 <col:11, <scratch space>:83:1> col:1 FLECS__EEcsExbi 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be920 <flecs.h:11812:11, col:30> col:30 EcsZebi 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680be998 <col:11, <scratch space>:84:1> col:1 FLECS__EEcsZebi 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bea28 <flecs.h:11813:11, col:30> col:30 EcsYobi 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680beaa0 <col:11, <scratch space>:85:1> col:1 FLECS__EEcsYobi 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bfcd0 <flecs.h:11824:11, col:30> col:30 EcsDuration 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bfd48 <col:11, <scratch space>:86:1> col:1 FLECS__EEcsDuration 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bfdd8 <flecs.h:11825:11, col:34> col:34 EcsPicoSeconds 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bfe50 <col:11, <scratch space>:87:1> col:1 FLECS__EEcsPicoSeconds 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bfee0 <flecs.h:11826:11, col:34> col:34 EcsNanoSeconds 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bff58 <col:11, <scratch space>:88:1> col:1 FLECS__EEcsNanoSeconds 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680bffe8 <flecs.h:11827:11, col:34> col:34 EcsMicroSeconds 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0060 <col:11, <scratch space>:89:1> col:1 FLECS__EEcsMicroSeconds 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c00f0 <flecs.h:11828:11, col:34> col:34 EcsMilliSeconds 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0168 <col:11, <scratch space>:90:1> col:1 FLECS__EEcsMilliSeconds 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c01f8 <flecs.h:11829:11, col:34> col:34 EcsSeconds 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0270 <col:11, <scratch space>:91:1> col:1 FLECS__EEcsSeconds 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0300 <flecs.h:11830:11, col:34> col:34 EcsMinutes 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0378 <col:11, <scratch space>:92:1> col:1 FLECS__EEcsMinutes 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0408 <flecs.h:11831:11, col:34> col:34 EcsHours 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0480 <col:11, <scratch space>:93:1> col:1 FLECS__EEcsHours 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0510 <flecs.h:11832:11, col:34> col:34 EcsDays 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0588 <col:11, <scratch space>:94:1> col:1 FLECS__EEcsDays 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0670 <flecs.h:11843:11, col:30> col:30 EcsTime 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c06e8 <col:11, <scratch space>:95:1> col:1 FLECS__EEcsTime 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0778 <flecs.h:11844:11, col:34> col:34 EcsDate 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c07f0 <col:11, <scratch space>:96:1> col:1 FLECS__EEcsDate 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c08e0 <flecs.h:11855:11, col:30> col:30 EcsMass 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0958 <col:11, <scratch space>:97:1> col:1 FLECS__EEcsMass 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c09e8 <flecs.h:11856:11, col:34> col:34 EcsGrams 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0a60 <col:11, <scratch space>:98:1> col:1 FLECS__EEcsGrams 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0af0 <flecs.h:11857:11, col:34> col:34 EcsKiloGrams 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0b68 <col:11, <scratch space>:99:1> col:1 FLECS__EEcsKiloGrams 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0c50 <flecs.h:11868:11, col:30> col:30 EcsElectricCurrent 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0cc8 <col:11, <scratch space>:100:1> col:1 FLECS__EEcsElectricCurrent 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0d58 <flecs.h:11869:11, col:34> col:34 EcsAmpere 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0dd0 <col:11, <scratch space>:101:1> col:1 FLECS__EEcsAmpere 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0ec0 <flecs.h:11880:11, col:30> col:30 EcsAmount 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0f38 <col:11, <scratch space>:102:1> col:1 FLECS__EEcsAmount 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c0fc8 <flecs.h:11881:11, col:34> col:34 EcsMole 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c1040 <col:11, <scratch space>:103:1> col:1 FLECS__EEcsMole 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c1130 <flecs.h:11892:11, col:30> col:30 EcsLuminousIntensity 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c11a8 <col:11, <scratch space>:104:1> col:1 FLECS__EEcsLuminousIntensity 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c1238 <flecs.h:11893:11, col:34> col:34 EcsCandela 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c12b0 <col:11, <scratch space>:105:1> col:1 FLECS__EEcsCandela 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c13a0 <flecs.h:11904:11, col:30> col:30 EcsForce 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c1418 <col:11, <scratch space>:106:1> col:1 FLECS__EEcsForce 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c14a8 <flecs.h:11905:11, col:34> col:34 EcsNewton 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c1520 <col:11, <scratch space>:107:1> col:1 FLECS__EEcsNewton 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c1610 <flecs.h:11916:11, col:30> col:30 EcsLength 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c1688 <col:11, <scratch space>:108:1> col:1 FLECS__EEcsLength 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c1718 <flecs.h:11917:11, col:34> col:34 EcsMeters 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c1790 <col:11, <scratch space>:109:1> col:1 FLECS__EEcsMeters 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c1820 <flecs.h:11918:11, col:38> col:38 EcsPicoMeters 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c1898 <col:11, <scratch space>:110:1> col:1 FLECS__EEcsPicoMeters 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c1928 <flecs.h:11919:11, col:38> col:38 EcsNanoMeters 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c19a0 <col:11, <scratch space>:111:1> col:1 FLECS__EEcsNanoMeters 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c1a30 <flecs.h:11920:11, col:38> col:38 EcsMicroMeters 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c1aa8 <col:11, <scratch space>:112:1> col:1 FLECS__EEcsMicroMeters 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c1b38 <flecs.h:11921:11, col:38> col:38 EcsMilliMeters 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c1bb0 <col:11, <scratch space>:113:1> col:1 FLECS__EEcsMilliMeters 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2060 <flecs.h:11922:11, col:38> col:38 EcsCentiMeters 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c20d8 <col:11, <scratch space>:114:1> col:1 FLECS__EEcsCentiMeters 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2168 <flecs.h:11923:11, col:38> col:38 EcsKiloMeters 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c21e0 <col:11, <scratch space>:115:1> col:1 FLECS__EEcsKiloMeters 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2270 <flecs.h:11924:11, col:34> col:34 EcsMiles 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c22e8 <col:11, <scratch space>:116:1> col:1 FLECS__EEcsMiles 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2378 <flecs.h:11925:11, col:34> col:34 EcsPixels 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c23f0 <col:11, <scratch space>:117:1> col:1 FLECS__EEcsPixels 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c24e0 <flecs.h:11936:11, col:30> col:30 EcsPressure 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2558 <col:11, <scratch space>:118:1> col:1 FLECS__EEcsPressure 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c25e8 <flecs.h:11937:11, col:34> col:34 EcsPascal 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2660 <col:11, <scratch space>:119:1> col:1 FLECS__EEcsPascal 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c26f0 <flecs.h:11938:11, col:34> col:34 EcsBar 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2768 <col:11, <scratch space>:120:1> col:1 FLECS__EEcsBar 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2850 <flecs.h:11949:11, col:30> col:30 EcsSpeed 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c28c8 <col:11, <scratch space>:121:1> col:1 FLECS__EEcsSpeed 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2958 <flecs.h:11950:11, col:34> col:34 EcsMetersPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c29d0 <col:11, <scratch space>:122:1> col:1 FLECS__EEcsMetersPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2a60 <flecs.h:11951:11, col:34> col:34 EcsKiloMetersPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2ad8 <col:11, <scratch space>:123:1> col:1 FLECS__EEcsKiloMetersPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2b68 <flecs.h:11952:11, col:34> col:34 EcsKiloMetersPerHour 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2be0 <col:11, <scratch space>:124:1> col:1 FLECS__EEcsKiloMetersPerHour 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2c70 <flecs.h:11953:11, col:34> col:34 EcsMilesPerHour 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2ce8 <col:11, <scratch space>:125:1> col:1 FLECS__EEcsMilesPerHour 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2dd0 <flecs.h:11964:11, col:30> col:30 EcsTemperature 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2e48 <col:11, <scratch space>:126:1> col:1 FLECS__EEcsTemperature 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2ed8 <flecs.h:11965:11, col:34> col:34 EcsKelvin 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2f50 <col:11, <scratch space>:127:1> col:1 FLECS__EEcsKelvin 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c2fe0 <flecs.h:11966:11, col:34> col:34 EcsCelsius 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3058 <col:11, <scratch space>:128:1> col:1 FLECS__EEcsCelsius 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c30e8 <flecs.h:11967:11, col:34> col:34 EcsFahrenheit 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3160 <col:11, <scratch space>:129:1> col:1 FLECS__EEcsFahrenheit 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3250 <flecs.h:11978:11, col:30> col:30 EcsData 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c32c8 <col:11, <scratch space>:130:1> col:1 FLECS__EEcsData 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3358 <flecs.h:11979:11, col:34> col:34 EcsBits 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c33d0 <col:11, <scratch space>:131:1> col:1 FLECS__EEcsBits 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3460 <flecs.h:11980:11, col:38> col:38 EcsKiloBits 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c34d8 <col:11, <scratch space>:132:1> col:1 FLECS__EEcsKiloBits 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3568 <flecs.h:11981:11, col:38> col:38 EcsMegaBits 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c35e0 <col:11, <scratch space>:133:1> col:1 FLECS__EEcsMegaBits 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3670 <flecs.h:11982:11, col:38> col:38 EcsGigaBits 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c36e8 <col:11, <scratch space>:134:1> col:1 FLECS__EEcsGigaBits 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3778 <flecs.h:11983:11, col:34> col:34 EcsBytes 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c37f0 <col:11, <scratch space>:135:1> col:1 FLECS__EEcsBytes 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3880 <flecs.h:11984:11, col:38> col:38 EcsKiloBytes 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c38f8 <col:11, <scratch space>:136:1> col:1 FLECS__EEcsKiloBytes 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3988 <flecs.h:11985:11, col:38> col:38 EcsMegaBytes 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3a00 <col:11, <scratch space>:137:1> col:1 FLECS__EEcsMegaBytes 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3a90 <flecs.h:11986:11, col:38> col:38 EcsGigaBytes 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3b08 <col:11, <scratch space>:138:1> col:1 FLECS__EEcsGigaBytes 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3b98 <flecs.h:11987:11, col:38> col:38 EcsKibiBytes 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3c10 <col:11, <scratch space>:139:1> col:1 FLECS__EEcsKibiBytes 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3ca0 <flecs.h:11988:11, col:38> col:38 EcsMebiBytes 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3d18 <col:11, <scratch space>:140:1> col:1 FLECS__EEcsMebiBytes 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3da8 <flecs.h:11989:11, col:38> col:38 EcsGibiBytes 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3e20 <col:11, <scratch space>:141:1> col:1 FLECS__EEcsGibiBytes 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3f10 <flecs.h:12000:11, col:30> col:30 EcsDataRate 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c3f88 <col:11, <scratch space>:142:1> col:1 FLECS__EEcsDataRate 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5300 <flecs.h:12001:11, col:34> col:34 EcsBitsPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5378 <col:11, <scratch space>:143:1> col:1 FLECS__EEcsBitsPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5408 <flecs.h:12002:11, col:34> col:34 EcsKiloBitsPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5480 <col:11, <scratch space>:144:1> col:1 FLECS__EEcsKiloBitsPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5510 <flecs.h:12003:11, col:34> col:34 EcsMegaBitsPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5588 <col:11, <scratch space>:145:1> col:1 FLECS__EEcsMegaBitsPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5618 <flecs.h:12004:11, col:34> col:34 EcsGigaBitsPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5690 <col:11, <scratch space>:146:1> col:1 FLECS__EEcsGigaBitsPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5720 <flecs.h:12005:11, col:34> col:34 EcsBytesPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5798 <col:11, <scratch space>:147:1> col:1 FLECS__EEcsBytesPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5828 <flecs.h:12006:11, col:34> col:34 EcsKiloBytesPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c58a0 <col:11, <scratch space>:148:1> col:1 FLECS__EEcsKiloBytesPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5930 <flecs.h:12007:11, col:34> col:34 EcsMegaBytesPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c59a8 <col:11, <scratch space>:149:1> col:1 FLECS__EEcsMegaBytesPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5a38 <flecs.h:12008:11, col:34> col:34 EcsGigaBytesPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5ab0 <col:11, <scratch space>:150:1> col:1 FLECS__EEcsGigaBytesPerSecond 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5ba0 <flecs.h:12019:11, col:30> col:30 EcsAngle 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5c18 <col:11, <scratch space>:151:1> col:1 FLECS__EEcsAngle 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5ca8 <flecs.h:12020:11, col:34> col:34 EcsRadians 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5d20 <col:11, <scratch space>:152:1> col:1 FLECS__EEcsRadians 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5db0 <flecs.h:12021:11, col:34> col:34 EcsDegrees 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5e28 <col:11, <scratch space>:153:1> col:1 FLECS__EEcsDegrees 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5f10 <flecs.h:12032:11, col:30> col:30 EcsFrequency 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c5f88 <col:11, <scratch space>:154:1> col:1 FLECS__EEcsFrequency 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c6018 <flecs.h:12033:11, col:34> col:34 EcsHertz 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c6090 <col:11, <scratch space>:155:1> col:1 FLECS__EEcsHertz 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c6120 <flecs.h:12034:11, col:34> col:34 EcsKiloHertz 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c6198 <col:11, <scratch space>:156:1> col:1 FLECS__EEcsKiloHertz 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c6228 <flecs.h:12035:11, col:34> col:34 EcsMegaHertz 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c62a0 <col:11, <scratch space>:157:1> col:1 FLECS__EEcsMegaHertz 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c6330 <flecs.h:12036:11, col:34> col:34 EcsGigaHertz 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c63a8 <col:11, <scratch space>:158:1> col:1 FLECS__EEcsGigaHertz 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c6490 <flecs.h:12047:11, col:30> col:30 EcsUri 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c6508 <col:11, <scratch space>:159:1> col:1 FLECS__EEcsUri 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c6598 <flecs.h:12048:11, col:34> col:34 EcsUriHyperlink 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c6610 <col:11, <scratch space>:160:1> col:1 FLECS__EEcsUriHyperlink 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c66a0 <flecs.h:12049:11, col:34> col:34 EcsUriImage 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c6718 <col:11, <scratch space>:161:1> col:1 FLECS__EEcsUriImage 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c67a8 <flecs.h:12050:11, col:34> col:34 EcsUriFile 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c6820 <col:11, <scratch space>:162:1> col:1 FLECS__EEcsUriFile 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c68e0 <flecs.h:12054:11, col:30> col:30 EcsAcceleration 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c6958 <col:11, <scratch space>:163:1> col:1 FLECS__EEcsAcceleration 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c69e8 <flecs.h:12055:11, col:30> col:30 EcsPercentage 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c6a60 <col:11, <scratch space>:164:1> col:1 FLECS__EEcsPercentage 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c6af0 <flecs.h:12056:11, col:30> col:30 EcsBel 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c6b68 <col:11, <scratch space>:165:1> col:1 FLECS__EEcsBel 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c6bf8 <flecs.h:12057:11, col:30> col:30 EcsDeciBel 'ecs_entity_t':'unsigned long' extern
|-VarDecl 0x5604680c6c70 <col:11, <scratch space>:166:1> col:1 FLECS__EEcsDeciBel 'ecs_entity_t':'unsigned long' extern
|-FunctionDecl 0x5604680c6dc0 <flecs.h:12064:1, line:12065:23> line:12064:6 FlecsUnitsImport 'void (ecs_world_t *)'
| |-ParmVarDecl 0x5604680c6d30 <line:12065:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x56046818b6e0 <line:12059:4, line:12061:80>
| `-ParagraphComment 0x56046818b6b0 <line:12059:4, line:12061:80>
| |-TextComment 0x56046818b630 <line:12059:4, col:80> Text="/////////////////////////////////////////////////////////////////////////////"
| |-TextComment 0x56046818b650 <line:12060:4, col:11> Text="/ Module"
| `-TextComment 0x56046818b670 <line:12061:4, col:80> Text="/////////////////////////////////////////////////////////////////////////////"
|-TypedefDecl 0x5604680c6f10 </usr/lib/clang/14.0.6/include/stddef.h:35:1, col:26> col:26 ptrdiff_t 'long'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x5604680c6f80 <line:74:1, col:24> col:24 wchar_t 'int'
| `-BuiltinType 0x560467ec18b0 'int'
|-RecordDecl 0x5604680c6fd8 </usr/lib/clang/14.0.6/include/__stddef_max_align_t.h:19:9, line:24:1> line:19:9 struct definition
| |-FieldDecl 0x5604680c70d0 <line:20:3, col:13> col:13 __clang_max_align_nonce1 'long long'
| | `-AlignedAttr 0x5604680c7140 <line:21:22, col:56> aligned
| | `-ConstantExpr 0x5604680c7120 <col:34, col:55> 'unsigned long'
| | |-value: Int 8
| | `-UnaryExprOrTypeTraitExpr 0x5604680c7098 <col:34, col:55> 'unsigned long' __alignof 'long long'
| `-FieldDecl 0x5604680c71f0 <line:22:3, col:15> col:15 __clang_max_align_nonce2 'long double'
| `-AlignedAttr 0x5604680c7260 <line:23:22, col:58> aligned
| `-ConstantExpr 0x5604680c7240 <col:34, col:57> 'unsigned long'
| |-value: Int 16
| `-UnaryExprOrTypeTraitExpr 0x5604680c71b8 <col:34, col:57> 'unsigned long' __alignof 'long double'
|-TypedefDecl 0x5604680cacf0 <line:19:1, line:24:3> col:3 max_align_t 'struct max_align_t':'max_align_t'
| `-ElaboratedType 0x5604680c72c0 'struct max_align_t' sugar
| `-RecordType 0x5604680c7060 'max_align_t'
| `-Record 0x5604680c6fd8 ''
|-TypedefDecl 0x5604680cada0 <flecs.h:12168:1, col:14> col:14 ecs_bool_t 'bool'
| |-BuiltinType 0x560467ec1830 'bool'
| `-FullComment 0x56046818b870 <line:12161:4, line:12166:65>
| |-ParagraphComment 0x56046818b7d0 <line:12161:4, line:12163:40>
| | |-TextComment 0x56046818b750 <line:12161:4, col:31> Text=" Primitive type definitions."
| | |-TextComment 0x56046818b770 <line:12162:3, col:80> Text=" These typedefs allow the builtin primitives to be used as regular components:"
| | `-TextComment 0x56046818b790 <line:12163:3, col:40> Text=" ecs_set(world, e, ecs_i32_t, {10});"
| `-ParagraphComment 0x56046818b840 <line:12165:3, line:12166:65>
| |-TextComment 0x56046818b7f0 <line:12165:3, col:74> Text=" Or a more useful example (create an enum constant with a manual value):"
| `-TextComment 0x56046818b810 <line:12166:3, col:65> Text=" ecs_set_pair_object(world, e, EcsConstant, ecs_i32_t, {10});"
|-TypedefDecl 0x5604680cae08 <line:12169:1, col:14> col:14 ecs_char_t 'char'
| `-BuiltinType 0x560467ec1850 'char'
|-TypedefDecl 0x5604680cae78 <line:12170:1, col:23> col:23 ecs_byte_t 'unsigned char'
| `-BuiltinType 0x560467ec1910 'unsigned char'
|-TypedefDecl 0x5604680caee0 <line:12171:1, col:17> col:17 ecs_u8_t 'uint8_t':'unsigned char'
| `-TypedefType 0x560467f8cbe0 'uint8_t' sugar
| |-Typedef 0x560467f87d48 'uint8_t'
| `-TypedefType 0x560467f7e5d0 '__uint8_t' sugar
| |-Typedef 0x560467f78dd8 '__uint8_t'
| `-BuiltinType 0x560467ec1910 'unsigned char'
|-TypedefDecl 0x5604680caf48 <line:12172:1, col:18> col:18 ecs_u16_t 'uint16_t':'unsigned short'
| `-TypedefType 0x560467f8cc70 'uint16_t' sugar
| |-Typedef 0x560467f87db0 'uint16_t'
| `-TypedefType 0x560467f7e6f0 '__uint16_t' sugar
| |-Typedef 0x560467f78eb8 '__uint16_t'
| `-BuiltinType 0x560467ec1930 'unsigned short'
|-TypedefDecl 0x5604680cafb0 <line:12173:1, col:18> col:18 ecs_u32_t 'uint32_t':'unsigned int'
| `-TypedefType 0x560467f8cd00 'uint32_t' sugar
| |-Typedef 0x560467f87e18 'uint32_t'
| `-TypedefType 0x560467f7e810 '__uint32_t' sugar
| |-Typedef 0x560467f78f98 '__uint32_t'
| `-BuiltinType 0x560467ec1950 'unsigned int'
|-TypedefDecl 0x5604680cb018 <line:12174:1, col:18> col:18 ecs_u64_t 'uint64_t':'unsigned long'
| `-TypedefType 0x560467f8cd90 'uint64_t' sugar
| |-Typedef 0x560467f87e80 'uint64_t'
| `-TypedefType 0x560467f7e930 '__uint64_t' sugar
| |-Typedef 0x560467f7e4e0 '__uint64_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x5604680cb080 <line:12175:1, col:19> col:19 ecs_uptr_t 'uintptr_t':'unsigned long'
| `-TypedefType 0x560467fd50e0 'uintptr_t' sugar
| |-Typedef 0x560467f8ca30 'uintptr_t'
| `-BuiltinType 0x560467ec1970 'unsigned long'
|-TypedefDecl 0x5604680cb110 <line:12176:1, col:16> col:16 ecs_i8_t 'int8_t':'signed char'
| `-TypedefType 0x5604680cb0e0 'int8_t' sugar
| |-Typedef 0x560467f87ba8 'int8_t'
| `-TypedefType 0x560467f7e540 '__int8_t' sugar
| |-Typedef 0x560467f78d68 '__int8_t'
| `-BuiltinType 0x560467ec1870 'signed char'
|-TypedefDecl 0x5604680cb178 <line:12177:1, col:17> col:17 ecs_i16_t 'int16_t':'short'
| `-TypedefType 0x560467fa79a0 'int16_t' sugar
| |-Typedef 0x560467f87c10 'int16_t'
| `-TypedefType 0x560467f7e660 '__int16_t' sugar
| |-Typedef 0x560467f78e48 '__int16_t'
| `-BuiltinType 0x560467ec1890 'short'
|-TypedefDecl 0x5604680cb1e0 <line:12178:1, col:17> col:17 ecs_i32_t 'int32_t':'int'
| `-TypedefType 0x560467f8ce20 'int32_t' sugar
| |-Typedef 0x560467f87c78 'int32_t'
| `-TypedefType 0x560467f7e780 '__int32_t' sugar
| |-Typedef 0x560467f78f28 '__int32_t'
| `-BuiltinType 0x560467ec18b0 'int'
|-TypedefDecl 0x5604680cb248 <line:12179:1, col:17> col:17 ecs_i64_t 'int64_t':'long'
| `-TypedefType 0x560467fca6e0 'int64_t' sugar
| |-Typedef 0x560467f87ce0 'int64_t'
| `-TypedefType 0x560467f7e8a0 '__int64_t' sugar
| |-Typedef 0x560467f7e470 '__int64_t'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x5604680cb2d0 <line:12180:1, col:18> col:18 ecs_iptr_t 'intptr_t':'long'
| `-TypedefType 0x5604680cb2a0 'intptr_t' sugar
| |-Typedef 0x560467f8c9c0 'intptr_t'
| `-BuiltinType 0x560467ec18d0 'long'
|-TypedefDecl 0x5604680cb340 <line:12181:1, col:15> col:15 ecs_f32_t 'float'
| `-BuiltinType 0x560467ec19b0 'float'
|-TypedefDecl 0x5604680cb3b0 <line:12182:1, col:16> col:16 ecs_f64_t 'double'
| `-BuiltinType 0x560467ec19d0 'double'
|-TypedefDecl 0x5604680cb420 <line:12183:1, col:15> col:15 ecs_string_t 'char *'
| `-PointerType 0x560467ec23a0 'char *'
| `-BuiltinType 0x560467ec1850 'char'
|-VarDecl 0x5604680cb4b8 <line:12186:11, <scratch space>:174:1> col:1 FLECS__EEcsMetaType 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cb530 <flecs.h:12187:11, <scratch space>:175:1> col:1 FLECS__EEcsMetaTypeSerialized 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cb5a8 <flecs.h:12188:11, <scratch space>:176:1> col:1 FLECS__EEcsPrimitive 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cb620 <flecs.h:12189:11, <scratch space>:177:1> col:1 FLECS__EEcsEnum 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cb698 <flecs.h:12190:11, <scratch space>:178:1> col:1 FLECS__EEcsBitmask 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cb710 <flecs.h:12191:11, <scratch space>:179:1> col:1 FLECS__EEcsMember 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cb788 <flecs.h:12192:11, <scratch space>:180:1> col:1 FLECS__EEcsStruct 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cb800 <flecs.h:12193:11, <scratch space>:181:1> col:1 FLECS__EEcsArray 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cb878 <flecs.h:12194:11, <scratch space>:182:1> col:1 FLECS__EEcsVector 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cb8f0 <flecs.h:12195:11, <scratch space>:183:1> col:1 FLECS__EEcsUnit 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cb968 <flecs.h:12196:11, <scratch space>:184:1> col:1 FLECS__EEcsUnitPrefix 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cb9e0 <flecs.h:12197:11, col:37> col:37 EcsConstant 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cba58 <line:12198:11, col:37> col:37 EcsQuantity 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cbaf8 <line:12201:11, <scratch space>:185:1> col:1 FLECS__Eecs_bool_t 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cbb70 <flecs.h:12202:11, <scratch space>:186:1> col:1 FLECS__Eecs_char_t 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cbbe8 <flecs.h:12203:11, <scratch space>:187:1> col:1 FLECS__Eecs_byte_t 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cbc60 <flecs.h:12204:11, <scratch space>:188:1> col:1 FLECS__Eecs_u8_t 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cbcd8 <flecs.h:12205:11, <scratch space>:189:1> col:1 FLECS__Eecs_u16_t 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cbd50 <flecs.h:12206:11, <scratch space>:190:1> col:1 FLECS__Eecs_u32_t 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cbdc8 <flecs.h:12207:11, <scratch space>:191:1> col:1 FLECS__Eecs_u64_t 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cbe40 <flecs.h:12208:11, <scratch space>:192:1> col:1 FLECS__Eecs_uptr_t 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cbeb8 <flecs.h:12209:11, <scratch space>:193:1> col:1 FLECS__Eecs_i8_t 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cbf30 <flecs.h:12210:11, <scratch space>:194:1> col:1 FLECS__Eecs_i16_t 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cbfa8 <flecs.h:12211:11, <scratch space>:195:1> col:1 FLECS__Eecs_i32_t 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cc020 <flecs.h:12212:11, <scratch space>:196:1> col:1 FLECS__Eecs_i64_t 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cc098 <flecs.h:12213:11, <scratch space>:197:1> col:1 FLECS__Eecs_iptr_t 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cc110 <flecs.h:12214:11, <scratch space>:198:1> col:1 FLECS__Eecs_f32_t 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cc188 <flecs.h:12215:11, <scratch space>:199:1> col:1 FLECS__Eecs_f64_t 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cc200 <flecs.h:12216:11, <scratch space>:200:1> col:1 FLECS__Eecs_string_t 'const ecs_entity_t':'const unsigned long' extern
|-VarDecl 0x5604680cc278 <flecs.h:12217:11, <scratch space>:201:1> col:1 FLECS__Eecs_entity_t 'const ecs_entity_t':'const unsigned long' extern
|-EnumDecl 0x5604680cc308 <flecs.h:12220:9, line:12228:1> line:12220:14 ecs_type_kind_t
| |-FullComment 0x56046818b940 <line:12219:4, col:51>
| | `-ParagraphComment 0x56046818b910 <col:4, col:51>
| | `-TextComment 0x56046818b8e0 <col:4, col:51> Text=" Type kinds supported by reflection type system "
| |-EnumConstantDecl 0x5604680cc3d0 <line:12221:5> col:5 EcsPrimitiveType 'int'
| |-EnumConstantDecl 0x5604680cc420 <line:12222:5> col:5 EcsBitmaskType 'int'
| |-EnumConstantDecl 0x5604680cc470 <line:12223:5> col:5 EcsEnumType 'int'
| |-EnumConstantDecl 0x5604680cc4c0 <line:12224:5> col:5 EcsStructType 'int'
| |-EnumConstantDecl 0x5604680cc510 <line:12225:5> col:5 EcsArrayType 'int'
| |-EnumConstantDecl 0x5604680cc560 <line:12226:5> col:5 referenced EcsVectorType 'int'
| `-EnumConstantDecl 0x5604680cc5f0 <line:12227:5, col:23> col:5 EcsTypeKindLast 'int'
| `-ConstantExpr 0x5604680cc5d0 <col:23> 'int'
| |-value: Int 5
| `-DeclRefExpr 0x5604680cc5b0 <col:23> 'int' EnumConstant 0x5604680cc560 'EcsVectorType' 'int'
|-TypedefDecl 0x5604680cc698 <line:12220:1, line:12228:3> col:3 referenced ecs_type_kind_t 'enum ecs_type_kind_t':'enum ecs_type_kind_t'
| |-ElaboratedType 0x5604680cc640 'enum ecs_type_kind_t' sugar
| | `-EnumType 0x5604680cc3b0 'enum ecs_type_kind_t'
| | `-Enum 0x5604680cc308 'ecs_type_kind_t'
| `-FullComment 0x56046818ba10 <line:12219:4, col:51>
| `-ParagraphComment 0x56046818b9e0 <col:4, col:51>
| `-TextComment 0x56046818b9b0 <col:4, col:51> Text=" Type kinds supported by reflection type system "
|-RecordDecl 0x5604680cc730 <line:12231:9, line:12237:1> line:12231:16 struct EcsMetaType definition
| |-FullComment 0x56046818bae0 <line:12230:4, col:77>
| | `-ParagraphComment 0x56046818bab0 <col:4, col:77>
| | `-TextComment 0x56046818ba80 <col:4, col:77> Text=" Component that is automatically added to every type with the right kind. "
| |-FieldDecl 0x5604680cc800 <line:12232:5, col:21> col:21 kind 'ecs_type_kind_t':'enum ecs_type_kind_t'
| |-FieldDecl 0x5604680cc860 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:12233:10> col:10 existing 'bool'
| |-FieldDecl 0x5604680cc8c0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:12234:10> col:10 partial 'bool'
| |-FieldDecl 0x5604680cc920 <line:12235:5, col:16> col:16 size 'ecs_size_t':'int'
| `-FieldDecl 0x5604680cc980 <line:12236:5, col:16> col:16 alignment 'ecs_size_t':'int'
|-TypedefDecl 0x5604680cca28 <line:12231:1, line:12237:3> col:3 EcsMetaType 'struct EcsMetaType':'struct EcsMetaType'
| |-ElaboratedType 0x5604680cc9d0 'struct EcsMetaType' sugar
| | `-RecordType 0x5604680cc7b0 'struct EcsMetaType'
| | `-Record 0x5604680cc730 'EcsMetaType'
| `-FullComment 0x56046818bbb0 <line:12230:4, col:77>
| `-ParagraphComment 0x56046818bb80 <col:4, col:77>
| `-TextComment 0x56046818bb50 <col:4, col:77> Text=" Component that is automatically added to every type with the right kind. "
|-EnumDecl 0x5604680cca98 <line:12239:9, line:12258:1> line:12239:14 ecs_primitive_kind_t
| |-EnumConstantDecl 0x5604680ccba0 <line:12240:5, col:15> col:5 EcsBool 'int'
| | `-ConstantExpr 0x5604680ccb80 <col:15> 'int'
| | |-value: Int 1
| | `-IntegerLiteral 0x5604680ccb60 <col:15> 'int' 1
| |-EnumConstantDecl 0x5604680ccbf0 <line:12241:5> col:5 EcsChar 'int'
| |-EnumConstantDecl 0x5604680ccc40 <line:12242:5> col:5 EcsByte 'int'
| |-EnumConstantDecl 0x5604680cdcf0 <line:12243:5> col:5 EcsU8 'int'
| |-EnumConstantDecl 0x5604680cdd40 <line:12244:5> col:5 EcsU16 'int'
| |-EnumConstantDecl 0x5604680cdd90 <line:12245:5> col:5 EcsU32 'int'
| |-EnumConstantDecl 0x5604680cdde0 <line:12246:5> col:5 EcsU64 'int'
| |-EnumConstantDecl 0x5604680cde30 <line:12247:5> col:5 EcsI8 'int'
| |-EnumConstantDecl 0x5604680cde80 <line:12248:5> col:5 EcsI16 'int'
| |-EnumConstantDecl 0x5604680cded0 <line:12249:5> col:5 EcsI32 'int'
| |-EnumConstantDecl 0x5604680cdf20 <line:12250:5> col:5 EcsI64 'int'
| |-EnumConstantDecl 0x5604680cdf70 <line:12251:5> col:5 EcsF32 'int'
| |-EnumConstantDecl 0x5604680cdfc0 <line:12252:5> col:5 EcsF64 'int'
| |-EnumConstantDecl 0x5604680ce010 <line:12253:5> col:5 EcsUPtr 'int'
| |-EnumConstantDecl 0x5604680ce060 <line:12254:5> col:5 EcsIPtr 'int'
| |-EnumConstantDecl 0x5604680ce0b0 <line:12255:5> col:5 EcsString 'int'
| |-EnumConstantDecl 0x5604680ce100 <line:12256:5> col:5 referenced EcsEntity 'int'
| `-EnumConstantDecl 0x5604680ce190 <line:12257:5, col:28> col:5 EcsPrimitiveKindLast 'int'
| `-ConstantExpr 0x5604680ce170 <col:28> 'int'
| |-value: Int 17
| `-DeclRefExpr 0x5604680ce150 <col:28> 'int' EnumConstant 0x5604680ce100 'EcsEntity' 'int'
|-TypedefDecl 0x5604680ce238 <line:12239:1, line:12258:3> col:3 referenced ecs_primitive_kind_t 'enum ecs_primitive_kind_t':'enum ecs_primitive_kind_t'
| `-ElaboratedType 0x5604680ce1e0 'enum ecs_primitive_kind_t' sugar
| `-EnumType 0x5604680ccb40 'enum ecs_primitive_kind_t'
| `-Enum 0x5604680cca98 'ecs_primitive_kind_t'
|-RecordDecl 0x5604680ce2a8 <line:12260:9, line:12262:1> line:12260:16 struct EcsPrimitive definition
| `-FieldDecl 0x5604680ce380 <line:12261:5, col:26> col:26 kind 'ecs_primitive_kind_t':'enum ecs_primitive_kind_t'
|-TypedefDecl 0x5604680ce428 <line:12260:1, line:12262:3> col:3 EcsPrimitive 'struct EcsPrimitive':'struct EcsPrimitive'
| `-ElaboratedType 0x5604680ce3d0 'struct EcsPrimitive' sugar
| `-RecordType 0x5604680ce330 'struct EcsPrimitive'
| `-Record 0x5604680ce2a8 'EcsPrimitive'
|-RecordDecl 0x5604680ce498 <line:12264:9, line:12269:1> line:12264:16 struct EcsMember definition
| |-FieldDecl 0x5604680ce550 <line:12265:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x5604680ce5b0 <line:12266:5, col:13> col:13 count 'int32_t':'int'
| |-FieldDecl 0x5604680ce610 <line:12267:5, col:18> col:18 unit 'ecs_entity_t':'unsigned long'
| `-FieldDecl 0x5604680ce670 <line:12268:5, col:13> col:13 offset 'int32_t':'int'
|-TypedefDecl 0x5604680ce718 <line:12264:1, line:12269:3> col:3 EcsMember 'struct EcsMember':'struct EcsMember'
| `-ElaboratedType 0x5604680ce6c0 'struct EcsMember' sugar
| `-RecordType 0x5604680ce520 'struct EcsMember'
| `-Record 0x5604680ce498 'EcsMember'
|-RecordDecl 0x5604680ce788 <line:12272:9, line:12288:1> line:12272:16 struct ecs_member_t definition
| |-FieldDecl 0x5604680ce848 <line:12274:5, col:17> col:17 name 'const char *'
| |-FieldDecl 0x5604680ce8a8 <line:12275:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x5604680ce908 <line:12278:5, col:13> col:13 count 'int32_t':'int'
| |-FieldDecl 0x5604680ce968 <line:12279:5, col:13> col:13 offset 'int32_t':'int'
| |-FieldDecl 0x5604680ce9c8 <line:12283:5, col:18> col:18 unit 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x5604680cea28 <line:12286:5, col:16> col:16 size 'ecs_size_t':'int'
| `-FieldDecl 0x5604680cea88 <line:12287:5, col:18> col:18 member 'ecs_entity_t':'unsigned long'
|-TypedefDecl 0x5604680ceb38 <line:12272:1, line:12288:3> col:3 referenced ecs_member_t 'struct ecs_member_t':'struct ecs_member_t'
| `-ElaboratedType 0x5604680ceae0 'struct ecs_member_t' sugar
| `-RecordType 0x5604680ce810 'struct ecs_member_t'
| `-Record 0x5604680ce788 'ecs_member_t'
|-RecordDecl 0x5604680ceba8 <line:12290:9, line:12293:1> line:12290:16 struct EcsStruct definition
| `-FieldDecl 0x5604680cec60 <line:12292:5, col:19> col:19 members 'ecs_vector_t *'
|-TypedefDecl 0x5604680ced08 <line:12290:1, line:12293:3> col:3 EcsStruct 'struct EcsStruct':'struct EcsStruct'
| `-ElaboratedType 0x5604680cecb0 'struct EcsStruct' sugar
| `-RecordType 0x5604680cec30 'struct EcsStruct'
| `-Record 0x5604680ceba8 'EcsStruct'
|-RecordDecl 0x5604680ced78 <line:12295:9, line:12304:1> line:12295:16 struct ecs_enum_constant_t definition
| |-FieldDecl 0x5604680cee38 <line:12297:5, col:17> col:17 name 'const char *'
| |-FieldDecl 0x5604680cee98 <line:12300:5, col:13> col:13 value 'int32_t':'int'
| `-FieldDecl 0x5604680ceef8 <line:12303:5, col:18> col:18 constant 'ecs_entity_t':'unsigned long'
|-TypedefDecl 0x5604680cefa8 <line:12295:1, line:12304:3> col:3 referenced ecs_enum_constant_t 'struct ecs_enum_constant_t':'struct ecs_enum_constant_t'
| `-ElaboratedType 0x5604680cef50 'struct ecs_enum_constant_t' sugar
| `-RecordType 0x5604680cee00 'struct ecs_enum_constant_t'
| `-Record 0x5604680ced78 'ecs_enum_constant_t'
|-RecordDecl 0x5604680cf018 <line:12306:9, line:12309:1> line:12306:16 struct EcsEnum definition
| `-FieldDecl 0x5604680cf0d0 <line:12308:5, col:16> col:16 constants 'ecs_map_t *'
|-TypedefDecl 0x5604680cf178 <line:12306:1, line:12309:3> col:3 EcsEnum 'struct EcsEnum':'struct EcsEnum'
| `-ElaboratedType 0x5604680cf120 'struct EcsEnum' sugar
| `-RecordType 0x5604680cf0a0 'struct EcsEnum'
| `-Record 0x5604680cf018 'EcsEnum'
|-RecordDecl 0x5604680cf1e8 <line:12311:9, line:12320:1> line:12311:16 struct ecs_bitmask_constant_t definition
| |-FieldDecl 0x5604680cf2a8 <line:12313:5, col:17> col:17 name 'const char *'
| |-FieldDecl 0x5604680cf308 <line:12316:5, col:19> col:19 value 'ecs_flags32_t':'unsigned int'
| `-FieldDecl 0x5604680cf368 <line:12319:5, col:18> col:18 constant 'ecs_entity_t':'unsigned long'
|-TypedefDecl 0x5604680cf418 <line:12311:1, line:12320:3> col:3 referenced ecs_bitmask_constant_t 'struct ecs_bitmask_constant_t':'struct ecs_bitmask_constant_t'
| `-ElaboratedType 0x5604680cf3c0 'struct ecs_bitmask_constant_t' sugar
| `-RecordType 0x5604680cf270 'struct ecs_bitmask_constant_t'
| `-Record 0x5604680cf1e8 'ecs_bitmask_constant_t'
|-RecordDecl 0x5604680cf488 <line:12322:9, line:12325:1> line:12322:16 struct EcsBitmask definition
| `-FieldDecl 0x5604680cf540 <line:12324:5, col:16> col:16 constants 'ecs_map_t *'
|-TypedefDecl 0x5604680cf5e8 <line:12322:1, line:12325:3> col:3 EcsBitmask 'struct EcsBitmask':'struct EcsBitmask'
| `-ElaboratedType 0x5604680cf590 'struct EcsBitmask' sugar
| `-RecordType 0x5604680cf510 'struct EcsBitmask'
| `-Record 0x5604680cf488 'EcsBitmask'
|-RecordDecl 0x5604680cf658 <line:12327:9, line:12330:1> line:12327:16 struct EcsArray definition
| |-FieldDecl 0x5604680cf710 <line:12328:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| `-FieldDecl 0x5604680cf770 <line:12329:5, col:13> col:13 count 'int32_t':'int'
|-TypedefDecl 0x5604680cf818 <line:12327:1, line:12330:3> col:3 EcsArray 'struct EcsArray':'struct EcsArray'
| `-ElaboratedType 0x5604680cf7c0 'struct EcsArray' sugar
| `-RecordType 0x5604680cf6e0 'struct EcsArray'
| `-Record 0x5604680cf658 'EcsArray'
|-RecordDecl 0x5604680cf888 <line:12332:9, line:12334:1> line:12332:16 struct EcsVector definition
| `-FieldDecl 0x5604680cf940 <line:12333:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
|-TypedefDecl 0x5604680cf9e8 <line:12332:1, line:12334:3> col:3 EcsVector 'struct EcsVector':'struct EcsVector'
| `-ElaboratedType 0x5604680cf990 'struct EcsVector' sugar
| `-RecordType 0x5604680cf910 'struct EcsVector'
| `-Record 0x5604680cf888 'EcsVector'
|-RecordDecl 0x5604680cfa80 <line:12346:9, line:12349:1> line:12346:16 struct ecs_unit_translation_t definition
| |-FieldDecl 0x5604680cfb30 <line:12347:5, col:13> col:13 factor 'int32_t':'int'
| `-FieldDecl 0x5604680cfb90 <line:12348:5, col:13> col:13 power 'int32_t':'int'
|-TypedefDecl 0x5604680cfc38 <line:12346:1, line:12349:3> col:3 referenced ecs_unit_translation_t 'struct ecs_unit_translation_t':'struct ecs_unit_translation_t'
| `-ElaboratedType 0x5604680cfbe0 'struct ecs_unit_translation_t' sugar
| `-RecordType 0x5604680cfb00 'struct ecs_unit_translation_t'
| `-Record 0x5604680cfa80 'ecs_unit_translation_t'
|-RecordDecl 0x5604680d0d10 <line:12351:9, line:12357:1> line:12351:16 struct EcsUnit definition
| |-FieldDecl 0x5604680d0dc8 <line:12352:5, col:11> col:11 symbol 'char *'
| |-FieldDecl 0x5604680d0e28 <line:12353:5, col:18> col:18 prefix 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x5604680d0e88 <line:12354:5, col:18> col:18 base 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x5604680d0ee8 <line:12355:5, col:18> col:18 over 'ecs_entity_t':'unsigned long'
| `-FieldDecl 0x5604680d0f70 <line:12356:5, col:28> col:28 translation 'ecs_unit_translation_t':'struct ecs_unit_translation_t'
|-TypedefDecl 0x5604680d1018 <line:12351:1, line:12357:3> col:3 EcsUnit 'struct EcsUnit':'struct EcsUnit'
| `-ElaboratedType 0x5604680d0fc0 'struct EcsUnit' sugar
| `-RecordType 0x5604680d0d90 'struct EcsUnit'
| `-Record 0x5604680d0d10 'EcsUnit'
|-RecordDecl 0x5604680d1088 <line:12359:9, line:12362:1> line:12359:16 struct EcsUnitPrefix definition
| |-FieldDecl 0x5604680d1148 <line:12360:5, col:11> col:11 symbol 'char *'
| `-FieldDecl 0x5604680d11a8 <line:12361:5, col:28> col:28 translation 'ecs_unit_translation_t':'struct ecs_unit_translation_t'
|-TypedefDecl 0x5604680d1258 <line:12359:1, line:12362:3> col:3 EcsUnitPrefix 'struct EcsUnitPrefix':'struct EcsUnitPrefix'
| `-ElaboratedType 0x5604680d1200 'struct EcsUnitPrefix' sugar
| `-RecordType 0x5604680d1110 'struct EcsUnitPrefix'
| `-Record 0x5604680d1088 'EcsUnitPrefix'
|-EnumDecl 0x5604680d12f0 <line:12367:9, line:12398:1> line:12367:14 ecs_meta_type_op_kind_t
| |-FullComment 0x56046818bc80 <line:12365:4, col:25>
| | `-ParagraphComment 0x56046818bc50 <col:4, col:25>
| | `-TextComment 0x56046818bc20 <col:4, col:25> Text=" Serializer utilities "
| |-EnumConstantDecl 0x5604680d13b0 <line:12368:5> col:5 EcsOpArray 'int'
| |-EnumConstantDecl 0x5604680d1400 <line:12369:5> col:5 EcsOpVector 'int'
| |-EnumConstantDecl 0x5604680d1450 <line:12370:5> col:5 EcsOpPush 'int'
| |-EnumConstantDecl 0x5604680d14a0 <line:12371:5> col:5 EcsOpPop 'int'
| |-EnumConstantDecl 0x5604680d14f0 <line:12373:5> col:5 EcsOpScope 'int'
| |-EnumConstantDecl 0x5604680d1540 <line:12375:5> col:5 EcsOpEnum 'int'
| |-EnumConstantDecl 0x5604680d1590 <line:12376:5> col:5 EcsOpBitmask 'int'
| |-EnumConstantDecl 0x5604680d15e0 <line:12378:5> col:5 EcsOpPrimitive 'int'
| |-EnumConstantDecl 0x5604680d1630 <line:12380:5> col:5 EcsOpBool 'int'
| |-EnumConstantDecl 0x5604680d1680 <line:12381:5> col:5 EcsOpChar 'int'
| |-EnumConstantDecl 0x5604680d16d0 <line:12382:5> col:5 EcsOpByte 'int'
| |-EnumConstantDecl 0x5604680d1720 <line:12383:5> col:5 EcsOpU8 'int'
| |-EnumConstantDecl 0x5604680d1770 <line:12384:5> col:5 EcsOpU16 'int'
| |-EnumConstantDecl 0x5604680d17c0 <line:12385:5> col:5 EcsOpU32 'int'
| |-EnumConstantDecl 0x5604680d1810 <line:12386:5> col:5 EcsOpU64 'int'
| |-EnumConstantDecl 0x5604680d1860 <line:12387:5> col:5 EcsOpI8 'int'
| |-EnumConstantDecl 0x5604680d18b0 <line:12388:5> col:5 EcsOpI16 'int'
| |-EnumConstantDecl 0x5604680d1900 <line:12389:5> col:5 EcsOpI32 'int'
| |-EnumConstantDecl 0x5604680d1950 <line:12390:5> col:5 EcsOpI64 'int'
| |-EnumConstantDecl 0x5604680d19a0 <line:12391:5> col:5 EcsOpF32 'int'
| |-EnumConstantDecl 0x5604680d19f0 <line:12392:5> col:5 EcsOpF64 'int'
| |-EnumConstantDecl 0x5604680d1a40 <line:12393:5> col:5 EcsOpUPtr 'int'
| |-EnumConstantDecl 0x5604680d1a90 <line:12394:5> col:5 EcsOpIPtr 'int'
| |-EnumConstantDecl 0x5604680d1ae0 <line:12395:5> col:5 EcsOpString 'int'
| |-EnumConstantDecl 0x5604680d1b30 <line:12396:5> col:5 referenced EcsOpEntity 'int'
| `-EnumConstantDecl 0x5604680d1bc0 <line:12397:5, col:29> col:5 EcsMetaTypeOpKindLast 'int'
| `-ConstantExpr 0x5604680d1ba0 <col:29> 'int'
| |-value: Int 24
| `-DeclRefExpr 0x5604680d1b80 <col:29> 'int' EnumConstant 0x5604680d1b30 'EcsOpEntity' 'int'
|-TypedefDecl 0x5604680d1c68 <line:12367:1, line:12398:3> col:3 referenced ecs_meta_type_op_kind_t 'enum ecs_meta_type_op_kind_t':'enum ecs_meta_type_op_kind_t'
| |-ElaboratedType 0x5604680d1c10 'enum ecs_meta_type_op_kind_t' sugar
| | `-EnumType 0x5604680d1390 'enum ecs_meta_type_op_kind_t'
| | `-Enum 0x5604680d12f0 'ecs_meta_type_op_kind_t'
| `-FullComment 0x56046818bd50 <line:12365:4, col:25>
| `-ParagraphComment 0x56046818bd20 <col:4, col:25>
| `-TextComment 0x56046818bcf0 <col:4, col:25> Text=" Serializer utilities "
|-RecordDecl 0x5604680d1cd8 <line:12400:9, line:12410:1> line:12400:16 struct ecs_meta_type_op_t definition
| |-FieldDecl 0x5604680d1db0 <line:12401:5, col:29> col:29 kind 'ecs_meta_type_op_kind_t':'enum ecs_meta_type_op_kind_t'
| |-FieldDecl 0x5604680d1e10 <line:12402:5, col:16> col:16 offset 'ecs_size_t':'int'
| |-FieldDecl 0x5604680d1e70 <line:12403:5, col:13> col:13 count 'int32_t':'int'
| |-FieldDecl 0x5604680d1ed8 <line:12404:5, col:17> col:17 name 'const char *'
| |-FieldDecl 0x5604680d1f38 <line:12405:5, col:13> col:13 op_count 'int32_t':'int'
| |-FieldDecl 0x5604680d1f98 <line:12406:5, col:16> col:16 size 'ecs_size_t':'int'
| |-FieldDecl 0x5604680d1ff8 <line:12407:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x5604680d2058 <line:12408:5, col:18> col:18 unit 'ecs_entity_t':'unsigned long'
| `-FieldDecl 0x5604680d20b8 <line:12409:5, col:20> col:20 members 'ecs_hashmap_t *'
|-TypedefDecl 0x5604680d2168 <line:12400:1, line:12410:3> col:3 referenced ecs_meta_type_op_t 'struct ecs_meta_type_op_t':'struct ecs_meta_type_op_t'
| `-ElaboratedType 0x5604680d2110 'struct ecs_meta_type_op_t' sugar
| `-RecordType 0x5604680d1d60 'struct ecs_meta_type_op_t'
| `-Record 0x5604680d1cd8 'ecs_meta_type_op_t'
|-RecordDecl 0x5604680d21d8 <line:12412:9, line:12414:1> line:12412:16 struct EcsMetaTypeSerialized definition
| `-FieldDecl 0x5604680d2290 <line:12413:5, col:19> col:19 ops 'ecs_vector_t *'
|-TypedefDecl 0x5604680d2338 <line:12412:1, line:12414:3> col:3 EcsMetaTypeSerialized 'struct EcsMetaTypeSerialized':'struct EcsMetaTypeSerialized'
| `-ElaboratedType 0x5604680d22e0 'struct EcsMetaTypeSerialized' sugar
| `-RecordType 0x5604680d2260 'struct EcsMetaTypeSerialized'
| `-Record 0x5604680d21d8 'EcsMetaTypeSerialized'
|-RecordDecl 0x5604680d23d0 <line:12421:9, line:12434:1> line:12421:16 struct ecs_meta_scope_t definition
| |-FieldDecl 0x5604680d2480 <line:12422:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x5604680d2558 <line:12423:5, col:25> col:25 ops 'ecs_meta_type_op_t *'
| |-FieldDecl 0x5604680d25b8 <line:12424:5, col:13> col:13 op_count 'int32_t':'int'
| |-FieldDecl 0x5604680d2618 <line:12425:5, col:13> col:13 op_cur 'int32_t':'int'
| |-FieldDecl 0x5604680d2678 <line:12426:5, col:13> col:13 elem_cur 'int32_t':'int'
| |-FieldDecl 0x5604680d26d8 <line:12427:5, col:13> col:13 prev_depth 'int32_t':'int'
| |-FieldDecl 0x5604680d2740 <line:12428:5, col:11> col:11 ptr 'void *'
| |-FieldDecl 0x5604680d2818 <line:12430:5, col:25> col:25 comp 'const EcsComponent *'
| |-FieldDecl 0x5604680d2880 <line:12431:5, col:20> col:20 vector 'ecs_vector_t **'
| |-FieldDecl 0x5604680d28e0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:12432:10> col:10 is_collection 'bool'
| `-FieldDecl 0x5604680d2940 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:12433:10> col:10 is_inline_array 'bool'
|-TypedefDecl 0x5604680d29e8 <line:12421:1, line:12434:3> col:3 referenced ecs_meta_scope_t 'struct ecs_meta_scope_t':'struct ecs_meta_scope_t'
| `-ElaboratedType 0x5604680d2990 'struct ecs_meta_scope_t' sugar
| `-RecordType 0x5604680d2450 'struct ecs_meta_scope_t'
| `-Record 0x5604680d23d0 'ecs_meta_scope_t'
|-RecordDecl 0x5604680d2a80 <line:12437:9, line:12447:1> line:12437:16 struct ecs_meta_cursor_t definition
| |-FullComment 0x56046818be20 <line:12436:4, col:73>
| | `-ParagraphComment 0x56046818bdf0 <col:4, col:73>
| | `-TextComment 0x56046818bdc0 <col:4, col:73> Text=" Type that enables iterating/populating a value using reflection data "
| |-FieldDecl 0x5604680d2b30 <line:12438:5, col:24> col:24 world 'const ecs_world_t *'
| |-FieldDecl 0x5604680d2df8 <line:12439:5, col:52> col:22 scope 'ecs_meta_scope_t[32]'
| |-FieldDecl 0x5604680d2e58 <line:12440:5, col:13> col:13 depth 'int32_t':'int'
| |-FieldDecl 0x5604680d2eb8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:12441:10> col:10 valid 'bool'
| |-FieldDecl 0x5604680d2f18 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:12442:10> col:10 is_primitive_scope 'bool'
| |-FieldDecl 0x5604680d3230 <line:12445:5, col:73> col:20 lookup_action 'ecs_entity_t (*)(const ecs_world_t *, const char *, void *)'
| `-FieldDecl 0x5604680d3298 <line:12446:5, col:11> col:11 lookup_ctx 'void *'
|-TypedefDecl 0x5604680d3348 <line:12437:1, line:12447:3> col:3 referenced ecs_meta_cursor_t 'struct ecs_meta_cursor_t':'struct ecs_meta_cursor_t'
| |-ElaboratedType 0x5604680d32f0 'struct ecs_meta_cursor_t' sugar
| | `-RecordType 0x5604680d2b00 'struct ecs_meta_cursor_t'
| | `-Record 0x5604680d2a80 'ecs_meta_cursor_t'
| `-FullComment 0x56046818bef0 <line:12436:4, col:73>
| `-ParagraphComment 0x56046818bec0 <col:4, col:73>
| `-TextComment 0x56046818be90 <col:4, col:73> Text=" Type that enables iterating/populating a value using reflection data "
|-FunctionDecl 0x5604680d3608 <line:12450:1, line:12453:14> line:12450:19 ecs_meta_cursor 'ecs_meta_cursor_t (const ecs_world_t *, ecs_entity_t, void *)'
| |-ParmVarDecl 0x5604680d33f0 <line:12451:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680d3468 <line:12452:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| `-ParmVarDecl 0x5604680d34e8 <line:12453:5, col:11> col:11 ptr 'void *'
|-FunctionDecl 0x5604680d3850 <line:12457:1, line:12458:30> line:12457:7 ecs_meta_get_ptr 'void *(ecs_meta_cursor_t *)'
| |-ParmVarDecl 0x5604680d3758 <line:12458:5, col:24> col:24 cursor 'ecs_meta_cursor_t *'
| `-FullComment 0x56046818bfc0 <line:12455:4, col:33>
| `-ParagraphComment 0x56046818bf90 <col:4, col:33>
| `-TextComment 0x56046818bf60 <col:4, col:33> Text=" Get pointer to current field "
|-FunctionDecl 0x5604680d3a30 <line:12462:1, line:12463:30> line:12462:5 ecs_meta_next 'int (ecs_meta_cursor_t *)'
| |-ParmVarDecl 0x5604680d3938 <line:12463:5, col:24> col:24 cursor 'ecs_meta_cursor_t *'
| `-FullComment 0x56046818c090 <line:12460:4, col:30>
| `-ParagraphComment 0x56046818c060 <col:4, col:30>
| `-TextComment 0x56046818c030 <col:4, col:30> Text=" Move cursor to next field "
|-FunctionDecl 0x5604680d3cb0 <line:12467:1, line:12469:17> line:12467:5 ecs_meta_elem 'int (ecs_meta_cursor_t *, int32_t)'
| |-ParmVarDecl 0x5604680d3b18 <line:12468:5, col:24> col:24 cursor 'ecs_meta_cursor_t *'
| |-ParmVarDecl 0x5604680d3b90 <line:12469:5, col:13> col:13 elem 'int32_t':'int'
| `-FullComment 0x56046818c160 <line:12465:4, col:29>
| `-ParagraphComment 0x56046818c130 <col:4, col:29>
| `-TextComment 0x56046818c100 <col:4, col:29> Text=" Move cursor to a element "
|-FunctionDecl 0x5604680d3f30 <line:12473:1, line:12475:21> line:12473:5 ecs_meta_member 'int (ecs_meta_cursor_t *, const char *)'
| |-ParmVarDecl 0x5604680d3d98 <line:12474:5, col:24> col:24 cursor 'ecs_meta_cursor_t *'
| |-ParmVarDecl 0x5604680d3e18 <line:12475:5, col:17> col:17 name 'const char *'
| `-FullComment 0x56046818c230 <line:12471:4, col:26>
| `-ParagraphComment 0x56046818c200 <col:4, col:26>
| `-TextComment 0x56046818c1d0 <col:4, col:26> Text=" Move cursor to member "
|-FunctionDecl 0x5604680d4138 <line:12479:1, line:12481:21> line:12479:5 ecs_meta_dotmember 'int (ecs_meta_cursor_t *, const char *)'
| |-ParmVarDecl 0x5604680d4018 <line:12480:5, col:24> col:24 cursor 'ecs_meta_cursor_t *'
| |-ParmVarDecl 0x5604680d4098 <line:12481:5, col:17> col:17 name 'const char *'
| `-FullComment 0x56046818c300 <line:12477:4, col:65>
| `-ParagraphComment 0x56046818c2d0 <col:4, col:65>
| `-TextComment 0x56046818c2a0 <col:4, col:65> Text=" Move cursor to member, supports dot-separated nested members "
|-FunctionDecl 0x5604680d42c0 <line:12485:1, line:12486:30> line:12485:5 ecs_meta_push 'int (ecs_meta_cursor_t *)'
| |-ParmVarDecl 0x5604680d4228 <line:12486:5, col:24> col:24 cursor 'ecs_meta_cursor_t *'
| `-FullComment 0x56046818c420 <line:12483:4, col:65>
| `-ParagraphComment 0x56046818c3f0 <col:4, col:65>
| |-TextComment 0x56046818c370 <col:4, col:50> Text=" Push a scope (required/only valid for structs "
| |-TextComment 0x56046818c390 <col:51> Text="&"
| `-TextComment 0x56046818c3b0 <col:52, col:65> Text=" collections) "
|-FunctionDecl 0x5604680d4440 <line:12490:1, line:12491:30> line:12490:5 ecs_meta_pop 'int (ecs_meta_cursor_t *)'
| |-ParmVarDecl 0x5604680d43a8 <line:12491:5, col:24> col:24 cursor 'ecs_meta_cursor_t *'
| `-FullComment 0x56046818c530 <line:12488:4, col:58>
| `-ParagraphComment 0x56046818c500 <col:4, col:58>
| `-TextComment 0x56046818c4d0 <col:4, col:58> Text=" Pop a struct or collection scope (must follow a push) "
|-FunctionDecl 0x5604680d4678 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:12496:36> line:12495:6 ecs_meta_is_collection 'bool (const ecs_meta_cursor_t *)'
| |-ParmVarDecl 0x5604680d4588 <line:12496:5, col:30> col:30 cursor 'const ecs_meta_cursor_t *'
| `-FullComment 0x56046818c600 <line:12493:4, col:39>
| `-ParagraphComment 0x56046818c5d0 <col:4, col:39>
| `-TextComment 0x56046818c5a0 <col:4, col:39> Text=" Is the current scope a collection? "
|-FunctionDecl 0x5604680d4848 <line:12500:1, line:12501:36> line:12500:14 ecs_meta_get_type 'ecs_entity_t (const ecs_meta_cursor_t *)'
| |-ParmVarDecl 0x5604680d4758 <line:12501:5, col:30> col:30 cursor 'const ecs_meta_cursor_t *'
| `-FullComment 0x56046818c6d0 <line:12498:4, col:33>
| `-ParagraphComment 0x56046818c6a0 <col:4, col:33>
| `-TextComment 0x56046818c670 <col:4, col:33> Text=" Get type of current element. "
|-FunctionDecl 0x5604680d49b8 <line:12505:1, line:12506:36> line:12505:14 ecs_meta_get_unit 'ecs_entity_t (const ecs_meta_cursor_t *)'
| |-ParmVarDecl 0x5604680d4928 <line:12506:5, col:30> col:30 cursor 'const ecs_meta_cursor_t *'
| `-FullComment 0x56046818c7a0 <line:12503:4, col:33>
| `-ParagraphComment 0x56046818c770 <col:4, col:33>
| `-TextComment 0x56046818c740 <col:4, col:33> Text=" Get unit of current element. "
|-FunctionDecl 0x5604680d4b90 <line:12510:1, line:12511:36> line:12510:13 ecs_meta_get_member 'const char *(const ecs_meta_cursor_t *)'
| |-ParmVarDecl 0x5604680d4a98 <line:12511:5, col:30> col:30 cursor 'const ecs_meta_cursor_t *'
| `-FullComment 0x56046818c870 <line:12508:4, col:38>
| `-ParagraphComment 0x56046818c840 <col:4, col:38>
| `-TextComment 0x56046818c810 <col:4, col:38> Text=" Get member name of current member "
|-FunctionDecl 0x5604680d51a0 <line:12519:1, line:12521:15> line:12519:5 ecs_meta_set_bool 'int (ecs_meta_cursor_t *, bool)'
| |-ParmVarDecl 0x5604680d4ca8 <line:12520:5, col:24> col:24 cursor 'ecs_meta_cursor_t *'
| |-ParmVarDecl 0x5604680d4d20 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:12521:10> col:10 value 'bool'
| `-FullComment 0x56046818c940 <line:12517:4, col:33>
| `-ParagraphComment 0x56046818c910 <col:4, col:33>
| `-TextComment 0x56046818c8e0 <col:4, col:33> Text=" Set field with boolean value "
|-FunctionDecl 0x5604680d5420 <line:12525:1, line:12527:15> line:12525:5 ecs_meta_set_char 'int (ecs_meta_cursor_t *, char)'
| |-ParmVarDecl 0x5604680d5288 <line:12526:5, col:24> col:24 cursor 'ecs_meta_cursor_t *'
| |-ParmVarDecl 0x5604680d5300 <line:12527:5, col:10> col:10 value 'char'
| `-FullComment 0x56046818ca10 <line:12523:4, col:30>
| `-ParagraphComment 0x56046818c9e0 <col:4, col:30>
| `-TextComment 0x56046818c9b0 <col:4, col:30> Text=" Set field with char value "
|-FunctionDecl 0x5604680d56a0 <line:12531:1, line:12533:18> line:12531:5 ecs_meta_set_int 'int (ecs_meta_cursor_t *, int64_t)'
| |-ParmVarDecl 0x5604680d5508 <line:12532:5, col:24> col:24 cursor 'ecs_meta_cursor_t *'
| |-ParmVarDecl 0x5604680d5580 <line:12533:5, col:13> col:13 value 'int64_t':'long'
| `-FullComment 0x56046818cae0 <line:12529:4, col:29>
| `-ParagraphComment 0x56046818cab0 <col:4, col:29>
| `-TextComment 0x56046818ca80 <col:4, col:29> Text=" Set field with int value "
|-FunctionDecl 0x5604680d5920 <line:12537:1, line:12539:19> line:12537:5 ecs_meta_set_uint 'int (ecs_meta_cursor_t *, uint64_t)'
| |-ParmVarDecl 0x5604680d5788 <line:12538:5, col:24> col:24 cursor 'ecs_meta_cursor_t *'
| |-ParmVarDecl 0x5604680d5800 <line:12539:5, col:14> col:14 value 'uint64_t':'unsigned long'
| `-FullComment 0x56046818cbb0 <line:12535:4, col:30>
| `-ParagraphComment 0x56046818cb80 <col:4, col:30>
| `-TextComment 0x56046818cb50 <col:4, col:30> Text=" Set field with uint value "
|-FunctionDecl 0x5604680d5ba0 <line:12543:1, line:12545:17> line:12543:5 ecs_meta_set_float 'int (ecs_meta_cursor_t *, double)'
| |-ParmVarDecl 0x5604680d5a08 <line:12544:5, col:24> col:24 cursor 'ecs_meta_cursor_t *'
| |-ParmVarDecl 0x5604680d5a88 <line:12545:5, col:12> col:12 value 'double'
| `-FullComment 0x56046818cc80 <line:12541:4, col:31>
| `-ParagraphComment 0x56046818cc50 <col:4, col:31>
| `-TextComment 0x56046818cc20 <col:4, col:31> Text=" Set field with float value "
|-FunctionDecl 0x5604680d5da8 <line:12549:1, line:12551:22> line:12549:5 ecs_meta_set_string 'int (ecs_meta_cursor_t *, const char *)'
| |-ParmVarDecl 0x5604680d5c88 <line:12550:5, col:24> col:24 cursor 'ecs_meta_cursor_t *'
| |-ParmVarDecl 0x5604680d5d08 <line:12551:5, col:17> col:17 value 'const char *'
| `-FullComment 0x56046818cd50 <line:12547:4, col:32>
| `-ParagraphComment 0x56046818cd20 <col:4, col:32>
| `-TextComment 0x56046818ccf0 <col:4, col:32> Text=" Set field with string value "
|-FunctionDecl 0x5604680d5fb8 <line:12555:1, line:12557:22> line:12555:5 ecs_meta_set_string_literal 'int (ecs_meta_cursor_t *, const char *)'
| |-ParmVarDecl 0x5604680d5e98 <line:12556:5, col:24> col:24 cursor 'ecs_meta_cursor_t *'
| |-ParmVarDecl 0x5604680d5f18 <line:12557:5, col:17> col:17 value 'const char *'
| `-FullComment 0x56046818ce20 <line:12553:4, col:59>
| `-ParagraphComment 0x56046818cdf0 <col:4, col:59>
| `-TextComment 0x56046818cdc0 <col:4, col:59> Text=" Set field with string literal value (has enclosing "") "
|-FunctionDecl 0x5604680d6200 <line:12561:1, line:12563:23> line:12561:5 ecs_meta_set_entity 'int (ecs_meta_cursor_t *, ecs_entity_t)'
| |-ParmVarDecl 0x5604680d60a8 <line:12562:5, col:24> col:24 cursor 'ecs_meta_cursor_t *'
| |-ParmVarDecl 0x5604680d6120 <line:12563:5, col:18> col:18 value 'ecs_entity_t':'unsigned long'
| `-FullComment 0x56046818cef0 <line:12559:4, col:32>
| `-ParagraphComment 0x56046818cec0 <col:4, col:32>
| `-TextComment 0x56046818ce90 <col:4, col:32> Text=" Set field with entity value "
|-FunctionDecl 0x5604680d6380 <line:12567:1, line:12568:30> line:12567:5 ecs_meta_set_null 'int (ecs_meta_cursor_t *)'
| |-ParmVarDecl 0x5604680d62e8 <line:12568:5, col:24> col:24 cursor 'ecs_meta_cursor_t *'
| `-FullComment 0x56046818cfc0 <line:12565:4, col:30>
| `-ParagraphComment 0x56046818cf90 <col:4, col:30>
| `-TextComment 0x56046818cf60 <col:4, col:30> Text=" Set field with null value "
|-FunctionDecl 0x5604680d6670 <line:12572:1, line:12574:29> line:12572:5 ecs_meta_set_value 'int (ecs_meta_cursor_t *, const ecs_value_t *)'
| |-ParmVarDecl 0x5604680d6468 <line:12573:5, col:24> col:24 cursor 'ecs_meta_cursor_t *'
| |-ParmVarDecl 0x5604680d6558 <line:12574:5, col:24> col:24 value 'const ecs_value_t *'
| `-FullComment 0x56046818d090 <line:12570:4, col:33>
| `-ParagraphComment 0x56046818d060 <col:4, col:33>
| `-TextComment 0x56046818d030 <col:4, col:33> Text=" Set field with dynamic value "
|-FunctionDecl 0x5604680d6818 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:12581:36> line:12580:6 ecs_meta_get_bool 'bool (const ecs_meta_cursor_t *)'
| |-ParmVarDecl 0x5604680d6788 <line:12581:5, col:30> col:30 cursor 'const ecs_meta_cursor_t *'
| `-FullComment 0x56046818d160 <line:12578:4, col:32>
| `-ParagraphComment 0x56046818d130 <col:4, col:32>
| `-TextComment 0x56046818d100 <col:4, col:32> Text=" Get field value as boolean. "
|-FunctionDecl 0x5604680d69e8 <line:12585:1, line:12586:36> line:12585:6 ecs_meta_get_char 'char (const ecs_meta_cursor_t *)'
| |-ParmVarDecl 0x5604680d68f8 <line:12586:5, col:30> col:30 cursor 'const ecs_meta_cursor_t *'
| `-FullComment 0x56046818d230 <line:12583:4, col:29>
| `-ParagraphComment 0x56046818d200 <col:4, col:29>
| `-TextComment 0x56046818d1d0 <col:4, col:29> Text=" Get field value as char. "
|-FunctionDecl 0x5604680d6bb8 <line:12590:1, line:12591:36> line:12590:9 ecs_meta_get_int 'int64_t (const ecs_meta_cursor_t *)'
| |-ParmVarDecl 0x5604680d6ac8 <line:12591:5, col:30> col:30 cursor 'const ecs_meta_cursor_t *'
| `-FullComment 0x56046818d300 <line:12588:4, col:39>
| `-ParagraphComment 0x56046818d2d0 <col:4, col:39>
| `-TextComment 0x56046818d2a0 <col:4, col:39> Text=" Get field value as signed integer. "
|-FunctionDecl 0x5604680d6d58 <line:12595:1, line:12596:36> line:12595:10 ecs_meta_get_uint 'uint64_t (const ecs_meta_cursor_t *)'
| |-ParmVarDecl 0x5604680d6c98 <line:12596:5, col:30> col:30 cursor 'const ecs_meta_cursor_t *'
| `-FullComment 0x56046818d3d0 <line:12593:4, col:41>
| `-ParagraphComment 0x56046818d3a0 <col:4, col:41>
| `-TextComment 0x56046818d370 <col:4, col:41> Text=" Get field value as unsigned integer. "
|-FunctionDecl 0x5604680d6f30 <line:12600:1, line:12601:36> line:12600:8 ecs_meta_get_float 'double (const ecs_meta_cursor_t *)'
| |-ParmVarDecl 0x5604680d6e38 <line:12601:5, col:30> col:30 cursor 'const ecs_meta_cursor_t *'
| `-FullComment 0x56046818d4a0 <line:12598:4, col:30>
| `-ParagraphComment 0x56046818d470 <col:4, col:30>
| `-TextComment 0x56046818d440 <col:4, col:30> Text=" Get field value as float. "
|-FunctionDecl 0x5604680d8510 <line:12608:1, line:12609:36> line:12608:13 ecs_meta_get_string 'const char *(const ecs_meta_cursor_t *)'
| |-ParmVarDecl 0x5604680d7018 <line:12609:5, col:30> col:30 cursor 'const ecs_meta_cursor_t *'
| `-FullComment 0x56046818d5c0 <line:12603:4, line:12605:28>
| `-ParagraphComment 0x56046818d590 <line:12603:4, line:12605:28>
| |-TextComment 0x56046818d510 <line:12603:4, col:31> Text=" Get field value as string. "
| |-TextComment 0x56046818d530 <line:12604:3, col:77> Text=" This operation does not perform conversions. If the field is not a string,"
| `-TextComment 0x56046818d550 <line:12605:3, col:28> Text=" this operation will fail."
|-FunctionDecl 0x5604680d8688 <line:12614:1, line:12615:36> line:12614:14 ecs_meta_get_entity 'ecs_entity_t (const ecs_meta_cursor_t *)'
| |-ParmVarDecl 0x5604680d85f8 <line:12615:5, col:30> col:30 cursor 'const ecs_meta_cursor_t *'
| `-FullComment 0x56046818d6b0 <line:12611:4, line:12612:48>
| `-ParagraphComment 0x56046818d680 <line:12611:4, line:12612:48>
| |-TextComment 0x56046818d630 <line:12611:4, col:31> Text=" Get field value as entity. "
| `-TextComment 0x56046818d650 <line:12612:3, col:48> Text=" This operation does not perform conversions. "
|-RecordDecl 0x5604680d8788 <line:12620:9, line:12624:1> line:12620:16 struct ecs_primitive_desc_t definition
| |-FullComment 0x56046818d780 <line:12619:4, col:34>
| | `-ParagraphComment 0x56046818d750 <col:4, col:34>
| | `-TextComment 0x56046818d720 <col:4, col:34> Text=" Used with ecs_primitive_init. "
| |-FieldDecl 0x5604680d8840 <line:12622:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FieldDecl 0x5604680d88a0 <line:12623:5, col:26> col:26 kind 'ecs_primitive_kind_t':'enum ecs_primitive_kind_t'
|-TypedefDecl 0x5604680d8948 <line:12620:1, line:12624:3> col:3 referenced ecs_primitive_desc_t 'struct ecs_primitive_desc_t':'struct ecs_primitive_desc_t'
| |-ElaboratedType 0x5604680d88f0 'struct ecs_primitive_desc_t' sugar
| | `-RecordType 0x5604680d8810 'struct ecs_primitive_desc_t'
| | `-Record 0x5604680d8788 'ecs_primitive_desc_t'
| `-FullComment 0x56046818d850 <line:12619:4, col:34>
| `-ParagraphComment 0x56046818d820 <col:4, col:34>
| `-TextComment 0x56046818d7f0 <col:4, col:34> Text=" Used with ecs_primitive_init. "
|-FunctionDecl 0x5604680d8bf8 <line:12628:1, line:12630:37> line:12628:14 ecs_primitive_init 'ecs_entity_t (ecs_world_t *, const ecs_primitive_desc_t *)'
| |-ParmVarDecl 0x5604680d89f0 <line:12629:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680d8ae8 <line:12630:5, col:33> col:33 desc 'const ecs_primitive_desc_t *'
| `-FullComment 0x56046818d920 <line:12626:4, col:32>
| `-ParagraphComment 0x56046818d8f0 <col:4, col:32>
| `-TextComment 0x56046818d8c0 <col:4, col:32> Text=" Create a new primitive type "
|-RecordDecl 0x5604680d8cd8 <line:12633:9, line:12637:1> line:12633:16 struct ecs_enum_desc_t definition
| |-FullComment 0x56046818d9f0 <line:12632:4, col:29>
| | `-ParagraphComment 0x56046818d9c0 <col:4, col:29>
| | `-TextComment 0x56046818d990 <col:4, col:29> Text=" Used with ecs_enum_init. "
| |-FieldDecl 0x5604680d8d90 <line:12635:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FieldDecl 0x5604680d8f68 <line:12636:5, col:61> col:25 constants 'ecs_enum_constant_t[32]'
|-TypedefDecl 0x5604680d9018 <line:12633:1, line:12637:3> col:3 referenced ecs_enum_desc_t 'struct ecs_enum_desc_t':'struct ecs_enum_desc_t'
| |-ElaboratedType 0x5604680d8fc0 'struct ecs_enum_desc_t' sugar
| | `-RecordType 0x5604680d8d60 'struct ecs_enum_desc_t'
| | `-Record 0x5604680d8cd8 'ecs_enum_desc_t'
| `-FullComment 0x56046818dac0 <line:12632:4, col:29>
| `-ParagraphComment 0x56046818da90 <col:4, col:29>
| `-TextComment 0x56046818da60 <col:4, col:29> Text=" Used with ecs_enum_init. "
|-FunctionDecl 0x5604680d92c8 <line:12641:1, line:12643:32> line:12641:14 ecs_enum_init 'ecs_entity_t (ecs_world_t *, const ecs_enum_desc_t *)'
| |-ParmVarDecl 0x5604680d90c0 <line:12642:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680d91b8 <line:12643:5, col:28> col:28 desc 'const ecs_enum_desc_t *'
| `-FullComment 0x56046818db90 <line:12639:4, col:27>
| `-ParagraphComment 0x56046818db60 <col:4, col:27>
| `-TextComment 0x56046818db30 <col:4, col:27> Text=" Create a new enum type "
|-RecordDecl 0x5604680d93a8 <line:12647:9, line:12651:1> line:12647:16 struct ecs_bitmask_desc_t definition
| |-FullComment 0x56046818dc60 <line:12646:4, col:32>
| | `-ParagraphComment 0x56046818dc30 <col:4, col:32>
| | `-TextComment 0x56046818dc00 <col:4, col:32> Text=" Used with ecs_bitmask_init. "
| |-FieldDecl 0x5604680d9460 <line:12649:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FieldDecl 0x5604680d9638 <line:12650:5, col:64> col:28 constants 'ecs_bitmask_constant_t[32]'
|-TypedefDecl 0x5604680d96e8 <line:12647:1, line:12651:3> col:3 referenced ecs_bitmask_desc_t 'struct ecs_bitmask_desc_t':'struct ecs_bitmask_desc_t'
| |-ElaboratedType 0x5604680d9690 'struct ecs_bitmask_desc_t' sugar
| | `-RecordType 0x5604680d9430 'struct ecs_bitmask_desc_t'
| | `-Record 0x5604680d93a8 'ecs_bitmask_desc_t'
| `-FullComment 0x56046818dd30 <line:12646:4, col:32>
| `-ParagraphComment 0x56046818dd00 <col:4, col:32>
| `-TextComment 0x56046818dcd0 <col:4, col:32> Text=" Used with ecs_bitmask_init. "
|-FunctionDecl 0x5604680d9998 <line:12655:1, line:12657:35> line:12655:14 ecs_bitmask_init 'ecs_entity_t (ecs_world_t *, const ecs_bitmask_desc_t *)'
| |-ParmVarDecl 0x5604680d9790 <line:12656:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680d9888 <line:12657:5, col:31> col:31 desc 'const ecs_bitmask_desc_t *'
| `-FullComment 0x56046818de00 <line:12653:4, col:30>
| `-ParagraphComment 0x56046818ddd0 <col:4, col:30>
| `-TextComment 0x56046818dda0 <col:4, col:30> Text=" Create a new bitmask type "
|-RecordDecl 0x5604680d9a78 <line:12661:9, line:12666:1> line:12661:16 struct ecs_array_desc_t definition
| |-FullComment 0x56046818ded0 <line:12660:4, col:30>
| | `-ParagraphComment 0x56046818dea0 <col:4, col:30>
| | `-TextComment 0x56046818de70 <col:4, col:30> Text=" Used with ecs_array_init. "
| |-FieldDecl 0x5604680d9b30 <line:12663:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x5604680d9b90 <line:12664:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| `-FieldDecl 0x5604680d9bf0 <line:12665:5, col:13> col:13 count 'int32_t':'int'
|-TypedefDecl 0x5604680d9c98 <line:12661:1, line:12666:3> col:3 referenced ecs_array_desc_t 'struct ecs_array_desc_t':'struct ecs_array_desc_t'
| |-ElaboratedType 0x5604680d9c40 'struct ecs_array_desc_t' sugar
| | `-RecordType 0x5604680d9b00 'struct ecs_array_desc_t'
| | `-Record 0x5604680d9a78 'ecs_array_desc_t'
| `-FullComment 0x56046818dfa0 <line:12660:4, col:30>
| `-ParagraphComment 0x56046818df70 <col:4, col:30>
| `-TextComment 0x56046818df40 <col:4, col:30> Text=" Used with ecs_array_init. "
|-FunctionDecl 0x5604680d9f48 <line:12670:1, line:12672:33> line:12670:14 ecs_array_init 'ecs_entity_t (ecs_world_t *, const ecs_array_desc_t *)'
| |-ParmVarDecl 0x5604680d9d40 <line:12671:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680d9e38 <line:12672:5, col:29> col:29 desc 'const ecs_array_desc_t *'
| `-FullComment 0x56046818e070 <line:12668:4, col:28>
| `-ParagraphComment 0x56046818e040 <col:4, col:28>
| `-TextComment 0x56046818e010 <col:4, col:28> Text=" Create a new array type "
|-RecordDecl 0x5604680da028 <line:12676:9, line:12680:1> line:12676:16 struct ecs_vector_desc_t definition
| |-FullComment 0x56046818e140 <line:12675:4, col:31>
| | `-ParagraphComment 0x56046818e110 <col:4, col:31>
| | `-TextComment 0x56046818e0e0 <col:4, col:31> Text=" Used with ecs_vector_init. "
| |-FieldDecl 0x5604680da0e0 <line:12678:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FieldDecl 0x5604680da140 <line:12679:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
|-TypedefDecl 0x5604680da1e8 <line:12676:1, line:12680:3> col:3 referenced ecs_vector_desc_t 'struct ecs_vector_desc_t':'struct ecs_vector_desc_t'
| |-ElaboratedType 0x5604680da190 'struct ecs_vector_desc_t' sugar
| | `-RecordType 0x5604680da0b0 'struct ecs_vector_desc_t'
| | `-Record 0x5604680da028 'ecs_vector_desc_t'
| `-FullComment 0x56046818e210 <line:12675:4, col:31>
| `-ParagraphComment 0x56046818e1e0 <col:4, col:31>
| `-TextComment 0x56046818e1b0 <col:4, col:31> Text=" Used with ecs_vector_init. "
|-FunctionDecl 0x5604680da820 <line:12684:1, line:12686:34> line:12684:14 ecs_vector_init 'ecs_entity_t (ecs_world_t *, const ecs_vector_desc_t *)'
| |-ParmVarDecl 0x5604680da290 <line:12685:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680da388 <line:12686:5, col:30> col:30 desc 'const ecs_vector_desc_t *'
| `-FullComment 0x56046818e2e0 <line:12682:4, col:29>
| `-ParagraphComment 0x56046818e2b0 <col:4, col:29>
| `-TextComment 0x56046818e280 <col:4, col:29> Text=" Create a new vector type "
|-RecordDecl 0x5604680da8f8 <line:12690:9, line:12694:1> line:12690:16 struct ecs_struct_desc_t definition
| |-FullComment 0x56046818e3b0 <line:12689:4, col:31>
| | `-ParagraphComment 0x56046818e380 <col:4, col:31>
| | `-TextComment 0x56046818e350 <col:4, col:31> Text=" Used with ecs_struct_init. "
| |-FieldDecl 0x5604680da9b0 <line:12692:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| `-FieldDecl 0x5604680daba8 <line:12693:5, col:52> col:18 members 'ecs_member_t[32]'
|-TypedefDecl 0x5604680dac58 <line:12690:1, line:12694:3> col:3 referenced ecs_struct_desc_t 'struct ecs_struct_desc_t':'struct ecs_struct_desc_t'
| |-ElaboratedType 0x5604680dac00 'struct ecs_struct_desc_t' sugar
| | `-RecordType 0x5604680da980 'struct ecs_struct_desc_t'
| | `-Record 0x5604680da8f8 'ecs_struct_desc_t'
| `-FullComment 0x56046818e4a0 <line:12689:4, col:31>
| `-ParagraphComment 0x56046818e450 <col:4, col:31>
| `-TextComment 0x56046818e420 <col:4, col:31> Text=" Used with ecs_struct_init. "
|-FunctionDecl 0x5604680daf08 <line:12698:1, line:12700:34> line:12698:14 ecs_struct_init 'ecs_entity_t (ecs_world_t *, const ecs_struct_desc_t *)'
| |-ParmVarDecl 0x5604680dad00 <line:12699:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680dadf8 <line:12700:5, col:30> col:30 desc 'const ecs_struct_desc_t *'
| `-FullComment 0x56046818e570 <line:12696:4, col:29>
| `-ParagraphComment 0x56046818e540 <col:4, col:29>
| `-TextComment 0x56046818e510 <col:4, col:29> Text=" Create a new struct type "
|-RecordDecl 0x5604680dafe8 <line:12703:9, line:12729:1> line:12703:16 struct ecs_unit_desc_t definition
| |-FullComment 0x56046818e640 <line:12702:4, col:29>
| | `-ParagraphComment 0x56046818e610 <col:4, col:29>
| | `-TextComment 0x56046818e5e0 <col:4, col:29> Text=" Used with ecs_unit_init. "
| |-FieldDecl 0x5604680db0a0 <line:12705:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x5604680db108 <line:12708:5, col:17> col:17 symbol 'const char *'
| |-FieldDecl 0x5604680db168 <line:12711:5, col:18> col:18 quantity 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x5604680db1c8 <line:12714:5, col:18> col:18 base 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x5604680db228 <line:12717:5, col:18> col:18 over 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x5604680db288 <line:12720:5, col:28> col:28 translation 'ecs_unit_translation_t':'struct ecs_unit_translation_t'
| `-FieldDecl 0x5604680db2e8 <line:12728:5, col:18> col:18 prefix 'ecs_entity_t':'unsigned long'
|-TypedefDecl 0x5604680db398 <line:12703:1, line:12729:3> col:3 referenced ecs_unit_desc_t 'struct ecs_unit_desc_t':'struct ecs_unit_desc_t'
| |-ElaboratedType 0x5604680db340 'struct ecs_unit_desc_t' sugar
| | `-RecordType 0x5604680db070 'struct ecs_unit_desc_t'
| | `-Record 0x5604680dafe8 'ecs_unit_desc_t'
| `-FullComment 0x56046818e710 <line:12702:4, col:29>
| `-ParagraphComment 0x56046818e6e0 <col:4, col:29>
| `-TextComment 0x56046818e6b0 <col:4, col:29> Text=" Used with ecs_unit_init. "
|-FunctionDecl 0x5604680db648 <line:12733:1, line:12735:32> line:12733:14 ecs_unit_init 'ecs_entity_t (ecs_world_t *, const ecs_unit_desc_t *)'
| |-ParmVarDecl 0x5604680db440 <line:12734:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680db538 <line:12735:5, col:28> col:28 desc 'const ecs_unit_desc_t *'
| `-FullComment 0x56046818e7e0 <line:12731:4, col:22>
| `-ParagraphComment 0x56046818e7b0 <col:4, col:22>
| `-TextComment 0x56046818e780 <col:4, col:22> Text=" Create a new unit "
|-RecordDecl 0x5604680db728 <line:12738:9, line:12747:1> line:12738:16 struct ecs_unit_prefix_desc_t definition
| |-FullComment 0x56046818e8b0 <line:12737:4, col:36>
| | `-ParagraphComment 0x56046818e880 <col:4, col:36>
| | `-TextComment 0x56046818e850 <col:4, col:36> Text=" Used with ecs_unit_prefix_init. "
| |-FieldDecl 0x5604680db7e0 <line:12740:5, col:18> col:18 entity 'ecs_entity_t':'unsigned long'
| |-FieldDecl 0x5604680db848 <line:12743:5, col:17> col:17 symbol 'const char *'
| `-FieldDecl 0x5604680db8a8 <line:12746:5, col:28> col:28 translation 'ecs_unit_translation_t':'struct ecs_unit_translation_t'
|-TypedefDecl 0x5604680db958 <line:12738:1, line:12747:3> col:3 referenced ecs_unit_prefix_desc_t 'struct ecs_unit_prefix_desc_t':'struct ecs_unit_prefix_desc_t'
| |-ElaboratedType 0x5604680db900 'struct ecs_unit_prefix_desc_t' sugar
| | `-RecordType 0x5604680db7b0 'struct ecs_unit_prefix_desc_t'
| | `-Record 0x5604680db728 'ecs_unit_prefix_desc_t'
| `-FullComment 0x56046818e980 <line:12737:4, col:36>
| `-ParagraphComment 0x56046818e950 <col:4, col:36>
| `-TextComment 0x56046818e920 <col:4, col:36> Text=" Used with ecs_unit_prefix_init. "
|-FunctionDecl 0x5604680dbc08 <line:12751:1, line:12753:39> line:12751:14 ecs_unit_prefix_init 'ecs_entity_t (ecs_world_t *, const ecs_unit_prefix_desc_t *)'
| |-ParmVarDecl 0x5604680dba00 <line:12752:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680dbaf8 <line:12753:5, col:35> col:35 desc 'const ecs_unit_prefix_desc_t *'
| `-FullComment 0x56046818ea50 <line:12749:4, col:29>
| `-ParagraphComment 0x56046818ea20 <col:4, col:29>
| `-TextComment 0x56046818e9f0 <col:4, col:29> Text=" Create a new unit prefix "
|-FunctionDecl 0x5604680dbe08 <line:12757:1, line:12759:34> line:12757:14 ecs_quantity_init 'ecs_entity_t (ecs_world_t *, const ecs_entity_desc_t *)'
| |-ParmVarDecl 0x5604680dbcf8 <line:12758:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680dbd70 <line:12759:5, col:30> col:30 desc 'const ecs_entity_desc_t *'
| `-FullComment 0x56046818eb20 <line:12755:4, col:26>
| `-ParagraphComment 0x56046818eaf0 <col:4, col:26>
| `-TextComment 0x56046818eac0 <col:4, col:26> Text=" Create a new quantity "
|-FunctionDecl 0x5604680dbf58 <line:12792:1, line:12793:23> line:12792:6 FlecsMetaImport 'void (ecs_world_t *)'
| `-ParmVarDecl 0x5604680dbec8 <line:12793:5, col:18> col:18 world 'ecs_world_t *'
|-FunctionDecl 0x5604680dc2b0 <line:12874:1, line:12877:19> line:12874:7 ecs_chresc 'char *(char *, char, char)'
| |-ParmVarDecl 0x5604680dc0d0 <line:12875:5, col:11> col:11 out 'char *'
| |-ParmVarDecl 0x5604680dc148 <line:12876:5, col:10> col:10 in 'char'
| |-ParmVarDecl 0x5604680dc1c0 <line:12877:5, col:10> col:10 delimiter 'char'
| `-FullComment 0x56046818ef70 <line:12865:4, line:12871:63>
| |-ParagraphComment 0x56046818ebe0 <line:12865:4, line:12866:79>
| | |-TextComment 0x56046818eb90 <line:12865:4, col:31> Text=" Write an escaped character."
| | `-TextComment 0x56046818ebb0 <line:12866:3, col:79> Text=" Write a character to an output string, insert escape character if necessary."
| |-ParagraphComment 0x56046818ec30 <line:12868:3>
| | `-TextComment 0x56046818ec00 <col:3> Text=" "
| |-ParamCommandComment 0x56046818ec50 <col:4, line:12869:3> [in] implicitly Param="out" ParamIndex=0
| | `-ParagraphComment 0x56046818ed00 <line:12868:14, line:12869:3>
| | |-TextComment 0x56046818ecb0 <line:12868:14, col:51> Text=" The string to write the character to."
| | `-TextComment 0x56046818ecd0 <line:12869:3> Text=" "
| |-ParamCommandComment 0x56046818ed20 <col:4, line:12870:3> [in] implicitly Param="in" ParamIndex=1
| | `-ParagraphComment 0x56046818edd0 <line:12869:13, line:12870:3>
| | |-TextComment 0x56046818ed80 <line:12869:13, col:33> Text=" The input character."
| | `-TextComment 0x56046818eda0 <line:12870:3> Text=" "
| |-ParamCommandComment 0x56046818edf0 <col:4, line:12871:3> [in] implicitly Param="delimiter" ParamIndex=2
| | `-ParagraphComment 0x56046818eea0 <line:12870:20, line:12871:3>
| | |-TextComment 0x56046818ee50 <line:12870:20, col:57> Text=" The delimiiter used (for example '"')"
| | `-TextComment 0x56046818ee70 <line:12871:3> Text=" "
| `-BlockCommandComment 0x56046818eec0 <col:4, col:63> Name="return"
| `-ParagraphComment 0x56046818ef20 <col:11, col:63>
| `-TextComment 0x56046818eef0 <col:11, col:63> Text=" Pointer to the character after the last one written."
|-FunctionDecl 0x5604680dc510 <line:12886:1, line:12888:14> line:12886:13 ecs_chrparse 'const char *(const char *, char *)'
| |-ParmVarDecl 0x5604680dc3b0 <line:12887:5, col:17> col:17 in 'const char *'
| |-ParmVarDecl 0x5604680dc430 <line:12888:5, col:11> col:11 out 'char *'
| `-FullComment 0x56046818f2f0 <line:12879:4, line:12884:60>
| |-ParagraphComment 0x56046818f030 <line:12879:4, line:12880:54>
| | |-TextComment 0x56046818efe0 <line:12879:4, col:31> Text=" Parse an escaped character."
| | `-TextComment 0x56046818f000 <line:12880:3, col:54> Text=" Parse a character with a potential escape sequence."
| |-ParagraphComment 0x56046818f080 <line:12882:3>
| | `-TextComment 0x56046818f050 <col:3> Text=" "
| |-ParamCommandComment 0x56046818f0a0 <col:4, line:12883:3> [in] implicitly Param="in" ParamIndex=0
| | `-ParagraphComment 0x56046818f150 <line:12882:13, line:12883:3>
| | |-TextComment 0x56046818f100 <line:12882:13, col:50> Text=" Pointer to character in input string."
| | `-TextComment 0x56046818f120 <line:12883:3> Text=" "
| |-ParamCommandComment 0x56046818f170 <col:4, line:12884:3> [in] implicitly Param="out" ParamIndex=1
| | `-ParagraphComment 0x56046818f220 <line:12883:14, line:12884:3>
| | |-TextComment 0x56046818f1d0 <line:12883:14, col:28> Text=" Output string."
| | `-TextComment 0x56046818f1f0 <line:12884:3> Text=" "
| `-BlockCommandComment 0x56046818f240 <col:4, col:60> Name="return"
| `-ParagraphComment 0x56046818f2a0 <col:11, col:60>
| `-TextComment 0x56046818f270 <col:11, col:60> Text=" Pointer to the character after the last one read."
|-FunctionDecl 0x5604680deaf8 <line:12903:1, line:12907:19> line:12903:12 ecs_stresc 'ecs_size_t (char *, ecs_size_t, char, const char *)'
| |-ParmVarDecl 0x5604680dc600 <line:12904:5, col:11> col:11 out 'char *'
| |-ParmVarDecl 0x5604680dc678 <line:12905:5, col:16> col:16 size 'ecs_size_t':'int'
| |-ParmVarDecl 0x5604680dc6f0 <line:12906:5, col:10> col:10 delimiter 'char'
| |-ParmVarDecl 0x5604680dc770 <line:12907:5, col:17> col:17 in 'const char *'
| `-FullComment 0x56046818f8a0 <line:12890:4, line:12900:67>
| |-ParagraphComment 0x56046818f430 <line:12890:4, line:12894:16>
| | |-TextComment 0x56046818f360 <line:12890:4, col:28> Text=" Write an escaped string."
| | |-TextComment 0x56046818f380 <line:12891:3, col:80> Text=" Write an input string to an output string, escape characters where necessary."
| | |-TextComment 0x56046818f3a0 <line:12892:3, col:77> Text=" To determine the size of the output string, call the operation with a NULL"
| | |-TextComment 0x56046818f3c0 <line:12893:3, col:77> Text=" argument for 'out', and use the returned size to allocate a string that is"
| | `-TextComment 0x56046818f3e0 <line:12894:3, col:16> Text=" large enough."
| |-ParagraphComment 0x56046818f480 <line:12896:3>
| | `-TextComment 0x56046818f450 <col:3> Text=" "
| |-ParamCommandComment 0x56046818f4a0 <col:4, line:12897:3> [in] implicitly Param="out" ParamIndex=0
| | `-ParagraphComment 0x56046818f550 <line:12896:14, line:12897:3>
| | |-TextComment 0x56046818f500 <line:12896:14, col:49> Text=" Pointer to output string (msut be)."
| | `-TextComment 0x56046818f520 <line:12897:3> Text=" "
| |-ParamCommandComment 0x56046818f570 <col:4, line:12898:3> [in] implicitly Param="size" ParamIndex=1
| | `-ParagraphComment 0x56046818f620 <line:12897:15, line:12898:3>
| | |-TextComment 0x56046818f5d0 <line:12897:15, col:62> Text=" Maximum number of characters written to output."
| | `-TextComment 0x56046818f5f0 <line:12898:3> Text=" "
| |-ParamCommandComment 0x56046818f640 <col:4, line:12899:3> [in] implicitly Param="delimiter" ParamIndex=2
| | `-ParagraphComment 0x56046818f6f0 <line:12898:20, line:12899:3>
| | |-TextComment 0x56046818f6a0 <line:12898:20, col:57> Text=" The delimiter used (for example '"')."
| | `-TextComment 0x56046818f6c0 <line:12899:3> Text=" "
| |-ParamCommandComment 0x56046818f710 <col:4, line:12900:3> [in] implicitly Param="in" ParamIndex=3
| | `-ParagraphComment 0x56046818f7c0 <line:12899:13, line:12900:3>
| | |-TextComment 0x56046818f770 <line:12899:13, col:30> Text=" The input string."
| | `-TextComment 0x56046818f790 <line:12900:3> Text=" "
| `-BlockCommandComment 0x56046818f7e0 <col:4, col:67> Name="return"
| `-ParagraphComment 0x56046818f840 <col:11, col:67>
| `-TextComment 0x56046818f810 <col:11, col:67> Text=" The number of characters that (would) have been written."
|-FunctionDecl 0x5604680ded50 <line:12918:1, line:12920:19> line:12918:7 ecs_astresc 'char *(char, const char *)'
| |-ParmVarDecl 0x5604680debf8 <line:12919:5, col:10> col:10 delimiter 'char'
| |-ParmVarDecl 0x5604680dec78 <line:12920:5, col:17> col:17 in 'const char *'
| `-FullComment 0x56046818fc50 <line:12909:4, line:12915:26>
| |-ParagraphComment 0x56046818f990 <line:12909:4, line:12911:38>
| | |-TextComment 0x56046818f910 <line:12909:4, col:26> Text=" Return escaped string."
| | |-TextComment 0x56046818f930 <line:12910:3, col:77> Text=" Return escaped version of input string. Same as ecs_stresc, but returns an"
| | `-TextComment 0x56046818f950 <line:12911:3, col:38> Text=" allocated string of the right size."
| |-ParagraphComment 0x56046818f9e0 <line:12913:3>
| | `-TextComment 0x56046818f9b0 <col:3> Text=" "
| |-ParamCommandComment 0x56046818fa00 <col:4, line:12914:3> [in] implicitly Param="delimiter" ParamIndex=0
| | `-ParagraphComment 0x56046818fab0 <line:12913:20, line:12914:3>
| | |-TextComment 0x56046818fa60 <line:12913:20, col:57> Text=" The delimiter used (for example '"')."
| | `-TextComment 0x56046818fa80 <line:12914:3> Text=" "
| |-ParamCommandComment 0x56046818fad0 <col:4, line:12915:3> [in] implicitly Param="in" ParamIndex=1
| | `-ParagraphComment 0x56046818fb80 <line:12914:13, line:12915:3>
| | |-TextComment 0x56046818fb30 <line:12914:13, col:30> Text=" The input string."
| | `-TextComment 0x56046818fb50 <line:12915:3> Text=" "
| `-BlockCommandComment 0x56046818fba0 <col:4, col:26> Name="return"
| `-ParagraphComment 0x56046818fc00 <col:11, col:26>
| `-TextComment 0x56046818fbd0 <col:11, col:26> Text=" Escaped string."
|-RecordDecl 0x5604680dee28 <line:12924:9, line:12927:1> line:12924:16 struct ecs_expr_var_t definition
| |-FullComment 0x56046818fd40 <line:12922:4, line:12923:75>
| | `-ParagraphComment 0x56046818fd10 <line:12922:4, line:12923:75>
| | |-TextComment 0x56046818fcc0 <line:12922:4, col:76> Text=" Storage for parser variables. Variables make it possible to parameterize"
| | `-TextComment 0x56046818fce0 <line:12923:3, col:75> Text=" expression strings, and are referenced with the $ operator (e.g. $var). "
| |-FieldDecl 0x5604680deee8 <line:12925:5, col:11> col:11 name 'char *'
| `-FieldDecl 0x5604680def48 <line:12926:5, col:17> col:17 value 'ecs_value_t':'struct ecs_value_t'
|-TypedefDecl 0x5604680deff8 <line:12924:1, line:12927:3> col:3 referenced ecs_expr_var_t 'struct ecs_expr_var_t':'struct ecs_expr_var_t'
| |-ElaboratedType 0x5604680defa0 'struct ecs_expr_var_t' sugar
| | `-RecordType 0x5604680deeb0 'struct ecs_expr_var_t'
| | `-Record 0x5604680dee28 'ecs_expr_var_t'
| `-FullComment 0x56046818fe30 <line:12922:4, line:12923:75>
| `-ParagraphComment 0x56046818fe00 <line:12922:4, line:12923:75>
| |-TextComment 0x56046818fdb0 <line:12922:4, col:76> Text=" Storage for parser variables. Variables make it possible to parameterize"
| `-TextComment 0x56046818fdd0 <line:12923:3, col:75> Text=" expression strings, and are referenced with the $ operator (e.g. $var). "
|-RecordDecl 0x5604680df068 <line:12929:9, line:12933:1> line:12929:16 struct ecs_expr_var_scope_t definition
| |-FieldDecl 0x5604680df120 <line:12930:5, col:19> col:19 var_index 'ecs_hashmap_t':'ecs_hashmap_t'
| |-FieldDecl 0x5604680df180 <line:12931:5, col:15> col:15 vars 'ecs_vec_t':'struct ecs_vec_t'
| `-FieldDecl 0x5604680df280 <line:12932:5, col:34> col:34 parent 'struct ecs_expr_var_scope_t *'
|-TypedefDecl 0x5604680df3a8 <line:12929:1, line:12933:3> col:3 referenced ecs_expr_var_scope_t 'struct ecs_expr_var_scope_t':'struct ecs_expr_var_scope_t'
| `-ElaboratedType 0x5604680df350 'struct ecs_expr_var_scope_t' sugar
| `-RecordType 0x5604680df0f0 'struct ecs_expr_var_scope_t'
| `-Record 0x5604680df068 'ecs_expr_var_scope_t'
|-RecordDecl 0x5604680df418 <line:12935:9, line:12939:1> line:12935:16 struct ecs_vars_t definition
| |-FieldDecl 0x5604680df4d0 <line:12936:5, col:18> col:18 world 'ecs_world_t *'
| |-FieldDecl 0x5604680df550 <line:12937:5, col:26> col:26 root 'ecs_expr_var_scope_t':'struct ecs_expr_var_scope_t'
| `-FieldDecl 0x5604680df5d8 <line:12938:5, col:27> col:27 cur 'ecs_expr_var_scope_t *'
|-TypedefDecl 0x5604680df688 <line:12935:1, line:12939:3> col:3 referenced ecs_vars_t 'struct ecs_vars_t':'struct ecs_vars_t'
| `-ElaboratedType 0x5604680df630 'struct ecs_vars_t' sugar
| `-RecordType 0x5604680df4a0 'struct ecs_vars_t'
| `-Record 0x5604680df418 'ecs_vars_t'
|-FunctionDecl 0x5604680df938 <line:12943:1, line:12945:21> line:12943:6 ecs_vars_init 'void (ecs_world_t *, ecs_vars_t *)'
| |-ParmVarDecl 0x5604680df730 <line:12944:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680df828 <line:12945:5, col:17> col:17 vars 'ecs_vars_t *'
| `-FullComment 0x56046818ff00 <line:12941:4, col:26>
| `-ParagraphComment 0x56046818fed0 <col:4, col:26>
| `-TextComment 0x56046818fea0 <col:4, col:26> Text=" Init variable storage "
|-FunctionDecl 0x5604680dfb18 <line:12949:1, line:12950:21> line:12949:6 ecs_vars_fini 'void (ecs_vars_t *)'
| |-ParmVarDecl 0x5604680dfa28 <line:12950:5, col:17> col:17 vars 'ecs_vars_t *'
| `-FullComment 0x56046818ffd0 <line:12947:4, col:29>
| `-ParagraphComment 0x56046818ffa0 <col:4, col:29>
| `-TextComment 0x56046818ff70 <col:4, col:29> Text=" Cleanup variable storage "
|-FunctionDecl 0x5604680dfc88 <line:12954:1, line:12955:21> line:12954:6 ecs_vars_push 'void (ecs_vars_t *)'
| |-ParmVarDecl 0x5604680dfbf8 <line:12955:5, col:17> col:17 vars 'ecs_vars_t *'
| `-FullComment 0x5604681900a0 <line:12952:4, col:24>
| `-ParagraphComment 0x560468190070 <col:4, col:24>
| `-TextComment 0x560468190040 <col:4, col:24> Text=" Push variable scope "
|-FunctionDecl 0x5604680dfe60 <line:12959:1, line:12960:21> line:12959:5 ecs_vars_pop 'int (ecs_vars_t *)'
| |-ParmVarDecl 0x5604680dfd68 <line:12960:5, col:17> col:17 vars 'ecs_vars_t *'
| `-FullComment 0x560468190170 <line:12957:4, col:23>
| `-ParagraphComment 0x560468190140 <col:4, col:23>
| `-TextComment 0x560468190110 <col:4, col:23> Text=" Pop variable scope "
|-FunctionDecl 0x5604680e01e8 <line:12964:1, line:12967:22> line:12964:17 ecs_vars_declare 'ecs_expr_var_t *(ecs_vars_t *, const char *, ecs_entity_t)'
| |-ParmVarDecl 0x5604680dff70 <line:12965:5, col:17> col:17 vars 'ecs_vars_t *'
| |-ParmVarDecl 0x5604680dfff0 <line:12966:5, col:17> col:17 name 'const char *'
| |-ParmVarDecl 0x5604680e0068 <line:12967:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| `-FullComment 0x560468190240 <line:12962:4, col:38>
| `-ParagraphComment 0x560468190210 <col:4, col:38>
| `-TextComment 0x5604681901e0 <col:4, col:38> Text=" Declare variable in current scope "
|-FunctionDecl 0x5604680e0548 <line:12974:1, line:12977:23> line:12974:17 ecs_vars_declare_w_value 'ecs_expr_var_t *(ecs_vars_t *, const char *, ecs_value_t *)'
| |-ParmVarDecl 0x5604680e02d8 <line:12975:5, col:17> col:17 vars 'ecs_vars_t *'
| |-ParmVarDecl 0x5604680e0358 <line:12976:5, col:17> col:17 name 'const char *'
| |-ParmVarDecl 0x5604680e0428 <line:12977:5, col:18> col:18 value 'ecs_value_t *'
| `-FullComment 0x560468190360 <line:12969:4, line:12971:32>
| `-ParagraphComment 0x560468190330 <line:12969:4, line:12971:32>
| |-TextComment 0x5604681902b0 <line:12969:4, col:49> Text=" Declare variable in current scope from value."
| |-TextComment 0x5604681902d0 <line:12970:3, col:74> Text=" This operation takes ownership of the value. The value pointer must be "
| `-TextComment 0x5604681902f0 <line:12971:3, col:32> Text=" allocated with ecs_value_new."
|-FunctionDecl 0x5604680e07c8 <line:12981:1, line:12983:21> line:12981:17 ecs_vars_lookup 'ecs_expr_var_t *(ecs_vars_t *, const char *)'
| |-ParmVarDecl 0x5604680e0638 <line:12982:5, col:17> col:17 vars 'ecs_vars_t *'
| |-ParmVarDecl 0x5604680e06b8 <line:12983:5, col:17> col:17 name 'const char *'
| `-FullComment 0x560468190430 <line:12979:4, col:47>
| `-ParagraphComment 0x560468190400 <col:4, col:47>
| `-TextComment 0x5604681903d0 <col:4, col:47> Text=" Lookup variable in scope and parent scopes "
|-RecordDecl 0x5604680e08a8 <line:12986:9, line:12995:1> line:12986:16 struct ecs_parse_expr_desc_t definition
| |-FullComment 0x560468190510 <line:12985:4, col:30>
| | `-ParagraphComment 0x5604681904e0 <col:4, col:30>
| | `-TextComment 0x5604681904b0 <col:4, col:30> Text=" Used with ecs_parse_expr. "
| |-FieldDecl 0x5604680e0968 <line:12987:5, col:17> col:17 name 'const char *'
| |-FieldDecl 0x5604680e09d0 <line:12988:5, col:17> col:17 expr 'const char *'
| |-FieldDecl 0x5604680e3c80 <line:12989:5, line:12992:18> line:12989:20 lookup_action 'ecs_entity_t (*)(const ecs_world_t *, const char *, void *)'
| |-FieldDecl 0x5604680e3ce8 <line:12993:5, col:11> col:11 lookup_ctx 'void *'
| `-FieldDecl 0x5604680e3d48 <line:12994:5, col:17> col:17 vars 'ecs_vars_t *'
|-TypedefDecl 0x5604680e3df8 <line:12986:1, line:12995:3> col:3 referenced ecs_parse_expr_desc_t 'struct ecs_parse_expr_desc_t':'struct ecs_parse_expr_desc_t'
| |-ElaboratedType 0x5604680e3da0 'struct ecs_parse_expr_desc_t' sugar
| | `-RecordType 0x5604680e0930 'struct ecs_parse_expr_desc_t'
| | `-Record 0x5604680e08a8 'ecs_parse_expr_desc_t'
| `-FullComment 0x5604681905e0 <line:12985:4, col:30>
| `-ParagraphComment 0x5604681905b0 <col:4, col:30>
| `-TextComment 0x560468190580 <col:4, col:30> Text=" Used with ecs_parse_expr. "
|-FunctionDecl 0x5604680e41d0 <line:13012:1, line:13016:38> line:13012:13 ecs_parse_expr 'const char *(ecs_world_t *, const char *, ecs_value_t *, const ecs_parse_expr_desc_t *)'
| |-ParmVarDecl 0x5604680e3ea0 <line:13013:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680e3f20 <line:13014:5, col:17> col:17 ptr 'const char *'
| |-ParmVarDecl 0x5604680e3f98 <line:13015:5, col:18> col:18 value 'ecs_value_t *'
| |-ParmVarDecl 0x5604680e4088 <line:13016:5, col:34> col:34 desc 'const ecs_parse_expr_desc_t *'
| `-FullComment 0x560468190c30 <line:12997:4, line:13009:79>
| |-ParagraphComment 0x5604681906d0 <line:12997:4, line:12999:78>
| | |-TextComment 0x560468190650 <line:12997:4, col:32> Text=" Parse expression into value."
| | |-TextComment 0x560468190670 <line:12998:3, col:74> Text=" This operation parses a flecs expression into the provided pointer. The"
| | `-TextComment 0x560468190690 <line:12999:3, col:78> Text=" memory pointed to must be large enough to contain a value of the used type."
| |-ParagraphComment 0x560468190770 <line:13001:3, line:13003:64>
| | |-TextComment 0x5604681906f0 <line:13001:3, col:77> Text=" If no type and pointer are provided for the value argument, the operation "
| | |-TextComment 0x560468190710 <line:13002:3, col:75> Text=" will discover the type from the expression and allocate storage for the "
| | `-TextComment 0x560468190730 <line:13003:3, col:64> Text=" value. The allocated value must be freed with ecs_value_free."
| |-ParagraphComment 0x5604681907c0 <line:13005:3>
| | `-TextComment 0x560468190790 <col:3> Text=" "
| |-ParamCommandComment 0x5604681907e0 <col:4, line:13006:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468190890 <line:13005:16, line:13006:3>
| | |-TextComment 0x560468190840 <line:13005:16, col:26> Text=" The world."
| | `-TextComment 0x560468190860 <line:13006:3> Text=" "
| |-ParamCommandComment 0x5604681908b0 <col:4, line:13007:3> [in] implicitly Param="ptr" ParamIndex=1
| | `-ParagraphComment 0x560468190960 <line:13006:14, line:13007:3>
| | |-TextComment 0x560468190910 <line:13006:14, col:53> Text=" The pointer to the expression to parse."
| | `-TextComment 0x560468190930 <line:13007:3> Text=" "
| |-ParamCommandComment 0x560468190980 <col:4, line:13008:3> [in] implicitly Param="value" ParamIndex=2
| | `-ParagraphComment 0x560468190a80 <line:13007:16, line:13008:3>
| | |-TextComment 0x5604681909e0 <line:13007:16, col:42> Text=" The value containing type "
| | |-TextComment 0x560468190a00 <col:43> Text="&"
| | |-TextComment 0x560468190a20 <col:44, col:64> Text=" pointer to write to."
| | `-TextComment 0x560468190a40 <line:13008:3> Text=" "
| |-ParamCommandComment 0x560468190aa0 <col:4, line:13009:3> [in] implicitly Param="desc" ParamIndex=3
| | `-ParagraphComment 0x560468190b50 <line:13008:15, line:13009:3>
| | |-TextComment 0x560468190b00 <line:13008:15, col:57> Text=" Configuration parameters for deserializer."
| | `-TextComment 0x560468190b20 <line:13009:3> Text=" "
| `-BlockCommandComment 0x560468190b70 <col:4, col:79> Name="return"
| `-ParagraphComment 0x560468190bd0 <col:11, col:79>
| `-TextComment 0x560468190ba0 <col:11, col:79> Text=" Pointer to the character after the last one read, or NULL if failed."
|-FunctionDecl 0x5604680e4468 <line:13028:1, line:13031:21> line:13028:7 ecs_ptr_to_expr 'char *(const ecs_world_t *, ecs_entity_t, const void *)'
| |-ParmVarDecl 0x5604680e42c8 <line:13029:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680e4340 <line:13030:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680e43c0 <line:13031:5, col:17> col:17 data 'const void *'
| `-FullComment 0x5604681910b0 <line:13018:4, line:13025:53>
| |-ParagraphComment 0x560468190d20 <line:13018:4, line:13020:78>
| | |-TextComment 0x560468190ca0 <line:13018:4, col:43> Text=" Serialize value into expression string."
| | |-TextComment 0x560468190cc0 <line:13019:3, col:75> Text=" This operation serializes a value of the provided type to a string. The "
| | `-TextComment 0x560468190ce0 <line:13020:3, col:78> Text=" memory pointed to must be large enough to contain a value of the used type."
| |-ParagraphComment 0x560468190d70 <line:13022:3>
| | `-TextComment 0x560468190d40 <col:3> Text=" "
| |-ParamCommandComment 0x560468190d90 <col:4, line:13023:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468190e40 <line:13022:16, line:13023:3>
| | |-TextComment 0x560468190df0 <line:13022:16, col:26> Text=" The world."
| | `-TextComment 0x560468190e10 <line:13023:3> Text=" "
| |-ParamCommandComment 0x560468190e60 <col:4, line:13024:3> [in] implicitly Param="type" ParamIndex=1
| | `-ParagraphComment 0x560468190f10 <line:13023:15, line:13024:3>
| | |-TextComment 0x560468190ec0 <line:13023:15, col:50> Text=" The type of the value to serialize."
| | `-TextComment 0x560468190ee0 <line:13024:3> Text=" "
| |-ParamCommandComment 0x560468190f30 <col:4, line:13025:3> [in] implicitly Param="data" ParamIndex=2
| | `-ParagraphComment 0x560468190fe0 <line:13024:15, line:13025:3>
| | |-TextComment 0x560468190f90 <line:13024:15, col:38> Text=" The value to serialize."
| | `-TextComment 0x560468190fb0 <line:13025:3> Text=" "
| `-BlockCommandComment 0x560468191000 <col:4, col:53> Name="return"
| `-ParagraphComment 0x560468191060 <col:11, col:53>
| `-TextComment 0x560468191030 <col:11, col:53> Text=" String with expression, or NULL if failed."
|-FunctionDecl 0x5604680e4778 <line:13043:1, line:13047:22> line:13043:5 ecs_ptr_to_expr_buf 'int (const ecs_world_t *, ecs_entity_t, const void *, ecs_strbuf_t *)'
| |-ParmVarDecl 0x5604680e4558 <line:13044:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680e45d0 <line:13045:5, col:18> col:18 type 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680e4650 <line:13046:5, col:17> col:17 data 'const void *'
| |-ParmVarDecl 0x5604680e46c8 <line:13047:5, col:19> col:19 buf 'ecs_strbuf_t *'
| `-FullComment 0x5604681915e0 <line:13033:4, line:13040:47>
| |-ParagraphComment 0x560468191170 <line:13033:4, line:13034:71>
| | |-TextComment 0x560468191120 <line:13033:4, col:39> Text=" Serialize value into string buffer."
| | `-TextComment 0x560468191140 <line:13034:3, col:71> Text=" Same as ecs_ptr_to_expr, but serializes to an ecs_strbuf_t instance."
| |-ParagraphComment 0x5604681911c0 <line:13036:3>
| | `-TextComment 0x560468191190 <col:3> Text=" "
| |-ParamCommandComment 0x5604681911e0 <col:4, line:13037:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468191290 <line:13036:16, line:13037:3>
| | |-TextComment 0x560468191240 <line:13036:16, col:26> Text=" The world."
| | `-TextComment 0x560468191260 <line:13037:3> Text=" "
| |-ParamCommandComment 0x5604681912b0 <col:4, line:13038:3> [in] implicitly Param="type" ParamIndex=1
| | `-ParagraphComment 0x560468191360 <line:13037:15, line:13038:3>
| | |-TextComment 0x560468191310 <line:13037:15, col:50> Text=" The type of the value to serialize."
| | `-TextComment 0x560468191330 <line:13038:3> Text=" "
| |-ParamCommandComment 0x560468191380 <col:4, line:13039:3> [in] implicitly Param="data" ParamIndex=2
| | `-ParagraphComment 0x560468191430 <line:13038:15, line:13039:3>
| | |-TextComment 0x5604681913e0 <line:13038:15, col:38> Text=" The value to serialize."
| | `-TextComment 0x560468191400 <line:13039:3> Text=" "
| |-ParamCommandComment 0x560468191450 <col:4, line:13040:3> [in] implicitly Param="buf" ParamIndex=3
| | `-ParagraphComment 0x560468191500 <line:13039:14, line:13040:3>
| | |-TextComment 0x5604681914b0 <line:13039:14, col:49> Text=" The strbuf to append the string to."
| | `-TextComment 0x5604681914d0 <line:13040:3> Text=" "
| `-BlockCommandComment 0x560468191520 <col:4, col:47> Name="return"
| `-ParagraphComment 0x560468191580 <col:11, col:47>
| `-TextComment 0x560468191550 <col:11, col:47> Text=" Zero if success, non-zero if failed."
|-FunctionDecl 0x5604680e4b30 <line:13061:1, line:13065:22> line:13061:5 ecs_primitive_to_expr_buf 'int (const ecs_world_t *, ecs_primitive_kind_t, const void *, ecs_strbuf_t *)'
| |-ParmVarDecl 0x5604680e4878 <line:13062:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680e48f0 <line:13063:5, col:26> col:26 kind 'ecs_primitive_kind_t':'enum ecs_primitive_kind_t'
| |-ParmVarDecl 0x5604680e4970 <line:13064:5, col:17> col:17 data 'const void *'
| |-ParmVarDecl 0x5604680e49e8 <line:13065:5, col:19> col:19 buf 'ecs_strbuf_t *'
| `-FullComment 0x560468191b60 <line:13049:4, line:13058:47>
| |-ParagraphComment 0x5604681916f0 <line:13049:4, line:13052:43>
| | |-TextComment 0x560468191650 <line:13049:4, col:49> Text=" Serialize primitive value into string buffer."
| | |-TextComment 0x560468191670 <line:13050:3, col:79> Text=" Serializes a primitive value to an ecs_strbuf_t instance. This operation can"
| | |-TextComment 0x560468191690 <line:13051:3, col:80> Text=" be reused by other serializers to avoid having to write boilerplate code that"
| | `-TextComment 0x5604681916b0 <line:13052:3, col:43> Text=" serializes primitive values to a string."
| |-ParagraphComment 0x560468191740 <line:13054:3>
| | `-TextComment 0x560468191710 <col:3> Text=" "
| |-ParamCommandComment 0x560468191760 <col:4, line:13055:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468191810 <line:13054:16, line:13055:3>
| | |-TextComment 0x5604681917c0 <line:13054:16, col:26> Text=" The world."
| | `-TextComment 0x5604681917e0 <line:13055:3> Text=" "
| |-ParamCommandComment 0x560468191830 <col:4, line:13056:3> [in] implicitly Param="kind" ParamIndex=1
| | `-ParagraphComment 0x5604681918e0 <line:13055:15, line:13056:3>
| | |-TextComment 0x560468191890 <line:13055:15, col:43> Text=" The kind of primitive value."
| | `-TextComment 0x5604681918b0 <line:13056:3> Text=" "
| |-ParamCommandComment 0x560468191900 <col:4, line:13057:3> [in] implicitly Param="data" ParamIndex=2
| | `-ParagraphComment 0x5604681919b0 <line:13056:15, line:13057:3>
| | |-TextComment 0x560468191960 <line:13056:15, col:37> Text=" The value ot serialize"
| | `-TextComment 0x560468191980 <line:13057:3> Text=" "
| |-ParamCommandComment 0x5604681919d0 <col:4, line:13058:3> [in] implicitly Param="buf" ParamIndex=3
| | `-ParagraphComment 0x560468191a80 <line:13057:14, line:13058:3>
| | |-TextComment 0x560468191a30 <line:13057:14, col:49> Text=" The strbuf to append the string to."
| | `-TextComment 0x560468191a50 <line:13058:3> Text=" "
| `-BlockCommandComment 0x560468191aa0 <col:4, col:47> Name="return"
| `-ParagraphComment 0x560468191b00 <col:11, col:47>
| `-TextComment 0x560468191ad0 <col:11, col:47> Text=" Zero if success, non-zero if failed."
|-FunctionDecl 0x5604680e4eb0 <line:13078:1, line:13082:16> line:13078:13 ecs_parse_expr_token 'const char *(const char *, const char *, const char *, char *)'
| |-ParmVarDecl 0x5604680e4c30 <line:13079:5, col:17> col:17 name 'const char *'
| |-ParmVarDecl 0x5604680e4cb0 <line:13080:5, col:17> col:17 expr 'const char *'
| |-ParmVarDecl 0x5604680e4d30 <line:13081:5, col:17> col:17 ptr 'const char *'
| |-ParmVarDecl 0x5604680e4db0 <line:13082:5, col:11> col:11 token 'char *'
| `-FullComment 0x5604681920c0 <line:13067:4, line:13075:79>
| |-ParagraphComment 0x560468191c50 <line:13067:4, line:13069:37>
| | |-TextComment 0x560468191bd0 <line:13067:4, col:27> Text=" Parse expression token."
| | |-TextComment 0x560468191bf0 <line:13068:3, col:74> Text=" Expression tokens can contain more characters (such as '|') than tokens"
| | `-TextComment 0x560468191c10 <line:13069:3, col:37> Text=" parsed by the query (term) parser."
| |-ParagraphComment 0x560468191ca0 <line:13071:3>
| | `-TextComment 0x560468191c70 <col:3> Text=" "
| |-ParamCommandComment 0x560468191cc0 <col:4, line:13072:3> [in] implicitly Param="name" ParamIndex=0
| | `-ParagraphComment 0x560468191d70 <line:13071:15, line:13072:3>
| | |-TextComment 0x560468191d20 <line:13071:15, col:64> Text=" The name of the expression (used for debug logs)."
| | `-TextComment 0x560468191d40 <line:13072:3> Text=" "
| |-ParamCommandComment 0x560468191d90 <col:4, line:13073:3> [in] implicitly Param="expr" ParamIndex=1
| | `-ParagraphComment 0x560468191e40 <line:13072:15, line:13073:3>
| | |-TextComment 0x560468191df0 <line:13072:15, col:57> Text=" The full expression (used for debug logs)."
| | `-TextComment 0x560468191e10 <line:13073:3> Text=" "
| |-ParamCommandComment 0x560468191e60 <col:4, line:13074:3> [in] implicitly Param="ptr" ParamIndex=2
| | `-ParagraphComment 0x560468191f10 <line:13073:14, line:13074:3>
| | |-TextComment 0x560468191ec0 <line:13073:14, col:53> Text=" The pointer to the expression to parse."
| | `-TextComment 0x560468191ee0 <line:13074:3> Text=" "
| |-ParamCommandComment 0x560468191f30 <col:4, line:13075:3> [in] implicitly Param="token" ParamIndex=3
| | `-ParagraphComment 0x560468191fe0 <line:13074:16, line:13075:3>
| | |-TextComment 0x560468191f90 <line:13074:16, col:74> Text=" The buffer to write to (must have size ECS_MAX_TOKEN_SIZE)"
| | `-TextComment 0x560468191fb0 <line:13075:3> Text=" "
| `-BlockCommandComment 0x560468192000 <col:4, col:79> Name="return"
| `-ParagraphComment 0x560468192060 <col:11, col:79>
| `-TextComment 0x560468192030 <col:11, col:79> Text=" Pointer to the character after the last one read, or NULL if failed."
|-FunctionDecl 0x5604680e53e0 <line:13171:1, line:13175:21> line:13171:5 ecs_meta_from_desc 'int (ecs_world_t *, ecs_entity_t, ecs_type_kind_t, const char *)'
| |-ParmVarDecl 0x5604680e5128 <line:13172:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680e51a0 <line:13173:5, col:18> col:18 component 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680e5218 <line:13174:5, col:21> col:21 kind 'ecs_type_kind_t':'enum ecs_type_kind_t'
| |-ParmVarDecl 0x5604680e5298 <line:13175:5, col:17> col:17 desc 'const char *'
| `-FullComment 0x560468192190 <line:13169:4, col:52>
| `-ParagraphComment 0x560468192160 <col:4, col:52>
| `-TextComment 0x560468192130 <col:4, col:52> Text=" Populate meta information from type descriptor. "
|-FunctionDecl 0x5604680e5790 <line:13325:1, line:13328:20> line:13325:5 ecs_plecs_from_str 'int (ecs_world_t *, const char *, const char *)'
| |-ParmVarDecl 0x5604680e5568 <line:13326:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680e55e8 <line:13327:5, col:17> col:17 name 'const char *'
| |-ParmVarDecl 0x5604680e5668 <line:13328:5, col:17> col:17 str 'const char *'
| `-FullComment 0x560468192600 <line:13316:4, line:13322:47>
| |-ParagraphComment 0x560468192250 <line:13316:4, line:13317:73>
| | |-TextComment 0x560468192200 <line:13316:4, col:23> Text=" Parse plecs string."
| | `-TextComment 0x560468192220 <line:13317:3, col:73> Text=" This parses a plecs string and instantiates the entities in the world."
| |-ParagraphComment 0x5604681922a0 <line:13319:3>
| | `-TextComment 0x560468192270 <col:3> Text=" "
| |-ParamCommandComment 0x5604681922c0 <col:4, line:13320:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468192370 <line:13319:16, line:13320:3>
| | |-TextComment 0x560468192320 <line:13319:16, col:26> Text=" The world."
| | `-TextComment 0x560468192340 <line:13320:3> Text=" "
| |-ParamCommandComment 0x560468192390 <col:4, line:13321:3> [in] implicitly Param="name" ParamIndex=1
| | `-ParagraphComment 0x560468192440 <line:13320:15, line:13321:3>
| | |-TextComment 0x5604681923f0 <line:13320:15, col:52> Text=" The script name (typically the file)."
| | `-TextComment 0x560468192410 <line:13321:3> Text=" "
| |-ParamCommandComment 0x560468192460 <col:4, line:13322:3> [in] implicitly Param="str" ParamIndex=2
| | `-ParagraphComment 0x560468192530 <line:13321:14, line:13322:3>
| | |-TextComment 0x5604681924e0 <line:13321:14, col:31> Text=" The plecs string."
| | `-TextComment 0x560468192500 <line:13322:3> Text=" "
| `-BlockCommandComment 0x560468192550 <col:4, col:47> Name="return"
| `-ParagraphComment 0x5604681925b0 <col:11, col:47>
| `-TextComment 0x560468192580 <col:11, col:47> Text=" Zero if success, non-zero otherwise."
|-FunctionDecl 0x5604680e5a20 <line:13340:1, line:13342:25> line:13340:5 ecs_plecs_from_file 'int (ecs_world_t *, const char *)'
| |-ParmVarDecl 0x5604680e5888 <line:13341:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680e5908 <line:13342:5, col:17> col:17 filename 'const char *'
| `-FullComment 0x5604681929d0 <line:13330:4, line:13337:47>
| |-ParagraphComment 0x560468192710 <line:13330:4, line:13333:22>
| | |-TextComment 0x560468192670 <line:13330:4, col:21> Text=" Parse plecs file."
| | |-TextComment 0x560468192690 <line:13331:3, col:76> Text=" This parses a plecs file and instantiates the entities in the world. This"
| | |-TextComment 0x5604681926b0 <line:13332:3, col:73> Text=" operation is equivalent to loading the file contents and passing it to"
| | `-TextComment 0x5604681926d0 <line:13333:3, col:22> Text=" ecs_plecs_from_str."
| |-ParagraphComment 0x560468192760 <line:13335:3>
| | `-TextComment 0x560468192730 <col:3> Text=" "
| |-ParamCommandComment 0x560468192780 <col:4, line:13336:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468192830 <line:13335:16, line:13336:3>
| | |-TextComment 0x5604681927e0 <line:13335:16, col:26> Text=" The world."
| | `-TextComment 0x560468192800 <line:13336:3> Text=" "
| |-ParamCommandComment 0x560468192850 <col:4, line:13337:3> [in] implicitly Param="filename" ParamIndex=1
| | `-ParagraphComment 0x560468192900 <line:13336:19, line:13337:3>
| | |-TextComment 0x5604681928b0 <line:13336:19, col:39> Text=" The plecs file name."
| | `-TextComment 0x5604681928d0 <line:13337:3> Text=" "
| `-BlockCommandComment 0x560468192920 <col:4, col:47> Name="return"
| `-ParagraphComment 0x560468192980 <col:11, col:47>
| `-TextComment 0x560468192950 <col:11, col:47> Text=" Zero if success, non-zero otherwise."
|-FunctionDecl 0x5604680e9ac8 <line:13439:1, line:13441:34> line:13439:13 ecs_rule_init 'ecs_rule_t *(ecs_world_t *, const ecs_filter_desc_t *)'
| |-ParmVarDecl 0x5604680e98d8 <line:13440:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680e9950 <line:13441:5, col:30> col:30 desc 'const ecs_filter_desc_t *'
| `-FullComment 0x560468193370 <line:13393:4, line:13436:20>
| |-ParagraphComment 0x560468192ac0 <line:13393:4, line:13395:34>
| | |-TextComment 0x560468192a40 <line:13393:4, col:18> Text=" Create a rule."
| | |-TextComment 0x560468192a60 <line:13394:3, col:73> Text=" A rule accepts the same descriptor as a filter, but has the additional"
| | `-TextComment 0x560468192a80 <line:13395:3, col:34> Text=" ability to use query variables."
| |-ParagraphComment 0x560468192b60 <line:13397:3, line:13399:74>
| | |-TextComment 0x560468192ae0 <line:13397:3, col:78> Text=" Query variables can be used to constrain wildcards across multiple terms to"
| | |-TextComment 0x560468192b00 <line:13398:3, col:78> Text=" the same entity. Regular ECS queries do this in a limited form, as querying"
| | `-TextComment 0x560468192b20 <line:13399:3, col:74> Text=" for Position, Velocity only returns entities that have both components."
| |-ParagraphComment 0x560468192c20 <line:13401:3, line:13404:17>
| | |-TextComment 0x560468192b80 <line:13401:3, col:80> Text=" Query variables expand this to constrain entities that are resolved while the"
| | |-TextComment 0x560468192ba0 <line:13402:3, col:76> Text=" query is being matched. Consider a query for all entities and the mission"
| | |-TextComment 0x560468192bc0 <line:13403:3, col:15> Text=" they are on:"
| | `-TextComment 0x560468192be0 <line:13404:3, col:17> Text=" (Mission, *)"
| |-ParagraphComment 0x560468192cc0 <line:13406:3, line:13408:35>
| | |-TextComment 0x560468192c40 <line:13406:3, col:76> Text=" If an entity is on multiple missions, the wildcard will match it multiple"
| | |-TextComment 0x560468192c60 <line:13407:3, col:77> Text=" times. Now say we want to only list combat missions. Naively we could try:"
| | `-TextComment 0x560468192c80 <line:13408:3, col:35> Text=" (Mission, *), CombatMission(*)"
| |-ParagraphComment 0x560468192d80 <line:13410:3, line:13413:37>
| | |-TextComment 0x560468192ce0 <line:13410:3, col:78> Text=" But this doesn't work, as term 1 returns entities with missions, and term 2"
| | |-TextComment 0x560468192d00 <line:13411:3, col:73> Text=" returns all combat missions for all entities. Query variables make it "
| | |-TextComment 0x560468192d20 <line:13412:3, col:56> Text=" possible to apply CombatMission to the found mission:"
| | `-TextComment 0x560468192d40 <line:13413:3, col:37> Text=" (Mission, $M), CombatMission($M)"
| |-ParagraphComment 0x560468192df0 <line:13415:3, line:13416:43>
| | |-TextComment 0x560468192da0 <line:13415:3, col:78> Text=" By using the same variable ('M') we ensure that CombatMission is applied to"
| | `-TextComment 0x560468192dc0 <line:13416:3, col:43> Text=" the mission found in the current result."
| |-ParagraphComment 0x560468192e90 <line:13418:3, line:13420:33>
| | |-TextComment 0x560468192e10 <line:13418:3, col:79> Text=" Variables can be used in each part of the term (predicate, subject, object)."
| | |-TextComment 0x560468192e30 <line:13419:3, col:25> Text=" This is a valid query:"
| | `-TextComment 0x560468192e50 <line:13420:3, col:33> Text=" Likes($X, $Y), Likes($Y, $X)"
| |-ParagraphComment 0x560468192f00 <line:13422:3, line:13423:41>
| | |-TextComment 0x560468192eb0 <line:13422:3, col:30> Text=" This is also a valid query:"
| | `-TextComment 0x560468192ed0 <line:13423:3, col:41> Text=" _Component, Serializable(_Component)"
| |-ParagraphComment 0x560468192fa0 <line:13425:3, line:13427:68>
| | |-TextComment 0x560468192f20 <line:13425:3, col:78> Text=" In the query expression syntax, variables are prefixed with a $. When using"
| | |-TextComment 0x560468192f40 <line:13426:3, col:45> Text=" the descriptor, specify the variable kind:"
| | `-TextComment 0x560468192f60 <line:13427:3, col:68> Text=" desc.terms[0].second = { .name = "X", .var = EcsVarIsVariable }"
| |-ParagraphComment 0x560468193010 <line:13429:3, line:13430:20>
| | |-TextComment 0x560468192fc0 <line:13429:3, col:78> Text=" Different terms with the same variable name are automatically correlated by"
| | `-TextComment 0x560468192fe0 <line:13430:3, col:20> Text=" the query engine."
| |-ParagraphComment 0x560468193060 <line:13432:3, col:60>
| | `-TextComment 0x560468193030 <col:3, col:60> Text=" A rule needs to be explicitly deleted with ecs_rule_fini."
| |-ParagraphComment 0x5604681930b0 <line:13434:3>
| | `-TextComment 0x560468193080 <col:3> Text=" "
| |-ParamCommandComment 0x5604681930d0 <col:4, line:13435:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468193180 <line:13434:16, line:13435:3>
| | |-TextComment 0x560468193130 <line:13434:16, col:26> Text=" The world."
| | `-TextComment 0x560468193150 <line:13435:3> Text=" "
| |-ParamCommandComment 0x5604681931a0 <col:4, line:13436:3> [in] implicitly Param="desc" ParamIndex=1
| | `-ParagraphComment 0x560468193250 <line:13435:15, line:13436:3>
| | |-TextComment 0x560468193200 <line:13435:15, col:53> Text=" The descriptor (see ecs_filter_desc_t)"
| | `-TextComment 0x560468193220 <line:13436:3> Text=" "
| `-BlockCommandComment 0x560468193270 <col:4, col:20> Name="return"
| `-ParagraphComment 0x5604681932d0 <col:11, col:20>
| `-TextComment 0x5604681932a0 <col:11, col:20> Text=" The rule."
|-FunctionDecl 0x5604680e9ca8 <line:13448:1, line:13449:21> line:13448:6 ecs_rule_fini 'void (ecs_rule_t *)'
| |-ParmVarDecl 0x5604680e9bb8 <line:13449:5, col:17> col:17 rule 'ecs_rule_t *'
| `-FullComment 0x560468193550 <line:13443:4, line:13445:24>
| |-ParagraphComment 0x560468193410 <line:13443:4, col:19>
| | `-TextComment 0x5604681933e0 <col:4, col:19> Text=" Delete a rule. "
| |-ParagraphComment 0x560468193460 <line:13445:3>
| | `-TextComment 0x560468193430 <col:3> Text=" "
| `-ParamCommandComment 0x560468193480 <col:4, col:24> [in] implicitly Param="rule" ParamIndex=0
| `-ParagraphComment 0x560468193510 <col:15, col:24>
| `-TextComment 0x5604681934e0 <col:15, col:24> Text=" The rule."
|-FunctionDecl 0x5604680e9e78 <line:13458:1, line:13459:27> line:13458:21 ecs_rule_get_filter 'const ecs_filter_t *(const ecs_rule_t *)'
| |-ParmVarDecl 0x5604680e9d88 <line:13459:5, col:23> col:23 rule 'const ecs_rule_t *'
| `-FullComment 0x5604681937f0 <line:13451:4, line:13455:22>
| |-ParagraphComment 0x560468193610 <line:13451:4, line:13452:69>
| | |-TextComment 0x5604681935c0 <line:13451:4, col:28> Text=" Obtain filter from rule."
| | `-TextComment 0x5604681935e0 <line:13452:3, col:69> Text=" This operation returns the filter with which the rule was created."
| |-ParagraphComment 0x560468193660 <line:13454:3>
| | `-TextComment 0x560468193630 <col:3> Text=" "
| |-ParamCommandComment 0x560468193680 <col:4, line:13455:3> [in] implicitly Param="rule" ParamIndex=0
| | `-ParagraphComment 0x560468193730 <line:13454:15, line:13455:3>
| | |-TextComment 0x5604681936e0 <line:13454:15, col:24> Text=" The rule."
| | `-TextComment 0x560468193700 <line:13455:3> Text=" "
| `-BlockCommandComment 0x560468193750 <col:4, col:22> Name="return"
| `-ParagraphComment 0x5604681937b0 <col:11, col:22>
| `-TextComment 0x560468193780 <col:11, col:22> Text=" The filter."
|-FunctionDecl 0x5604680ea048 <line:13467:1, line:13468:27> line:13467:9 ecs_rule_var_count 'int32_t (const ecs_rule_t *)'
| |-ParmVarDecl 0x5604680e9f58 <line:13468:5, col:23> col:23 rule 'const ecs_rule_t *'
| `-FullComment 0x560468193a70 <line:13461:4, line:13464:35>
| |-ParagraphComment 0x560468193890 <line:13461:4, col:39>
| | `-TextComment 0x560468193860 <col:4, col:39> Text=" Return number of variables in rule."
| |-ParagraphComment 0x5604681938e0 <line:13463:3>
| | `-TextComment 0x5604681938b0 <col:3> Text=" "
| |-ParamCommandComment 0x560468193900 <col:4, line:13464:3> [in] implicitly Param="rule" ParamIndex=0
| | `-ParagraphComment 0x5604681939b0 <line:13463:15, line:13464:3>
| | |-TextComment 0x560468193960 <line:13463:15, col:24> Text=" The rule."
| | `-TextComment 0x560468193980 <line:13464:3> Text=" "
| `-BlockCommandComment 0x5604681939d0 <col:4, col:35> Name="return"
| `-ParagraphComment 0x560468193a30 <col:11, col:35>
| `-TextComment 0x560468193a00 <col:11, col:35> Text=" The number of variables/"
|-FunctionDecl 0x5604680ea2b8 <line:13479:1, line:13481:21> line:13479:9 ecs_rule_find_var 'int32_t (const ecs_rule_t *, const char *)'
| |-ParmVarDecl 0x5604680ea128 <line:13480:5, col:23> col:23 rule 'const ecs_rule_t *'
| |-ParmVarDecl 0x5604680ea1a8 <line:13481:5, col:17> col:17 name 'const char *'
| `-FullComment 0x560468193e20 <line:13470:4, line:13476:30>
| |-ParagraphComment 0x560468193b60 <line:13470:4, line:13472:68>
| | |-TextComment 0x560468193ae0 <line:13470:4, col:24> Text=" Find variable index."
| | |-TextComment 0x560468193b00 <line:13471:3, col:78> Text=" This operation looks up the index of a variable in the rule. This index can"
| | `-TextComment 0x560468193b20 <line:13472:3, col:68> Text=" be used in operations like ecs_iter_set_var and ecs_iter_get_var."
| |-ParagraphComment 0x560468193bb0 <line:13474:3>
| | `-TextComment 0x560468193b80 <col:3> Text=" "
| |-ParamCommandComment 0x560468193bd0 <col:4, line:13475:3> [in] implicitly Param="rule" ParamIndex=0
| | `-ParagraphComment 0x560468193c80 <line:13474:15, line:13475:3>
| | |-TextComment 0x560468193c30 <line:13474:15, col:24> Text=" The rule."
| | `-TextComment 0x560468193c50 <line:13475:3> Text=" "
| |-ParamCommandComment 0x560468193ca0 <col:4, line:13476:3> [in] implicitly Param="name" ParamIndex=1
| | `-ParagraphComment 0x560468193d50 <line:13475:15, line:13476:3>
| | |-TextComment 0x560468193d00 <line:13475:15, col:33> Text=" The variable name."
| | `-TextComment 0x560468193d20 <line:13476:3> Text=" "
| `-BlockCommandComment 0x560468193d70 <col:4, col:30> Name="return"
| `-ParagraphComment 0x560468193dd0 <col:11, col:30>
| `-TextComment 0x560468193da0 <col:11, col:30> Text=" The variable index."
|-FunctionDecl 0x5604680ea540 <line:13490:1, line:13492:19> line:13490:13 ecs_rule_var_name 'const char *(const ecs_rule_t *, int32_t)'
| |-ParmVarDecl 0x5604680ea3a8 <line:13491:5, col:23> col:23 rule 'const ecs_rule_t *'
| |-ParmVarDecl 0x5604680ea420 <line:13492:5, col:13> col:13 var_id 'int32_t':'int'
| `-FullComment 0x5604681940f0 <line:13483:4, line:13487:36>
| |-ParagraphComment 0x560468193ee0 <line:13483:4, line:13484:57>
| | |-TextComment 0x560468193e90 <line:13483:4, col:22> Text=" Get variable name."
| | `-TextComment 0x560468193eb0 <line:13484:3, col:57> Text=" This operation returns the variable name for an index."
| |-ParagraphComment 0x560468193f30 <line:13486:3>
| | `-TextComment 0x560468193f00 <col:3> Text=" "
| |-ParamCommandComment 0x560468193f50 <col:4, line:13487:3> [in] implicitly Param="rule" ParamIndex=0
| | `-ParagraphComment 0x560468194000 <line:13486:15, line:13487:3>
| | |-TextComment 0x560468193fb0 <line:13486:15, col:24> Text=" The rule."
| | `-TextComment 0x560468193fd0 <line:13487:3> Text=" "
| `-ParamCommandComment 0x560468194020 <col:4, col:36> [in] implicitly Param="var_id" ParamIndex=1
| `-ParagraphComment 0x5604681940b0 <col:17, col:36>
| `-TextComment 0x560468194080 <col:17, col:36> Text=" The variable index."
|-FunctionDecl 0x5604680ea7b8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:13506:19> line:13504:6 ecs_rule_var_is_entity 'bool (const ecs_rule_t *, int32_t)'
| |-ParmVarDecl 0x5604680ea628 <line:13505:5, col:23> col:23 rule 'const ecs_rule_t *'
| |-ParmVarDecl 0x5604680ea6a0 <line:13506:5, col:13> col:13 var_id 'int32_t':'int'
| `-FullComment 0x560468194440 <line:13494:4, line:13501:33>
| |-ParagraphComment 0x560468194230 <line:13494:4, line:13498:59>
| | |-TextComment 0x560468194160 <line:13494:4, col:34> Text=" Test if variable is an entity."
| | |-TextComment 0x560468194180 <line:13495:3, col:76> Text=" Internally the rule engine has entity variables and table variables. When"
| | |-TextComment 0x5604681941a0 <line:13496:3, col:75> Text=" iterating through rule variables (by using ecs_rule_variable_count) only"
| | |-TextComment 0x5604681941c0 <line:13497:3, col:76> Text=" the values for entity variables are accessible. This operation enables an"
| | `-TextComment 0x5604681941e0 <line:13498:3, col:59> Text=" appliction to check if a variable is an entity variable."
| |-ParagraphComment 0x560468194280 <line:13500:3>
| | `-TextComment 0x560468194250 <col:3> Text=" "
| |-ParamCommandComment 0x5604681942a0 <col:4, line:13501:3> [in] implicitly Param="rule" ParamIndex=0
| | `-ParagraphComment 0x560468194350 <line:13500:15, line:13501:3>
| | |-TextComment 0x560468194300 <line:13500:15, col:24> Text=" The rule."
| | `-TextComment 0x560468194320 <line:13501:3> Text=" "
| `-ParamCommandComment 0x560468194370 <col:4, col:33> [in] implicitly Param="var_id" ParamIndex=1
| `-ParagraphComment 0x560468194400 <col:17, col:33>
| `-TextComment 0x5604681943d0 <col:17, col:33> Text=" The variable id."
|-FunctionDecl 0x5604680eaa38 <line:13519:1, line:13521:27> line:13519:12 ecs_rule_iter 'ecs_iter_t (const ecs_world_t *, const ecs_rule_t *)'
| |-ParmVarDecl 0x5604680ea8a8 <line:13520:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680ea920 <line:13521:5, col:23> col:23 rule 'const ecs_rule_t *'
| `-FullComment 0x560468194860 <line:13508:4, line:13516:23>
| |-ParagraphComment 0x5604681945a0 <line:13508:4, line:13512:35>
| | |-TextComment 0x5604681944d0 <line:13508:4, col:19> Text=" Iterate a rule."
| | |-TextComment 0x5604681944f0 <line:13509:3, col:77> Text=" Note that rule iterators may allocate memory, and that unless the iterator"
| | |-TextComment 0x560468194510 <line:13510:3, col:75> Text=" is iterated until completion, it may still hold resources. When stopping"
| | |-TextComment 0x560468194530 <line:13511:3, col:74> Text=" iteration before ecs_rule_next has returned false, use ecs_iter_fini to"
| | `-TextComment 0x560468194550 <line:13512:3, col:35> Text=" cleanup any remaining resources."
| |-ParagraphComment 0x5604681945f0 <line:13514:3>
| | `-TextComment 0x5604681945c0 <col:3> Text=" "
| |-ParamCommandComment 0x560468194610 <col:4, line:13515:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681946c0 <line:13514:16, line:13515:3>
| | |-TextComment 0x560468194670 <line:13514:16, col:26> Text=" The world."
| | `-TextComment 0x560468194690 <line:13515:3> Text=" "
| |-ParamCommandComment 0x5604681946e0 <col:4, line:13516:3> [in] implicitly Param="rule" ParamIndex=1
| | `-ParagraphComment 0x560468194790 <line:13515:15, line:13516:3>
| | |-TextComment 0x560468194740 <line:13515:15, col:24> Text=" The rule."
| | `-TextComment 0x560468194760 <line:13516:3> Text=" "
| `-BlockCommandComment 0x5604681947b0 <col:4, col:23> Name="return"
| `-ParagraphComment 0x560468194810 <col:11, col:23>
| `-TextComment 0x5604681947e0 <col:11, col:23> Text=" An iterator."
|-FunctionDecl 0x5604680eabb8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:13529:19> line:13528:6 ecs_rule_next 'bool (ecs_iter_t *)'
| |-ParmVarDecl 0x5604680eab28 <line:13529:5, col:17> col:17 it 'ecs_iter_t *'
| `-FullComment 0x560468194a40 <line:13523:4, line:13525:26>
| |-ParagraphComment 0x560468194900 <line:13523:4, col:27>
| | `-TextComment 0x5604681948d0 <col:4, col:27> Text=" Progress rule iterator."
| |-ParagraphComment 0x560468194950 <line:13525:3>
| | `-TextComment 0x560468194920 <col:3> Text=" "
| `-ParamCommandComment 0x560468194970 <col:4, col:26> [in] implicitly Param="it" ParamIndex=0
| `-ParagraphComment 0x560468194a00 <col:13, col:26>
| `-TextComment 0x5604681949d0 <col:13, col:26> Text=" The iterator."
|-FunctionDecl 0x5604680ead28 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:13538:19> line:13537:6 ecs_rule_next_instanced 'bool (ecs_iter_t *)'
| |-ParmVarDecl 0x5604680eac98 <line:13538:5, col:17> col:17 it 'ecs_iter_t *'
| `-FullComment 0x560468194c40 <line:13531:4, line:13534:26>
| |-ParagraphComment 0x560468194b00 <line:13531:4, line:13532:61>
| | |-TextComment 0x560468194ab0 <line:13531:4, col:32> Text=" Progress instanced iterator."
| | `-TextComment 0x560468194ad0 <line:13532:3, col:61> Text=" Should not be called unless you know what you're doing :-)"
| |-ParagraphComment 0x560468194b50 <line:13534:3>
| | `-TextComment 0x560468194b20 <col:3> Text=" "
| `-ParamCommandComment 0x560468194b70 <col:4, col:26> [in] implicitly Param="it" ParamIndex=0
| `-ParagraphComment 0x560468194c00 <col:13, col:26>
| `-TextComment 0x560468194bd0 <col:13, col:26> Text=" The iterator."
|-FunctionDecl 0x5604680eaf00 <line:13550:1, line:13551:21> line:13550:7 ecs_rule_str 'char *(ecs_rule_t *)'
| |-ParmVarDecl 0x5604680eae08 <line:13551:5, col:17> col:17 rule 'ecs_rule_t *'
| `-FullComment 0x560468194f70 <line:13540:4, line:13547:21>
| |-ParagraphComment 0x560468194d30 <line:13540:4, line:13542:26>
| | |-TextComment 0x560468194cb0 <line:13540:4, col:29> Text=" Convert rule to a string."
| | |-TextComment 0x560468194cd0 <line:13541:3, col:76> Text=" This will convert the rule program to a string which can aid in debugging"
| | `-TextComment 0x560468194cf0 <line:13542:3, col:26> Text=" the behavior of a rule."
| |-ParagraphComment 0x560468194d80 <line:13544:3, col:54>
| | `-TextComment 0x560468194d50 <col:3, col:54> Text=" The returned string must be freed with ecs_os_free."
| |-ParagraphComment 0x560468194dd0 <line:13546:3>
| | `-TextComment 0x560468194da0 <col:3> Text=" "
| |-ParamCommandComment 0x560468194df0 <col:4, line:13547:3> [in] implicitly Param="rule" ParamIndex=0
| | `-ParagraphComment 0x560468194ea0 <line:13546:15, line:13547:3>
| | |-TextComment 0x560468194e50 <line:13546:15, col:24> Text=" The rule."
| | `-TextComment 0x560468194e70 <line:13547:3> Text=" "
| `-BlockCommandComment 0x560468194ec0 <col:4, col:21> Name="return"
| `-ParagraphComment 0x560468194f20 <col:11, col:21>
| `-TextComment 0x560468194ef0 <col:11, col:21> Text=" The string"
|-RecordDecl 0x5604680eb068 <line:13599:9, col:16> col:16 struct ecs_snapshot_t
|-TypedefDecl 0x5604680eb168 <col:1, col:31> col:31 referenced ecs_snapshot_t 'struct ecs_snapshot_t':'struct ecs_snapshot_t'
| |-ElaboratedType 0x5604680eb110 'struct ecs_snapshot_t' sugar
| | `-RecordType 0x5604680eb0f0 'struct ecs_snapshot_t'
| | `-Record 0x5604680eb068 'ecs_snapshot_t'
| `-FullComment 0x560468195040 <line:13598:4, col:74>
| `-ParagraphComment 0x560468195010 <col:4, col:74>
| `-TextComment 0x560468194fe0 <col:4, col:74> Text=" A snapshot stores the state of a world in a particular point in time. "
|-FunctionDecl 0x5604680eb388 <line:13608:1, line:13609:23> line:13608:17 ecs_snapshot_take 'ecs_snapshot_t *(ecs_world_t *)'
| |-ParmVarDecl 0x5604680eb230 <line:13609:5, col:18> col:18 world 'ecs_world_t *'
| `-FullComment 0x5604681952e0 <line:13601:4, line:13605:24>
| |-ParagraphComment 0x560468195100 <line:13601:4, line:13602:65>
| | |-TextComment 0x5604681950b0 <line:13601:4, col:22> Text=" Create a snapshot."
| | `-TextComment 0x5604681950d0 <line:13602:3, col:65> Text=" This operation makes a copy of the current state of the world."
| |-ParagraphComment 0x560468195150 <line:13604:3>
| | `-TextComment 0x560468195120 <col:3> Text=" "
| |-ParamCommandComment 0x560468195170 <col:4, line:13605:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x560468195220 <line:13604:16, line:13605:3>
| | |-TextComment 0x5604681951d0 <line:13604:16, col:38> Text=" The world to snapshot."
| | `-TextComment 0x5604681951f0 <line:13605:3> Text=" "
| `-BlockCommandComment 0x560468195240 <col:4, col:24> Name="return"
| `-ParagraphComment 0x5604681952a0 <col:11, col:24>
| `-TextComment 0x560468195270 <col:11, col:24> Text=" The snapshot."
|-FunctionDecl 0x5604680eb558 <line:13619:1, line:13620:21> line:13619:17 ecs_snapshot_take_w_iter 'ecs_snapshot_t *(ecs_iter_t *)'
| |-ParmVarDecl 0x5604680eb468 <line:13620:5, col:17> col:17 iter 'ecs_iter_t *'
| `-FullComment 0x5604681955b0 <line:13611:4, line:13616:24>
| |-ParagraphComment 0x5604681953d0 <line:13611:4, line:13613:62>
| | |-TextComment 0x560468195350 <line:13611:4, col:31> Text=" Create a filtered snapshot."
| | |-TextComment 0x560468195370 <line:13612:3, col:78> Text=" This operation is the same as ecs_snapshot_take, but accepts an iterator so"
| | `-TextComment 0x560468195390 <line:13613:3, col:62> Text=" an application can control what is stored by the snapshot. "
| |-ParagraphComment 0x560468195420 <line:13615:3>
| | `-TextComment 0x5604681953f0 <col:3> Text=" "
| |-ParamCommandComment 0x560468195440 <col:4, line:13616:3> [in] implicitly Param="iter" ParamIndex=0
| | `-ParagraphComment 0x5604681954f0 <line:13615:15, line:13616:3>
| | |-TextComment 0x5604681954a0 <line:13615:15, col:68> Text=" An iterator to the data to be stored by the snapshot."
| | `-TextComment 0x5604681954c0 <line:13616:3> Text=" "
| `-BlockCommandComment 0x560468195510 <col:4, col:24> Name="return"
| `-ParagraphComment 0x560468195570 <col:11, col:24>
| `-TextComment 0x560468195540 <col:11, col:24> Text=" The snapshot."
|-FunctionDecl 0x5604680ebf00 <line:13637:1, line:13639:29> line:13637:6 ecs_snapshot_restore 'void (ecs_world_t *, ecs_snapshot_t *)'
| |-ParmVarDecl 0x5604680eb638 <line:13638:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680eb6b0 <line:13639:5, col:21> col:21 snapshot 'ecs_snapshot_t *'
| `-FullComment 0x5604681959d0 <line:13622:4, line:13634:44>
| |-ParagraphComment 0x560468195740 <line:13622:4, line:13628:12>
| | |-TextComment 0x560468195620 <line:13622:4, col:23> Text=" Restore a snapshot."
| | |-TextComment 0x560468195640 <line:13623:3, col:78> Text=" This operation restores the world to the state it was in when the specified"
| | |-TextComment 0x560468195660 <line:13624:3, col:77> Text=" snapshot was taken. A snapshot can only be used once for restoring, as its"
| | |-TextComment 0x560468195680 <line:13625:3, col:57> Text=" data replaces the data that is currently in the world."
| | |-TextComment 0x5604681956a0 <line:13626:3, col:76> Text=" This operation also resets the last issued entity handle, so any calls to"
| | |-TextComment 0x5604681956c0 <line:13627:3, col:76> Text=" ecs_new may return entity ids that have been issued before restoring the "
| | `-TextComment 0x5604681956e0 <line:13628:3, col:12> Text=" snapshot."
| |-ParagraphComment 0x5604681957b0 <line:13630:3, line:13631:31>
| | |-TextComment 0x560468195760 <line:13630:3, col:79> Text=" The world in which the snapshot is restored must be the same as the world in"
| | `-TextComment 0x560468195780 <line:13631:3, col:31> Text=" which the snapshot is taken."
| |-ParagraphComment 0x560468195800 <line:13633:3>
| | `-TextComment 0x5604681957d0 <col:3> Text=" "
| |-ParamCommandComment 0x560468195820 <col:4, line:13634:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681958d0 <line:13633:16, line:13634:3>
| | |-TextComment 0x560468195880 <line:13633:16, col:53> Text=" The world to restore the snapshot to."
| | `-TextComment 0x5604681958a0 <line:13634:3> Text=" "
| `-ParamCommandComment 0x5604681958f0 <col:4, col:44> [in] implicitly Param="snapshot" ParamIndex=1
| `-ParagraphComment 0x560468195980 <col:19, col:44>
| `-TextComment 0x560468195950 <col:19, col:44> Text=" The snapshot to restore. "
|-FunctionDecl 0x5604680ec0d8 <line:13646:1, line:13647:29> line:13646:12 ecs_snapshot_iter 'ecs_iter_t (ecs_snapshot_t *)'
| |-ParmVarDecl 0x5604680ebfe8 <line:13647:5, col:21> col:21 snapshot 'ecs_snapshot_t *'
| `-FullComment 0x560468195c50 <line:13641:4, line:13644:38>
| |-ParagraphComment 0x560468195a70 <line:13641:4, col:37>
| | `-TextComment 0x560468195a40 <col:4, col:37> Text=" Obtain iterator to snapshot data."
| |-ParagraphComment 0x560468195ac0 <line:13643:3>
| | `-TextComment 0x560468195a90 <col:3> Text=" "
| |-ParamCommandComment 0x560468195ae0 <col:4, line:13644:3> [in] implicitly Param="snapshot" ParamIndex=0
| | `-ParagraphComment 0x560468195b90 <line:13643:19, line:13644:3>
| | |-TextComment 0x560468195b40 <line:13643:19, col:48> Text=" The snapshot to iterate over."
| | `-TextComment 0x560468195b60 <line:13644:3> Text=" "
| `-BlockCommandComment 0x560468195bb0 <col:4, col:38> Name="return"
| `-ParagraphComment 0x560468195c10 <col:11, col:38>
| `-TextComment 0x560468195be0 <col:11, col:38> Text=" Iterator to snapshot data. "
|-FunctionDecl 0x5604680ec248 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:13656:21> line:13655:6 ecs_snapshot_next 'bool (ecs_iter_t *)'
| |-ParmVarDecl 0x5604680ec1b8 <line:13656:5, col:17> col:17 iter 'ecs_iter_t *'
| `-FullComment 0x560468195ed0 <line:13649:4, line:13652:59>
| |-ParagraphComment 0x560468195cf0 <line:13649:4, col:31>
| | `-TextComment 0x560468195cc0 <col:4, col:31> Text=" Progress snapshot iterator."
| |-ParagraphComment 0x560468195d40 <line:13651:3>
| | `-TextComment 0x560468195d10 <col:3> Text=" "
| |-ParamCommandComment 0x560468195d60 <col:4, line:13652:3> [in] implicitly Param="iter" ParamIndex=0
| | `-ParagraphComment 0x560468195e10 <line:13651:15, line:13652:3>
| | |-TextComment 0x560468195dc0 <line:13651:15, col:37> Text=" The snapshot iterator."
| | `-TextComment 0x560468195de0 <line:13652:3> Text=" "
| `-BlockCommandComment 0x560468195e30 <col:4, col:59> Name="return"
| `-ParagraphComment 0x560468195e90 <col:11, col:59>
| `-TextComment 0x560468195e60 <col:11, col:59> Text=" True if more data is available, otherwise false."
|-FunctionDecl 0x5604680ec418 <line:13664:1, line:13665:29> line:13664:6 ecs_snapshot_free 'void (ecs_snapshot_t *)'
| |-ParmVarDecl 0x5604680ec328 <line:13665:5, col:21> col:21 snapshot 'ecs_snapshot_t *'
| `-FullComment 0x5604681960d0 <line:13658:4, line:13661:41>
| |-ParagraphComment 0x560468195f90 <line:13658:4, line:13659:72>
| | |-TextComment 0x560468195f40 <line:13658:4, col:28> Text=" Free snapshot resources."
| | `-TextComment 0x560468195f60 <line:13659:3, col:72> Text=" This frees resources associated with a snapshot without restoring it."
| |-ParagraphComment 0x560468195fe0 <line:13661:3>
| | `-TextComment 0x560468195fb0 <col:3> Text=" "
| `-ParamCommandComment 0x560468196000 <col:4, col:41> [in] implicitly Param="snapshot" ParamIndex=0
| `-ParagraphComment 0x560468196090 <col:19, col:41>
| `-TextComment 0x560468196060 <col:19, col:41> Text=" The snapshot to free. "
|-FunctionDecl 0x5604680ec660 <line:13714:1, line:13715:20> line:13714:13 ecs_parse_whitespace 'const char *(const char *)'
| |-ParmVarDecl 0x5604680ec590 <line:13715:5, col:17> col:17 ptr 'const char *'
| `-FullComment 0x560468196370 <line:13707:4, line:13711:56>
| |-ParagraphComment 0x560468196190 <line:13707:4, line:13708:69>
| | |-TextComment 0x560468196140 <line:13707:4, col:31> Text=" Skip whitespace characters."
| | `-TextComment 0x560468196160 <line:13708:3, col:69> Text=" This function skips whitespace characters. Does not skip newlines."
| |-ParagraphComment 0x5604681961e0 <line:13710:3>
| | `-TextComment 0x5604681961b0 <col:3> Text=" "
| |-ParamCommandComment 0x560468196200 <col:4, line:13711:3> [in] implicitly Param="ptr" ParamIndex=0
| | `-ParagraphComment 0x5604681962b0 <line:13710:14, line:13711:3>
| | |-TextComment 0x560468196260 <line:13710:14, col:57> Text=" Pointer to (potential) whitespaces to skip."
| | `-TextComment 0x560468196280 <line:13711:3> Text=" "
| `-BlockCommandComment 0x5604681962d0 <col:4, col:56> Name="return"
| `-ParagraphComment 0x560468196330 <col:11, col:56>
| `-TextComment 0x560468196300 <col:11, col:56> Text=" Pointer to the next non-whitespace character."
|-FunctionDecl 0x5604680ec7e8 <line:13724:1, line:13725:20> line:13724:13 ecs_parse_eol_and_whitespace 'const char *(const char *)'
| |-ParmVarDecl 0x5604680ec750 <line:13725:5, col:17> col:17 ptr 'const char *'
| `-FullComment 0x560468196620 <line:13717:4, line:13721:56>
| |-ParagraphComment 0x560468196430 <line:13717:4, line:13718:45>
| | |-TextComment 0x5604681963e0 <line:13717:4, col:43> Text=" Skip whitespace and newline characters."
| | `-TextComment 0x560468196400 <line:13718:3, col:45> Text=" This function skips whitespace characters."
| |-ParagraphComment 0x560468196480 <line:13720:3>
| | `-TextComment 0x560468196450 <col:3> Text=" "
| |-ParamCommandComment 0x5604681964a0 <col:4, line:13721:3> [in] implicitly Param="ptr" ParamIndex=0
| | `-ParagraphComment 0x560468196560 <line:13720:14, line:13721:3>
| | |-TextComment 0x560468196510 <line:13720:14, col:57> Text=" Pointer to (potential) whitespaces to skip."
| | `-TextComment 0x560468196530 <line:13721:3> Text=" "
| `-BlockCommandComment 0x560468196580 <col:4, col:56> Name="return"
| `-ParagraphComment 0x5604681965e0 <col:11, col:56>
| `-TextComment 0x5604681965b0 <col:11, col:56> Text=" Pointer to the next non-whitespace character."
|-FunctionDecl 0x5604680ec9f0 <line:13736:1, line:13738:16> line:13736:13 ecs_parse_digit 'const char *(const char *, char *)'
| |-ParmVarDecl 0x5604680ec8d0 <line:13737:5, col:17> col:17 ptr 'const char *'
| |-ParmVarDecl 0x5604680ec950 <line:13738:5, col:11> col:11 token 'char *'
| `-FullComment 0x5604681969d0 <line:13727:4, line:13733:52>
| |-ParagraphComment 0x560468196710 <line:13727:4, line:13729:65>
| | |-TextComment 0x560468196690 <line:13727:4, col:16> Text=" Parse digit."
| | |-TextComment 0x5604681966b0 <line:13728:3, col:77> Text=" This function will parse until the first non-digit character is found. The"
| | `-TextComment 0x5604681966d0 <line:13729:3, col:65> Text=" provided expression must contain at least one digit character."
| |-ParagraphComment 0x560468196760 <line:13731:3>
| | `-TextComment 0x560468196730 <col:3> Text=" "
| |-ParamCommandComment 0x560468196780 <col:4, line:13732:3> [in] implicitly Param="ptr" ParamIndex=0
| | `-ParagraphComment 0x560468196830 <line:13731:14, line:13732:3>
| | |-TextComment 0x5604681967e0 <line:13731:14, col:38> Text=" The expression to parse."
| | `-TextComment 0x560468196800 <line:13732:3> Text=" "
| |-ParamCommandComment 0x560468196850 <col:4, line:13733:3> [in] implicitly Param="token" ParamIndex=1
| | `-ParagraphComment 0x560468196900 <line:13732:16, line:13733:3>
| | |-TextComment 0x5604681968b0 <line:13732:16, col:34> Text=" The output buffer."
| | `-TextComment 0x5604681968d0 <line:13733:3> Text=" "
| `-BlockCommandComment 0x560468196920 <col:4, col:52> Name="return"
| `-ParagraphComment 0x560468196980 <col:11, col:52>
| `-TextComment 0x560468196950 <col:11, col:52> Text=" Pointer to the first non-digit character."
|-FunctionDecl 0x5604680ecc40 <line:13747:1, line:13749:24> line:13747:13 ecs_parse_fluff 'const char *(const char *, char **)'
| |-ParmVarDecl 0x5604680ecae0 <line:13748:5, col:17> col:17 ptr 'const char *'
| |-ParmVarDecl 0x5604680ecb60 <line:13749:5, col:12> col:12 last_comment 'char **'
| `-FullComment 0x560468196c70 <line:13740:4, line:13744:56>
| |-ParagraphComment 0x560468196a90 <line:13740:4, line:13741:76>
| | |-TextComment 0x560468196a40 <line:13740:4, col:34> Text=" Skip whitespaces and comments."
| | `-TextComment 0x560468196a60 <line:13741:3, col:76> Text=" This function skips whitespace characters and comments (single line, //)."
| |-ParagraphComment 0x560468196ae0 <line:13743:3>
| | `-TextComment 0x560468196ab0 <col:3> Text=" "
| |-ParamCommandComment 0x560468196b00 <col:4, line:13744:3> [in] implicitly Param="ptr" ParamIndex=0
| | `-ParagraphComment 0x560468196bb0 <line:13743:14, line:13744:3>
| | |-TextComment 0x560468196b60 <line:13743:14, col:66> Text=" pointer to (potential) whitespaces/comments to skip."
| | `-TextComment 0x560468196b80 <line:13744:3> Text=" "
| `-BlockCommandComment 0x560468196bd0 <col:4, col:56> Name="return"
| `-ParagraphComment 0x560468196c30 <col:11, col:56>
| `-TextComment 0x560468196c00 <col:11, col:56> Text=" pointer to the next non-whitespace character."
|-FunctionDecl 0x5604680ed030 <line:13761:1, line:13766:15> line:13761:13 ecs_parse_token 'const char *(const char *, const char *, const char *, char *, char)'
| |-ParmVarDecl 0x5604680ecd30 <line:13762:5, col:17> col:17 name 'const char *'
| |-ParmVarDecl 0x5604680ecdb0 <line:13763:5, col:17> col:17 expr 'const char *'
| |-ParmVarDecl 0x5604680ece30 <line:13764:5, col:17> col:17 ptr 'const char *'
| |-ParmVarDecl 0x5604680eceb0 <line:13765:5, col:11> col:11 token_out 'char *'
| |-ParmVarDecl 0x5604680ecf28 <line:13766:5, col:10> col:10 delim 'char'
| `-FullComment 0x5604681971a0 <line:13751:4, line:13758:64>
| |-ParagraphComment 0x560468196d30 <line:13751:4, line:13752:66>
| | |-TextComment 0x560468196ce0 <line:13751:4, col:25> Text=" Parse a single token."
| | `-TextComment 0x560468196d00 <line:13752:3, col:66> Text=" This function can be used as simple tokenizer by other parsers."
| |-ParagraphComment 0x560468196d80 <line:13754:3>
| | `-TextComment 0x560468196d50 <col:3> Text=" "
| |-ParamCommandComment 0x560468196da0 <col:4, line:13755:3> [in] implicitly Param="name" ParamIndex=0
| | `-ParagraphComment 0x560468196e50 <line:13754:15, line:13755:3>
| | |-TextComment 0x560468196e00 <line:13754:15, col:45> Text=" of program (used for logging)."
| | `-TextComment 0x560468196e20 <line:13755:3> Text=" "
| |-ParamCommandComment 0x560468196e70 <col:4, line:13756:3> [in] implicitly Param="expr" ParamIndex=1
| | `-ParagraphComment 0x560468196f20 <line:13755:15, line:13756:3>
| | |-TextComment 0x560468196ed0 <line:13755:15, col:41> Text=" pointer to token to parse."
| | `-TextComment 0x560468196ef0 <line:13756:3> Text=" "
| |-ParamCommandComment 0x560468196f40 <col:4, line:13757:3> [in] implicitly Param="ptr" ParamIndex=2
| | `-ParagraphComment 0x560468196ff0 <line:13756:14, line:13757:3>
| | |-TextComment 0x560468196fa0 <line:13756:14, col:50> Text=" pointer to first character to parse."
| | `-TextComment 0x560468196fc0 <line:13757:3> Text=" "
| |-ParamCommandComment 0x560468197010 <col:4, line:13758:3> [in] implicitly Param="token_out" ParamIndex=3
| | `-ParagraphComment 0x5604681970c0 <line:13757:20, line:13758:3>
| | |-TextComment 0x560468197070 <line:13757:20, col:76> Text=" Parsed token (buffer should be ECS_MAX_TOKEN_SIZE large)"
| | `-TextComment 0x560468197090 <line:13758:3> Text=" "
| `-BlockCommandComment 0x5604681970e0 <col:4, col:64> Name="return"
| `-ParagraphComment 0x560468197140 <col:11, col:64>
| `-TextComment 0x560468197110 <col:11, col:64> Text=" Pointer to the next token, or NULL if error occurred."
|-FunctionDecl 0x5604680ed490 <line:13796:1, line:13801:25> line:13796:7 ecs_parse_term 'char *(const ecs_world_t *, const char *, const char *, const char *, ecs_term_t *)'
| |-ParmVarDecl 0x5604680ed138 <line:13797:5, col:24> col:24 world 'const ecs_world_t *'
| |-ParmVarDecl 0x5604680ed1b8 <line:13798:5, col:17> col:17 name 'const char *'
| |-ParmVarDecl 0x5604680ed238 <line:13799:5, col:17> col:17 expr 'const char *'
| |-ParmVarDecl 0x5604680ed2b8 <line:13800:5, col:17> col:17 ptr 'const char *'
| |-ParmVarDecl 0x5604680ed330 <line:13801:5, col:17> col:17 term_out 'ecs_term_t *'
| `-FullComment 0x560468197b40 <line:13768:4, line:13793:62>
| |-ParagraphComment 0x560468197290 <line:13768:4, line:13770:31>
| | |-TextComment 0x560468197210 <line:13768:4, col:29> Text=" Parse term in expression."
| | |-TextComment 0x560468197230 <line:13769:3, col:77> Text=" This operation parses a single term in an expression and returns a pointer"
| | `-TextComment 0x560468197250 <line:13770:3, col:31> Text=" to the next term expression."
| |-ParagraphComment 0x560468197300 <line:13772:3, line:13773:66>
| | |-TextComment 0x5604681972b0 <line:13772:3, col:79> Text=" If the returned pointer points to the 0-terminator, the expression is fully "
| | `-TextComment 0x5604681972d0 <line:13773:3, col:66> Text=" parsed. The function would typically be called in a while loop:"
| |-ParagraphComment 0x560468197440 <line:13775:3, line:13776:78>
| | |-TextComment 0x560468197320 <line:13775:3, col:26> Text=" const char *ptr = expr;"
| | |-TextComment 0x560468197340 <line:13776:3, col:17> Text=" while (ptr[0] "
| | |-TextComment 0x560468197360 <col:18> Text="&"
| | |-TextComment 0x560468197380 <col:19> Text="&"
| | |-TextComment 0x5604681973a0 <col:20, col:66> Text=" (ptr = ecs_parse_term(world, name, expr, ptr, "
| | |-TextComment 0x5604681973c0 <col:67, col:71> Text="&term"
| | `-TextComment 0x5604681973e0 <col:72, col:78> Text="))) { }"
| |-ParagraphComment 0x5604681974e0 <line:13778:3, line:13780:22>
| | |-TextComment 0x560468197460 <line:13778:3, col:74> Text=" The operation does not attempt to find entity ids from the names in the"
| | |-TextComment 0x560468197480 <line:13779:3, col:79> Text=" expression. Use the ecs_term_resolve_ids function to resolve the identifiers"
| | `-TextComment 0x5604681974a0 <line:13780:3, col:22> Text=" in the parsed term."
| |-ParagraphComment 0x560468197580 <line:13782:3, line:13784:34>
| | |-TextComment 0x560468197500 <line:13782:3, col:74> Text=" The returned term will in most cases contain allocated resources, which"
| | |-TextComment 0x560468197520 <line:13783:3, col:79> Text=" should freed (or used) by the application. To free the resources for a term,"
| | `-TextComment 0x560468197540 <line:13784:3, col:34> Text=" use the ecs_term_free function."
| |-ParagraphComment 0x5604681975d0 <line:13786:3, col:62>
| | `-TextComment 0x5604681975a0 <col:3, col:62> Text=" The parser accepts expressions in the legacy string format."
| |-ParagraphComment 0x560468197620 <line:13788:3>
| | `-TextComment 0x5604681975f0 <col:3> Text=" "
| |-ParamCommandComment 0x560468197640 <col:4, line:13789:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x5604681976f0 <line:13788:16, line:13789:3>
| | |-TextComment 0x5604681976a0 <line:13788:16, col:26> Text=" The world."
| | `-TextComment 0x5604681976c0 <line:13789:3> Text=" "
| |-ParamCommandComment 0x560468197710 <col:4, line:13790:3> [in] implicitly Param="name" ParamIndex=1
| | `-ParagraphComment 0x5604681977c0 <line:13789:15, line:13790:3>
| | |-TextComment 0x560468197770 <line:13789:15, col:73> Text=" The name of the expression (optional, improves error logs)"
| | `-TextComment 0x560468197790 <line:13790:3> Text=" "
| |-ParamCommandComment 0x5604681977e0 <col:4, line:13791:3> [in] implicitly Param="expr" ParamIndex=2
| | `-ParagraphComment 0x560468197890 <line:13790:15, line:13791:3>
| | |-TextComment 0x560468197840 <line:13790:15, col:70> Text=" The expression to parse (optional, improves error logs)"
| | `-TextComment 0x560468197860 <line:13791:3> Text=" "
| |-ParamCommandComment 0x5604681978b0 <col:4, line:13792:3> [in] implicitly Param="ptr" ParamIndex=3
| | `-ParagraphComment 0x560468197960 <line:13791:14, line:13792:3>
| | |-TextComment 0x560468197910 <line:13791:14, col:64> Text=" The pointer to the current term (must be in expr)."
| | `-TextComment 0x560468197930 <line:13792:3> Text=" "
| |-ParamCommandComment 0x560468197980 <col:4, line:13793:3> [in] implicitly Param="term_out" ParamIndex=4
| | `-ParagraphComment 0x560468197a30 <line:13792:19, line:13793:3>
| | |-TextComment 0x5604681979e0 <line:13792:19, col:46> Text=" Out parameter for the term."
| | `-TextComment 0x560468197a00 <line:13793:3> Text=" "
| `-BlockCommandComment 0x560468197a50 <col:4, col:62> Name="return"
| `-ParagraphComment 0x560468197ab0 <col:11, col:62>
| `-TextComment 0x560468197a80 <col:11, col:62> Text=" pointer to next term if successful, NULL if failed."
|-RecordDecl 0x5604680ed618 <line:13865:9, col:16> col:16 struct ecs_http_server_t
|-TypedefDecl 0x5604680ed718 <col:1, col:34> col:34 referenced ecs_http_server_t 'struct ecs_http_server_t':'struct ecs_http_server_t'
| |-ElaboratedType 0x5604680ed6c0 'struct ecs_http_server_t' sugar
| | `-RecordType 0x5604680ed6a0 'struct ecs_http_server_t'
| | `-Record 0x5604680ed618 'ecs_http_server_t'
| `-FullComment 0x560468197c10 <line:13864:4, col:16>
| `-ParagraphComment 0x560468197be0 <col:4, col:16>
| `-TextComment 0x560468197bb0 <col:4, col:16> Text=" HTTP server "
|-RecordDecl 0x5604680ed7b0 <line:13868:9, line:13874:1> line:13868:9 struct definition
| |-FullComment 0x560468197ce0 <line:13867:4, col:60>
| | `-ParagraphComment 0x560468197cb0 <col:4, col:60>
| | `-TextComment 0x560468197c80 <col:4, col:60> Text=" A connection manages communication with the remote host "
| |-FieldDecl 0x5604680ed860 <line:13869:5, col:14> col:14 id 'uint64_t':'unsigned long'
| |-FieldDecl 0x5604680ed938 <line:13870:5, col:24> col:24 server 'ecs_http_server_t *'
| |-FieldDecl 0x5604680eda28 <line:13872:5, col:18> col:10 host 'char[128]'
| `-FieldDecl 0x5604680edb18 <line:13873:5, col:17> col:10 port 'char[16]'
|-TypedefDecl 0x5604680edbc8 <line:13868:1, line:13874:3> col:3 referenced ecs_http_connection_t 'struct ecs_http_connection_t':'ecs_http_connection_t'
| |-ElaboratedType 0x5604680edb70 'struct ecs_http_connection_t' sugar
| | `-RecordType 0x5604680ed830 'ecs_http_connection_t'
| | `-Record 0x5604680ed7b0 ''
| `-FullComment 0x560468197db0 <line:13867:4, col:60>
| `-ParagraphComment 0x560468197d80 <col:4, col:60>
| `-TextComment 0x560468197d50 <col:4, col:60> Text=" A connection manages communication with the remote host "
|-RecordDecl 0x5604680edc60 <line:13877:9, line:13880:1> line:13877:9 struct definition
| |-FullComment 0x560468197ed0 <line:13876:4, col:56>
| | `-ParagraphComment 0x560468197ea0 <col:4, col:56>
| | |-TextComment 0x560468197e20 <col:4, col:33> Text=" Helper type used for headers "
| | |-TextComment 0x560468197e40 <col:34> Text="&"
| | `-TextComment 0x560468197e60 <col:35, col:56> Text=" URL query parameters "
| |-FieldDecl 0x5604680edd18 <line:13878:5, col:17> col:17 key 'const char *'
| `-FieldDecl 0x5604680edd80 <line:13879:5, col:17> col:17 value 'const char *'
|-TypedefDecl 0x5604680ede28 <line:13877:1, line:13880:3> col:3 referenced ecs_http_key_value_t 'struct ecs_http_key_value_t':'ecs_http_key_value_t'
| |-ElaboratedType 0x5604680eddd0 'struct ecs_http_key_value_t' sugar
| | `-RecordType 0x5604680edce0 'ecs_http_key_value_t'
| | `-Record 0x5604680edc60 ''
| `-FullComment 0x560468197ff0 <line:13876:4, col:56>
| `-ParagraphComment 0x560468197fc0 <col:4, col:56>
| |-TextComment 0x560468197f40 <col:4, col:33> Text=" Helper type used for headers "
| |-TextComment 0x560468197f60 <col:34> Text="&"
| `-TextComment 0x560468197f80 <col:35, col:56> Text=" URL query parameters "
|-EnumDecl 0x560468051970 <line:13883:9, line:13890:1> line:13883:9
| |-FullComment 0x5604681980c0 <line:13882:4, col:30>
| | `-ParagraphComment 0x560468198090 <col:4, col:30>
| | `-TextComment 0x560468198060 <col:4, col:30> Text=" Supported request methods "
| |-EnumConstantDecl 0x560468051a30 <line:13884:5> col:5 EcsHttpGet 'int'
| |-EnumConstantDecl 0x560468051a80 <line:13885:5> col:5 EcsHttpPost 'int'
| |-EnumConstantDecl 0x560468051ad0 <line:13886:5> col:5 EcsHttpPut 'int'
| |-EnumConstantDecl 0x560468051b20 <line:13887:5> col:5 EcsHttpDelete 'int'
| |-EnumConstantDecl 0x560468051b70 <line:13888:5> col:5 EcsHttpOptions 'int'
| `-EnumConstantDecl 0x560468051bc0 <line:13889:5> col:5 EcsHttpMethodUnsupported 'int'
|-TypedefDecl 0x560468051c68 <line:13883:1, line:13890:3> col:3 referenced ecs_http_method_t 'enum ecs_http_method_t':'ecs_http_method_t'
| |-ElaboratedType 0x560468051c10 'enum ecs_http_method_t' sugar
| | `-EnumType 0x560468051a10 'ecs_http_method_t'
| | `-Enum 0x560468051970 ''
| `-FullComment 0x560468198190 <line:13882:4, col:30>
| `-ParagraphComment 0x560468198160 <col:4, col:30>
| `-TextComment 0x560468198130 <col:4, col:30> Text=" Supported request methods "
|-RecordDecl 0x560468051d00 <line:13893:9, line:13905:1> line:13893:9 struct definition
| |-FullComment 0x560468198260 <line:13892:4, col:14>
| | `-ParagraphComment 0x560468198230 <col:4, col:14>
| | `-TextComment 0x560468198200 <col:4, col:14> Text=" A request "
| |-FieldDecl 0x560468051db0 <line:13894:5, col:14> col:14 id 'uint64_t':'unsigned long'
| |-FieldDecl 0x560468051e30 <line:13896:5, col:23> col:23 method 'ecs_http_method_t':'ecs_http_method_t'
| |-FieldDecl 0x560468051e98 <line:13897:5, col:11> col:11 path 'char *'
| |-FieldDecl 0x560468051f00 <line:13898:5, col:11> col:11 body 'char *'
| |-FieldDecl 0x5604680520c8 <line:13899:5, col:59> col:26 headers 'ecs_http_key_value_t[32]'
| |-FieldDecl 0x560468052198 <line:13900:5, col:58> col:26 params 'ecs_http_key_value_t[32]'
| |-FieldDecl 0x5604680521f8 <line:13901:5, col:13> col:13 header_count 'int32_t':'int'
| |-FieldDecl 0x560468052258 <line:13902:5, col:13> col:13 param_count 'int32_t':'int'
| `-FieldDecl 0x560468052338 <line:13904:5, col:28> col:28 conn 'ecs_http_connection_t *'
|-TypedefDecl 0x5604680523e8 <line:13893:1, line:13905:3> col:3 referenced ecs_http_request_t 'struct ecs_http_request_t':'ecs_http_request_t'
| |-ElaboratedType 0x560468052390 'struct ecs_http_request_t' sugar
| | `-RecordType 0x560468051d80 'ecs_http_request_t'
| | `-Record 0x560468051d00 ''
| `-FullComment 0x560468198330 <line:13892:4, col:14>
| `-ParagraphComment 0x560468198300 <col:4, col:14>
| `-TextComment 0x5604681982d0 <col:4, col:14> Text=" A request "
|-RecordDecl 0x560468052480 <line:13908:9, line:13914:1> line:13908:9 struct definition
| |-FullComment 0x560468198400 <line:13907:4, col:12>
| | `-ParagraphComment 0x5604681983d0 <col:4, col:12>
| | `-TextComment 0x5604681983a0 <col:4, col:12> Text=" A reply "
| |-FieldDecl 0x560468052538 <line:13909:5, col:9> col:9 code 'int'
| | `-FullComment 0x5604681984f0 <col:37, col:51>
| | `-ParagraphComment 0x5604681984a0 <col:37, col:51>
| | `-TextComment 0x560468198470 <col:37, col:51> Text=" default = 200 "
| |-FieldDecl 0x5604680525c8 <line:13910:5, col:18> col:18 body 'ecs_strbuf_t':'struct ecs_strbuf_t'
| | `-FullComment 0x5604681985c0 <col:37, col:50>
| | `-ParagraphComment 0x560468198590 <col:37, col:50>
| | `-TextComment 0x560468198560 <col:37, col:50> Text=" default = "" "
| |-FieldDecl 0x560468052660 <line:13911:5, col:17> col:17 status 'const char *'
| | `-FullComment 0x560468198690 <col:37, col:50>
| | `-ParagraphComment 0x560468198660 <col:37, col:50>
| | `-TextComment 0x560468198630 <col:37, col:50> Text=" default = OK "
| |-FieldDecl 0x5604680526f0 <line:13912:5, col:17> col:17 content_type 'const char *'
| | `-FullComment 0x560468198760 <col:37, col:64>
| | `-ParagraphComment 0x560468198730 <col:37, col:64>
| | `-TextComment 0x560468198700 <col:37, col:64> Text=" default = application/json "
| `-FieldDecl 0x560468052778 <line:13913:5, col:18> col:18 headers 'ecs_strbuf_t':'struct ecs_strbuf_t'
| `-FullComment 0x560468198830 <col:37, col:50>
| `-ParagraphComment 0x560468198800 <col:37, col:50>
| `-TextComment 0x5604681987d0 <col:37, col:50> Text=" default = "" "
|-TypedefDecl 0x560468052858 <line:13908:1, line:13914:3> col:3 referenced ecs_http_reply_t 'struct ecs_http_reply_t':'ecs_http_reply_t'
| |-ElaboratedType 0x560468052800 'struct ecs_http_reply_t' sugar
| | `-RecordType 0x560468052500 'ecs_http_reply_t'
| | `-Record 0x560468052480 ''
| `-FullComment 0x560468198900 <line:13907:4, col:12>
| `-ParagraphComment 0x5604681988d0 <col:4, col:12>
| `-TextComment 0x5604681988a0 <col:4, col:12> Text=" A reply "
|-VarDecl 0x5604680528d8 <line:13920:1, col:16> col:16 ecs_http_request_received_count 'int64_t':'long' extern
|-VarDecl 0x560468052950 <line:13921:1, col:16> col:16 ecs_http_request_invalid_count 'int64_t':'long' extern
|-VarDecl 0x5604680529c8 <line:13922:1, col:16> col:16 ecs_http_request_handled_ok_count 'int64_t':'long' extern
|-VarDecl 0x560468052a40 <line:13923:1, col:16> col:16 ecs_http_request_handled_error_count 'int64_t':'long' extern
|-VarDecl 0x560468052ab8 <line:13924:1, col:16> col:16 ecs_http_request_not_handled_count 'int64_t':'long' extern
|-VarDecl 0x560468052b30 <line:13925:1, col:16> col:16 ecs_http_request_preflight_count 'int64_t':'long' extern
|-VarDecl 0x560468052ba8 <line:13926:1, col:16> col:16 ecs_http_send_ok_count 'int64_t':'long' extern
|-VarDecl 0x560468052c20 <line:13927:1, col:16> col:16 ecs_http_send_error_count 'int64_t':'long' extern
|-VarDecl 0x560468052c98 <line:13928:1, col:16> col:16 ecs_http_busy_count 'int64_t':'long' extern
|-TypedefDecl 0x5604680530e0 <line:13934:1, line:13937:14> line:13934:16 referenced ecs_http_reply_action_t 'bool (*)(const ecs_http_request_t *, ecs_http_reply_t *, void *)'
| |-PointerType 0x560468053070 'bool (*)(const ecs_http_request_t *, ecs_http_reply_t *, void *)'
| | `-ParenType 0x560468053010 'bool (const ecs_http_request_t *, ecs_http_reply_t *, void *)' sugar
| | `-FunctionProtoType 0x560468052fd0 'bool (const ecs_http_request_t *, ecs_http_reply_t *, void *)' cdecl
| | |-BuiltinType 0x560467ec1830 'bool'
| | |-PointerType 0x560468052d80 'const ecs_http_request_t *'
| | | `-QualType 0x560468052d31 'const ecs_http_request_t' const
| | | `-TypedefType 0x560468052d30 'ecs_http_request_t' sugar
| | | |-Typedef 0x5604680523e8 'ecs_http_request_t'
| | | `-ElaboratedType 0x560468052390 'struct ecs_http_request_t' sugar
| | | `-RecordType 0x560468051d80 'ecs_http_request_t'
| | | `-Record 0x560468051d00 ''
| | |-PointerType 0x560468052e70 'ecs_http_reply_t *'
| | | `-TypedefType 0x560468052e20 'ecs_http_reply_t' sugar
| | | |-Typedef 0x560468052858 'ecs_http_reply_t'
| | | `-ElaboratedType 0x560468052800 'struct ecs_http_reply_t' sugar
| | | `-RecordType 0x560468052500 'ecs_http_reply_t'
| | | `-Record 0x560468052480 ''
| | `-PointerType 0x560467ec1f30 'void *'
| | `-BuiltinType 0x560467ec1810 'void'
| `-FullComment 0x560468198a40 <line:13930:4, line:13933:25>
| `-ParagraphComment 0x560468198a10 <line:13930:4, line:13933:25>
| |-TextComment 0x560468198970 <line:13930:4, col:21> Text=" Request callback."
| |-TextComment 0x560468198990 <line:13931:3, col:77> Text=" Invoked for each valid request. The function should populate the reply and"
| |-TextComment 0x5604681989b0 <line:13932:3, col:78> Text=" return true. When the function returns false, the server will reply with a "
| `-TextComment 0x5604681989d0 <line:13933:3, col:25> Text=" 404 (Not found) code. "
|-RecordDecl 0x560468053168 <line:13940:9, line:13946:1> line:13940:9 struct definition
| |-FullComment 0x560468198b10 <line:13939:4, col:36>
| | `-ParagraphComment 0x560468198ae0 <col:4, col:36>
| | `-TextComment 0x560468198ab0 <col:4, col:36> Text=" Used with ecs_http_server_init. "
| |-FieldDecl 0x560468053240 <line:13941:5, col:29> col:29 callback 'ecs_http_reply_action_t':'bool (*)(const ecs_http_request_t *, ecs_http_reply_t *, void *)'
| |-FieldDecl 0x5604680532a8 <line:13942:5, col:11> col:11 ctx 'void *'
| |-FieldDecl 0x560468053308 <line:13943:5, col:14> col:14 port 'uint16_t':'unsigned short'
| |-FieldDecl 0x560468053370 <line:13944:5, col:17> col:17 ipaddr 'const char *'
| `-FieldDecl 0x5604680533d0 <line:13945:5, col:13> col:13 send_queue_wait_ms 'int32_t':'int'
|-TypedefDecl 0x560468053478 <line:13940:1, line:13946:3> col:3 referenced ecs_http_server_desc_t 'struct ecs_http_server_desc_t':'ecs_http_server_desc_t'
| |-ElaboratedType 0x560468053420 'struct ecs_http_server_desc_t' sugar
| | `-RecordType 0x5604680531f0 'ecs_http_server_desc_t'
| | `-Record 0x560468053168 ''
| `-FullComment 0x560468198be0 <line:13939:4, col:36>
| `-ParagraphComment 0x560468198bb0 <col:4, col:36>
| `-TextComment 0x560468198b80 <col:4, col:36> Text=" Used with ecs_http_server_init. "
|-FunctionDecl 0x560468053688 <line:13955:1, line:13956:39> line:13955:20 ecs_http_server_init 'ecs_http_server_t *(const ecs_http_server_desc_t *)'
| |-ParmVarDecl 0x560468053598 <line:13956:5, col:35> col:35 desc 'const ecs_http_server_desc_t *'
| `-FullComment 0x560468198e80 <line:13948:4, line:13952:54>
| |-ParagraphComment 0x560468198ca0 <line:13948:4, line:13949:57>
| | |-TextComment 0x560468198c50 <line:13948:4, col:19> Text=" Create server. "
| | `-TextComment 0x560468198c70 <line:13949:3, col:57> Text=" Use ecs_http_server_start to start receiving requests."
| |-ParagraphComment 0x560468198cf0 <line:13951:3>
| | `-TextComment 0x560468198cc0 <col:3> Text=" "
| |-ParamCommandComment 0x560468198d10 <col:4, line:13952:3> [in] implicitly Param="desc" ParamIndex=0
| | `-ParagraphComment 0x560468198dc0 <line:13951:15, line:13952:3>
| | |-TextComment 0x560468198d70 <line:13951:15, col:47> Text=" Server configuration parameters."
| | `-TextComment 0x560468198d90 <line:13952:3> Text=" "
| `-BlockCommandComment 0x560468198de0 <col:4, col:54> Name="return"
| `-ParagraphComment 0x560468198e40 <col:11, col:54>
| `-TextComment 0x560468198e10 <col:11, col:54> Text=" The new server, or NULL if creation failed."
|-FunctionDecl 0x560468053858 <line:13964:1, line:13965:30> line:13964:6 ecs_http_server_fini 'void (ecs_http_server_t *)'
| |-ParmVarDecl 0x560468053768 <line:13965:5, col:24> col:24 server 'ecs_http_server_t *'
| `-FullComment 0x560468199080 <line:13958:4, line:13961:39>
| |-ParagraphComment 0x560468198f40 <line:13958:4, line:13959:63>
| | |-TextComment 0x560468198ef0 <line:13958:4, col:20> Text=" Destroy server. "
| | `-TextComment 0x560468198f10 <line:13959:3, col:63> Text=" This operation will stop the server if it was still running."
| |-ParagraphComment 0x560468198f90 <line:13961:3>
| | `-TextComment 0x560468198f60 <col:3> Text=" "
| `-ParamCommandComment 0x560468198fb0 <col:4, col:39> [in] implicitly Param="server" ParamIndex=0
| `-ParagraphComment 0x560468199040 <col:17, col:39>
| `-TextComment 0x560468199010 <col:17, col:39> Text=" The server to destroy."
|-FunctionDecl 0x5604680f7430 <line:13974:1, line:13975:30> line:13974:5 ecs_http_server_start 'int (ecs_http_server_t *)'
| |-ParmVarDecl 0x5604680f7330 <line:13975:5, col:24> col:24 server 'ecs_http_server_t *'
| `-FullComment 0x560468199320 <line:13967:4, line:13971:50>
| |-ParagraphComment 0x560468199140 <line:13967:4, line:13968:67>
| | |-TextComment 0x5604681990f0 <line:13967:4, col:18> Text=" Start server. "
| | `-TextComment 0x560468199110 <line:13968:3, col:67> Text=" After this operation the server will be able to accept requests."
| |-ParagraphComment 0x560468199190 <line:13970:3>
| | `-TextComment 0x560468199160 <col:3> Text=" "
| |-ParamCommandComment 0x5604681991b0 <col:4, line:13971:3> [in] implicitly Param="server" ParamIndex=0
| | `-ParagraphComment 0x560468199260 <line:13970:17, line:13971:3>
| | |-TextComment 0x560468199210 <line:13970:17, col:37> Text=" The server to start."
| | `-TextComment 0x560468199230 <line:13971:3> Text=" "
| `-BlockCommandComment 0x560468199280 <col:4, col:50> Name="return"
| `-ParagraphComment 0x5604681992e0 <col:11, col:50>
| `-TextComment 0x5604681992b0 <col:11, col:50> Text=" Zero if successful, non-zero if failed."
|-FunctionDecl 0x5604680f76a8 <line:13984:1, line:13986:27> line:13984:6 ecs_http_server_dequeue 'void (ecs_http_server_t *, float)'
| |-ParmVarDecl 0x5604680f7518 <line:13985:5, col:24> col:24 server 'ecs_http_server_t *'
| |-ParmVarDecl 0x5604680f7598 <line:37:21, line:13986:17> col:17 delta_time 'float'
| `-FullComment 0x560468199550 <line:13977:4, line:13981:58>
| |-ParagraphComment 0x560468199410 <line:13977:4, line:13979:55>
| | |-TextComment 0x560468199390 <line:13977:4, col:29> Text=" Process server requests. "
| | |-TextComment 0x5604681993b0 <line:13978:3, col:78> Text=" This operation invokes the reply callback for each received request. No new"
| | `-TextComment 0x5604681993d0 <line:13979:3, col:55> Text=" requests will be enqueued while processing requests."
| |-ParagraphComment 0x560468199460 <line:13981:3>
| | `-TextComment 0x560468199430 <col:3> Text=" "
| `-ParamCommandComment 0x560468199480 <col:4, col:58> [in] implicitly Param="server" ParamIndex=0
| `-ParagraphComment 0x560468199510 <col:17, col:58>
| `-TextComment 0x5604681994e0 <col:17, col:58> Text=" The server for which to process requests."
|-FunctionDecl 0x5604680f7828 <line:13994:1, line:13995:30> line:13994:6 ecs_http_server_stop 'void (ecs_http_server_t *)'
| |-ParmVarDecl 0x5604680f7798 <line:13995:5, col:24> col:24 server 'ecs_http_server_t *'
| `-FullComment 0x560468199750 <line:13988:4, line:13991:28>
| |-ParagraphComment 0x560468199610 <line:13988:4, line:13989:56>
| | |-TextComment 0x5604681995c0 <line:13988:4, col:17> Text=" Stop server. "
| | `-TextComment 0x5604681995e0 <line:13989:3, col:56> Text=" After this operation no new requests can be received."
| |-ParagraphComment 0x560468199660 <line:13991:3>
| | `-TextComment 0x560468199630 <col:3> Text=" "
| `-ParamCommandComment 0x560468199680 <col:4, col:28> [in] implicitly Param="server" ParamIndex=0
| `-ParagraphComment 0x560468199710 <col:17, col:28>
| `-TextComment 0x5604681996e0 <col:17, col:28> Text=" The server."
|-FunctionDecl 0x5604680f7aa0 <line:14004:1, line:14006:21> line:14004:13 ecs_http_get_header 'const char *(const ecs_http_request_t *, const char *)'
| |-ParmVarDecl 0x5604680f7908 <line:14005:5, col:31> col:31 req 'const ecs_http_request_t *'
| |-ParmVarDecl 0x5604680f7988 <line:14006:5, col:17> col:17 name 'const char *'
| `-FullComment 0x560468199ab0 <line:13997:4, line:14001:50>
| |-ParagraphComment 0x5604681997f0 <line:13997:4, col:28>
| | `-TextComment 0x5604681997c0 <col:4, col:28> Text=" Find header in request. "
| |-ParagraphComment 0x560468199840 <line:13999:3>
| | `-TextComment 0x560468199810 <col:3> Text=" "
| |-ParamCommandComment 0x560468199860 <col:4, line:14000:3> [in] implicitly Param="req" ParamIndex=0
| | `-ParagraphComment 0x560468199910 <line:13999:14, line:14000:3>
| | |-TextComment 0x5604681998c0 <line:13999:14, col:26> Text=" The request."
| | `-TextComment 0x5604681998e0 <line:14000:3> Text=" "
| |-ParamCommandComment 0x560468199930 <col:4, line:14001:3> [in] implicitly Param="name" ParamIndex=1
| | `-ParagraphComment 0x5604681999e0 <line:14000:15, line:14001:3>
| | |-TextComment 0x560468199990 <line:14000:15, col:41> Text=" name of the header to find"
| | `-TextComment 0x5604681999b0 <line:14001:3> Text=" "
| `-BlockCommandComment 0x560468199a00 <col:4, col:50> Name="return"
| `-ParagraphComment 0x560468199a60 <col:11, col:50>
| `-TextComment 0x560468199a30 <col:11, col:50> Text=" The header value, or NULL if not found."
|-FunctionDecl 0x5604680f7ca8 <line:14015:1, line:14017:21> line:14015:13 ecs_http_get_param 'const char *(const ecs_http_request_t *, const char *)'
| |-ParmVarDecl 0x5604680f7b88 <line:14016:5, col:31> col:31 req 'const ecs_http_request_t *'
| |-ParmVarDecl 0x5604680f7c08 <line:14017:5, col:17> col:17 name 'const char *'
| `-FullComment 0x560468199e10 <line:14008:4, line:14012:61>
| |-ParagraphComment 0x560468199b50 <line:14008:4, col:37>
| | `-TextComment 0x560468199b20 <col:4, col:37> Text=" Find query parameter in request. "
| |-ParagraphComment 0x560468199ba0 <line:14010:3>
| | `-TextComment 0x560468199b70 <col:3> Text=" "
| |-ParamCommandComment 0x560468199bc0 <col:4, line:14011:3> [in] implicitly Param="req" ParamIndex=0
| | `-ParagraphComment 0x560468199c70 <line:14010:14, line:14011:3>
| | |-TextComment 0x560468199c20 <line:14010:14, col:26> Text=" The request."
| | `-TextComment 0x560468199c40 <line:14011:3> Text=" "
| |-ParamCommandComment 0x560468199c90 <col:4, line:14012:3> [in] implicitly Param="name" ParamIndex=1
| | `-ParagraphComment 0x560468199d40 <line:14011:15, line:14012:3>
| | |-TextComment 0x560468199cf0 <line:14011:15, col:34> Text=" The parameter name."
| | `-TextComment 0x560468199d10 <line:14012:3> Text=" "
| `-BlockCommandComment 0x560468199d60 <col:4, col:61> Name="return"
| `-ParagraphComment 0x560468199dc0 <col:11, col:61>
| `-TextComment 0x560468199d90 <col:11, col:61> Text=" The decoded parameter value, or NULL if not found."
|-FunctionDecl 0x5604680f7e80 <line:14057:1, col:30> col:6 ecs_set_os_api_impl 'void (void)'
|-FunctionDecl 0x5604680f8228 <line:14120:1, line:14123:28> line:14120:14 ecs_import 'ecs_entity_t (ecs_world_t *, ecs_module_action_t, const char *)'
| |-ParmVarDecl 0x5604680f7fe8 <line:14121:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680f8080 <line:14122:5, col:25> col:25 module 'ecs_module_action_t':'void (*)(ecs_world_t *)'
| |-ParmVarDecl 0x5604680f8100 <line:14123:5, col:17> col:17 module_name 'const char *'
| `-FullComment 0x56046819a420 <line:14100:4, line:14117:29>
| |-ParagraphComment 0x560468199f70 <line:14100:4, line:14105:17>
| | |-TextComment 0x560468199e80 <line:14100:4, col:20> Text=" Import a module."
| | |-TextComment 0x560468199ea0 <line:14101:3, col:80> Text=" This operation will load a modules and store the public module handles in the"
| | |-TextComment 0x560468199ec0 <line:14102:3, col:75> Text=" handles_out out parameter. The module name will be used to verify if the"
| | |-TextComment 0x560468199ee0 <line:14103:3, col:76> Text=" module was already loaded, in which case it won't be reimported. The name"
| | |-TextComment 0x560468199f00 <line:14104:3, col:80> Text=" will be translated from PascalCase to an entity path (pascal.case) before the"
| | `-TextComment 0x560468199f20 <line:14105:3, col:17> Text=" lookup occurs."
| |-ParagraphComment 0x56046819a030 <line:14107:3, line:14110:20>
| | |-TextComment 0x560468199f90 <line:14107:3, col:73> Text=" Module contents will be stored as children of the module entity. This "
| | |-TextComment 0x560468199fb0 <line:14108:3, col:79> Text=" prevents modules from accidentally defining conflicting identifiers. This is"
| | |-TextComment 0x560468199fd0 <line:14109:3, col:76> Text=" enforced by setting the scope before and after loading the module to the "
| | `-TextComment 0x560468199ff0 <line:14110:3, col:20> Text=" module entity id."
| |-ParagraphComment 0x56046819a080 <line:14112:3, col:77>
| | `-TextComment 0x56046819a050 <col:3, col:77> Text=" A more convenient way to import a module is by using the ECS_IMPORT macro."
| |-ParagraphComment 0x56046819a0d0 <line:14114:3>
| | `-TextComment 0x56046819a0a0 <col:3> Text=" "
| |-ParamCommandComment 0x56046819a0f0 <col:4, line:14115:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046819a1a0 <line:14114:16, line:14115:3>
| | |-TextComment 0x56046819a150 <line:14114:16, col:26> Text=" The world."
| | `-TextComment 0x56046819a170 <line:14115:3> Text=" "
| |-ParamCommandComment 0x56046819a1c0 <col:4, line:14116:3> [in] implicitly Param="module" ParamIndex=1
| | `-ParagraphComment 0x56046819a270 <line:14115:17, line:14116:3>
| | |-TextComment 0x56046819a220 <line:14115:17, col:44> Text=" The module import function."
| | `-TextComment 0x56046819a240 <line:14116:3> Text=" "
| |-ParamCommandComment 0x56046819a290 <col:4, line:14117:3> [in] implicitly Param="module_name" ParamIndex=2
| | `-ParagraphComment 0x56046819a340 <line:14116:22, line:14117:3>
| | |-TextComment 0x56046819a2f0 <line:14116:22, col:45> Text=" The name of the module."
| | `-TextComment 0x56046819a310 <line:14117:3> Text=" "
| `-BlockCommandComment 0x56046819a360 <col:4, col:29> Name="return"
| `-ParagraphComment 0x56046819a3c0 <col:11, col:29>
| `-TextComment 0x56046819a390 <col:11, col:29> Text=" The module entity."
|-FunctionDecl 0x5604680f84b0 <line:14134:1, line:14137:30> line:14134:14 ecs_import_c 'ecs_entity_t (ecs_world_t *, ecs_module_action_t, const char *)'
| |-ParmVarDecl 0x5604680f8318 <line:14135:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680f8390 <line:14136:5, col:25> col:25 module 'ecs_module_action_t':'void (*)(ecs_world_t *)'
| |-ParmVarDecl 0x5604680f8410 <line:14137:5, col:17> col:17 module_name_c 'const char *'
| `-FullComment 0x56046819a890 <line:14125:4, line:14131:29>
| |-ParagraphComment 0x56046819a500 <line:14125:4, line:14126:64>
| | |-TextComment 0x56046819a490 <line:14125:4, col:58> Text=" Same as ecs_import, but with name to scope conversion."
| | `-TextComment 0x56046819a4b0 <line:14126:3, col:64> Text=" PascalCase names are automatically converted to scoped names."
| |-ParagraphComment 0x56046819a550 <line:14128:3>
| | `-TextComment 0x56046819a520 <col:3> Text=" "
| |-ParamCommandComment 0x56046819a570 <col:4, line:14129:3> [in] implicitly Param="world" ParamIndex=0
| | `-ParagraphComment 0x56046819a620 <line:14128:16, line:14129:3>
| | |-TextComment 0x56046819a5d0 <line:14128:16, col:26> Text=" The world."
| | `-TextComment 0x56046819a5f0 <line:14129:3> Text=" "
| |-ParamCommandComment 0x56046819a640 <col:4, line:14130:3> [in] implicitly Param="module" ParamIndex=1
| | `-ParagraphComment 0x56046819a6f0 <line:14129:17, line:14130:3>
| | |-TextComment 0x56046819a6a0 <line:14129:17, col:44> Text=" The module import function."
| | `-TextComment 0x56046819a6c0 <line:14130:3> Text=" "
| |-ParamCommandComment 0x56046819a710 <col:4, line:14131:3> [in] implicitly Param="module_name_c" ParamIndex=2
| | `-ParagraphComment 0x56046819a7c0 <line:14130:24, line:14131:3>
| | |-TextComment 0x56046819a770 <line:14130:24, col:47> Text=" The name of the module."
| | `-TextComment 0x56046819a790 <line:14131:3> Text=" "
| `-BlockCommandComment 0x56046819a7e0 <col:4, col:29> Name="return"
| `-ParagraphComment 0x56046819a840 <col:11, col:29>
| `-TextComment 0x56046819a810 <col:11, col:29> Text=" The module entity."
|-FunctionDecl 0x5604680f8798 <line:14158:1, line:14161:28> line:14158:14 ecs_import_from_library 'ecs_entity_t (ecs_world_t *, const char *, const char *)'
| |-ParmVarDecl 0x5604680f8578 <line:14159:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680f85f8 <line:14160:5, col:17> col:17 library_name 'const char *'
| `-ParmVarDecl 0x5604680f8678 <line:14161:5, col:17> col:17 module_name 'const char *'
|-FunctionDecl 0x5604680f8aa8 <line:14165:1, line:14168:37> line:14165:14 ecs_module_init 'ecs_entity_t (ecs_world_t *, const char *, const ecs_component_desc_t *)'
| |-ParmVarDecl 0x5604680f8888 <line:14166:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680f8908 <line:14167:5, col:17> col:17 c_name 'const char *'
| |-ParmVarDecl 0x5604680f8980 <line:14168:5, col:33> col:33 desc 'const ecs_component_desc_t *'
| `-FullComment 0x56046819a960 <line:14163:4, col:27>
| `-ParagraphComment 0x56046819a930 <col:4, col:27>
| `-TextComment 0x56046819a900 <col:4, col:27> Text=" Register a new module. "
|-FunctionDecl 0x5604680f8e10 <line:14245:1, line:14248:15> line:14245:7 ecs_cpp_get_type_name 'char *(char *, const char *, size_t)'
| |-ParmVarDecl 0x5604680f8c30 <line:14246:5, col:11> col:11 type_name 'char *'
| |-ParmVarDecl 0x5604680f8cb0 <line:14247:5, col:17> col:17 func_name 'const char *'
| `-ParmVarDecl 0x5604680f8d28 <line:14248:5, col:12> col:12 len 'size_t':'unsigned long'
|-FunctionDecl 0x5604680f9080 <line:14251:1, line:14254:15> line:14251:7 ecs_cpp_get_symbol_name 'char *(char *, const char *, size_t)'
| |-ParmVarDecl 0x5604680f8ee0 <line:14252:5, col:11> col:11 symbol_name 'char *'
| |-ParmVarDecl 0x5604680f8f60 <line:14253:5, col:17> col:17 type_name 'const char *'
| `-ParmVarDecl 0x5604680f8fd8 <line:14254:5, col:12> col:12 len 'size_t':'unsigned long'
|-FunctionDecl 0x5604680fb650 <line:14257:1, line:14260:15> line:14257:7 ecs_cpp_get_constant_name 'char *(char *, const char *, size_t)'
| |-ParmVarDecl 0x5604680f9150 <line:14258:5, col:11> col:11 constant_name 'char *'
| |-ParmVarDecl 0x5604680f91d0 <line:14259:5, col:17> col:17 func_name 'const char *'
| `-ParmVarDecl 0x5604680f9248 <line:14260:5, col:12> col:12 len 'size_t':'unsigned long'
|-FunctionDecl 0x5604680fb838 <line:14263:1, line:14265:26> line:14263:13 ecs_cpp_trim_module 'const char *(ecs_world_t *, const char *)'
| |-ParmVarDecl 0x5604680fb718 <line:14264:5, col:18> col:18 world 'ecs_world_t *'
| `-ParmVarDecl 0x5604680fb798 <line:14265:5, col:17> col:17 type_name 'const char *'
|-FunctionDecl 0x5604680fbd58 <line:14268:1, line:14275:23> line:14268:6 ecs_cpp_component_validate 'void (ecs_world_t *, ecs_entity_t, const char *, const char *, size_t, size_t, bool)'
| |-ParmVarDecl 0x5604680fb8f8 <line:14269:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680fb970 <line:14270:5, col:18> col:18 id 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680fb9f0 <line:14271:5, col:17> col:17 name 'const char *'
| |-ParmVarDecl 0x5604680fba70 <line:14272:5, col:17> col:17 symbol 'const char *'
| |-ParmVarDecl 0x5604680fbae8 <line:14273:5, col:12> col:12 size 'size_t':'unsigned long'
| |-ParmVarDecl 0x5604680fbb60 <line:14274:5, col:12> col:12 alignment 'size_t':'unsigned long'
| `-ParmVarDecl 0x5604680fbbd8 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:14275:10> col:10 implicit_name 'bool'
|-FunctionDecl 0x5604680fc378 <line:14278:1, line:14286:23> line:14278:14 ecs_cpp_component_register 'ecs_entity_t (ecs_world_t *, ecs_entity_t, const char *, const char *, ecs_size_t, ecs_size_t, bool, bool *)'
| |-ParmVarDecl 0x5604680fbe40 <line:14279:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680fbeb8 <line:14280:5, col:18> col:18 id 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680fbf38 <line:14281:5, col:17> col:17 name 'const char *'
| |-ParmVarDecl 0x5604680fbfb8 <line:14282:5, col:17> col:17 symbol 'const char *'
| |-ParmVarDecl 0x5604680fc030 <line:14283:5, col:16> col:16 size 'ecs_size_t':'int'
| |-ParmVarDecl 0x5604680fc0a8 <line:14284:5, col:16> col:16 alignment 'ecs_size_t':'int'
| |-ParmVarDecl 0x5604680fc120 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:14285:10> col:10 implicit_name 'bool'
| `-ParmVarDecl 0x5604680fc1d0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:14286:11> col:11 existing_out 'bool *'
|-FunctionDecl 0x5604680fca98 <line:14289:1, line:14299:23> line:14289:14 ecs_cpp_component_register_explicit 'ecs_entity_t (ecs_world_t *, ecs_entity_t, ecs_entity_t, const char *, const char *, const char *, size_t, size_t, bool, bool *)'
| |-ParmVarDecl 0x5604680fc468 <line:14290:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680fc4e0 <line:14291:5, col:18> col:18 s_id 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680fc558 <line:14292:5, col:18> col:18 id 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680fc5d8 <line:14293:5, col:17> col:17 name 'const char *'
| |-ParmVarDecl 0x5604680fc658 <line:14294:5, col:17> col:17 type_name 'const char *'
| |-ParmVarDecl 0x5604680fc6d8 <line:14295:5, col:17> col:17 symbol 'const char *'
| |-ParmVarDecl 0x5604680fc750 <line:14296:5, col:12> col:12 size 'size_t':'unsigned long'
| |-ParmVarDecl 0x5604680fc7c8 <line:14297:5, col:12> col:12 alignment 'size_t':'unsigned long'
| |-ParmVarDecl 0x5604680fc840 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:14298:10> col:10 is_component 'bool'
| `-ParmVarDecl 0x5604680fc8c0 </usr/lib/clang/14.0.6/include/stdbool.h:15:14, flecs.h:14299:11> col:11 existing_out 'bool *'
|-FunctionDecl 0x5604680fcca8 <line:14302:1, line:14304:20> line:14302:6 ecs_cpp_enum_init 'void (ecs_world_t *, ecs_entity_t)'
| |-ParmVarDecl 0x5604680fcb98 <line:14303:5, col:18> col:18 world 'ecs_world_t *'
| `-ParmVarDecl 0x5604680fcc10 <line:14304:5, col:18> col:18 id 'ecs_entity_t':'unsigned long'
|-FunctionDecl 0x5604680fd0a8 <line:14307:1, line:14312:14> line:14307:14 ecs_cpp_enum_constant_register 'ecs_entity_t (ecs_world_t *, ecs_entity_t, ecs_entity_t, const char *, int)'
| |-ParmVarDecl 0x5604680fcd68 <line:14308:5, col:18> col:18 world 'ecs_world_t *'
| |-ParmVarDecl 0x5604680fcde0 <line:14309:5, col:18> col:18 parent 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680fce58 <line:14310:5, col:18> col:18 id 'ecs_entity_t':'unsigned long'
| |-ParmVarDecl 0x5604680fced8 <line:14311:5, col:17> col:17 name 'const char *'
| `-ParmVarDecl 0x5604680fcf58 <line:14312:5, col:9> col:9 value 'int'
|-FunctionDecl 0x5604680fd238 <line:14315:1, col:37> col:9 ecs_cpp_reset_count_get 'int32_t (void)'
`-FunctionDecl 0x5604680fd370 <line:14318:1, col:37> col:9 ecs_cpp_reset_count_inc 'int32_t (void)'