TranslationUnitDecl 0x560467ec17a8 <> |-TypedefDecl 0x560467ec1fd0 <> implicit __int128_t '__int128' | `-BuiltinType 0x560467ec1d70 '__int128' |-TypedefDecl 0x560467ec2040 <> implicit __uint128_t 'unsigned __int128' | `-BuiltinType 0x560467ec1d90 'unsigned __int128' |-TypedefDecl 0x560467ec2348 <> implicit __NSConstantString 'struct __NSConstantString_tag' | `-RecordType 0x560467ec2120 'struct __NSConstantString_tag' | `-Record 0x560467ec2098 '__NSConstantString_tag' |-TypedefDecl 0x560467ec23e0 <> implicit __builtin_ms_va_list 'char *' | `-PointerType 0x560467ec23a0 'char *' | `-BuiltinType 0x560467ec1850 'char' |-TypedefDecl 0x560467ec26d8 <> 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 line:67:13 __assert_fail 'void (const char *, const char *, unsigned int, const char *) __attribute__((noreturn))' extern | |-ParmVarDecl 0x560467f19b70 col:40 __assertion 'const char *' | |-ParmVarDecl 0x560467f19bf0 col:65 __file 'const char *' | |-ParmVarDecl 0x560467f19c70 col:20 __line 'unsigned int' | |-ParmVarDecl 0x560467f19cf0 col:40 __function 'const char *' | `-NoThrowAttr 0x560467f19ef8 |-FunctionDecl 0x560467f58e88 line:72:13 __assert_perror_fail 'void (int, const char *, unsigned int, const char *) __attribute__((noreturn))' extern | |-ParmVarDecl 0x560467f19fb0 col:39 __errnum 'int' | |-ParmVarDecl 0x560467f1a030 col:61 __file 'const char *' | |-ParmVarDecl 0x560467f1a0b0 col:20 __line 'unsigned int' | |-ParmVarDecl 0x560467f1a130 col:40 __function 'const char *' | `-NoThrowAttr 0x560467f58f48 |-FunctionDecl 0x560467f591d8 line:79:13 __assert 'void (const char *, const char *, int) __attribute__((noreturn))' extern | |-ParmVarDecl 0x560467f58fb8 col:35 __assertion 'const char *' | |-ParmVarDecl 0x560467f59038 col:60 __file 'const char *' | |-ParmVarDecl 0x560467f590b8 col:72 __line 'int' | `-NoThrowAttr 0x560467f59290 |-TypedefDecl 0x560467f59320 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 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 col:23 referenced size_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-FunctionDecl 0x560467f59720 col:14 implicit memcpy 'void *(void *, const void *, unsigned long)' extern | |-ParmVarDecl 0x560467f59818 <> 'void *' | |-ParmVarDecl 0x560467f59880 <> 'const void *' | |-ParmVarDecl 0x560467f598e8 <> 'unsigned long' | `-BuiltinAttr 0x560467f597c0 <> Implicit 805 |-FunctionDecl 0x560467f59968 prev 0x560467f59720 /usr/include/string.h:43:14 memcpy 'void *(void *, const void *, unsigned long)' extern | |-ParmVarDecl 0x560467f59468 col:39 __dest 'void *restrict' | |-ParmVarDecl 0x560467f59510 col:70 __src 'const void *restrict' | |-ParmVarDecl 0x560467f595b0 col:15 __n 'size_t':'unsigned long' | |-BuiltinAttr 0x560467f59ab8 <> Inherited Implicit 805 | |-NoThrowAttr 0x560467f59a20 | `-NonNullAttr 0x560467f59a78 1 2 |-FunctionDecl 0x560467f5fd70 col:14 implicit memmove 'void *(void *, const void *, unsigned long)' extern | |-ParmVarDecl 0x560467f5fe68 <> 'void *' | |-ParmVarDecl 0x560467f5fed0 <> 'const void *' | |-ParmVarDecl 0x560467f5ff38 <> 'unsigned long' | `-BuiltinAttr 0x560467f5fe10 <> Implicit 807 |-FunctionDecl 0x560467f5ffb8 prev 0x560467f5fd70 /usr/include/string.h:47:14 memmove 'void *(void *, const void *, unsigned long)' extern | |-ParmVarDecl 0x560467f59af8 col:29 __dest 'void *' | |-ParmVarDecl 0x560467f59b78 col:49 __src 'const void *' | |-ParmVarDecl 0x560467f59bf0 col:63 __n 'size_t':'unsigned long' | |-BuiltinAttr 0x560467f60108 <> Inherited Implicit 807 | |-NoThrowAttr 0x560467f60070 | `-NonNullAttr 0x560467f600c8 1 2 |-FunctionDecl 0x560467f60450 col:14 implicit memccpy 'void *(void *, const void *, int, unsigned long)' extern | |-ParmVarDecl 0x560467f60548 <> 'void *' | |-ParmVarDecl 0x560467f605b0 <> 'const void *' | |-ParmVarDecl 0x560467f60618 <> 'int' | |-ParmVarDecl 0x560467f60680 <> 'unsigned long' | `-BuiltinAttr 0x560467f604f0 <> Implicit 869 |-FunctionDecl 0x560467f60708 prev 0x560467f60450 /usr/include/string.h:54:14 memccpy 'void *(void *, const void *, int, unsigned long)' extern | |-ParmVarDecl 0x560467f60148 col:40 __dest 'void *restrict' | |-ParmVarDecl 0x560467f601c8 col:71 __src 'const void *restrict' | |-ParmVarDecl 0x560467f60248 col:13 __c 'int' | |-ParmVarDecl 0x560467f602c0 col:25 __n 'size_t':'unsigned long' | |-BuiltinAttr 0x560467f60858 <> Inherited Implicit 869 | |-NoThrowAttr 0x560467f607c8 | `-NonNullAttr 0x560467f60820 1 2 |-FunctionDecl 0x560467f60ae0 col:14 implicit memset 'void *(void *, int, unsigned long)' extern | |-ParmVarDecl 0x560467f60bd8 <> 'void *' | |-ParmVarDecl 0x560467f60c40 <> 'int' | |-ParmVarDecl 0x560467f60ca8 <> 'unsigned long' | `-BuiltinAttr 0x560467f60b80 <> Implicit 823 |-FunctionDecl 0x560467f60d80 prev 0x560467f60ae0 /usr/include/string.h:61:14 memset 'void *(void *, int, unsigned long)' extern | |-ParmVarDecl 0x560467f60898 col:28 __s 'void *' | |-ParmVarDecl 0x560467f60918 col:37 __c 'int' | |-ParmVarDecl 0x560467f60990 col:49 __n 'size_t':'unsigned long' | |-BuiltinAttr 0x560467f60ec8 <> Inherited Implicit 823 | |-NoThrowAttr 0x560467f60e38 | `-NonNullAttr 0x560467f60e90 1 |-FunctionDecl 0x560467f61170 col:12 implicit memcmp 'int (const void *, const void *, unsigned long)' extern | |-ParmVarDecl 0x560467f61268 <> 'const void *' | |-ParmVarDecl 0x560467f612d0 <> 'const void *' | |-ParmVarDecl 0x560467f61338 <> 'unsigned long' | `-BuiltinAttr 0x560467f61210 <> Implicit 806 |-FunctionDecl 0x560467f613b8 prev 0x560467f61170 /usr/include/string.h:64:12 memcmp 'int (const void *, const void *, unsigned long)' extern | |-ParmVarDecl 0x560467f60f08 col:32 __s1 'const void *' | |-ParmVarDecl 0x560467f60f88 col:50 __s2 'const void *' | |-ParmVarDecl 0x560467f61000 col:63 __n 'size_t':'unsigned long' | |-BuiltinAttr 0x560467f61528 <> Inherited Implicit 806 | |-NoThrowAttr 0x560467f61470 | |-PureAttr 0x560467f614c8 | `-NonNullAttr 0x560467f614f0 1 2 |-FunctionDecl 0x560467f61748 /usr/include/string.h:80:12 __memcmpeq 'int (const void *, const void *, size_t)' extern | |-ParmVarDecl 0x560467f61568 col:36 __s1 'const void *' | |-ParmVarDecl 0x560467f615e8 col:54 __s2 'const void *' | |-ParmVarDecl 0x560467f61660 col:67 __n 'size_t':'unsigned long' | |-NoThrowAttr 0x560467f61800 | |-PureAttr 0x560467f61858 | `-NonNullAttr 0x560467f61880 1 2 |-FunctionDecl 0x560467f61b10 col:14 implicit memchr 'void *(const void *, int, unsigned long)' extern | |-ParmVarDecl 0x560467f61c08 <> 'const void *' | |-ParmVarDecl 0x560467f61c70 <> 'int' | |-ParmVarDecl 0x560467f61cd8 <> 'unsigned long' | `-BuiltinAttr 0x560467f61bb0 <> Implicit 815 |-FunctionDecl 0x560467f61d90 prev 0x560467f61b10 /usr/include/string.h:107:14 memchr 'void *(const void *, int, unsigned long)' extern | |-ParmVarDecl 0x560467f618d0 col:34 __s 'const void *' | |-ParmVarDecl 0x560467f61950 col:43 __c 'int' | |-ParmVarDecl 0x560467f619c8 col:55 __n 'size_t':'unsigned long' | |-BuiltinAttr 0x560467f61f08 <> Inherited Implicit 815 | |-NoThrowAttr 0x560467f61e48 | |-PureAttr 0x560467f61ea0 | `-NonNullAttr 0x560467f61ec8 1 |-FunctionDecl 0x560467f62120 col:14 implicit strcpy 'char *(char *, const char *)' extern | |-ParmVarDecl 0x560467f62218 <> 'char *' | |-ParmVarDecl 0x560467f62280 <> 'const char *' | `-BuiltinAttr 0x560467f621c0 <> Implicit 808 |-FunctionDecl 0x560467f622f8 prev 0x560467f62120 /usr/include/string.h:141:14 strcpy 'char *(char *, const char *)' extern | |-ParmVarDecl 0x560467f61f48 col:39 __dest 'char *restrict' | |-ParmVarDecl 0x560467f61fc8 col:70 __src 'const char *restrict' | |-BuiltinAttr 0x560467f62438 <> Inherited Implicit 808 | |-NoThrowAttr 0x560467f623a8 | `-NonNullAttr 0x560467f62400 1 2 |-FunctionDecl 0x560467f626e0 col:14 implicit strncpy 'char *(char *, const char *, unsigned long)' extern | |-ParmVarDecl 0x560467f627d8 <> 'char *' | |-ParmVarDecl 0x560467f62840 <> 'const char *' | |-ParmVarDecl 0x560467f628a8 <> 'unsigned long' | `-BuiltinAttr 0x560467f62780 <> Implicit 809 |-FunctionDecl 0x560467f62928 prev 0x560467f626e0 /usr/include/string.h:144:14 strncpy 'char *(char *, const char *, unsigned long)' extern | |-ParmVarDecl 0x560467f62478 col:40 __dest 'char *restrict' | |-ParmVarDecl 0x560467f624f8 col:32 __src 'const char *restrict' | |-ParmVarDecl 0x560467f62570 col:46 __n 'size_t':'unsigned long' | |-BuiltinAttr 0x560467f62a78 <> Inherited Implicit 809 | |-NoThrowAttr 0x560467f629e0 | `-NonNullAttr 0x560467f62a38 1 2 |-FunctionDecl 0x560467f62c18 col:14 implicit strcat 'char *(char *, const char *)' extern | |-ParmVarDecl 0x560467f62d10 <> 'char *' | |-ParmVarDecl 0x560467f62da0 <> 'const char *' | `-BuiltinAttr 0x560467f62cb8 <> Implicit 812 |-FunctionDecl 0x560467f62e18 prev 0x560467f62c18 /usr/include/string.h:149:14 strcat 'char *(char *, const char *)' extern | |-ParmVarDecl 0x560467f62ab8 col:39 __dest 'char *restrict' | |-ParmVarDecl 0x560467f62b38 col:70 __src 'const char *restrict' | |-BuiltinAttr 0x560467f62f58 <> Inherited Implicit 812 | |-NoThrowAttr 0x560467f62ec8 | `-NonNullAttr 0x560467f62f20 1 2 |-FunctionDecl 0x560467f63178 col:14 implicit strncat 'char *(char *, const char *, unsigned long)' extern | |-ParmVarDecl 0x560467f63270 <> 'char *' | |-ParmVarDecl 0x560467f632d8 <> 'const char *' | |-ParmVarDecl 0x560467f63340 <> 'unsigned long' | `-BuiltinAttr 0x560467f63218 <> Implicit 813 |-FunctionDecl 0x560467f633c0 prev 0x560467f63178 /usr/include/string.h:152:14 strncat 'char *(char *, const char *, unsigned long)' extern | |-ParmVarDecl 0x560467f62f98 col:40 __dest 'char *restrict' | |-ParmVarDecl 0x560467f63018 col:71 __src 'const char *restrict' | |-ParmVarDecl 0x560467f63090 col:16 __n 'size_t':'unsigned long' | |-BuiltinAttr 0x560467f63508 <> Inherited Implicit 813 | |-NoThrowAttr 0x560467f63478 | `-NonNullAttr 0x560467f634d0 1 2 |-FunctionDecl 0x560467f636e0 col:12 implicit strcmp 'int (const char *, const char *)' extern | |-ParmVarDecl 0x560467f637d8 <> 'const char *' | |-ParmVarDecl 0x560467f63840 <> 'const char *' | `-BuiltinAttr 0x560467f63780 <> Implicit 810 |-FunctionDecl 0x560467f638b8 prev 0x560467f636e0 /usr/include/string.h:156:12 strcmp 'int (const char *, const char *)' extern | |-ParmVarDecl 0x560467f63548 col:32 __s1 'const char *' | |-ParmVarDecl 0x560467f635c8 col:50 __s2 'const char *' | |-BuiltinAttr 0x560467f63a28 <> Inherited Implicit 810 | |-NoThrowAttr 0x560467f63968 | |-PureAttr 0x560467f639c0 | `-NonNullAttr 0x560467f639e8 1 2 |-FunctionDecl 0x560467f63cd0 col:12 implicit strncmp 'int (const char *, const char *, unsigned long)' extern | |-ParmVarDecl 0x560467f63de0 <> 'const char *' | |-ParmVarDecl 0x560467f63e48 <> 'const char *' | |-ParmVarDecl 0x560467f63eb0 <> 'unsigned long' | `-BuiltinAttr 0x560467f63d70 <> Implicit 811 |-FunctionDecl 0x560467f63f30 prev 0x560467f63cd0 /usr/include/string.h:159:12 strncmp 'int (const char *, const char *, unsigned long)' extern | |-ParmVarDecl 0x560467f63a68 col:33 __s1 'const char *' | |-ParmVarDecl 0x560467f63ae8 col:51 __s2 'const char *' | |-ParmVarDecl 0x560467f63b60 col:64 __n 'size_t':'unsigned long' | |-BuiltinAttr 0x560467f640a8 <> Inherited Implicit 811 | |-NoThrowAttr 0x560467f63fe8 | |-PureAttr 0x560467f64040 | `-NonNullAttr 0x560467f64068 1 2 |-FunctionDecl 0x560467f64248 /usr/include/string.h:163:12 strcoll 'int (const char *, const char *)' extern | |-ParmVarDecl 0x560467f640e8 col:33 __s1 'const char *' | |-ParmVarDecl 0x560467f64168 col:51 __s2 'const char *' | |-NoThrowAttr 0x560467f642f8 | |-PureAttr 0x560467f64350 | `-NonNullAttr 0x560467f64378 1 2 |-FunctionDecl 0x560467f64608 col:15 implicit strxfrm 'unsigned long (char *, const char *, unsigned long)' extern | |-ParmVarDecl 0x560467f64700 <> 'char *' | |-ParmVarDecl 0x560467f64768 <> 'const char *' | |-ParmVarDecl 0x560467f647d0 <> 'unsigned long' | `-BuiltinAttr 0x560467f646a8 <> Implicit 814 |-FunctionDecl 0x560467f64850 prev 0x560467f64608 /usr/include/string.h:166:15 strxfrm 'unsigned long (char *, const char *, unsigned long)' extern | |-ParmVarDecl 0x560467f643d0 col:41 __dest 'char *restrict' | |-ParmVarDecl 0x560467f64450 col:33 __src 'const char *restrict' | |-ParmVarDecl 0x560467f644c8 col:47 __n 'size_t':'unsigned long' | |-BuiltinAttr 0x560467f64998 <> Inherited Implicit 814 | |-NoThrowAttr 0x560467f64908 | `-NonNullAttr 0x560467f64960 2 |-RecordDecl 0x560467f649c0 line:27:8 struct __locale_struct definition | |-RecordDecl 0x560467f64a60 parent 0x560467ec17a8 col:10 struct __locale_data | |-FieldDecl 0x560467f64ca0 col:25 __locales 'struct __locale_data *[13]' | |-FieldDecl 0x560467f64d30 col:29 __ctype_b 'const unsigned short *' | |-FieldDecl 0x560467f67cf0 col:14 __ctype_tolower 'const int *' | |-FieldDecl 0x560467f67d58 col:14 __ctype_toupper 'const int *' | `-FieldDecl 0x560467f67e50 col:15 __names 'const char *[13]' |-TypedefDecl 0x560467f67f50 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 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:12 strcoll_l 'int (const char *, const char *, locale_t)' extern | |-ParmVarDecl 0x560467f68050 col:35 __s1 'const char *' | |-ParmVarDecl 0x560467f680d0 col:53 __s2 'const char *' | |-ParmVarDecl 0x560467f68170 col:68 __l 'locale_t':'struct __locale_struct *' | |-NoThrowAttr 0x560467f683b8 | |-PureAttr 0x560467f68410 | `-NonNullAttr 0x560467f68438 1 2 3 |-FunctionDecl 0x560467f68788 /usr/include/string.h:179:15 strxfrm_l 'size_t (char *, const char *, size_t, locale_t)' extern | |-ParmVarDecl 0x560467f68498 col:32 __dest 'char *' | |-ParmVarDecl 0x560467f68518 col:52 __src 'const char *' | |-ParmVarDecl 0x560467f68590 col:66 __n 'size_t':'unsigned long' | |-ParmVarDecl 0x560467f68608 col:14 __l 'locale_t':'struct __locale_struct *' | |-NoThrowAttr 0x560467f68848 | `-NonNullAttr 0x560467f688a0 2 4 |-FunctionDecl 0x560467f689e0 col:14 implicit strdup 'char *(const char *)' extern | |-ParmVarDecl 0x560467f68ad8 <> 'const char *' | `-BuiltinAttr 0x560467f68a80 <> Implicit 873 |-FunctionDecl 0x560467f68b48 prev 0x560467f689e0 /usr/include/string.h:187:14 strdup 'char *(const char *)' extern | |-ParmVarDecl 0x560467f688f0 col:34 __s 'const char *' | |-BuiltinAttr 0x560467f68ca8 <> Inherited Implicit 873 | |-NoThrowAttr 0x560467f68bf0 | |-RestrictAttr 0x560467f68c48 malloc | `-NonNullAttr 0x560467f68c70 1 |-FunctionDecl 0x560467f68eb0 col:14 implicit strndup 'char *(const char *, unsigned long)' extern | |-ParmVarDecl 0x560467f68fa8 <> 'const char *' | |-ParmVarDecl 0x560467f69010 <> 'unsigned long' | `-BuiltinAttr 0x560467f68f50 <> Implicit 874 |-FunctionDecl 0x560467f69088 prev 0x560467f68eb0 /usr/include/string.h:195:14 strndup 'char *(const char *, unsigned long)' extern | |-ParmVarDecl 0x560467f68d00 col:35 __string 'const char *' | |-ParmVarDecl 0x560467f68d78 col:52 __n 'size_t':'unsigned long' | |-BuiltinAttr 0x560467f691f8 <> Inherited Implicit 874 | |-NoThrowAttr 0x560467f69138 | |-RestrictAttr 0x560467f69190 malloc | `-NonNullAttr 0x560467f691b8 1 |-FunctionDecl 0x560467f693b0 col:14 implicit strchr 'char *(const char *, int)' extern | |-ParmVarDecl 0x560467f694a8 <> 'const char *' | |-ParmVarDecl 0x560467f69510 <> 'int' | `-BuiltinAttr 0x560467f69450 <> Implicit 816 |-FunctionDecl 0x560467f69588 prev 0x560467f693b0 /usr/include/string.h:246:14 strchr 'char *(const char *, int)' extern | |-ParmVarDecl 0x560467f69238 col:34 __s 'const char *' | |-ParmVarDecl 0x560467f692b8 col:43 __c 'int' | |-BuiltinAttr 0x560467f696f8 <> Inherited Implicit 816 | |-NoThrowAttr 0x560467f69638 | |-PureAttr 0x560467f69690 | `-NonNullAttr 0x560467f696b8 1 |-FunctionDecl 0x560467f69878 col:14 implicit strrchr 'char *(const char *, int)' extern | |-ParmVarDecl 0x560467f69970 <> 'const char *' | |-ParmVarDecl 0x560467f699d8 <> 'int' | `-BuiltinAttr 0x560467f69918 <> Implicit 819 |-FunctionDecl 0x560467f69a50 prev 0x560467f69878 /usr/include/string.h:273:14 strrchr 'char *(const char *, int)' extern | |-ParmVarDecl 0x560467f69738 col:35 __s 'const char *' | |-ParmVarDecl 0x560467f697b8 col:44 __c 'int' | |-BuiltinAttr 0x560467f69bb8 <> Inherited Implicit 819 | |-NoThrowAttr 0x560467f69b00 | |-PureAttr 0x560467f69b58 | `-NonNullAttr 0x560467f69b80 1 |-FunctionDecl 0x560467f69dd8 col:15 implicit strcspn 'unsigned long (const char *, const char *)' extern | |-ParmVarDecl 0x560467f69ed0 <> 'const char *' | |-ParmVarDecl 0x560467f69f38 <> 'const char *' | `-BuiltinAttr 0x560467f69e78 <> Implicit 817 |-FunctionDecl 0x560467f69fb0 prev 0x560467f69dd8 /usr/include/string.h:293:15 strcspn 'unsigned long (const char *, const char *)' extern | |-ParmVarDecl 0x560467f69bf8 col:36 __s 'const char *' | |-ParmVarDecl 0x560467f69c78 col:53 __reject 'const char *' | |-BuiltinAttr 0x560467f6a118 <> Inherited Implicit 817 | |-NoThrowAttr 0x560467f6a060 | |-PureAttr 0x560467f6a0b8 | `-NonNullAttr 0x560467f6a0e0 1 2 |-FunctionDecl 0x560467f6a2b0 col:15 implicit strspn 'unsigned long (const char *, const char *)' extern | |-ParmVarDecl 0x560467f6a3a8 <> 'const char *' | |-ParmVarDecl 0x560467f6a410 <> 'const char *' | `-BuiltinAttr 0x560467f6a350 <> Implicit 820 |-FunctionDecl 0x560467f6a488 prev 0x560467f6a2b0 /usr/include/string.h:297:15 strspn 'unsigned long (const char *, const char *)' extern | |-ParmVarDecl 0x560467f6a158 col:35 __s 'const char *' | |-ParmVarDecl 0x560467f6a1d8 col:52 __accept 'const char *' | |-BuiltinAttr 0x560467f6a5f8 <> Inherited Implicit 820 | |-NoThrowAttr 0x560467f6a538 | |-PureAttr 0x560467f6a590 | `-NonNullAttr 0x560467f6a5b8 1 2 |-FunctionDecl 0x560467f6a7d0 col:14 implicit strpbrk 'char *(const char *, const char *)' extern | |-ParmVarDecl 0x560467f6a8c8 <> 'const char *' | |-ParmVarDecl 0x560467f6a930 <> 'const char *' | `-BuiltinAttr 0x560467f6a870 <> Implicit 818 |-FunctionDecl 0x560467f6a9a8 prev 0x560467f6a7d0 /usr/include/string.h:323:14 strpbrk 'char *(const char *, const char *)' extern | |-ParmVarDecl 0x560467f6a638 col:35 __s 'const char *' | |-ParmVarDecl 0x560467f6a6b8 col:52 __accept 'const char *' | |-BuiltinAttr 0x560467f6ab18 <> Inherited Implicit 818 | |-NoThrowAttr 0x560467f6aa58 | |-PureAttr 0x560467f6aab0 | `-NonNullAttr 0x560467f6aad8 1 2 |-FunctionDecl 0x560467f6bd30 col:14 implicit strstr 'char *(const char *, const char *)' extern | |-ParmVarDecl 0x560467f6be28 <> 'const char *' | |-ParmVarDecl 0x560467f6be90 <> 'const char *' | `-BuiltinAttr 0x560467f6bdd0 <> Implicit 821 |-FunctionDecl 0x560467f6bf08 prev 0x560467f6bd30 /usr/include/string.h:350:14 strstr 'char *(const char *, const char *)' extern | |-ParmVarDecl 0x560467f6ab58 col:34 __haystack 'const char *' | |-ParmVarDecl 0x560467f6abd8 col:58 __needle 'const char *' | |-BuiltinAttr 0x560467f6c078 <> Inherited Implicit 821 | |-NoThrowAttr 0x560467f6bfb8 | |-PureAttr 0x560467f6c010 | `-NonNullAttr 0x560467f6c038 1 2 |-FunctionDecl 0x560467f6c1f8 col:14 implicit strtok 'char *(char *, const char *)' extern | |-ParmVarDecl 0x560467f6c2f0 <> 'char *' | |-ParmVarDecl 0x560467f6c358 <> 'const char *' | `-BuiltinAttr 0x560467f6c298 <> Implicit 822 |-FunctionDecl 0x560467f6c3d0 prev 0x560467f6c1f8 /usr/include/string.h:356:14 strtok 'char *(char *, const char *)' extern | |-ParmVarDecl 0x560467f6c0b8 col:39 __s 'char *restrict' | |-ParmVarDecl 0x560467f6c138 col:67 __delim 'const char *restrict' | |-BuiltinAttr 0x560467f6c518 <> Inherited Implicit 822 | |-NoThrowAttr 0x560467f6c480 | `-NonNullAttr 0x560467f6c4d8 2 |-FunctionDecl 0x560467f6c7f0 /usr/include/string.h:361:14 __strtok_r 'char *(char *restrict, const char *restrict, char **restrict)' extern | |-ParmVarDecl 0x560467f6c558 col:43 __s 'char *restrict' | |-ParmVarDecl 0x560467f6c5d8 col:28 __delim 'const char *restrict' | |-ParmVarDecl 0x560467f6c680 col:23 __save_ptr 'char **restrict' | |-NoThrowAttr 0x560467f6c8a8 | `-NonNullAttr 0x560467f6c900 2 3 |-FunctionDecl 0x560467f6cb38 /usr/include/string.h:366:14 strtok_r 'char *(char *restrict, const char *restrict, char **restrict)' extern | |-ParmVarDecl 0x560467f6c950 col:41 __s 'char *restrict' | |-ParmVarDecl 0x560467f6c9d0 col:69 __delim 'const char *restrict' | |-ParmVarDecl 0x560467f6ca50 col:28 __save_ptr 'char **restrict' | |-NoThrowAttr 0x560467f6cbf0 | `-NonNullAttr 0x560467f6cc48 2 3 |-FunctionDecl 0x560467f54e38 col:15 implicit strlen 'unsigned long (const char *)' extern | |-ParmVarDecl 0x560467f54f30 <> 'const char *' | `-BuiltinAttr 0x560467f54ed8 <> Implicit 825 |-FunctionDecl 0x560467f54fa0 prev 0x560467f54e38 /usr/include/string.h:407:15 strlen 'unsigned long (const char *)' extern | |-ParmVarDecl 0x560467f6cca0 col:35 __s 'const char *' | |-BuiltinAttr 0x560467f55108 <> Inherited Implicit 825 | |-NoThrowAttr 0x560467f55048 | |-PureAttr 0x560467f550a0 | `-NonNullAttr 0x560467f550c8 1 |-FunctionDecl 0x560467f552f8 /usr/include/string.h:413:15 strnlen 'size_t (const char *, size_t)' extern | |-ParmVarDecl 0x560467f55148 col:36 __string 'const char *' | |-ParmVarDecl 0x560467f551c0 col:53 __maxlen 'size_t':'unsigned long' | |-NoThrowAttr 0x560467f553a8 | |-PureAttr 0x560467f55400 | `-NonNullAttr 0x560467f55428 1 |-FunctionDecl 0x560467f55550 col:14 implicit strerror 'char *(int)' extern | |-ParmVarDecl 0x560467f55648 <> 'int' | `-BuiltinAttr 0x560467f555f0 <> Implicit 824 |-FunctionDecl 0x560467f556b8 prev 0x560467f55550 /usr/include/string.h:419:14 strerror 'char *(int)' extern | |-ParmVarDecl 0x560467f55480 col:28 __errnum 'int' | |-BuiltinAttr 0x560467f557b8 <> Inherited Implicit 824 | `-NoThrowAttr 0x560467f55760 |-FunctionDecl 0x560467f55ab0 /usr/include/string.h:432:28 strerror_r 'int (int, char *, size_t)' extern | |-ParmVarDecl 0x560467f557f8 col:12 __errnum 'int' | |-ParmVarDecl 0x560467f55878 col:28 __buf 'char *' | |-ParmVarDecl 0x560467f558f0 col:42 __buflen 'size_t':'unsigned long' | |-AsmLabelAttr 0x560467f55b50 <:33:1> "__xpg_strerror_r" IsLiteralLabel | |-NoThrowAttr 0x560467f55be0 | `-NonNullAttr 0x560467f55c08 2 |-FunctionDecl 0x560467f56630 /usr/include/string.h:458:14 strerror_l 'char *(int, locale_t)' extern | |-ParmVarDecl 0x560467f55c60 col:30 __errnum 'int' | |-ParmVarDecl 0x560467f55cd8 col:49 __l 'locale_t':'struct __locale_struct *' | `-NoThrowAttr 0x560467f566e0 |-FunctionDecl 0x560467f56930 col:12 implicit bcmp 'int (const void *, const void *, unsigned long)' extern | |-ParmVarDecl 0x560467f56a28 <> 'const void *' | |-ParmVarDecl 0x560467f56a90 <> 'const void *' | |-ParmVarDecl 0x560467f56af8 <> 'unsigned long' | `-BuiltinAttr 0x560467f569d0 <> Implicit 878 |-FunctionDecl 0x560467f56b78 prev 0x560467f56930 /usr/include/strings.h:34:12 bcmp 'int (const void *, const void *, unsigned long)' extern | |-ParmVarDecl 0x560467f56750 col:30 __s1 'const void *' | |-ParmVarDecl 0x560467f567d0 col:48 __s2 'const void *' | |-ParmVarDecl 0x560467f56848 col:61 __n 'size_t':'unsigned long' | |-BuiltinAttr 0x560467f56ce8 <> Inherited Implicit 878 | |-NoThrowAttr 0x560467f56c30 | |-PureAttr 0x560467f56c88 | `-NonNullAttr 0x560467f56cb0 1 2 |-FunctionDecl 0x560467f56f88 /usr/include/strings.h:38:13 bcopy 'void (const void *, void *, size_t)' extern | |-ParmVarDecl 0x560467f56d28 col:32 __src 'const void *' | |-ParmVarDecl 0x560467f56da8 col:45 __dest 'void *' | |-ParmVarDecl 0x560467f56e20 col:60 __n 'size_t':'unsigned long' | |-NoThrowAttr 0x560467f57040 | `-NonNullAttr 0x560467f57098 1 2 |-FunctionDecl 0x560467f57298 col:13 implicit bzero 'void (void *, unsigned long)' extern | |-ParmVarDecl 0x560467f57390 <> 'void *' | |-ParmVarDecl 0x560467f573f8 <> 'unsigned long' | `-BuiltinAttr 0x560467f57338 <> Implicit 877 |-FunctionDecl 0x560467f57470 prev 0x560467f57298 /usr/include/strings.h:42:13 bzero 'void (void *, unsigned long)' extern | |-ParmVarDecl 0x560467f570f0 col:26 __s 'void *' | |-ParmVarDecl 0x560467f57168 col:38 __n 'size_t':'unsigned long' | |-BuiltinAttr 0x560467f75010 <> Inherited Implicit 877 | |-NoThrowAttr 0x560467f57520 | `-NonNullAttr 0x560467f57578 1 |-FunctionDecl 0x560467f75190 col:14 implicit index 'char *(const char *, int)' extern | |-ParmVarDecl 0x560467f75288 <> 'const char *' | |-ParmVarDecl 0x560467f752f0 <> 'int' | `-BuiltinAttr 0x560467f75230 <> Implicit 875 |-FunctionDecl 0x560467f75368 prev 0x560467f75190 /usr/include/strings.h:68:14 index 'char *(const char *, int)' extern | |-ParmVarDecl 0x560467f75050 col:33 __s 'const char *' | |-ParmVarDecl 0x560467f750d0 col:42 __c 'int' | |-BuiltinAttr 0x560467f754d8 <> Inherited Implicit 875 | |-NoThrowAttr 0x560467f75418 | |-PureAttr 0x560467f75470 | `-NonNullAttr 0x560467f75498 1 |-FunctionDecl 0x560467f75658 col:14 implicit rindex 'char *(const char *, int)' extern | |-ParmVarDecl 0x560467f75750 <> 'const char *' | |-ParmVarDecl 0x560467f757b8 <> 'int' | `-BuiltinAttr 0x560467f756f8 <> Implicit 876 |-FunctionDecl 0x560467f75830 prev 0x560467f75658 /usr/include/strings.h:96:14 rindex 'char *(const char *, int)' extern | |-ParmVarDecl 0x560467f75518 col:34 __s 'const char *' | |-ParmVarDecl 0x560467f75598 col:43 __c 'int' | |-BuiltinAttr 0x560467f75998 <> Inherited Implicit 876 | |-NoThrowAttr 0x560467f758e0 | |-PureAttr 0x560467f75938 | `-NonNullAttr 0x560467f75960 1 |-FunctionDecl 0x560467f75aa0 /usr/include/strings.h:104:12 ffs 'int (int)' extern | |-ParmVarDecl 0x560467f759d8 col:21 __i 'int' | |-NoThrowAttr 0x560467f75b48 | `-ConstAttr 0x560467f75ba0 |-FunctionDecl 0x560467f75cb0 /usr/include/strings.h:110:12 ffsl 'int (long)' extern | |-ParmVarDecl 0x560467f75be0 col:27 __l 'long' | |-NoThrowAttr 0x560467f75d58 | `-ConstAttr 0x560467f75db0 |-FunctionDecl 0x560467f75ec0 /usr/include/strings.h:111:26 ffsll 'int (long long)' extern | |-ParmVarDecl 0x560467f75df0 col:47 __ll 'long long' | |-NoThrowAttr 0x560467f75f68 | `-ConstAttr 0x560467f75fc0 |-FunctionDecl 0x560467f76180 col:12 implicit strcasecmp 'int (const char *, const char *)' extern | |-ParmVarDecl 0x560467f76278 <> 'const char *' | |-ParmVarDecl 0x560467f762e0 <> 'const char *' | `-BuiltinAttr 0x560467f76220 <> Implicit 879 |-FunctionDecl 0x560467f76358 prev 0x560467f76180 /usr/include/strings.h:116:12 strcasecmp 'int (const char *, const char *)' extern | |-ParmVarDecl 0x560467f76020 col:36 __s1 'const char *' | |-ParmVarDecl 0x560467f760a0 col:54 __s2 'const char *' | |-BuiltinAttr 0x560467f764c8 <> Inherited Implicit 879 | |-NoThrowAttr 0x560467f76408 | |-PureAttr 0x560467f76460 | `-NonNullAttr 0x560467f76488 1 2 |-FunctionDecl 0x560467f766e8 col:12 implicit strncasecmp 'int (const char *, const char *, unsigned long)' extern | |-ParmVarDecl 0x560467f767e0 <> 'const char *' | |-ParmVarDecl 0x560467f76848 <> 'const char *' | |-ParmVarDecl 0x560467f768b0 <> 'unsigned long' | `-BuiltinAttr 0x560467f76788 <> Implicit 880 |-FunctionDecl 0x560467f76930 prev 0x560467f766e8 /usr/include/strings.h:120:12 strncasecmp 'int (const char *, const char *, unsigned long)' extern | |-ParmVarDecl 0x560467f76508 col:37 __s1 'const char *' | |-ParmVarDecl 0x560467f76588 col:55 __s2 'const char *' | |-ParmVarDecl 0x560467f76600 col:68 __n 'size_t':'unsigned long' | |-BuiltinAttr 0x560467f76aa8 <> Inherited Implicit 880 | |-NoThrowAttr 0x560467f769e8 | |-PureAttr 0x560467f76a40 | `-NonNullAttr 0x560467f76a68 1 2 |-FunctionDecl 0x560467f76ce8 /usr/include/strings.h:128:12 strcasecmp_l 'int (const char *, const char *, locale_t)' extern | |-ParmVarDecl 0x560467f76ae8 col:38 __s1 'const char *' | |-ParmVarDecl 0x560467f76b68 col:56 __s2 'const char *' | |-ParmVarDecl 0x560467f76be0 col:71 __loc 'locale_t':'struct __locale_struct *' | |-NoThrowAttr 0x560467f76da0 | |-PureAttr 0x560467f76df8 | `-NonNullAttr 0x560467f76e20 1 2 3 |-FunctionDecl 0x560467f771e0 /usr/include/strings.h:133:12 strncasecmp_l 'int (const char *, const char *, size_t, locale_t)' extern | |-ParmVarDecl 0x560467f76e78 col:39 __s1 'const char *' | |-ParmVarDecl 0x560467f76ef8 col:57 __s2 'const char *' | |-ParmVarDecl 0x560467f76f70 col:13 __n 'size_t':'unsigned long' | |-ParmVarDecl 0x560467f77030 col:27 __loc 'locale_t':'struct __locale_struct *' | |-NoThrowAttr 0x560467f772a0 | |-PureAttr 0x560467f772f8 | `-NonNullAttr 0x560467f77320 1 2 4 |-FunctionDecl 0x560467f774a8 /usr/include/string.h:466:13 explicit_bzero 'void (void *, size_t)' extern | |-ParmVarDecl 0x560467f77378 col:35 __s 'void *' | |-ParmVarDecl 0x560467f773f0 col:47 __n 'size_t':'unsigned long' | |-NoThrowAttr 0x560467f77558 | `-NonNullAttr 0x560467f775b0 1 |-FunctionDecl 0x560467f777e0 /usr/include/string.h:471:14 strsep 'char *(char **restrict, const char *restrict)' extern | |-ParmVarDecl 0x560467f77600 col:40 __stringp 'char **restrict' | |-ParmVarDecl 0x560467f77680 col:31 __delim 'const char *restrict' | |-NoThrowAttr 0x560467f77890 | `-NonNullAttr 0x560467f778e8 1 2 |-FunctionDecl 0x560467f779d8 /usr/include/string.h:478:14 strsignal 'char *(int)' extern | |-ParmVarDecl 0x560467f77940 col:29 __sig 'int' | `-NoThrowAttr 0x560467f77a80 |-FunctionDecl 0x560467f77c50 /usr/include/string.h:489:14 __stpcpy 'char *(char *restrict, const char *restrict)' extern | |-ParmVarDecl 0x560467f77af0 col:41 __dest 'char *restrict' | |-ParmVarDecl 0x560467f77b70 col:72 __src 'const char *restrict' | |-NoThrowAttr 0x560467f77d00 | `-NonNullAttr 0x560467f77d58 1 2 |-FunctionDecl 0x560467f77f10 col:14 implicit stpcpy 'char *(char *, const char *)' extern | |-ParmVarDecl 0x560467f78040 <> 'char *' | |-ParmVarDecl 0x560467f780a8 <> 'const char *' | `-BuiltinAttr 0x560467f77fb0 <> Implicit 871 |-FunctionDecl 0x560467f78120 prev 0x560467f77f10 /usr/include/string.h:491:14 stpcpy 'char *(char *, const char *)' extern | |-ParmVarDecl 0x560467f77db0 col:39 __dest 'char *restrict' | |-ParmVarDecl 0x560467f77e30 col:70 __src 'const char *restrict' | |-BuiltinAttr 0x560467f78268 <> Inherited Implicit 871 | |-NoThrowAttr 0x560467f781d0 | `-NonNullAttr 0x560467f78228 1 2 |-FunctionDecl 0x560467f78488 /usr/include/string.h:496:14 __stpncpy 'char *(char *restrict, const char *restrict, size_t)' extern | |-ParmVarDecl 0x560467f782a8 col:42 __dest 'char *restrict' | |-ParmVarDecl 0x560467f78328 col:27 __src 'const char *restrict' | |-ParmVarDecl 0x560467f783a0 col:41 __n 'size_t':'unsigned long' | |-NoThrowAttr 0x560467f78540 | `-NonNullAttr 0x560467f78598 1 2 |-FunctionDecl 0x560467f787d0 col:14 implicit stpncpy 'char *(char *, const char *, unsigned long)' extern | |-ParmVarDecl 0x560467f788c8 <> 'char *' | |-ParmVarDecl 0x560467f78930 <> 'const char *' | |-ParmVarDecl 0x560467f78998 <> 'unsigned long' | `-BuiltinAttr 0x560467f78870 <> Implicit 872 |-FunctionDecl 0x560467f78a18 prev 0x560467f787d0 /usr/include/string.h:499:14 stpncpy 'char *(char *, const char *, unsigned long)' extern | |-ParmVarDecl 0x560467f785f0 col:40 __dest 'char *restrict' | |-ParmVarDecl 0x560467f78670 col:32 __src 'const char *restrict' | |-ParmVarDecl 0x560467f786e8 col:46 __n 'size_t':'unsigned long' | |-BuiltinAttr 0x560467f78b68 <> Inherited Implicit 872 | |-NoThrowAttr 0x560467f78ad0 | `-NonNullAttr 0x560467f78b28 1 2 |-TypedefDecl 0x560467f78ba8 col:23 __u_char 'unsigned char' | `-BuiltinType 0x560467ec1910 'unsigned char' |-TypedefDecl 0x560467f78c18 col:28 __u_short 'unsigned short' | `-BuiltinType 0x560467ec1930 'unsigned short' |-TypedefDecl 0x560467f78c88 col:22 __u_int 'unsigned int' | `-BuiltinType 0x560467ec1950 'unsigned int' |-TypedefDecl 0x560467f78cf8 col:27 __u_long 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f78d68 col:21 referenced __int8_t 'signed char' | `-BuiltinType 0x560467ec1870 'signed char' |-TypedefDecl 0x560467f78dd8 col:23 referenced __uint8_t 'unsigned char' | `-BuiltinType 0x560467ec1910 'unsigned char' |-TypedefDecl 0x560467f78e48 col:26 referenced __int16_t 'short' | `-BuiltinType 0x560467ec1890 'short' |-TypedefDecl 0x560467f78eb8 col:28 referenced __uint16_t 'unsigned short' | `-BuiltinType 0x560467ec1930 'unsigned short' |-TypedefDecl 0x560467f78f28 col:20 referenced __int32_t 'int' | `-BuiltinType 0x560467ec18b0 'int' |-TypedefDecl 0x560467f78f98 col:22 referenced __uint32_t 'unsigned int' | `-BuiltinType 0x560467ec1950 'unsigned int' |-TypedefDecl 0x560467f7e470 col:25 referenced __int64_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f7e4e0 col:27 referenced __uint64_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f7e570 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 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 col:19 referenced __int_least16_t '__int16_t':'short' | `-TypedefType 0x560467f7e660 '__int16_t' sugar | |-Typedef 0x560467f78e48 '__int16_t' | `-BuiltinType 0x560467ec1890 'short' |-TypedefDecl 0x560467f7e720 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 col:19 referenced __int_least32_t '__int32_t':'int' | `-TypedefType 0x560467f7e780 '__int32_t' sugar | |-Typedef 0x560467f78f28 '__int32_t' | `-BuiltinType 0x560467ec18b0 'int' |-TypedefDecl 0x560467f7e840 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 col:19 referenced __int_least64_t '__int64_t':'long' | `-TypedefType 0x560467f7e8a0 '__int64_t' sugar | |-Typedef 0x560467f7e470 '__int64_t' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f7e960 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 col:18 __quad_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f7ea40 col:27 __u_quad_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f7eab0 col:18 referenced __intmax_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f7eb20 col:27 referenced __uintmax_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f7eb90 col:25 __dev_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f7ec00 col:25 __uid_t 'unsigned int' | `-BuiltinType 0x560467ec1950 'unsigned int' |-TypedefDecl 0x560467f7ec70 col:25 __gid_t 'unsigned int' | `-BuiltinType 0x560467ec1950 'unsigned int' |-TypedefDecl 0x560467f7ece0 col:25 __ino_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f7ed50 col:27 __ino64_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f7edc0 col:26 __mode_t 'unsigned int' | `-BuiltinType 0x560467ec1950 'unsigned int' |-TypedefDecl 0x560467f7ee30 col:27 __nlink_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f7eea0 col:25 __off_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f7ef10 col:27 referenced __off64_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f7ef80 col:25 __pid_t 'int' | `-BuiltinType 0x560467ec18b0 'int' |-RecordDecl 0x560467f7efd8 col:24 struct definition | `-FieldDecl 0x560467f7f120 col:37 __val 'int[2]' |-TypedefDecl 0x560467f7f1c8 col:26 __fsid_t 'struct __fsid_t':'__fsid_t' | `-ElaboratedType 0x560467f7f170 'struct __fsid_t' sugar | `-RecordType 0x560467f7f060 '__fsid_t' | `-Record 0x560467f7efd8 '' |-TypedefDecl 0x560467f7f250 col:27 __clock_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f7f2c0 col:26 __rlim_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f7f330 col:28 __rlim64_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f7f3a0 col:24 __id_t 'unsigned int' | `-BuiltinType 0x560467ec1950 'unsigned int' |-TypedefDecl 0x560467f7f410 col:26 __time_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f87188 col:30 __useconds_t 'unsigned int' | `-BuiltinType 0x560467ec1950 'unsigned int' |-TypedefDecl 0x560467f871f8 col:31 __suseconds_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f87268 col:33 __suseconds64_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f872d8 col:27 __daddr_t 'int' | `-BuiltinType 0x560467ec18b0 'int' |-TypedefDecl 0x560467f87348 col:25 __key_t 'int' | `-BuiltinType 0x560467ec18b0 'int' |-TypedefDecl 0x560467f873b8 col:29 __clockid_t 'int' | `-BuiltinType 0x560467ec18b0 'int' |-TypedefDecl 0x560467f87428 col:27 __timer_t 'void *' | `-PointerType 0x560467ec1f30 'void *' | `-BuiltinType 0x560467ec1810 'void' |-TypedefDecl 0x560467f87498 col:29 __blksize_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f87508 col:28 __blkcnt_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f87578 col:30 __blkcnt64_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f875e8 col:30 __fsblkcnt_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f87658 col:32 __fsblkcnt64_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f876c8 col:30 __fsfilcnt_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f87738 col:32 __fsfilcnt64_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f877a8 col:28 __fsword_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f87818 col:27 __ssize_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f87888 col:33 __syscall_slong_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f878f8 col:33 __syscall_ulong_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f87980 col:19 __loff_t '__off64_t':'long' | `-TypedefType 0x560467f87950 '__off64_t' sugar | |-Typedef 0x560467f7ef10 '__off64_t' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f879f0 col:15 __caddr_t 'char *' | `-PointerType 0x560467ec23a0 'char *' | `-BuiltinType 0x560467ec1850 'char' |-TypedefDecl 0x560467f87a60 col:25 __intptr_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f87ad0 col:23 __socklen_t 'unsigned int' | `-BuiltinType 0x560467ec1950 'unsigned int' |-TypedefDecl 0x560467f87b40 col:13 __sig_atomic_t 'int' | `-BuiltinType 0x560467ec18b0 'int' |-TypedefDecl 0x560467f87ba8 col:18 referenced int8_t '__int8_t':'signed char' | `-TypedefType 0x560467f7e540 '__int8_t' sugar | |-Typedef 0x560467f78d68 '__int8_t' | `-BuiltinType 0x560467ec1870 'signed char' |-TypedefDecl 0x560467f87c10 col:19 referenced int16_t '__int16_t':'short' | `-TypedefType 0x560467f7e660 '__int16_t' sugar | |-Typedef 0x560467f78e48 '__int16_t' | `-BuiltinType 0x560467ec1890 'short' |-TypedefDecl 0x560467f87c78 col:19 referenced int32_t '__int32_t':'int' | `-TypedefType 0x560467f7e780 '__int32_t' sugar | |-Typedef 0x560467f78f28 '__int32_t' | `-BuiltinType 0x560467ec18b0 'int' |-TypedefDecl 0x560467f87ce0 col:19 referenced int64_t '__int64_t':'long' | `-TypedefType 0x560467f7e8a0 '__int64_t' sugar | |-Typedef 0x560467f7e470 '__int64_t' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f87d48 col:19 referenced uint8_t '__uint8_t':'unsigned char' | `-TypedefType 0x560467f7e5d0 '__uint8_t' sugar | |-Typedef 0x560467f78dd8 '__uint8_t' | `-BuiltinType 0x560467ec1910 'unsigned char' |-TypedefDecl 0x560467f87db0 col:20 referenced uint16_t '__uint16_t':'unsigned short' | `-TypedefType 0x560467f7e6f0 '__uint16_t' sugar | |-Typedef 0x560467f78eb8 '__uint16_t' | `-BuiltinType 0x560467ec1930 'unsigned short' |-TypedefDecl 0x560467f87e18 col:20 referenced uint32_t '__uint32_t':'unsigned int' | `-TypedefType 0x560467f7e810 '__uint32_t' sugar | |-Typedef 0x560467f78f98 '__uint32_t' | `-BuiltinType 0x560467ec1950 'unsigned int' |-TypedefDecl 0x560467f87e80 col:20 referenced uint64_t '__uint64_t':'unsigned long' | `-TypedefType 0x560467f7e930 '__uint64_t' sugar | |-Typedef 0x560467f7e4e0 '__uint64_t' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f87f10 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 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 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 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 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 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 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 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 col:22 int_fast8_t 'signed char' | `-BuiltinType 0x560467ec1870 'signed char' |-TypedefDecl 0x560467f8c6b0 col:19 int_fast16_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f8c720 col:19 int_fast32_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f8c790 col:19 int_fast64_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f8c800 col:24 uint_fast8_t 'unsigned char' | `-BuiltinType 0x560467ec1910 'unsigned char' |-TypedefDecl 0x560467f8c870 col:27 uint_fast16_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f8c8e0 col:27 uint_fast32_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f8c950 col:27 uint_fast64_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f8c9c0 col:19 referenced intptr_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f8ca30 col:27 referenced uintptr_t 'unsigned long' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f8cac0 col:21 intmax_t '__intmax_t':'long' | `-TypedefType 0x560467f8ca90 '__intmax_t' sugar | |-Typedef 0x560467f7eab0 '__intmax_t' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x560467f8cb50 col:22 uintmax_t '__uintmax_t':'unsigned long' | `-TypedefType 0x560467f8cb20 '__uintmax_t' sugar | |-Typedef 0x560467f7eb20 '__uintmax_t' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x560467f8cc10 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 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 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 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 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 col:16 struct ecs_vector_t |-TypedefDecl 0x560467f8d158 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: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:15 _ecs_vector_new 'ecs_vector_t *(ecs_size_t, int16_t, int32_t)' | |-ParmVarDecl 0x560467fa7930 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fa79d0 col:13 offset 'int16_t':'short' | |-ParmVarDecl 0x560467fa7a48 col:13 elem_count 'int32_t':'int' | `-FullComment 0x5604680fd4b0 | `-ParagraphComment 0x5604680fd480 | `-TextComment 0x5604680fd450 Text=" Create new vector. " |-FunctionDecl 0x560467fa7f48 line:794:15 _ecs_vector_from_array 'ecs_vector_t *(ecs_size_t, int16_t, int32_t, void *)' | |-ParmVarDecl 0x560467fa7c90 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fa7d08 col:13 offset 'int16_t':'short' | |-ParmVarDecl 0x560467fa7d80 col:13 elem_count 'int32_t':'int' | `-ParmVarDecl 0x560467fa7e00 col:11 array 'void *' |-FunctionDecl 0x560467fa8228 line:805:6 _ecs_vector_zero 'void (ecs_vector_t *, ecs_size_t, int16_t)' | |-ParmVarDecl 0x560467fa8018 col:19 vector 'ecs_vector_t *' | |-ParmVarDecl 0x560467fa8090 col:16 elem_size 'ecs_size_t':'int' | `-ParmVarDecl 0x560467fa8108 col:13 offset 'int16_t':'short' |-FunctionDecl 0x560467fa8408 line:815:6 ecs_vector_free 'void (ecs_vector_t *)' | |-ParmVarDecl 0x560467fa8318 col:19 vector 'ecs_vector_t *' | `-FullComment 0x5604680fd580 | `-ParagraphComment 0x5604680fd550 | `-TextComment 0x5604680fd520 Text=" Free vector " |-FunctionDecl 0x560467fa8578 line:820:6 ecs_vector_clear 'void (ecs_vector_t *)' | |-ParmVarDecl 0x560467fa84e8 col:19 vector 'ecs_vector_t *' | `-FullComment 0x56046811bf10 | `-ParagraphComment 0x5604680fd620 | `-TextComment 0x5604680fd5f0 Text=" Clear values in vector " |-FunctionDecl 0x560467fa8fe0 line:825:6 ecs_vector_assert_size 'void (ecs_vector_t *, ecs_size_t)' | |-ParmVarDecl 0x560467fa8658 col:19 vector_inout 'ecs_vector_t *' | |-ParmVarDecl 0x560467fa86d0 col:16 elem_size 'ecs_size_t':'int' | `-FullComment 0x56046811bfe0 | `-ParagraphComment 0x56046811bfb0 | `-TextComment 0x56046811bf80 Text=" Assert when the provided size does not match the vector type. " |-FunctionDecl 0x560467fa9350 line:831:7 _ecs_vector_add 'void *(ecs_vector_t **, ecs_size_t, int16_t)' | |-ParmVarDecl 0x560467fa9130 col:20 array_inout 'ecs_vector_t **' | |-ParmVarDecl 0x560467fa91a8 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fa9220 col:13 offset 'int16_t':'short' | `-FullComment 0x56046811c0b0 | `-ParagraphComment 0x56046811c080 | `-TextComment 0x56046811c050 Text=" Add element to vector. " |-FunctionDecl 0x560467fa9700 line:844:7 _ecs_vector_insert_at 'void *(ecs_vector_t **, ecs_size_t, int16_t, int32_t)' | |-ParmVarDecl 0x560467fa9450 col:20 array_inout 'ecs_vector_t **' | |-ParmVarDecl 0x560467fa94c8 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fa9540 col:13 offset 'int16_t':'short' | |-ParmVarDecl 0x560467fa95b8 col:13 index 'int32_t':'int' | `-FullComment 0x56046811c180 | `-ParagraphComment 0x56046811c150 | `-TextComment 0x56046811c120 Text=" Insert element to vector. " |-FunctionDecl 0x560467fa9a18 line:858:7 _ecs_vector_addn 'void *(ecs_vector_t **, ecs_size_t, int16_t, int32_t)' | |-ParmVarDecl 0x560467fa9800 col:20 array_inout 'ecs_vector_t **' | |-ParmVarDecl 0x560467fa9878 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fa98f0 col:13 offset 'int16_t':'short' | |-ParmVarDecl 0x560467fa9968 col:13 elem_count 'int32_t':'int' | `-FullComment 0x56046811c250 | `-ParagraphComment 0x56046811c220 | `-TextComment 0x56046811c1f0 Text=" Add n elements to the vector. " |-FunctionDecl 0x560467fa9e30 line:872:7 _ecs_vector_get 'void *(const ecs_vector_t *, ecs_size_t, int16_t, int32_t)' | |-ParmVarDecl 0x560467fa9b78 col:25 vector 'const ecs_vector_t *' | |-ParmVarDecl 0x560467fa9bf0 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fa9c68 col:13 offset 'int16_t':'short' | |-ParmVarDecl 0x560467fa9ce0 col:13 index 'int32_t':'int' | `-FullComment 0x56046811c320 | `-ParagraphComment 0x56046811c2f0 | `-TextComment 0x56046811c2c0 Text=" Get element from vector. " |-FunctionDecl 0x560467fabfe0 line:886:7 _ecs_vector_last 'void *(const ecs_vector_t *, ecs_size_t, int16_t)' | |-ParmVarDecl 0x560467fa9f28 col:25 vector 'const ecs_vector_t *' | |-ParmVarDecl 0x560467fabe40 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fabeb8 col:13 offset 'int16_t':'short' | `-FullComment 0x56046811c3f0 | `-ParagraphComment 0x56046811c3c0 | `-TextComment 0x56046811c390 Text=" Get last element from vector. " |-FunctionDecl 0x560467fac388 line:900:9 _ecs_vector_set_min_size 'int32_t (ecs_vector_t **, ecs_size_t, int16_t, int32_t)' | |-ParmVarDecl 0x560467fac0e0 col:20 array_inout 'ecs_vector_t **' | |-ParmVarDecl 0x560467fac158 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fac1d0 col:13 offset 'int16_t':'short' | |-ParmVarDecl 0x560467fac248 col:13 elem_count 'int32_t':'int' | `-FullComment 0x56046811c4e0 | `-ParagraphComment 0x56046811c4b0 | |-TextComment 0x56046811c460 Text=" Set minimum size for vector. If the current size of the vector is larger, " | `-TextComment 0x56046811c480 Text=" the function will have no side effects. " |-FunctionDecl 0x560467fac6a0 line:912:9 _ecs_vector_set_min_count 'int32_t (ecs_vector_t **, ecs_size_t, int16_t, int32_t)' | |-ParmVarDecl 0x560467fac490 col:20 vector_inout 'ecs_vector_t **' | |-ParmVarDecl 0x560467fac508 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fac580 col:13 offset 'int16_t':'short' | |-ParmVarDecl 0x560467fac5f8 col:13 elem_count 'int32_t':'int' | `-FullComment 0x56046811c5d0 | `-ParagraphComment 0x56046811c5a0 | |-TextComment 0x56046811c550 Text=" Set minimum count for vector. If the current count of the vector is larger, " | `-TextComment 0x56046811c570 Text=" the function will have no side effects. " |-FunctionDecl 0x560467fac828 line:926:6 ecs_vector_remove_last 'void (ecs_vector_t *)' | |-ParmVarDecl 0x560467fac798 col:19 vector 'ecs_vector_t *' | `-FullComment 0x56046811c6a0 | `-ParagraphComment 0x56046811c670 | `-TextComment 0x56046811c640 Text=" Remove last element. This operation requires no swapping of values. " |-FunctionDecl 0x560467facbb8 line:931:6 _ecs_vector_pop 'bool (ecs_vector_t *, ecs_size_t, int16_t, void *)' | |-ParmVarDecl 0x560467fac908 col:19 vector 'ecs_vector_t *' | |-ParmVarDecl 0x560467fac980 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fac9f8 col:13 offset 'int16_t':'short' | |-ParmVarDecl 0x560467faca78 col:11 value 'void *' | `-FullComment 0x56046811c770 | `-ParagraphComment 0x56046811c740 | `-TextComment 0x56046811c710 Text=" Remove last value, store last element in provided value. " |-FunctionDecl 0x560467fadb18 line:942:9 _ecs_vector_move_index 'int32_t (ecs_vector_t **, ecs_vector_t *, ecs_size_t, int16_t, int32_t)' | |-ParmVarDecl 0x560467faccc0 col:20 dst 'ecs_vector_t **' | |-ParmVarDecl 0x560467facd38 col:19 src 'ecs_vector_t *' | |-ParmVarDecl 0x560467facdb0 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fad950 col:13 offset 'int16_t':'short' | |-ParmVarDecl 0x560467fad9c8 col:13 index 'int32_t':'int' | `-FullComment 0x56046811c840 | `-ParagraphComment 0x56046811c810 | `-TextComment 0x56046811c7e0 Text=" Append element at specified index to another vector. " |-FunctionDecl 0x560467fadec8 line:957:9 _ecs_vector_remove 'int32_t (ecs_vector_t *, ecs_size_t, int16_t, int32_t)' | |-ParmVarDecl 0x560467fadc18 col:19 vector 'ecs_vector_t *' | |-ParmVarDecl 0x560467fadc90 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fadd08 col:13 offset 'int16_t':'short' | |-ParmVarDecl 0x560467fadd80 col:13 index 'int32_t':'int' | `-FullComment 0x56046811c910 | `-ParagraphComment 0x56046811c8e0 | `-TextComment 0x56046811c8b0 Text=" Remove element at specified index. Moves the last value to the index. " |-FunctionDecl 0x560467fae1e8 line:971:6 _ecs_vector_reclaim 'void (ecs_vector_t **, ecs_size_t, int16_t)' | |-ParmVarDecl 0x560467fadfd0 col:20 vector 'ecs_vector_t **' | |-ParmVarDecl 0x560467fae048 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fae0c0 col:13 offset 'int16_t':'short' | `-FullComment 0x56046811c9e0 | `-ParagraphComment 0x56046811c9b0 | `-TextComment 0x56046811c980 Text=" Shrink vector to make the size match the count. " |-FunctionDecl 0x560467fae4f0 line:984:9 _ecs_vector_grow 'int32_t (ecs_vector_t **, ecs_size_t, int16_t, int32_t)' | |-ParmVarDecl 0x560467fae2e0 col:20 vector 'ecs_vector_t **' | |-ParmVarDecl 0x560467fae358 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fae3d0 col:13 offset 'int16_t':'short' | |-ParmVarDecl 0x560467fae448 col:13 elem_count 'int32_t':'int' | `-FullComment 0x56046811cab0 | `-ParagraphComment 0x56046811ca80 | `-TextComment 0x56046811ca50 Text=" Grow size of vector with provided number of elements. " |-FunctionDecl 0x560467fae800 line:995:9 _ecs_vector_set_size 'int32_t (ecs_vector_t **, ecs_size_t, int16_t, int32_t)' | |-ParmVarDecl 0x560467fae5f0 col:20 vector 'ecs_vector_t **' | |-ParmVarDecl 0x560467fae668 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fae6e0 col:13 offset 'int16_t':'short' | |-ParmVarDecl 0x560467fae758 col:13 elem_count 'int32_t':'int' | `-FullComment 0x56046811cb80 | `-ParagraphComment 0x56046811cb50 | `-TextComment 0x56046811cb20 Text=" Set allocation size of vector. " |-FunctionDecl 0x560467fb1b70 line:1010:9 _ecs_vector_set_count 'int32_t (ecs_vector_t **, ecs_size_t, int16_t, int32_t)' | |-ParmVarDecl 0x560467fb1960 col:20 vector 'ecs_vector_t **' | |-ParmVarDecl 0x560467fb19d8 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fb1a50 col:13 offset 'int16_t':'short' | |-ParmVarDecl 0x560467fb1ac8 col:13 elem_count 'int32_t':'int' | `-FullComment 0x56046811cc70 | `-ParagraphComment 0x56046811cc40 | |-TextComment 0x56046811cbf0 Text=" Set count of vector. If the size of the vector is smaller than the provided" | `-TextComment 0x56046811cc10 Text=" count, the vector is resized. " |-FunctionDecl 0x560467fb1d58 line:1024:9 ecs_vector_count 'int32_t (const ecs_vector_t *)' | |-ParmVarDecl 0x560467fb1c68 col:25 vector 'const ecs_vector_t *' | `-FullComment 0x56046811cd40 | `-ParagraphComment 0x56046811cd10 | `-TextComment 0x56046811cce0 Text=" Return number of elements in vector. " |-FunctionDecl 0x560467fb1ec8 line:1029:9 ecs_vector_size 'int32_t (const ecs_vector_t *)' | |-ParmVarDecl 0x560467fb1e38 col:25 vector 'const ecs_vector_t *' | `-FullComment 0x56046811ce10 | `-ParagraphComment 0x56046811cde0 | `-TextComment 0x56046811cdb0 Text=" Return size of vector. " |-FunctionDecl 0x560467fb2140 line:1034:7 _ecs_vector_first 'void *(const ecs_vector_t *, ecs_size_t, int16_t)' | |-ParmVarDecl 0x560467fb1fa8 col:25 vector 'const ecs_vector_t *' | |-ParmVarDecl 0x560467fb2020 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fb2098 col:13 offset 'int16_t':'short' | `-FullComment 0x56046811cee0 | `-ParagraphComment 0x56046811ceb0 | `-TextComment 0x56046811ce80 Text=" Return first element of vector. " |-FunctionDecl 0x560467fb2508 line:1047:6 _ecs_vector_sort 'void (ecs_vector_t *, ecs_size_t, int16_t, ecs_comparator_t)' | |-ParmVarDecl 0x560467fb2238 col:19 vector 'ecs_vector_t *' | |-ParmVarDecl 0x560467fb22b0 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fb2328 col:13 offset 'int16_t':'short' | |-ParmVarDecl 0x560467fb23c0 col:22 compare_action 'ecs_comparator_t':'int (*)(const void *, const void *)' | `-FullComment 0x56046811cfb0 | `-ParagraphComment 0x56046811cf80 | `-TextComment 0x56046811cf50 Text=" Sort elements in vector. " |-FunctionDecl 0x560467fb2818 line:1058:15 _ecs_vector_copy 'ecs_vector_t *(const ecs_vector_t *, ecs_size_t, int16_t)' | |-ParmVarDecl 0x560467fb2608 col:25 src 'const ecs_vector_t *' | |-ParmVarDecl 0x560467fb2680 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fb26f8 col:13 offset 'int16_t':'short' | `-FullComment 0x56046811d080 | `-ParagraphComment 0x56046811d050 | `-TextComment 0x56046811d020 Text=" Copy vectors " |-RecordDecl 0x560467fb3d80 line:1226:16 struct ecs_sparse_t definition | |-FieldDecl 0x560467fb3e30 col:19 dense 'ecs_vector_t *' | |-FieldDecl 0x560467fb3e90 col:19 chunks 'ecs_vector_t *' | |-FieldDecl 0x560467fb3ef0 col:16 size 'ecs_size_t':'int' | |-FieldDecl 0x560467fb3f50 col:13 count 'int32_t':'int' | |-FieldDecl 0x560467fb3fb0 col:14 max_id_local 'uint64_t':'unsigned long' | |-FieldDecl 0x560467fb4068 col:15 max_id 'uint64_t *' | |-RecordDecl 0x560467fb40b8 parent 0x560467ec17a8 col:12 struct ecs_allocator_t | |-FieldDecl 0x560467fb4230 col:29 allocator 'struct ecs_allocator_t *' | |-RecordDecl 0x560467fb4280 parent 0x560467ec17a8 col:12 struct ecs_block_allocator_t | `-FieldDecl 0x560467fb43f0 col:35 chunk_allocator 'struct ecs_block_allocator_t *' |-TypedefDecl 0x560467fb4498 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:6 _flecs_sparse_init 'void (ecs_sparse_t *, struct ecs_allocator_t *, struct ecs_block_allocator_t *, ecs_size_t)' | |-ParmVarDecl 0x560467fb45b8 col:19 sparse 'ecs_sparse_t *' | |-ParmVarDecl 0x560467fb46a0 col:29 allocator 'struct ecs_allocator_t *' | |-ParmVarDecl 0x560467fb4790 col:35 chunk_allocator 'struct ecs_block_allocator_t *' | |-ParmVarDecl 0x560467fb4808 col:16 elem_size 'ecs_size_t':'int' | `-FullComment 0x56046811d150 | `-ParagraphComment 0x56046811d120 | `-TextComment 0x56046811d0f0 Text=" Initialize sparse set " |-FunctionDecl 0x560467fb4c88 line:1254:15 _flecs_sparse_new 'ecs_sparse_t *(struct ecs_allocator_t *, struct ecs_block_allocator_t *, ecs_size_t)' | |-ParmVarDecl 0x560467fb4a60 col:29 allocator 'struct ecs_allocator_t *' | |-ParmVarDecl 0x560467fb4af0 col:35 chunk_allocator 'struct ecs_block_allocator_t *' | |-ParmVarDecl 0x560467fb4b68 col:16 elem_size 'ecs_size_t':'int' | `-FullComment 0x56046811d220 | `-ParagraphComment 0x56046811d1f0 | `-TextComment 0x56046811d1c0 Text=" Create new sparse set " |-FunctionDecl 0x560467fb6ea8 line:1263:6 _flecs_sparse_fini 'void (ecs_sparse_t *)' | `-ParmVarDecl 0x560467fb6db0 col:19 sparse 'ecs_sparse_t *' |-FunctionDecl 0x560467fb7018 line:1271:6 flecs_sparse_free 'void (ecs_sparse_t *)' | |-ParmVarDecl 0x560467fb6f88 col:19 sparse 'ecs_sparse_t *' | `-FullComment 0x56046811d2f0 | `-ParagraphComment 0x56046811d2c0 | `-TextComment 0x56046811d290 Text=" Free sparse set " |-FunctionDecl 0x560467fb7188 line:1276:6 flecs_sparse_clear 'void (ecs_sparse_t *)' | |-ParmVarDecl 0x560467fb70f8 col:19 sparse 'ecs_sparse_t *' | `-FullComment 0x56046811d3c0 | `-ParagraphComment 0x56046811d390 | `-TextComment 0x56046811d360 Text=" Remove all elements from sparse set " |-FunctionDecl 0x560467fb73f8 line:1282:6 flecs_sparse_set_id_source 'void (ecs_sparse_t *, uint64_t *)' | |-ParmVarDecl 0x560467fb7268 col:19 sparse 'ecs_sparse_t *' | |-ParmVarDecl 0x560467fb72e0 col:15 id_source 'uint64_t *' | `-FullComment 0x56046811d4b0 | `-ParagraphComment 0x56046811d480 | |-TextComment 0x56046811d430 Text=" Set id source. This allows the sparse set to use an external variable for" | `-TextComment 0x56046811d450 Text=" issuing and increasing new ids. " |-FunctionDecl 0x560467fb7680 line:1288:7 _flecs_sparse_add 'void *(ecs_sparse_t *, ecs_size_t)' | |-ParmVarDecl 0x560467fb74e8 col:19 sparse 'ecs_sparse_t *' | |-ParmVarDecl 0x560467fb7560 col:16 elem_size 'ecs_size_t':'int' | `-FullComment 0x56046811d580 | `-ParagraphComment 0x56046811d550 | `-TextComment 0x56046811d520 Text=" Add element to sparse set, this generates or recycles an id " |-FunctionDecl 0x560467fb78b8 line:1297:10 flecs_sparse_last_id 'uint64_t (const ecs_sparse_t *)' | |-ParmVarDecl 0x560467fb77c8 col:25 sparse 'const ecs_sparse_t *' | `-FullComment 0x56046811d650 | `-ParagraphComment 0x56046811d620 | `-TextComment 0x56046811d5f0 Text=" Get last issued id. " |-FunctionDecl 0x560467fb7a88 line:1302:10 flecs_sparse_new_id 'uint64_t (ecs_sparse_t *)' | |-ParmVarDecl 0x560467fb7998 col:19 sparse 'ecs_sparse_t *' | `-FullComment 0x56046811d720 | `-ParagraphComment 0x56046811d6f0 | `-TextComment 0x56046811d6c0 Text=" Generate or recycle a new id. " |-FunctionDecl 0x560467fb8dc0 line:1309:17 flecs_sparse_new_ids 'const uint64_t *(ecs_sparse_t *, int32_t)' | |-ParmVarDecl 0x560467fb7b68 col:19 sparse 'ecs_sparse_t *' | |-ParmVarDecl 0x560467fb7be0 col:13 count 'int32_t':'int' | `-FullComment 0x56046811d840 | `-ParagraphComment 0x56046811d810 | |-TextComment 0x56046811d790 Text=" Generate or recycle new ids in bulk. The returned pointer points directly to" | |-TextComment 0x56046811d7b0 Text=" the internal dense array vector with sparse ids. Operations on the sparse set" | `-TextComment 0x56046811d7d0 Text=" can (and likely will) modify the contents of the buffer. " |-FunctionDecl 0x560467fb9038 line:1315:6 flecs_sparse_remove 'void (ecs_sparse_t *, uint64_t)' | |-ParmVarDecl 0x560467fb8ea8 col:19 sparse 'ecs_sparse_t *' | |-ParmVarDecl 0x560467fb8f20 col:14 id 'uint64_t':'unsigned long' | `-FullComment 0x56046811d910 | `-ParagraphComment 0x56046811d8e0 | `-TextComment 0x56046811d8b0 Text=" Remove an element " |-FunctionDecl 0x560467fb9340 line:1321:7 _flecs_sparse_remove_fast 'void *(ecs_sparse_t *, ecs_size_t, uint64_t)' | |-ParmVarDecl 0x560467fb9128 col:19 sparse 'ecs_sparse_t *' | |-ParmVarDecl 0x560467fb91a0 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fb9218 col:14 id 'uint64_t':'unsigned long' | `-FullComment 0x56046811d9e0 | `-ParagraphComment 0x56046811d9b0 | `-TextComment 0x56046811d980 Text=" Fast version of remove, no liveliness checking " |-FunctionDecl 0x560467fb95d0 line:1328:7 _flecs_sparse_remove_get 'void *(ecs_sparse_t *, ecs_size_t, uint64_t)' | |-ParmVarDecl 0x560467fb9438 col:19 sparse 'ecs_sparse_t *' | |-ParmVarDecl 0x560467fb94b0 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fb9528 col:14 id 'uint64_t':'unsigned long' | `-FullComment 0x56046811dab0 | `-ParagraphComment 0x56046811da80 | `-TextComment 0x56046811da50 Text=" Remove an element, return pointer to the value in the sparse array " |-FunctionDecl 0x560467fb9858 line:1338:6 flecs_sparse_exists 'bool (const ecs_sparse_t *, uint64_t)' | |-ParmVarDecl 0x560467fb96c8 col:25 sparse 'const ecs_sparse_t *' | |-ParmVarDecl 0x560467fb9740 col:14 id 'uint64_t':'unsigned long' | `-FullComment 0x56046811db80 | `-ParagraphComment 0x56046811db50 | `-TextComment 0x56046811db20 Text=" Check whether an id has ever been issued. " |-FunctionDecl 0x560467fb9a58 line:1344:6 flecs_sparse_is_valid 'bool (const ecs_sparse_t *, uint64_t)' | |-ParmVarDecl 0x560467fb9948 col:25 sparse 'const ecs_sparse_t *' | |-ParmVarDecl 0x560467fb99c0 col:14 index 'uint64_t':'unsigned long' | `-FullComment 0x56046811dc50 | `-ParagraphComment 0x56046811dc20 | `-TextComment 0x56046811dbf0 Text=" Check whether an id has ever been issued and is currently alive. " |-FunctionDecl 0x560467fb9c58 line:1350:6 flecs_sparse_is_alive 'bool (const ecs_sparse_t *, uint64_t)' | |-ParmVarDecl 0x560467fb9b48 col:25 sparse 'const ecs_sparse_t *' | |-ParmVarDecl 0x560467fb9bc0 col:14 id 'uint64_t':'unsigned long' | `-FullComment 0x56046811dd20 | `-ParagraphComment 0x56046811dcf0 | `-TextComment 0x56046811dcc0 Text=" Test if id is alive, which requires the generation count to match. " |-FunctionDecl 0x560467fb9ee8 line:1356:10 flecs_sparse_get_alive 'uint64_t (const ecs_sparse_t *, uint64_t)' | |-ParmVarDecl 0x560467fb9d48 col:25 sparse 'const ecs_sparse_t *' | |-ParmVarDecl 0x560467fb9dd0 col:14 id 'uint64_t':'unsigned long' | `-FullComment 0x56046811ddf0 | `-ParagraphComment 0x56046811ddc0 | `-TextComment 0x56046811dd90 Text=" Return identifier with current generation set. " |-FunctionDecl 0x560467fba1f0 line:1363:7 _flecs_sparse_get_dense 'void *(const ecs_sparse_t *, ecs_size_t, int32_t)' | |-ParmVarDecl 0x560467fb9fd8 col:25 sparse 'const ecs_sparse_t *' | |-ParmVarDecl 0x560467fba050 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fba0c8 col:13 index 'int32_t':'int' | `-FullComment 0x56046811dee0 | `-ParagraphComment 0x56046811deb0 | |-TextComment 0x56046811de60 Text=" Get value from sparse set by dense id. This function is useful in " | `-TextComment 0x56046811de80 Text=" combination with flecs_sparse_count for iterating all values in the set. " |-FunctionDecl 0x560467fba3d8 line:1374:9 flecs_sparse_count 'int32_t (const ecs_sparse_t *)' | |-ParmVarDecl 0x560467fba2e8 col:25 sparse 'const ecs_sparse_t *' | `-FullComment 0x56046811dfc0 | `-ParagraphComment 0x56046811df90 | `-TextComment 0x56046811df60 Text=" Get the number of alive elements in the sparse set. " |-FunctionDecl 0x560467fba548 line:1379:9 flecs_sparse_not_alive_count 'int32_t (const ecs_sparse_t *)' | |-ParmVarDecl 0x560467fba4b8 col:25 sparse 'const ecs_sparse_t *' | `-FullComment 0x56046811e090 | `-ParagraphComment 0x56046811e060 | `-TextComment 0x56046811e030 Text=" Get the number of not alive alive elements in the sparse set. " |-FunctionDecl 0x560467fba6b8 line:1384:9 flecs_sparse_size 'int32_t (const ecs_sparse_t *)' | |-ParmVarDecl 0x560467fba628 col:25 sparse 'const ecs_sparse_t *' | `-FullComment 0x56046811e160 | `-ParagraphComment 0x56046811e130 | `-TextComment 0x56046811e100 Text=" Return total number of allocated elements in the dense array " |-FunctionDecl 0x560467fba9b0 line:1390:7 _flecs_sparse_get 'void *(const ecs_sparse_t *, ecs_size_t, uint64_t)' | |-ParmVarDecl 0x560467fba798 col:25 sparse 'const ecs_sparse_t *' | |-ParmVarDecl 0x560467fba810 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fba888 col:14 id 'uint64_t':'unsigned long' | `-FullComment 0x56046811e250 | `-ParagraphComment 0x56046811e220 | |-TextComment 0x56046811e1d0 Text=" Get element by (sparse) id. The returned pointer is stable for the duration" | `-TextComment 0x56046811e1f0 Text=" of the sparse set, as it is stored in the sparse array. " |-FunctionDecl 0x560467fbac40 line:1400:7 _flecs_sparse_get_any 'void *(const ecs_sparse_t *, ecs_size_t, uint64_t)' | |-ParmVarDecl 0x560467fbaaa8 col:25 sparse 'const ecs_sparse_t *' | |-ParmVarDecl 0x560467fbab20 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fbab98 col:14 id 'uint64_t':'unsigned long' | `-FullComment 0x56046811e320 | `-ParagraphComment 0x56046811e2f0 | `-TextComment 0x56046811e2c0 Text=" Like get_sparse, but don't care whether element is alive or not. " |-FunctionDecl 0x560467fbc0b0 line:1410:7 _flecs_sparse_ensure 'void *(ecs_sparse_t *, ecs_size_t, uint64_t)' | |-ParmVarDecl 0x560467fbad38 col:19 sparse 'ecs_sparse_t *' | |-ParmVarDecl 0x560467fbbf90 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fbc008 col:14 id 'uint64_t':'unsigned long' | `-FullComment 0x56046811e3f0 | `-ParagraphComment 0x56046811e3c0 | `-TextComment 0x56046811e390 Text=" Get or create element by (sparse) id. " |-FunctionDecl 0x560467fbc340 line:1420:7 _flecs_sparse_ensure_fast 'void *(ecs_sparse_t *, ecs_size_t, uint64_t)' | |-ParmVarDecl 0x560467fbc1a8 col:19 sparse 'ecs_sparse_t *' | |-ParmVarDecl 0x560467fbc220 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fbc298 col:14 id 'uint64_t':'unsigned long' | `-FullComment 0x56046811e4c0 | `-ParagraphComment 0x56046811e490 | `-TextComment 0x56046811e460 Text=" Fast version of ensure, no liveliness checking " |-FunctionDecl 0x560467fbc6f0 line:1430:7 _flecs_sparse_set 'void *(ecs_sparse_t *, ecs_size_t, uint64_t, void *)' | |-ParmVarDecl 0x560467fbc438 col:19 sparse 'ecs_sparse_t *' | |-ParmVarDecl 0x560467fbc4b0 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fbc528 col:14 id 'uint64_t':'unsigned long' | |-ParmVarDecl 0x560467fbc5a8 col:11 value 'void *' | `-FullComment 0x56046811e590 | `-ParagraphComment 0x56046811e560 | `-TextComment 0x56046811e530 Text=" Set value. " |-FunctionDecl 0x560467fbc8d8 line:1441:17 flecs_sparse_ids 'const uint64_t *(const ecs_sparse_t *)' | |-ParmVarDecl 0x560467fbc7e8 col:25 sparse 'const ecs_sparse_t *' | `-FullComment 0x56046811e660 | `-ParagraphComment 0x56046811e630 | `-TextComment 0x56046811e600 Text=" Get pointer to ids (alive and not alive). Use with count() or size(). " |-FunctionDecl 0x560467fbcb48 line:1446:6 flecs_sparse_set_size 'void (ecs_sparse_t *, int32_t)' | |-ParmVarDecl 0x560467fbc9b8 col:19 sparse 'ecs_sparse_t *' | |-ParmVarDecl 0x560467fbca30 col:13 elem_count 'int32_t':'int' | `-FullComment 0x56046811e730 | `-ParagraphComment 0x56046811e700 | `-TextComment 0x56046811e6d0 Text=" Set size of the dense array. " |-FunctionDecl 0x560467fbcd28 line:1452:15 flecs_sparse_copy 'ecs_sparse_t *(const ecs_sparse_t *)' | |-ParmVarDecl 0x560467fbcc38 col:25 src 'const ecs_sparse_t *' | `-FullComment 0x56046811e800 | `-ParagraphComment 0x56046811e7d0 | `-TextComment 0x56046811e7a0 Text=" Copy sparse set into a new sparse set. " |-FunctionDecl 0x560467fbdbb0 line:1457:6 flecs_sparse_restore 'void (ecs_sparse_t *, const ecs_sparse_t *)' | |-ParmVarDecl 0x560467fbce08 col:19 dst 'ecs_sparse_t *' | |-ParmVarDecl 0x560467fbce80 col:25 src 'const ecs_sparse_t *' | `-FullComment 0x56046811e8d0 | `-ParagraphComment 0x56046811e8a0 | `-TextComment 0x56046811e870 Text=" Restore sparse set into destination sparse set. " |-FunctionDecl 0x560467fbdd68 line:1466:15 _ecs_sparse_new 'ecs_sparse_t *(ecs_size_t)' | `-ParmVarDecl 0x560467fbdc70 col:16 elem_size 'ecs_size_t':'int' |-FunctionDecl 0x560467fbdf38 line:1473:7 _ecs_sparse_add 'void *(ecs_sparse_t *, ecs_size_t)' | |-ParmVarDecl 0x560467fbde20 col:19 sparse 'ecs_sparse_t *' | `-ParmVarDecl 0x560467fbde98 col:16 elem_size 'ecs_size_t':'int' |-FunctionDecl 0x560467fbe088 line:1481:10 ecs_sparse_last_id 'uint64_t (const ecs_sparse_t *)' | `-ParmVarDecl 0x560467fbdff8 col:25 sparse 'const ecs_sparse_t *' |-FunctionDecl 0x560467fbe1d0 line:1485:9 ecs_sparse_count 'int32_t (const ecs_sparse_t *)' | `-ParmVarDecl 0x560467fbe140 col:25 sparse 'const ecs_sparse_t *' |-FunctionDecl 0x560467fbe3c8 line:1490:6 flecs_sparse_set_generation 'void (ecs_sparse_t *, uint64_t)' | |-ParmVarDecl 0x560467fbe2b8 col:19 sparse 'ecs_sparse_t *' | |-ParmVarDecl 0x560467fbe330 col:14 id 'uint64_t':'unsigned long' | `-FullComment 0x56046811e9a0 | `-ParagraphComment 0x56046811e970 | `-TextComment 0x56046811e940 Text=" Override the generation count for a specific id " |-FunctionDecl 0x560467fbe620 line:1495:7 _ecs_sparse_get_dense 'void *(const ecs_sparse_t *, ecs_size_t, int32_t)' | |-ParmVarDecl 0x560467fbe488 col:25 sparse 'const ecs_sparse_t *' | |-ParmVarDecl 0x560467fbe500 col:16 elem_size 'ecs_size_t':'int' | `-ParmVarDecl 0x560467fbe578 col:13 index 'int32_t':'int' |-FunctionDecl 0x560467fbe880 line:1504:7 _ecs_sparse_get 'void *(const ecs_sparse_t *, ecs_size_t, uint64_t)' | |-ParmVarDecl 0x560467fbe6e8 col:25 sparse 'const ecs_sparse_t *' | |-ParmVarDecl 0x560467fbe760 col:16 elem_size 'ecs_size_t':'int' | `-ParmVarDecl 0x560467fbe7d8 col:14 id 'uint64_t':'unsigned long' |-RecordDecl 0x560467fbe968 line:1527:16 struct ecs_block_allocator_block_t definition | |-FieldDecl 0x560467fbea28 col:11 memory 'void *' | `-FieldDecl 0x560467fbeb30 col:41 next 'struct ecs_block_allocator_block_t *' |-TypedefDecl 0x560467fc0158 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:16 struct ecs_block_allocator_chunk_header_t definition | `-FieldDecl 0x560467fc0320 col:48 next 'struct ecs_block_allocator_chunk_header_t *' |-TypedefDecl 0x560467fc03c8 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:16 struct ecs_block_allocator_t definition | |-FieldDecl 0x560467fc0518 col:41 head 'ecs_block_allocator_chunk_header_t *' | |-FieldDecl 0x560467fc05c8 col:34 block_head 'ecs_block_allocator_block_t *' | |-FieldDecl 0x560467fc0628 col:34 block_tail 'ecs_block_allocator_block_t *' | |-FieldDecl 0x560467fc0688 col:13 chunk_size 'int32_t':'int' | |-FieldDecl 0x560467fc06e8 col:13 data_size 'int32_t':'int' | |-FieldDecl 0x560467fc0748 col:13 chunks_per_block 'int32_t':'int' | |-FieldDecl 0x560467fc07a8 col:13 block_size 'int32_t':'int' | `-FieldDecl 0x560467fc0808 col:13 alloc_count 'int32_t':'int' |-TypedefDecl 0x560467fc08b8 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:6 flecs_ballocator_init 'void (ecs_block_allocator_t *, ecs_size_t)' | |-ParmVarDecl 0x560467fc0988 col:28 ba 'ecs_block_allocator_t *' | `-ParmVarDecl 0x560467fc0a00 col:16 size 'ecs_size_t':'int' |-FunctionDecl 0x560467fc0cc8 line:1558:24 flecs_ballocator_new 'ecs_block_allocator_t *(ecs_size_t)' | `-ParmVarDecl 0x560467fc0bd8 col:16 size 'ecs_size_t':'int' |-FunctionDecl 0x560467fc0e78 line:1562:6 flecs_ballocator_fini 'void (ecs_block_allocator_t *)' | `-ParmVarDecl 0x560467fc0d80 col:28 ba 'ecs_block_allocator_t *' |-FunctionDecl 0x560467fc0fc0 line:1566:6 flecs_ballocator_free 'void (ecs_block_allocator_t *)' | `-ParmVarDecl 0x560467fc0f30 col:28 ba 'ecs_block_allocator_t *' |-FunctionDecl 0x560467fc14e0 line:1570:7 flecs_balloc 'void *(ecs_block_allocator_t *)' | `-ParmVarDecl 0x560467fc1078 col:28 allocator 'ecs_block_allocator_t *' |-FunctionDecl 0x560467fc1630 line:1574:7 flecs_bcalloc 'void *(ecs_block_allocator_t *)' | `-ParmVarDecl 0x560467fc1598 col:28 allocator 'ecs_block_allocator_t *' |-FunctionDecl 0x560467fc1878 line:1578:6 flecs_bfree 'void (ecs_block_allocator_t *, void *)' | |-ParmVarDecl 0x560467fc16e8 col:28 allocator 'ecs_block_allocator_t *' | `-ParmVarDecl 0x560467fc1768 col:11 memory 'void *' |-FunctionDecl 0x560467fc1b60 line:1583:7 flecs_brealloc 'void *(ecs_block_allocator_t *, ecs_block_allocator_t *, void *)' | |-ParmVarDecl 0x560467fc1938 col:28 dst 'ecs_block_allocator_t *' | |-ParmVarDecl 0x560467fc19b0 col:28 src 'ecs_block_allocator_t *' | `-ParmVarDecl 0x560467fc1a30 col:11 memory 'void *' |-FunctionDecl 0x560467fc1dc0 line:1589:7 flecs_bdup 'void *(ecs_block_allocator_t *, void *)' | |-ParmVarDecl 0x560467fc1c28 col:28 ba 'ecs_block_allocator_t *' | `-ParmVarDecl 0x560467fc1ca8 col:11 memory 'void *' |-TypedefDecl 0x560467fc1ea8 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:16 struct ecs_bucket_entry_t definition | |-FieldDecl 0x560467fc2050 col:32 next 'struct ecs_bucket_entry_t *' | `-FieldDecl 0x560467fc20d0 col:19 key 'ecs_map_key_t':'unsigned long' |-TypedefDecl 0x560467fc2178 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:16 struct ecs_bucket_t definition | `-FieldDecl 0x560467fc22e8 col:25 first 'ecs_bucket_entry_t *' |-TypedefDecl 0x560467fc2398 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:16 struct ecs_map_t definition | |-FieldDecl 0x560467fc25c8 col:19 buckets 'ecs_bucket_t *' | |-FieldDecl 0x560467fc2628 col:19 buckets_end 'ecs_bucket_t *' | |-FieldDecl 0x560467fc2688 col:13 elem_size 'int16_t':'short' | |-FieldDecl 0x560467fc26e8 col:13 bucket_shift 'uint8_t':'unsigned char' | |-FieldDecl 0x560467fc2748 col:10 shared_allocator 'bool' | |-FieldDecl 0x560467fc27a8 col:13 bucket_count 'int32_t':'int' | |-FieldDecl 0x560467fc2808 col:13 count 'int32_t':'int' | |-FieldDecl 0x560467fc2880 col:29 allocator 'struct ecs_allocator_t *' | `-FieldDecl 0x560467fc28f8 col:35 entry_allocator 'struct ecs_block_allocator_t *' |-TypedefDecl 0x560467fc29a8 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:16 struct ecs_map_iter_t definition | |-FieldDecl 0x560467fc2b48 col:22 map 'const ecs_map_t *' | |-FieldDecl 0x560467fc2ba8 col:19 bucket 'ecs_bucket_t *' | `-FieldDecl 0x560467fc2c08 col:25 entry 'ecs_bucket_entry_t *' |-TypedefDecl 0x560467fc2cb8 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:16 struct ecs_map_params_t definition | |-FieldDecl 0x560467fc2de0 col:16 size 'ecs_size_t':'int' | |-FieldDecl 0x560467fc2e58 col:29 allocator 'struct ecs_allocator_t *' | |-FieldDecl 0x560467fc2ec8 col:34 entry_allocator 'struct ecs_block_allocator_t':'struct ecs_block_allocator_t' | `-FieldDecl 0x560467fc2f28 col:13 initial_count 'int32_t':'int' |-TypedefDecl 0x560467fc2fd8 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:6 _ecs_map_params_init 'void (ecs_map_params_t *, struct ecs_allocator_t *, ecs_size_t)' | |-ParmVarDecl 0x560467fc30d8 col:23 params 'ecs_map_params_t *' | |-ParmVarDecl 0x560467fc3168 col:29 allocator 'struct ecs_allocator_t *' | `-ParmVarDecl 0x560467fc31e0 col:16 elem_size 'ecs_size_t':'int' |-FunctionDecl 0x560467fc4828 line:1658:6 ecs_map_params_fini 'void (ecs_map_params_t *)' | `-ParmVarDecl 0x560467fc33d0 col:23 params 'ecs_map_params_t *' |-FunctionDecl 0x560467fc4c28 line:1663:6 _ecs_map_init 'void (ecs_map_t *, ecs_size_t, struct ecs_allocator_t *, int32_t)' | |-ParmVarDecl 0x560467fc4968 col:16 map 'ecs_map_t *' | |-ParmVarDecl 0x560467fc49e0 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fc4a70 col:29 allocator 'struct ecs_allocator_t *' | |-ParmVarDecl 0x560467fc4ae8 col:13 initial_count 'int32_t':'int' | `-FullComment 0x56046811ea70 | `-ParagraphComment 0x56046811ea40 | `-TextComment 0x56046811ea10 Text=" Initialize new map. " |-FunctionDecl 0x560467fc4eb8 line:1674:6 _ecs_map_init_w_params 'void (ecs_map_t *, ecs_map_params_t *)' | |-ParmVarDecl 0x560467fc4d28 col:16 map 'ecs_map_t *' | |-ParmVarDecl 0x560467fc4da0 col:23 params 'ecs_map_params_t *' | `-FullComment 0x56046811eb40 | `-ParagraphComment 0x56046811eb10 | `-TextComment 0x56046811eae0 Text=" Initialize new map. " |-FunctionDecl 0x560467fc51d0 line:1683:6 _ecs_map_init_if 'void (ecs_map_t *, ecs_size_t, struct ecs_allocator_t *, int32_t)' | |-ParmVarDecl 0x560467fc4fa8 col:16 map 'ecs_map_t *' | |-ParmVarDecl 0x560467fc5020 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fc50b0 col:29 allocator 'struct ecs_allocator_t *' | |-ParmVarDecl 0x560467fc5128 col:13 elem_count 'int32_t':'int' | `-FullComment 0x56046811ec10 | `-ParagraphComment 0x56046811ebe0 | `-TextComment 0x56046811ebb0 Text=" Initialize new map if uninitialized, leave as is otherwise " |-FunctionDecl 0x560467fc53b0 line:1693:6 _ecs_map_init_w_params_if 'void (ecs_map_t *, ecs_map_params_t *)' | |-ParmVarDecl 0x560467fc52a0 col:16 result 'ecs_map_t *' | `-ParmVarDecl 0x560467fc5318 col:23 params 'ecs_map_params_t *' |-FunctionDecl 0x560467fc5588 line:1702:6 ecs_map_fini 'void (ecs_map_t *)' | |-ParmVarDecl 0x560467fc5498 col:16 map 'ecs_map_t *' | `-FullComment 0x56046811ece0 | `-ParagraphComment 0x56046811ecb0 | `-TextComment 0x56046811ec80 Text=" Deinitialize map. " |-FunctionDecl 0x560467fc5d48 line:1707:12 _ecs_map_new 'ecs_map_t *(ecs_size_t, struct ecs_allocator_t *, int32_t)' | |-ParmVarDecl 0x560467fc5668 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fc56f8 col:29 allocator 'struct ecs_allocator_t *' | |-ParmVarDecl 0x560467fc5770 col:13 elem_count 'int32_t':'int' | `-FullComment 0x56046811edb0 | `-ParagraphComment 0x56046811ed80 | `-TextComment 0x56046811ed50 Text=" Create new map. " |-FunctionDecl 0x560467fc5f28 line:1716:6 ecs_map_is_initialized 'bool (const ecs_map_t *)' | |-ParmVarDecl 0x560467fc5e38 col:22 result 'const ecs_map_t *' | `-FullComment 0x56046811ee80 | `-ParagraphComment 0x56046811ee50 | `-TextComment 0x56046811ee20 Text=" Is map initialized " |-FunctionDecl 0x560467fc6220 line:1721:7 _ecs_map_get 'void *(const ecs_map_t *, ecs_size_t, ecs_map_key_t)' | |-ParmVarDecl 0x560467fc6008 col:22 map 'const ecs_map_t *' | |-ParmVarDecl 0x560467fc6080 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fc60f8 col:19 key 'ecs_map_key_t':'unsigned long' | `-FullComment 0x56046811ef50 | `-ParagraphComment 0x56046811ef20 | `-TextComment 0x56046811eef0 Text=" Get element for key, returns NULL if they key doesn't exist. " |-FunctionDecl 0x560467fc64b0 line:1734:7 _ecs_map_get_ptr 'void *(const ecs_map_t *, ecs_map_key_t)' | |-ParmVarDecl 0x560467fc6318 col:22 map 'const ecs_map_t *' | |-ParmVarDecl 0x560467fc6390 col:19 key 'ecs_map_key_t':'unsigned long' | `-FullComment 0x56046811f090 | `-ParagraphComment 0x56046811f060 | |-TextComment 0x56046811efc0 Text=" Get pointer element. This dereferences the map element as a pointer. This" | |-TextComment 0x56046811efe0 Text=" operation returns NULL when either the element does not exist or whether the" | |-TextComment 0x56046811f000 Text=" pointer is NULL, and should therefore only be used when the application knows" | `-TextComment 0x56046811f020 Text=" for sure that a pointer should never be NULL. " |-FunctionDecl 0x560467fc6728 line:1743:6 ecs_map_has 'bool (const ecs_map_t *, ecs_map_key_t)' | |-ParmVarDecl 0x560467fc6598 col:22 map 'const ecs_map_t *' | |-ParmVarDecl 0x560467fc6610 col:19 key 'ecs_map_key_t':'unsigned long' | `-FullComment 0x56046811f160 | `-ParagraphComment 0x56046811f130 | `-TextComment 0x56046811f100 Text=" Test if map has key " |-FunctionDecl 0x560467fc6a30 line:1749:7 _ecs_map_ensure 'void *(ecs_map_t *, ecs_size_t, ecs_map_key_t)' | |-ParmVarDecl 0x560467fc6818 col:16 map 'ecs_map_t *' | |-ParmVarDecl 0x560467fc6890 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fc6908 col:19 key 'ecs_map_key_t':'unsigned long' | `-FullComment 0x56046811f230 | `-ParagraphComment 0x56046811f200 | `-TextComment 0x56046811f1d0 Text=" Get or create element for key. " |-FunctionDecl 0x560467fc8970 line:1759:7 _ecs_map_set 'void *(ecs_map_t *, ecs_size_t, ecs_map_key_t, const void *)' | |-ParmVarDecl 0x560467fc6b28 col:16 map 'ecs_map_t *' | |-ParmVarDecl 0x560467fc6ba0 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fc6c18 col:19 key 'ecs_map_key_t':'unsigned long' | |-ParmVarDecl 0x560467fc8828 col:17 payload 'const void *' | `-FullComment 0x56046811f300 | `-ParagraphComment 0x56046811f2d0 | `-TextComment 0x56046811f2a0 Text=" Set element. " |-FunctionDecl 0x560467fc8af8 line:1773:6 ecs_map_free 'void (ecs_map_t *)' | |-ParmVarDecl 0x560467fc8a68 col:16 map 'ecs_map_t *' | `-FullComment 0x56046811f3d0 | `-ParagraphComment 0x56046811f3a0 | `-TextComment 0x56046811f370 Text=" Free map. " |-FunctionDecl 0x560467fc8d68 line:1780:9 ecs_map_remove 'int32_t (ecs_map_t *, ecs_map_key_t)' | |-ParmVarDecl 0x560467fc8bd8 col:16 map 'ecs_map_t *' | |-ParmVarDecl 0x560467fc8c50 col:19 key 'ecs_map_key_t':'unsigned long' | `-FullComment 0x56046811f4c0 | `-ParagraphComment 0x56046811f490 | |-TextComment 0x56046811f440 Text=" Remove key from map." | `-TextComment 0x56046811f460 Text=" Returns number of remaining elements." |-FunctionDecl 0x560467fc8ee8 line:1786:6 ecs_map_clear 'void (ecs_map_t *)' | |-ParmVarDecl 0x560467fc8e58 col:16 map 'ecs_map_t *' | `-FullComment 0x56046811f590 | `-ParagraphComment 0x56046811f560 | `-TextComment 0x56046811f530 Text=" Remove all elements from map. " |-FunctionDecl 0x560467fc90b8 line:1791:9 ecs_map_count 'int32_t (const ecs_map_t *)' | |-ParmVarDecl 0x560467fc8fc8 col:22 map 'const ecs_map_t *' | `-FullComment 0x56046811f660 | `-ParagraphComment 0x56046811f630 | `-TextComment 0x56046811f600 Text=" Return number of elements in map. " |-FunctionDecl 0x560467fc9228 line:1796:9 ecs_map_bucket_count 'int32_t (const ecs_map_t *)' | |-ParmVarDecl 0x560467fc9198 col:22 map 'const ecs_map_t *' | `-FullComment 0x56046811f730 | `-ParagraphComment 0x56046811f700 | `-TextComment 0x56046811f6d0 Text=" Return number of buckets in map. " |-FunctionDecl 0x560467fc9428 line:1801:16 ecs_map_iter 'ecs_map_iter_t (const ecs_map_t *)' | |-ParmVarDecl 0x560467fc9330 col:22 map 'const ecs_map_t *' | `-FullComment 0x56046811f800 | `-ParagraphComment 0x56046811f7d0 | `-TextComment 0x56046811f7a0 Text=" Return iterator to map contents. " |-FunctionDecl 0x560467fc9d20 line:1806:7 _ecs_map_next 'void *(ecs_map_iter_t *, ecs_size_t, ecs_map_key_t *)' | |-ParmVarDecl 0x560467fc9568 col:21 iter 'ecs_map_iter_t *' | |-ParmVarDecl 0x560467fc95e0 col:16 elem_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560467fc9688 col:20 key 'ecs_map_key_t *' | `-FullComment 0x56046811f8d0 | `-ParagraphComment 0x56046811f8a0 | `-TextComment 0x56046811f870 Text=" Obtain next element in map from iterator. " |-FunctionDecl 0x560467fc9fb0 line:1816:7 _ecs_map_next_ptr 'void *(ecs_map_iter_t *, ecs_map_key_t *)' | |-ParmVarDecl 0x560467fc9e18 col:21 iter 'ecs_map_iter_t *' | |-ParmVarDecl 0x560467fc9e90 col:20 key 'ecs_map_key_t *' | `-FullComment 0x56046811f9a0 | `-ParagraphComment 0x56046811f970 | `-TextComment 0x56046811f940 Text=" Obtain next pointer element from iterator. See ecs_map_get_ptr. " |-FunctionDecl 0x560467fca228 line:1825:6 ecs_map_grow 'void (ecs_map_t *, int32_t)' | |-ParmVarDecl 0x560467fca098 col:16 map 'ecs_map_t *' | |-ParmVarDecl 0x560467fca110 col:13 elem_count 'int32_t':'int' | `-FullComment 0x56046811fa70 | `-ParagraphComment 0x56046811fa40 | `-TextComment 0x56046811fa10 Text=" Grow number of buckets in the map for specified number of elements. " |-FunctionDecl 0x560467fca428 line:1831:6 ecs_map_set_size 'void (ecs_map_t *, int32_t)' | |-ParmVarDecl 0x560467fca318 col:16 map 'ecs_map_t *' | |-ParmVarDecl 0x560467fca390 col:13 elem_count 'int32_t':'int' | `-FullComment 0x56046811fb40 | `-ParagraphComment 0x56046811fb10 | `-TextComment 0x56046811fae0 Text=" Set number of buckets in the map for specified number of elements. " |-FunctionDecl 0x560467fca608 line:1837:12 ecs_map_copy 'ecs_map_t *(ecs_map_t *)' | |-ParmVarDecl 0x560467fca518 col:16 map 'ecs_map_t *' | `-FullComment 0x56046811fc10 | `-ParagraphComment 0x56046811fbe0 | `-TextComment 0x56046811fbb0 Text=" Copy map. " |-VarDecl 0x560467fca710 col:30 ecs_block_allocator_alloc_count 'int64_t':'long' extern |-VarDecl 0x560467fca788 col:30 ecs_block_allocator_free_count 'int64_t':'long' extern |-VarDecl 0x560467fca800 col:30 ecs_stack_allocator_alloc_count 'int64_t':'long' extern |-VarDecl 0x560467fca878 col:30 ecs_stack_allocator_free_count 'int64_t':'long' extern |-RecordDecl 0x560467fca8e0 prev 0x560467fb40b8 line:1874:16 struct ecs_allocator_t definition | |-FieldDecl 0x560467fca970 col:27 chunks 'ecs_block_allocator_t':'struct ecs_block_allocator_t' | `-FieldDecl 0x560467fcaa10 col:25 sizes 'struct ecs_sparse_t':'struct ecs_sparse_t' |-TypedefDecl 0x560467fcab48 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:6 flecs_allocator_init 'void (ecs_allocator_t *)' | `-ParmVarDecl 0x560467fcac18 col:22 a 'ecs_allocator_t *' |-FunctionDecl 0x560467fcb9a8 line:1884:6 flecs_allocator_fini 'void (ecs_allocator_t *)' | `-ParmVarDecl 0x560467fcb918 col:22 a 'ecs_allocator_t *' |-FunctionDecl 0x560467fcbbe8 line:1888:24 flecs_allocator_get 'ecs_block_allocator_t *(ecs_allocator_t *, ecs_size_t)' | |-ParmVarDecl 0x560467fcba60 col:22 a 'ecs_allocator_t *' | `-ParmVarDecl 0x560467fcbad8 col:16 size 'ecs_size_t':'int' |-FunctionDecl 0x560467fcbe40 line:1893:7 flecs_strdup 'char *(ecs_allocator_t *, const char *)' | |-ParmVarDecl 0x560467fcbca8 col:22 a 'ecs_allocator_t *' | `-ParmVarDecl 0x560467fcbd28 col:17 str 'const char *' |-FunctionDecl 0x560467fcc098 line:1898:6 flecs_strfree 'void (ecs_allocator_t *, char *)' | |-ParmVarDecl 0x560467fcbf00 col:22 a 'ecs_allocator_t *' | `-ParmVarDecl 0x560467fcbf80 col:11 str 'char *' |-FunctionDecl 0x560467fcc380 line:1903:7 flecs_dup 'void *(ecs_allocator_t *, ecs_size_t, const void *)' | |-ParmVarDecl 0x560467fcc158 col:22 a 'ecs_allocator_t *' | |-ParmVarDecl 0x560467fcc1d0 col:16 size 'ecs_size_t':'int' | `-ParmVarDecl 0x560467fcc250 col:17 src 'const void *' |-RecordDecl 0x560467fcc468 line:1950:16 struct ecs_strbuf_element definition | |-FieldDecl 0x560467fcc520 col:10 buffer_embedded 'bool' | |-FieldDecl 0x560467fcc580 col:13 pos 'int32_t':'int' | |-FieldDecl 0x560467fcc5e8 col:11 buf 'char *' | `-FieldDecl 0x560467fcc6f0 col:32 next 'struct ecs_strbuf_element *' |-TypedefDecl 0x560467fcc798 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:16 struct ecs_strbuf_element_embedded definition | |-FieldDecl 0x560467fd0300 col:24 super 'ecs_strbuf_element':'struct ecs_strbuf_element' | `-FieldDecl 0x560467fd0448 col:10 buf 'char[512]' |-TypedefDecl 0x560467fd0568 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:16 struct ecs_strbuf_element_str definition | |-FieldDecl 0x560467fd0690 col:24 super 'ecs_strbuf_element':'struct ecs_strbuf_element' | `-FieldDecl 0x560467fd06f8 col:11 alloc_str 'char *' |-TypedefDecl 0x560467fd07a8 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:16 struct ecs_strbuf_list_elem definition | |-FieldDecl 0x560467fd08d0 col:13 count 'int32_t':'int' | `-FieldDecl 0x560467fd0938 col:17 separator 'const char *' |-TypedefDecl 0x560467fd09e8 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:16 struct ecs_strbuf_t definition | |-FieldDecl 0x560467fd0b18 col:11 buf 'char *' | |-FieldDecl 0x560467fd0b78 col:13 max 'int32_t':'int' | |-FieldDecl 0x560467fd0bd8 col:13 size 'int32_t':'int' | |-FieldDecl 0x560467fd0c38 col:13 elementCount 'int32_t':'int' | |-FieldDecl 0x560467fd0cc0 col:33 firstElement 'ecs_strbuf_element_embedded':'struct ecs_strbuf_element_embedded' | |-FieldDecl 0x560467fd0d48 col:25 current 'ecs_strbuf_element *' | |-FieldDecl 0x560467fd0f18 col:26 list_stack 'ecs_strbuf_list_elem[32]' | |-FieldDecl 0x560467fd0f78 col:13 list_sp 'int32_t':'int' | |-FieldDecl 0x560467fd0fe0 col:11 content 'char *' | `-FieldDecl 0x560467fd1040 col:13 length 'int32_t':'int' |-TypedefDecl 0x560467fd10e8 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 line:2006:6 ecs_strbuf_append 'bool (ecs_strbuf_t *, const char *, ...)' | |-ParmVarDecl 0x560467fd1240 col:19 buffer 'ecs_strbuf_t *' | `-ParmVarDecl 0x560467fd12c0 col:17 fmt 'const char *' |-FunctionDecl 0x560467fd1748 line:2014:6 ecs_strbuf_vappend 'bool (ecs_strbuf_t *, const char *, struct __va_list_tag *)' | |-ParmVarDecl 0x560467fd14a0 col:19 buffer 'ecs_strbuf_t *' | |-ParmVarDecl 0x560467fd1520 col:17 fmt 'const char *' | `-ParmVarDecl 0x560467fd1620 col:13 args 'struct __va_list_tag *':'struct __va_list_tag *' |-FunctionDecl 0x560467fd19a8 line:2022:6 ecs_strbuf_appendstr 'bool (ecs_strbuf_t *, const char *)' | |-ParmVarDecl 0x560467fd1810 col:19 buffer 'ecs_strbuf_t *' | `-ParmVarDecl 0x560467fd1890 col:17 str 'const char *' |-FunctionDecl 0x560467fd1bf8 line:2029:6 ecs_strbuf_appendch 'bool (ecs_strbuf_t *, char)' | |-ParmVarDecl 0x560467fd1a68 col:19 buffer 'ecs_strbuf_t *' | `-ParmVarDecl 0x560467fd1ae0 col:10 ch 'char' |-FunctionDecl 0x560467fd1e48 line:2036:6 ecs_strbuf_appendint 'bool (ecs_strbuf_t *, int64_t)' | |-ParmVarDecl 0x560467fd1cb8 col:19 buffer 'ecs_strbuf_t *' | `-ParmVarDecl 0x560467fd1d30 col:13 v 'int64_t':'long' |-FunctionDecl 0x560467fd2128 line:2043:6 ecs_strbuf_appendflt 'bool (ecs_strbuf_t *, double, char)' | |-ParmVarDecl 0x560467fd1f08 col:19 buffer 'ecs_strbuf_t *' | |-ParmVarDecl 0x560467fd1f88 col:12 v 'double' | `-ParmVarDecl 0x560467fd2000 col:10 nan_delim 'char' |-FunctionDecl 0x560467fd23d8 line:2051:6 ecs_strbuf_mergebuff 'bool (ecs_strbuf_t *, ecs_strbuf_t *)' | |-ParmVarDecl 0x560467fd2250 col:19 dst_buffer 'ecs_strbuf_t *' | `-ParmVarDecl 0x560467fd22c8 col:19 src_buffer 'ecs_strbuf_t *' |-FunctionDecl 0x560467fd2628 line:2058:6 ecs_strbuf_appendstr_zerocpy 'bool (ecs_strbuf_t *, char *)' | |-ParmVarDecl 0x560467fd2498 col:19 buffer 'ecs_strbuf_t *' | `-ParmVarDecl 0x560467fd2518 col:11 str 'char *' |-FunctionDecl 0x560467fd2908 line:2065:6 ecs_strbuf_appendstr_zerocpyn 'bool (ecs_strbuf_t *, char *, int32_t)' | |-ParmVarDecl 0x560467fd26e8 col:19 buffer 'ecs_strbuf_t *' | |-ParmVarDecl 0x560467fd2768 col:11 str 'char *' | `-ParmVarDecl 0x560467fd27e0 col:13 n 'int32_t':'int' |-FunctionDecl 0x560467fd2ae8 line:2073:6 ecs_strbuf_appendstr_zerocpy_const 'bool (ecs_strbuf_t *, const char *)' | |-ParmVarDecl 0x560467fd29d0 col:19 buffer 'ecs_strbuf_t *' | `-ParmVarDecl 0x560467fd2a50 col:17 str 'const char *' |-FunctionDecl 0x560467fd2dc8 line:2080:6 ecs_strbuf_appendstr_zerocpyn_const 'bool (ecs_strbuf_t *, const char *, int32_t)' | |-ParmVarDecl 0x560467fd2ba8 col:19 buffer 'ecs_strbuf_t *' | |-ParmVarDecl 0x560467fd2c28 col:17 str 'const char *' | `-ParmVarDecl 0x560467fd2ca0 col:13 n 'int32_t':'int' |-FunctionDecl 0x560467fd3028 line:2088:6 ecs_strbuf_appendstrn 'bool (ecs_strbuf_t *, const char *, int32_t)' | |-ParmVarDecl 0x560467fd2e90 col:19 buffer 'ecs_strbuf_t *' | |-ParmVarDecl 0x560467fd2f10 col:17 str 'const char *' | `-ParmVarDecl 0x560467fd2f88 col:13 n 'int32_t':'int' |-FunctionDecl 0x560467fd3260 line:2095:7 ecs_strbuf_get 'char *(ecs_strbuf_t *)' | `-ParmVarDecl 0x560467fd30f0 col:19 buffer 'ecs_strbuf_t *' |-FunctionDecl 0x560467fd33b0 line:2100:7 ecs_strbuf_get_small 'char *(ecs_strbuf_t *)' | `-ParmVarDecl 0x560467fd3318 col:19 buffer 'ecs_strbuf_t *' |-FunctionDecl 0x560467fd3558 line:2105:6 ecs_strbuf_reset 'void (ecs_strbuf_t *)' | `-ParmVarDecl 0x560467fd3468 col:19 buffer 'ecs_strbuf_t *' |-FunctionDecl 0x560467fd3838 line:2110:6 ecs_strbuf_list_push 'void (ecs_strbuf_t *, const char *, const char *)' | |-ParmVarDecl 0x560467fd3610 col:19 buffer 'ecs_strbuf_t *' | |-ParmVarDecl 0x560467fd3690 col:17 list_open 'const char *' | `-ParmVarDecl 0x560467fd3710 col:17 separator 'const char *' |-FunctionDecl 0x560467fd3a98 line:2117:6 ecs_strbuf_list_pop 'void (ecs_strbuf_t *, const char *)' | |-ParmVarDecl 0x560467fd3900 col:19 buffer 'ecs_strbuf_t *' | `-ParmVarDecl 0x560467fd3980 col:17 list_close 'const char *' |-FunctionDecl 0x560467fd3be8 line:2123:6 ecs_strbuf_list_next 'void (ecs_strbuf_t *)' | `-ParmVarDecl 0x560467fd3b58 col:19 buffer 'ecs_strbuf_t *' |-FunctionDecl 0x560467fd3db0 line:2128:6 ecs_strbuf_list_appendch 'bool (ecs_strbuf_t *, char)' | |-ParmVarDecl 0x560467fd3ca0 col:19 buffer 'ecs_strbuf_t *' | `-ParmVarDecl 0x560467fd3d18 col:10 ch 'char' |-FunctionDecl 0x560467fd3f88 line:2134:6 ecs_strbuf_list_append 'bool (ecs_strbuf_t *, const char *, ...)' | |-ParmVarDecl 0x560467fd3e70 col:19 buffer 'ecs_strbuf_t *' | `-ParmVarDecl 0x560467fd3ef0 col:17 fmt 'const char *' |-FunctionDecl 0x560467fd4160 line:2141:6 ecs_strbuf_list_appendstr 'bool (ecs_strbuf_t *, const char *)' | |-ParmVarDecl 0x560467fd4048 col:19 buffer 'ecs_strbuf_t *' | `-ParmVarDecl 0x560467fd40c8 col:17 str 'const char *' |-FunctionDecl 0x560467fd4408 line:2147:6 ecs_strbuf_list_appendstrn 'bool (ecs_strbuf_t *, const char *, int32_t)' | |-ParmVarDecl 0x560467fd4270 col:19 buffer 'ecs_strbuf_t *' | |-ParmVarDecl 0x560467fd42f0 col:17 str 'const char *' | `-ParmVarDecl 0x560467fd4368 col:13 n 'int32_t':'int' |-FunctionDecl 0x560467fd4618 line:2153:9 ecs_strbuf_written 'int32_t (const ecs_strbuf_t *)' | `-ParmVarDecl 0x560467fd4528 col:25 buffer 'const ecs_strbuf_t *' |-FunctionDecl 0x560467fd4810 /usr/include/errno.h:37:13 __errno_location 'int *(void)' extern | |-NoThrowAttr 0x560467fd48b0 | `-ConstAttr 0x560467fd4908 |-FunctionDecl 0x560467fd4a40 col:14 implicit alloca 'void *(unsigned long)' extern | |-ParmVarDecl 0x560467fd4b38 <> 'unsigned long' | `-BuiltinAttr 0x560467fd4ae0 <> Implicit 867 |-FunctionDecl 0x560467fd4ba8 prev 0x560467fd4a40 /usr/include/alloca.h:32:14 alloca 'void *(unsigned long)' extern | |-ParmVarDecl 0x560467fd4940 col:29 __size 'size_t':'unsigned long' | |-BuiltinAttr 0x560467fd4ca8 <> Inherited Implicit 867 | `-NoThrowAttr 0x560467fd4c50 |-RecordDecl 0x560467fd4cd0 line:2206:16 struct ecs_time_t definition | |-FieldDecl 0x560467fd4d80 col:14 sec 'uint32_t':'unsigned int' | `-FieldDecl 0x560467fd4de0 col:14 nanosec 'uint32_t':'unsigned int' |-TypedefDecl 0x560467fd4e88 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 col:16 ecs_os_api_malloc_count 'int64_t':'long' extern |-VarDecl 0x560467fd4f80 col:16 ecs_os_api_realloc_count 'int64_t':'long' extern |-VarDecl 0x560467fd4ff8 col:16 ecs_os_api_calloc_count 'int64_t':'long' extern |-VarDecl 0x560467fd5070 col:16 ecs_os_api_free_count 'int64_t':'long' extern |-TypedefDecl 0x560467fd5110 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 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 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 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 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 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 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 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 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: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: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: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: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: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: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: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: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 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: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: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: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: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: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: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: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: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: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: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: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: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: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: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 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: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: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: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: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: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: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:16 struct ecs_os_api_t definition | |-FieldDecl 0x560467ff0a00 col:23 init_ 'ecs_os_api_init_t':'void (*)(void)' | |-FieldDecl 0x560467ff0a80 col:23 fini_ 'ecs_os_api_fini_t':'void (*)(void)' | |-FieldDecl 0x560467ff0b00 col:25 malloc_ 'ecs_os_api_malloc_t':'void *(*)(ecs_size_t)' | |-FieldDecl 0x560467ff0ba0 col:26 realloc_ 'ecs_os_api_realloc_t':'void *(*)(void *, ecs_size_t)' | |-FieldDecl 0x560467ff0c20 col:25 calloc_ 'ecs_os_api_calloc_t':'void *(*)(ecs_size_t)' | |-FieldDecl 0x560467ff0ca0 col:23 free_ 'ecs_os_api_free_t':'void (*)(void *)' | |-FieldDecl 0x560467ff0d20 col:25 strdup_ 'ecs_os_api_strdup_t':'char *(*)(const char *)' | |-FieldDecl 0x560467ff0da0 col:29 thread_new_ 'ecs_os_api_thread_new_t':'ecs_os_thread_t (*)(ecs_os_thread_callback_t, void *)' | |-FieldDecl 0x560467ff0e20 col:30 thread_join_ 'ecs_os_api_thread_join_t':'void *(*)(ecs_os_thread_t)' | |-FieldDecl 0x560467ff0ea0 col:30 thread_self_ 'ecs_os_api_thread_self_t':'ecs_os_thread_id_t (*)(void)' | |-FieldDecl 0x560467ff0f20 col:23 ainc_ 'ecs_os_api_ainc_t':'int32_t (*)(int32_t *)' | |-FieldDecl 0x560467ff0f80 col:23 adec_ 'ecs_os_api_ainc_t':'int32_t (*)(int32_t *)' | |-FieldDecl 0x560467ff1000 col:24 lainc_ 'ecs_os_api_lainc_t':'int64_t (*)(int64_t *)' | |-FieldDecl 0x560467ff1060 col:24 ladec_ 'ecs_os_api_lainc_t':'int64_t (*)(int64_t *)' | |-FieldDecl 0x560467ff10e0 col:28 mutex_new_ 'ecs_os_api_mutex_new_t':'ecs_os_mutex_t (*)(void)' | |-FieldDecl 0x560467ff1160 col:29 mutex_free_ 'ecs_os_api_mutex_free_t':'void (*)(ecs_os_mutex_t)' | |-FieldDecl 0x560467ff11e0 col:29 mutex_lock_ 'ecs_os_api_mutex_lock_t':'void (*)(ecs_os_mutex_t)' | |-FieldDecl 0x560467ff1240 col:29 mutex_unlock_ 'ecs_os_api_mutex_lock_t':'void (*)(ecs_os_mutex_t)' | |-FieldDecl 0x560467ff12c0 col:27 cond_new_ 'ecs_os_api_cond_new_t':'ecs_os_cond_t (*)(void)' | |-FieldDecl 0x560467ff1340 col:28 cond_free_ 'ecs_os_api_cond_free_t':'void (*)(ecs_os_cond_t)' | |-FieldDecl 0x560467ff13c0 col:30 cond_signal_ 'ecs_os_api_cond_signal_t':'void (*)(ecs_os_cond_t)' | |-FieldDecl 0x560467ff1440 col:33 cond_broadcast_ 'ecs_os_api_cond_broadcast_t':'void (*)(ecs_os_cond_t)' | |-FieldDecl 0x560467ff14c0 col:28 cond_wait_ 'ecs_os_api_cond_wait_t':'void (*)(ecs_os_cond_t, ecs_os_mutex_t)' | |-FieldDecl 0x560467ff1540 col:24 sleep_ 'ecs_os_api_sleep_t':'void (*)(int32_t, int32_t)' | |-FieldDecl 0x560467ff15c0 col:22 now_ 'ecs_os_api_now_t':'uint64_t (*)(void)' | |-FieldDecl 0x560467ff1640 col:27 get_time_ 'ecs_os_api_get_time_t':'void (*)(ecs_time_t *)' | |-FieldDecl 0x560467ff16c0 col:22 log_ 'ecs_os_api_log_t':'void (*)(int32_t, const char *, int32_t, const char *)' | |-FieldDecl 0x560467ff1740 col:24 abort_ 'ecs_os_api_abort_t':'void (*)(void)' | |-FieldDecl 0x560467ff17c0 col:25 dlopen_ 'ecs_os_api_dlopen_t':'ecs_os_dl_t (*)(const char *)' | |-FieldDecl 0x560467ff1840 col:25 dlproc_ 'ecs_os_api_dlproc_t':'ecs_os_proc_t (*)(ecs_os_dl_t, const char *)' | |-FieldDecl 0x560467ff18c0 col:26 dlclose_ 'ecs_os_api_dlclose_t':'void (*)(ecs_os_dl_t)' | |-FieldDecl 0x560467ff1940 col:33 module_to_dl_ 'ecs_os_api_module_to_path_t':'char *(*)(const char *)' | |-FieldDecl 0x560467ff19a0 col:33 module_to_etc_ 'ecs_os_api_module_to_path_t':'char *(*)(const char *)' | |-FieldDecl 0x560467ff1a00 col:13 log_level_ 'int32_t':'int' | |-FieldDecl 0x560467ff1a60 col:13 log_indent_ 'int32_t':'int' | |-FieldDecl 0x560467ff1ac0 col:13 log_last_error_ 'int32_t':'int' | |-FieldDecl 0x560467ff1b20 col:13 log_last_timestamp_ 'int64_t':'long' | `-FieldDecl 0x560467ff2bc0 col:19 flags_ 'ecs_flags32_t':'unsigned int' |-TypedefDecl 0x560467ff2c68 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 col:21 ecs_os_api 'ecs_os_api_t':'struct ecs_os_api_t' extern |-FunctionDecl 0x560467ff2e10 col:6 ecs_os_init 'void (void)' |-FunctionDecl 0x560467ff2f48 col:6 ecs_os_fini 'void (void)' |-FunctionDecl 0x560467ff3148 line:2468:6 ecs_os_set_api 'void (ecs_os_api_t *)' | `-ParmVarDecl 0x560467ff3058 col:19 os_api 'ecs_os_api_t *' |-FunctionDecl 0x560467ff32e8 col:14 ecs_os_get_api 'ecs_os_api_t (void)' |-FunctionDecl 0x560467ff3420 col:6 ecs_os_set_api_defaults 'void (void)' |-FunctionDecl 0x560467ff36f8 col:6 ecs_os_dbg 'void (const char *, int32_t, const char *)' | |-ParmVarDecl 0x560467ff34d8 col:29 file 'const char *' | |-ParmVarDecl 0x560467ff3550 col:43 line 'int32_t':'int' | `-ParmVarDecl 0x560467ff35d0 col:61 msg 'const char *' |-FunctionDecl 0x560467ff3960 col:6 ecs_os_trace 'void (const char *, int32_t, const char *)' | |-ParmVarDecl 0x560467ff37c8 col:31 file 'const char *' | |-ParmVarDecl 0x560467ff3840 col:45 line 'int32_t':'int' | `-ParmVarDecl 0x560467ff38c0 col:63 msg 'const char *' |-FunctionDecl 0x560467ffb6c8 col:6 ecs_os_warn 'void (const char *, int32_t, const char *)' | |-ParmVarDecl 0x560467ff3a30 col:30 file 'const char *' | |-ParmVarDecl 0x560467ff3aa8 col:44 line 'int32_t':'int' | `-ParmVarDecl 0x560467ff3b28 col:62 msg 'const char *' |-FunctionDecl 0x560467ffb930 col:6 ecs_os_err 'void (const char *, int32_t, const char *)' | |-ParmVarDecl 0x560467ffb798 col:29 file 'const char *' | |-ParmVarDecl 0x560467ffb810 col:43 line 'int32_t':'int' | `-ParmVarDecl 0x560467ffb890 col:61 msg 'const char *' |-FunctionDecl 0x560467ffbb98 col:6 ecs_os_fatal 'void (const char *, int32_t, const char *)' | |-ParmVarDecl 0x560467ffba00 col:31 file 'const char *' | |-ParmVarDecl 0x560467ffba78 col:45 line 'int32_t':'int' | `-ParmVarDecl 0x560467ffbaf8 col:63 msg 'const char *' |-FunctionDecl 0x560467ffbd30 col:13 ecs_os_strerror 'const char *(int)' | `-ParmVarDecl 0x560467ffbc68 col:33 err 'int' |-FunctionDecl 0x560467ffbeb8 line:2647:6 ecs_sleepf 'void (double)' | `-ParmVarDecl 0x560467ffbdf0 col:12 t 'double' |-FunctionDecl 0x560467ffc070 line:2652:8 ecs_time_measure 'double (ecs_time_t *)' | `-ParmVarDecl 0x560467ffbf70 col:17 start 'ecs_time_t *' |-FunctionDecl 0x560467ffc2b8 line:2657:12 ecs_time_sub 'ecs_time_t (ecs_time_t, ecs_time_t)' | |-ParmVarDecl 0x560467ffc128 col:16 t1 'ecs_time_t':'struct ecs_time_t' | `-ParmVarDecl 0x560467ffc1a0 col:16 t2 'ecs_time_t':'struct ecs_time_t' |-FunctionDecl 0x560467ffc470 line:2663:8 ecs_time_to_double 'double (ecs_time_t)' | `-ParmVarDecl 0x560467ffc378 col:16 t 'ecs_time_t':'struct ecs_time_t' |-FunctionDecl 0x560467ffe6e8 line:2667:7 ecs_os_memdup 'void *(const void *, ecs_size_t)' | |-ParmVarDecl 0x560467ffc530 col:17 src 'const void *' | `-ParmVarDecl 0x560467ffc5a8 col:16 size 'ecs_size_t':'int' |-FunctionDecl 0x560467ffe888 col:6 ecs_os_has_heap 'bool (void)' | `-FullComment 0x56046811fce0 | `-ParagraphComment 0x56046811fcb0 | `-TextComment 0x56046811fc80 Text=" Are heap functions available? " |-FunctionDecl 0x560467ffe9f0 col:6 ecs_os_has_threading 'bool (void)' | `-FullComment 0x56046811fdb0 | `-ParagraphComment 0x56046811fd80 | `-TextComment 0x56046811fd50 Text=" Are threading functions available? " |-FunctionDecl 0x560467ffeb50 col:6 ecs_os_has_time 'bool (void)' | `-FullComment 0x56046811fe80 | `-ParagraphComment 0x56046811fe50 | `-TextComment 0x56046811fe20 Text=" Are time functions available? " |-FunctionDecl 0x560467ffecb0 col:6 ecs_os_has_logging 'bool (void)' | `-FullComment 0x560468120770 | `-ParagraphComment 0x560468120740 | `-TextComment 0x56046811fef0 Text=" Are logging functions available? " |-FunctionDecl 0x560467ffee10 col:6 ecs_os_has_dl 'bool (void)' | `-FullComment 0x560468120840 | `-ParagraphComment 0x560468120810 | `-TextComment 0x5604681207e0 Text=" Are dynamic library functions available? " |-FunctionDecl 0x560467ffef70 col:6 ecs_os_has_modules 'bool (void)' | `-FullComment 0x560468120910 | `-ParagraphComment 0x5604681208e0 | `-TextComment 0x5604681208b0 Text=" Are module path functions available? " |-TypedefDecl 0x560467fff0d8 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 | `-ParagraphComment 0x5604681209d0 | |-TextComment 0x560468120980 Text=" An id. Ids are the things that can be added to an entity. An id can be an" | `-TextComment 0x5604681209a0 Text=" entity or pair, and can have optional id flags. " |-TypedefDecl 0x560467fff190 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 | `-ParagraphComment 0x560468120aa0 | `-TextComment 0x560468120a70 Text=" An entity identifier. " |-RecordDecl 0x560467fff218 line:2728:9 struct definition | |-FullComment 0x560468120ba0 | | `-ParagraphComment 0x560468120b70 | | `-TextComment 0x560468120b40 Text=" An array with (component) ids " | |-FieldDecl 0x560467fff2f8 col:15 array 'ecs_id_t *' | `-FieldDecl 0x560467fff358 col:13 count 'int32_t':'int' |-TypedefDecl 0x560467fff408 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 | `-ParagraphComment 0x560468120c40 | `-TextComment 0x560468120c10 Text=" An array with (component) ids " |-RecordDecl 0x560467fff4a0 col:16 struct ecs_world_t |-TypedefDecl 0x560467fff598 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 | `-ParagraphComment 0x560468120d10 | `-TextComment 0x560468120ce0 Text=" A world is the container for all ECS data and supporting features. " |-RecordDecl 0x560467fff630 col:16 struct ecs_table_t |-TypedefDecl 0x560467fff738 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 | `-ParagraphComment 0x560468120de0 | `-TextComment 0x560468120db0 Text=" A table is where entities and components are stored " |-RecordDecl 0x560467fff7d0 col:16 struct ecs_term_t |-TypedefDecl 0x560467fff8c8 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 | `-ParagraphComment 0x560468120eb0 | `-TextComment 0x560468120e80 Text=" A term is a single element in a query " |-RecordDecl 0x560467fff960 col:16 struct ecs_query_t |-TypedefDecl 0x560467fffa58 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 | `-ParagraphComment 0x560468120f80 | `-TextComment 0x560468120f50 Text=" A query allows for cached iteration over ECS data " |-RecordDecl 0x560467fffaf0 col:16 struct ecs_filter_t |-TypedefDecl 0x560467fffbe8 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 | `-ParagraphComment 0x560468121050 | `-TextComment 0x560468121020 Text=" A filter allows for uncached, ad hoc iteration over ECS data " |-RecordDecl 0x560467fffc80 col:16 struct ecs_rule_t |-TypedefDecl 0x560467fffd78 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 | `-ParagraphComment 0x560468121120 | `-TextComment 0x5604681210f0 Text=" A rule implements a non-trivial filter " |-RecordDecl 0x560467fffe10 col:16 struct ecs_observer_t |-TypedefDecl 0x560467ffff08 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 | `-ParagraphComment 0x5604681211f0 | `-TextComment 0x5604681211c0 Text=" An observer reacts to events matching multiple filter terms " |-RecordDecl 0x560467ffffa0 col:16 struct ecs_observable_t |-TypedefDecl 0x560468000098 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 | `-ParagraphComment 0x5604681212c0 | `-TextComment 0x560468121290 Text=" An observable contains lists of triggers for specific events/components " |-RecordDecl 0x560468000108 col:16 struct ecs_iter_t |-TypedefDecl 0x560468000208 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 col:16 struct ecs_ref_t |-TypedefDecl 0x560468000398 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 | `-ParagraphComment 0x560468121390 | `-TextComment 0x560468121360 Text=" Refs cache data that lets them access components faster than ecs_get. " |-RecordDecl 0x560468000430 col:16 struct ecs_type_hooks_t |-TypedefDecl 0x560468000528 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 | `-ParagraphComment 0x560468121460 | `-TextComment 0x560468121430 Text=" Type hooks (callbacks) " |-RecordDecl 0x5604680005c0 col:16 struct ecs_type_info_t |-TypedefDecl 0x5604680006d0 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 | `-ParagraphComment 0x560468121530 | `-TextComment 0x560468121500 Text=" Type information " |-RecordDecl 0x560468000740 col:16 struct ecs_id_record_t |-TypedefDecl 0x560468000838 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 col:16 struct ecs_table_record_t |-TypedefDecl 0x5604680009a8 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 col:14 referenced ecs_poly_t 'void' | |-BuiltinType 0x560467ec1810 'void' | `-FullComment 0x560468121950 | |-ParagraphComment 0x560468121670 | | |-TextComment 0x5604681215d0 Text=" A poly object." | | |-TextComment 0x5604681215f0 Text=" A poly (short for polymorph) object is an object that has a variable list of" | | |-TextComment 0x560468121610 Text=" capabilities, determined by a mixin table. This is the current list of types" | | `-TextComment 0x560468121630 Text=" in the flecs API that can be used as an ecs_poly_t:" | |-ParagraphComment 0x560468121780 | | |-TextComment 0x560468121690 Text=" - ecs_world_t" | | |-TextComment 0x5604681216b0 Text=" - ecs_stage_t" | | |-TextComment 0x5604681216d0 Text=" - ecs_query_t" | | |-TextComment 0x5604681216f0 Text=" - ecs_filter_t" | | |-TextComment 0x560468121710 Text=" - ecs_rule_t" | | `-TextComment 0x560468121730 Text=" - (more to come)" | |-ParagraphComment 0x560468121820 | | |-TextComment 0x5604681217a0 Text=" Functions that accept an ecs_poly_t argument can accept objects of these" | | |-TextComment 0x5604681217c0 Text=" types. If the object does not have the requested mixin the API will throw an" | | `-TextComment 0x5604681217e0 Text=" assert." | `-ParagraphComment 0x560468121910 | |-TextComment 0x560468121840 Text=" The poly/mixin framework enables partially overlapping features to be" | |-TextComment 0x560468121860 Text=" implemented once, and enables objects of different types to interact with" | |-TextComment 0x560468121880 Text=" each other depending on what mixins they have, rather than their type" | |-TextComment 0x5604681218a0 Text=" (in some ways it's like a mini-ECS). Additionally, each poly object has a" | `-TextComment 0x5604681218c0 Text=" header that enables the API to do sanity checking on the input arguments." |-RecordDecl 0x560468000ad8 col:16 struct ecs_mixins_t |-TypedefDecl 0x560468000bd8 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 | `-ParagraphComment 0x5604681219f0 | `-TextComment 0x5604681219c0 Text=" Type that stores poly mixins " |-RecordDecl 0x560468000c70 line:2803:16 struct ecs_header_t definition | |-FullComment 0x560468121af0 | | `-ParagraphComment 0x560468121ac0 | | `-TextComment 0x560468121a90 Text=" Header for ecs_poly_t objects. " | |-FieldDecl 0x560468000d20 col:13 magic 'int32_t':'int' | |-FieldDecl 0x560468000d80 col:13 type 'int32_t':'int' | `-FieldDecl 0x560468000e58 col:19 mixins 'ecs_mixins_t *' |-TypedefDecl 0x560468000f08 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 | `-ParagraphComment 0x560468121b90 | `-TextComment 0x560468121b60 Text=" Header for ecs_poly_t objects. " |-TypedefDecl 0x560468001210 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 | |-ParagraphComment 0x560468121cb0 | | |-TextComment 0x560468121c30 Text=" Function prototype for runnables (systems, observers)." | | |-TextComment 0x560468121c50 Text=" The run callback overrides the default behavior for iterating through the" | | `-TextComment 0x560468121c70 Text=" results of a runnable object." | |-ParagraphComment 0x560468121d20 | | |-TextComment 0x560468121cd0 Text=" The default runnable iterates the iterator, and calls an iter_action (see" | | `-TextComment 0x560468121cf0 Text=" below) for each returned result." | |-ParagraphComment 0x560468121d70 | | `-TextComment 0x560468121d40 Text=" " | `-ParamCommandComment 0x560468121d90 [in] implicitly Param="it" ParamIndex=0 | `-ParagraphComment 0x560468121e20 | `-TextComment 0x560468121df0 Text=" The iterator to be iterated by the runnable." |-TypedefDecl 0x560468001348 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 | |-ParagraphComment 0x560468121f50 | | |-TextComment 0x560468121ed0 Text=" Function prototype for iterables." | | |-TextComment 0x560468121ef0 Text=" A system may invoke a callback multiple times, typically once for each" | | `-TextComment 0x560468121f10 Text=" matched table." | |-ParagraphComment 0x560468121fa0 | | `-TextComment 0x560468121f70 Text=" " | `-ParamCommandComment 0x560468121fc0 [in] implicitly Param="it" ParamIndex=0 | `-ParagraphComment 0x560468122050 | `-TextComment 0x560468122020 Text=" The iterator containing the data for the current match." |-TypedefDecl 0x560468001a48 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 | |-ParagraphComment 0x5604681221d0 | | |-TextComment 0x560468122100 Text=" Function prototype for creating an iterator from a poly." | | |-TextComment 0x560468122120 Text=" Used to create iterators from poly objects with the iterable mixin. When a" | | |-TextComment 0x560468122140 Text=" filter is provided, an array of two iterators must be passed to the function." | | |-TextComment 0x560468122160 Text=" This allows the mixin implementation to create a chained iterator when" | | `-TextComment 0x560468122180 Text=" necessary, which requires two iterator objects." | |-ParagraphComment 0x560468122220 | | `-TextComment 0x5604681221f0 Text=" " | |-ParamCommandComment 0x560468122240 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681222f0 | | |-TextComment 0x5604681222a0 Text=" The world or stage for which to create the iterator." | | `-TextComment 0x5604681222c0 Text=" " | |-ParamCommandComment 0x560468122310 [in] implicitly Param="iterable" ParamIndex=1 | | `-ParagraphComment 0x5604681223c0 | | |-TextComment 0x560468122370 Text=" An iterable poly object." | | `-TextComment 0x560468122390 Text=" " | |-ParamCommandComment 0x5604681223e0 [in] implicitly Param="it" ParamIndex=2 | | `-ParagraphComment 0x560468122490 | | |-TextComment 0x560468122440 Text=" The iterator to create (out parameter)" | | `-TextComment 0x560468122460 Text=" " | `-ParamCommandComment 0x5604681224b0 [in] implicitly Param="filter" ParamIndex=3 | `-ParagraphComment 0x560468122540 | `-TextComment 0x560468122510 Text=" Optional term to filter results." |-TypedefDecl 0x560468001c60 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 | |-ParagraphComment 0x560468122680 | | |-TextComment 0x560468122600 Text=" Function prototype for iterating an iterator." | | |-TextComment 0x560468122620 Text=" Stored inside initialized iterators. This allows an application to * iterate " | | `-TextComment 0x560468122640 Text=" an iterator without needing to know what created it." | |-ParagraphComment 0x5604681226d0 | | `-TextComment 0x5604681226a0 Text=" " | |-ParamCommandComment 0x5604681226f0 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x5604681237d0 | | |-TextComment 0x560468123780 Text=" The iterator to iterate." | | `-TextComment 0x5604681237a0 Text=" " | `-BlockCommandComment 0x5604681237f0 Name="return" | `-ParagraphComment 0x560468123850 | `-TextComment 0x560468123820 Text=" True if iterator has no more results, false if it does." |-TypedefDecl 0x560468001d98 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 | |-ParagraphComment 0x560468123950 | | |-TextComment 0x560468123900 Text=" Function prototype for freeing an iterator." | | `-TextComment 0x560468123920 Text=" Free iterator resources." | |-ParagraphComment 0x5604681239a0 | | `-TextComment 0x560468123970 Text=" " | `-ParamCommandComment 0x5604681239c0 [in] implicitly Param="it" ParamIndex=0 | `-ParagraphComment 0x560468123a50 | `-TextComment 0x560468123a20 Text=" The iterator to free." |-TypedefDecl 0x5604680021b0 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 | `-ParagraphComment 0x560468123b30 | `-TextComment 0x560468123b00 Text=" Callback used for comparing components " |-TypedefDecl 0x560468002e48 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 | `-ParagraphComment 0x560468123c00 | `-TextComment 0x560468123bd0 Text=" Callback used for sorting the entire table of components " |-TypedefDecl 0x560468003228 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 | `-ParagraphComment 0x560468123cd0 | `-TextComment 0x560468123ca0 Text=" Callback used for grouping tables in a query " |-TypedefDecl 0x560468003548 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: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: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 | `-ParagraphComment 0x560468123da0 | `-TextComment 0x560468123d70 Text=" Initialization action for modules " |-TypedefDecl 0x560468004ec8 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 | `-ParagraphComment 0x560468123e70 | `-TextComment 0x560468123e40 Text=" Action callback on world exit " |-TypedefDecl 0x560468005000 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 | `-ParagraphComment 0x560468123f40 | `-TextComment 0x560468123f10 Text=" Function to cleanup context data " |-TypedefDecl 0x5604680051d0 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 | `-ParagraphComment 0x560468124010 | `-TextComment 0x560468123fe0 Text=" Callback used for sorting values " |-TypedefDecl 0x560468005400 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 | `-ParagraphComment 0x5604681240e0 | `-TextComment 0x5604681240b0 Text=" Callback used for hashing values " |-TypedefDecl 0x5604680057c0 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 | `-ParagraphComment 0x5604681241b0 | `-TextComment 0x560468124180 Text=" Constructor/destructor callback " |-TypedefDecl 0x560468005bb8 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 | `-ParagraphComment 0x560468124280 | `-TextComment 0x560468124250 Text=" Copy is invoked when a component is copied into another component. " |-TypedefDecl 0x560468006168 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 | `-ParagraphComment 0x560468124350 | `-TextComment 0x560468124320 Text=" Move is invoked when a component is moved to another component. " |-TypedefDecl 0x560468006320 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:16 struct ecs_iterable_t definition | |-FullComment 0x560468124470 | | `-ParagraphComment 0x560468124440 | | |-TextComment 0x5604681243f0 Text=" Iterable mixin." | | `-TextComment 0x560468124410 Text=" Allows its container to be iterated. " | `-FieldDecl 0x5604680064e0 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 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 | `-ParagraphComment 0x560468124530 | |-TextComment 0x5604681244e0 Text=" Iterable mixin." | `-TextComment 0x560468124500 Text=" Allows its container to be iterated. " |-EnumDecl 0x560468006680 line:2980:14 ecs_inout_kind_t | |-FullComment 0x560468124630 | | `-ParagraphComment 0x560468124600 | | `-TextComment 0x5604681245d0 Text=" Specify read/write access for term " | |-EnumConstantDecl 0x560468006740 col:5 EcsInOutDefault 'int' | |-EnumConstantDecl 0x560468006790 col:5 EcsInOutNone 'int' | |-EnumConstantDecl 0x5604680067e0 col:5 EcsInOut 'int' | |-EnumConstantDecl 0x560468006830 col:5 EcsIn 'int' | `-EnumConstantDecl 0x560468006880 col:5 EcsOut 'int' |-TypedefDecl 0x560468006928 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 | `-ParagraphComment 0x5604681246d0 | `-TextComment 0x5604681246a0 Text=" Specify read/write access for term " |-EnumDecl 0x5604680069c0 line:2989:14 ecs_oper_kind_t | |-FullComment 0x5604681247d0 | | `-ParagraphComment 0x5604681247a0 | | `-TextComment 0x560468124770 Text=" Specify operator for term " | |-EnumConstantDecl 0x560468006a80 col:5 EcsAnd 'int' | |-EnumConstantDecl 0x560468006ad0 col:5 EcsOr 'int' | |-EnumConstantDecl 0x560468006b20 col:5 EcsNot 'int' | |-EnumConstantDecl 0x560468006b70 col:5 EcsOptional 'int' | |-EnumConstantDecl 0x560468006bc0 col:5 EcsAndFrom 'int' | |-EnumConstantDecl 0x560468006c10 col:5 EcsOrFrom 'int' | `-EnumConstantDecl 0x560468006c60 col:5 EcsNotFrom 'int' |-TypedefDecl 0x560468006d08 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 | `-ParagraphComment 0x560468124870 | `-TextComment 0x560468124840 Text=" Specify operator for term " |-RecordDecl 0x560468006f50 line:3012:16 struct ecs_term_id_t definition | |-FullComment 0x560468124970 | | `-ParagraphComment 0x560468124940 | | `-TextComment 0x560468124910 Text=" Type that describes a single identifier in a term " | |-FieldDecl 0x5604680075f0 col:18 id 'ecs_entity_t':'unsigned long' | | `-FullComment 0x560468124ae0 | | `-ParagraphComment 0x560468124ab0 | | |-TextComment 0x5604681249e0 Text=" Entity id. If left to 0 and flags does not " | | |-TextComment 0x560468124a00 Text=" specify whether id is an entity or a variable" | | |-TextComment 0x560468124a20 Text=" the id will be initialized to EcsThis. " | | |-TextComment 0x560468124a40 Text=" To explicitly set the id to 0, leave the id" | | `-TextComment 0x560468124a60 Text=" member to 0 and set EcsIsEntity in flags. " | |-FieldDecl 0x560468007680 col:11 name 'char *' | | `-FullComment 0x560468124c70 | | `-ParagraphComment 0x560468124c40 | | |-TextComment 0x560468124b50 Text=" Name. This can be either the variable name" | | |-TextComment 0x560468124b70 Text=" (when the EcsIsVariable flag is set) or an" | | |-TextComment 0x560468124b90 Text=" entity name. Entity names are used to " | | |-TextComment 0x560468124bb0 Text=" initialize the id member during term " | | |-TextComment 0x560468124bd0 Text=" finalization and will be freed when term.move" | | `-TextComment 0x560468124bf0 Text=" is set to true. " | |-FieldDecl 0x560468007708 col:18 trav 'ecs_entity_t':'unsigned long' | | `-FullComment 0x560468124d90 | | `-ParagraphComment 0x560468124d60 | | |-TextComment 0x560468124ce0 Text=" Relationship to traverse when looking for the" | | |-TextComment 0x560468124d00 Text=" component. The relationship must have" | | `-TextComment 0x560468124d20 Text=" the Acyclic property. Default is IsA. " | `-FieldDecl 0x560468007798 col:19 flags 'ecs_flags32_t':'unsigned int' | `-FullComment 0x560468124e60 | `-ParagraphComment 0x560468124e30 | `-TextComment 0x560468124e00 Text=" Term flags " |-TypedefDecl 0x560468007878 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 | `-ParagraphComment 0x560468124f00 | `-TextComment 0x560468124ed0 Text=" Type that describes a single identifier in a term " |-RecordDecl 0x560468007910 prev 0x560467fff7d0 line:3034:8 struct ecs_term_t definition | |-FullComment 0x560468125000 | | `-ParagraphComment 0x560468124fd0 | | `-TextComment 0x560468124fa0 Text=" Type that describes a term (single element in a query) " | |-FieldDecl 0x5604680079a0 col:14 id 'ecs_id_t':'unsigned long' | | `-FullComment 0x560468125140 | | `-ParagraphComment 0x560468125110 | | |-TextComment 0x560468125070 Text=" Component id to be matched by term. Can be" | | |-TextComment 0x560468125090 Text=" set directly, or will be populated from the" | | |-TextComment 0x5604681250b0 Text=" first/second members, which provide more" | | `-TextComment 0x5604681250d0 Text=" flexibility. " | |-FieldDecl 0x560468007a50 col:19 src 'ecs_term_id_t':'struct ecs_term_id_t' | | `-FullComment 0x560468125210 | | `-ParagraphComment 0x5604681251e0 | | `-TextComment 0x5604681251b0 Text=" Source of term " | |-FieldDecl 0x560468007ad8 col:19 first 'ecs_term_id_t':'struct ecs_term_id_t' | | `-FullComment 0x5604681252e0 | | `-ParagraphComment 0x5604681252b0 | | `-TextComment 0x560468125280 Text=" Component or first element of pair " | |-FieldDecl 0x560468007b68 col:19 second 'ecs_term_id_t':'struct ecs_term_id_t' | | `-FullComment 0x5604681253b0 | | `-ParagraphComment 0x560468125380 | | `-TextComment 0x560468125350 Text=" Second element of pair " | |-FieldDecl 0x560468007c20 col:22 inout 'ecs_inout_kind_t':'enum ecs_inout_kind_t' | | `-FullComment 0x560468125480 | | `-ParagraphComment 0x560468125450 | | `-TextComment 0x560468125420 Text=" Access to contents matched by term " | |-FieldDecl 0x560468007cd0 col:21 oper 'ecs_oper_kind_t':'enum ecs_oper_kind_t' | | `-FullComment 0x560468125550 | | `-ParagraphComment 0x560468125520 | | `-TextComment 0x5604681254f0 Text=" Operator of term " | |-FieldDecl 0x560468007d58 col:14 id_flags 'ecs_id_t':'unsigned long' | | `-FullComment 0x560468125620 | | `-ParagraphComment 0x5604681255f0 | | `-TextComment 0x5604681255c0 Text=" Id flags of term id " | |-FieldDecl 0x560468007df0 col:11 name 'char *' | | `-FullComment 0x5604681256f0 | | `-ParagraphComment 0x5604681256c0 | | `-TextComment 0x560468125690 Text=" Name of term " | |-FieldDecl 0x560468007e78 col:13 field_index 'int32_t':'int' | | `-FullComment 0x5604681261d0 | | `-ParagraphComment 0x5604681261a0 | | `-TextComment 0x560468126170 Text=" Index of field for term in iterator " | |-FieldDecl 0x560468007f88 col:22 idr 'ecs_id_record_t *' | | `-FullComment 0x5604681262a0 | | `-ParagraphComment 0x560468126270 | | `-TextComment 0x560468126240 Text=" Cached pointer to internal index " | `-FieldDecl 0x560468008018 col:10 move 'bool' | `-FullComment 0x560468126370 | `-ParagraphComment 0x560468126340 | `-TextComment 0x560468126310 Text=" Used by internals " |-VarDecl 0x560468008100 col:31 ECS_FILTER_INIT 'ecs_filter_t':'struct ecs_filter_t' extern | `-FullComment 0x560468126440 | `-ParagraphComment 0x560468126410 | `-TextComment 0x5604681263e0 Text=" Use this variable to initialize user-allocated filter object " |-RecordDecl 0x560468008198 prev 0x560467fffaf0 line:3060:8 struct ecs_filter_t definition | |-FullComment 0x560468126510 | | `-ParagraphComment 0x5604681264e0 | | `-TextComment 0x5604681264b0 Text=" Filters alllow for ad-hoc quick filtering of entity tables. " | |-FieldDecl 0x560468008250 col:18 hdr 'ecs_header_t':'struct ecs_header_t' | |-FieldDecl 0x5604680082b0 col:17 terms 'ecs_term_t *' | | `-FullComment 0x5604681265e0 | | `-ParagraphComment 0x5604681265b0 | | `-TextComment 0x560468126580 Text=" Array containing terms for filter " | |-FieldDecl 0x560468008338 col:13 term_count 'int32_t':'int' | | `-FullComment 0x5604681266b0 | | `-ParagraphComment 0x560468126680 | | `-TextComment 0x560468126650 Text=" Number of elements in terms array " | |-FieldDecl 0x5604680083c8 col:13 field_count 'int32_t':'int' | | `-FullComment 0x560468126780 | | `-ParagraphComment 0x560468126750 | | `-TextComment 0x560468126720 Text=" Number of fields in iterator for filter " | |-FieldDecl 0x560468008458 col:10 owned 'bool' | | `-FullComment 0x560468126850 | | `-ParagraphComment 0x560468126820 | | `-TextComment 0x5604681267f0 Text=" Is filter object owned by filter " | |-FieldDecl 0x5604680084e8 col:10 terms_owned 'bool' | | `-FullComment 0x560468126920 | | `-ParagraphComment 0x5604681268f0 | | `-TextComment 0x5604681268c0 Text=" Is terms array owned by filter " | |-FieldDecl 0x560468008578 col:19 flags 'ecs_flags32_t':'unsigned int' | | `-FullComment 0x5604681269f0 | | `-ParagraphComment 0x5604681269c0 | | `-TextComment 0x560468126990 Text=" Filter flags " | |-FieldDecl 0x560468008c80 col:11 variable_names 'char *[1]' | | `-FullComment 0x560468126ac0 | | `-ParagraphComment 0x560468126a90 | | `-TextComment 0x560468126a60 Text=" Array with variable names " | |-FieldDecl 0x560468008d08 col:18 entity 'ecs_entity_t':'unsigned long' | | `-FullComment 0x560468126b90 | | `-ParagraphComment 0x560468126b60 | | `-TextComment 0x560468126b30 Text=" Entity associated with filter (optional) " | |-FieldDecl 0x560468008d98 col:18 world 'ecs_world_t *' | |-FieldDecl 0x560468008e20 col:20 iterable 'ecs_iterable_t':'struct ecs_iterable_t' | | `-FullComment 0x560468126c60 | | `-ParagraphComment 0x560468126c30 | | `-TextComment 0x560468126c00 Text=" Iterable mixin " | `-FieldDecl 0x560468008ed0 col:21 dtor 'ecs_poly_dtor_t':'void (*)(ecs_poly_t *)' | `-FullComment 0x560468126d30 | `-ParagraphComment 0x560468126d00 | `-TextComment 0x560468126cd0 Text=" Dtor mixin " |-RecordDecl 0x560468008fb0 prev 0x560467fffe10 line:3082:8 struct ecs_observer_t definition | |-FieldDecl 0x560468009040 col:18 hdr 'ecs_header_t':'struct ecs_header_t' | |-FieldDecl 0x5604680090a0 col:18 filter 'ecs_filter_t':'struct ecs_filter_t' | | `-FullComment 0x560468126e00 | | `-ParagraphComment 0x560468126dd0 | | `-TextComment 0x560468126da0 Text=" Query for observer " | |-FieldDecl 0x560468009218 col:18 events 'ecs_entity_t[8]' | |-FieldDecl 0x560468009278 col:13 event_count 'int32_t':'int' | |-FieldDecl 0x560468009300 col:23 callback 'ecs_iter_action_t':'void (*)(ecs_iter_t *)' | | `-FullComment 0x560468126ed0 | | `-ParagraphComment 0x560468126ea0 | | `-TextComment 0x560468126e70 Text=" See ecs_observer_desc_t::callback " | |-FieldDecl 0x5604680093b0 col:22 run 'ecs_run_action_t':'void (*)(ecs_iter_t *)' | | `-FullComment 0x560468126fa0 | | `-ParagraphComment 0x560468126f70 | | `-TextComment 0x560468126f40 Text=" See ecs_observer_desc_t::run " | |-FieldDecl 0x560468009440 col:11 ctx 'void *' | | `-FullComment 0x560468127070 | | `-ParagraphComment 0x560468127040 | | `-TextComment 0x560468127010 Text=" Callback context " | |-FieldDecl 0x5604680094d0 col:11 binding_ctx 'void *' | | `-FullComment 0x560468127140 | | `-ParagraphComment 0x560468127110 | | `-TextComment 0x5604681270e0 Text=" Binding context (for language bindings) " | |-FieldDecl 0x560468009580 col:20 ctx_free 'ecs_ctx_free_t':'void (*)(void *)' | | `-FullComment 0x560468127210 | | `-ParagraphComment 0x5604681271e0 | | `-TextComment 0x5604681271b0 Text=" Callback to free ctx " | |-FieldDecl 0x560468009608 col:20 binding_ctx_free 'ecs_ctx_free_t':'void (*)(void *)' | | `-FullComment 0x5604681272e0 | | `-ParagraphComment 0x5604681272b0 | | `-TextComment 0x560468127280 Text=" Callback to free binding_ctx " | |-FieldDecl 0x560468009718 col:23 observable 'ecs_observable_t *' | | `-FullComment 0x5604681273b0 | | `-ParagraphComment 0x560468127380 | | `-TextComment 0x560468127350 Text=" Observable for observer " | |-FieldDecl 0x5604680097a8 col:14 last_event_id 'int32_t *' | | `-FullComment 0x560468127480 | | `-ParagraphComment 0x560468127450 | | `-TextComment 0x560468127420 Text=" Last handled event id " | |-FieldDecl 0x560468009838 col:14 register_id 'ecs_id_t':'unsigned long' | | `-FullComment 0x560468127550 | | `-ParagraphComment 0x560468127520 | | `-TextComment 0x5604681274f0 Text=" Id observer is registered with (single term observers only) " | |-FieldDecl 0x5604680098c8 col:13 term_index 'int32_t':'int' | | `-FullComment 0x560468127620 | | `-ParagraphComment 0x5604681275f0 | | `-TextComment 0x5604681275c0 Text=" Index of the term in parent observer (single term observers only) " | |-FieldDecl 0x560468009958 col:10 is_monitor 'bool' | | `-FullComment 0x5604681277e0 | | `-ParagraphComment 0x5604681277b0 | | |-TextComment 0x560468127690 Text=" If true, the observer only triggers when the" | | |-TextComment 0x5604681276b0 Text="*" | | |-TextComment 0x5604681276d0 Text="<" | | |-TextComment 0x5604681276f0 Text=" filter did not match with the entity before" | | |-TextComment 0x560468127710 Text="*" | | |-TextComment 0x560468127730 Text="<" | | `-TextComment 0x560468127750 Text=" the event happened. " | |-FieldDecl 0x5604680099e8 col:10 is_multi 'bool' | | `-FullComment 0x5604681278b0 | | `-ParagraphComment 0x560468127880 | | `-TextComment 0x560468127850 Text=" If true, the observer triggers on more than one term " | `-FieldDecl 0x560468009a78 col:21 dtor 'ecs_poly_dtor_t':'void (*)(ecs_poly_t *)' |-RecordDecl 0x560468009b28 prev 0x560468000430 line:3123:8 struct ecs_type_hooks_t definition | |-FullComment 0x560468127a70 | | |-ParagraphComment 0x560468127950 | | | `-TextComment 0x560468127920 Text=" Type that contains component lifecycle callbacks. " | | |-ParagraphComment 0x5604681279a0 | | | `-TextComment 0x560468127970 Text=" " | | |-VerbatimLineComment 0x5604681279c0 Text=" components" | | `-ParagraphComment 0x560468127a30 | | `-TextComment 0x560468127a00 Text=" " | |-FieldDecl 0x56046800a0f0 col:16 ctor 'ecs_xtor_t':'void (*)(void *, int32_t, const ecs_type_info_t *)' | | `-FullComment 0x560468127b40 | | `-ParagraphComment 0x560468127b10 | | `-TextComment 0x560468127ae0 Text=" ctor " | |-FieldDecl 0x56046800a178 col:16 dtor 'ecs_xtor_t':'void (*)(void *, int32_t, const ecs_type_info_t *)' | | `-FullComment 0x560468127c10 | | `-ParagraphComment 0x560468127be0 | | `-TextComment 0x560468127bb0 Text=" dtor " | |-FieldDecl 0x56046800a230 col:16 copy 'ecs_copy_t':'void (*)(void *, const void *, int32_t, const ecs_type_info_t *)' | | `-FullComment 0x560468127ce0 | | `-ParagraphComment 0x560468127cb0 | | `-TextComment 0x560468127c80 Text=" copy assignment " | |-FieldDecl 0x56046800a2e0 col:16 move 'ecs_move_t':'void (*)(void *, void *, int32_t, const ecs_type_info_t *)' | | `-FullComment 0x560468127db0 | | `-ParagraphComment 0x560468127d80 | | `-TextComment 0x560468127d50 Text=" move assignment " | |-FieldDecl 0x56046800a398 col:16 copy_ctor 'ecs_copy_t':'void (*)(void *, const void *, int32_t, const ecs_type_info_t *)' | | `-FullComment 0x560468127e80 | | `-ParagraphComment 0x560468127e50 | | `-TextComment 0x560468127e20 Text=" Ctor + copy " | |-FieldDecl 0x56046800a428 col:16 move_ctor 'ecs_move_t':'void (*)(void *, void *, int32_t, const ecs_type_info_t *)' | | `-FullComment 0x560468127f50 | | `-ParagraphComment 0x560468127f20 | | `-TextComment 0x560468127ef0 Text=" Ctor + move " | |-FieldDecl 0x56046800a4b8 col:16 ctor_move_dtor 'ecs_move_t':'void (*)(void *, void *, int32_t, const ecs_type_info_t *)' | | `-FullComment 0x560468128090 | | `-ParagraphComment 0x560468128060 | | |-TextComment 0x560468127fc0 Text=" Ctor + move + dtor (or move_ctor + dtor)." | | |-TextComment 0x560468127fe0 Text=" This combination is typically used when a component is moved from one" | | |-TextComment 0x560468128000 Text=" location to a new location, like when it is moved to a new table. If" | | `-TextComment 0x560468128020 Text=" not set explicitly it will be derived from other callbacks. " | |-FieldDecl 0x56046800a548 col:16 move_dtor 'ecs_move_t':'void (*)(void *, void *, int32_t, const ecs_type_info_t *)' | | `-FullComment 0x5604681281f0 | | `-ParagraphComment 0x5604681281c0 | | |-TextComment 0x560468128100 Text=" Move + dtor." | | |-TextComment 0x560468128120 Text=" This combination is typically used when a component is moved from one" | | |-TextComment 0x560468128140 Text=" location to an existing location, like what happens during a remove. If" | | `-TextComment 0x560468128180 Text=" not set explicitly it will be derived from other callbacks. " | |-FieldDecl 0x56046800a5d8 col:23 on_add 'ecs_iter_action_t':'void (*)(ecs_iter_t *)' | | `-FullComment 0x5604681282e0 | | `-ParagraphComment 0x5604681282b0 | | |-TextComment 0x560468128260 Text=" Callback that is invoked when an instance of a component is added. This" | | `-TextComment 0x560468128280 Text=" callback is invoked before triggers are invoked. " | |-FieldDecl 0x56046800a668 col:23 on_set 'ecs_iter_action_t':'void (*)(ecs_iter_t *)' | | `-FullComment 0x560468128400 | | `-ParagraphComment 0x5604681283d0 | | |-TextComment 0x560468128350 Text=" Callback that is invoked when an instance of the component is set. This" | | |-TextComment 0x560468128370 Text=" callback is invoked before triggers are invoked, and enable the component" | | `-TextComment 0x560468128390 Text=" to respond to changes on itself before others can. " | |-FieldDecl 0x56046800a6f8 col:23 on_remove 'ecs_iter_action_t':'void (*)(ecs_iter_t *)' | | `-FullComment 0x560468128520 | | `-ParagraphComment 0x5604681284f0 | | |-TextComment 0x560468128470 Text=" Callback that is invoked when an instance of the component is removed. " | | |-TextComment 0x560468128490 Text=" This callback is invoked after the triggers are invoked, and before the" | | `-TextComment 0x5604681284b0 Text=" destructor is invoked. " | |-FieldDecl 0x56046800a760 col:11 ctx 'void *' | | `-FullComment 0x5604681285f0 | | `-ParagraphComment 0x5604681285c0 | | `-TextComment 0x560468128590 Text=" User defined context " | |-FieldDecl 0x56046800a7f0 col:11 binding_ctx 'void *' | | `-FullComment 0x5604681286c0 | | `-ParagraphComment 0x560468128690 | | `-TextComment 0x560468128660 Text=" Language binding context " | |-FieldDecl 0x56046800a878 col:20 ctx_free 'ecs_ctx_free_t':'void (*)(void *)' | | `-FullComment 0x560468128790 | | `-ParagraphComment 0x560468128760 | | `-TextComment 0x560468128730 Text=" Callback to free ctx " | `-FieldDecl 0x56046800a908 col:20 binding_ctx_free 'ecs_ctx_free_t':'void (*)(void *)' | `-FullComment 0x560468128860 | `-ParagraphComment 0x560468128830 | `-TextComment 0x560468128800 Text=" Callback to free binding_ctx " |-RecordDecl 0x56046800a9b8 prev 0x5604680005c0 line:3172:8 struct ecs_type_info_t definition | |-FullComment 0x560468128a20 | | |-ParagraphComment 0x560468128900 | | | `-TextComment 0x5604681288d0 Text=" Type that contains component information (passed to ctors/dtors/...) " | | |-ParagraphComment 0x560468128950 | | | `-TextComment 0x560468128920 Text=" " | | |-VerbatimLineComment 0x560468128970 Text=" components" | | `-ParagraphComment 0x5604681289e0 | | `-TextComment 0x5604681289b0 Text=" " | |-FieldDecl 0x56046800aa48 col:16 size 'ecs_size_t':'int' | | `-FullComment 0x560468128af0 | | `-ParagraphComment 0x560468128ac0 | | `-TextComment 0x560468128a90 Text=" Size of type " | |-FieldDecl 0x56046800aad8 col:16 alignment 'ecs_size_t':'int' | | `-FullComment 0x560468128bc0 | | `-ParagraphComment 0x560468128b90 | | `-TextComment 0x560468128b60 Text=" Alignment of type " | |-FieldDecl 0x56046800ab90 col:22 hooks 'ecs_type_hooks_t':'struct ecs_type_hooks_t' | | `-FullComment 0x560468128c90 | | `-ParagraphComment 0x560468128c60 | | `-TextComment 0x560468128c30 Text=" Type hooks " | |-FieldDecl 0x56046800ac18 col:18 component 'ecs_entity_t':'unsigned long' | | `-FullComment 0x560468128d60 | | `-ParagraphComment 0x560468128d30 | | `-TextComment 0x560468128d00 Text=" Handle to component (do not set) " | `-FieldDecl 0x56046800acb0 col:17 name 'const char *' | `-FullComment 0x560468128e30 | `-ParagraphComment 0x560468128e00 | `-TextComment 0x560468128dd0 Text=" Type name. " |-RecordDecl 0x56046800adb8 col:16 struct ecs_stage_t |-TypedefDecl 0x56046800aeb8 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 | `-ParagraphComment 0x560468128ed0 | `-TextComment 0x560468128ea0 Text=" A stage enables modification while iterating and from multiple threads " |-RecordDecl 0x56046800af50 col:16 struct ecs_record_t |-TypedefDecl 0x56046800b048 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 | `-ParagraphComment 0x560468128fa0 | `-TextComment 0x560468128f70 Text=" A record stores data to map an entity id to a location in a table " |-RecordDecl 0x56046800c760 col:16 struct ecs_data_t |-TypedefDecl 0x56046800c858 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 | `-ParagraphComment 0x560468129070 | `-TextComment 0x560468129040 Text=" Table data " |-RecordDecl 0x56046800c8c8 col:16 struct ecs_switch_t |-TypedefDecl 0x56046800c9c8 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 col:16 struct ecs_query_table_node_t |-TypedefDecl 0x56046800cb38 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 col:8 struct ecs_allocator_t |-RecordDecl 0x56046800cc88 line:3226:16 struct ecs_event_record_t definition | |-FullComment 0x5604681291c0 | | |-ParagraphComment 0x560468129140 | | | `-TextComment 0x560468129110 Text=" Mixin for emitting events to triggers/observers " | | `-ParagraphComment 0x560468129190 | | `-TextComment 0x560468129160 Text=" All observers for a specific event " | |-RecordDecl 0x56046800cd30 parent 0x560467ec17a8 col:12 struct ecs_event_id_record_t | |-FieldDecl 0x56046800cea0 col:35 any 'struct ecs_event_id_record_t *' | |-FieldDecl 0x56046800cf70 col:35 wildcard 'struct ecs_event_id_record_t *' | |-FieldDecl 0x56046800cfe8 col:35 wildcard_pair 'struct ecs_event_id_record_t *' | |-FieldDecl 0x56046800d048 col:15 event_ids 'ecs_map_t':'struct ecs_map_t' | `-FieldDecl 0x56046800d0a8 col:18 event 'ecs_entity_t':'unsigned long' |-TypedefDecl 0x56046800d158 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 | |-ParagraphComment 0x560468129260 | | `-TextComment 0x560468129230 Text=" Mixin for emitting events to triggers/observers " | `-ParagraphComment 0x5604681292b0 | `-TextComment 0x560468129280 Text=" All observers for a specific event " |-RecordDecl 0x56046800d1c8 prev 0x560467ffffa0 line:3234:8 struct ecs_observable_t definition | |-FieldDecl 0x56046800d280 col:24 on_add 'ecs_event_record_t':'struct ecs_event_record_t' | |-FieldDecl 0x56046800d2e0 col:24 on_remove 'ecs_event_record_t':'struct ecs_event_record_t' | |-FieldDecl 0x56046800d340 col:24 on_set 'ecs_event_record_t':'struct ecs_event_record_t' | |-FieldDecl 0x56046800d3a0 col:24 un_set 'ecs_event_record_t':'struct ecs_event_record_t' | |-FieldDecl 0x56046800d400 col:24 on_wildcard 'ecs_event_record_t':'struct ecs_event_record_t' | `-FieldDecl 0x56046800d460 col:19 events 'ecs_sparse_t *' |-RecordDecl 0x56046800d5e8 prev 0x56046800af50 line:3244:8 struct ecs_record_t definition | |-FullComment 0x5604681293b0 | | `-ParagraphComment 0x560468129380 | | `-TextComment 0x560468129350 Text=" Record for entity index " | |-FieldDecl 0x56046800d678 col:22 idr 'ecs_id_record_t *' | |-FieldDecl 0x56046800e400 col:18 table 'ecs_table_t *' | `-FieldDecl 0x56046800e460 col:14 row 'uint32_t':'unsigned int' |-RecordDecl 0x56046800e4d8 line:3251:16 struct ecs_table_range_t definition | |-FullComment 0x560468129480 | | `-ParagraphComment 0x560468129450 | | `-TextComment 0x560468129420 Text=" Range in table " | |-FieldDecl 0x56046800e590 col:18 table 'ecs_table_t *' | |-FieldDecl 0x56046800e5f0 col:13 offset 'int32_t':'int' | `-FieldDecl 0x56046800e650 col:13 count 'int32_t':'int' |-TypedefDecl 0x56046800e6f8 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 | `-ParagraphComment 0x560468129520 | `-TextComment 0x5604681294f0 Text=" Range in table " |-RecordDecl 0x56046800e790 line:3258:16 struct ecs_var_t definition | |-FullComment 0x560468129620 | | `-ParagraphComment 0x5604681295f0 | | `-TextComment 0x5604681295c0 Text=" Value of query variable " | |-FieldDecl 0x56046800e860 col:23 range 'ecs_table_range_t':'struct ecs_table_range_t' | `-FieldDecl 0x56046800e8c0 col:18 entity 'ecs_entity_t':'unsigned long' |-TypedefDecl 0x56046800e9d8 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 | `-ParagraphComment 0x5604681296c0 | `-TextComment 0x560468129690 Text=" Value of query variable " |-RecordDecl 0x56046800ea70 prev 0x5604680002a0 line:3269:8 struct ecs_ref_t definition | |-FullComment 0x5604681297c0 | | `-ParagraphComment 0x560468129790 | | `-TextComment 0x560468129760 Text=" Cached reference. " | |-FieldDecl 0x56046800eb00 col:18 entity 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x56046800eb60 col:18 id 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x56046800ec60 col:32 tr 'struct ecs_table_record_t *' | `-FieldDecl 0x56046800ed38 col:19 record 'ecs_record_t *' |-RecordDecl 0x56046800ed88 col:8 struct ecs_stack_page_t |-RecordDecl 0x56046800ee30 line:3279:16 struct ecs_stack_cursor_t definition | |-FieldDecl 0x56046800ef80 col:30 cur 'struct ecs_stack_page_t *' | `-FieldDecl 0x56046800efe0 col:13 sp 'int16_t':'short' |-TypedefDecl 0x56046800f088 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:16 struct ecs_page_iter_t definition | |-FieldDecl 0x56046800f1b0 col:13 offset 'int32_t':'int' | |-FieldDecl 0x56046800f210 col:13 limit 'int32_t':'int' | `-FieldDecl 0x56046800f270 col:13 remaining 'int32_t':'int' |-TypedefDecl 0x56046800f318 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:16 struct ecs_worker_iter_t definition | |-FieldDecl 0x56046800f4c0 col:13 index 'int32_t':'int' | `-FieldDecl 0x56046800f520 col:13 count 'int32_t':'int' |-TypedefDecl 0x56046800f5c8 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:16 struct ecs_table_cache_iter_t definition | |-RecordDecl 0x56046800f6e0 parent 0x560467ec17a8 col:12 struct ecs_table_cache_hdr_t | |-FieldDecl 0x56046800f850 col:35 cur 'struct ecs_table_cache_hdr_t *' | |-FieldDecl 0x56046800f8c8 col:41 next 'struct ecs_table_cache_hdr_t *' | `-FieldDecl 0x56046800f9a0 col:35 next_list 'struct ecs_table_cache_hdr_t *' |-TypedefDecl 0x56046800fa48 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:16 struct ecs_term_iter_t definition | |-FullComment 0x560468129890 | | `-ParagraphComment 0x560468129860 | | `-TextComment 0x560468129830 Text=" Term-iterator specific data " | |-FieldDecl 0x56046800fb90 col:16 term 'ecs_term_t':'struct ecs_term_t' | |-FieldDecl 0x56046800fbf0 col:22 self_index 'ecs_id_record_t *' | |-FieldDecl 0x56046800fc50 col:22 set_index 'ecs_id_record_t *' | |-FieldDecl 0x56046800fcb0 col:22 cur 'ecs_id_record_t *' | |-FieldDecl 0x56046800fd30 col:28 it 'ecs_table_cache_iter_t':'struct ecs_table_cache_iter_t' | |-FieldDecl 0x56046800fd90 col:13 index 'int32_t':'int' | |-FieldDecl 0x56046800fdf0 col:13 observed_table_count 'int32_t':'int' | |-FieldDecl 0x56046800fe50 col:18 table 'ecs_table_t *' | |-FieldDecl 0x56046800feb0 col:13 cur_match 'int32_t':'int' | |-FieldDecl 0x56046800ff10 col:13 match_count 'int32_t':'int' | |-FieldDecl 0x56046800ff70 col:13 last_column 'int32_t':'int' | |-FieldDecl 0x56046800ffd0 col:10 empty_tables 'bool' | |-FieldDecl 0x560468010030 col:14 id 'ecs_id_t':'unsigned long' | |-FieldDecl 0x560468010090 col:13 column 'int32_t':'int' | |-FieldDecl 0x5604680100f0 col:18 subject 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x560468010150 col:16 size 'ecs_size_t':'int' | `-FieldDecl 0x5604680101b8 col:11 ptr 'void *' |-TypedefDecl 0x560468010378 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 | `-ParagraphComment 0x560468129930 | `-TextComment 0x560468129900 Text=" Term-iterator specific data " |-EnumDecl 0x560468010420 line:3329:14 ecs_iter_kind_t | |-EnumConstantDecl 0x5604680104e0 col:5 EcsIterEvalCondition 'int' | |-EnumConstantDecl 0x560468010530 col:5 EcsIterEvalTables 'int' | |-EnumConstantDecl 0x560468010580 col:5 EcsIterEvalChain 'int' | `-EnumConstantDecl 0x5604680105d0 col:5 EcsIterEvalNone 'int' |-TypedefDecl 0x560468010678 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:16 struct ecs_filter_iter_t definition | |-FullComment 0x560468129a30 | | `-ParagraphComment 0x560468129a00 | | `-TextComment 0x5604681299d0 Text=" Filter-iterator specific data " | |-FieldDecl 0x560468010818 col:25 filter 'const ecs_filter_t *' | |-FieldDecl 0x5604680108a0 col:21 kind 'ecs_iter_kind_t':'enum ecs_iter_kind_t' | |-FieldDecl 0x560468010920 col:21 term_iter 'ecs_term_iter_t':'struct ecs_term_iter_t' | |-FieldDecl 0x560468010980 col:13 matches_left 'int32_t':'int' | `-FieldDecl 0x5604680109e0 col:13 pivot_term 'int32_t':'int' |-TypedefDecl 0x560468010a88 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 | `-ParagraphComment 0x560468129ad0 | `-TextComment 0x560468129aa0 Text=" Filter-iterator specific data " |-RecordDecl 0x560468010b20 line:3346:16 struct ecs_query_iter_t definition | |-FullComment 0x560468129bd0 | | `-ParagraphComment 0x560468129ba0 | | `-TextComment 0x560468129b70 Text=" Query-iterator specific data " | |-FieldDecl 0x560468010c48 col:18 query 'ecs_query_t *' | |-FieldDecl 0x560468010d28 col:29 node 'ecs_query_table_node_t *' | |-FieldDecl 0x560468010d88 col:36 prev 'ecs_query_table_node_t *' | |-FieldDecl 0x560468010de8 col:43 last 'ecs_query_table_node_t *' | |-FieldDecl 0x560468010e48 col:13 sparse_smallest 'int32_t':'int' | |-FieldDecl 0x560468010ea8 col:13 sparse_first 'int32_t':'int' | |-FieldDecl 0x560468010f08 col:13 bitset_first 'int32_t':'int' | `-FieldDecl 0x560468010f68 col:13 skip_count 'int32_t':'int' |-TypedefDecl 0x560468011018 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 | `-ParagraphComment 0x560468129c70 | `-TextComment 0x560468129c40 Text=" Query-iterator specific data " |-RecordDecl 0x5604680110b0 line:3356:16 struct ecs_snapshot_iter_t definition | |-FullComment 0x560468129d70 | | `-ParagraphComment 0x560468129d40 | | `-TextComment 0x560468129d10 Text=" Snapshot-iterator specific data " | |-FieldDecl 0x560468011160 col:18 filter 'ecs_filter_t':'struct ecs_filter_t' | |-FieldDecl 0x5604680111c0 col:19 tables 'ecs_vector_t *' | `-FieldDecl 0x560468011220 col:13 index 'int32_t':'int' |-TypedefDecl 0x560468011430 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 | `-ParagraphComment 0x560468129e10 | `-TextComment 0x560468129de0 Text=" Snapshot-iterator specific data " |-RecordDecl 0x5604680114d0 line:3363:16 struct ecs_rule_iter_t definition | |-FullComment 0x560468129f10 | | `-ParagraphComment 0x560468129ee0 | | `-TextComment 0x560468129eb0 Text=" Rule-iterator specific data " | |-FieldDecl 0x5604680115f8 col:23 rule 'const ecs_rule_t *' | |-FieldDecl 0x560468011700 col:23 registers 'struct ecs_var_t *' | |-RecordDecl 0x560468011750 parent 0x560467ec17a8 col:12 struct ecs_rule_op_ctx_t | |-FieldDecl 0x5604680118c0 col:31 op_ctx 'struct ecs_rule_op_ctx_t *' | |-FieldDecl 0x560468011920 col:14 columns 'int32_t *' | |-FieldDecl 0x560468011980 col:18 entity 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x5604680119e0 col:10 redo 'bool' | |-FieldDecl 0x560468011a40 col:13 op 'int32_t':'int' | `-FieldDecl 0x560468011aa0 col:13 sp 'int32_t':'int' |-TypedefDecl 0x560468011b48 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 | `-ParagraphComment 0x560468129fb0 | `-TextComment 0x560468129f80 Text=" Rule-iterator specific data " |-RecordDecl 0x560468011bb8 line:3390:16 struct ecs_iter_cache_t definition | |-FieldDecl 0x560468011c90 col:24 stack_cursor 'ecs_stack_cursor_t':'struct ecs_stack_cursor_t' | |-FieldDecl 0x560468011d10 col:18 used 'ecs_flags8_t':'unsigned char' | `-FieldDecl 0x560468011d70 col:18 allocated 'ecs_flags8_t':'unsigned char' |-TypedefDecl 0x560468011e78 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:16 struct ecs_iter_private_t definition | |-RecordDecl 0x560468011f90 line:3399:5 union definition | | |-FieldDecl 0x560468012040 col:25 term 'ecs_term_iter_t':'struct ecs_term_iter_t' | | |-FieldDecl 0x5604680120c0 col:27 filter 'ecs_filter_iter_t':'struct ecs_filter_iter_t' | | |-FieldDecl 0x560468012140 col:26 query 'ecs_query_iter_t':'struct ecs_query_iter_t' | | |-FieldDecl 0x5604680121c0 col:25 rule 'ecs_rule_iter_t':'struct ecs_rule_iter_t' | | |-FieldDecl 0x560468012240 col:29 snapshot 'ecs_snapshot_iter_t':'struct ecs_snapshot_iter_t' | | |-FieldDecl 0x5604680122c0 col:25 page 'ecs_page_iter_t':'struct ecs_page_iter_t' | | `-FieldDecl 0x560468012340 col:27 worker 'ecs_worker_iter_t':'struct ecs_worker_iter_t' | |-FieldDecl 0x560468015da8 col:7 iter 'union (unnamed union at flecs.h:3399:5)':'union ecs_iter_private_t::(unnamed at flecs.h:3399:5)' | |-FieldDecl 0x560468015e10 col:11 entity_iter 'void *' | `-FieldDecl 0x560468015e90 col:22 cache 'ecs_iter_cache_t':'struct ecs_iter_cache_t' |-TypedefDecl 0x560468016288 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:8 struct ecs_iter_t definition | |-FullComment 0x56046812a0b0 | | `-ParagraphComment 0x56046812a080 | | `-TextComment 0x56046812a050 Text=" Iterator " | |-FieldDecl 0x5604680163b0 col:18 world 'ecs_world_t *' | |-FieldDecl 0x560468016410 col:18 real_world 'ecs_world_t *' | |-FieldDecl 0x560468016470 col:19 entities 'ecs_entity_t *' | |-FieldDecl 0x560468016500 col:12 ptrs 'void **' | |-FieldDecl 0x560468016588 col:17 sizes 'ecs_size_t *' | |-FieldDecl 0x5604680165e8 col:18 table 'ecs_table_t *' | |-FieldDecl 0x560468016648 col:18 other_table 'ecs_table_t *' | |-FieldDecl 0x5604680166a8 col:15 ids 'ecs_id_t *' | |-FieldDecl 0x560468016758 col:16 variables 'ecs_var_t *' | |-FieldDecl 0x5604680167b8 col:14 columns 'int32_t *' | |-FieldDecl 0x560468016818 col:19 sources 'ecs_entity_t *' | |-FieldDecl 0x560468016878 col:14 match_indices 'int32_t *' | |-FieldDecl 0x560468016958 col:16 references 'ecs_ref_t *' | |-FieldDecl 0x5604680169e0 col:19 constrained_vars 'ecs_flags64_t':'unsigned long' | |-FieldDecl 0x560468016a40 col:14 group_id 'uint64_t':'unsigned long' | |-FieldDecl 0x560468016aa0 col:13 field_count 'int32_t':'int' | |-FieldDecl 0x560468016b00 col:18 system 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x560468016b60 col:18 event 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x560468016bc0 col:14 event_id 'ecs_id_t':'unsigned long' | |-FieldDecl 0x560468016c20 col:17 terms 'ecs_term_t *' | |-FieldDecl 0x560468016c90 col:13 table_count 'int32_t':'int' | |-FieldDecl 0x560468016cf0 col:13 term_index 'int32_t':'int' | |-FieldDecl 0x560468016d50 col:13 variable_count 'int32_t':'int' | |-FieldDecl 0x560468016db8 col:12 variable_names 'char **' | |-FieldDecl 0x560468016e20 col:11 param 'void *' | |-FieldDecl 0x560468016e88 col:11 ctx 'void *' | |-FieldDecl 0x560468016ef0 col:11 binding_ctx 'void *' | |-FieldDecl 0x560468016f58 col:17 delta_time 'float' | |-FieldDecl 0x560468016fc0 col:17 delta_system_time 'float' | |-FieldDecl 0x560468017020 col:13 frame_offset 'int32_t':'int' | |-FieldDecl 0x560468017080 col:13 offset 'int32_t':'int' | |-FieldDecl 0x5604680170e0 col:13 count 'int32_t':'int' | |-FieldDecl 0x560468017140 col:13 instance_count 'int32_t':'int' | |-FieldDecl 0x5604680171a0 col:19 flags 'ecs_flags32_t':'unsigned int' | |-FieldDecl 0x560468017200 col:18 interrupted_by 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x560468017280 col:24 priv 'ecs_iter_private_t':'struct ecs_iter_private_t' | |-FieldDecl 0x560468017300 col:28 next 'ecs_iter_next_action_t':'bool (*)(ecs_iter_t *)' | |-FieldDecl 0x560468017360 col:23 callback 'ecs_iter_action_t':'void (*)(ecs_iter_t *)' | |-FieldDecl 0x5604680173e0 col:28 fini 'ecs_iter_fini_action_t':'void (*)(ecs_iter_t *)' | `-FieldDecl 0x560468017440 col:17 chain_it 'ecs_iter_t *' |-FunctionDecl 0x560468017688 line:3532:7 ecs_module_path_from_c 'char *(const char *)' | `-ParmVarDecl 0x5604680175f0 col:17 c_name 'const char *' |-FunctionDecl 0x560468017808 line:3535:6 ecs_identifier_is_0 'bool (const char *)' | `-ParmVarDecl 0x560468017748 col:17 id 'const char *' |-FunctionDecl 0x560468017a58 line:3540:6 ecs_default_ctor 'void (void *, int32_t, const ecs_type_info_t *)' | |-ParmVarDecl 0x5604680178c8 col:11 ptr 'void *' | |-ParmVarDecl 0x560468017940 col:13 count 'int32_t':'int' | `-ParmVarDecl 0x5604680179b8 col:28 ctx 'const ecs_type_info_t *' |-FunctionDecl 0x560468017d00 line:3547:7 ecs_vasprintf 'char *(const char *, struct __va_list_tag *)' | |-ParmVarDecl 0x560468017b28 col:17 fmt 'const char *' | `-ParmVarDecl 0x560468017ba0 col:13 args 'struct __va_list_tag *':'struct __va_list_tag *' |-FunctionDecl 0x560468017e98 line:3553:7 ecs_asprintf 'char *(const char *, ...)' | `-ParmVarDecl 0x560468017dc8 col:17 fmt 'const char *' |-FunctionDecl 0x560468018098 line:3558:9 flecs_table_observed_count 'int32_t (const ecs_table_t *)' | `-ParmVarDecl 0x560468017fa8 col:24 table 'const ecs_table_t *' |-RecordDecl 0x5604680181f8 line:3595:16 struct ecs_vec_t definition | |-FullComment 0x56046812a190 | | `-ParagraphComment 0x56046812a150 | | `-TextComment 0x56046812a120 Text=" A component column. " | |-FieldDecl 0x5604680182b8 col:11 array 'void *' | |-FieldDecl 0x560468018318 col:13 count 'int32_t':'int' | |-FieldDecl 0x560468018378 col:13 size 'int32_t':'int' | `-FieldDecl 0x5604680183d8 col:16 elem_size 'ecs_size_t':'int' |-TypedefDecl 0x560468018488 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 | `-ParagraphComment 0x56046812a230 | `-TextComment 0x56046812a200 Text=" A component column. " |-FunctionDecl 0x560468018838 line:3605:12 ecs_vec_init 'ecs_vec_t *(ecs_allocator_t *, ecs_vec_t *, ecs_size_t, int32_t)' | |-ParmVarDecl 0x560468018530 col:22 allocator 'ecs_allocator_t *' | |-ParmVarDecl 0x560468018608 col:16 vec 'ecs_vec_t *' | |-ParmVarDecl 0x560468018680 col:16 size 'ecs_size_t':'int' | `-ParmVarDecl 0x5604680186f8 col:13 elem_count 'int32_t':'int' |-FunctionDecl 0x560468018b18 line:3615:6 ecs_vec_fini 'void (ecs_allocator_t *, ecs_vec_t *, ecs_size_t)' | |-ParmVarDecl 0x560468018908 col:22 allocator 'ecs_allocator_t *' | |-ParmVarDecl 0x560468018980 col:16 vec 'ecs_vec_t *' | `-ParmVarDecl 0x5604680189f8 col:16 size 'ecs_size_t':'int' |-FunctionDecl 0x56046801a678 line:3624:12 ecs_vec_reset 'ecs_vec_t *(ecs_allocator_t *, ecs_vec_t *, ecs_size_t)' | |-ParmVarDecl 0x560468018be0 col:22 allocator 'ecs_allocator_t *' | |-ParmVarDecl 0x56046801a4e0 col:16 vec 'ecs_vec_t *' | `-ParmVarDecl 0x56046801a558 col:16 size 'ecs_size_t':'int' |-FunctionDecl 0x56046801a838 line:3633:6 ecs_vec_clear 'void (ecs_vec_t *)' | `-ParmVarDecl 0x56046801a740 col:16 vec 'ecs_vec_t *' |-FunctionDecl 0x56046801ab10 line:3637:7 ecs_vec_append 'void *(ecs_allocator_t *, ecs_vec_t *, ecs_size_t)' | |-ParmVarDecl 0x56046801a8f0 col:22 allocator 'ecs_allocator_t *' | |-ParmVarDecl 0x56046801a968 col:16 vec 'ecs_vec_t *' | `-ParmVarDecl 0x56046801a9e0 col:16 size 'ecs_size_t':'int' |-FunctionDecl 0x56046801ade8 line:3646:6 ecs_vec_remove 'void (ecs_vec_t *, ecs_size_t, int32_t)' | |-ParmVarDecl 0x56046801abd8 col:16 vec 'ecs_vec_t *' | |-ParmVarDecl 0x56046801ac50 col:16 size 'ecs_size_t':'int' | `-ParmVarDecl 0x56046801acc8 col:13 elem 'int32_t':'int' |-FunctionDecl 0x56046801af40 line:3655:6 ecs_vec_remove_last 'void (ecs_vec_t *)' | `-ParmVarDecl 0x56046801aeb0 col:16 vec 'ecs_vec_t *' |-FunctionDecl 0x56046801b208 line:3659:11 ecs_vec_copy 'ecs_vec_t (ecs_allocator_t *, ecs_vec_t *, ecs_size_t)' | |-ParmVarDecl 0x56046801aff8 col:22 allocator 'ecs_allocator_t *' | |-ParmVarDecl 0x56046801b070 col:16 vec 'ecs_vec_t *' | `-ParmVarDecl 0x56046801b0e8 col:16 size 'ecs_size_t':'int' |-FunctionDecl 0x56046801db90 line:3668:6 ecs_vec_reclaim 'void (ecs_allocator_t *, ecs_vec_t *, ecs_size_t)' | |-ParmVarDecl 0x56046801b2d0 col:22 allocator 'ecs_allocator_t *' | |-ParmVarDecl 0x56046801b348 col:16 vec 'ecs_vec_t *' | `-ParmVarDecl 0x56046801b3c0 col:16 size 'ecs_size_t':'int' |-FunctionDecl 0x56046801df08 line:3677:6 ecs_vec_set_size 'void (ecs_allocator_t *, ecs_vec_t *, ecs_size_t, int32_t)' | |-ParmVarDecl 0x56046801dc58 col:22 allocator 'ecs_allocator_t *' | |-ParmVarDecl 0x56046801dcd0 col:16 vec 'ecs_vec_t *' | |-ParmVarDecl 0x56046801dd48 col:16 size 'ecs_size_t':'int' | `-ParmVarDecl 0x56046801ddc0 col:13 elem_count 'int32_t':'int' |-FunctionDecl 0x56046801e1e8 line:3687:6 ecs_vec_set_count 'void (ecs_allocator_t *, ecs_vec_t *, ecs_size_t, int32_t)' | |-ParmVarDecl 0x56046801dfd8 col:22 allocator 'ecs_allocator_t *' | |-ParmVarDecl 0x56046801e050 col:16 vec 'ecs_vec_t *' | |-ParmVarDecl 0x56046801e0c8 col:16 size 'ecs_size_t':'int' | `-ParmVarDecl 0x56046801e140 col:13 elem_count 'int32_t':'int' |-FunctionDecl 0x56046801e570 line:3697:7 ecs_vec_grow 'void *(ecs_allocator_t *, ecs_vec_t *, ecs_size_t, int32_t)' | |-ParmVarDecl 0x56046801e2b8 col:22 allocator 'ecs_allocator_t *' | |-ParmVarDecl 0x56046801e330 col:16 vec 'ecs_vec_t *' | |-ParmVarDecl 0x56046801e3a8 col:16 size 'ecs_size_t':'int' | `-ParmVarDecl 0x56046801e420 col:13 elem_count 'int32_t':'int' |-FunctionDecl 0x56046801e788 line:3707:9 ecs_vec_count 'int32_t (const ecs_vec_t *)' | `-ParmVarDecl 0x56046801e698 col:22 vec 'const ecs_vec_t *' |-FunctionDecl 0x56046801e8d0 line:3711:9 ecs_vec_size 'int32_t (const ecs_vec_t *)' | `-ParmVarDecl 0x56046801e840 col:22 vec 'const ecs_vec_t *' |-FunctionDecl 0x56046801f260 line:3715:7 ecs_vec_get 'void *(const ecs_vec_t *, ecs_size_t, int32_t)' | |-ParmVarDecl 0x56046801e988 col:22 vec 'const ecs_vec_t *' | |-ParmVarDecl 0x56046801ea00 col:16 size 'ecs_size_t':'int' | `-ParmVarDecl 0x56046801ea78 col:13 index 'int32_t':'int' |-FunctionDecl 0x56046801f420 line:3724:7 ecs_vec_first 'void *(const ecs_vec_t *)' | `-ParmVarDecl 0x56046801f328 col:22 vec 'const ecs_vec_t *' |-FunctionDecl 0x56046801f670 line:3731:7 ecs_vec_last 'void *(const ecs_vec_t *, ecs_size_t)' | |-ParmVarDecl 0x56046801f4d8 col:22 vec 'const ecs_vec_t *' | `-ParmVarDecl 0x56046801f550 col:16 size 'ecs_size_t':'int' |-RecordDecl 0x56046801f748 line:3753:9 struct definition | |-FieldDecl 0x56046801f800 col:15 keys 'ecs_vec_t':'struct ecs_vec_t' | `-FieldDecl 0x56046801f860 col:15 values 'ecs_vec_t':'struct ecs_vec_t' |-TypedefDecl 0x56046801f978 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 struct definition | |-FieldDecl 0x56046801fac0 col:29 hash 'ecs_hash_value_action_t':'uint64_t (*)(const void *)' | |-FieldDecl 0x56046801fb40 col:26 compare 'ecs_compare_action_t':'int (*)(const void *, const void *)' | |-FieldDecl 0x56046801fba0 col:16 key_size 'ecs_size_t':'int' | |-FieldDecl 0x56046801fc00 col:16 value_size 'ecs_size_t':'int' | |-FieldDecl 0x56046801fc60 col:28 hashmap_allocator 'ecs_block_allocator_t *' | `-FieldDecl 0x56046801fcc0 col:15 impl 'ecs_map_t':'struct ecs_map_t' |-TypedefDecl 0x56046801fd68 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 struct definition | |-FieldDecl 0x56046801fe90 col:20 it 'ecs_map_iter_t':'struct ecs_map_iter_t' | |-FieldDecl 0x56046801ff68 col:22 bucket 'ecs_hm_bucket_t *' | `-FieldDecl 0x56046801ffc8 col:13 index 'int32_t':'int' |-TypedefDecl 0x5604680200d8 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 struct definition | |-FieldDecl 0x560468020710 col:11 key 'void *' | |-FieldDecl 0x560468020778 col:11 value 'void *' | `-FieldDecl 0x5604680207d8 col:14 hash 'uint64_t':'unsigned long' |-TypedefDecl 0x560468020888 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: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 col:20 hm 'ecs_hashmap_t *' | |-ParmVarDecl 0x560468020a00 col:16 key_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560468020a78 col:16 value_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560468020af0 col:29 hash 'ecs_hash_value_action_t':'uint64_t (*)(const void *)' | |-ParmVarDecl 0x560468020b68 col:26 compare 'ecs_compare_action_t':'int (*)(const void *, const void *)' | `-ParmVarDecl 0x560468020be0 col:22 allocator 'ecs_allocator_t *' |-FunctionDecl 0x560468020f28 line:3792:6 flecs_hashmap_fini 'void (ecs_hashmap_t *)' | `-ParmVarDecl 0x560468020e38 col:20 map 'ecs_hashmap_t *' |-FunctionDecl 0x5604680212f0 line:3796:7 _flecs_hashmap_get 'void *(const ecs_hashmap_t *, ecs_size_t, const void *, ecs_size_t)' | |-ParmVarDecl 0x560468021038 col:26 map 'const ecs_hashmap_t *' | |-ParmVarDecl 0x5604680210b0 col:16 key_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560468021130 col:17 key 'const void *' | `-ParmVarDecl 0x5604680211a8 col:16 value_size 'ecs_size_t':'int' |-FunctionDecl 0x560468021dc0 line:3806:24 _flecs_hashmap_ensure 'flecs_hashmap_result_t (ecs_hashmap_t *, ecs_size_t, const void *, ecs_size_t)' | |-ParmVarDecl 0x5604680213e0 col:20 map 'ecs_hashmap_t *' | |-ParmVarDecl 0x560468021458 col:16 key_size 'ecs_size_t':'int' | |-ParmVarDecl 0x5604680214d8 col:17 key 'const void *' | `-ParmVarDecl 0x560468021550 col:16 value_size 'ecs_size_t':'int' |-FunctionDecl 0x5604680221d8 line:3816:6 _flecs_hashmap_set 'void (ecs_hashmap_t *, ecs_size_t, void *, ecs_size_t, const void *)' | |-ParmVarDecl 0x560468021e90 col:20 map 'ecs_hashmap_t *' | |-ParmVarDecl 0x560468021f08 col:16 key_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560468021f88 col:11 key 'void *' | |-ParmVarDecl 0x560468022000 col:16 value_size 'ecs_size_t':'int' | `-ParmVarDecl 0x560468022080 col:17 value 'const void *' |-FunctionDecl 0x560468022568 line:3827:6 _flecs_hashmap_remove 'void (ecs_hashmap_t *, ecs_size_t, const void *, ecs_size_t)' | |-ParmVarDecl 0x5604680222b0 col:20 map 'ecs_hashmap_t *' | |-ParmVarDecl 0x560468022328 col:16 key_size 'ecs_size_t':'int' | |-ParmVarDecl 0x5604680223a8 col:17 key 'const void *' | `-ParmVarDecl 0x560468022420 col:16 value_size 'ecs_size_t':'int' |-FunctionDecl 0x560468022978 line:3837:6 _flecs_hashmap_remove_w_hash 'void (ecs_hashmap_t *, ecs_size_t, const void *, ecs_size_t, uint64_t)' | |-ParmVarDecl 0x560468022638 col:20 map 'ecs_hashmap_t *' | |-ParmVarDecl 0x5604680226b0 col:16 key_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560468022730 col:17 key 'const void *' | |-ParmVarDecl 0x5604680227a8 col:16 value_size 'ecs_size_t':'int' | `-ParmVarDecl 0x560468022820 col:14 hash 'uint64_t':'unsigned long' |-FunctionDecl 0x560468022bd8 line:3848:18 flecs_hashmap_get_bucket 'ecs_hm_bucket_t *(const ecs_hashmap_t *, uint64_t)' | |-ParmVarDecl 0x560468022a50 col:26 map 'const ecs_hashmap_t *' | `-ParmVarDecl 0x560468022ac8 col:14 hash 'uint64_t':'unsigned long' |-FunctionDecl 0x560468024978 line:3853:6 flecs_hm_bucket_remove 'void (ecs_hashmap_t *, ecs_hm_bucket_t *, uint64_t, int32_t)' | |-ParmVarDecl 0x560468022c98 col:20 map 'ecs_hashmap_t *' | |-ParmVarDecl 0x560468022d10 col:22 bucket 'ecs_hm_bucket_t *' | |-ParmVarDecl 0x5604680247c0 col:14 hash 'uint64_t':'unsigned long' | `-ParmVarDecl 0x560468024838 col:13 index 'int32_t':'int' |-FunctionDecl 0x560468024bd8 line:3860:6 flecs_hashmap_copy 'void (const ecs_hashmap_t *, ecs_hashmap_t *)' | |-ParmVarDecl 0x560468024a48 col:26 src 'const ecs_hashmap_t *' | `-ParmVarDecl 0x560468024ac0 col:20 dst 'ecs_hashmap_t *' |-FunctionDecl 0x560468024db8 line:3865:22 flecs_hashmap_iter 'flecs_hashmap_iter_t (ecs_hashmap_t *)' | `-ParmVarDecl 0x560468024cc0 col:20 map 'ecs_hashmap_t *' |-FunctionDecl 0x560468025180 line:3869:7 _flecs_hashmap_next 'void *(flecs_hashmap_iter_t *, ecs_size_t, void *, ecs_size_t)' | |-ParmVarDecl 0x560468024ec8 col:27 it 'flecs_hashmap_iter_t *' | |-ParmVarDecl 0x560468024f40 col:16 key_size 'ecs_size_t':'int' | |-ParmVarDecl 0x560468024fc0 col:11 key_out 'void *' | `-ParmVarDecl 0x560468025038 col:16 value_size 'ecs_size_t':'int' |-RecordDecl 0x560468025268 line:3892:16 struct ecs_entity_desc_t definition | |-FullComment 0x56046812a420 | | |-ParagraphComment 0x56046812a300 | | | `-TextComment 0x56046812a2d0 Text=" Used with ecs_entity_init " | | |-ParagraphComment 0x56046812a350 | | | `-TextComment 0x56046812a320 Text=" " | | |-VerbatimLineComment 0x56046812a370 Text=" entities" | | `-ParagraphComment 0x56046812a3e0 | | `-TextComment 0x56046812a3b0 Text=" " | |-FieldDecl 0x560468025320 col:13 _canary 'int32_t':'int' | |-FieldDecl 0x560468025380 col:18 id 'ecs_entity_t':'unsigned long' | | `-FullComment 0x56046812a4f0 | | `-ParagraphComment 0x56046812a4c0 | | `-TextComment 0x56046812a490 Text=" Set to modify existing entity (optional) " | |-FieldDecl 0x560468025410 col:17 name 'const char *' | | `-FullComment 0x56046812a630 | | `-ParagraphComment 0x56046812a600 | | |-TextComment 0x56046812a560 Text=" Name of the entity. If no entity is provided, an " | | |-TextComment 0x56046812a580 Text=" entity with this name will be looked up first. When" | | |-TextComment 0x56046812a5a0 Text=" an entity is provided, the name will be verified" | | `-TextComment 0x56046812a5c0 Text=" with the existing entity. " | |-FieldDecl 0x5604680254a0 col:17 sep 'const char *' | | `-FullComment 0x56046812a750 | | `-ParagraphComment 0x56046812a720 | | |-TextComment 0x56046812a6a0 Text=" Optional custom separator for hierarchical names." | | |-TextComment 0x56046812a6c0 Text=" Leave to NULL for default ('.') separator. Set to" | | `-TextComment 0x56046812a6e0 Text=" an empty string to prevent tokenization of name. " | |-FieldDecl 0x560468025530 col:17 root_sep 'const char *' | | `-FullComment 0x56046812a820 | | `-ParagraphComment 0x56046812a7f0 | | `-TextComment 0x56046812a7c0 Text=" Optional, used for identifiers relative to root " | |-FieldDecl 0x5604680255c0 col:17 symbol 'const char *' | | `-FullComment 0x56046812aa30 | | `-ParagraphComment 0x56046812aa00 | | |-TextComment 0x56046812a890 Text=" Optional entity symbol. A symbol is an unscoped" | | |-TextComment 0x56046812a8b0 Text=" identifier that can be used to lookup an entity. The" | | |-TextComment 0x56046812a8d0 Text=" primary use case for this is to associate the entity" | | |-TextComment 0x56046812a8f0 Text=" with a language identifier, such as a type or " | | |-TextComment 0x56046812a910 Text=" function name, where these identifiers differ from" | | |-TextComment 0x56046812a930 Text=" the name they are registered with in flecs. For " | | |-TextComment 0x56046812a950 Text=" example, C type "EcsPosition" might be registered" | | |-TextComment 0x56046812a970 Text=" as "flecs.components.transform.Position", with the" | | `-TextComment 0x56046812a990 Text=" symbol set to "EcsPosition". " | |-FieldDecl 0x560468025648 col:10 use_low_id 'bool' | | `-FullComment 0x56046812ab50 | | `-ParagraphComment 0x56046812ab20 | | |-TextComment 0x56046812aaa0 Text=" When set to true, a low id (typically reserved for" | | |-TextComment 0x56046812aac0 Text=" components) will be used to create the entity, if" | | `-TextComment 0x56046812aae0 Text=" no id is specified. " | |-FieldDecl 0x560468025f18 col:14 add 'ecs_id_t[32]' | | `-FullComment 0x56046812ac20 | | `-ParagraphComment 0x56046812abf0 | | `-TextComment 0x56046812abc0 Text=" Array of ids to add to the new or existing entity. " | `-FieldDecl 0x560468025fb0 col:17 add_expr 'const char *' | `-FullComment 0x56046812acf0 | `-ParagraphComment 0x56046812acc0 | `-TextComment 0x56046812ac90 Text=" String expression with components to add " |-TypedefDecl 0x560468026058 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 | |-ParagraphComment 0x56046812ad90 | | `-TextComment 0x56046812ad60 Text=" Used with ecs_entity_init " | |-ParagraphComment 0x56046812ade0 | | `-TextComment 0x56046812adb0 Text=" " | |-VerbatimLineComment 0x56046812ae00 Text=" entities" | `-ParagraphComment 0x56046812ae70 | `-TextComment 0x56046812ae40 Text=" " |-RecordDecl 0x5604680260f0 line:3933:16 struct ecs_bulk_desc_t definition | |-FullComment 0x56046812b070 | | |-ParagraphComment 0x56046812af50 | | | `-TextComment 0x56046812af20 Text=" Used with ecs_bulk_init " | | |-ParagraphComment 0x56046812afa0 | | | `-TextComment 0x56046812af70 Text=" " | | |-VerbatimLineComment 0x56046812afc0 Text=" entities" | | `-ParagraphComment 0x56046812b030 | | `-TextComment 0x56046812b000 Text=" " | |-FieldDecl 0x5604680261a0 col:13 _canary 'int32_t':'int' | |-FieldDecl 0x560468026200 col:19 entities 'ecs_entity_t *' | | `-FullComment 0x56046812b1b0 | | `-ParagraphComment 0x56046812b180 | | |-TextComment 0x56046812b0e0 Text=" Entities to bulk insert. Entity ids provided by " | | |-TextComment 0x56046812b100 Text=" the application application must be empty (cannot" | | |-TextComment 0x56046812b120 Text=" have components). If no entity ids are provided, the" | | `-TextComment 0x56046812b140 Text=" operation will create 'count' new entities. " | |-FieldDecl 0x560468026288 col:13 count 'int32_t':'int' | | `-FullComment 0x56046812b280 | | `-ParagraphComment 0x56046812b250 | | `-TextComment 0x56046812b220 Text=" Number of entities to create/populate " | |-FieldDecl 0x560468026388 col:14 ids 'ecs_id_t[32]' | | `-FullComment 0x56046812b350 | | `-ParagraphComment 0x56046812b320 | | `-TextComment 0x56046812b2f0 Text=" Ids to create the entities with " | |-FieldDecl 0x560468026420 col:12 data 'void **' | | `-FullComment 0x56046812b4e0 | | `-ParagraphComment 0x56046812b4b0 | | |-TextComment 0x56046812b3c0 Text=" Array with component data to insert. Each element in " | | |-TextComment 0x56046812b3e0 Text=" the array must correspond with an element in the ids" | | |-TextComment 0x56046812b400 Text=" array. If an element in the ids array is a tag, the" | | |-TextComment 0x56046812b420 Text=" data array must contain a NULL. An element may be" | | |-TextComment 0x56046812b440 Text=" set to NULL for a component, in which case the" | | `-TextComment 0x56046812b460 Text=" component will not be set by the operation. " | `-FieldDecl 0x5604680264a8 col:18 table 'ecs_table_t *' | `-FullComment 0x56046812b620 | `-ParagraphComment 0x56046812b5f0 | |-TextComment 0x56046812b550 Text=" Table to insert the entities into. Should not be set" | |-TextComment 0x56046812b570 Text=" at the same time as ids. When 'table' is set at the" | |-TextComment 0x56046812b590 Text=" same time as 'data', the elements in the data array" | `-TextComment 0x56046812b5b0 Text=" must correspond with the ids in the table's type. " |-TypedefDecl 0x560468026588 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 | |-ParagraphComment 0x56046812b6c0 | | `-TextComment 0x56046812b690 Text=" Used with ecs_bulk_init " | |-ParagraphComment 0x56046812b710 | | `-TextComment 0x56046812b6e0 Text=" " | |-VerbatimLineComment 0x56046812b730 Text=" entities" | `-ParagraphComment 0x56046812b7a0 | `-TextComment 0x56046812b770 Text=" " |-RecordDecl 0x560468026620 line:3963:16 struct ecs_component_desc_t definition | |-FullComment 0x56046812b9a0 | | |-ParagraphComment 0x56046812b880 | | | `-TextComment 0x56046812b850 Text=" Used with ecs_component_init. " | | |-ParagraphComment 0x56046812b8d0 | | | `-TextComment 0x56046812b8a0 Text=" " | | |-VerbatimLineComment 0x56046812b8f0 Text=" components" | | `-ParagraphComment 0x56046812b960 | | `-TextComment 0x56046812b930 Text=" " | |-FieldDecl 0x5604680266d0 col:13 _canary 'int32_t':'int' | |-FieldDecl 0x560468026758 col:18 entity 'ecs_entity_t':'unsigned long' | | `-FullComment 0x56046812ba70 | | `-ParagraphComment 0x56046812ba40 | | `-TextComment 0x56046812ba10 Text=" Existing entity to associate with observer (optional) " | `-FieldDecl 0x5604680267b8 col:21 type 'ecs_type_info_t':'struct ecs_type_info_t' | `-FullComment 0x56046812bb40 | `-ParagraphComment 0x56046812bb10 | `-TextComment 0x56046812bae0 Text=" Parameters for type (size, hooks, ...) " |-TypedefDecl 0x560468026898 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 | |-ParagraphComment 0x56046812bbe0 | | `-TextComment 0x56046812bbb0 Text=" Used with ecs_component_init. " | |-ParagraphComment 0x56046812bc30 | | `-TextComment 0x56046812bc00 Text=" " | |-VerbatimLineComment 0x56046812bc50 Text=" components" | `-ParagraphComment 0x56046812bcc0 | `-TextComment 0x56046812bc90 Text=" " |-RecordDecl 0x560468026930 line:3976:16 struct ecs_filter_desc_t definition | |-FullComment 0x56046812bec0 | | |-ParagraphComment 0x56046812bda0 | | | `-TextComment 0x56046812bd70 Text=" Used with ecs_filter_init. " | | |-ParagraphComment 0x56046812bdf0 | | | `-TextComment 0x56046812bdc0 Text=" " | | |-VerbatimLineComment 0x56046812be10 Text=" filters" | | `-ParagraphComment 0x56046812be80 | | `-TextComment 0x56046812be50 Text=" " | |-FieldDecl 0x5604680269e0 col:13 _canary 'int32_t':'int' | |-FieldDecl 0x560468026b58 col:16 terms 'ecs_term_t[16]' | | `-FullComment 0x56046812bfb0 | | `-ParagraphComment 0x56046812bf80 | | |-TextComment 0x56046812bf30 Text=" Terms of the filter. If a filter has more terms than " | | `-TextComment 0x56046812bf50 Text=" ECS_TERM_DESC_CACHE_SIZE use terms_buffer " | |-FieldDecl 0x560468026be8 col:17 terms_buffer 'ecs_term_t *' | | `-FullComment 0x56046812c080 | | `-ParagraphComment 0x56046812c050 | | `-TextComment 0x56046812c020 Text=" For filters with lots of terms an outside array can be provided. " | |-FieldDecl 0x560468026c78 col:13 terms_buffer_count 'int32_t':'int' | | `-FullComment 0x56046812c150 | | `-ParagraphComment 0x56046812c120 | | `-TextComment 0x56046812c0f0 Text=" Number of terms in array provided in terms_buffer. " | |-FieldDecl 0x560468026d68 col:19 storage 'ecs_filter_t *' | | `-FullComment 0x56046812c240 | | `-ParagraphComment 0x56046812c210 | | `-TextComment 0x56046812c1e0 Text=" External storage to prevent allocation of the filter object " | |-FieldDecl 0x560468026df8 col:10 instanced 'bool' | | `-FullComment 0x56046812c3b0 | | `-ParagraphComment 0x56046812c380 | | |-TextComment 0x56046812c2b0 Text=" When true, terms returned by an iterator may either contain 1 or N " | | |-TextComment 0x56046812c2d0 Text=" elements, where terms with N elements are owned, and terms with 1 element " | | |-TextComment 0x56046812c2f0 Text=" are shared, for example from a parent or base entity. When false, the " | | |-TextComment 0x56046812c310 Text=" iterator will at most return 1 element when the result contains both " | | `-TextComment 0x56046812c330 Text=" owned and shared terms. " | |-FieldDecl 0x560468028320 col:19 flags 'ecs_flags32_t':'unsigned int' | | `-FullComment 0x56046812c480 | | `-ParagraphComment 0x56046812c450 | | `-TextComment 0x56046812c420 Text=" Flags for advanced usage " | |-FieldDecl 0x5604680283b0 col:17 expr 'const char *' | | `-FullComment 0x56046812c550 | | `-ParagraphComment 0x56046812c520 | | `-TextComment 0x56046812c4f0 Text=" Filter expression. Should not be set at the same time as terms array " | `-FieldDecl 0x560468028438 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x56046812c620 | `-ParagraphComment 0x56046812c5f0 | `-TextComment 0x56046812c5c0 Text=" Entity associated with query (optional) " |-TypedefDecl 0x5604680284e8 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 | |-ParagraphComment 0x56046812c6c0 | | `-TextComment 0x56046812c690 Text=" Used with ecs_filter_init. " | |-ParagraphComment 0x56046812c710 | | `-TextComment 0x56046812c6e0 Text=" " | |-VerbatimLineComment 0x56046812c730 Text=" filters" | `-ParagraphComment 0x56046812c7a0 | `-TextComment 0x56046812c770 Text=" " |-RecordDecl 0x560468028580 line:4013:16 struct ecs_query_desc_t definition | |-FullComment 0x56046812c9a0 | | |-ParagraphComment 0x56046812c880 | | | `-TextComment 0x56046812c850 Text=" Used with ecs_query_init. " | | |-ParagraphComment 0x56046812c8d0 | | | `-TextComment 0x56046812c8a0 Text=" " | | |-VerbatimLineComment 0x56046812c8f0 Text=" queries" | | `-ParagraphComment 0x56046812c960 | | `-TextComment 0x56046812c930 Text=" " | |-FieldDecl 0x560468028630 col:13 _canary 'int32_t':'int' | |-FieldDecl 0x5604680286e0 col:23 filter 'ecs_filter_desc_t':'struct ecs_filter_desc_t' | | `-FullComment 0x56046812ca70 | | `-ParagraphComment 0x56046812ca40 | | `-TextComment 0x56046812ca10 Text=" Filter for the query " | |-FieldDecl 0x560468028768 col:18 order_by_component 'ecs_entity_t':'unsigned long' | | `-FullComment 0x56046812cb40 | | `-ParagraphComment 0x56046812cb10 | | `-TextComment 0x56046812cae0 Text=" Component to be used by order_by " | |-FieldDecl 0x5604680287f8 col:27 order_by 'ecs_order_by_action_t':'int (*)(ecs_entity_t, const void *, ecs_entity_t, const void *)' | | `-FullComment 0x56046812cc60 | | `-ParagraphComment 0x56046812cc30 | | |-TextComment 0x56046812cbb0 Text=" Callback used for ordering query results. If order_by_id is 0, the " | | |-TextComment 0x56046812cbd0 Text=" pointer provided to the callback will be NULL. If the callback is not" | | `-TextComment 0x56046812cbf0 Text=" set, results will not be ordered. " | |-FieldDecl 0x5604680288b0 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 | | `-ParagraphComment 0x56046812cd20 | | |-TextComment 0x56046812ccd0 Text=" Callback used for ordering query results. Same as order_by," | | `-TextComment 0x56046812ccf0 Text=" but more efficient. " | |-FieldDecl 0x560468028938 col:14 group_by_id 'ecs_id_t':'unsigned long' | | `-FullComment 0x56046812ce70 | | `-ParagraphComment 0x56046812ce40 | | |-TextComment 0x56046812cdc0 Text=" Id to be used by group_by. This id is passed to the group_by function and" | | |-TextComment 0x56046812cde0 Text=" can be used identify the part of an entity type that should be used for" | | `-TextComment 0x56046812ce00 Text=" grouping. " | |-FieldDecl 0x5604680289f0 col:27 group_by 'ecs_group_by_action_t':'uint64_t (*)(ecs_world_t *, ecs_table_t *, ecs_id_t, void *)' | | `-FullComment 0x56046812cfe0 | | `-ParagraphComment 0x56046812cfb0 | | |-TextComment 0x56046812cee0 Text=" Callback used for grouping results. If the callback is not set, results" | | |-TextComment 0x56046812cf00 Text=" will not be grouped. When set, this callback will be used to calculate a" | | |-TextComment 0x56046812cf20 Text=" "rank" for each entity (table) based on its components. This rank is then" | | |-TextComment 0x56046812cf40 Text=" used to sort entities (tables), so that entities (tables) of the same" | | `-TextComment 0x56046812cf60 Text=" rank are "grouped" together when iterated. " | |-FieldDecl 0x560468028aa0 col:31 on_group_create 'ecs_group_create_action_t':'void *(*)(ecs_world_t *, uint64_t, void *)' | | `-FullComment 0x56046812d0d0 | | `-ParagraphComment 0x56046812d0a0 | | |-TextComment 0x56046812d050 Text=" Callback that is invoked when a new group is created. The return value of" | | `-TextComment 0x56046812d070 Text=" the callback is stored as context for a group. " | |-FieldDecl 0x560468028b50 col:31 on_group_delete 'ecs_group_delete_action_t':'void (*)(ecs_world_t *, uint64_t, void *, void *)' | | `-FullComment 0x56046812d1c0 | | `-ParagraphComment 0x56046812d190 | | |-TextComment 0x56046812d140 Text=" Callback that is invoked when an existing group is deleted. The return " | | `-TextComment 0x56046812d160 Text=" value of the on_group_create callback is passed as context parameter. " | |-FieldDecl 0x560468028be0 col:11 group_by_ctx 'void *' | | `-FullComment 0x56046812d290 | | `-ParagraphComment 0x56046812d260 | | `-TextComment 0x56046812d230 Text=" Context to pass to group_by " | |-FieldDecl 0x560468028c68 col:20 group_by_ctx_free 'ecs_ctx_free_t':'void (*)(void *)' | | `-FullComment 0x56046812d360 | | `-ParagraphComment 0x56046812d330 | | `-TextComment 0x56046812d300 Text=" Function to free group_by_ctx " | `-FieldDecl 0x560468028cf8 col:18 parent 'ecs_query_t *' | `-FullComment 0x56046812d4f0 | `-ParagraphComment 0x56046812d4c0 | |-TextComment 0x56046812d3d0 Text=" If set, the query will be created as a subquery. A subquery matches at" | |-TextComment 0x56046812d3f0 Text=" most a subset of its parent query. Subqueries do not directly receive" | |-TextComment 0x56046812d410 Text=" (table) notifications from the world. Instead parent queries forward" | |-TextComment 0x56046812d430 Text=" results to subqueries. This can improve matching performance, as fewer" | |-TextComment 0x56046812d450 Text=" queries need to be matched with new tables." | `-TextComment 0x56046812d470 Text=" Subqueries can be nested. " |-TypedefDecl 0x560468028da8 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 | |-ParagraphComment 0x56046812d590 | | `-TextComment 0x56046812d560 Text=" Used with ecs_query_init. " | |-ParagraphComment 0x56046812d5e0 | | `-TextComment 0x56046812d5b0 Text=" " | |-VerbatimLineComment 0x56046812d600 Text=" queries" | `-ParagraphComment 0x56046812d670 | `-TextComment 0x56046812d640 Text=" " |-RecordDecl 0x560468028e40 line:4070:16 struct ecs_observer_desc_t definition | |-FullComment 0x56046812d870 | | |-ParagraphComment 0x56046812d750 | | | `-TextComment 0x56046812d720 Text=" Used with ecs_observer_init. " | | |-ParagraphComment 0x56046812d7a0 | | | `-TextComment 0x56046812d770 Text=" " | | |-VerbatimLineComment 0x56046812d7c0 Text=" observers" | | `-ParagraphComment 0x56046812d830 | | `-TextComment 0x56046812d800 Text=" " | |-FieldDecl 0x560468028ef0 col:13 _canary 'int32_t':'int' | |-FieldDecl 0x560468028f78 col:18 entity 'ecs_entity_t':'unsigned long' | | `-FullComment 0x56046812d940 | | `-ParagraphComment 0x56046812d910 | | `-TextComment 0x56046812d8e0 Text=" Existing entity to associate with observer (optional) " | |-FieldDecl 0x560468029008 col:23 filter 'ecs_filter_desc_t':'struct ecs_filter_desc_t' | | `-FullComment 0x56046812da10 | | `-ParagraphComment 0x56046812d9e0 | | `-TextComment 0x56046812d9b0 Text=" Filter for observer " | |-FieldDecl 0x560468029108 col:18 events 'ecs_entity_t[8]' | | `-FullComment 0x56046812dae0 | | `-ParagraphComment 0x56046812dab0 | | `-TextComment 0x56046812da80 Text=" Events to observe (OnAdd, OnRemove, OnSet, UnSet) " | |-FieldDecl 0x560468029198 col:10 yield_existing 'bool' | | `-FullComment 0x56046812dc00 | | `-ParagraphComment 0x56046812dbd0 | | |-TextComment 0x56046812db50 Text=" When observer is created, generate events from existing data. For example," | | |-TextComment 0x56046812db70 Text=" EcsOnAdd Position would match all existing instances of Position." | | `-TextComment 0x56046812db90 Text=" This is only supported for events that are iterable (see EcsIterable) " | |-FieldDecl 0x560468029228 col:23 callback 'ecs_iter_action_t':'void (*)(ecs_iter_t *)' | | `-FullComment 0x56046812dcd0 | | `-ParagraphComment 0x56046812dca0 | | `-TextComment 0x56046812dc70 Text=" Callback to invoke on an event, invoked when the observer matches. " | |-FieldDecl 0x5604680292b8 col:22 run 'ecs_run_action_t':'void (*)(ecs_iter_t *)' | | `-FullComment 0x56046812de60 | | `-ParagraphComment 0x56046812de30 | | |-TextComment 0x56046812dd40 Text=" Callback invoked on an event. When left to NULL the default runner" | | |-TextComment 0x56046812dd60 Text=" is used which matches the event with the observer's filter, and calls" | | |-TextComment 0x56046812dd80 Text=" 'callback' when it matches. " | | |-TextComment 0x56046812dda0 Text=" A reason to override the run function is to improve performance, if there" | | |-TextComment 0x56046812ddc0 Text=" are more efficient way to test whether an event matches the observer than" | | `-TextComment 0x56046812dde0 Text=" the general purpose query matcher. " | |-FieldDecl 0x5604680298b0 col:11 ctx 'void *' | | `-FullComment 0x56046812df30 | | `-ParagraphComment 0x56046812df00 | | `-TextComment 0x56046812ded0 Text=" User context to pass to callback " | |-FieldDecl 0x560468029940 col:11 binding_ctx 'void *' | | `-FullComment 0x56046812e000 | | `-ParagraphComment 0x56046812dfd0 | | `-TextComment 0x56046812dfa0 Text=" Context to be used for language bindings " | |-FieldDecl 0x5604680299c8 col:20 ctx_free 'ecs_ctx_free_t':'void (*)(void *)' | | `-FullComment 0x56046812e0d0 | | `-ParagraphComment 0x56046812e0a0 | | `-TextComment 0x56046812e070 Text=" Callback to free ctx " | |-FieldDecl 0x560468029a58 col:20 binding_ctx_free 'ecs_ctx_free_t':'void (*)(void *)' | | `-FullComment 0x5604681301c0 | | `-ParagraphComment 0x56046812e170 | | `-TextComment 0x56046812e140 Text=" Callback to free binding_ctx " | |-FieldDecl 0x560468029ae8 col:17 observable 'ecs_poly_t *' | | `-FullComment 0x560468130290 | | `-ParagraphComment 0x560468130260 | | `-TextComment 0x560468130230 Text=" Observable with which to register the observer " | |-FieldDecl 0x560468029b78 col:14 last_event_id 'int32_t *' | | `-FullComment 0x560468130380 | | `-ParagraphComment 0x560468130350 | | |-TextComment 0x560468130300 Text=" Optional shared last event id for multiple observers. Ensures only one" | | `-TextComment 0x560468130320 Text=" of the observers with the shared id gets triggered for an event " | `-FieldDecl 0x560468029c08 col:13 term_index 'int32_t':'int' | `-FullComment 0x560468130450 | `-ParagraphComment 0x560468130420 | `-TextComment 0x5604681303f0 Text=" Used for internal purposes " |-TypedefDecl 0x560468029cb8 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 | |-ParagraphComment 0x5604681304f0 | | `-TextComment 0x5604681304c0 Text=" Used with ecs_observer_init. " | |-ParagraphComment 0x560468130540 | | `-TextComment 0x560468130510 Text=" " | |-VerbatimLineComment 0x560468130560 Text=" observers" | `-ParagraphComment 0x5604681305d0 | `-TextComment 0x5604681305a0 Text=" " |-RecordDecl 0x560468029d50 line:4128:16 struct ecs_value_t definition | |-FullComment 0x560468130870 | | |-ParagraphComment 0x5604681306b0 | | | `-TextComment 0x560468130680 Text=" " | | |-VerbatimLineComment 0x5604681306d0 Text=" misc_types Miscellaneous types" | | |-ParagraphComment 0x560468130740 | | | `-TextComment 0x560468130710 Text=" " | | `-BlockCommandComment 0x560468130760 Name="brief" | | `-ParagraphComment 0x560468130830 | | |-TextComment 0x560468130790 Text=" Types used to create entities, observers, queries and more." | | |-TextComment 0x5604681307b0 Text=" " | | |-TextComment 0x5604681307d0 Text="@" | | `-TextComment 0x5604681307f0 Text="{" | |-FieldDecl 0x560468029e00 col:18 type 'ecs_entity_t':'unsigned long' | `-FieldDecl 0x560468029e68 col:11 ptr 'void *' |-TypedefDecl 0x560468029f18 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 | |-ParagraphComment 0x560468130910 | | `-TextComment 0x5604681308e0 Text=" " | |-VerbatimLineComment 0x560468130930 Text=" misc_types Miscellaneous types" | |-ParagraphComment 0x5604681309a0 | | `-TextComment 0x560468130970 Text=" " | `-BlockCommandComment 0x5604681309c0 Name="brief" | `-ParagraphComment 0x560468130a90 | |-TextComment 0x5604681309f0 Text=" Types used to create entities, observers, queries and more." | |-TextComment 0x560468130a10 Text=" " | |-TextComment 0x560468130a30 Text="@" | `-TextComment 0x560468130a50 Text="{" |-RecordDecl 0x560468029fb0 line:4134:16 struct ecs_world_info_t definition | |-FullComment 0x560468130ba0 | | `-ParagraphComment 0x560468130b70 | | `-TextComment 0x560468130b40 Text=" Type that contains information about the world. " | |-FieldDecl 0x56046802a060 col:18 last_component_id 'ecs_entity_t':'unsigned long' | | `-FullComment 0x560468130c70 | | `-ParagraphComment 0x560468130c40 | | `-TextComment 0x560468130c10 Text=" Last issued component entity id " | |-FieldDecl 0x56046802a0e8 col:18 last_id 'ecs_entity_t':'unsigned long' | | `-FullComment 0x560468130d40 | | `-ParagraphComment 0x560468130d10 | | `-TextComment 0x560468130ce0 Text=" Last issued entity id " | |-FieldDecl 0x56046802a178 col:18 min_id 'ecs_entity_t':'unsigned long' | | `-FullComment 0x560468130e10 | | `-ParagraphComment 0x560468130de0 | | `-TextComment 0x560468130db0 Text=" First allowed entity id " | |-FieldDecl 0x56046802a208 col:18 max_id 'ecs_entity_t':'unsigned long' | | `-FullComment 0x560468130ee0 | | `-ParagraphComment 0x560468130eb0 | | `-TextComment 0x560468130e80 Text=" Last allowed entity id " | |-FieldDecl 0x56046802a2a0 col:17 delta_time_raw 'float' | | `-FullComment 0x560468130fb0 | | `-ParagraphComment 0x560468130f80 | | `-TextComment 0x560468130f50 Text=" Raw delta time (no time scaling) " | |-FieldDecl 0x56046802a330 col:17 delta_time 'float' | | `-FullComment 0x560468131080 | | `-ParagraphComment 0x560468131050 | | `-TextComment 0x560468131020 Text=" Time passed to or computed by ecs_progress " | |-FieldDecl 0x56046802a3c0 col:17 time_scale 'float' | | `-FullComment 0x560468131150 | | `-ParagraphComment 0x560468131120 | | `-TextComment 0x5604681310f0 Text=" Time scale applied to delta_time " | |-FieldDecl 0x56046802a450 col:17 target_fps 'float' | | `-FullComment 0x560468131220 | | `-ParagraphComment 0x5604681311f0 | | `-TextComment 0x5604681311c0 Text=" Target fps " | |-FieldDecl 0x56046802a4e0 col:17 frame_time_total 'float' | | `-FullComment 0x5604681312f0 | | `-ParagraphComment 0x5604681312c0 | | `-TextComment 0x560468131290 Text=" Total time spent processing a frame " | |-FieldDecl 0x56046802a570 col:17 system_time_total 'float' | | `-FullComment 0x5604681313c0 | | `-ParagraphComment 0x560468131390 | | `-TextComment 0x560468131360 Text=" Total time spent in systems " | |-FieldDecl 0x56046802a600 col:17 emit_time_total 'float' | | `-FullComment 0x560468131490 | | `-ParagraphComment 0x560468131460 | | `-TextComment 0x560468131430 Text=" Total time spent notifying observers " | |-FieldDecl 0x56046802a690 col:17 merge_time_total 'float' | | `-FullComment 0x560468131560 | | `-ParagraphComment 0x560468131530 | | `-TextComment 0x560468131500 Text=" Total time spent in merges " | |-FieldDecl 0x56046802a720 col:17 world_time_total 'float' | | `-FullComment 0x560468131630 | | `-ParagraphComment 0x560468131600 | | `-TextComment 0x5604681315d0 Text=" Time elapsed in simulation " | |-FieldDecl 0x56046802a7b0 col:17 world_time_total_raw 'float' | | `-FullComment 0x560468131700 | | `-ParagraphComment 0x5604681316d0 | | `-TextComment 0x5604681316a0 Text=" Time elapsed in simulation (no scaling) " | |-FieldDecl 0x56046802ae40 col:17 rematch_time_total 'float' | | `-FullComment 0x5604681317d0 | | `-ParagraphComment 0x5604681317a0 | | `-TextComment 0x560468131770 Text=" Time spent on query rematching " | |-FieldDecl 0x56046802aec8 col:13 frame_count_total 'int64_t':'long' | | `-FullComment 0x5604681318a0 | | `-ParagraphComment 0x560468131870 | | `-TextComment 0x560468131840 Text=" Total number of frames " | |-FieldDecl 0x56046802af58 col:13 merge_count_total 'int64_t':'long' | | `-FullComment 0x560468131970 | | `-ParagraphComment 0x560468131940 | | `-TextComment 0x560468131910 Text=" Total number of merges " | |-FieldDecl 0x56046802afe8 col:13 rematch_count_total 'int64_t':'long' | | `-FullComment 0x560468131a40 | | `-ParagraphComment 0x560468131a10 | | `-TextComment 0x5604681319e0 Text=" Total number of rematches " | |-FieldDecl 0x56046802b078 col:13 id_create_total 'int64_t':'long' | | `-FullComment 0x560468131b10 | | `-ParagraphComment 0x560468131ae0 | | `-TextComment 0x560468131ab0 Text=" Total number of times a new id was created " | |-FieldDecl 0x56046802b108 col:13 id_delete_total 'int64_t':'long' | | `-FullComment 0x560468131be0 | | `-ParagraphComment 0x560468131bb0 | | `-TextComment 0x560468131b80 Text=" Total number of times an id was deleted " | |-FieldDecl 0x56046802b198 col:13 table_create_total 'int64_t':'long' | | `-FullComment 0x560468131cb0 | | `-ParagraphComment 0x560468131c80 | | `-TextComment 0x560468131c50 Text=" Total number of times a table was created " | |-FieldDecl 0x56046802b228 col:13 table_delete_total 'int64_t':'long' | | `-FullComment 0x560468131d80 | | `-ParagraphComment 0x560468131d50 | | `-TextComment 0x560468131d20 Text=" Total number of times a table was deleted " | |-FieldDecl 0x56046802b2b8 col:13 pipeline_build_count_total 'int64_t':'long' | | `-FullComment 0x560468131e50 | | `-ParagraphComment 0x560468131e20 | | `-TextComment 0x560468131df0 Text=" Total number of pipeline builds " | |-FieldDecl 0x56046802b348 col:13 systems_ran_frame 'int64_t':'long' | | `-FullComment 0x560468131f20 | | `-ParagraphComment 0x560468131ef0 | | `-TextComment 0x560468131ec0 Text=" Total number of systems ran in last frame " | |-FieldDecl 0x56046802b3d8 col:13 observers_ran_frame 'int64_t':'long' | | `-FullComment 0x560468131ff0 | | `-ParagraphComment 0x560468131fc0 | | `-TextComment 0x560468131f90 Text=" Total number of times observer was invoked " | |-FieldDecl 0x56046802b468 col:13 id_count 'int32_t':'int' | | `-FullComment 0x5604681320c0 | | `-ParagraphComment 0x560468132090 | | `-TextComment 0x560468132060 Text=" Number of ids in the world (excluding wildcards) " | |-FieldDecl 0x56046802b4f8 col:13 tag_id_count 'int32_t':'int' | | `-FullComment 0x560468132190 | | `-ParagraphComment 0x560468132160 | | `-TextComment 0x560468132130 Text=" Number of tag (no data) ids in the world " | |-FieldDecl 0x56046802b588 col:13 component_id_count 'int32_t':'int' | | `-FullComment 0x560468132270 | | `-ParagraphComment 0x560468132240 | | `-TextComment 0x560468132210 Text=" Number of component (data) ids in the world " | |-FieldDecl 0x56046802b618 col:13 pair_id_count 'int32_t':'int' | | `-FullComment 0x560468132340 | | `-ParagraphComment 0x560468132310 | | `-TextComment 0x5604681322e0 Text=" Number of pair ids in the world " | |-FieldDecl 0x56046802b6a8 col:13 wildcard_id_count 'int32_t':'int' | | `-FullComment 0x560468132410 | | `-ParagraphComment 0x5604681323e0 | | `-TextComment 0x5604681323b0 Text=" Number of wildcard ids " | |-FieldDecl 0x56046802b738 col:13 table_count 'int32_t':'int' | | `-FullComment 0x5604681324e0 | | `-ParagraphComment 0x5604681324b0 | | `-TextComment 0x560468132480 Text=" Number of tables " | |-FieldDecl 0x56046802b7c8 col:13 tag_table_count 'int32_t':'int' | | `-FullComment 0x5604681325b0 | | `-ParagraphComment 0x560468132580 | | `-TextComment 0x560468132550 Text=" Number of tag-only tables " | |-FieldDecl 0x56046802b858 col:13 trivial_table_count 'int32_t':'int' | | `-FullComment 0x560468132680 | | `-ParagraphComment 0x560468132650 | | `-TextComment 0x560468132620 Text=" Number of tables with trivial components (no lifecycle callbacks) " | |-FieldDecl 0x56046802b8e8 col:13 empty_table_count 'int32_t':'int' | | `-FullComment 0x560468132750 | | `-ParagraphComment 0x560468132720 | | `-TextComment 0x5604681326f0 Text=" Number of tables without entities " | |-FieldDecl 0x56046802b978 col:13 table_record_count 'int32_t':'int' | | `-FullComment 0x560468132820 | | `-ParagraphComment 0x5604681327f0 | | `-TextComment 0x5604681327c0 Text=" Total number of table records (entries in table caches) " | |-FieldDecl 0x56046802ba08 col:13 table_storage_count 'int32_t':'int' | | `-FullComment 0x5604681328f0 | | `-ParagraphComment 0x5604681328c0 | | `-TextComment 0x560468132890 Text=" Total number of table storages " | |-RecordDecl 0x56046802ba88 line:4178:5 struct definition | | |-FieldDecl 0x56046802bb40 col:17 add_count 'int64_t':'long' | | | `-FullComment 0x5604681329c0 | | | `-ParagraphComment 0x560468132990 | | | `-TextComment 0x560468132960 Text=" add commands processed " | | |-FieldDecl 0x56046802bbc8 col:17 remove_count 'int64_t':'long' | | | `-FullComment 0x560468132a90 | | | `-ParagraphComment 0x560468132a60 | | | `-TextComment 0x560468132a30 Text=" remove commands processed " | | |-FieldDecl 0x56046802bc58 col:17 delete_count 'int64_t':'long' | | | `-FullComment 0x560468132b60 | | | `-ParagraphComment 0x560468132b30 | | | `-TextComment 0x560468132b00 Text=" delete commands processed " | | |-FieldDecl 0x56046802bce8 col:17 clear_count 'int64_t':'long' | | | `-FullComment 0x560468132c30 | | | `-ParagraphComment 0x560468132c00 | | | `-TextComment 0x560468132bd0 Text=" clear commands processed " | | |-FieldDecl 0x56046802bd78 col:17 set_count 'int64_t':'long' | | | `-FullComment 0x560468132d00 | | | `-ParagraphComment 0x560468132cd0 | | | `-TextComment 0x560468132ca0 Text=" set commands processed " | | |-FieldDecl 0x56046802ca10 col:17 get_mut_count 'int64_t':'long' | | | `-FullComment 0x560468132dd0 | | | `-ParagraphComment 0x560468132da0 | | | `-TextComment 0x560468132d70 Text=" get_mut/emplace commands processed " | | |-FieldDecl 0x56046802ca98 col:17 modified_count 'int64_t':'long' | | | `-FullComment 0x560468132ea0 | | | `-ParagraphComment 0x560468132e70 | | | `-TextComment 0x560468132e40 Text=" modified commands processed " | | |-FieldDecl 0x56046802cb28 col:17 other_count 'int64_t':'long' | | | `-FullComment 0x560468132f70 | | | `-ParagraphComment 0x560468132f40 | | | `-TextComment 0x560468132f10 Text=" other commands processed " | | |-FieldDecl 0x56046802cbb8 col:17 discard_count 'int64_t':'long' | | | `-FullComment 0x560468133040 | | | `-ParagraphComment 0x560468133010 | | | `-TextComment 0x560468132fe0 Text=" commands discarded, happens when entity is no longer alive when running the command " | | |-FieldDecl 0x56046802cc48 col:17 batched_entity_count 'int64_t':'long' | | | `-FullComment 0x560468133110 | | | `-ParagraphComment 0x5604681330e0 | | | `-TextComment 0x5604681330b0 Text=" entities for which commands were batched " | | `-FieldDecl 0x56046802ccd8 col:17 batched_command_count 'int64_t':'long' | | `-FullComment 0x5604681331e0 | | `-ParagraphComment 0x5604681331b0 | | `-TextComment 0x560468133180 Text=" commands batched " | |-FieldDecl 0x56046802cdb8 col:7 cmd 'struct (unnamed struct at flecs.h:4178:5)':'struct ecs_world_info_t::(unnamed at flecs.h:4178:5)' | `-FieldDecl 0x56046802ce20 col:17 name_prefix 'const char *' | `-FullComment 0x560468133320 | `-ParagraphComment 0x5604681332f0 | |-TextComment 0x560468133250 Text=" Value set by ecs_set_name_prefix. Used" | |-TextComment 0x560468133270 Text=" to remove library prefixes of symbol" | |-TextComment 0x560468133290 Text=" names (such as Ecs, ecs_) when " | `-TextComment 0x5604681332b0 Text=" registering them as names. " |-TypedefDecl 0x56046802cef8 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 | `-ParagraphComment 0x5604681333c0 | `-TextComment 0x560468133390 Text=" Type that contains information about the world. " |-RecordDecl 0x56046802cf90 line:4199:16 struct ecs_query_group_info_t definition | |-FullComment 0x5604681334c0 | | `-ParagraphComment 0x560468133490 | | `-TextComment 0x560468133460 Text=" Type that contains information about a query group. " | |-FieldDecl 0x56046802d040 col:13 match_count 'int32_t':'int' | | `-FullComment 0x560468133590 | | `-ParagraphComment 0x560468133560 | | `-TextComment 0x560468133530 Text=" How often tables have been matched/unmatched " | |-FieldDecl 0x56046802d0c8 col:13 table_count 'int32_t':'int' | | `-FullComment 0x560468133660 | | `-ParagraphComment 0x560468133630 | | `-TextComment 0x560468133600 Text=" Number of tables in group " | `-FieldDecl 0x56046802d160 col:11 ctx 'void *' | `-FullComment 0x560468133730 | `-ParagraphComment 0x560468133700 | `-TextComment 0x5604681336d0 Text=" Group context, returned by on_group_create " |-TypedefDecl 0x56046802d238 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 | `-ParagraphComment 0x5604681337d0 | `-TextComment 0x5604681337a0 Text=" Type that contains information about a query group. " |-RecordDecl 0x56046802d330 line:4214:16 struct EcsIdentifier definition | |-FullComment 0x5604681338d0 | | `-ParagraphComment 0x5604681338a0 | | `-TextComment 0x560468133870 Text=" A (string) identifier. Used as pair with EcsName and EcsSymbol tags " | |-FieldDecl 0x56046802d3e8 col:11 value 'char *' | | `-FullComment 0x5604681339a0 | | `-ParagraphComment 0x560468133970 | | `-TextComment 0x560468133940 Text=" Identifier string " | |-FieldDecl 0x56046802d478 col:16 length 'ecs_size_t':'int' | | `-FullComment 0x560468133a70 | | `-ParagraphComment 0x560468133a40 | | `-TextComment 0x560468133a10 Text=" Length of identifier " | |-FieldDecl 0x56046802d508 col:14 hash 'uint64_t':'unsigned long' | | `-FullComment 0x560468133b40 | | `-ParagraphComment 0x560468133b10 | | `-TextComment 0x560468133ae0 Text=" Hash of current value " | |-FieldDecl 0x56046802d598 col:14 index_hash 'uint64_t':'unsigned long' | | `-FullComment 0x560468133c10 | | `-ParagraphComment 0x560468133be0 | | `-TextComment 0x560468133bb0 Text=" Hash of existing record in current index " | `-FieldDecl 0x56046802d628 col:20 index 'ecs_hashmap_t *' | `-FullComment 0x560468133ce0 | `-ParagraphComment 0x560468133cb0 | `-TextComment 0x560468133c80 Text=" Current index " |-TypedefDecl 0x56046802d708 col:3 EcsIdentifier 'struct EcsIdentifier':'struct EcsIdentifier' | |-ElaboratedType 0x56046802d6b0 'struct EcsIdentifier' sugar | | `-RecordType 0x56046802d3b0 'struct EcsIdentifier' | | `-Record 0x56046802d330 'EcsIdentifier' | `-FullComment 0x560468133db0 | `-ParagraphComment 0x560468133d80 | `-TextComment 0x560468133d50 Text=" A (string) identifier. Used as pair with EcsName and EcsSymbol tags " |-RecordDecl 0x56046802d7a0 line:4223:16 struct EcsComponent definition | |-FullComment 0x560468133e80 | | `-ParagraphComment 0x560468133e50 | | `-TextComment 0x560468133e20 Text=" Component information. " | |-FieldDecl 0x56046802d850 col:16 size 'ecs_size_t':'int' | | `-FullComment 0x560468133f50 | | `-ParagraphComment 0x560468133f20 | | `-TextComment 0x560468133ef0 Text=" Component size " | `-FieldDecl 0x56046802d8d8 col:16 alignment 'ecs_size_t':'int' | `-FullComment 0x560468134020 | `-ParagraphComment 0x560468133ff0 | `-TextComment 0x560468133fc0 Text=" Component alignment " |-TypedefDecl 0x56046802d9b8 col:3 referenced EcsComponent 'struct EcsComponent':'struct EcsComponent' | |-ElaboratedType 0x56046802d960 'struct EcsComponent' sugar | | `-RecordType 0x56046802d820 'struct EcsComponent' | | `-Record 0x56046802d7a0 'EcsComponent' | `-FullComment 0x5604681340f0 | `-ParagraphComment 0x5604681340c0 | `-TextComment 0x560468134090 Text=" Component information. " |-RecordDecl 0x560467fecf80 line:4229:16 struct EcsPoly definition | |-FullComment 0x5604681341e0 | | `-ParagraphComment 0x560468134190 | | `-TextComment 0x560468134160 Text=" Component for storing a poly object " | `-FieldDecl 0x560467fed030 col:17 poly 'ecs_poly_t *' | `-FullComment 0x5604681342b0 | `-ParagraphComment 0x560468134280 | `-TextComment 0x560468134250 Text=" Pointer to poly object " |-TypedefDecl 0x560467fed108 col:3 EcsPoly 'struct EcsPoly':'struct EcsPoly' | |-ElaboratedType 0x560467fed0b0 'struct EcsPoly' sugar | | `-RecordType 0x560467fed000 'struct EcsPoly' | | `-Record 0x560467fecf80 'EcsPoly' | `-FullComment 0x560468134380 | `-ParagraphComment 0x560468134350 | `-TextComment 0x560468134320 Text=" Component for storing a poly object " |-TypedefDecl 0x560467fed1b0 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 | `-ParagraphComment 0x560468134420 | `-TextComment 0x5604681343f0 Text=" Component for iterable entities " |-VarDecl 0x560467fed308 col:33 ECS_PAIR 'const ecs_id_t':'const unsigned long' extern | `-FullComment 0x560468134520 | `-ParagraphComment 0x5604681344f0 | `-TextComment 0x5604681344c0 Text=" Indicates that the id is a pair. " |-VarDecl 0x560467fed3a8 col:33 ECS_OVERRIDE 'const ecs_id_t':'const unsigned long' extern | `-FullComment 0x5604681345f0 | `-ParagraphComment 0x5604681345c0 | `-TextComment 0x560468134590 Text=" Automatically override component when it is inherited " |-VarDecl 0x560467fed448 col:33 ECS_TOGGLE 'const ecs_id_t':'const unsigned long' extern | `-FullComment 0x5604681346c0 | `-ParagraphComment 0x560468134690 | `-TextComment 0x560468134660 Text=" Adds bitset to storage which allows component to be enabled/disabled " |-VarDecl 0x560467fed4e8 col:33 ECS_AND 'const ecs_id_t':'const unsigned long' extern | `-FullComment 0x560468134790 | `-ParagraphComment 0x560468134760 | `-TextComment 0x560468134730 Text=" Include all components from entity to which AND is applied " |-VarDecl 0x560467fed5b8 :43:1> col:1 FLECS__EEcsComponent 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560467fed630 :44:1> col:1 FLECS__EEcsIdentifier 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560467fed6a8 :45:1> col:1 FLECS__EEcsIterable 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560467fed720 :46:1> col:1 FLECS__EEcsPoly 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560467fed798 col:37 EcsQuery 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560467fed810 col:37 EcsObserver 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560467fed888 col:37 EcsSystem 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560467fed900 :47:1> col:1 FLECS__EEcsTickSource 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560467fed978 :48:1> col:1 FLECS__EEcsPipelineQuery 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560467fed9f0 :49:1> col:1 FLECS__EEcsTimer 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560467feda68 :50:1> col:1 FLECS__EEcsRateFilter 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560467fedb08 col:37 EcsFlecs 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468134860 | `-ParagraphComment 0x560468134830 | `-TextComment 0x560468134800 Text=" Root scope for builtin flecs entities " |-VarDecl 0x560467fedba8 col:37 EcsFlecsCore 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468134930 | `-ParagraphComment 0x560468134900 | `-TextComment 0x5604681348d0 Text=" Core module scope " |-VarDecl 0x560467fedc48 col:37 EcsWorld 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468134a00 | `-ParagraphComment 0x5604681349d0 | `-TextComment 0x5604681349a0 Text=" Entity associated with world (used for "attaching" components to world) " |-VarDecl 0x560467fedce8 col:37 EcsWildcard 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468134ad0 | `-ParagraphComment 0x560468134aa0 | `-TextComment 0x560468134a70 Text=" Wildcard entity ("*"). Matches any id, returns all matches. " |-VarDecl 0x560467fedd88 col:37 EcsAny 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468134ba0 | `-ParagraphComment 0x560468134b70 | `-TextComment 0x560468134b40 Text=" Any entity ("_"). Matches any id, returns only the first. " |-VarDecl 0x560467fede28 col:37 EcsThis 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468134c70 | `-ParagraphComment 0x560468134c40 | `-TextComment 0x560468134c10 Text=" This entity. Default source for queries. " |-VarDecl 0x560467fedec8 col:37 EcsVariable 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468134d40 | `-ParagraphComment 0x560468134d10 | `-TextComment 0x560468134ce0 Text=" Variable entity ("$"). Used in expressions to prefix variable names " |-VarDecl 0x560468032c28 col:37 EcsTransitive 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468134e60 | `-ParagraphComment 0x560468134e30 | |-TextComment 0x560468134db0 Text=" Marks a relationship as transitive. " | |-TextComment 0x560468134dd0 Text=" Behavior: " | `-TextComment 0x560468134df0 Text=" if R(X, Y) and R(Y, Z) then R(X, Z)" |-VarDecl 0x560468032cc8 col:37 EcsReflexive 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468134f80 | `-ParagraphComment 0x560468134f50 | |-TextComment 0x560468134ed0 Text=" Marks a relatoinship as reflexive." | |-TextComment 0x560468134ef0 Text=" Behavior: " | `-TextComment 0x560468134f10 Text=" R(X, X) == true" |-VarDecl 0x560468032d68 col:37 EcsFinal 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468135110 | |-ParagraphComment 0x560468135070 | | |-TextComment 0x560468134ff0 Text=" Ensures that entity/component cannot be used as target in IsA relationship." | | |-TextComment 0x560468135010 Text=" Final can improve the performance of rule-based queries, as they will not " | | `-TextComment 0x560468135030 Text=" attempt to substitute a final component with its subsets." | `-ParagraphComment 0x5604681350e0 | |-TextComment 0x560468135090 Text=" Behavior: " | `-TextComment 0x5604681350b0 Text=" if IsA(X, Y) and Final(Y) throw error" |-VarDecl 0x560468032e08 col:37 EcsDontInherit 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468135250 | |-ParagraphComment 0x5604681351b0 | | `-TextComment 0x560468135180 Text=" Ensures that component is never inherited from an IsA target." | `-ParagraphComment 0x560468135220 | |-TextComment 0x5604681351d0 Text=" Behavior:" | `-TextComment 0x5604681351f0 Text=" if DontInherit(X) and X(B) and IsA(A, B) then X(A) is false." |-VarDecl 0x560468032ea8 col:37 EcsSymmetric 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468135370 | `-ParagraphComment 0x560468135340 | |-TextComment 0x5604681352c0 Text=" Marks relationship as commutative." | |-TextComment 0x5604681352e0 Text=" Behavior:" | `-TextComment 0x560468135300 Text=" if R(X, Y) then R(Y, X)" |-VarDecl 0x560468032f48 col:37 EcsExclusive 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x5604681354d0 | |-ParagraphComment 0x560468135430 | | |-TextComment 0x5604681353e0 Text=" Can be added to relationship to indicate that the relationship can only occur" | | `-TextComment 0x560468135400 Text=" once on an entity. Adding a 2nd instance will replace the 1st. " | `-ParagraphComment 0x5604681354a0 | |-TextComment 0x560468135450 Text=" Behavior:" | `-TextComment 0x560468135470 Text=" R(X, Y) + R(X, Z) = R(X, Z)" |-VarDecl 0x560468032fe8 col:37 EcsAcyclic 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x5604681355a0 | `-ParagraphComment 0x560468135570 | `-TextComment 0x560468135540 Text=" Marks a relationship as acyclic. Acyclic relationships may not form cycles. " |-VarDecl 0x560468033088 col:37 EcsWith 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468135710 | |-ParagraphComment 0x560468135640 | | `-TextComment 0x560468135610 Text=" Ensure that a component always is added together with another component." | `-ParagraphComment 0x5604681356e0 | |-TextComment 0x560468135660 Text=" Behavior:" | |-TextComment 0x560468135680 Text=" If With(R, O) and R(X) then O(X)" | `-TextComment 0x5604681356a0 Text=" If With(R, O) and R(X, Y) then O(X, Y)" |-VarDecl 0x560468033128 col:37 EcsOneOf 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468135880 | |-ParagraphComment 0x5604681357b0 | | `-TextComment 0x560468135780 Text=" Ensure that relationship target is child of specified entity." | `-ParagraphComment 0x560468135850 | |-TextComment 0x5604681357d0 Text=" Behavior:" | |-TextComment 0x5604681357f0 Text=" If OneOf(R, O) and R(X, Y), Y must be a child of O" | `-TextComment 0x560468135810 Text=" If OneOf(R) and R(X, Y), Y must be a child of R" |-VarDecl 0x5604680331c8 col:37 EcsTag 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468135970 | `-ParagraphComment 0x560468135940 | |-TextComment 0x5604681358f0 Text=" Can be added to relationship to indicate that it should never hold data, even" | `-TextComment 0x560468135910 Text=" when it or the relationship target is a component. " |-VarDecl 0x560468033268 col:37 EcsUnion 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468135a90 | `-ParagraphComment 0x560468135a60 | |-TextComment 0x5604681359e0 Text=" Tag to indicate that relationship is stored as union. Union relationships enable" | |-TextComment 0x560468135a00 Text=" changing the target of a union without switching tables. Union relationships" | `-TextComment 0x560468135a20 Text=" are also marked as exclusive. " |-VarDecl 0x560468033308 col:37 EcsName 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468135b60 | `-ParagraphComment 0x560468135b30 | `-TextComment 0x560468135b00 Text=" Tag to indicate name identifier " |-VarDecl 0x5604680333a8 col:37 EcsSymbol 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468135c30 | `-ParagraphComment 0x560468135c00 | `-TextComment 0x560468135bd0 Text=" Tag to indicate symbol identifier " |-VarDecl 0x560468033448 col:37 EcsAlias 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468135d00 | `-ParagraphComment 0x560468135cd0 | `-TextComment 0x560468135ca0 Text=" Tag to indicate alias identifier " |-VarDecl 0x5604680334e8 col:37 EcsChildOf 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468135dd0 | `-ParagraphComment 0x560468135da0 | `-TextComment 0x560468135d70 Text=" Used to express parent-child relationships. " |-VarDecl 0x560468033588 col:37 EcsIsA 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468135ea0 | `-ParagraphComment 0x560468135e70 | `-TextComment 0x560468135e40 Text=" Used to express inheritance relationships. " |-VarDecl 0x560468033628 col:37 EcsDependsOn 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468135f70 | `-ParagraphComment 0x560468135f40 | `-TextComment 0x560468135f10 Text=" Used to express dependency relationships " |-VarDecl 0x5604680336c8 col:37 EcsSlotOf 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468136040 | `-ParagraphComment 0x560468136010 | `-TextComment 0x560468135fe0 Text=" Used to express a slot (used with prefab inheritance) " |-VarDecl 0x560468033768 col:37 EcsModule 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468136110 | `-ParagraphComment 0x5604681360e0 | `-TextComment 0x5604681360b0 Text=" Tag added to module entities " |-VarDecl 0x560468033808 col:37 EcsPrivate 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x5604681361f0 | `-ParagraphComment 0x5604681361b0 | `-TextComment 0x560468136180 Text=" Tag to indicate an entity/component/system is private to a module " |-VarDecl 0x5604680338a8 col:37 EcsPrefab 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x5604681362e0 | `-ParagraphComment 0x5604681362b0 | |-TextComment 0x560468136260 Text=" Tag added to prefab entities. Any entity with this tag is automatically" | `-TextComment 0x560468136280 Text=" ignored by filters/queries, unless EcsPrefab is explicitly added. " |-VarDecl 0x560468033948 col:37 EcsDisabled 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x5604681363b0 | `-ParagraphComment 0x560468136380 | `-TextComment 0x560468136350 Text=" When this tag is added to an entity it is skipped by all queries/filters " |-VarDecl 0x5604680339e8 col:37 EcsOnAdd 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468136480 | `-ParagraphComment 0x560468136450 | `-TextComment 0x560468136420 Text=" Event. Triggers when an id (component, tag, pair) is added to an entity " |-VarDecl 0x560468033a88 col:37 EcsOnRemove 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468136550 | `-ParagraphComment 0x560468136520 | `-TextComment 0x5604681364f0 Text=" Event. Triggers when an id (component, tag, pair) is removed from an entity " |-VarDecl 0x560468033b28 col:37 EcsOnSet 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468136620 | `-ParagraphComment 0x5604681365f0 | `-TextComment 0x5604681365c0 Text=" Event. Triggers when a component is set for an entity " |-VarDecl 0x560468033c00 col:37 EcsUnSet 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x5604681366f0 | `-ParagraphComment 0x5604681366c0 | `-TextComment 0x560468136690 Text=" Event. Triggers when a component is unset for an entity " |-VarDecl 0x560468033ca8 col:37 EcsMonitor 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x5604681367c0 | `-ParagraphComment 0x560468136790 | `-TextComment 0x560468136760 Text=" Event. Exactly-once observer for when an entity matches/unmatches a filter " |-VarDecl 0x560468033d48 col:37 EcsOnDelete 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x5604681368e0 | `-ParagraphComment 0x5604681368b0 | |-TextComment 0x560468136830 Text=" Event. Triggers when an entity is deleted." | |-TextComment 0x560468136850 Text=" Also used as relationship for defining cleanup behavior, see: " | `-TextComment 0x560468136870 Text=" https://github.com/SanderMertens/flecs/blob/master/docs/Relationships.md#cleanup-properties" |-VarDecl 0x560468033e48 col:37 EcsOnTableEmpty 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x5604681369b0 | `-ParagraphComment 0x560468136980 | `-TextComment 0x560468136950 Text=" Event. Triggers when a table becomes empty (doesn't emit on creation). " |-VarDecl 0x560468033ee8 col:37 EcsOnTableFill 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468136a80 | `-ParagraphComment 0x560468136a50 | `-TextComment 0x560468136a20 Text=" Event. Triggers when a table becomes non-empty. " |-VarDecl 0x560468033f88 col:37 EcsOnDeleteTarget 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468136ba0 | `-ParagraphComment 0x560468136b70 | |-TextComment 0x560468136af0 Text=" Relationship used to define what should happen when a target entity (second" | |-TextComment 0x560468136b10 Text=" element of a pair) is deleted. For details see: " | `-TextComment 0x560468136b30 Text=" https://github.com/SanderMertens/flecs/blob/master/docs/Relationships.md#cleanup-properties" |-VarDecl 0x560468034028 col:37 EcsRemove 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468136c90 | `-ParagraphComment 0x560468136c60 | |-TextComment 0x560468136c10 Text=" Remove cleanup policy. Must be used as target in pair with EcsOnDelete or" | `-TextComment 0x560468136c30 Text=" EcsOnDeleteTarget. " |-VarDecl 0x5604680340c8 col:37 EcsDelete 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468136d80 | `-ParagraphComment 0x560468136d50 | |-TextComment 0x560468136d00 Text=" Delete cleanup policy. Must be used as target in pair with EcsOnDelete or" | `-TextComment 0x560468136d20 Text=" EcsOnDeleteTarget. " |-VarDecl 0x560468034168 col:37 EcsPanic 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468136e70 | `-ParagraphComment 0x560468136e40 | |-TextComment 0x560468136df0 Text=" Panic cleanup policy. Must be used as target in pair with EcsOnDelete or" | `-TextComment 0x560468136e10 Text=" EcsOnDeleteTarget. " |-VarDecl 0x560468034208 col:37 EcsDefaultChildComponent 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x560468136fe0 | `-ParagraphComment 0x560468136fb0 | |-TextComment 0x560468136ee0 Text=" Used like (EcsDefaultChildComponent, Component). When added to an entity," | |-TextComment 0x560468136f00 Text=" this informs serialization formats which component to use when a value is" | |-TextComment 0x560468136f20 Text=" assigned to an entity without specifying the component. This is intended as" | |-TextComment 0x560468136f40 Text=" a hint, serialization formats are not required to use it. Adding this " | `-TextComment 0x560468136f60 Text=" component does not change the behavior of core ECS operations. " |-VarDecl 0x5604680342a8 col:37 EcsEmpty 'const ecs_entity_t':'const unsigned long' extern | `-FullComment 0x5604681370b0 | `-ParagraphComment 0x560468137080 | `-TextComment 0x560468137050 Text=" Tag used to indicate query is empty " |-VarDecl 0x560468034320 :51:1> col:1 FLECS__EEcsPipeline 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560468034398 col:37 EcsOnStart 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560468034410 col:37 EcsPreFrame 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560468034488 col:37 EcsOnLoad 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560468034500 col:37 EcsPostLoad 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560468034578 col:37 EcsPreUpdate 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680345f0 col:37 EcsOnUpdate 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560468034668 col:37 EcsOnValidate 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680346e0 col:37 EcsPostUpdate 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560468034758 col:37 EcsPreStore 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680347d0 col:37 EcsOnStore 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x560468034848 col:37 EcsPostFrame 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680348c0 col:37 EcsPhase 'const ecs_entity_t':'const unsigned long' extern |-FunctionDecl 0x560468036060 col:14 ecs_init 'ecs_world_t *(void)' | `-FullComment 0x560468137320 | |-ParagraphComment 0x5604681371c0 | | |-TextComment 0x560468137120 Text=" Create a new world." | | |-TextComment 0x560468137140 Text=" A world manages all the ECS data and supporting infrastructure. Applications " | | |-TextComment 0x560468137160 Text=" must have at least one world. Entities, component and system handles are " | | `-TextComment 0x560468137180 Text=" local to a world and should not be shared between worlds." | |-ParagraphComment 0x560468137210 | | `-TextComment 0x5604681371e0 Text=" This operation creates a world with all builtin modules loaded. " | |-ParagraphComment 0x560468137260 | | `-TextComment 0x560468137230 Text=" " | `-BlockCommandComment 0x560468137280 Name="return" | `-ParagraphComment 0x5604681372e0 | `-TextComment 0x5604681372b0 Text=" A new world" |-FunctionDecl 0x5604680361c0 col:14 ecs_mini 'ecs_world_t *(void)' | `-FullComment 0x5604681374d0 | |-ParagraphComment 0x5604681373c0 | | `-TextComment 0x560468137390 Text=" Same as ecs_init, but with minimal set of modules loaded." | |-ParagraphComment 0x560468137410 | | `-TextComment 0x5604681373e0 Text=" " | `-BlockCommandComment 0x560468137430 Name="return" | `-ParagraphComment 0x560468137490 | `-TextComment 0x560468137460 Text=" A new tiny world" |-FunctionDecl 0x5604680364a8 line:4573:14 ecs_init_w_args 'ecs_world_t *(int, char **)' | |-ParmVarDecl 0x5604680362a0 col:9 argc 'int' | |-ParmVarDecl 0x560468036390 col:11 argv 'char **':'char **' | `-FullComment 0x5604681376f0 | |-ParagraphComment 0x5604681375e0 | | |-TextComment 0x560468137540 Text=" Create a new world with arguments." | | |-TextComment 0x560468137560 Text=" Same as ecs_init, but allows passing in command line arguments. These can be" | | |-TextComment 0x560468137580 Text=" used to dynamically enable flecs features to an application. Currently these" | | `-TextComment 0x5604681375a0 Text=" arguments are not used." | |-ParagraphComment 0x560468137630 | | `-TextComment 0x560468137600 Text=" " | `-BlockCommandComment 0x560468137650 Name="return" | `-ParagraphComment 0x5604681376b0 | `-TextComment 0x560468137680 Text=" A new world" |-FunctionDecl 0x560468036690 line:4584:5 ecs_fini 'int (ecs_world_t *)' | |-ParmVarDecl 0x560468036598 col:18 world 'ecs_world_t *' | `-FullComment 0x560468137990 | |-ParagraphComment 0x5604681377b0 | | |-TextComment 0x560468137760 Text=" Delete a world." | | `-TextComment 0x560468137780 Text=" This operation deletes the world, and everything it contains." | |-ParagraphComment 0x560468137800 | | `-TextComment 0x5604681377d0 Text=" " | |-ParamCommandComment 0x560468137820 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681378d0 | | |-TextComment 0x560468137880 Text=" The world to delete." | | `-TextComment 0x5604681378a0 Text=" " | `-BlockCommandComment 0x5604681378f0 Name="return" | `-ParagraphComment 0x560468137950 | `-TextComment 0x560468137920 Text=" Zero if successful, non-zero if failed." |-FunctionDecl 0x560468036868 line:4593:6 ecs_is_fini 'bool (const ecs_world_t *)' | |-ParmVarDecl 0x560468036778 col:24 world 'const ecs_world_t *' | `-FullComment 0x560468137c10 | |-ParagraphComment 0x560468137a30 | | `-TextComment 0x560468137a00 Text=" Returns whether the world is being deleted." | |-ParagraphComment 0x560468137a80 | | `-TextComment 0x560468137a50 Text=" " | |-ParamCommandComment 0x560468137aa0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468137b50 | | |-TextComment 0x560468137b00 Text=" The world." | | `-TextComment 0x560468137b20 Text=" " | `-BlockCommandComment 0x560468137b70 Name="return" | `-ParagraphComment 0x560468137bd0 | `-TextComment 0x560468137ba0 Text=" True if being deleted, false if not." |-FunctionDecl 0x560468036b88 line:4604:6 ecs_atfini 'void (ecs_world_t *, ecs_fini_action_t, void *)' | |-ParmVarDecl 0x560468036948 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680369e0 col:23 action 'ecs_fini_action_t':'void (*)(ecs_world_t *, void *)' | |-ParmVarDecl 0x560468036a60 col:11 ctx 'void *' | `-FullComment 0x560468137ff0 | |-ParagraphComment 0x560468137d00 | | |-TextComment 0x560468137c80 Text=" Register action to be executed when world is destroyed." | | |-TextComment 0x560468137ca0 Text=" Fini actions are typically used when a module needs to clean up before a" | | `-TextComment 0x560468137cc0 Text=" world shuts down." | |-ParagraphComment 0x560468137d50 | | `-TextComment 0x560468137d20 Text=" " | |-ParamCommandComment 0x560468137d70 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468137e20 | | |-TextComment 0x560468137dd0 Text=" The world." | | `-TextComment 0x560468137df0 Text=" " | |-ParamCommandComment 0x560468137e40 [in] implicitly Param="action" ParamIndex=1 | | `-ParagraphComment 0x560468137ef0 | | |-TextComment 0x560468137ea0 Text=" The function to execute." | | `-TextComment 0x560468137ec0 Text=" " | `-ParamCommandComment 0x560468137f10 [in] implicitly Param="ctx" ParamIndex=2 | `-ParagraphComment 0x560468137fa0 | `-TextComment 0x560468137f70 Text=" Userdata to pass to the function " |-FunctionDecl 0x560468036e70 line:4635:13 ecs_frame_begin 'float (ecs_world_t *, float)' | |-ParmVarDecl 0x560468036cd8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468036d58 col:17 delta_time 'float' | `-FullComment 0x560468138540 | |-ParagraphComment 0x560468138100 | | |-TextComment 0x560468138060 Text=" Begin frame. " | | |-TextComment 0x560468138080 Text=" When an application does not use ecs_progress to control the main loop, it" | | |-TextComment 0x5604681380a0 Text=" can still use Flecs features such as FPS limiting and time measurements. This" | | `-TextComment 0x5604681380c0 Text=" operation needs to be invoked whenever a new frame is about to get processed." | |-ParagraphComment 0x560468138150 | | `-TextComment 0x560468138120 Text=" Calls to ecs_frame_begin must always be followed by ecs_frame_end." | |-ParagraphComment 0x560468138220 | | |-TextComment 0x560468138170 Text=" The function accepts a delta_time parameter, which will get passed to " | | |-TextComment 0x560468138190 Text=" systems. This value is also used to compute the amount of time the function" | | |-TextComment 0x5604681381b0 Text=" needs to sleep to ensure it does not exceed the target_fps, when it is set." | | `-TextComment 0x5604681381d0 Text=" When 0 is provided for delta_time, the time will be measured." | |-ParagraphComment 0x560468138270 | | `-TextComment 0x560468138240 Text=" This function should only be ran from the main thread." | |-ParagraphComment 0x5604681382c0 | | `-TextComment 0x560468138290 Text=" " | |-ParamCommandComment 0x5604681382e0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468138390 | | |-TextComment 0x560468138340 Text=" The world." | | `-TextComment 0x560468138360 Text=" " | |-ParamCommandComment 0x5604681383b0 [in] implicitly Param="delta_time" ParamIndex=1 | | `-ParagraphComment 0x560468138460 | | |-TextComment 0x560468138410 Text=" Time elapsed since the last frame." | | `-TextComment 0x560468138430 Text=" " | `-BlockCommandComment 0x560468138480 Name="return" | `-ParagraphComment 0x5604681384e0 | `-TextComment 0x5604681384b0 Text=" The provided delta_time, or measured time if 0 was provided." |-FunctionDecl 0x5604680372b0 line:4646:6 ecs_frame_end 'void (ecs_world_t *)' | |-ParmVarDecl 0x560468036f58 col:18 world 'ecs_world_t *' | `-FullComment 0x560468138770 | |-ParagraphComment 0x560468138630 | | |-TextComment 0x5604681385b0 Text=" End frame. " | | |-TextComment 0x5604681385d0 Text=" This operation must be called at the end of the frame, and always after" | | `-TextComment 0x5604681385f0 Text=" ecs_frame_begin." | |-ParagraphComment 0x560468138680 | | `-TextComment 0x560468138650 Text=" " | `-ParamCommandComment 0x5604681386a0 [in] implicitly Param="world" ParamIndex=0 | `-ParagraphComment 0x560468138730 | `-TextComment 0x560468138700 Text=" The world." |-FunctionDecl 0x560468037530 line:4657:6 ecs_run_post_frame 'void (ecs_world_t *, ecs_fini_action_t, void *)' | |-ParmVarDecl 0x560468037398 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468037410 col:23 action 'ecs_fini_action_t':'void (*)(ecs_world_t *, void *)' | |-ParmVarDecl 0x560468037490 col:11 ctx 'void *' | `-FullComment 0x560468138b50 | |-ParagraphComment 0x560468138860 | | |-TextComment 0x5604681387e0 Text=" Register action to be executed once after frame." | | |-TextComment 0x560468138800 Text=" Post frame actions are typically used for calling operations that cannot be" | | `-TextComment 0x560468138820 Text=" invoked during iteration, such as changing the number of threads." | |-ParagraphComment 0x5604681388b0 | | `-TextComment 0x560468138880 Text=" " | |-ParamCommandComment 0x5604681388d0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468138980 | | |-TextComment 0x560468138930 Text=" The world." | | `-TextComment 0x560468138950 Text=" " | |-ParamCommandComment 0x5604681389a0 [in] implicitly Param="action" ParamIndex=1 | | `-ParagraphComment 0x560468138a50 | | |-TextComment 0x560468138a00 Text=" The function to execute." | | `-TextComment 0x560468138a20 Text=" " | `-ParamCommandComment 0x560468138a70 [in] implicitly Param="ctx" ParamIndex=2 | `-ParagraphComment 0x560468138b00 | `-TextComment 0x560468138ad0 Text=" Userdata to pass to the function " |-FunctionDecl 0x5604680376b8 line:4669:6 ecs_quit 'void (ecs_world_t *)' | |-ParmVarDecl 0x560468037628 col:18 world 'ecs_world_t *' | `-FullComment 0x560468138d80 | |-ParagraphComment 0x560468138c40 | | |-TextComment 0x560468138bc0 Text=" Signal exit" | | |-TextComment 0x560468138be0 Text=" This operation signals that the application should quit. It will cause" | | `-TextComment 0x560468138c00 Text=" ecs_progress to return false." | |-ParagraphComment 0x560468138c90 | | `-TextComment 0x560468138c60 Text=" " | `-ParamCommandComment 0x560468138cb0 [in] implicitly Param="world" ParamIndex=0 | `-ParagraphComment 0x560468138d40 | `-TextComment 0x560468138d10 Text=" The world to quit." |-FunctionDecl 0x560468037828 line:4677:6 ecs_should_quit 'bool (const ecs_world_t *)' | |-ParmVarDecl 0x560468037798 col:24 world 'const ecs_world_t *' | `-FullComment 0x560468138f60 | |-ParagraphComment 0x560468138e20 | | `-TextComment 0x560468138df0 Text=" Return whether a quit has been signaled." | |-ParagraphComment 0x560468138e70 | | `-TextComment 0x560468138e40 Text=" " | `-ParamCommandComment 0x560468138e90 [in] implicitly Param="world" ParamIndex=0 | `-ParagraphComment 0x560468138f20 | `-TextComment 0x560468138ef0 Text=" The world." |-FunctionDecl 0x560468037a98 line:4691:16 ecs_measure_frame_time 'void (ecs_world_t *, bool)' | |-ParmVarDecl 0x560468037908 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468037980 col:10 enable 'bool' | `-FullComment 0x560468139310 | |-ParagraphComment 0x560468139050 | | |-TextComment 0x560468138fd0 Text=" Measure frame time. " | | |-TextComment 0x560468138ff0 Text=" Frame time measurements measure the total time passed in a single frame, and " | | `-TextComment 0x560468139010 Text=" how much of that time was spent on systems and on merging." | |-ParagraphComment 0x5604681390f0 | | |-TextComment 0x560468139070 Text=" Frame time measurements add a small constant-time overhead to an application." | | |-TextComment 0x560468139090 Text=" When an application sets a target FPS, frame time measurements are enabled by" | | `-TextComment 0x5604681390b0 Text=" default." | |-ParagraphComment 0x560468139140 | | `-TextComment 0x560468139110 Text=" " | |-ParamCommandComment 0x560468139160 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468139210 | | |-TextComment 0x5604681391c0 Text=" The world." | | `-TextComment 0x5604681391e0 Text=" " | `-ParamCommandComment 0x560468139230 [in] implicitly Param="enable" ParamIndex=1 | `-ParagraphComment 0x5604681392c0 | `-TextComment 0x560468139290 Text=" Whether to enable or disable frame time measuring." |-FunctionDecl 0x560468037c98 line:4705:16 ecs_measure_system_time 'void (ecs_world_t *, bool)' | |-ParmVarDecl 0x560468037b88 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468037c00 col:10 enable 'bool' | `-FullComment 0x560468139690 | |-ParagraphComment 0x5604681393d0 | | |-TextComment 0x560468139380 Text=" Measure system time. " | | `-TextComment 0x5604681393a0 Text=" System time measurements measure the time spent in each system." | |-ParagraphComment 0x560468139470 | | |-TextComment 0x5604681393f0 Text=" System time measurements add overhead to every system invocation and " | | |-TextComment 0x560468139410 Text=" therefore have a small but measurable impact on application performance." | | `-TextComment 0x560468139430 Text=" System time measurements must be enabled before obtaining system statistics." | |-ParagraphComment 0x5604681394c0 | | `-TextComment 0x560468139490 Text=" " | |-ParamCommandComment 0x5604681394e0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468139590 | | |-TextComment 0x560468139540 Text=" The world." | | `-TextComment 0x560468139560 Text=" " | `-ParamCommandComment 0x5604681395b0 [in] implicitly Param="enable" ParamIndex=1 | `-ParagraphComment 0x560468139640 | `-TextComment 0x560468139610 Text=" Whether to enable or disable system time measuring." |-FunctionDecl 0x560468037f18 line:4725:6 ecs_set_target_fps 'void (ecs_world_t *, float)' | |-ParmVarDecl 0x560468037d88 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468037e08 col:17 fps 'float' | `-FullComment 0x560468139ad0 | |-ParagraphComment 0x5604681397a0 | | |-TextComment 0x560468139700 Text=" Set target frames per second (FPS) for application." | | |-TextComment 0x560468139720 Text=" Setting the target FPS ensures that ecs_progress is not invoked faster than" | | |-TextComment 0x560468139740 Text=" the specified FPS. When enabled, ecs_progress tracks the time passed since" | | `-TextComment 0x560468139760 Text=" the last invocation, and sleeps the remaining time of the frame (if any)." | |-ParagraphComment 0x560468139810 | | |-TextComment 0x5604681397c0 Text=" This feature ensures systems are ran at a consistent interval, as well as" | | `-TextComment 0x5604681397e0 Text=" conserving CPU time by not running systems more often than required." | |-ParagraphComment 0x5604681398b0 | | |-TextComment 0x560468139830 Text=" Note that ecs_progress only sleeps if there is time left in the frame. Both" | | |-TextComment 0x560468139850 Text=" time spent in flecs as time spent outside of flecs are taken into" | | `-TextComment 0x560468139870 Text=" account." | |-ParagraphComment 0x560468139900 | | `-TextComment 0x5604681398d0 Text=" " | |-ParamCommandComment 0x560468139920 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681399d0 | | |-TextComment 0x560468139980 Text=" The world." | | `-TextComment 0x5604681399a0 Text=" " | `-ParamCommandComment 0x5604681399f0 [in] implicitly Param="fps" ParamIndex=1 | `-ParagraphComment 0x560468139a80 | `-TextComment 0x560468139a50 Text=" The target FPS." |-FunctionDecl 0x560468038158 line:4766:6 ecs_readonly_begin 'bool (ecs_world_t *)' | |-ParmVarDecl 0x560468038068 col:18 world 'ecs_world_t *' | `-FullComment 0x56046813a120 | |-ParagraphComment 0x560468139be0 | | |-TextComment 0x560468139b40 Text=" Begin readonly mode." | | |-TextComment 0x560468139b60 Text=" Readonly mode guarantees that no mutations will occur on the world, which" | | |-TextComment 0x560468139b80 Text=" makes the world safe to access from multiple threads. While the world is in" | | `-TextComment 0x560468139ba0 Text=" readonly mode, operations are deferred." | |-ParagraphComment 0x560468139ca0 | | |-TextComment 0x560468139c00 Text=" Note that while similar to ecs_defer_begin, deferring only does not guarantee" | | |-TextComment 0x560468139c20 Text=" the world is not mutated. Operations that are not deferred (like creating a" | | |-TextComment 0x560468139c40 Text=" query) update data structures on the world and are allowed when deferring is" | | `-TextComment 0x560468139c60 Text=" enabled, but not when the world is in readonly mode." | |-ParagraphComment 0x560468139cf0 | | `-TextComment 0x560468139cc0 Text=" A call to ecs_readonly_begin must be followed up with ecs_readonly_end." | |-ParagraphComment 0x560468139d60 | | |-TextComment 0x560468139d10 Text=" The ecs_progress() function automatically enables readonly mode while systems" | | `-TextComment 0x560468139d30 Text=" are executed." | |-ParagraphComment 0x560468139e00 | | |-TextComment 0x560468139d80 Text=" When a world has more than one stage, the specific stage must be provided to" | | |-TextComment 0x560468139da0 Text=" mutating ECS operations. Failing to do so will throw a readonly assert. A" | | `-TextComment 0x560468139dc0 Text=" world typically has more than one stage when using threads. An example:" | |-ParagraphComment 0x560468139e70 | | |-TextComment 0x560468139e20 Text=" ecs_set_stage_count(world, 2);" | | `-TextComment 0x560468139e40 Text=" ecs_stage_t *stage = ecs_get_stage(world, 1);" | |-ParagraphComment 0x560468139f10 | | |-TextComment 0x560468139e90 Text=" ecs_readonly_begin(world);" | | |-TextComment 0x560468139eb0 Text=" ecs_add(world, e, Tag); // readonly assert" | | `-TextComment 0x560468139ed0 Text=" ecs_add(stage, e, Tag); // OK" | |-ParagraphComment 0x560468139f60 | | `-TextComment 0x560468139f30 Text=" " | |-ParamCommandComment 0x560468139f80 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813a030 | | |-TextComment 0x560468139fe0 Text=" The world" | | `-TextComment 0x56046813a000 Text=" " | `-BlockCommandComment 0x56046813a050 Name="return" | `-ParagraphComment 0x56046813a0b0 | `-TextComment 0x56046813a080 Text=" Whether world is in readonly mode." |-FunctionDecl 0x560468038568 line:4777:6 ecs_readonly_end 'void (ecs_world_t *)' | |-ParmVarDecl 0x560468038238 col:18 world 'ecs_world_t *' | `-FullComment 0x56046813a390 | |-ParagraphComment 0x56046813a250 | | |-TextComment 0x56046813a190 Text=" End readonly mode." | | |-TextComment 0x56046813a1b0 Text=" This operation ends readonly mode, and must be called after " | | |-TextComment 0x56046813a1d0 Text=" ecs_readonly_begin. Operations that were deferred while the world was in" | | `-TextComment 0x56046813a210 Text=" readonly mode will be flushed." | |-ParagraphComment 0x56046813a2a0 | | `-TextComment 0x56046813a270 Text=" " | `-ParamCommandComment 0x56046813a2c0 [in] implicitly Param="world" ParamIndex=0 | `-ParagraphComment 0x56046813a350 | `-TextComment 0x56046813a320 Text=" The world" |-FunctionDecl 0x5604680386d8 line:4791:6 ecs_merge 'void (ecs_world_t *)' | |-ParmVarDecl 0x560468038648 col:18 world 'ecs_world_t *' | `-FullComment 0x56046813a660 | |-ParagraphComment 0x56046813a4d0 | | |-TextComment 0x56046813a400 Text=" Merge world or stage." | | |-TextComment 0x56046813a420 Text=" When automatic merging is disabled, an application can call this" | | |-TextComment 0x56046813a440 Text=" operation on either an individual stage, or on the world which will merge" | | |-TextComment 0x56046813a460 Text=" all stages. This operation may only be called when staging is not enabled" | | `-TextComment 0x56046813a480 Text=" (either after progress() or after readonly_end())." | |-ParagraphComment 0x56046813a520 | | `-TextComment 0x56046813a4f0 Text=" This operation may be called on an already merged stage or world." | |-ParagraphComment 0x56046813a570 | | `-TextComment 0x56046813a540 Text=" " | `-ParamCommandComment 0x56046813a590 [in] implicitly Param="world" ParamIndex=0 | `-ParagraphComment 0x56046813a620 | `-TextComment 0x56046813a5f0 Text=" The world." |-FunctionDecl 0x560468038848 line:4804:6 ecs_defer_begin 'bool (ecs_world_t *)' | |-ParmVarDecl 0x5604680387b8 col:18 world 'ecs_world_t *' | `-FullComment 0x56046813a990 | |-ParagraphComment 0x56046813a750 | | |-TextComment 0x56046813a6d0 Text=" Defer operations until end of frame. " | | |-TextComment 0x56046813a6f0 Text=" When this operation is invoked while iterating, operations inbetween the" | | `-TextComment 0x56046813a710 Text=" defer_begin and defer_end operations are executed at the end of the frame." | |-ParagraphComment 0x56046813a7a0 | | `-TextComment 0x56046813a770 Text=" This operation is thread safe." | |-ParagraphComment 0x56046813a7f0 | | `-TextComment 0x56046813a7c0 Text=" " | |-ParamCommandComment 0x56046813a810 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813a8c0 | | |-TextComment 0x56046813a870 Text=" The world." | | `-TextComment 0x56046813a890 Text=" " | `-BlockCommandComment 0x56046813a8e0 Name="return" | `-ParagraphComment 0x56046813a940 | `-TextComment 0x56046813a910 Text=" true if world changed from non-deferred mode to deferred mode." |-FunctionDecl 0x5604680389b8 line:4813:6 ecs_is_deferred 'bool (const ecs_world_t *)' | |-ParmVarDecl 0x560468038928 col:24 world 'const ecs_world_t *' | `-FullComment 0x56046813ac10 | |-ParagraphComment 0x56046813aa30 | | `-TextComment 0x56046813aa00 Text=" Test if deferring is enabled for current stage." | |-ParagraphComment 0x56046813aa80 | | `-TextComment 0x56046813aa50 Text=" " | |-ParamCommandComment 0x56046813aaa0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813ab50 | | |-TextComment 0x56046813ab00 Text=" The world." | | `-TextComment 0x56046813ab20 Text=" " | `-BlockCommandComment 0x56046813ab70 Name="return" | `-ParagraphComment 0x56046813abd0 | `-TextComment 0x56046813aba0 Text=" True if deferred, false if not." |-FunctionDecl 0x560468038b28 line:4825:6 ecs_defer_end 'bool (ecs_world_t *)' | |-ParmVarDecl 0x560468038a98 col:18 world 'ecs_world_t *' | `-FullComment 0x56046813af10 | |-ParagraphComment 0x56046813acd0 | | |-TextComment 0x56046813ac80 Text=" End block of operations to defer. " | | `-TextComment 0x56046813aca0 Text=" See defer_begin." | |-ParagraphComment 0x56046813ad20 | | `-TextComment 0x56046813acf0 Text=" This operation is thread safe." | |-ParagraphComment 0x56046813ad70 | | `-TextComment 0x56046813ad40 Text=" " | |-ParamCommandComment 0x56046813ad90 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813ae40 | | |-TextComment 0x56046813adf0 Text=" The world." | | `-TextComment 0x56046813ae10 Text=" " | `-BlockCommandComment 0x56046813ae60 Name="return" | `-ParagraphComment 0x56046813aec0 | `-TextComment 0x56046813ae90 Text=" true if world changed from deferred mode to non-deferred mode." |-FunctionDecl 0x560468038c98 line:4838:6 ecs_defer_suspend 'void (ecs_world_t *)' | |-ParmVarDecl 0x560468038c08 col:18 world 'ecs_world_t *' | `-FullComment 0x56046813b1b0 | |-ParagraphComment 0x56046813b000 | | |-TextComment 0x56046813af80 Text=" Suspend deferring but do not flush queue." | | |-TextComment 0x56046813afa0 Text=" This operation can be used to do an undeferred operation while not flushing" | | `-TextComment 0x56046813afc0 Text=" the operations in the queue." | |-ParagraphComment 0x56046813b070 | | |-TextComment 0x56046813b020 Text=" An application should invoke ecs_defer_resume before ecs_defer_end is called." | | `-TextComment 0x56046813b040 Text=" The operation may only be called when deferring is enabled." | |-ParagraphComment 0x56046813b0c0 | | `-TextComment 0x56046813b090 Text=" " | `-ParamCommandComment 0x56046813b0e0 [in] implicitly Param="world" ParamIndex=0 | `-ParagraphComment 0x56046813b170 | `-TextComment 0x56046813b140 Text=" The world." |-FunctionDecl 0x560468038e08 line:4847:6 ecs_defer_resume 'void (ecs_world_t *)' | |-ParmVarDecl 0x560468038d78 col:18 world 'ecs_world_t *' | `-FullComment 0x56046813b3b0 | |-ParagraphComment 0x56046813b270 | | |-TextComment 0x56046813b220 Text=" Resume deferring." | | `-TextComment 0x56046813b240 Text=" See ecs_defer_suspend." | |-ParagraphComment 0x56046813b2c0 | | `-TextComment 0x56046813b290 Text=" " | `-ParamCommandComment 0x56046813b2e0 [in] implicitly Param="world" ParamIndex=0 | `-ParagraphComment 0x56046813b370 | `-TextComment 0x56046813b340 Text=" The world." |-FunctionDecl 0x560468038ff8 line:4867:6 ecs_set_automerge 'void (ecs_world_t *, bool)' | |-ParmVarDecl 0x560468038ee8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468038f60 col:10 automerge 'bool' | `-FullComment 0x56046813b820 | |-ParagraphComment 0x56046813b4c0 | | |-TextComment 0x56046813b420 Text=" Enable/disable automerging for world or stage." | | |-TextComment 0x56046813b440 Text=" When automerging is enabled, staged data will automatically be merged with" | | |-TextComment 0x56046813b460 Text=" the world when staging ends. This happens at the end of progress(), at a" | | `-TextComment 0x56046813b480 Text=" sync point or when readonly_end() is called." | |-ParagraphComment 0x56046813b560 | | |-TextComment 0x56046813b4e0 Text=" Applications can exercise more control over when data from a stage is merged" | | |-TextComment 0x56046813b500 Text=" by disabling automerging. This requires an application to explicitly call" | | `-TextComment 0x56046813b520 Text=" merge() on the stage." | |-ParagraphComment 0x56046813b600 | | |-TextComment 0x56046813b580 Text=" When this function is invoked on the world, it sets all current stages to" | | |-TextComment 0x56046813b5a0 Text=" the provided value and sets the default for new stages. When this function is" | | `-TextComment 0x56046813b5c0 Text=" invoked on a stage, automerging is only set for that specific stage." | |-ParagraphComment 0x56046813b650 | | `-TextComment 0x56046813b620 Text=" " | |-ParamCommandComment 0x56046813b670 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813b720 | | |-TextComment 0x56046813b6d0 Text=" The world." | | `-TextComment 0x56046813b6f0 Text=" " | `-ParamCommandComment 0x56046813b740 [in] implicitly Param="automerge" ParamIndex=1 | `-ParagraphComment 0x56046813b7d0 | `-TextComment 0x56046813b7a0 Text=" Whether to enable or disable automerging." |-FunctionDecl 0x560468039278 line:4885:6 ecs_set_stage_count 'void (ecs_world_t *, int32_t)' | |-ParmVarDecl 0x5604680390e8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468039160 col:13 stages 'int32_t':'int' | `-FullComment 0x56046813bc20 | |-ParagraphComment 0x56046813b960 | | |-TextComment 0x56046813b890 Text=" Configure world to have N stages." | | |-TextComment 0x56046813b8b0 Text=" This initializes N stages, which allows applications to defer operations to" | | |-TextComment 0x56046813b8d0 Text=" multiple isolated defer queues. This is typically used for applications with" | | |-TextComment 0x56046813b8f0 Text=" multiple threads, where each thread gets its own queue, and commands are" | | `-TextComment 0x56046813b910 Text=" merged when threads are synchronized." | |-ParagraphComment 0x56046813ba00 | | |-TextComment 0x56046813b980 Text=" Note that the ecs_set_threads function already creates the appropriate" | | |-TextComment 0x56046813b9a0 Text=" number of stages. The set_stage_count() operation is useful for applications that" | | `-TextComment 0x56046813b9c0 Text=" want to manage their own stages and/or threads." | |-ParagraphComment 0x56046813ba50 | | `-TextComment 0x56046813ba20 Text=" " | |-ParamCommandComment 0x56046813ba70 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813bb20 | | |-TextComment 0x56046813bad0 Text=" The world." | | `-TextComment 0x56046813baf0 Text=" " | `-ParamCommandComment 0x56046813bb40 [in] implicitly Param="stages" ParamIndex=1 | `-ParagraphComment 0x56046813bbd0 | `-TextComment 0x56046813bba0 Text=" The number of stages." |-FunctionDecl 0x560468039458 line:4896:9 ecs_get_stage_count 'int32_t (const ecs_world_t *)' | |-ParmVarDecl 0x560468039368 col:24 world 'const ecs_world_t *' | `-FullComment 0x56046813bec0 | |-ParagraphComment 0x56046813bce0 | | |-TextComment 0x56046813bc90 Text=" Get number of configured stages." | | `-TextComment 0x56046813bcb0 Text=" Return number of stages set by ecs_set_stage_count." | |-ParagraphComment 0x56046813bd30 | | `-TextComment 0x56046813bd00 Text=" " | |-ParamCommandComment 0x56046813bd50 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813be00 | | |-TextComment 0x56046813bdb0 Text=" The world." | | `-TextComment 0x56046813bdd0 Text=" " | `-BlockCommandComment 0x56046813be20 Name="return" | `-ParagraphComment 0x56046813be80 | `-TextComment 0x56046813be50 Text=" The number of stages used for threading." |-FunctionDecl 0x560468039860 line:4907:9 ecs_get_stage_id 'int32_t (const ecs_world_t *)' | |-ParmVarDecl 0x5604680397d0 col:24 world 'const ecs_world_t *' | `-FullComment 0x56046813c190 | |-ParagraphComment 0x56046813bfb0 | | |-TextComment 0x56046813bf30 Text=" Get current stage id." | | |-TextComment 0x56046813bf50 Text=" The stage id can be used by an application to learn about which stage it is" | | `-TextComment 0x56046813bf70 Text=" using, which typically corresponds with the worker thread id." | |-ParagraphComment 0x56046813c000 | | `-TextComment 0x56046813bfd0 Text=" " | |-ParamCommandComment 0x56046813c020 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813c0d0 | | |-TextComment 0x56046813c080 Text=" The world." | | `-TextComment 0x56046813c0a0 Text=" " | `-BlockCommandComment 0x56046813c0f0 Name="return" | `-ParagraphComment 0x56046813c150 | `-TextComment 0x56046813c120 Text=" The stage id." |-FunctionDecl 0x560468039ad8 line:4926:14 ecs_get_stage 'ecs_world_t *(const ecs_world_t *, int32_t)' | |-ParmVarDecl 0x560468039948 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680399c0 col:13 stage_id 'int32_t':'int' | `-FullComment 0x56046813c670 | |-ParagraphComment 0x56046813c2c0 | | |-TextComment 0x56046813c220 Text=" Get stage-specific world pointer." | | |-TextComment 0x56046813c240 Text=" Flecs threads can safely invoke the API as long as they have a private " | | |-TextComment 0x56046813c260 Text=" context to write to, also referred to as the stage. This function returns a" | | `-TextComment 0x56046813c280 Text=" pointer to a stage, disguised as a world pointer." | |-ParagraphComment 0x56046813c3b0 | | |-TextComment 0x56046813c2e0 Text=" Note that this function does not(!) create a new world. It simply wraps the" | | |-TextComment 0x56046813c300 Text=" existing world in a thread-specific context, which the API knows how to" | | |-TextComment 0x56046813c320 Text=" unwrap. The reason the stage is returned as an ecs_world_t is so that it" | | |-TextComment 0x56046813c340 Text=" can be passed transparently to the existing API functions, vs. having to " | | `-TextComment 0x56046813c360 Text=" create a dediated API for threading." | |-ParagraphComment 0x56046813c400 | | `-TextComment 0x56046813c3d0 Text=" " | |-ParamCommandComment 0x56046813c420 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813c4d0 | | |-TextComment 0x56046813c480 Text=" The world." | | `-TextComment 0x56046813c4a0 Text=" " | |-ParamCommandComment 0x56046813c4f0 [in] implicitly Param="stage_id" ParamIndex=1 | | `-ParagraphComment 0x56046813c5a0 | | |-TextComment 0x56046813c550 Text=" The index of the stage to retrieve." | | `-TextComment 0x56046813c570 Text=" " | `-BlockCommandComment 0x56046813c5c0 Name="return" | `-ParagraphComment 0x56046813c620 | `-TextComment 0x56046813c5f0 Text=" A thread-specific pointer to the world. " |-FunctionDecl 0x560468039c58 line:4938:6 ecs_stage_is_readonly 'bool (const ecs_world_t *)' | |-ParmVarDecl 0x560468039bc8 col:24 world 'const ecs_world_t *' | `-FullComment 0x56046813c940 | |-ParagraphComment 0x56046813c760 | | |-TextComment 0x56046813c6e0 Text=" Test whether the current world is readonly." | | |-TextComment 0x56046813c700 Text=" This function allows the code to test whether the currently used world" | | `-TextComment 0x56046813c720 Text=" is readonly or whether it allows for writing. " | |-ParagraphComment 0x56046813c7b0 | | `-TextComment 0x56046813c780 Text=" " | |-ParamCommandComment 0x56046813c7d0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813c880 | | |-TextComment 0x56046813c830 Text=" A pointer to a stage or the world." | | `-TextComment 0x56046813c850 Text=" " | `-BlockCommandComment 0x56046813c8a0 Name="return" | `-ParagraphComment 0x56046813c900 | `-TextComment 0x56046813c8d0 Text=" True if the world or stage is readonly." |-FunctionDecl 0x560468039e28 line:4960:14 ecs_async_stage_new 'ecs_world_t *(ecs_world_t *)' | |-ParmVarDecl 0x560468039d38 col:18 world 'ecs_world_t *' | `-FullComment 0x56046813cdd0 | |-ParagraphComment 0x56046813ca50 | | |-TextComment 0x56046813c9b0 Text=" Create asynchronous stage." | | |-TextComment 0x56046813c9d0 Text=" An asynchronous stage can be used to asynchronously queue operations for" | | |-TextComment 0x56046813c9f0 Text=" later merging with the world. An asynchronous stage is similar to a regular" | | `-TextComment 0x56046813ca10 Text=" stage, except that it does not allow reading from the world." | |-ParagraphComment 0x56046813cb10 | | |-TextComment 0x56046813ca70 Text=" Asynchronous stages are never merged automatically, and must therefore be" | | |-TextComment 0x56046813ca90 Text=" manually merged with the ecs_merge function. It is not necessary to call" | | |-TextComment 0x56046813cab0 Text=" defer_begin or defer_end before and after enqueuing commands, as an " | | `-TextComment 0x56046813cad0 Text=" asynchronous stage unconditionally defers operations." | |-ParagraphComment 0x56046813cb80 | | |-TextComment 0x56046813cb30 Text=" The application must ensure that no commands are added to the stage while the" | | `-TextComment 0x56046813cb50 Text=" stage is being merged." | |-ParagraphComment 0x56046813cbd0 | | `-TextComment 0x56046813cba0 Text=" An asynchronous stage must be cleaned up by ecs_async_stage_free. " | |-ParagraphComment 0x56046813cc20 | | `-TextComment 0x56046813cbf0 Text=" " | |-ParamCommandComment 0x56046813cc40 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813ccf0 | | |-TextComment 0x56046813cca0 Text=" The world." | | `-TextComment 0x56046813ccc0 Text=" " | `-BlockCommandComment 0x56046813cd10 Name="return" | `-ParagraphComment 0x56046813cd70 | `-TextComment 0x56046813cd40 Text=" The stage." |-FunctionDecl 0x560468039f98 line:4970:6 ecs_async_stage_free 'void (ecs_world_t *)' | |-ParmVarDecl 0x560468039f08 col:18 stage 'ecs_world_t *' | `-FullComment 0x56046813d000 | |-ParagraphComment 0x56046813cec0 | | |-TextComment 0x56046813ce40 Text=" Free asynchronous stage." | | |-TextComment 0x56046813ce60 Text=" The provided stage must be an asynchronous stage. If a non-asynchronous stage" | | `-TextComment 0x56046813ce80 Text=" is provided, the operation will fail." | |-ParagraphComment 0x56046813cf10 | | `-TextComment 0x56046813cee0 Text=" " | `-ParamCommandComment 0x56046813cf30 [in] implicitly Param="stage" ParamIndex=0 | `-ParagraphComment 0x56046813cfc0 | `-TextComment 0x56046813cf90 Text=" The stage to free." |-FunctionDecl 0x56046803a108 line:4980:6 ecs_stage_is_async 'bool (ecs_world_t *)' | |-ParmVarDecl 0x56046803a078 col:18 stage 'ecs_world_t *' | `-FullComment 0x56046813d2a0 | |-ParagraphComment 0x56046813d0a0 | | `-TextComment 0x56046813d070 Text=" Test whether provided stage is asynchronous." | |-ParagraphComment 0x56046813d0f0 | | `-TextComment 0x56046813d0c0 Text=" " | |-ParamCommandComment 0x56046813d110 [in] implicitly Param="stage" ParamIndex=0 | | `-ParagraphComment 0x56046813d1c0 | | |-TextComment 0x56046813d170 Text=" The stage." | | `-TextComment 0x56046813d190 Text=" " | `-BlockCommandComment 0x56046813d1e0 Name="return" | `-ParagraphComment 0x56046813d260 | |-TextComment 0x56046813d210 Text=" True when the stage is asynchronous, false for a regular stage or " | `-TextComment 0x56046813d230 Text=" world." |-FunctionDecl 0x56046803a360 line:4998:6 ecs_set_context 'void (ecs_world_t *, void *)' | |-ParmVarDecl 0x56046803a248 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803a2c8 col:11 ctx 'void *' | `-FullComment 0x56046813d5a0 | |-ParagraphComment 0x56046813d390 | | |-TextComment 0x56046813d310 Text=" Set a world context." | | |-TextComment 0x56046813d330 Text=" This operation allows an application to register custom data with a world" | | `-TextComment 0x56046813d350 Text=" that can be accessed anywhere where the application has the world." | |-ParagraphComment 0x56046813d3e0 | | `-TextComment 0x56046813d3b0 Text=" " | |-ParamCommandComment 0x56046813d400 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813d4b0 | | |-TextComment 0x56046813d460 Text=" The world." | | `-TextComment 0x56046813d480 Text=" " | `-ParamCommandComment 0x56046813d4d0 [in] implicitly Param="ctx" ParamIndex=1 | `-ParagraphComment 0x56046813d560 | `-TextComment 0x56046813d530 Text=" A pointer to a user defined structure." |-FunctionDecl 0x56046803a540 line:5010:7 ecs_get_context 'void *(const ecs_world_t *)' | |-ParmVarDecl 0x56046803a448 col:24 world 'const ecs_world_t *' | `-FullComment 0x56046813d860 | |-ParagraphComment 0x56046813d660 | | |-TextComment 0x56046813d610 Text=" Get the world context." | | `-TextComment 0x56046813d630 Text=" This operation retrieves a previously set world context." | |-ParagraphComment 0x56046813d6b0 | | `-TextComment 0x56046813d680 Text=" " | |-ParamCommandComment 0x56046813d6d0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813d780 | | |-TextComment 0x56046813d730 Text=" The world." | | `-TextComment 0x56046813d750 Text=" " | `-BlockCommandComment 0x56046813d7a0 Name="return" | `-ParagraphComment 0x56046813d820 | |-TextComment 0x56046813d7d0 Text=" The context set with ecs_set_context. If no context was set, the" | `-TextComment 0x56046813d7f0 Text=" function returns NULL." |-FunctionDecl 0x56046803aa60 line:5020:25 ecs_get_world_info 'const ecs_world_info_t *(const ecs_world_t *)' | |-ParmVarDecl 0x56046803a650 col:24 world 'const ecs_world_t *' | `-FullComment 0x56046813db00 | |-ParagraphComment 0x56046813d900 | | `-TextComment 0x56046813d8d0 Text=" Get world info." | |-ParagraphComment 0x56046813d950 | | `-TextComment 0x56046813d920 Text=" " | |-ParamCommandComment 0x56046813d970 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813da20 | | |-TextComment 0x56046813d9d0 Text=" The world." | | `-TextComment 0x56046813d9f0 Text=" " | `-BlockCommandComment 0x56046813da40 Name="return" | `-ParagraphComment 0x56046813dac0 | |-TextComment 0x56046813da70 Text=" Pointer to the world info. This pointer will remain valid for as long" | `-TextComment 0x56046813da90 Text=" as the world is valid." |-FunctionDecl 0x56046803ac58 line:5032:6 ecs_dim 'void (ecs_world_t *, int32_t)' | |-ParmVarDecl 0x56046803ab48 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803abc0 col:13 entity_count 'int32_t':'int' | `-FullComment 0x56046813de20 | |-ParagraphComment 0x56046813dc10 | | |-TextComment 0x56046813db70 Text=" Dimension the world for a specified number of entities." | | |-TextComment 0x56046813db90 Text=" This operation will preallocate memory in the world for the specified number" | | |-TextComment 0x56046813dbb0 Text=" of entities. Specifying a number lower than the current number of entities in" | | `-TextComment 0x56046813dbd0 Text=" the world will have no effect." | |-ParagraphComment 0x56046813dc60 | | `-TextComment 0x56046813dc30 Text=" " | |-ParamCommandComment 0x56046813dc80 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813dd30 | | |-TextComment 0x56046813dce0 Text=" The world." | | `-TextComment 0x56046813dd00 Text=" " | `-ParamCommandComment 0x56046813dd50 [in] implicitly Param="entity_count" ParamIndex=1 | `-ParagraphComment 0x56046813dde0 | `-TextComment 0x56046813ddb0 Text=" The number of entities to preallocate." |-FunctionDecl 0x56046803af58 line:5052:6 ecs_set_entity_range 'void (ecs_world_t *, ecs_entity_t, ecs_entity_t)' | |-ParmVarDecl 0x56046803ad48 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803adc0 col:18 id_start 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x56046803ae38 col:18 id_end 'ecs_entity_t':'unsigned long' | `-FullComment 0x56046813e330 | |-ParagraphComment 0x56046813df60 | | |-TextComment 0x56046813de90 Text=" Set a range for issueing new entity ids." | | |-TextComment 0x56046813deb0 Text=" This function constrains the entity identifiers returned by ecs_new to the " | | |-TextComment 0x56046813ded0 Text=" specified range. This operation can be used to ensure that multiple processes" | | |-TextComment 0x56046813def0 Text=" can run in the same simulation without requiring a central service that" | | `-TextComment 0x56046813df10 Text=" coordinates issueing identifiers." | |-ParagraphComment 0x56046813e020 | | |-TextComment 0x56046813df80 Text=" If id_end is set to 0, the range is infinite. If id_end is set to a non-zero" | | |-TextComment 0x56046813dfa0 Text=" value, it has to be larger than id_start. If id_end is set and ecs_new is" | | |-TextComment 0x56046813dfc0 Text=" invoked after an id is issued that is equal to id_end, the application will" | | `-TextComment 0x56046813dfe0 Text=" abort." | |-ParagraphComment 0x56046813e070 | | `-TextComment 0x56046813e040 Text=" " | |-ParamCommandComment 0x56046813e090 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813e140 | | |-TextComment 0x56046813e0f0 Text=" The world." | | `-TextComment 0x56046813e110 Text=" " | |-ParamCommandComment 0x56046813e160 [in] implicitly Param="id_start" ParamIndex=1 | | `-ParagraphComment 0x56046813e230 | | |-TextComment 0x56046813e1c0 Text=" The start of the range." | | `-TextComment 0x56046813e1e0 Text=" " | `-ParamCommandComment 0x56046813e250 [in] implicitly Param="id_end" ParamIndex=2 | `-ParagraphComment 0x56046813e2e0 | `-TextComment 0x56046813e2b0 Text=" The end of the range." |-FunctionDecl 0x56046803b1d8 line:5068:6 ecs_enable_range_check 'bool (ecs_world_t *, bool)' | |-ParmVarDecl 0x56046803b048 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803b0c0 col:10 enable 'bool' | `-FullComment 0x56046813e730 | |-ParagraphComment 0x56046813e470 | | |-TextComment 0x56046813e3a0 Text=" Enable/disable range limits." | | |-TextComment 0x56046813e3c0 Text=" When an application is both a receiver of range-limited entities and a" | | |-TextComment 0x56046813e3e0 Text=" producer of range-limited entities, range checking needs to be temporarily" | | |-TextComment 0x56046813e400 Text=" disabled when inserting received entities. Range checking is disabled on a " | | `-TextComment 0x56046813e420 Text=" stage, so setting this value is thread safe." | |-ParagraphComment 0x56046813e4c0 | | `-TextComment 0x56046813e490 Text=" " | |-ParamCommandComment 0x56046813e4e0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813e590 | | |-TextComment 0x56046813e540 Text=" The world." | | `-TextComment 0x56046813e560 Text=" " | |-ParamCommandComment 0x56046813e5b0 [in] implicitly Param="enable" ParamIndex=1 | | `-ParagraphComment 0x56046813e660 | | |-TextComment 0x56046813e610 Text=" True if range checking should be enabled, false to disable." | | `-TextComment 0x56046813e630 Text=" " | `-BlockCommandComment 0x56046813e680 Name="return" | `-ParagraphComment 0x56046813e6e0 | `-TextComment 0x56046813e6b0 Text=" The previous value." |-FunctionDecl 0x56046803b458 line:5086:6 ecs_run_aperiodic 'void (ecs_world_t *, ecs_flags32_t)' | |-ParmVarDecl 0x56046803b2c8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803b340 col:19 flags 'ecs_flags32_t':'unsigned int' | `-FullComment 0x56046813eb30 | |-ParagraphComment 0x56046813e870 | | |-TextComment 0x56046813e7a0 Text=" Force aperiodic actions." | | |-TextComment 0x56046813e7c0 Text=" The world may delay certain operations until they are necessary for the" | | |-TextComment 0x56046813e7e0 Text=" application to function correctly. This may cause observable side effects" | | |-TextComment 0x56046813e800 Text=" such as delayed triggering of events, which can be inconvenient when for" | | `-TextComment 0x56046813e820 Text=" example running a test suite." | |-ParagraphComment 0x56046813e910 | | |-TextComment 0x56046813e890 Text=" The flags parameter specifies which aperiodic actions to run. Specify 0 to" | | |-TextComment 0x56046813e8b0 Text=" run all actions. Supported flags start with 'EcsAperiodic'. Flags identify" | | `-TextComment 0x56046813e8d0 Text=" internal mechanisms and may change unannounced." | |-ParagraphComment 0x56046813e960 | | `-TextComment 0x56046813e930 Text=" " | |-ParamCommandComment 0x56046813e980 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813ea30 | | |-TextComment 0x56046813e9e0 Text=" The world." | | `-TextComment 0x56046813ea00 Text=" " | `-ParamCommandComment 0x56046813ea50 [in] implicitly Param="flags" ParamIndex=1 | `-ParagraphComment 0x56046813eae0 | `-TextComment 0x56046813eab0 Text=" The flags specifying which actions to run." |-FunctionDecl 0x56046803b918 line:5124:9 ecs_delete_empty_tables 'int32_t (ecs_world_t *, ecs_id_t, uint16_t, uint16_t, int32_t, double)' | |-ParmVarDecl 0x56046803b548 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803b5c0 col:14 id 'ecs_id_t':'unsigned long' | |-ParmVarDecl 0x56046803b638 col:14 clear_generation 'uint16_t':'unsigned short' | |-ParmVarDecl 0x56046803b6b0 col:14 delete_generation 'uint16_t':'unsigned short' | |-ParmVarDecl 0x56046803b728 col:13 min_id_count 'int32_t':'int' | |-ParmVarDecl 0x56046803b7a8 col:12 time_budget_seconds 'double' | `-FullComment 0x56046813f5d0 | |-ParagraphComment 0x56046813ec70 | | |-TextComment 0x56046813eba0 Text=" Cleanup empty tables." | | |-TextComment 0x56046813ebc0 Text=" This operation cleans up empty tables that meet certain conditions. Having" | | |-TextComment 0x56046813ebe0 Text=" large amounts of empty tables does not negatively impact performance of the" | | |-TextComment 0x56046813ec00 Text=" ECS, but can take up considerable amounts of memory, especially in " | | `-TextComment 0x56046813ec20 Text=" applications with many components, and many components per entity." | |-ParagraphComment 0x56046813ed10 | | |-TextComment 0x56046813ec90 Text=" The generation specifies the minimum number of times this operation has" | | |-TextComment 0x56046813ecb0 Text=" to be called before an empty table is cleaned up. If a table becomes non" | | `-TextComment 0x56046813ecd0 Text=" empty, the generation is reset." | |-ParagraphComment 0x56046813edd0 | | |-TextComment 0x56046813ed30 Text=" The operation allows for both a "clear" generation and a "delete"" | | |-TextComment 0x56046813ed50 Text=" generation. When the clear generation is reached, the table's " | | |-TextComment 0x56046813ed70 Text=" resources are freed (like component arrays) but the table itself is not" | | `-TextComment 0x56046813ed90 Text=" deleted. When the delete generation is reached, the empty table is deleted." | |-ParagraphComment 0x56046813ee70 | | |-TextComment 0x56046813edf0 Text=" By specifying a non-zero id the cleanup logic can be limited to tables with" | | |-TextComment 0x56046813ee10 Text=" a specific (component) id. The operation will only increase the generation" | | `-TextComment 0x56046813ee30 Text=" count of matching tables." | |-ParagraphComment 0x56046813ef10 | | |-TextComment 0x56046813ee90 Text=" The min_id_count specifies a lower bound for the number of components a table" | | |-TextComment 0x56046813eeb0 Text=" should have. Often the more components a table has, the more specific it is " | | `-TextComment 0x56046813eed0 Text=" and therefore less likely to be reused." | |-ParagraphComment 0x56046813ef60 | | `-TextComment 0x56046813ef30 Text=" The time budget specifies how long the operation should take at most." | |-ParagraphComment 0x56046813efb0 | | `-TextComment 0x56046813ef80 Text=" " | |-ParamCommandComment 0x56046813efd0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046813f080 | | |-TextComment 0x56046813f030 Text=" The world." | | `-TextComment 0x56046813f050 Text=" " | |-ParamCommandComment 0x56046813f0a0 [in] implicitly Param="id" ParamIndex=1 | | `-ParagraphComment 0x56046813f150 | | |-TextComment 0x56046813f100 Text=" Optional component filter for the tables to evaluate." | | `-TextComment 0x56046813f120 Text=" " | |-ParamCommandComment 0x56046813f170 [in] implicitly Param="clear_generation" ParamIndex=2 | | `-ParagraphComment 0x56046813f230 | | |-TextComment 0x56046813f1e0 Text=" Free table data when generation > clear_generation." | | `-TextComment 0x56046813f200 Text=" " | |-ParamCommandComment 0x56046813f250 [in] implicitly Param="delete_generation" ParamIndex=3 | | `-ParagraphComment 0x56046813f310 | | |-TextComment 0x56046813f2c0 Text=" Delete table when generation > delete_generation." | | `-TextComment 0x56046813f2e0 Text=" " | |-ParamCommandComment 0x56046813f330 [in] implicitly Param="min_id_count" ParamIndex=4 | | `-ParagraphComment 0x56046813f3e0 | | |-TextComment 0x56046813f390 Text=" Minimum number of component ids the table should have." | | `-TextComment 0x56046813f3b0 Text=" " | |-ParamCommandComment 0x56046813f400 [in] implicitly Param="time_budget_seconds" ParamIndex=5 | | `-ParagraphComment 0x56046813f4c0 | | |-TextComment 0x56046813f470 Text=" Amount of time operation is allowed to spend." | | `-TextComment 0x56046813f490 Text=" " | `-BlockCommandComment 0x56046813f4e0 Name="return" | `-ParagraphComment 0x56046813f540 | `-TextComment 0x56046813f510 Text=" Number of deleted tables." |-FunctionDecl 0x56046803bce8 line:5138:20 ecs_get_world 'const ecs_world_t *(const ecs_poly_t *)' | |-ParmVarDecl 0x56046803bbf0 col:23 poly 'const ecs_poly_t *' | `-FullComment 0x56046813f850 | |-ParagraphComment 0x56046813f670 | | `-TextComment 0x56046813f640 Text=" Get world from poly." | |-ParagraphComment 0x56046813f6c0 | | `-TextComment 0x56046813f690 Text=" " | |-ParamCommandComment 0x56046813f6e0 [in] implicitly Param="poly" ParamIndex=0 | | `-ParagraphComment 0x56046813f790 | | |-TextComment 0x56046813f740 Text=" A pointer to a poly object." | | `-TextComment 0x56046813f760 Text=" " | `-BlockCommandComment 0x56046813f7b0 Name="return" | `-ParagraphComment 0x56046813f810 | `-TextComment 0x56046813f7e0 Text=" The world." |-FunctionDecl 0x56046803be88 line:5147:14 ecs_get_entity 'ecs_entity_t (const ecs_poly_t *)' | |-ParmVarDecl 0x56046803bdc8 col:23 poly 'const ecs_poly_t *' | `-FullComment 0x56046813fad0 | |-ParagraphComment 0x56046813f8f0 | | `-TextComment 0x56046813f8c0 Text=" Get entity from poly." | |-ParagraphComment 0x56046813f940 | | `-TextComment 0x56046813f910 Text=" " | |-ParamCommandComment 0x56046813f960 [in] implicitly Param="poly" ParamIndex=0 | | `-ParagraphComment 0x56046813fa10 | | |-TextComment 0x56046813f9c0 Text=" A pointer to a poly object." | | `-TextComment 0x56046813f9e0 Text=" " | `-BlockCommandComment 0x56046813fa30 Name="return" | `-ParagraphComment 0x56046813fa90 | `-TextComment 0x56046813fa60 Text=" Entity associated with the poly object." |-FunctionDecl 0x56046803c0f8 line:5161:6 _ecs_poly_is 'bool (const ecs_poly_t *, int32_t)' | |-ParmVarDecl 0x56046803bf68 col:23 object 'const ecs_poly_t *' | |-ParmVarDecl 0x56046803bfe0 col:13 type 'int32_t':'int' | `-FullComment 0x56046813fed0 | |-ParagraphComment 0x56046813fbc0 | | |-TextComment 0x56046813fb40 Text=" Test if pointer is of specified type." | | |-TextComment 0x56046813fb60 Text=" Usage:" | | `-TextComment 0x56046813fb80 Text=" ecs_poly_is(ptr, ecs_world_t)" | |-ParagraphComment 0x56046813fc10 | | `-TextComment 0x56046813fbe0 Text=" This operation only works for poly types." | |-ParagraphComment 0x56046813fc60 | | `-TextComment 0x56046813fc30 Text=" " | |-ParamCommandComment 0x56046813fc80 [in] implicitly Param="object" ParamIndex=0 | | `-ParagraphComment 0x56046813fd30 | | |-TextComment 0x56046813fce0 Text=" The object to test." | | `-TextComment 0x56046813fd00 Text=" " | |-ParamCommandComment 0x56046813fd50 [in] implicitly Param="type" ParamIndex=1 | | `-ParagraphComment 0x56046813fe00 | | |-TextComment 0x56046813fdb0 Text=" The id of the type." | | `-TextComment 0x56046813fdd0 Text=" " | `-BlockCommandComment 0x56046813fe20 Name="return" | `-ParagraphComment 0x56046813fe80 | `-TextComment 0x56046813fe50 Text=" True if the pointer is of the specified type." |-FunctionDecl 0x56046803c378 line:5176:10 ecs_make_pair 'ecs_id_t (ecs_entity_t, ecs_entity_t)' | |-ParmVarDecl 0x56046803c1e8 col:18 first 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x56046803c260 col:18 second 'ecs_entity_t':'unsigned long' | `-FullComment 0x5604681401d0 | |-ParagraphComment 0x56046813ffc0 | | |-TextComment 0x56046813ff40 Text=" Make a pair id." | | |-TextComment 0x56046813ff60 Text=" This function is equivalent to using the ecs_pair macro, and is added for" | | `-TextComment 0x56046813ff80 Text=" convenience to make it easier for non C/C++ bindings to work with pairs." | |-ParagraphComment 0x560468140010 | | `-TextComment 0x56046813ffe0 Text=" " | |-ParamCommandComment 0x560468140030 [in] implicitly Param="first" ParamIndex=0 | | `-ParagraphComment 0x5604681400e0 | | |-TextComment 0x560468140090 Text=" The first element of the pair of the pair." | | `-TextComment 0x5604681400b0 Text=" " | `-ParamCommandComment 0x560468140100 [in] implicitly Param="second" ParamIndex=1 | `-ParagraphComment 0x560468140190 | `-TextComment 0x560468140160 Text=" The target of the pair." |-FunctionDecl 0x56046803c618 line:5205:14 ecs_new_id 'ecs_entity_t (ecs_world_t *)' | |-ParmVarDecl 0x56046803c528 col:18 world 'ecs_world_t *' | `-FullComment 0x560468140500 | |-ParagraphComment 0x560468140320 | | |-TextComment 0x560468140280 Text=" Create new entity id." | | |-TextComment 0x5604681402a0 Text=" This operation returns an unused entity id. This operation is guaranteed to" | | |-TextComment 0x5604681402c0 Text=" return an empty entity as it does not use values set by ecs_set_scope or" | | `-TextComment 0x5604681402e0 Text=" ecs_set_with." | |-ParagraphComment 0x560468140370 | | `-TextComment 0x560468140340 Text=" " | |-ParamCommandComment 0x560468140390 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468140440 | | |-TextComment 0x5604681403f0 Text=" The world." | | `-TextComment 0x560468140410 Text=" " | `-BlockCommandComment 0x560468140460 Name="return" | `-ParagraphComment 0x5604681404c0 | `-TextComment 0x560468140490 Text=" The new entity id." |-FunctionDecl 0x56046803c788 line:5226:14 ecs_new_low_id 'ecs_entity_t (ecs_world_t *)' | |-ParmVarDecl 0x56046803c6f8 col:18 world 'ecs_world_t *' | `-FullComment 0x560468140970 | |-ParagraphComment 0x560468140610 | | |-TextComment 0x560468140570 Text=" Create new low id." | | |-TextComment 0x560468140590 Text=" This operation returns a new low id. Entity ids start after the" | | |-TextComment 0x5604681405b0 Text=" ECS_HI_COMPONENT_ID constant. This reserves a range of low ids for things " | | `-TextComment 0x5604681405d0 Text=" like components, and allows parts of the code to optimize operations." | |-ParagraphComment 0x5604681406b0 | | |-TextComment 0x560468140630 Text=" Note that ECS_HI_COMPONENT_ID does not represent the maximum number of " | | |-TextComment 0x560468140650 Text=" components that can be created, only the maximum number of components that" | | `-TextComment 0x560468140670 Text=" can take advantage of these optimizations." | |-ParagraphComment 0x560468140720 | | |-TextComment 0x5604681406d0 Text=" This operation is guaranteed to return an empty entity as it does not use " | | `-TextComment 0x5604681406f0 Text=" values set by ecs_set_scope or ecs_set_with." | |-ParagraphComment 0x560468140770 | | `-TextComment 0x560468140740 Text=" This operation does not recycle ids." | |-ParagraphComment 0x5604681407c0 | | `-TextComment 0x560468140790 Text=" " | |-ParamCommandComment 0x5604681407e0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468140890 | | |-TextComment 0x560468140840 Text=" The world." | | `-TextComment 0x560468140860 Text=" " | `-BlockCommandComment 0x5604681408b0 Name="return" | `-ParagraphComment 0x560468140910 | `-TextComment 0x5604681408e0 Text=" The new component id." |-FunctionDecl 0x56046803c9f8 line:5238:14 ecs_new_w_id 'ecs_entity_t (ecs_world_t *, ecs_id_t)' | |-ParmVarDecl 0x56046803c868 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803c8e0 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468140d20 | |-ParagraphComment 0x560468140a60 | | |-TextComment 0x5604681409e0 Text=" Create new entity with (component) id." | | |-TextComment 0x560468140a00 Text=" This operation creates a new entity with an optional (component) id. When 0" | | `-TextComment 0x560468140a20 Text=" is passed to the id paramter, no component is added to the new entity." | |-ParagraphComment 0x560468140ab0 | | `-TextComment 0x560468140a80 Text=" " | |-ParamCommandComment 0x560468140ad0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468140b80 | | |-TextComment 0x560468140b30 Text=" The world." | | `-TextComment 0x560468140b50 Text=" " | |-ParamCommandComment 0x560468140ba0 [in] implicitly Param="id" ParamIndex=1 | | `-ParagraphComment 0x560468140c50 | | |-TextComment 0x560468140c00 Text=" The component id to initialize the new entity with." | | `-TextComment 0x560468140c20 Text=" " | `-BlockCommandComment 0x560468140c70 Name="return" | `-ParagraphComment 0x560468140cd0 | `-TextComment 0x560468140ca0 Text=" The new entity." |-FunctionDecl 0x56046803dfe8 line:5261:14 ecs_entity_init 'ecs_entity_t (ecs_world_t *, const ecs_entity_desc_t *)' | |-ParmVarDecl 0x56046803cae8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803ded0 col:30 desc 'const ecs_entity_desc_t *' | `-FullComment 0x560468141270 | |-ParagraphComment 0x560468140e60 | | |-TextComment 0x560468140d90 Text=" Find or create an entity. " | | |-TextComment 0x560468140db0 Text=" This operation creates a new entity, or modifies an existing one. When a name" | | |-TextComment 0x560468140dd0 Text=" is set in the ecs_entity_desc_t::name field and ecs_entity_desc_t::entity is" | | |-TextComment 0x560468140df0 Text=" not set, the operation will first attempt to find an existing entity by that" | | `-TextComment 0x560468140e10 Text=" name. If no entity with that name can be found, it will be created." | |-ParagraphComment 0x560468140f00 | | |-TextComment 0x560468140e80 Text=" If both a name and entity handle are provided, the operation will check if" | | |-TextComment 0x560468140ea0 Text=" the entity name matches with the provided name. If the names do not match," | | `-TextComment 0x560468140ec0 Text=" the function will fail and return 0." | |-ParagraphComment 0x560468140f50 | | `-TextComment 0x560468140f20 Text=" If an id to a non-existing entity is provided, that entity id become alive." | |-ParagraphComment 0x560468140fa0 | | `-TextComment 0x560468140f70 Text=" See the documentation of ecs_entity_desc_t for more details. " | |-ParagraphComment 0x560468140ff0 | | `-TextComment 0x560468140fc0 Text=" " | |-ParamCommandComment 0x560468141010 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681410c0 | | |-TextComment 0x560468141070 Text=" The world." | | `-TextComment 0x560468141090 Text=" " | |-ParamCommandComment 0x5604681410e0 [in] implicitly Param="desc" ParamIndex=1 | | `-ParagraphComment 0x560468141190 | | |-TextComment 0x560468141140 Text=" Entity init parameters." | | `-TextComment 0x560468141160 Text=" " | `-BlockCommandComment 0x5604681411b0 Name="return" | `-ParagraphComment 0x560468141210 | `-TextComment 0x5604681411e0 Text=" A handle to the new or existing entity, or 0 if failed." |-FunctionDecl 0x56046803e308 line:5292:21 ecs_bulk_init 'const ecs_entity_t *(ecs_world_t *, const ecs_bulk_desc_t *)' | |-ParmVarDecl 0x56046803e0d8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803e1c8 col:28 desc 'const ecs_bulk_desc_t *' | `-FullComment 0x560468141900 | |-ParagraphComment 0x560468141360 | | |-TextComment 0x5604681412e0 Text=" Bulk create/populate new entities." | | |-TextComment 0x560468141300 Text=" This operation bulk inserts a list of new or predefined entities into a" | | `-TextComment 0x560468141320 Text=" single table." | |-ParagraphComment 0x560468141400 | | |-TextComment 0x560468141380 Text=" The operation does not take ownership of component arrays provided by the" | | |-TextComment 0x5604681413a0 Text=" application. Components that are non-trivially copyable will be moved into" | | `-TextComment 0x5604681413c0 Text=" the storage." | |-ParagraphComment 0x560468141470 | | |-TextComment 0x560468141420 Text=" The operation will emit OnAdd events for each added id, and OnSet events for" | | `-TextComment 0x560468141440 Text=" each component that has been set." | |-ParagraphComment 0x560468141510 | | |-TextComment 0x560468141490 Text=" If no entity ids are provided by the application, the returned array of ids" | | |-TextComment 0x5604681414b0 Text=" points to an internal datastructure which changes when new entities are" | | `-TextComment 0x5604681414d0 Text=" created/deleted." | |-ParagraphComment 0x560468141620 | | |-TextComment 0x560468141530 Text=" If as a result of the operation triggers are invoked that deletes" | | |-TextComment 0x560468141550 Text=" entities and no entity ids were provided by the application, the returned" | | |-TextComment 0x560468141570 Text=" array of identifiers may be incorrect. To avoid this problem, an application" | | |-TextComment 0x560468141590 Text=" can first call ecs_bulk_init to create empty entities, copy the array to one" | | |-TextComment 0x5604681415b0 Text=" that is owned by the application, and then use this array to populate the" | | `-TextComment 0x5604681415d0 Text=" entities." | |-ParagraphComment 0x560468141670 | | `-TextComment 0x560468141640 Text=" " | |-ParamCommandComment 0x560468141690 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468141740 | | |-TextComment 0x5604681416f0 Text=" The world." | | `-TextComment 0x560468141710 Text=" " | |-ParamCommandComment 0x560468141760 [in] implicitly Param="desc" ParamIndex=1 | | `-ParagraphComment 0x560468141810 | | |-TextComment 0x5604681417c0 Text=" Bulk creation parameters." | | `-TextComment 0x5604681417e0 Text=" " | `-BlockCommandComment 0x560468141830 Name="return" | `-ParagraphComment 0x560468141890 | `-TextComment 0x560468141860 Text=" Array with the list of entity ids created/populated." |-FunctionDecl 0x56046803e608 line:5306:21 ecs_bulk_new_w_id 'const ecs_entity_t *(ecs_world_t *, ecs_id_t, int32_t)' | |-ParmVarDecl 0x56046803e3f8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803e470 col:14 id 'ecs_id_t':'unsigned long' | |-ParmVarDecl 0x56046803e4e8 col:13 count 'int32_t':'int' | `-FullComment 0x560468141d80 | |-ParagraphComment 0x5604681419f0 | | |-TextComment 0x560468141970 Text=" Create N new entities." | | |-TextComment 0x560468141990 Text=" This operation is the same as ecs_new_w_id, but creates N entities" | | `-TextComment 0x5604681419b0 Text=" instead of one and does not recycle ids." | |-ParagraphComment 0x560468141a40 | | `-TextComment 0x560468141a10 Text=" " | |-ParamCommandComment 0x560468141a60 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468141b10 | | |-TextComment 0x560468141ac0 Text=" The world." | | `-TextComment 0x560468141ae0 Text=" " | |-ParamCommandComment 0x560468141b30 [in] implicitly Param="id" ParamIndex=1 | | `-ParagraphComment 0x560468141be0 | | |-TextComment 0x560468141b90 Text=" The component id to create the entities with." | | `-TextComment 0x560468141bb0 Text=" " | |-ParamCommandComment 0x560468141c00 [in] implicitly Param="count" ParamIndex=2 | | `-ParagraphComment 0x560468141cb0 | | |-TextComment 0x560468141c60 Text=" The number of entities to create." | | `-TextComment 0x560468141c80 Text=" " | `-BlockCommandComment 0x560468141cd0 Name="return" | `-ParagraphComment 0x560468141d30 | `-TextComment 0x560468141d00 Text=" The first entity id of the newly created entities." |-FunctionDecl 0x56046803e9a8 line:5323:14 ecs_clone 'ecs_entity_t (ecs_world_t *, ecs_entity_t, ecs_entity_t, bool)' | |-ParmVarDecl 0x56046803e6f8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803e770 col:18 dst 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x56046803e7e8 col:18 src 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x56046803e860 col:10 copy_value 'bool' | `-FullComment 0x560468142310 | |-ParagraphComment 0x560468141e90 | | |-TextComment 0x560468141df0 Text=" Clone an entity" | | |-TextComment 0x560468141e10 Text=" This operation clones the components of one entity into another entity. If" | | |-TextComment 0x560468141e30 Text=" no destination entity is provided, a new entity will be created. Component" | | `-TextComment 0x560468141e50 Text=" values are not copied unless copy_value is true." | |-ParagraphComment 0x560468141ee0 | | `-TextComment 0x560468141eb0 Text=" " | |-ParamCommandComment 0x560468141f00 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468141fb0 | | |-TextComment 0x560468141f60 Text=" The world." | | `-TextComment 0x560468141f80 Text=" " | |-ParamCommandComment 0x560468141fd0 [in] implicitly Param="dst" ParamIndex=1 | | `-ParagraphComment 0x560468142080 | | |-TextComment 0x560468142030 Text=" The entity to copy the components to." | | `-TextComment 0x560468142050 Text=" " | |-ParamCommandComment 0x5604681420a0 [in] implicitly Param="src" ParamIndex=2 | | `-ParagraphComment 0x560468142150 | | |-TextComment 0x560468142100 Text=" The entity to copy the components from." | | `-TextComment 0x560468142120 Text=" " | |-ParamCommandComment 0x560468142170 [in] implicitly Param="copy_value" ParamIndex=3 | | `-ParagraphComment 0x560468142220 | | |-TextComment 0x5604681421d0 Text=" If true, the value of components will be copied to dst." | | `-TextComment 0x5604681421f0 Text=" " | `-BlockCommandComment 0x560468142250 Name="return" | `-ParagraphComment 0x5604681422b0 | `-TextComment 0x560468142280 Text=" The destination entity." |-FunctionDecl 0x56046803ec38 line:5339:6 ecs_delete 'void (ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x56046803eaa8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803eb20 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468142660 | |-ParagraphComment 0x560468142450 | | |-TextComment 0x560468142380 Text=" Delete an entity." | | |-TextComment 0x5604681423a0 Text=" This operation will delete an entity and all of its components. The entity id" | | |-TextComment 0x5604681423c0 Text=" will be recycled. Repeatedly calling ecs_delete without ecs_new or" | | |-TextComment 0x5604681423e0 Text=" ecs_new_w_id will cause a memory leak as it will cause" | | `-TextComment 0x560468142400 Text=" the list with ids that can be recycled to grow unbounded." | |-ParagraphComment 0x5604681424a0 | | `-TextComment 0x560468142470 Text=" " | |-ParamCommandComment 0x5604681424c0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468142570 | | |-TextComment 0x560468142520 Text=" The world." | | `-TextComment 0x560468142540 Text=" " | `-ParamCommandComment 0x560468142590 [in] implicitly Param="entity" ParamIndex=1 | `-ParagraphComment 0x560468142620 | `-TextComment 0x5604681425f0 Text=" The entity." |-FunctionDecl 0x56046803f020 line:5351:6 ecs_delete_with 'void (ecs_world_t *, ecs_id_t)' | |-ParmVarDecl 0x56046803ed28 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803eda0 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468142960 | |-ParagraphComment 0x560468142750 | | |-TextComment 0x5604681426d0 Text=" Delete all entities with the specified id." | | |-TextComment 0x5604681426f0 Text=" This will delete all entities (tables) that have the specified id. The id " | | `-TextComment 0x560468142710 Text=" may be a wildcard and/or a pair." | |-ParagraphComment 0x5604681427a0 | | `-TextComment 0x560468142770 Text=" " | |-ParamCommandComment 0x5604681427c0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468142870 | | |-TextComment 0x560468142820 Text=" The world." | | `-TextComment 0x560468142840 Text=" " | `-ParamCommandComment 0x560468142890 [in] implicitly Param="id" ParamIndex=1 | `-ParagraphComment 0x560468142920 | `-TextComment 0x5604681428f0 Text=" The id." |-FunctionDecl 0x56046803f338 line:5372:6 ecs_add_id 'void (ecs_world_t *, ecs_entity_t, ecs_id_t)' | |-ParmVarDecl 0x56046803f168 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803f1e0 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x56046803f258 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468142d40 | |-ParagraphComment 0x560468142a50 | | |-TextComment 0x5604681429d0 Text=" Add a (component) id to an entity." | | |-TextComment 0x5604681429f0 Text=" This operation adds a single (component) id to an entity. If the entity " | | `-TextComment 0x560468142a10 Text=" already has the id, this operation has no side effects." | |-ParagraphComment 0x560468142aa0 | | `-TextComment 0x560468142a70 Text=" " | |-ParamCommandComment 0x560468142ac0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468142b70 | | |-TextComment 0x560468142b20 Text=" The world." | | `-TextComment 0x560468142b40 Text=" " | |-ParamCommandComment 0x560468142b90 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468142c40 | | |-TextComment 0x560468142bf0 Text=" The entity." | | `-TextComment 0x560468142c10 Text=" " | `-ParamCommandComment 0x560468142c60 [in] implicitly Param="id" ParamIndex=2 | `-ParagraphComment 0x560468142cf0 | `-TextComment 0x560468142cc0 Text=" The id to add." |-FunctionDecl 0x56046803f5b8 line:5386:6 ecs_remove_id 'void (ecs_world_t *, ecs_entity_t, ecs_id_t)' | |-ParmVarDecl 0x56046803f428 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803f4a0 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x56046803f518 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468143120 | |-ParagraphComment 0x560468142e30 | | |-TextComment 0x560468142db0 Text=" Remove a (component) id from an entity." | | |-TextComment 0x560468142dd0 Text=" This operation removes a single (component) id to an entity. If the entity " | | `-TextComment 0x560468142df0 Text=" does not have the id, this operation has no side effects." | |-ParagraphComment 0x560468142e80 | | `-TextComment 0x560468142e50 Text=" " | |-ParamCommandComment 0x560468142ea0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468142f50 | | |-TextComment 0x560468142f00 Text=" The world." | | `-TextComment 0x560468142f20 Text=" " | |-ParamCommandComment 0x560468142f70 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468143020 | | |-TextComment 0x560468142fd0 Text=" The entity." | | `-TextComment 0x560468142ff0 Text=" " | `-ParamCommandComment 0x560468143040 [in] implicitly Param="id" ParamIndex=2 | `-ParagraphComment 0x5604681430d0 | `-TextComment 0x5604681430a0 Text=" The id to remove." |-FunctionDecl 0x56046803f838 line:5414:6 ecs_override_id 'void (ecs_world_t *, ecs_entity_t, ecs_id_t)' | |-ParmVarDecl 0x56046803f6a8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803f720 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x56046803f798 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468143730 | |-ParagraphComment 0x560468143260 | | |-TextComment 0x560468143190 Text=" Add override for (component) id." | | |-TextComment 0x5604681431b0 Text=" Adding an override to an entity ensures that when the entity is instantiated" | | |-TextComment 0x5604681431d0 Text=" (by adding an IsA relationship to it) the component with the override is" | | |-TextComment 0x5604681431f0 Text=" copied to a component that is private to the instance. By default components" | | `-TextComment 0x560468143210 Text=" reachable through an IsA relationship are shared." | |-ParagraphComment 0x560468143350 | | |-TextComment 0x560468143280 Text=" Adding an override does not add the component. If an override is added to an" | | |-TextComment 0x5604681432a0 Text=" entity that does not have the component, it will still be added to the" | | |-TextComment 0x5604681432c0 Text=" instance, but with an uninitialized value (unless the component has a ctor)." | | |-TextComment 0x5604681432e0 Text=" When the entity does have the entity, the component of the instance will be" | | `-TextComment 0x560468143300 Text=" initialized with the value of the component on the entity." | |-ParagraphComment 0x5604681433c0 | | |-TextComment 0x560468143370 Text=" This is the same as what happens when calling ecs_add_id for an id that is" | | `-TextComment 0x560468143390 Text=" inherited (reachable through an IsA relationship)." | |-ParagraphComment 0x560468143430 | | |-TextComment 0x5604681433e0 Text=" This operation is equivalent to doing:" | | `-TextComment 0x560468143400 Text=" ecs_add_id(world, entity, ECS_OVERRIDE | id);" | |-ParagraphComment 0x560468143480 | | `-TextComment 0x560468143450 Text=" " | |-ParamCommandComment 0x5604681434a0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468143550 | | |-TextComment 0x560468143500 Text=" The world." | | `-TextComment 0x560468143520 Text=" " | |-ParamCommandComment 0x560468143570 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468143620 | | |-TextComment 0x5604681435d0 Text=" The entity." | | `-TextComment 0x5604681435f0 Text=" " | `-ParamCommandComment 0x560468143640 [in] implicitly Param="id" ParamIndex=2 | `-ParagraphComment 0x5604681436d0 | `-TextComment 0x5604681436a0 Text=" The id to override." |-FunctionDecl 0x56046803fa38 line:5428:6 ecs_clear 'void (ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x56046803f928 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803f9a0 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468143a50 | |-ParagraphComment 0x560468143840 | | |-TextComment 0x5604681437a0 Text=" Clear all components." | | |-TextComment 0x5604681437c0 Text=" This operation will clear all components from an entity but will not delete" | | |-TextComment 0x5604681437e0 Text=" the entity itself. This effectively prevents the entity id from being " | | `-TextComment 0x560468143800 Text=" recycled." | |-ParagraphComment 0x560468143890 | | `-TextComment 0x560468143860 Text=" " | |-ParamCommandComment 0x5604681438b0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468143960 | | |-TextComment 0x560468143910 Text=" The world." | | `-TextComment 0x560468143930 Text=" " | `-ParamCommandComment 0x560468143980 [in] implicitly Param="entity" ParamIndex=1 | `-ParagraphComment 0x560468143a10 | `-TextComment 0x5604681439e0 Text=" The entity." |-FunctionDecl 0x56046803fc38 line:5441:6 ecs_remove_all 'void (ecs_world_t *, ecs_id_t)' | |-ParmVarDecl 0x56046803fb28 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803fba0 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468143d50 | |-ParagraphComment 0x560468143b40 | | |-TextComment 0x560468143ac0 Text=" Remove all instances of the specified id." | | |-TextComment 0x560468143ae0 Text=" This will remove the specified id from all entities (tables). Teh id may be" | | `-TextComment 0x560468143b00 Text=" a wildcard and/or a pair." | |-ParagraphComment 0x560468143b90 | | `-TextComment 0x560468143b60 Text=" " | |-ParamCommandComment 0x560468143bb0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468143c60 | | |-TextComment 0x560468143c10 Text=" The world." | | `-TextComment 0x560468143c30 Text=" " | `-ParamCommandComment 0x560468143c80 [in] implicitly Param="id" ParamIndex=1 | `-ParagraphComment 0x560468143d10 | `-TextComment 0x560468143ce0 Text=" The id." |-FunctionDecl 0x56046803fe38 line:5453:14 ecs_set_with 'ecs_entity_t (ecs_world_t *, ecs_id_t)' | |-ParmVarDecl 0x56046803fd28 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046803fda0 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x5604681440d0 | |-ParagraphComment 0x560468143e10 | | |-TextComment 0x560468143dc0 Text=" Set current with id." | | `-TextComment 0x560468143de0 Text=" New entities are automatically created with the specified id." | |-ParagraphComment 0x560468143e60 | | `-TextComment 0x560468143e30 Text=" " | |-ParamCommandComment 0x560468143e80 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468143f30 | | |-TextComment 0x560468143ee0 Text=" The world." | | `-TextComment 0x560468143f00 Text=" " | |-ParamCommandComment 0x560468143f50 [in] implicitly Param="id" ParamIndex=1 | | `-ParagraphComment 0x560468144000 | | |-TextComment 0x560468143fb0 Text=" The id." | | `-TextComment 0x560468143fd0 Text=" " | `-BlockCommandComment 0x560468144020 Name="return" | `-ParagraphComment 0x560468144080 | `-TextComment 0x560468144050 Text=" The previous id." |-FunctionDecl 0x560468040270 line:5464:10 ecs_get_with 'ecs_id_t (const ecs_world_t *)' | |-ParmVarDecl 0x56046803ff28 col:24 world 'const ecs_world_t *' | `-FullComment 0x560468144390 | |-ParagraphComment 0x560468144190 | | |-TextComment 0x560468144140 Text=" Get current with id." | | `-TextComment 0x560468144160 Text=" Get the id set with ecs_set_with." | |-ParagraphComment 0x5604681441e0 | | `-TextComment 0x5604681441b0 Text=" " | |-ParamCommandComment 0x560468144200 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681442d0 | | |-TextComment 0x560468144280 Text=" The world." | | `-TextComment 0x5604681442a0 Text=" " | `-BlockCommandComment 0x5604681442f0 Name="return" | `-ParagraphComment 0x560468144350 | `-TextComment 0x560468144320 Text=" The last id provided to ecs_set_with." |-FunctionDecl 0x5604680405c8 line:5485:6 ecs_enable 'void (ecs_world_t *, ecs_entity_t, bool)' | |-ParmVarDecl 0x5604680403b8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468040430 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680404a8 col:10 enabled 'bool' | `-FullComment 0x560468144790 | |-ParagraphComment 0x5604681444a0 | | |-TextComment 0x560468144400 Text=" Enable or disable entity." | | |-TextComment 0x560468144420 Text=" This operation enables or disables an entity by adding or removing the" | | |-TextComment 0x560468144440 Text=" EcsDisabled tag. A disabled entity will not be matched with any systems," | | `-TextComment 0x560468144460 Text=" unless the system explicitly specifies the EcsDisabled tag." | |-ParagraphComment 0x5604681444f0 | | `-TextComment 0x5604681444c0 Text=" " | |-ParamCommandComment 0x560468144510 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681445c0 | | |-TextComment 0x560468144570 Text=" The world." | | `-TextComment 0x560468144590 Text=" " | |-ParamCommandComment 0x5604681445e0 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468144690 | | |-TextComment 0x560468144640 Text=" The entity to enable or disable." | | `-TextComment 0x560468144660 Text=" " | `-ParamCommandComment 0x5604681446b0 [in] implicitly Param="enabled" ParamIndex=2 | `-ParagraphComment 0x560468144740 | `-TextComment 0x560468144710 Text=" true to enable the entity, false to disable." |-FunctionDecl 0x560468040968 line:5504:6 ecs_enable_id 'void (ecs_world_t *, ecs_entity_t, ecs_id_t, bool)' | |-ParmVarDecl 0x5604680406b8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468040730 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680407a8 col:14 id 'ecs_id_t':'unsigned long' | |-ParmVarDecl 0x560468040820 col:10 enable 'bool' | `-FullComment 0x560468144ce0 | |-ParagraphComment 0x560468144920 | | |-TextComment 0x560468144800 Text=" Enable or disable component." | | |-TextComment 0x560468144820 Text=" Enabling or disabling a component does not add or remove a component from an" | | |-TextComment 0x560468144840 Text=" entity, but prevents it from being matched with queries. This operation can" | | |-TextComment 0x560468144860 Text=" be useful when a component must be temporarily disabled without destroying" | | |-TextComment 0x560468144880 Text=" its value. It is also a more performant operation for when an application" | | |-TextComment 0x5604681448a0 Text=" needs to add/remove components at high frequency, as enabling/disabling is" | | `-TextComment 0x5604681448c0 Text=" cheaper than a regular add or remove." | |-ParagraphComment 0x560468144970 | | `-TextComment 0x560468144940 Text=" " | |-ParamCommandComment 0x560468144990 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468144a40 | | |-TextComment 0x5604681449f0 Text=" The world." | | `-TextComment 0x560468144a10 Text=" " | |-ParamCommandComment 0x560468144a60 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468144b10 | | |-TextComment 0x560468144ac0 Text=" The entity." | | `-TextComment 0x560468144ae0 Text=" " | |-ParamCommandComment 0x560468144b30 [in] implicitly Param="id" ParamIndex=2 | | `-ParagraphComment 0x560468144be0 | | |-TextComment 0x560468144b90 Text=" The component." | | `-TextComment 0x560468144bb0 Text=" " | `-ParamCommandComment 0x560468144c00 [in] implicitly Param="enable" ParamIndex=3 | `-ParagraphComment 0x560468144c90 | `-TextComment 0x560468144c60 Text=" True to enable the component, false to disable." |-FunctionDecl 0x560468040c78 line:5521:6 ecs_is_enabled_id 'bool (const ecs_world_t *, ecs_entity_t, ecs_id_t)' | |-ParmVarDecl 0x560468040a68 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468040ae0 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560468040b58 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468145180 | |-ParagraphComment 0x560468144df0 | | |-TextComment 0x560468144d50 Text=" Test if component is enabled." | | |-TextComment 0x560468144d70 Text=" Test whether a component is currently enabled or disabled. This operation" | | |-TextComment 0x560468144d90 Text=" will return true when the entity has the component and if it has not been" | | `-TextComment 0x560468144db0 Text=" disabled by ecs_enable_component." | |-ParagraphComment 0x560468144e40 | | `-TextComment 0x560468144e10 Text=" " | |-ParamCommandComment 0x560468144e60 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468144f10 | | |-TextComment 0x560468144ec0 Text=" The world." | | `-TextComment 0x560468144ee0 Text=" " | |-ParamCommandComment 0x560468144f30 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468144fe0 | | |-TextComment 0x560468144f90 Text=" The entity." | | `-TextComment 0x560468144fb0 Text=" " | |-ParamCommandComment 0x560468145000 [in] implicitly Param="id" ParamIndex=2 | | `-ParagraphComment 0x5604681450b0 | | |-TextComment 0x560468145060 Text=" The component." | | `-TextComment 0x560468145080 Text=" " | `-BlockCommandComment 0x5604681450d0 Name="return" | `-ParagraphComment 0x560468145130 | `-TextComment 0x560468145100 Text=" True if the component is enabled, otherwise false." |-FunctionDecl 0x560468040fe0 line:5544:13 ecs_get_id 'const void *(const ecs_world_t *, ecs_entity_t, ecs_id_t)' | |-ParmVarDecl 0x560468040dc8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468040e40 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560468040eb8 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468145600 | |-ParagraphComment 0x560468145270 | | |-TextComment 0x5604681451f0 Text=" Get an immutable pointer to a component." | | |-TextComment 0x560468145210 Text=" This operation obtains a const pointer to the requested component. The" | | `-TextComment 0x560468145230 Text=" operation accepts the component entity id." | |-ParagraphComment 0x5604681452c0 | | `-TextComment 0x560468145290 Text=" " | |-ParamCommandComment 0x5604681452e0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468145390 | | |-TextComment 0x560468145340 Text=" The world." | | `-TextComment 0x560468145360 Text=" " | |-ParamCommandComment 0x5604681453b0 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468145460 | | |-TextComment 0x560468145410 Text=" The entity." | | `-TextComment 0x560468145430 Text=" " | |-ParamCommandComment 0x560468145480 [in] implicitly Param="id" ParamIndex=2 | | `-ParagraphComment 0x560468145530 | | |-TextComment 0x5604681454e0 Text=" The id of the component to get." | | `-TextComment 0x560468145500 Text=" " | `-BlockCommandComment 0x560468145550 Name="return" | `-ParagraphComment 0x5604681455b0 | `-TextComment 0x560468145580 Text=" The component pointer, NULL if the entity does not have the component." |-FunctionDecl 0x560468041538 line:5560:11 ecs_ref_init_id 'ecs_ref_t (const ecs_world_t *, ecs_entity_t, ecs_id_t)' | |-ParmVarDecl 0x5604680410d8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468041150 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680411c8 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468145aa0 | |-ParagraphComment 0x560468145710 | | |-TextComment 0x560468145670 Text=" Create a component ref." | | |-TextComment 0x560468145690 Text=" A ref is a handle to an entity + component which caches a small amount of" | | |-TextComment 0x5604681456b0 Text=" data to reduce overhead of repeatedly accessing the component. Use " | | `-TextComment 0x5604681456d0 Text=" ecs_ref_get to get the component data." | |-ParagraphComment 0x560468145760 | | `-TextComment 0x560468145730 Text=" " | |-ParamCommandComment 0x560468145780 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468145830 | | |-TextComment 0x5604681457e0 Text=" The world." | | `-TextComment 0x560468145800 Text=" " | |-ParamCommandComment 0x560468145850 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468145900 | | |-TextComment 0x5604681458b0 Text=" The entity." | | `-TextComment 0x5604681458d0 Text=" " | |-ParamCommandComment 0x560468145920 [in] implicitly Param="id" ParamIndex=2 | | `-ParagraphComment 0x5604681459d0 | | |-TextComment 0x560468145980 Text=" The id of the component." | | `-TextComment 0x5604681459a0 Text=" " | `-BlockCommandComment 0x5604681459f0 Name="return" | `-ParagraphComment 0x560468145a50 | `-TextComment 0x560468145a20 Text=" The reference." |-FunctionDecl 0x560468041840 line:5574:7 ecs_ref_get_id 'void *(const ecs_world_t *, ecs_ref_t *, ecs_id_t)' | |-ParmVarDecl 0x560468041628 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680416a0 col:16 ref 'ecs_ref_t *' | |-ParmVarDecl 0x560468041718 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468145ef0 | |-ParagraphComment 0x560468145b60 | | |-TextComment 0x560468145b10 Text=" Get component from ref." | | `-TextComment 0x560468145b30 Text=" Get component pointer from ref. The ref must be created with ecs_ref_init." | |-ParagraphComment 0x560468145bb0 | | `-TextComment 0x560468145b80 Text=" " | |-ParamCommandComment 0x560468145bd0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468145c80 | | |-TextComment 0x560468145c30 Text=" The world." | | `-TextComment 0x560468145c50 Text=" " | |-ParamCommandComment 0x560468145ca0 [in] implicitly Param="ref" ParamIndex=1 | | `-ParagraphComment 0x560468145d50 | | |-TextComment 0x560468145d00 Text=" The ref." | | `-TextComment 0x560468145d20 Text=" " | |-ParamCommandComment 0x560468145d70 [in] implicitly Param="id" ParamIndex=2 | | `-ParagraphComment 0x560468145e20 | | |-TextComment 0x560468145dd0 Text=" The component id." | | `-TextComment 0x560468145df0 Text=" " | `-BlockCommandComment 0x560468145e40 Name="return" | `-ParagraphComment 0x560468145ea0 | `-TextComment 0x560468145e70 Text=" The component pointer, NULL if the entity does not have the component." |-FunctionDecl 0x560468041ac8 line:5587:6 ecs_ref_update 'void (const ecs_world_t *, ecs_ref_t *)' | |-ParmVarDecl 0x560468041938 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680419b0 col:16 ref 'ecs_ref_t *' | `-FullComment 0x5604681461f0 | |-ParagraphComment 0x560468145fe0 | | |-TextComment 0x560468145f60 Text=" Update ref." | | |-TextComment 0x560468145f80 Text=" Ensures contents of ref are up to date. Same as ecs_ref_get_id, but does not" | | `-TextComment 0x560468145fa0 Text=" return pointer to component id. " | |-ParagraphComment 0x560468146030 | | `-TextComment 0x560468146000 Text=" " | |-ParamCommandComment 0x560468146050 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468146100 | | |-TextComment 0x5604681460b0 Text=" The world." | | `-TextComment 0x5604681460d0 Text=" " | `-ParamCommandComment 0x560468146120 [in] implicitly Param="ref" ParamIndex=1 | `-ParagraphComment 0x5604681461b0 | `-TextComment 0x560468146180 Text=" The ref." |-FunctionDecl 0x560468041dd0 line:5605:7 ecs_get_mut_id 'void *(ecs_world_t *, ecs_entity_t, ecs_id_t)' | |-ParmVarDecl 0x560468041bb8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468041c30 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560468041ca8 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468146720 | |-ParagraphComment 0x560468146310 | | |-TextComment 0x560468146270 Text=" Get a mutable pointer to a component." | | |-TextComment 0x560468146290 Text=" This operation is similar to ecs_get_id but it returns a mutable " | | |-TextComment 0x5604681462b0 Text=" pointer. If this operation is invoked from inside a system, the entity will" | | `-TextComment 0x5604681462d0 Text=" be staged and a pointer to the staged component will be returned." | |-ParagraphComment 0x560468146380 | | |-TextComment 0x560468146330 Text=" If the entity did not yet have the component, the component will be added by" | | `-TextComment 0x560468146350 Text=" this operation. In this case the is_added out parameter will be set to true." | |-ParagraphComment 0x5604681463d0 | | `-TextComment 0x5604681463a0 Text=" " | |-ParamCommandComment 0x5604681463f0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681464a0 | | |-TextComment 0x560468146450 Text=" The world." | | `-TextComment 0x560468146470 Text=" " | |-ParamCommandComment 0x5604681464c0 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468146570 | | |-TextComment 0x560468146520 Text=" The entity." | | `-TextComment 0x560468146540 Text=" " | |-ParamCommandComment 0x560468146590 [in] implicitly Param="id" ParamIndex=2 | | `-ParagraphComment 0x560468146640 | | |-TextComment 0x5604681465f0 Text=" The entity id of the component to obtain." | | `-TextComment 0x560468146610 Text=" " | `-BlockCommandComment 0x560468146660 Name="return" | `-ParagraphComment 0x5604681466c0 | `-TextComment 0x560468146690 Text=" The component pointer." |-FunctionDecl 0x560468042058 line:5629:15 ecs_write_begin 'ecs_record_t *(ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x560468041ec8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468041f40 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468146c60 | |-ParagraphComment 0x560468146810 | | |-TextComment 0x560468146790 Text=" Begin exclusive write access to entity." | | |-TextComment 0x5604681467b0 Text=" This operation provides safe exclusive access to the components of an entity" | | `-TextComment 0x5604681467d0 Text=" without the overhead of deferring operations." | |-ParagraphComment 0x5604681468d0 | | |-TextComment 0x560468146830 Text=" When this operation is called simultaneously for the same entity more than" | | |-TextComment 0x560468146850 Text=" once it will throw an assert. Note that for this to happen, asserts must be" | | |-TextComment 0x560468146870 Text=" enabled. It is up to the application to ensure that access is exclusive, for" | | `-TextComment 0x560468146890 Text=" example by using a read-write mutex." | |-ParagraphComment 0x560468146940 | | |-TextComment 0x5604681468f0 Text=" Exclusive access is enforced at the table level, so only one entity can be" | | `-TextComment 0x560468146910 Text=" exclusively accessed per table. The exclusive access check is thread safe." | |-ParagraphComment 0x560468146990 | | `-TextComment 0x560468146960 Text=" This operation must be followed up with ecs_write_end." | |-ParagraphComment 0x5604681469e0 | | `-TextComment 0x5604681469b0 Text=" " | |-ParamCommandComment 0x560468146a00 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468146ab0 | | |-TextComment 0x560468146a60 Text=" The world." | | `-TextComment 0x560468146a80 Text=" " | |-ParamCommandComment 0x560468146ad0 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468146b80 | | |-TextComment 0x560468146b30 Text=" The entity." | | `-TextComment 0x560468146b50 Text=" " | `-BlockCommandComment 0x560468146ba0 Name="return" | `-ParagraphComment 0x560468146c00 | `-TextComment 0x560468146bd0 Text=" A record to the entity." |-FunctionDecl 0x560468042238 line:5640:6 ecs_write_end 'void (ecs_record_t *)' | |-ParmVarDecl 0x560468042148 col:19 record 'ecs_record_t *' | `-FullComment 0x560468146e90 | |-ParagraphComment 0x560468146d50 | | |-TextComment 0x560468146cd0 Text=" End exclusive write access to entity." | | |-TextComment 0x560468146cf0 Text=" This operation ends exclusive access, and must be called after " | | `-TextComment 0x560468146d10 Text=" ecs_write_begin." | |-ParagraphComment 0x560468146da0 | | `-TextComment 0x560468146d70 Text=" " | `-ParamCommandComment 0x560468146dc0 [in] implicitly Param="record" ParamIndex=0 | `-ParagraphComment 0x560468146e50 | `-TextComment 0x560468146e20 Text=" Record to the entity." |-FunctionDecl 0x5604680426b8 line:5663:21 ecs_read_begin 'const ecs_record_t *(ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x560468042318 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468042390 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468147400 | |-ParagraphComment 0x560468146f80 | | |-TextComment 0x560468146f00 Text=" Begin read access to entity." | | |-TextComment 0x560468146f20 Text=" This operation provides safe read access to the components of an entity." | | `-TextComment 0x560468146f40 Text=" Multiple simultaneous reads are allowed per entity." | |-ParagraphComment 0x560468147040 | | |-TextComment 0x560468146fa0 Text=" This operation ensures that code attempting to mutate the entity's table will" | | |-TextComment 0x560468146fc0 Text=" throw an assert. Note that for this to happen, asserts must be enabled. It is" | | |-TextComment 0x560468146fe0 Text=" up to the application to ensure that this does not happen, for example by" | | `-TextComment 0x560468147000 Text=" using a read-write mutex." | |-ParagraphComment 0x5604681470e0 | | |-TextComment 0x560468147060 Text=" This operation does *not* provide the same guarantees as a read-write mutex," | | |-TextComment 0x560468147080 Text=" as it is possible to call ecs_read_begin after calling ecs_write_begin. It is" | | `-TextComment 0x5604681470a0 Text=" up to application has to ensure that this does not happen." | |-ParagraphComment 0x560468147130 | | `-TextComment 0x560468147100 Text=" This operation must be followed up with ecs_read_end." | |-ParagraphComment 0x560468147180 | | `-TextComment 0x560468147150 Text=" " | |-ParamCommandComment 0x5604681471a0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468147250 | | |-TextComment 0x560468147200 Text=" The world." | | `-TextComment 0x560468147220 Text=" " | |-ParamCommandComment 0x560468147270 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468147320 | | |-TextComment 0x5604681472d0 Text=" The entity." | | `-TextComment 0x5604681472f0 Text=" " | `-BlockCommandComment 0x560468147340 Name="return" | `-ParagraphComment 0x5604681473a0 | `-TextComment 0x560468147370 Text=" A record to the entity." |-FunctionDecl 0x560468042898 line:5673:6 ecs_read_end 'void (const ecs_record_t *)' | |-ParmVarDecl 0x5604680427a8 col:25 record 'const ecs_record_t *' | `-FullComment 0x560468147600 | |-ParagraphComment 0x5604681474c0 | | |-TextComment 0x560468147470 Text=" End read access to entity." | | `-TextComment 0x560468147490 Text=" This operation ends read access, and must be called after ecs_read_begin." | |-ParagraphComment 0x560468147510 | | `-TextComment 0x5604681474e0 Text=" " | `-ParamCommandComment 0x560468147530 [in] implicitly Param="record" ParamIndex=0 | `-ParagraphComment 0x5604681475c0 | `-TextComment 0x560468147590 Text=" Record to the entity." |-FunctionDecl 0x560468042b90 line:5690:13 ecs_record_get_id 'const void *(ecs_world_t *, const ecs_record_t *, ecs_id_t)' | |-ParmVarDecl 0x560468042978 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680429f0 col:25 record 'const ecs_record_t *' | |-ParmVarDecl 0x560468042a68 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468147b20 | |-ParagraphComment 0x560468147710 | | |-TextComment 0x560468147670 Text=" Get component from entity record." | | |-TextComment 0x560468147690 Text=" This operation returns a pointer to a component for the entity " | | |-TextComment 0x5604681476b0 Text=" associated with the provided record. For safe access to the component, obtain" | | `-TextComment 0x5604681476d0 Text=" the record with ecs_read_begin or ecs_write_begin." | |-ParagraphComment 0x560468147780 | | |-TextComment 0x560468147730 Text=" Obtaining a component from a record is faster than obtaining it from the" | | `-TextComment 0x560468147750 Text=" entity handle, as it reduces the number of lookups required." | |-ParagraphComment 0x5604681477d0 | | `-TextComment 0x5604681477a0 Text=" " | |-ParamCommandComment 0x5604681477f0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681478a0 | | |-TextComment 0x560468147850 Text=" The world." | | `-TextComment 0x560468147870 Text=" " | |-ParamCommandComment 0x5604681478c0 [in] implicitly Param="record" ParamIndex=1 | | `-ParagraphComment 0x560468147970 | | |-TextComment 0x560468147920 Text=" Record to the entity." | | `-TextComment 0x560468147940 Text=" " | |-ParamCommandComment 0x560468147990 [in] implicitly Param="id" ParamIndex=2 | | `-ParagraphComment 0x560468147a40 | | |-TextComment 0x5604681479f0 Text=" The (component) id." | | `-TextComment 0x560468147a10 Text=" " | `-BlockCommandComment 0x560468147a60 Name="return" | `-ParagraphComment 0x560468147ac0 | `-TextComment 0x560468147a90 Text=" Pointer to component, or NULL if entity does not have the component." |-FunctionDecl 0x560468042ea0 line:5704:7 ecs_record_get_mut_id 'void *(ecs_world_t *, ecs_record_t *, ecs_id_t)' | |-ParmVarDecl 0x560468042c88 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468042d00 col:19 record 'ecs_record_t *' | |-ParmVarDecl 0x560468042d78 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468147f70 | |-ParagraphComment 0x560468147be0 | | |-TextComment 0x560468147b90 Text=" Same as ecs_record_get_id, but returns a mutable pointer." | | `-TextComment 0x560468147bb0 Text=" For safe access to the component, obtain the record with ecs_write_begin." | |-ParagraphComment 0x560468147c30 | | `-TextComment 0x560468147c00 Text=" " | |-ParamCommandComment 0x560468147c50 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468147d00 | | |-TextComment 0x560468147cb0 Text=" The world." | | `-TextComment 0x560468147cd0 Text=" " | |-ParamCommandComment 0x560468147d20 [in] implicitly Param="record" ParamIndex=1 | | `-ParagraphComment 0x560468147dd0 | | |-TextComment 0x560468147d80 Text=" Record to the entity." | | `-TextComment 0x560468147da0 Text=" " | |-ParamCommandComment 0x560468147df0 [in] implicitly Param="id" ParamIndex=2 | | `-ParagraphComment 0x560468147ea0 | | |-TextComment 0x560468147e50 Text=" The (component) id." | | `-TextComment 0x560468147e70 Text=" " | `-BlockCommandComment 0x560468147ec0 Name="return" | `-ParagraphComment 0x560468147f20 | `-TextComment 0x560468147ef0 Text=" Pointer to component, or NULL if entity does not have the component." |-FunctionDecl 0x560468043130 line:5723:7 ecs_emplace_id 'void *(ecs_world_t *, ecs_entity_t, ecs_id_t)' | |-ParmVarDecl 0x560468042f98 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468043010 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560468043088 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x5604681484a0 | |-ParagraphComment 0x560468148080 | | |-TextComment 0x560468147fe0 Text=" Emplace a component." | | |-TextComment 0x560468148000 Text=" Emplace is similar to get_mut except that the component constructor is not" | | |-TextComment 0x560468148020 Text=" invoked for the returned pointer, allowing the component to be "constructed"" | | `-TextComment 0x560468148040 Text=" directly in the storage." | |-ParagraphComment 0x5604681480f0 | | |-TextComment 0x5604681480a0 Text=" Emplace can only be used if the entity does not yet have the component. If" | | `-TextComment 0x5604681480c0 Text=" the entity has the component, the operation will fail." | |-ParagraphComment 0x560468148140 | | `-TextComment 0x560468148110 Text=" " | |-ParamCommandComment 0x560468148160 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468148210 | | |-TextComment 0x5604681481c0 Text=" The world." | | `-TextComment 0x5604681481e0 Text=" " | |-ParamCommandComment 0x560468148230 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x5604681482f0 | | |-TextComment 0x5604681482a0 Text=" The entity." | | `-TextComment 0x5604681482c0 Text=" " | |-ParamCommandComment 0x560468148310 [in] implicitly Param="id" ParamIndex=2 | | `-ParagraphComment 0x5604681483c0 | | |-TextComment 0x560468148370 Text=" The component to obtain." | | `-TextComment 0x560468148390 Text=" " | `-BlockCommandComment 0x5604681483e0 Name="return" | `-ParagraphComment 0x560468148440 | `-TextComment 0x560468148410 Text=" The (uninitialized) component pointer." |-FunctionDecl 0x5604680433b8 line:5739:6 ecs_modified_id 'void (ecs_world_t *, ecs_entity_t, ecs_id_t)' | |-ParmVarDecl 0x560468043228 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680432a0 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560468043318 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x5604681488d0 | |-ParagraphComment 0x560468148590 | | |-TextComment 0x560468148510 Text=" Signal that a component has been modified." | | |-TextComment 0x560468148530 Text=" This operation allows an application to signal to Flecs that a component has" | | `-TextComment 0x560468148550 Text=" been modified. As a result, OnSet systems will be invoked." | |-ParagraphComment 0x5604681485e0 | | `-TextComment 0x5604681485b0 Text=" This operation is commonly used together with ecs_get_mut." | |-ParagraphComment 0x560468148630 | | `-TextComment 0x560468148600 Text=" " | |-ParamCommandComment 0x560468148650 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468148700 | | |-TextComment 0x5604681486b0 Text=" The world." | | `-TextComment 0x5604681486d0 Text=" " | |-ParamCommandComment 0x560468148720 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x5604681487d0 | | |-TextComment 0x560468148780 Text=" The entity." | | `-TextComment 0x5604681487a0 Text=" " | `-ParamCommandComment 0x5604681487f0 [in] implicitly Param="id" ParamIndex=2 | `-ParagraphComment 0x560468148880 | `-TextComment 0x560468148850 Text=" The id of the component that was modified." |-FunctionDecl 0x5604680439b8 line:5758:14 ecs_set_id 'ecs_entity_t (ecs_world_t *, ecs_entity_t, ecs_id_t, size_t, const void *)' | |-ParmVarDecl 0x5604680434a8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468043520 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560468043598 col:14 id 'ecs_id_t':'unsigned long' | |-ParmVarDecl 0x5604680437e0 col:12 size 'size_t':'unsigned long' | |-ParmVarDecl 0x560468043860 col:17 ptr 'const void *' | `-FullComment 0x560468148f60 | |-ParagraphComment 0x5604681489c0 | | |-TextComment 0x560468148940 Text=" Set the value of a component." | | |-TextComment 0x560468148960 Text=" This operation allows an application to set the value of a component. The" | | `-TextComment 0x560468148980 Text=" operation is equivalent to calling ecs_get_mut and ecs_modified." | |-ParagraphComment 0x560468148a10 | | `-TextComment 0x5604681489e0 Text=" If the provided entity is 0, a new entity will be created." | |-ParagraphComment 0x560468148a60 | | `-TextComment 0x560468148a30 Text=" " | |-ParamCommandComment 0x560468148a80 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468148b30 | | |-TextComment 0x560468148ae0 Text=" The world." | | `-TextComment 0x560468148b00 Text=" " | |-ParamCommandComment 0x560468148b50 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468148c00 | | |-TextComment 0x560468148bb0 Text=" The entity." | | `-TextComment 0x560468148bd0 Text=" " | |-ParamCommandComment 0x560468148c20 [in] implicitly Param="id" ParamIndex=2 | | `-ParagraphComment 0x560468148cd0 | | |-TextComment 0x560468148c80 Text=" The id of the component to set." | | `-TextComment 0x560468148ca0 Text=" " | |-ParamCommandComment 0x560468148cf0 [in] implicitly Param="size" ParamIndex=3 | | `-ParagraphComment 0x560468148da0 | | |-TextComment 0x560468148d50 Text=" The size of the pointer to the value." | | `-TextComment 0x560468148d70 Text=" " | |-ParamCommandComment 0x560468148dc0 [in] implicitly Param="ptr" ParamIndex=4 | | `-ParagraphComment 0x560468148e70 | | |-TextComment 0x560468148e20 Text=" The pointer to the value." | | `-TextComment 0x560468148e40 Text=" " | `-BlockCommandComment 0x560468148e90 Name="return" | `-ParagraphComment 0x560468148ef0 | `-TextComment 0x560468148ec0 Text=" The entity. A new entity if no entity was provided." |-FunctionDecl 0x560468043ca8 line:5792:6 ecs_is_valid 'bool (const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x560468043b18 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468043b90 col:18 e 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468149490 | |-ParagraphComment 0x560468149020 | | |-TextComment 0x560468148fd0 Text=" Test whether an entity is valid." | | `-TextComment 0x560468148ff0 Text=" Entities that are valid can be used with API functions." | |-ParagraphComment 0x560468149090 | | |-TextComment 0x560468149040 Text=" An entity is valid if it is not 0 and if it is alive. If the provided id is" | | `-TextComment 0x560468149060 Text=" a pair, the contents of the pair will be checked for validity." | |-ParagraphComment 0x560468149150 | | |-TextComment 0x5604681490b0 Text=" is_valid will return true for ids that don't exist (alive or not alive). This" | | |-TextComment 0x5604681490d0 Text=" allows for using ids that have never been created by ecs_new or similar. In" | | |-TextComment 0x5604681490f0 Text=" this the function differs from ecs_is_alive, which will return false for" | | `-TextComment 0x560468149110 Text=" entities that do not yet exist." | |-ParagraphComment 0x5604681491c0 | | |-TextComment 0x560468149170 Text=" The operation will return false for an id that exists and is not alive, as" | | `-TextComment 0x560468149190 Text=" using this id with an API operation would cause it to assert." | |-ParagraphComment 0x560468149210 | | `-TextComment 0x5604681491e0 Text=" " | |-ParamCommandComment 0x560468149230 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681492e0 | | |-TextComment 0x560468149290 Text=" The world." | | `-TextComment 0x5604681492b0 Text=" " | |-ParamCommandComment 0x560468149300 [in] implicitly Param="e" ParamIndex=1 | | `-ParagraphComment 0x5604681493b0 | | |-TextComment 0x560468149360 Text=" The entity." | | `-TextComment 0x560468149380 Text=" " | `-BlockCommandComment 0x5604681493d0 Name="return" | `-ParagraphComment 0x560468149430 | `-TextComment 0x560468149400 Text=" True if the entity is valid, false if the entity is not valid." |-FunctionDecl 0x560468043ea8 line:5805:6 ecs_is_alive 'bool (const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x560468043d98 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468043e10 col:18 e 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468149840 | |-ParagraphComment 0x560468149580 | | |-TextComment 0x560468149500 Text=" Test whether an entity is alive." | | |-TextComment 0x560468149520 Text=" An entity is alive when it has been returned by ecs_new (or similar) or if" | | `-TextComment 0x560468149540 Text=" it is not empty (componentts have been explicitly added to the id)." | |-ParagraphComment 0x5604681495d0 | | `-TextComment 0x5604681495a0 Text=" " | |-ParamCommandComment 0x5604681495f0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681496a0 | | |-TextComment 0x560468149650 Text=" The world." | | `-TextComment 0x560468149670 Text=" " | |-ParamCommandComment 0x5604681496c0 [in] implicitly Param="e" ParamIndex=1 | | `-ParagraphComment 0x560468149770 | | |-TextComment 0x560468149720 Text=" The entity." | | `-TextComment 0x560468149740 Text=" " | `-BlockCommandComment 0x560468149790 Name="return" | `-ParagraphComment 0x5604681497f0 | `-TextComment 0x5604681497c0 Text=" True if the entity is alive, false if the entity is not alive." |-FunctionDecl 0x560468044088 line:5815:10 ecs_strip_generation 'ecs_id_t (ecs_entity_t)' | |-ParmVarDecl 0x560468043f98 col:18 e 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468149ac0 | |-ParagraphComment 0x5604681498e0 | | `-TextComment 0x5604681498b0 Text=" Remove generation from entity id." | |-ParagraphComment 0x560468149930 | | `-TextComment 0x560468149900 Text=" " | |-ParamCommandComment 0x560468149950 [in] implicitly Param="e" ParamIndex=0 | | `-ParagraphComment 0x560468149a00 | | |-TextComment 0x5604681499b0 Text=" The entity id." | | `-TextComment 0x5604681499d0 Text=" " | `-BlockCommandComment 0x560468149a20 Name="return" | `-ParagraphComment 0x560468149a80 | `-TextComment 0x560468149a50 Text=" The entity id without the generation count." |-FunctionDecl 0x560468044278 line:5830:6 ecs_set_entity_generation 'void (ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x560468044168 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680441e0 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468149e70 | |-ParagraphComment 0x560468149bb0 | | |-TextComment 0x560468149b30 Text=" Override the generation of an entity." | | |-TextComment 0x560468149b50 Text=" The generation count of an entity is increased each time an entity is deleted" | | `-TextComment 0x560468149b70 Text=" and is used to test whether an entity id is alive." | |-ParagraphComment 0x560468149c50 | | |-TextComment 0x560468149bd0 Text=" This operation overrides the current generation of an entity with the" | | |-TextComment 0x560468149bf0 Text=" specified generation, which can be useful if an entity is externally managed," | | `-TextComment 0x560468149c10 Text=" like for external pools, savefiles or netcode." | |-ParagraphComment 0x560468149ca0 | | `-TextComment 0x560468149c70 Text=" " | |-ParamCommandComment 0x560468149cc0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468149d70 | | |-TextComment 0x560468149d20 Text=" The world." | | `-TextComment 0x560468149d40 Text=" " | `-ParamCommandComment 0x560468149d90 [in] implicitly Param="entity" ParamIndex=1 | `-ParagraphComment 0x560468149e20 | `-TextComment 0x560468149df0 Text=" Entity for which to set the generation with the new generation." |-FunctionDecl 0x5604680444f8 line:5851:14 ecs_get_alive 'ecs_entity_t (const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x560468044368 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680443e0 col:18 e 'ecs_entity_t':'unsigned long' | `-FullComment 0x56046814a370 | |-ParagraphComment 0x560468149f80 | | |-TextComment 0x560468149ee0 Text=" Get alive identifier." | | |-TextComment 0x560468149f00 Text=" In some cases an application may need to work with identifiers from which" | | |-TextComment 0x560468149f20 Text=" the generation has been stripped. A typical scenario in which this happens is" | | `-TextComment 0x560468149f40 Text=" when iterating relationships in an entity type." | |-ParagraphComment 0x56046814a040 | | |-TextComment 0x560468149fa0 Text=" For example, when obtaining the parent id from a ChildOf relationship, the parent" | | |-TextComment 0x560468149fc0 Text=" (second element of the pair) will have been stored in a 32 bit value, which " | | |-TextComment 0x560468149fe0 Text=" cannot store the entity generation. This function can retrieve the identifier" | | `-TextComment 0x56046814a000 Text=" with the current generation for that id." | |-ParagraphComment 0x56046814a090 | | `-TextComment 0x56046814a060 Text=" If the provided identifier is not alive, the function will return 0." | |-ParagraphComment 0x56046814a0e0 | | `-TextComment 0x56046814a0b0 Text=" " | |-ParamCommandComment 0x56046814a100 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814a1b0 | | |-TextComment 0x56046814a160 Text=" The world." | | `-TextComment 0x56046814a180 Text=" " | |-ParamCommandComment 0x56046814a1d0 [in] implicitly Param="e" ParamIndex=1 | | `-ParagraphComment 0x56046814a290 | | |-TextComment 0x56046814a230 Text=" The for which to obtain the current alive entity id." | | `-TextComment 0x56046814a250 Text=" " | `-BlockCommandComment 0x56046814a2b0 Name="return" | `-ParagraphComment 0x56046814a310 | `-TextComment 0x56046814a2e0 Text=" The alive entity id if there is one, or 0 if the id is not alive." |-FunctionDecl 0x5604680446f8 line:5876:6 ecs_ensure 'void (ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x5604680445e8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468044660 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x56046814a870 | |-ParagraphComment 0x56046814a480 | | |-TextComment 0x56046814a3e0 Text=" Ensure id is alive." | | |-TextComment 0x56046814a400 Text=" This operation ensures that the provided id is alive. This is useful in" | | |-TextComment 0x56046814a420 Text=" scenarios where an application has an existing id that has not been created" | | `-TextComment 0x56046814a440 Text=" with ecs_new (such as a global constant or an id from a remote application)." | |-ParagraphComment 0x56046814a4f0 | | |-TextComment 0x56046814a4a0 Text=" When this operation is successful it guarantees that the provided id exists, " | | `-TextComment 0x56046814a4c0 Text=" is valid and is alive." | |-ParagraphComment 0x56046814a560 | | |-TextComment 0x56046814a510 Text=" Before this operation the id must either not be alive or have a generation" | | `-TextComment 0x56046814a530 Text=" that is equal to the passed in entity." | |-ParagraphComment 0x56046814a5d0 | | |-TextComment 0x56046814a580 Text=" If the provided id has a non-zero generation count and the id does not exist" | | `-TextComment 0x56046814a5a0 Text=" in the world, the id will be created with the specified generation." | |-ParagraphComment 0x56046814a640 | | |-TextComment 0x56046814a5f0 Text=" If the provided id is alive and has a generation count that does not match" | | `-TextComment 0x56046814a610 Text=" the provided id, the operation will fail." | |-ParagraphComment 0x56046814a690 | | `-TextComment 0x56046814a660 Text=" " | |-ParamCommandComment 0x56046814a6b0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814a760 | | |-TextComment 0x56046814a710 Text=" The world." | | `-TextComment 0x56046814a730 Text=" " | `-ParamCommandComment 0x56046814a780 [in] implicitly Param="entity" ParamIndex=1 | `-ParagraphComment 0x56046814a810 | `-TextComment 0x56046814a7e0 Text=" The entity id to make alive." |-FunctionDecl 0x560467f6cfe0 line:5899:6 ecs_ensure_id 'void (ecs_world_t *, ecs_id_t)' | |-ParmVarDecl 0x560467f6ced0 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560467f6cf48 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x56046814ad40 | |-ParagraphComment 0x56046814a960 | | |-TextComment 0x56046814a8e0 Text=" Same as ecs_ensure, but for (component) ids." | | |-TextComment 0x56046814a900 Text=" An id can be an entity or pair, and can contain id flags. This operation" | | `-TextComment 0x56046814a920 Text=" ensures that the entity (or entities, for a pair) are alive." | |-ParagraphComment 0x56046814a9d0 | | |-TextComment 0x56046814a980 Text=" When this operation is successful it guarantees that the provided id can be" | | `-TextComment 0x56046814a9a0 Text=" used in operations that accept an id." | |-ParagraphComment 0x56046814aa70 | | |-TextComment 0x56046814a9f0 Text=" Since entities in a pair do not encode their generation ids, this operation" | | |-TextComment 0x56046814aa10 Text=" will not fail when an entity with non-zero generation count already exists in" | | `-TextComment 0x56046814aa30 Text=" the world. " | |-ParagraphComment 0x56046814ab10 | | |-TextComment 0x56046814aa90 Text=" This is different from ecs_ensure, which will fail if attempted with an id" | | |-TextComment 0x56046814aab0 Text=" that has generation 0 and an entity with a non-zero generation is currently " | | `-TextComment 0x56046814aad0 Text=" alive." | |-ParagraphComment 0x56046814ab60 | | `-TextComment 0x56046814ab30 Text=" " | |-ParamCommandComment 0x56046814ab80 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814ac30 | | |-TextComment 0x56046814abe0 Text=" The world." | | `-TextComment 0x56046814ac00 Text=" " | `-ParamCommandComment 0x56046814ac50 [in] implicitly Param="id" ParamIndex=1 | `-ParagraphComment 0x56046814ace0 | `-TextComment 0x56046814acb0 Text=" The id to make alive." |-FunctionDecl 0x560467f6d1d8 line:5911:6 ecs_exists 'bool (const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x560467f6d0c8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f6d140 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x56046814b0c0 | |-ParagraphComment 0x56046814ae00 | | |-TextComment 0x56046814adb0 Text=" Test whether an entity exists." | | `-TextComment 0x56046814add0 Text=" Similar as ecs_is_alive, but ignores entity generation count." | |-ParagraphComment 0x56046814ae50 | | `-TextComment 0x56046814ae20 Text=" " | |-ParamCommandComment 0x56046814ae70 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814af20 | | |-TextComment 0x56046814aed0 Text=" The world." | | `-TextComment 0x56046814aef0 Text=" " | |-ParamCommandComment 0x56046814af40 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x56046814aff0 | | |-TextComment 0x56046814afa0 Text=" The entity." | | `-TextComment 0x56046814afc0 Text=" " | `-BlockCommandComment 0x56046814b010 Name="return" | `-ParagraphComment 0x56046814b070 | `-TextComment 0x56046814b040 Text=" True if the entity exists, false if the entity does not exist." |-FunctionDecl 0x560467f6d538 line:5930:19 ecs_get_type 'const ecs_type_t *(const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x560467f6d350 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f6d3c8 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x56046814b420 | |-ParagraphComment 0x56046814b160 | | `-TextComment 0x56046814b130 Text=" Get the type of an entity." | |-ParagraphComment 0x56046814b1b0 | | `-TextComment 0x56046814b180 Text=" " | |-ParamCommandComment 0x56046814b1d0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814b280 | | |-TextComment 0x56046814b230 Text=" The world." | | `-TextComment 0x56046814b250 Text=" " | |-ParamCommandComment 0x56046814b2a0 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x56046814b350 | | |-TextComment 0x56046814b300 Text=" The entity." | | `-TextComment 0x56046814b320 Text=" " | `-BlockCommandComment 0x56046814b370 Name="return" | `-ParagraphComment 0x56046814b3d0 | `-TextComment 0x56046814b3a0 Text=" The type of the entity, NULL if the entity has no components." |-FunctionDecl 0x560467f6d7b8 line:5941:14 ecs_get_table 'ecs_table_t *(const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x560467f6d628 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f6d6a0 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x56046814b780 | |-ParagraphComment 0x56046814b4c0 | | `-TextComment 0x56046814b490 Text=" Get the table of an entity." | |-ParagraphComment 0x56046814b510 | | `-TextComment 0x56046814b4e0 Text=" " | |-ParamCommandComment 0x56046814b530 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814b5e0 | | |-TextComment 0x56046814b590 Text=" The world." | | `-TextComment 0x56046814b5b0 Text=" " | |-ParamCommandComment 0x56046814b600 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x56046814b6b0 | | |-TextComment 0x56046814b660 Text=" The entity." | | `-TextComment 0x56046814b680 Text=" " | `-BlockCommandComment 0x56046814b6d0 Name="return" | `-ParagraphComment 0x56046814b730 | `-TextComment 0x56046814b700 Text=" The table of the entity, NULL if the entity has no components/tags." |-FunctionDecl 0x560467f6da40 line:5953:7 ecs_type_str 'char *(const ecs_world_t *, const ecs_type_t *)' | |-ParmVarDecl 0x560467f6d8a8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f6d920 col:23 type 'const ecs_type_t *' | `-FullComment 0x56046814bb00 | |-ParagraphComment 0x56046814b840 | | |-TextComment 0x56046814b7f0 Text=" Convert type to string." | | `-TextComment 0x56046814b810 Text=" The result of this operation must be freed with ecs_os_free." | |-ParagraphComment 0x56046814b890 | | `-TextComment 0x56046814b860 Text=" " | |-ParamCommandComment 0x56046814b8b0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814b960 | | |-TextComment 0x56046814b910 Text=" The world." | | `-TextComment 0x56046814b930 Text=" " | |-ParamCommandComment 0x56046814b980 [in] implicitly Param="type" ParamIndex=1 | | `-ParagraphComment 0x56046814ba30 | | |-TextComment 0x56046814b9e0 Text=" The type." | | `-TextComment 0x56046814ba00 Text=" " | `-BlockCommandComment 0x56046814ba50 Name="return" | `-ParagraphComment 0x56046814bab0 | `-TextComment 0x56046814ba80 Text=" The stringified type." |-FunctionDecl 0x560467f6dcc0 line:5966:7 ecs_table_str 'char *(const ecs_world_t *, const ecs_table_t *)' | |-ParmVarDecl 0x560467f6db28 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f6dba0 col:24 table 'const ecs_table_t *' | `-FullComment 0x56046814beb0 | |-ParagraphComment 0x56046814bbf0 | | |-TextComment 0x56046814bb70 Text=" Convert table to string." | | |-TextComment 0x56046814bb90 Text=" Same as ecs_type_str(world, ecs_table_get_type(table)). The result of this" | | `-TextComment 0x56046814bbb0 Text=" operation must be freed with ecs_os_free." | |-ParagraphComment 0x56046814bc40 | | `-TextComment 0x56046814bc10 Text=" " | |-ParamCommandComment 0x56046814bc60 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814bd10 | | |-TextComment 0x56046814bcc0 Text=" The world." | | `-TextComment 0x56046814bce0 Text=" " | |-ParamCommandComment 0x56046814bd30 [in] implicitly Param="table" ParamIndex=1 | | `-ParagraphComment 0x56046814bde0 | | |-TextComment 0x56046814bd90 Text=" The table." | | `-TextComment 0x56046814bdb0 Text=" " | `-BlockCommandComment 0x56046814be00 Name="return" | `-ParagraphComment 0x56046814be60 | `-TextComment 0x56046814be30 Text=" The stringified table type." |-FunctionDecl 0x560467f6e180 line:5982:7 ecs_entity_str 'char *(const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x560467f6dda8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f6de20 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x56046814c2f0 | |-ParagraphComment 0x56046814bfc0 | | |-TextComment 0x56046814bf20 Text=" Convert entity to string." | | |-TextComment 0x56046814bf40 Text=" Same as combining:" | | |-TextComment 0x56046814bf60 Text=" - ecs_get_fullpath(world, entity)" | | `-TextComment 0x56046814bf80 Text=" - ecs_type_str(world, ecs_get_type(world, entity))" | |-ParagraphComment 0x56046814c010 | | `-TextComment 0x56046814bfe0 Text=" The result of this operation must be freed with ecs_os_free." | |-ParagraphComment 0x56046814c060 | | `-TextComment 0x56046814c030 Text=" " | |-ParamCommandComment 0x56046814c080 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814c130 | | |-TextComment 0x56046814c0e0 Text=" The world." | | `-TextComment 0x56046814c100 Text=" " | |-ParamCommandComment 0x56046814c150 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x56046814c200 | | |-TextComment 0x56046814c1b0 Text=" The entity." | | `-TextComment 0x56046814c1d0 Text=" " | `-BlockCommandComment 0x56046814c220 Name="return" | `-ParagraphComment 0x56046814c2a0 | `-TextComment 0x56046814c250 Text=" The entity path with stringified type." |-FunctionDecl 0x560467f6e3f8 line:5996:6 ecs_has_id 'bool (const ecs_world_t *, ecs_entity_t, ecs_id_t)' | |-ParmVarDecl 0x560467f6e268 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f6e2e0 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560467f6e358 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x56046814c770 | |-ParagraphComment 0x56046814c3e0 | | |-TextComment 0x56046814c360 Text=" Test if an entity has an entity." | | |-TextComment 0x56046814c380 Text=" This operation returns true if the entity has the provided entity in its " | | `-TextComment 0x56046814c3a0 Text=" type." | |-ParagraphComment 0x56046814c430 | | `-TextComment 0x56046814c400 Text=" " | |-ParamCommandComment 0x56046814c450 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814c500 | | |-TextComment 0x56046814c4b0 Text=" The world." | | `-TextComment 0x56046814c4d0 Text=" " | |-ParamCommandComment 0x56046814c520 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x56046814c5d0 | | |-TextComment 0x56046814c580 Text=" The entity." | | `-TextComment 0x56046814c5a0 Text=" " | |-ParamCommandComment 0x56046814c5f0 [in] implicitly Param="id" ParamIndex=2 | | `-ParagraphComment 0x56046814c6a0 | | |-TextComment 0x56046814c650 Text=" The id to test for." | | `-TextComment 0x56046814c670 Text=" " | `-BlockCommandComment 0x56046814c6c0 Name="return" | `-ParagraphComment 0x56046814c720 | `-TextComment 0x56046814c6f0 Text=" True if the entity has the entity, false if not." |-FunctionDecl 0x560467f6e798 line:6016:14 ecs_get_target 'ecs_entity_t (const ecs_world_t *, ecs_entity_t, ecs_entity_t, int32_t)' | |-ParmVarDecl 0x560467f6e4e8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f6e560 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560467f6e5d8 col:18 rel 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560467f6e650 col:13 index 'int32_t':'int' | `-FullComment 0x56046814cd60 | |-ParagraphComment 0x56046814c880 | | |-TextComment 0x56046814c7e0 Text=" Get the target of a relationship." | | |-TextComment 0x56046814c800 Text=" This will return a target (second element of a pair) of the entity for the " | | |-TextComment 0x56046814c820 Text=" specified relationship. The index allows for iterating through the targets, if a " | | `-TextComment 0x56046814c840 Text=" single entity has multiple targets for the same relationship." | |-ParagraphComment 0x56046814c8f0 | | |-TextComment 0x56046814c8a0 Text=" If the index is larger than the total number of instances the entity has for" | | `-TextComment 0x56046814c8c0 Text=" the relationship, the operation will return 0." | |-ParagraphComment 0x56046814c940 | | `-TextComment 0x56046814c910 Text=" " | |-ParamCommandComment 0x56046814c960 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814ca10 | | |-TextComment 0x56046814c9c0 Text=" The world." | | `-TextComment 0x56046814c9e0 Text=" " | |-ParamCommandComment 0x56046814ca30 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x56046814cae0 | | |-TextComment 0x56046814ca90 Text=" The entity." | | `-TextComment 0x56046814cab0 Text=" " | |-ParamCommandComment 0x56046814cb00 [in] implicitly Param="rel" ParamIndex=2 | | `-ParagraphComment 0x56046814cbb0 | | |-TextComment 0x56046814cb60 Text=" The relationship between the entity and the target." | | `-TextComment 0x56046814cb80 Text=" " | |-ParamCommandComment 0x56046814cbd0 [in] implicitly Param="index" ParamIndex=3 | | `-ParagraphComment 0x56046814cc80 | | |-TextComment 0x56046814cc30 Text=" The index of the relationship instance." | | `-TextComment 0x56046814cc50 Text=" " | `-BlockCommandComment 0x56046814cca0 Name="return" | `-ParagraphComment 0x56046814cd00 | `-TextComment 0x56046814ccd0 Text=" The target for the relationship at the specified index." |-FunctionDecl 0x560467f6eb48 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 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f6e910 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560467f6e988 col:18 rel 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560467f6ea00 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x56046814d400 | |-ParagraphComment 0x56046814cea0 | | |-TextComment 0x56046814cdd0 Text=" Get the target of a relationship for a given id." | | |-TextComment 0x56046814cdf0 Text=" This operation returns the first entity that has the provided id by following" | | |-TextComment 0x56046814ce10 Text=" the specified relationship. If the entity itself has the id then entity will" | | |-TextComment 0x56046814ce30 Text=" be returned. If the id cannot be found on the entity or by following the" | | `-TextComment 0x56046814ce50 Text=" relationship, the operation will return 0." | |-ParagraphComment 0x56046814cf10 | | |-TextComment 0x56046814cec0 Text=" This operation can be used to lookup, for example, which prefab is providing" | | `-TextComment 0x56046814cee0 Text=" a component by specifying the IsA relationship:" | |-ParagraphComment 0x56046814cf80 | | |-TextComment 0x56046814cf30 Text=" // Is Position provided by the entity or one of its base entities?" | | `-TextComment 0x56046814cf50 Text=" ecs_get_target_for_id(world, entity, EcsIsA, ecs_id(Position))" | |-ParagraphComment 0x56046814cfd0 | | `-TextComment 0x56046814cfa0 Text=" " | |-ParamCommandComment 0x56046814cff0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814d0a0 | | |-TextComment 0x56046814d050 Text=" The world." | | `-TextComment 0x56046814d070 Text=" " | |-ParamCommandComment 0x56046814d0c0 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x56046814d170 | | |-TextComment 0x56046814d120 Text=" The entity." | | `-TextComment 0x56046814d140 Text=" " | |-ParamCommandComment 0x56046814d190 [in] implicitly Param="rel" ParamIndex=2 | | `-ParagraphComment 0x56046814d240 | | |-TextComment 0x56046814d1f0 Text=" The relationship to follow." | | `-TextComment 0x56046814d210 Text=" " | |-ParamCommandComment 0x56046814d260 [in] implicitly Param="id" ParamIndex=3 | | `-ParagraphComment 0x56046814d310 | | |-TextComment 0x56046814d2c0 Text=" The id to lookup." | | `-TextComment 0x56046814d2e0 Text=" " | `-BlockCommandComment 0x56046814d330 Name="return" | `-ParagraphComment 0x56046814d390 | `-TextComment 0x56046814d360 Text=" The entity for which the target has been found." |-FunctionDecl 0x560467f6ee58 line:6058:9 ecs_get_depth 'int32_t (const ecs_world_t *, ecs_entity_t, ecs_entity_t)' | |-ParmVarDecl 0x560467f6ec48 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f6ecc0 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560467f6ed38 col:18 rel 'ecs_entity_t':'unsigned long' | `-FullComment 0x56046814d8a0 | |-ParagraphComment 0x56046814d510 | | |-TextComment 0x56046814d470 Text=" Return depth for entity in tree for relationship rel." | | |-TextComment 0x56046814d490 Text=" Depth is determined by counting the number of targets encountered while " | | |-TextComment 0x56046814d4b0 Text=" traversing up the relationship tree for rel. Only acyclic relationships are" | | `-TextComment 0x56046814d4d0 Text=" supported." | |-ParagraphComment 0x56046814d560 | | `-TextComment 0x56046814d530 Text=" " | |-ParamCommandComment 0x56046814d580 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814d630 | | |-TextComment 0x56046814d5e0 Text=" The world." | | `-TextComment 0x56046814d600 Text=" " | |-ParamCommandComment 0x56046814d650 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x56046814d700 | | |-TextComment 0x56046814d6b0 Text=" The entity." | | `-TextComment 0x56046814d6d0 Text=" " | |-ParamCommandComment 0x56046814d720 [in] implicitly Param="rel" ParamIndex=2 | | `-ParagraphComment 0x56046814d7d0 | | |-TextComment 0x56046814d780 Text=" The relationship." | | `-TextComment 0x56046814d7a0 Text=" " | `-BlockCommandComment 0x56046814d7f0 Name="return" | `-ParagraphComment 0x56046814d850 | `-TextComment 0x56046814d820 Text=" The depth of the entity in the tree." |-FunctionDecl 0x560467f6f250 line:6071:9 ecs_count_id 'int32_t (const ecs_world_t *, ecs_id_t)' | |-ParmVarDecl 0x560467f6ef48 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f6efc0 col:14 entity 'ecs_id_t':'unsigned long' | `-FullComment 0x56046814dc20 | |-ParagraphComment 0x56046814d960 | | |-TextComment 0x56046814d910 Text=" Count entities that have the specified id." | | `-TextComment 0x56046814d930 Text=" Returns the number of entities that have the specified id." | |-ParagraphComment 0x56046814d9b0 | | `-TextComment 0x56046814d980 Text=" " | |-ParamCommandComment 0x56046814d9d0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814da80 | | |-TextComment 0x56046814da30 Text=" The world." | | `-TextComment 0x56046814da50 Text=" " | |-ParamCommandComment 0x56046814daa0 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x56046814db50 | | |-TextComment 0x56046814db00 Text=" The id to search for." | | `-TextComment 0x56046814db20 Text=" " | `-BlockCommandComment 0x56046814db70 Name="return" | `-ParagraphComment 0x56046814dbd0 | `-TextComment 0x56046814dba0 Text=" The number of entities that have the id." |-FunctionDecl 0x560467f6f530 line:6092:13 ecs_get_name 'const char *(const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x560467f6f398 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f6f410 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x56046814dfa0 | |-ParagraphComment 0x56046814dce0 | | |-TextComment 0x56046814dc90 Text=" Get the name of an entity." | | `-TextComment 0x56046814dcb0 Text=" This will return the name stored in (EcsIdentifier, EcsName)." | |-ParagraphComment 0x56046814dd30 | | `-TextComment 0x56046814dd00 Text=" " | |-ParamCommandComment 0x56046814dd50 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814de00 | | |-TextComment 0x56046814ddb0 Text=" The world." | | `-TextComment 0x56046814ddd0 Text=" " | |-ParamCommandComment 0x56046814de20 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x56046814ded0 | | |-TextComment 0x56046814de80 Text=" The entity." | | `-TextComment 0x56046814dea0 Text=" " | `-BlockCommandComment 0x56046814def0 Name="return" | `-ParagraphComment 0x56046814df50 | `-TextComment 0x56046814df20 Text=" The type of the entity, NULL if the entity has no name." |-FunctionDecl 0x560467f6f730 line:6104:13 ecs_get_symbol 'const char *(const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x560467f6f618 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f6f690 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x56046814e330 | |-ParagraphComment 0x56046814e060 | | |-TextComment 0x56046814e010 Text=" Get the symbol of an entity." | | `-TextComment 0x56046814e030 Text=" This will return the symbol stored in (EcsIdentifier, EcsSymbol)." | |-ParagraphComment 0x56046814e0b0 | | `-TextComment 0x56046814e080 Text=" " | |-ParamCommandComment 0x56046814e0d0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814e180 | | |-TextComment 0x56046814e130 Text=" The world." | | `-TextComment 0x56046814e150 Text=" " | |-ParamCommandComment 0x56046814e1a0 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x56046814e250 | | |-TextComment 0x56046814e200 Text=" The entity." | | `-TextComment 0x56046814e220 Text=" " | `-BlockCommandComment 0x56046814e270 Name="return" | `-ParagraphComment 0x56046814e2e0 | `-TextComment 0x56046814e2b0 Text=" The type of the entity, NULL if the entity has no name." |-FunctionDecl 0x560467f6fa38 line:6120:14 ecs_set_name 'ecs_entity_t (ecs_world_t *, ecs_entity_t, const char *)' | |-ParmVarDecl 0x560467f6f818 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560467f6f890 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560467f6f910 col:17 name 'const char *' | `-FullComment 0x56046814e810 | |-ParagraphComment 0x56046814e420 | | |-TextComment 0x56046814e3a0 Text=" Set the name of an entity." | | |-TextComment 0x56046814e3c0 Text=" This will set or overwrite the name of an entity. If no entity is provided," | | `-TextComment 0x56046814e3e0 Text=" a new entity will be created." | |-ParagraphComment 0x56046814e470 | | `-TextComment 0x56046814e440 Text=" The name is stored in (EcsIdentifier, EcsName)." | |-ParagraphComment 0x56046814e4c0 | | `-TextComment 0x56046814e490 Text=" " | |-ParamCommandComment 0x56046814e4e0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814e590 | | |-TextComment 0x56046814e540 Text=" The world." | | `-TextComment 0x56046814e560 Text=" " | |-ParamCommandComment 0x56046814e5b0 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x56046814e660 | | |-TextComment 0x56046814e610 Text=" The entity." | | `-TextComment 0x56046814e630 Text=" " | |-ParamCommandComment 0x56046814e680 [in] implicitly Param="name" ParamIndex=2 | | `-ParagraphComment 0x56046814e730 | | |-TextComment 0x56046814e6e0 Text=" The name." | | `-TextComment 0x56046814e700 Text=" " | `-BlockCommandComment 0x56046814e750 Name="return" | `-ParagraphComment 0x56046814e7b0 | `-TextComment 0x56046814e780 Text=" The provided entity, or a new entity if 0 was provided." |-FunctionDecl 0x560467f6fcc0 line:6137:14 ecs_set_symbol 'ecs_entity_t (ecs_world_t *, ecs_entity_t, const char *)' | |-ParmVarDecl 0x560467f6fb28 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560467f6fba0 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560467f6fc20 col:17 symbol 'const char *' | `-FullComment 0x56046814ecf0 | |-ParagraphComment 0x56046814e900 | | |-TextComment 0x56046814e880 Text=" Set the symbol of an entity." | | |-TextComment 0x56046814e8a0 Text=" This will set or overwrite the symbol of an entity. If no entity is provided," | | `-TextComment 0x56046814e8c0 Text=" a new entity will be created." | |-ParagraphComment 0x56046814e950 | | `-TextComment 0x56046814e920 Text=" The symbol is stored in (EcsIdentifier, EcsSymbol)." | |-ParagraphComment 0x56046814e9a0 | | `-TextComment 0x56046814e970 Text=" " | |-ParamCommandComment 0x56046814e9c0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814ea70 | | |-TextComment 0x56046814ea20 Text=" The world." | | `-TextComment 0x56046814ea40 Text=" " | |-ParamCommandComment 0x56046814ea90 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x56046814eb40 | | |-TextComment 0x56046814eaf0 Text=" The entity." | | `-TextComment 0x56046814eb10 Text=" " | |-ParamCommandComment 0x56046814eb60 [in] implicitly Param="symbol" ParamIndex=2 | | `-ParagraphComment 0x56046814ec10 | | |-TextComment 0x56046814ebc0 Text=" The symbol." | | `-TextComment 0x56046814ebe0 Text=" " | `-BlockCommandComment 0x56046814ec30 Name="return" | `-ParagraphComment 0x56046814ec90 | `-TextComment 0x56046814ec60 Text=" The provided entity, or a new entity if 0 was provided." |-FunctionDecl 0x560467f6ffd8 line:6154:6 ecs_set_alias 'void (ecs_world_t *, ecs_entity_t, const char *)' | |-ParmVarDecl 0x560467f6fdb8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560467f6fe30 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560467f6feb0 col:17 alias 'const char *' | `-FullComment 0x56046814f140 | |-ParagraphComment 0x56046814ee00 | | |-TextComment 0x56046814ed60 Text=" Set alias for entity. " | | |-TextComment 0x56046814ed80 Text=" An entity can be looked up using its alias from the root scope without " | | |-TextComment 0x56046814eda0 Text=" providing the fully qualified name if its parent. An entity can only have" | | `-TextComment 0x56046814edc0 Text=" a single alias." | |-ParagraphComment 0x56046814ee50 | | `-TextComment 0x56046814ee20 Text=" The symbol is stored in (EcsIdentifier, EcsAlias)." | |-ParagraphComment 0x56046814eea0 | | `-TextComment 0x56046814ee70 Text=" " | |-ParamCommandComment 0x56046814eec0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814ef70 | | |-TextComment 0x56046814ef20 Text=" The world." | | `-TextComment 0x56046814ef40 Text=" " | |-ParamCommandComment 0x56046814ef90 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x56046814f040 | | |-TextComment 0x56046814eff0 Text=" The entity." | | `-TextComment 0x56046814f010 Text=" " | `-ParamCommandComment 0x56046814f060 [in] implicitly Param="alias" ParamIndex=2 | `-ParagraphComment 0x56046814f0f0 | `-TextComment 0x56046814f0c0 Text=" The alias." |-FunctionDecl 0x560467f70498 line:6168:14 ecs_lookup 'ecs_entity_t (const ecs_world_t *, const char *)' | |-ParmVarDecl 0x560467f700c8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f70148 col:17 name 'const char *' | `-FullComment 0x56046814f4f0 | |-ParagraphComment 0x56046814f230 | | |-TextComment 0x56046814f1b0 Text=" Lookup an entity by name." | | |-TextComment 0x56046814f1d0 Text=" Returns an entity that matches the specified name. Only looks for entities in" | | `-TextComment 0x56046814f1f0 Text=" the current scope (root if no scope is provided)." | |-ParagraphComment 0x56046814f280 | | `-TextComment 0x56046814f250 Text=" " | |-ParamCommandComment 0x56046814f2a0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814f350 | | |-TextComment 0x56046814f300 Text=" The world." | | `-TextComment 0x56046814f320 Text=" " | |-ParamCommandComment 0x56046814f370 [in] implicitly Param="name" ParamIndex=1 | | `-ParagraphComment 0x56046814f420 | | |-TextComment 0x56046814f3d0 Text=" The entity name." | | `-TextComment 0x56046814f3f0 Text=" " | `-BlockCommandComment 0x56046814f440 Name="return" | `-ParagraphComment 0x56046814f4a0 | `-TextComment 0x56046814f470 Text=" The entity with the specified name, or 0 if no entity was found." |-FunctionDecl 0x560467f707a8 line:6182:14 ecs_lookup_child 'ecs_entity_t (const ecs_world_t *, ecs_entity_t, const char *)' | |-ParmVarDecl 0x560467f70588 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f70600 col:18 parent 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560467f70680 col:17 name 'const char *' | `-FullComment 0x56046814f8c0 | |-ParagraphComment 0x56046814f600 | | |-TextComment 0x56046814f560 Text=" Lookup a child entity by name." | | |-TextComment 0x56046814f580 Text=" Returns an entity that matches the specified name. Only looks for entities in" | | |-TextComment 0x56046814f5a0 Text=" the provided parent. If no parent is provided, look in the current scope (" | | `-TextComment 0x56046814f5c0 Text=" root if no scope is provided)." | |-ParagraphComment 0x56046814f650 | | `-TextComment 0x56046814f620 Text=" " | |-ParamCommandComment 0x56046814f670 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814f720 | | |-TextComment 0x56046814f6d0 Text=" The world." | | `-TextComment 0x56046814f6f0 Text=" " | |-ParamCommandComment 0x56046814f740 [in] implicitly Param="name" ParamIndex=2 | | `-ParagraphComment 0x56046814f7f0 | | |-TextComment 0x56046814f7a0 Text=" The entity name." | | `-TextComment 0x56046814f7c0 Text=" " | `-BlockCommandComment 0x56046814f810 Name="return" | `-ParagraphComment 0x56046814f870 | `-TextComment 0x56046814f840 Text=" The entity with the specified name, or 0 if no entity was found." |-FunctionDecl 0x560467f70c78 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 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f70910 col:18 parent 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560467f70990 col:17 path 'const char *' | |-ParmVarDecl 0x560467f70a10 col:17 sep 'const char *' | |-ParmVarDecl 0x560467f70a90 col:17 prefix 'const char *' | |-ParmVarDecl 0x560467f70b08 col:10 recursive 'bool' | `-FullComment 0x5604681500b0 | |-ParagraphComment 0x56046814f9d0 | | |-TextComment 0x56046814f930 Text=" Lookup an entity from a path." | | |-TextComment 0x56046814f950 Text=" Lookup an entity from a provided path, relative to the provided parent. The" | | |-TextComment 0x56046814f970 Text=" operation will use the provided separator to tokenize the path expression. If" | | `-TextComment 0x56046814f990 Text=" the provided path contains the prefix, the search will start from the root." | |-ParagraphComment 0x56046814fa90 | | |-TextComment 0x56046814f9f0 Text=" If the entity is not found in the provided parent, the operation will " | | |-TextComment 0x56046814fa10 Text=" continue to search in the parent of the parent, until the root is reached. If" | | |-TextComment 0x56046814fa30 Text=" the entity is still not found, the lookup will search in the flecs.core" | | `-TextComment 0x56046814fa50 Text=" scope. If the entity is not found there either, the function returns 0." | |-ParagraphComment 0x56046814fae0 | | `-TextComment 0x56046814fab0 Text=" " | |-ParamCommandComment 0x56046814fb00 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046814fbb0 | | |-TextComment 0x56046814fb60 Text=" The world." | | `-TextComment 0x56046814fb80 Text=" " | |-ParamCommandComment 0x56046814fbd0 [in] implicitly Param="parent" ParamIndex=1 | | `-ParagraphComment 0x56046814fc80 | | |-TextComment 0x56046814fc30 Text=" The entity from which to resolve the path." | | `-TextComment 0x56046814fc50 Text=" " | |-ParamCommandComment 0x56046814fca0 [in] implicitly Param="path" ParamIndex=2 | | `-ParagraphComment 0x56046814fd50 | | |-TextComment 0x56046814fd00 Text=" The path to resolve." | | `-TextComment 0x56046814fd20 Text=" " | |-ParamCommandComment 0x56046814fd70 [in] implicitly Param="sep" ParamIndex=3 | | `-ParagraphComment 0x56046814fe20 | | |-TextComment 0x56046814fdd0 Text=" The path separator." | | `-TextComment 0x56046814fdf0 Text=" " | |-ParamCommandComment 0x56046814fe40 [in] implicitly Param="prefix" ParamIndex=4 | | `-ParagraphComment 0x56046814fef0 | | |-TextComment 0x56046814fea0 Text=" The path prefix." | | `-TextComment 0x56046814fec0 Text=" " | |-ParamCommandComment 0x56046814ff10 [in] implicitly Param="recursive" ParamIndex=5 | | `-ParagraphComment 0x56046814ffc0 | | |-TextComment 0x56046814ff70 Text=" Recursively traverse up the tree until entity is found." | | `-TextComment 0x56046814ff90 Text=" " | `-BlockCommandComment 0x56046814ffe0 Name="return" | `-ParagraphComment 0x560468150040 | `-TextComment 0x560468150010 Text=" The entity if found, else 0." |-FunctionDecl 0x560467f70fa8 line:6222:14 ecs_lookup_symbol 'ecs_entity_t (const ecs_world_t *, const char *, bool)' | |-ParmVarDecl 0x560467f70d88 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f70e08 col:17 symbol 'const char *' | |-ParmVarDecl 0x560467f70e80 col:10 lookup_as_path 'bool' | `-FullComment 0x560468150240 | |-ParagraphComment 0x5604681501a0 | | |-TextComment 0x560468150120 Text=" Lookup an entity by its symbol name." | | |-TextComment 0x560468150140 Text=" This looks up an entity by symbol stored in (EcsIdentifier, EcsSymbol). The" | | `-TextComment 0x560468150160 Text=" operation does not take into account hierarchies." | `-ParagraphComment 0x560468150210 | |-TextComment 0x5604681501c0 Text=" This operation can be useful to resolve, for example, a type by its C " | `-TextComment 0x5604681501e0 Text=" identifier, which does not include the Flecs namespacing." |-FunctionDecl 0x560467f71540 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 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f71110 col:18 parent 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560467f71188 col:18 child 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560467f71208 col:17 sep 'const char *' | |-ParmVarDecl 0x560467f71288 col:17 prefix 'const char *' | `-FullComment 0x5604681509d0 | |-ParagraphComment 0x560468150390 | | |-TextComment 0x5604681502c0 Text=" Get a path identifier for an entity." | | |-TextComment 0x5604681502e0 Text=" This operation creates a path that contains the names of the entities from" | | |-TextComment 0x560468150300 Text=" the specified parent to the provided entity, separated by the provided " | | |-TextComment 0x560468150320 Text=" separator. If no parent is provided the path will be relative to the root. If" | | `-TextComment 0x560468150340 Text=" a prefix is provided, the path will be prefixed by the prefix." | |-ParagraphComment 0x560468150430 | | |-TextComment 0x5604681503b0 Text=" If the parent is equal to the provided child, the operation will return an" | | |-TextComment 0x5604681503d0 Text=" empty string. If a nonzero component is provided, the path will be created by " | | `-TextComment 0x5604681503f0 Text=" looking for parents with that component." | |-ParagraphComment 0x560468150480 | | `-TextComment 0x560468150450 Text=" The returned path should be freed by the application." | |-ParagraphComment 0x5604681504d0 | | `-TextComment 0x5604681504a0 Text=" " | |-ParamCommandComment 0x5604681504f0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681505a0 | | |-TextComment 0x560468150550 Text=" The world." | | `-TextComment 0x560468150570 Text=" " | |-ParamCommandComment 0x5604681505c0 [in] implicitly Param="parent" ParamIndex=1 | | `-ParagraphComment 0x560468150670 | | |-TextComment 0x560468150620 Text=" The entity from which to create the path." | | `-TextComment 0x560468150640 Text=" " | |-ParamCommandComment 0x560468150690 [in] implicitly Param="child" ParamIndex=2 | | `-ParagraphComment 0x560468150740 | | |-TextComment 0x5604681506f0 Text=" The entity to which to create the path." | | `-TextComment 0x560468150710 Text=" " | |-ParamCommandComment 0x560468150760 [in] implicitly Param="sep" ParamIndex=3 | | `-ParagraphComment 0x560468150810 | | |-TextComment 0x5604681507c0 Text=" The separator to use between path elements." | | `-TextComment 0x5604681507e0 Text=" " | |-ParamCommandComment 0x560468150830 [in] implicitly Param="prefix" ParamIndex=4 | | `-ParagraphComment 0x5604681508e0 | | |-TextComment 0x560468150890 Text=" The initial character to use for root elements." | | `-TextComment 0x5604681508b0 Text=" " | `-BlockCommandComment 0x560468150900 Name="return" | `-ParagraphComment 0x560468150960 | `-TextComment 0x560468150930 Text=" The relative entity path." |-FunctionDecl 0x560467f71a28 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 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560467f716c0 col:18 parent 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560467f71738 col:18 child 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560467f717b8 col:17 sep 'const char *' | |-ParmVarDecl 0x560467f71838 col:17 prefix 'const char *' | |-ParmVarDecl 0x560467f718b0 col:19 buf 'ecs_strbuf_t *' | `-FullComment 0x560468151000 | |-ParagraphComment 0x560468150a90 | | |-TextComment 0x560468150a40 Text=" Write path identifier to buffer." | | `-TextComment 0x560468150a60 Text=" Same as ecs_get_path_w_sep, but writes result to an ecs_strbuf_t." | |-ParagraphComment 0x560468150ae0 | | `-TextComment 0x560468150ab0 Text=" " | |-ParamCommandComment 0x560468150b00 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468150bb0 | | |-TextComment 0x560468150b60 Text=" The world." | | `-TextComment 0x560468150b80 Text=" " | |-ParamCommandComment 0x560468150bd0 [in] implicitly Param="parent" ParamIndex=1 | | `-ParagraphComment 0x560468150c80 | | |-TextComment 0x560468150c30 Text=" The entity from which to create the path." | | `-TextComment 0x560468150c50 Text=" " | |-ParamCommandComment 0x560468150ca0 [in] implicitly Param="child" ParamIndex=2 | | `-ParagraphComment 0x560468150d50 | | |-TextComment 0x560468150d00 Text=" The entity to which to create the path." | | `-TextComment 0x560468150d20 Text=" " | |-ParamCommandComment 0x560468150d70 [in] implicitly Param="sep" ParamIndex=3 | | `-ParagraphComment 0x560468150e20 | | |-TextComment 0x560468150dd0 Text=" The separator to use between path elements." | | `-TextComment 0x560468150df0 Text=" " | |-ParamCommandComment 0x560468150e40 [in] implicitly Param="prefix" ParamIndex=4 | | `-ParagraphComment 0x560468150ef0 | | |-TextComment 0x560468150ea0 Text=" The initial character to use for root elements." | | `-TextComment 0x560468150ec0 Text=" " | `-ParamCommandComment 0x560468150f10 [in] implicitly Param="buf" ParamIndex=5 | `-ParagraphComment 0x560468150fa0 | `-TextComment 0x560468150f70 Text=" The buffer to write to." |-FunctionDecl 0x560467f71e88 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 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560467f71bb0 col:18 parent 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560467f71c30 col:17 path 'const char *' | |-ParmVarDecl 0x560467f71cb0 col:17 sep 'const char *' | |-ParmVarDecl 0x560467f71d30 col:17 prefix 'const char *' | `-FullComment 0x5604681516d0 | |-ParagraphComment 0x560468151110 | | |-TextComment 0x560468151070 Text=" Find or create entity from path." | | |-TextComment 0x560468151090 Text=" This operation will find or create an entity from a path, and will create any" | | |-TextComment 0x5604681510b0 Text=" intermediate entities if required. If the entity already exists, no entities" | | `-TextComment 0x5604681510d0 Text=" will be created." | |-ParagraphComment 0x560468151180 | | |-TextComment 0x560468151130 Text=" If the path starts with the prefix, then the entity will be created from the" | | `-TextComment 0x560468151150 Text=" root scope." | |-ParagraphComment 0x5604681511d0 | | `-TextComment 0x5604681511a0 Text=" " | |-ParamCommandComment 0x5604681511f0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681512a0 | | |-TextComment 0x560468151250 Text=" The world." | | `-TextComment 0x560468151270 Text=" " | |-ParamCommandComment 0x5604681512c0 [in] implicitly Param="parent" ParamIndex=1 | | `-ParagraphComment 0x560468151370 | | |-TextComment 0x560468151320 Text=" The entity relative to which the entity should be created." | | `-TextComment 0x560468151340 Text=" " | |-ParamCommandComment 0x560468151390 [in] implicitly Param="path" ParamIndex=2 | | `-ParagraphComment 0x560468151440 | | |-TextComment 0x5604681513f0 Text=" The path to create the entity for." | | `-TextComment 0x560468151410 Text=" " | |-ParamCommandComment 0x560468151460 [in] implicitly Param="sep" ParamIndex=3 | | `-ParagraphComment 0x560468151510 | | |-TextComment 0x5604681514c0 Text=" The separator used in the path." | | `-TextComment 0x5604681514e0 Text=" " | |-ParamCommandComment 0x560468151530 [in] implicitly Param="prefix" ParamIndex=4 | | `-ParagraphComment 0x5604681515e0 | | |-TextComment 0x560468151590 Text=" The prefix used in the path." | | `-TextComment 0x5604681515b0 Text=" " | `-BlockCommandComment 0x560468151600 Name="return" | `-ParagraphComment 0x560468151660 | `-TextComment 0x560468151630 Text=" The entity." |-FunctionDecl 0x560467f72368 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 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560467f72000 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560467f72078 col:18 parent 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560467f720f8 col:17 path 'const char *' | |-ParmVarDecl 0x560467f72178 col:17 sep 'const char *' | |-ParmVarDecl 0x560467f721f8 col:17 prefix 'const char *' | `-FullComment 0x560468151e30 | |-ParagraphComment 0x5604681517c0 | | |-TextComment 0x560468151740 Text=" Add specified path to entity." | | |-TextComment 0x560468151760 Text=" This operation is similar to ecs_new_from_path, but will instead add the path" | | `-TextComment 0x560468151780 Text=" to an existing entity." | |-ParagraphComment 0x560468151810 | | `-TextComment 0x5604681517e0 Text=" If an entity already exists for the path, it will be returned instead." | |-ParagraphComment 0x560468151860 | | `-TextComment 0x560468151830 Text=" " | |-ParamCommandComment 0x560468151880 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468151930 | | |-TextComment 0x5604681518e0 Text=" The world." | | `-TextComment 0x560468151900 Text=" " | |-ParamCommandComment 0x560468151950 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468151a00 | | |-TextComment 0x5604681519b0 Text=" The entity to which to add the path." | | `-TextComment 0x5604681519d0 Text=" " | |-ParamCommandComment 0x560468151a20 [in] implicitly Param="parent" ParamIndex=2 | | `-ParagraphComment 0x560468151ad0 | | |-TextComment 0x560468151a80 Text=" The entity relative to which the entity should be created." | | `-TextComment 0x560468151aa0 Text=" " | |-ParamCommandComment 0x560468151af0 [in] implicitly Param="path" ParamIndex=3 | | `-ParagraphComment 0x560468151ba0 | | |-TextComment 0x560468151b50 Text=" The path to create the entity for." | | `-TextComment 0x560468151b70 Text=" " | |-ParamCommandComment 0x560468151bc0 [in] implicitly Param="sep" ParamIndex=4 | | `-ParagraphComment 0x560468151c70 | | |-TextComment 0x560468151c20 Text=" The separator used in the path." | | `-TextComment 0x560468151c40 Text=" " | |-ParamCommandComment 0x560468151c90 [in] implicitly Param="prefix" ParamIndex=5 | | `-ParagraphComment 0x560468151d40 | | |-TextComment 0x560468151cf0 Text=" The prefix used in the path." | | `-TextComment 0x560468151d10 Text=" " | `-BlockCommandComment 0x560468151d60 Name="return" | `-ParagraphComment 0x560468151dc0 | `-TextComment 0x560468151d90 Text=" The entity." |-FunctionDecl 0x560468050978 line:6330:14 ecs_set_scope 'ecs_entity_t (ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x560467f72478 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680508a0 col:18 scope 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468152250 | |-ParagraphComment 0x560468151f40 | | |-TextComment 0x560468151ea0 Text=" Set the current scope." | | |-TextComment 0x560468151ec0 Text=" This operation sets the scope of the current stage to the provided entity." | | |-TextComment 0x560468151ee0 Text=" As a result new entities will be created in this scope, and lookups will be" | | `-TextComment 0x560468151f00 Text=" relative to the provided scope." | |-ParagraphComment 0x560468151f90 | | `-TextComment 0x560468151f60 Text=" It is considered good practice to restore the scope to the old value." | |-ParagraphComment 0x560468151fe0 | | `-TextComment 0x560468151fb0 Text=" " | |-ParamCommandComment 0x560468152000 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681520b0 | | |-TextComment 0x560468152060 Text=" The world." | | `-TextComment 0x560468152080 Text=" " | |-ParamCommandComment 0x5604681520d0 [in] implicitly Param="scope" ParamIndex=1 | | `-ParagraphComment 0x560468152180 | | |-TextComment 0x560468152130 Text=" The entity to use as scope." | | `-TextComment 0x560468152150 Text=" " | `-BlockCommandComment 0x5604681521a0 Name="return" | `-ParagraphComment 0x560468152200 | `-TextComment 0x5604681521d0 Text=" The previous scope." |-FunctionDecl 0x560468050b28 line:6342:14 ecs_get_scope 'ecs_entity_t (const ecs_world_t *)' | |-ParmVarDecl 0x560468050a68 col:24 world 'const ecs_world_t *' | `-FullComment 0x560468152530 | |-ParagraphComment 0x560468152350 | | |-TextComment 0x5604681522d0 Text=" Get the current scope." | | |-TextComment 0x5604681522f0 Text=" Get the scope set by ecs_set_scope. If no scope is set, this operation will" | | `-TextComment 0x560468152310 Text=" return 0." | |-ParagraphComment 0x5604681523a0 | | `-TextComment 0x560468152370 Text=" " | |-ParamCommandComment 0x5604681523c0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468152470 | | |-TextComment 0x560468152420 Text=" The world." | | `-TextComment 0x560468152440 Text=" " | `-BlockCommandComment 0x560468152490 Name="return" | `-ParagraphComment 0x5604681524f0 | `-TextComment 0x5604681524c0 Text=" The current scope." |-FunctionDecl 0x560468050da0 line:6355:13 ecs_set_name_prefix 'const char *(ecs_world_t *, const char *)' | |-ParmVarDecl 0x560468050c08 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468050c88 col:17 prefix 'const char *' | `-FullComment 0x560468152900 | |-ParagraphComment 0x560468152640 | | |-TextComment 0x5604681525a0 Text=" Set a name prefix for newly created entities." | | |-TextComment 0x5604681525c0 Text=" This is a utility that lets C modules use prefixed names for C types and" | | |-TextComment 0x5604681525e0 Text=" C functions, while using names for the entity names that do not have the " | | `-TextComment 0x560468152600 Text=" prefix. The name prefix is currently only used by ECS_COMPONENT." | |-ParagraphComment 0x560468152690 | | `-TextComment 0x560468152660 Text=" " | |-ParamCommandComment 0x5604681526b0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468152760 | | |-TextComment 0x560468152710 Text=" The world." | | `-TextComment 0x560468152730 Text=" " | |-ParamCommandComment 0x560468152780 [in] implicitly Param="prefix" ParamIndex=1 | | `-ParagraphComment 0x560468152830 | | |-TextComment 0x5604681527e0 Text=" The name prefix to use." | | `-TextComment 0x560468152800 Text=" " | `-BlockCommandComment 0x560468152850 Name="return" | `-ParagraphComment 0x5604681528b0 | `-TextComment 0x560468152880 Text=" The previous prefix." |-FunctionDecl 0x560468051018 line:6384:15 ecs_set_lookup_path 'ecs_entity_t *(ecs_world_t *, const ecs_entity_t *)' | |-ParmVarDecl 0x560468050e88 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468050f00 col:25 lookup_path 'const ecs_entity_t *' | `-FullComment 0x560468152f40 | |-ParagraphComment 0x560468152a10 | | |-TextComment 0x560468152970 Text=" Set search path for lookup operations." | | |-TextComment 0x560468152990 Text=" This operation accepts an array of entity ids that will be used as search" | | |-TextComment 0x5604681529b0 Text=" scopes by lookup operations. The operation returns the current search path." | | `-TextComment 0x5604681529d0 Text=" It is good practice to restore the old search path." | |-ParagraphComment 0x560468152a60 | | `-TextComment 0x560468152a30 Text=" The search path will be evaluated starting from the last element." | |-ParagraphComment 0x560468152b20 | | |-TextComment 0x560468152a80 Text=" The default search path includes flecs.core. When a custom search path is" | | |-TextComment 0x560468152aa0 Text=" provided it overwrites the existing search path. Operations that rely on" | | |-TextComment 0x560468152ac0 Text=" looking up names from flecs.core without providing the namespace may fail if" | | `-TextComment 0x560468152ae0 Text=" the custom search path does not include flecs.core (EcsFlecsCore)." | |-ParagraphComment 0x560468152bc0 | | |-TextComment 0x560468152b40 Text=" The search path array is not copied into managed memory. The application must" | | |-TextComment 0x560468152b60 Text=" ensure that the provided array is valid for as long as it is used as the" | | `-TextComment 0x560468152b80 Text=" search path." | |-ParagraphComment 0x560468152c60 | | |-TextComment 0x560468152be0 Text=" The provided array must be terminated with a 0 element. This enables an" | | |-TextComment 0x560468152c00 Text=" application to push/pop elements to an existing array without invoking the" | | `-TextComment 0x560468152c20 Text=" ecs_set_lookup_path operation again." | |-ParagraphComment 0x560468152cb0 | | `-TextComment 0x560468152c80 Text=" " | |-ParamCommandComment 0x560468152cd0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468152d80 | | |-TextComment 0x560468152d30 Text=" The world." | | `-TextComment 0x560468152d50 Text=" " | |-ParamCommandComment 0x560468152da0 [in] implicitly Param="lookup_path" ParamIndex=1 | | `-ParagraphComment 0x560468152e50 | | |-TextComment 0x560468152e00 Text=" 0-terminated array with entity ids for the lookup path." | | `-TextComment 0x560468152e20 Text=" " | `-BlockCommandComment 0x560468152e70 Name="return" | `-ParagraphComment 0x560468152ed0 | `-TextComment 0x560468152ea0 Text=" Current lookup path array." |-FunctionDecl 0x5604680511f8 line:6395:15 ecs_get_lookup_path 'ecs_entity_t *(const ecs_world_t *)' | |-ParmVarDecl 0x560468051108 col:24 world 'const ecs_world_t *' | `-FullComment 0x5604681531e0 | |-ParagraphComment 0x560468153000 | | |-TextComment 0x560468152fb0 Text=" Get current lookup path." | | `-TextComment 0x560468152fd0 Text=" Returns value set by ecs_set_lookup_path." | |-ParagraphComment 0x560468153050 | | `-TextComment 0x560468153020 Text=" " | |-ParamCommandComment 0x560468153070 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468153120 | | |-TextComment 0x5604681530d0 Text=" The world." | | `-TextComment 0x5604681530f0 Text=" " | `-BlockCommandComment 0x560468153140 Name="return" | `-ParagraphComment 0x5604681531a0 | `-TextComment 0x560468153170 Text=" The current lookup path." |-FunctionDecl 0x560468051568 line:6422:14 ecs_component_init 'ecs_entity_t (ecs_world_t *, const ecs_component_desc_t *)' | |-ParmVarDecl 0x560468051368 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468051458 col:33 desc 'const ecs_component_desc_t *' | `-FullComment 0x560468153660 | |-ParagraphComment 0x5604681532d0 | | |-TextComment 0x560468153250 Text=" Find or create a component. " | | |-TextComment 0x560468153270 Text=" This operation creates a new component, or finds an existing one. The find or" | | `-TextComment 0x560468153290 Text=" create behavior is the same as ecs_entity_init." | |-ParagraphComment 0x560468153340 | | |-TextComment 0x5604681532f0 Text=" When an existing component is found, the size and alignment are verified with" | | `-TextComment 0x560468153310 Text=" the provided values. If the values do not match, the operation will fail." | |-ParagraphComment 0x560468153390 | | `-TextComment 0x560468153360 Text=" See the documentation of ecs_component_desc_t for more details. " | |-ParagraphComment 0x5604681533e0 | | `-TextComment 0x5604681533b0 Text=" " | |-ParamCommandComment 0x560468153400 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681534b0 | | |-TextComment 0x560468153460 Text=" The world." | | `-TextComment 0x560468153480 Text=" " | |-ParamCommandComment 0x5604681534d0 [in] implicitly Param="desc" ParamIndex=1 | | `-ParagraphComment 0x560468153580 | | |-TextComment 0x560468153530 Text=" Component init parameters." | | `-TextComment 0x560468153550 Text=" " | `-BlockCommandComment 0x5604681535a0 Name="return" | `-ParagraphComment 0x560468153600 | `-TextComment 0x5604681535d0 Text=" A handle to the new or existing component, or 0 if failed." |-FunctionDecl 0x560468056908 line:6438:6 ecs_set_hooks_id 'void (ecs_world_t *, ecs_entity_t, const ecs_type_hooks_t *)' | |-ParmVarDecl 0x560468051658 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680516d0 col:18 id 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680517a8 col:29 hooks 'const ecs_type_hooks_t *' | `-FullComment 0x560468153ab0 | |-ParagraphComment 0x560468153770 | | |-TextComment 0x5604681536d0 Text=" Register hooks for component." | | |-TextComment 0x5604681536f0 Text=" Hooks allow for the execution of user code when components are constructed," | | |-TextComment 0x560468153710 Text=" copied, moved, destructed, added, removed or set. Hooks can be assigned as" | | `-TextComment 0x560468153730 Text=" as long as a component has not yet been used (added to an entity)." | |-ParagraphComment 0x5604681537c0 | | `-TextComment 0x560468153790 Text=" The hooks that are currently set can be accessed with ecs_get_type_info." | |-ParagraphComment 0x560468153810 | | `-TextComment 0x5604681537e0 Text=" " | |-ParamCommandComment 0x560468153830 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681538e0 | | |-TextComment 0x560468153890 Text=" The world." | | `-TextComment 0x5604681538b0 Text=" " | |-ParamCommandComment 0x560468153900 [in] implicitly Param="id" ParamIndex=1 | | `-ParagraphComment 0x5604681539b0 | | |-TextComment 0x560468153960 Text=" The component id for which to register the actions" | | `-TextComment 0x560468153980 Text=" " | `-ParamCommandComment 0x5604681539d0 [in] implicitly Param="hooks" ParamIndex=2 | `-ParagraphComment 0x560468153a60 | `-TextComment 0x560468153a30 Text=" Type that contains the component actions." |-FunctionDecl 0x560468056b88 line:6450:25 ecs_get_hooks_id 'const ecs_type_hooks_t *(ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x5604680569f8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468056a70 col:18 id 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468153e10 | |-ParagraphComment 0x560468153b50 | | `-TextComment 0x560468153b20 Text=" Get hooks for component." | |-ParagraphComment 0x560468153ba0 | | `-TextComment 0x560468153b70 Text=" " | |-ParamCommandComment 0x560468153bc0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468153c70 | | |-TextComment 0x560468153c20 Text=" The world." | | `-TextComment 0x560468153c40 Text=" " | |-ParamCommandComment 0x560468153c90 [in] implicitly Param="id" ParamIndex=1 | | `-ParagraphComment 0x560468153d40 | | |-TextComment 0x560468153cf0 Text=" The component id for which to retrieve the hooks." | | `-TextComment 0x560468153d10 Text=" " | `-BlockCommandComment 0x560468153d60 Name="return" | `-ParagraphComment 0x560468153dc0 | `-TextComment 0x560468153d90 Text=" The hooks for the component, or NULL if not registered." |-FunctionDecl 0x560468056e28 line:6477:14 ecs_id_is_tag 'ecs_entity_t (const ecs_world_t *, ecs_id_t)' | |-ParmVarDecl 0x560468056cd8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468056d50 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x5604681542e0 | |-ParagraphComment 0x560468153f00 | | |-TextComment 0x560468153e80 Text=" Returns whether specified id a tag." | | |-TextComment 0x560468153ea0 Text=" This operation returns whether the specified type is a tag (a component " | | `-TextComment 0x560468153ec0 Text=" without data/size)." | |-ParagraphComment 0x560468153ff0 | | |-TextComment 0x560468153f20 Text=" An id is a tag when:" | | |-TextComment 0x560468153f40 Text=" - it is an entity without the EcsComponent component" | | |-TextComment 0x560468153f60 Text=" - it has an EcsComponent with size member set to 0" | | |-TextComment 0x560468153f80 Text=" - it is a pair where both elements are a tag" | | `-TextComment 0x560468153fa0 Text=" - it is a pair where the first element has the EcsTag tag" | |-ParagraphComment 0x560468154040 | | `-TextComment 0x560468154010 Text=" " | |-ParamCommandComment 0x560468154060 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468154110 | | |-TextComment 0x5604681540c0 Text=" The world." | | `-TextComment 0x5604681540e0 Text=" " | |-ParamCommandComment 0x560468154130 [in] implicitly Param="id" ParamIndex=1 | | `-ParagraphComment 0x5604681541e0 | | |-TextComment 0x560468154190 Text=" The id." | | `-TextComment 0x5604681541b0 Text=" " | `-BlockCommandComment 0x560468154200 Name="return" | `-ParagraphComment 0x560468154260 | `-TextComment 0x560468154230 Text=" Whether the provided id is a tag." |-FunctionDecl 0x5604680570a8 line:6490:6 ecs_id_in_use 'bool (ecs_world_t *, ecs_id_t)' | |-ParmVarDecl 0x560468056f18 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468056f90 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468154690 | |-ParagraphComment 0x5604681543d0 | | |-TextComment 0x560468154350 Text=" Returns whether specified id is in use." | | |-TextComment 0x560468154370 Text=" This operation returns whether an id is in use in the world. An id is in use" | | `-TextComment 0x560468154390 Text=" if it has been added to one or more tables." | |-ParagraphComment 0x560468154420 | | `-TextComment 0x5604681543f0 Text=" " | |-ParamCommandComment 0x560468154440 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681544f0 | | |-TextComment 0x5604681544a0 Text=" The world." | | `-TextComment 0x5604681544c0 Text=" " | |-ParamCommandComment 0x560468154510 [in] implicitly Param="id" ParamIndex=1 | | `-ParagraphComment 0x5604681545c0 | | |-TextComment 0x560468154570 Text=" The id." | | `-TextComment 0x560468154590 Text=" " | `-BlockCommandComment 0x5604681545e0 Name="return" | `-ParagraphComment 0x560468154640 | `-TextComment 0x560468154610 Text=" Whether the id is in use." |-FunctionDecl 0x560468057328 line:6504:24 ecs_get_type_info 'const ecs_type_info_t *(const ecs_world_t *, ecs_id_t)' | |-ParmVarDecl 0x560468057198 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468057210 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468154a60 | |-ParagraphComment 0x5604681547a0 | | |-TextComment 0x560468154700 Text=" Get the type for an id." | | |-TextComment 0x560468154720 Text=" This function returnsthe type information for an id. The specified id can be" | | |-TextComment 0x560468154740 Text=" any valid id. For the rules on how type information is determined based on" | | `-TextComment 0x560468154760 Text=" id, see ecs_get_typeid." | |-ParagraphComment 0x5604681547f0 | | `-TextComment 0x5604681547c0 Text=" " | |-ParamCommandComment 0x560468154810 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681548c0 | | |-TextComment 0x560468154870 Text=" The world." | | `-TextComment 0x560468154890 Text=" " | |-ParamCommandComment 0x5604681548e0 [in] implicitly Param="id" ParamIndex=1 | | `-ParagraphComment 0x560468154990 | | |-TextComment 0x560468154940 Text=" The id." | | `-TextComment 0x560468154960 Text=" " | `-BlockCommandComment 0x5604681549b0 Name="return" | `-ParagraphComment 0x560468154a10 | `-TextComment 0x5604681549e0 Text=" The type information of the id." |-FunctionDecl 0x560468057528 line:6528:14 ecs_get_typeid 'ecs_entity_t (const ecs_world_t *, ecs_id_t)' | |-ParmVarDecl 0x560468057418 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468057490 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468154fc0 | |-ParagraphComment 0x560468154b70 | | |-TextComment 0x560468154ad0 Text=" Get the type for an id." | | |-TextComment 0x560468154af0 Text=" This operation returns the component id for an id, if the id is associated" | | |-TextComment 0x560468154b10 Text=" with a type. For a regular component with a non-zero size (an entity with the" | | `-TextComment 0x560468154b30 Text=" EcsComponent component) the operation will return the entity itself." | |-ParagraphComment 0x560468154be0 | | |-TextComment 0x560468154b90 Text=" For an entity that does not have the EcsComponent component, or with an" | | `-TextComment 0x560468154bb0 Text=" EcsComponent value with size 0, the operation will return 0." | |-ParagraphComment 0x560468154cf0 | | |-TextComment 0x560468154c00 Text=" For a pair id the operation will return the type associated with the pair, by" | | |-TextComment 0x560468154c20 Text=" applying the following rules in order:" | | |-TextComment 0x560468154c40 Text=" - The first pair element is returned if it is a component" | | |-TextComment 0x560468154c60 Text=" - 0 is returned if the relationship entity has the Tag property" | | |-TextComment 0x560468154c80 Text=" - The second pair element is returned if it is a component" | | `-TextComment 0x560468154ca0 Text=" - 0 is returned." | |-ParagraphComment 0x560468154d40 | | `-TextComment 0x560468154d10 Text=" " | |-ParamCommandComment 0x560468154d60 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468154e10 | | |-TextComment 0x560468154dc0 Text=" The world." | | `-TextComment 0x560468154de0 Text=" " | |-ParamCommandComment 0x560468154e30 [in] implicitly Param="id" ParamIndex=1 | | `-ParagraphComment 0x560468154ee0 | | |-TextComment 0x560468154e90 Text=" The id." | | `-TextComment 0x560468154eb0 Text=" " | `-BlockCommandComment 0x560468154f00 Name="return" | `-ParagraphComment 0x560468154f60 | `-TextComment 0x560468154f30 Text=" The type id of the id." |-FunctionDecl 0x5604680577a8 line:6540:6 ecs_id_match 'bool (ecs_id_t, ecs_id_t)' | |-ParmVarDecl 0x560468057618 col:14 id 'ecs_id_t':'unsigned long' | |-ParmVarDecl 0x560468057690 col:14 pattern 'ecs_id_t':'unsigned long' | `-FullComment 0x5604681552c0 | |-ParagraphComment 0x5604681550b0 | | |-TextComment 0x560468155030 Text=" Utility to match an id with a pattern." | | |-TextComment 0x560468155050 Text=" This operation returns true if the provided pattern matches the provided" | | `-TextComment 0x560468155070 Text=" id. The pattern may contain a wildcard (or wildcards, when a pair)." | |-ParagraphComment 0x560468155100 | | `-TextComment 0x5604681550d0 Text=" " | |-ParamCommandComment 0x560468155120 [in] implicitly Param="id" ParamIndex=0 | | `-ParagraphComment 0x5604681551d0 | | |-TextComment 0x560468155180 Text=" The id." | | `-TextComment 0x5604681551a0 Text=" " | `-ParamCommandComment 0x5604681551f0 [in] implicitly Param="pattern" ParamIndex=1 | `-ParagraphComment 0x560468155280 | `-TextComment 0x560468155250 Text=" The pattern to compare with." |-FunctionDecl 0x5604680579d8 line:6550:6 ecs_id_is_pair 'bool (ecs_id_t)' | |-ParmVarDecl 0x5604680578e0 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468155540 | |-ParagraphComment 0x560468155360 | | `-TextComment 0x560468155330 Text=" Utility to check if id is a pair." | |-ParagraphComment 0x5604681553b0 | | `-TextComment 0x560468155380 Text=" " | |-ParamCommandComment 0x5604681553d0 [in] implicitly Param="id" ParamIndex=0 | | `-ParagraphComment 0x560468155480 | | |-TextComment 0x560468155430 Text=" The id." | | `-TextComment 0x560468155450 Text=" " | `-BlockCommandComment 0x5604681554a0 Name="return" | `-ParagraphComment 0x560468155500 | `-TextComment 0x5604681554d0 Text=" True if id is a pair." |-FunctionDecl 0x560468057b48 line:6559:6 ecs_id_is_wildcard 'bool (ecs_id_t)' | |-ParmVarDecl 0x560468057ab8 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x5604681557c0 | |-ParagraphComment 0x5604681555e0 | | `-TextComment 0x5604681555b0 Text=" Utility to check if id is a wildcard." | |-ParagraphComment 0x560468155630 | | `-TextComment 0x560468155600 Text=" " | |-ParamCommandComment 0x560468155650 [in] implicitly Param="id" ParamIndex=0 | | `-ParagraphComment 0x560468155700 | | |-TextComment 0x5604681556b0 Text=" The id." | | `-TextComment 0x5604681556d0 Text=" " | `-BlockCommandComment 0x560468155720 Name="return" | `-ParagraphComment 0x560468155780 | `-TextComment 0x560468155750 Text=" True if id is a wildcard or a pair containing a wildcard." |-FunctionDecl 0x560468057d78 line:6576:6 ecs_id_is_valid 'bool (const ecs_world_t *, ecs_id_t)' | |-ParmVarDecl 0x560468057c28 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468057ca0 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468155c30 | |-ParagraphComment 0x560468155900 | | |-TextComment 0x560468155830 Text=" Utility to check if id is valid." | | |-TextComment 0x560468155850 Text=" A valid id is an id that can be added to an entity. Invalid ids are:" | | |-TextComment 0x560468155870 Text=" - ids that contain wildcards" | | |-TextComment 0x560468155890 Text=" - ids that contain invalid entities" | | `-TextComment 0x5604681558b0 Text=" - ids that are 0 or contain 0 entities" | |-ParagraphComment 0x560468155970 | | |-TextComment 0x560468155920 Text=" Note that the same rules apply to removing from an entity, with the exception" | | `-TextComment 0x560468155940 Text=" of wildcards." | |-ParagraphComment 0x5604681559c0 | | `-TextComment 0x560468155990 Text=" " | |-ParamCommandComment 0x5604681559e0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468155a90 | | |-TextComment 0x560468155a40 Text=" The world." | | `-TextComment 0x560468155a60 Text=" " | |-ParamCommandComment 0x560468155ab0 [in] implicitly Param="id" ParamIndex=1 | | `-ParagraphComment 0x560468155b60 | | |-TextComment 0x560468155b10 Text=" The id." | | `-TextComment 0x560468155b30 Text=" " | `-BlockCommandComment 0x560468155b80 Name="return" | `-ParagraphComment 0x560468155be0 | `-TextComment 0x560468155bb0 Text=" True if the id is valid." |-FunctionDecl 0x560468057ff8 line:6589:15 ecs_id_get_flags 'ecs_flags32_t (const ecs_world_t *, ecs_id_t)' | |-ParmVarDecl 0x560468057e68 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468057ee0 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468155fe0 | |-ParagraphComment 0x560468155d20 | | |-TextComment 0x560468155ca0 Text=" Get flags associated with id." | | |-TextComment 0x560468155cc0 Text=" This operation returns the internal flags (see api_flags.h) that are " | | `-TextComment 0x560468155ce0 Text=" associated with the provided id." | |-ParagraphComment 0x560468155d70 | | `-TextComment 0x560468155d40 Text=" " | |-ParamCommandComment 0x560468155d90 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468155e40 | | |-TextComment 0x560468155df0 Text=" The world." | | `-TextComment 0x560468155e10 Text=" " | |-ParamCommandComment 0x560468155e60 [in] implicitly Param="id" ParamIndex=1 | | `-ParagraphComment 0x560468155f10 | | |-TextComment 0x560468155ec0 Text=" The id." | | `-TextComment 0x560468155ee0 Text=" " | `-BlockCommandComment 0x560468155f30 Name="return" | `-ParagraphComment 0x560468155f90 | `-TextComment 0x560468155f60 Text=" Flags associated with the id, or 0 if the id is not in use." |-FunctionDecl 0x5604680581e0 line:6600:13 ecs_id_flag_str 'const char *(ecs_id_t)' | |-ParmVarDecl 0x5604680580e8 col:14 id_flags 'ecs_id_t':'unsigned long' | `-FullComment 0x560468156280 | |-ParagraphComment 0x5604681560a0 | | |-TextComment 0x560468156050 Text=" Convert id flag to string." | | `-TextComment 0x560468156070 Text=" This operation converts a id flag to a string." | |-ParagraphComment 0x5604681560f0 | | `-TextComment 0x5604681560c0 Text=" " | |-ParamCommandComment 0x560468156110 [in] implicitly Param="id_flags" ParamIndex=0 | | `-ParagraphComment 0x5604681561c0 | | |-TextComment 0x560468156170 Text=" The id flag." | | `-TextComment 0x560468156190 Text=" " | `-BlockCommandComment 0x5604681561e0 Name="return" | `-ParagraphComment 0x560468156240 | `-TextComment 0x560468156210 Text=" The id flag string, or NULL if no valid id is provided." |-FunctionDecl 0x560468058420 line:6611:7 ecs_id_str 'char *(const ecs_world_t *, ecs_id_t)' | |-ParmVarDecl 0x5604680582c8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468058340 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x560468156640 | |-ParagraphComment 0x560468156380 | | |-TextComment 0x560468156330 Text=" Convert id to string." | | `-TextComment 0x560468156350 Text=" This operation interprets the structure of an id and converts it to a string." | |-ParagraphComment 0x5604681563d0 | | `-TextComment 0x5604681563a0 Text=" " | |-ParamCommandComment 0x5604681563f0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681564a0 | | |-TextComment 0x560468156450 Text=" The world." | | `-TextComment 0x560468156470 Text=" " | |-ParamCommandComment 0x5604681564c0 [in] implicitly Param="id" ParamIndex=1 | | `-ParagraphComment 0x560468156570 | | |-TextComment 0x560468156520 Text=" The id to convert to a string." | | `-TextComment 0x560468156540 Text=" " | `-BlockCommandComment 0x560468156590 Name="return" | `-ParagraphComment 0x5604681565f0 | `-TextComment 0x5604681565c0 Text=" The id converted to a string." |-FunctionDecl 0x560468058718 line:6623:6 ecs_id_str_buf 'void (const ecs_world_t *, ecs_id_t, ecs_strbuf_t *)' | |-ParmVarDecl 0x560468058508 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468058580 col:14 id 'ecs_id_t':'unsigned long' | |-ParmVarDecl 0x5604680585f8 col:19 buf 'ecs_strbuf_t *' | `-FullComment 0x5604681569f0 | |-ParagraphComment 0x560468156700 | | |-TextComment 0x5604681566b0 Text=" Write id string to buffer." | | `-TextComment 0x5604681566d0 Text=" Same as ecs_id_str but writes result to ecs_strbuf_t." | |-ParagraphComment 0x560468156750 | | `-TextComment 0x560468156720 Text=" " | |-ParamCommandComment 0x560468156770 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468156820 | | |-TextComment 0x5604681567d0 Text=" The world." | | `-TextComment 0x5604681567f0 Text=" " | |-ParamCommandComment 0x560468156840 [in] implicitly Param="id" ParamIndex=1 | | `-ParagraphComment 0x5604681568f0 | | |-TextComment 0x5604681568a0 Text=" The id to convert to a string." | | `-TextComment 0x5604681568c0 Text=" " | `-ParamCommandComment 0x560468156910 [in] implicitly Param="buf" ParamIndex=2 | `-ParagraphComment 0x5604681569a0 | `-TextComment 0x560468156970 Text=" The buffer to write to." |-FunctionDecl 0x560468058a08 line:6646:12 ecs_term_iter 'ecs_iter_t (const ecs_world_t *, ecs_term_t *)' | |-ParmVarDecl 0x560468058868 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680588f0 col:17 term 'ecs_term_t *' | `-FullComment 0x560468156dc0 | |-ParagraphComment 0x560468156b00 | | |-TextComment 0x560468156a60 Text=" Iterator for a single (component) id." | | |-TextComment 0x560468156a80 Text=" A term iterator returns all entities (tables) that match a single (component)" | | |-TextComment 0x560468156aa0 Text=" id. The search for the matching set of entities (tables) is performed in " | | `-TextComment 0x560468156ac0 Text=" constant time." | |-ParagraphComment 0x560468156b50 | | `-TextComment 0x560468156b20 Text=" " | |-ParamCommandComment 0x560468156b70 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468156c20 | | |-TextComment 0x560468156bd0 Text=" The world." | | `-TextComment 0x560468156bf0 Text=" " | |-ParamCommandComment 0x560468156c40 [in] implicitly Param="term" ParamIndex=1 | | `-ParagraphComment 0x560468156cf0 | | |-TextComment 0x560468156ca0 Text=" The term." | | `-TextComment 0x560468156cc0 Text=" " | `-BlockCommandComment 0x560468156d10 Name="return" | `-ParagraphComment 0x560468156d70 | `-TextComment 0x560468156d40 Text=" The iterator." |-FunctionDecl 0x560468058ce8 line:6659:12 ecs_term_chain_iter 'ecs_iter_t (const ecs_iter_t *, ecs_term_t *)' | |-ParmVarDecl 0x560468058b58 col:23 it 'const ecs_iter_t *' | |-ParmVarDecl 0x560468058bd0 col:17 term 'ecs_term_t *' | `-FullComment 0x560468157170 | |-ParagraphComment 0x560468156eb0 | | |-TextComment 0x560468156e30 Text=" Return a chained term iterator." | | |-TextComment 0x560468156e50 Text=" A chained iterator applies a filter to the results of the input iterator. The" | | `-TextComment 0x560468156e70 Text=" resulting iterator must be iterated with ecs_term_next." | |-ParagraphComment 0x560468156f00 | | `-TextComment 0x560468156ed0 Text=" " | |-ParamCommandComment 0x560468156f20 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468156fd0 | | |-TextComment 0x560468156f80 Text=" The input iterator" | | `-TextComment 0x560468156fa0 Text=" " | |-ParamCommandComment 0x560468156ff0 [in] implicitly Param="term" ParamIndex=1 | | `-ParagraphComment 0x5604681570a0 | | |-TextComment 0x560468157050 Text=" The term filter to apply to the iterator." | | `-TextComment 0x560468157070 Text=" " | `-BlockCommandComment 0x5604681570c0 Name="return" | `-ParagraphComment 0x560468157120 | `-TextComment 0x5604681570f0 Text=" The chained iterator. " |-FunctionDecl 0x560468058e68 line:6673:6 ecs_term_next 'bool (ecs_iter_t *)' | |-ParmVarDecl 0x560468058dd8 col:17 it 'ecs_iter_t *' | `-FullComment 0x560468157490 | |-ParagraphComment 0x5604681572b0 | | |-TextComment 0x5604681571e0 Text=" Progress a term iterator." | | |-TextComment 0x560468157200 Text=" This operation progresses the term iterator to the next table. The " | | |-TextComment 0x560468157220 Text=" iterator must have been initialized with `ecs_term_iter`. This operation " | | |-TextComment 0x560468157240 Text=" must be invoked at least once before interpreting the contents of the " | | `-TextComment 0x560468157260 Text=" iterator." | |-ParagraphComment 0x560468157300 | | `-TextComment 0x5604681572d0 Text=" " | |-ParamCommandComment 0x560468157320 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x5604681573d0 | | |-TextComment 0x560468157380 Text=" The iterator." | | `-TextComment 0x5604681573a0 Text=" " | `-BlockCommandComment 0x5604681573f0 Name="returns" | `-ParagraphComment 0x560468157450 | `-TextComment 0x560468157420 Text=" True if more data is available, false if not." |-FunctionDecl 0x5604680590d8 line:6685:12 ecs_children 'ecs_iter_t (const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x560468058f48 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468058fc0 col:18 parent 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468157840 | |-ParagraphComment 0x560468157580 | | |-TextComment 0x560468157500 Text=" Iterator for a parent's children." | | |-TextComment 0x560468157520 Text=" This operation is equivalent to a term iterator for (ChildOf, parent). " | | `-TextComment 0x560468157540 Text=" Iterate the result with ecs_children_next." | |-ParagraphComment 0x5604681575d0 | | `-TextComment 0x5604681575a0 Text=" " | |-ParamCommandComment 0x5604681575f0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681576a0 | | |-TextComment 0x560468157650 Text=" The world." | | `-TextComment 0x560468157670 Text=" " | |-ParamCommandComment 0x5604681576c0 [in] implicitly Param="parent" ParamIndex=1 | | `-ParagraphComment 0x560468157770 | | |-TextComment 0x560468157720 Text=" The parent for which to iterate the children." | | `-TextComment 0x560468157740 Text=" " | `-BlockCommandComment 0x560468157790 Name="return" | `-ParagraphComment 0x5604681577f0 | `-TextComment 0x5604681577c0 Text=" The iterator." |-FunctionDecl 0x560468059258 line:6696:6 ecs_children_next 'bool (ecs_iter_t *)' | |-ParmVarDecl 0x5604680591c8 col:17 it 'ecs_iter_t *' | `-FullComment 0x560468157ae0 | |-ParagraphComment 0x560468157900 | | |-TextComment 0x5604681578b0 Text=" Progress a children iterator." | | `-TextComment 0x5604681578d0 Text=" Equivalent to ecs_term_next." | |-ParagraphComment 0x560468157950 | | `-TextComment 0x560468157920 Text=" " | |-ParamCommandComment 0x560468157970 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468157a20 | | |-TextComment 0x5604681579d0 Text=" The iterator." | | `-TextComment 0x5604681579f0 Text=" " | `-BlockCommandComment 0x560468157a40 Name="returns" | `-ParagraphComment 0x560468157aa0 | `-TextComment 0x560468157a70 Text=" True if more data is available, false if not." |-FunctionDecl 0x560468059488 line:6705:6 ecs_term_id_is_set 'bool (const ecs_term_id_t *)' | |-ParmVarDecl 0x560468059398 col:26 id 'const ecs_term_id_t *' | `-FullComment 0x560468157d60 | |-ParagraphComment 0x560468157b80 | | `-TextComment 0x560468157b50 Text=" Test whether term id is set." | |-ParagraphComment 0x560468157bd0 | | `-TextComment 0x560468157ba0 Text=" " | |-ParamCommandComment 0x560468157bf0 [in] implicitly Param="id" ParamIndex=0 | | `-ParagraphComment 0x560468157ca0 | | |-TextComment 0x560468157c50 Text=" The term id." | | `-TextComment 0x560468157c70 Text=" " | `-BlockCommandComment 0x560468157cc0 Name="return" | `-ParagraphComment 0x560468157d20 | `-TextComment 0x560468157cf0 Text=" True when set, false when not set." |-FunctionDecl 0x5604680596b8 line:6720:6 ecs_term_is_initialized 'bool (const ecs_term_t *)' | |-ParmVarDecl 0x5604680595c8 col:23 term 'const ecs_term_t *' | `-FullComment 0x5604681580e0 | |-ParagraphComment 0x560468157e50 | | |-TextComment 0x560468157dd0 Text=" Test whether a term is set." | | |-TextComment 0x560468157df0 Text=" This operation can be used to test whether a term has been initialized with" | | `-TextComment 0x560468157e10 Text=" values or whether it is empty." | |-ParagraphComment 0x560468157ef0 | | |-TextComment 0x560468157e70 Text=" An application generally does not need to invoke this operation. It is useful" | | |-TextComment 0x560468157e90 Text=" when initializing a 0-initialized array of terms (like in ecs_term_desc_t) as" | | `-TextComment 0x560468157eb0 Text=" this operation can be used to find the last initialized element." | |-ParagraphComment 0x560468157f40 | | `-TextComment 0x560468157f10 Text=" " | |-ParamCommandComment 0x560468157f60 [in] implicitly Param="term" ParamIndex=0 | | `-ParagraphComment 0x560468158010 | | |-TextComment 0x560468157fc0 Text=" The term." | | `-TextComment 0x560468157fe0 Text=" " | `-BlockCommandComment 0x560468158030 Name="return" | `-ParagraphComment 0x560468158090 | `-TextComment 0x560468158060 Text=" True when set, false when not set." |-FunctionDecl 0x560468059800 line:6724:6 ecs_term_match_this 'bool (const ecs_term_t *)' | `-ParmVarDecl 0x560468059770 col:23 term 'const ecs_term_t *' |-FunctionDecl 0x560468059990 line:6728:6 ecs_term_match_0 'bool (const ecs_term_t *)' | `-ParmVarDecl 0x560468059900 col:23 term 'const ecs_term_t *' |-FunctionDecl 0x560468059c10 line:6750:5 ecs_term_finalize 'int (const ecs_world_t *, ecs_term_t *)' | |-ParmVarDecl 0x560468059a78 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468059af0 col:17 term 'ecs_term_t *' | `-FullComment 0x56046812e4f0 | |-ParagraphComment 0x560468158240 | | |-TextComment 0x560468158150 Text=" Finalize term." | | |-TextComment 0x560468158170 Text=" Ensure that all fields of a term are consistent and filled out. This " | | |-TextComment 0x560468158190 Text=" operation should be invoked before using and after assigning members to, or " | | |-TextComment 0x5604681581b0 Text=" parsing a term. When a term contains unresolved identifiers, this operation" | | |-TextComment 0x5604681581d0 Text=" will resolve and assign the identifiers. If the term contains any identifiers" | | `-TextComment 0x5604681581f0 Text=" that cannot be resolved, the operation will fail." | |-ParagraphComment 0x56046812e1b0 | | |-TextComment 0x560468158260 Text=" An application generally does not need to invoke this operation as the APIs" | | |-TextComment 0x560468158280 Text=" that use terms (such as filters, queries and triggers) will finalize terms" | | `-TextComment 0x5604681582a0 Text=" when they are created." | |-ParagraphComment 0x56046812e220 | | |-TextComment 0x56046812e1d0 Text=" The name and expr parameters are optional, and only used for giving more " | | `-TextComment 0x56046812e1f0 Text=" descriptive error messages." | |-ParagraphComment 0x56046812e270 | | `-TextComment 0x56046812e240 Text=" " | |-ParamCommandComment 0x56046812e290 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046812e340 | | |-TextComment 0x56046812e2f0 Text=" The world." | | `-TextComment 0x56046812e310 Text=" " | |-ParamCommandComment 0x56046812e360 [in] implicitly Param="term" ParamIndex=1 | | `-ParagraphComment 0x56046812e410 | | |-TextComment 0x56046812e3c0 Text=" The term to finalize." | | `-TextComment 0x56046812e3e0 Text=" " | `-BlockCommandComment 0x56046812e430 Name="return" | `-ParagraphComment 0x56046812e490 | `-TextComment 0x56046812e460 Text=" Zero if success, nonzero if an error occurred." |-FunctionDecl 0x560468059de8 line:6763:12 ecs_term_copy 'ecs_term_t (const ecs_term_t *)' | |-ParmVarDecl 0x560468059cf8 col:23 src 'const ecs_term_t *' | `-FullComment 0x56046812e7e0 | |-ParagraphComment 0x56046812e600 | | |-TextComment 0x56046812e560 Text=" Copy resources of a term to another term." | | |-TextComment 0x56046812e580 Text=" This operation copies one term to another term. If the source term contains" | | |-TextComment 0x56046812e5a0 Text=" allocated resources (such as identifiers), they will be duplicated so that" | | `-TextComment 0x56046812e5c0 Text=" no memory is shared between the terms." | |-ParagraphComment 0x56046812e650 | | `-TextComment 0x56046812e620 Text=" " | |-ParamCommandComment 0x56046812e670 [in] implicitly Param="src" ParamIndex=0 | | `-ParagraphComment 0x56046812e720 | | |-TextComment 0x56046812e6d0 Text=" The term to copy from." | | `-TextComment 0x56046812e6f0 Text=" " | `-BlockCommandComment 0x56046812e740 Name="return" | `-ParagraphComment 0x56046812e7a0 | `-TextComment 0x56046812e770 Text=" The destination term." |-FunctionDecl 0x560468059fb8 line:6777:12 ecs_term_move 'ecs_term_t (ecs_term_t *)' | |-ParmVarDecl 0x560468059ec8 col:17 src 'ecs_term_t *' | `-FullComment 0x56046812eb30 | |-ParagraphComment 0x56046812e8d0 | | |-TextComment 0x56046812e850 Text=" Move resources of a term to another term." | | |-TextComment 0x56046812e870 Text=" Same as copy, but moves resources from src, if src->move is set to true. If" | | `-TextComment 0x56046812e890 Text=" src->move is not set to true, this operation will do a copy." | |-ParagraphComment 0x56046812e940 | | |-TextComment 0x56046812e8f0 Text=" The conditional move reduces redundant allocations in scenarios where a list " | | `-TextComment 0x56046812e910 Text=" of terms is partially created with allocated resources." | |-ParagraphComment 0x56046812e990 | | `-TextComment 0x56046812e960 Text=" " | |-ParamCommandComment 0x56046812e9b0 [in] implicitly Param="src" ParamIndex=0 | | `-ParagraphComment 0x56046812ea60 | | |-TextComment 0x56046812ea10 Text=" The term to move from." | | `-TextComment 0x56046812ea30 Text=" " | `-BlockCommandComment 0x56046812ea80 Name="return" | `-ParagraphComment 0x56046812eae0 | `-TextComment 0x56046812eab0 Text=" The destination term." |-FunctionDecl 0x56046805a188 line:6787:6 ecs_term_fini 'void (ecs_term_t *)' | |-ParmVarDecl 0x56046805a098 col:17 term 'ecs_term_t *' | `-FullComment 0x56046812ed60 | |-ParagraphComment 0x56046812ec20 | | |-TextComment 0x56046812eba0 Text=" Free resources of term." | | |-TextComment 0x56046812ebc0 Text=" This operation frees all resources (such as identifiers) of a term. The term" | | `-TextComment 0x56046812ebe0 Text=" itself is not freed." | |-ParagraphComment 0x56046812ec70 | | `-TextComment 0x56046812ec40 Text=" " | `-ParamCommandComment 0x56046812ec90 [in] implicitly Param="term" ParamIndex=0 | `-ParagraphComment 0x56046812ed20 | `-TextComment 0x56046812ecf0 Text=" The term to free." |-FunctionDecl 0x56046805a448 line:6814:16 ecs_filter_init 'ecs_filter_t *(ecs_world_t *, const ecs_filter_desc_t *)' | |-ParmVarDecl 0x56046805a268 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046805a338 col:30 desc 'const ecs_filter_desc_t *' | `-FullComment 0x56046812f4b0 | |-ParagraphComment 0x56046812ee70 | | |-TextComment 0x56046812edd0 Text=" Initialize filter " | | |-TextComment 0x56046812edf0 Text=" A filter is a lightweight object that can be used to query for entities in" | | |-TextComment 0x56046812ee10 Text=" a world. Filters, as opposed to queries, do not cache results. They are " | | `-TextComment 0x56046812ee30 Text=" therefore slower to iterate, but are faster to create." | |-ParagraphComment 0x56046812eee0 | | |-TextComment 0x56046812ee90 Text=" When a filter is copied by value, make sure to use "ecs_filter_move" to " | | `-TextComment 0x56046812eeb0 Text=" ensure that the terms pointer still points to the inline array:" | |-ParagraphComment 0x56046812efd0 | | |-TextComment 0x56046812ef00 Text=" ecs_filter_move(" | | |-TextComment 0x56046812ef20 Text="&dst" | | |-TextComment 0x56046812ef40 Text="_filter, " | | |-TextComment 0x56046812ef60 Text="&src" | | `-TextComment 0x56046812ef80 Text="_filter)" | |-ParagraphComment 0x56046812f040 | | |-TextComment 0x56046812eff0 Text=" Alternatively, the ecs_filter_move function can be called with both arguments" | | `-TextComment 0x56046812f010 Text=" set to the same filter, to ensure the pointer is valid:" | |-ParagraphComment 0x56046812f130 | | |-TextComment 0x56046812f060 Text=" ecs_filter_move(" | | |-TextComment 0x56046812f080 Text="&f" | | |-TextComment 0x56046812f0a0 Text=", " | | |-TextComment 0x56046812f0c0 Text="&f" | | `-TextComment 0x56046812f0e0 Text=")" | |-ParagraphComment 0x56046812f1d0 | | |-TextComment 0x56046812f150 Text=" It is possible to create a filter without allocating any memory, by setting" | | |-TextComment 0x56046812f170 Text=" the .storage member in ecs_filter_desc_t. See the documentation for the " | | `-TextComment 0x56046812f190 Text=" member for more details." | |-ParagraphComment 0x56046812f220 | | `-TextComment 0x56046812f1f0 Text=" " | |-ParamCommandComment 0x56046812f240 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046812f2f0 | | |-TextComment 0x56046812f2a0 Text=" The world." | | `-TextComment 0x56046812f2c0 Text=" " | |-ParamCommandComment 0x56046812f310 [in] implicitly Param="desc" ParamIndex=1 | | `-ParagraphComment 0x56046812f3c0 | | |-TextComment 0x56046812f370 Text=" Properties for the filter to create." | | `-TextComment 0x56046812f390 Text=" " | `-BlockCommandComment 0x56046812f3e0 Name="return" | `-ParagraphComment 0x56046812f440 | `-TextComment 0x56046812f410 Text=" The filter if successful, NULL if not successful." |-FunctionDecl 0x56046805a628 line:6824:6 ecs_filter_fini 'void (ecs_filter_t *)' | |-ParmVarDecl 0x56046805a538 col:19 filter 'ecs_filter_t *' | `-FullComment 0x56046812f6b0 | |-ParagraphComment 0x56046812f570 | | |-TextComment 0x56046812f520 Text=" Deinitialize filter." | | `-TextComment 0x56046812f540 Text=" Free resources associated with filter." | |-ParagraphComment 0x56046812f5c0 | | `-TextComment 0x56046812f590 Text=" " | `-ParamCommandComment 0x56046812f5e0 [in] implicitly Param="filter" ParamIndex=0 | `-ParagraphComment 0x56046812f670 | `-TextComment 0x56046812f640 Text=" The filter to deinitialize." |-FunctionDecl 0x56046805a910 line:6841:5 ecs_filter_finalize 'int (const ecs_world_t *, ecs_filter_t *)' | |-ParmVarDecl 0x56046805a708 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x56046805a780 col:19 filter 'ecs_filter_t *' | `-FullComment 0x56046812faa0 | |-ParagraphComment 0x56046812f7c0 | | |-TextComment 0x56046812f720 Text=" Finalize filter." | | |-TextComment 0x56046812f740 Text=" When manually assigning an array of terms to the filter struct (so not when" | | |-TextComment 0x56046812f760 Text=" using ecs_filter_init), this operation should be used to ensure that all " | | `-TextComment 0x56046812f780 Text=" terms are assigned properly and all (derived) fields have been set." | |-ParagraphComment 0x56046812f860 | | |-TextComment 0x56046812f7e0 Text=" When ecs_filter_init is used to create the filter, this function should not" | | |-TextComment 0x56046812f800 Text=" be called. The purpose of this operation is to support creation of filters" | | `-TextComment 0x56046812f820 Text=" without allocating memory." | |-ParagraphComment 0x56046812f8b0 | | `-TextComment 0x56046812f880 Text=" " | |-ParamCommandComment 0x56046812f8d0 [in] implicitly Param="filter" ParamIndex=1 | | `-ParagraphComment 0x56046812f980 | | |-TextComment 0x56046812f930 Text=" The filter to finalize." | | `-TextComment 0x56046812f950 Text=" " | `-BlockCommandComment 0x56046812f9a0 Name="return" | `-ParagraphComment 0x56046812fa50 | |-TextComment 0x56046812f9d0 Text=" Zero if filter is valid, non-zero if it contains errors." | |-TextComment 0x56046812f9f0 Text=" " | `-TextComment 0x56046812fa10 Text="@" |-FunctionDecl 0x56046805aae8 line:6857:9 ecs_filter_find_this_var 'int32_t (const ecs_filter_t *)' | |-ParmVarDecl 0x56046805a9f8 col:25 filter 'const ecs_filter_t *' | `-FullComment 0x56046812fe20 | |-ParagraphComment 0x56046812fb90 | | |-TextComment 0x56046812fb10 Text=" Find index for This variable." | | |-TextComment 0x56046812fb30 Text=" This operation looks up the index of the This variable. This index can" | | `-TextComment 0x56046812fb50 Text=" be used in operations like ecs_iter_set_var and ecs_iter_get_var." | |-ParagraphComment 0x56046812fc30 | | |-TextComment 0x56046812fbb0 Text=" The operation will return -1 if the variable was not found. This happens when" | | |-TextComment 0x56046812fbd0 Text=" a filter only has terms that are not matched on the This variable, like a" | | `-TextComment 0x56046812fbf0 Text=" filter that exclusively matches singleton components." | |-ParagraphComment 0x56046812fc80 | | `-TextComment 0x56046812fc50 Text=" " | |-ParamCommandComment 0x56046812fca0 [in] implicitly Param="filter" ParamIndex=0 | | `-ParagraphComment 0x56046812fd50 | | |-TextComment 0x56046812fd00 Text=" The rule." | | `-TextComment 0x56046812fd20 Text=" " | `-BlockCommandComment 0x56046812fd70 Name="return" | `-ParagraphComment 0x56046812fdd0 | `-TextComment 0x56046812fda0 Text=" The index of the This variable." |-FunctionDecl 0x56046805ad60 line:6865:7 ecs_term_str 'char *(const ecs_world_t *, const ecs_term_t *)' | |-ParmVarDecl 0x56046805abc8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x56046805ac40 col:23 term 'const ecs_term_t *' | `-FullComment 0x56046812ff90 | `-ParagraphComment 0x56046812ff60 | |-TextComment 0x56046812fe90 Text=" Convert ter, to string expression." | |-TextComment 0x56046812feb0 Text=" Convert term to a string expression. The resulting expression is equivalent" | |-TextComment 0x56046812fed0 Text=" to the same term, with the exception of And " | |-TextComment 0x56046812fef0 Text="&" | `-TextComment 0x56046812ff10 Text=" Or operators." |-FunctionDecl 0x56046805afe0 line:6874:7 ecs_filter_str 'char *(const ecs_world_t *, const ecs_filter_t *)' | |-ParmVarDecl 0x56046805ae48 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x56046805aec0 col:25 filter 'const ecs_filter_t *' | `-FullComment 0x5604681300b0 | `-ParagraphComment 0x560468130080 | |-TextComment 0x560468130000 Text=" Convert filter to string expression." | |-TextComment 0x560468130020 Text=" Convert filter terms to a string expression. The resulting expression can be" | `-TextComment 0x560468130040 Text=" parsed to create the same filter." |-FunctionDecl 0x56046805b258 line:6888:12 ecs_filter_iter 'ecs_iter_t (const ecs_world_t *, const ecs_filter_t *)' | |-ParmVarDecl 0x56046805b0c8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x56046805b140 col:25 filter 'const ecs_filter_t *' | `-FullComment 0x56046815c5f0 | |-ParagraphComment 0x56046815c330 | | |-TextComment 0x560468130120 Text=" Return a filter iterator." | | |-TextComment 0x560468130140 Text=" A filter iterator lets an application iterate over entities that match the" | | |-TextComment 0x560468130160 Text=" specified filter. If NULL is provided for the filter, the iterator will" | | `-TextComment 0x560468130180 Text=" iterate all tables in the world." | |-ParagraphComment 0x56046815c380 | | `-TextComment 0x56046815c350 Text=" " | |-ParamCommandComment 0x56046815c3a0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046815c450 | | |-TextComment 0x56046815c400 Text=" The world." | | `-TextComment 0x56046815c420 Text=" " | |-ParamCommandComment 0x56046815c470 [in] implicitly Param="filter" ParamIndex=1 | | `-ParagraphComment 0x56046815c520 | | |-TextComment 0x56046815c4d0 Text=" The filter." | | `-TextComment 0x56046815c4f0 Text=" " | `-BlockCommandComment 0x56046815c540 Name="return" | `-ParagraphComment 0x56046815c5a0 | `-TextComment 0x56046815c570 Text=" An iterator that can be used with ecs_filter_next." |-FunctionDecl 0x56046805b4d8 line:6901:12 ecs_filter_chain_iter 'ecs_iter_t (const ecs_iter_t *, const ecs_filter_t *)' | |-ParmVarDecl 0x56046805b348 col:23 it 'const ecs_iter_t *' | |-ParmVarDecl 0x56046805b3c0 col:25 filter 'const ecs_filter_t *' | `-FullComment 0x56046815c9a0 | |-ParagraphComment 0x56046815c6e0 | | |-TextComment 0x56046815c660 Text=" Return a chained filter iterator." | | |-TextComment 0x56046815c680 Text=" A chained iterator applies a filter to the results of the input iterator. The" | | `-TextComment 0x56046815c6a0 Text=" resulting iterator must be iterated with ecs_filter_next." | |-ParagraphComment 0x56046815c730 | | `-TextComment 0x56046815c700 Text=" " | |-ParamCommandComment 0x56046815c750 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x56046815c800 | | |-TextComment 0x56046815c7b0 Text=" The input iterator" | | `-TextComment 0x56046815c7d0 Text=" " | |-ParamCommandComment 0x56046815c820 [in] implicitly Param="filter" ParamIndex=1 | | `-ParagraphComment 0x56046815c8d0 | | |-TextComment 0x56046815c880 Text=" The filter to apply to the iterator." | | `-TextComment 0x56046815c8a0 Text=" " | `-BlockCommandComment 0x56046815c8f0 Name="return" | `-ParagraphComment 0x56046815c950 | `-TextComment 0x56046815c920 Text=" The chained iterator. " |-FunctionDecl 0x56046805b758 line:6925:9 ecs_filter_pivot_term 'int32_t (const ecs_world_t *, const ecs_filter_t *)' | |-ParmVarDecl 0x56046805b5c8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x56046805b640 col:25 filter 'const ecs_filter_t *' | `-FullComment 0x56046815cf10 | |-ParagraphComment 0x56046815ca90 | | |-TextComment 0x56046815ca10 Text=" Get pivot term for filter." | | |-TextComment 0x56046815ca30 Text=" The pivot term is the term that matches the smallest set of tables, and is" | | `-TextComment 0x56046815ca50 Text=" a good default starting point for a search." | |-ParagraphComment 0x56046815cb30 | | |-TextComment 0x56046815cab0 Text=" The following conditions must be met for a term to be considered as pivot:" | | |-TextComment 0x56046815cad0 Text=" - It must have a This subject" | | `-TextComment 0x56046815caf0 Text=" - It must have the And operator" | |-ParagraphComment 0x56046815cba0 | | |-TextComment 0x56046815cb50 Text=" When a filter does not have any terms that match those conditions, it will" | | `-TextComment 0x56046815cb70 Text=" return -1." | |-ParagraphComment 0x56046815cc40 | | |-TextComment 0x56046815cbc0 Text=" If one or more terms in the filter have no matching tables the filter won't" | | |-TextComment 0x56046815cbe0 Text=" yield any results. In this case the operation will return -2 which gives a" | | `-TextComment 0x56046815cc00 Text=" search function the option to early out." | |-ParagraphComment 0x56046815cc90 | | `-TextComment 0x56046815cc60 Text=" " | |-ParamCommandComment 0x56046815ccb0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046815cd60 | | |-TextComment 0x56046815cd10 Text=" The world." | | `-TextComment 0x56046815cd30 Text=" " | |-ParamCommandComment 0x56046815cd80 [in] implicitly Param="filter" ParamIndex=1 | | `-ParagraphComment 0x56046815ce30 | | |-TextComment 0x56046815cde0 Text=" The filter." | | `-TextComment 0x56046815ce00 Text=" " | `-BlockCommandComment 0x56046815ce50 Name="return" | `-ParagraphComment 0x56046815ceb0 | `-TextComment 0x56046815ce80 Text=" Index of the pivot term (use with filter->terms)" |-FunctionDecl 0x56046805b920 line:6939:6 ecs_filter_next 'bool (ecs_iter_t *)' | |-ParmVarDecl 0x56046805b848 col:17 it 'ecs_iter_t *' | `-FullComment 0x56046815d230 | |-ParagraphComment 0x56046815d050 | | |-TextComment 0x56046815cf80 Text=" Iterate tables matched by filter." | | |-TextComment 0x56046815cfa0 Text=" This operation progresses the filter iterator to the next table. The " | | |-TextComment 0x56046815cfc0 Text=" iterator must have been initialized with `ecs_filter_iter`. This operation " | | |-TextComment 0x56046815cfe0 Text=" must be invoked at least once before interpreting the contents of the " | | `-TextComment 0x56046815d000 Text=" iterator." | |-ParagraphComment 0x56046815d0a0 | | `-TextComment 0x56046815d070 Text=" " | |-ParamCommandComment 0x56046815d0c0 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x56046815d170 | | |-TextComment 0x56046815d120 Text=" The iterator" | | `-TextComment 0x56046815d140 Text=" " | `-BlockCommandComment 0x56046815d190 Name="return" | `-ParagraphComment 0x56046815d1f0 | `-TextComment 0x56046815d1c0 Text=" True if more data is available, false if not." |-FunctionDecl 0x56046805ba98 line:6946:6 ecs_filter_next_instanced 'bool (ecs_iter_t *)' | |-ParmVarDecl 0x56046805ba08 col:17 it 'ecs_iter_t *' | `-FullComment 0x56046815d320 | `-ParagraphComment 0x56046815d2f0 | |-TextComment 0x56046815d2a0 Text=" Same as ecs_filter_next, but always instanced." | `-TextComment 0x56046815d2c0 Text=" See instanced property of ecs_filter_desc_t." |-FunctionDecl 0x56046805bd08 line:6951:6 ecs_filter_move 'void (ecs_filter_t *, ecs_filter_t *)' | |-ParmVarDecl 0x56046805bb78 col:19 dst 'ecs_filter_t *' | |-ParmVarDecl 0x56046805bbf0 col:19 src 'ecs_filter_t *' | `-FullComment 0x56046815d3f0 | `-ParagraphComment 0x56046815d3c0 | `-TextComment 0x56046815d390 Text=" Move resources of one filter to another. " |-FunctionDecl 0x56046805bf88 line:6957:6 ecs_filter_copy 'void (ecs_filter_t *, const ecs_filter_t *)' | |-ParmVarDecl 0x56046805bdf8 col:19 dst 'ecs_filter_t *' | |-ParmVarDecl 0x56046805be70 col:25 src 'const ecs_filter_t *' | `-FullComment 0x56046815d4c0 | `-ParagraphComment 0x56046815d490 | `-TextComment 0x56046815d460 Text=" Copy resources of one filter to another. " |-FunctionDecl 0x56046805c2d8 line:7004:14 ecs_query_init 'ecs_query_t *(ecs_world_t *, const ecs_query_desc_t *)' | |-ParmVarDecl 0x56046805c0d8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046805c1c8 col:29 desc 'const ecs_query_desc_t *' | `-FullComment 0x56046815dc90 | |-ParagraphComment 0x56046815d5d0 | | |-TextComment 0x56046815d530 Text=" Create a query." | | |-TextComment 0x56046815d550 Text=" This operation creates a query. Queries are used to iterate over entities" | | |-TextComment 0x56046815d570 Text=" that match a filter and are the fastest way to find and iterate over entities" | | `-TextComment 0x56046815d590 Text=" and their components." | |-ParagraphComment 0x56046815d6c0 | | |-TextComment 0x56046815d5f0 Text=" Queries should be created once, and reused multiple times. While iterating a" | | |-TextComment 0x56046815d610 Text=" query is a cheap operation, creating and deleting a query is expensive. The" | | |-TextComment 0x56046815d630 Text=" reason for this is that queries are "prematched", which means that a query" | | |-TextComment 0x56046815d650 Text=" stores state about which entities (or rather, tables) match with the query." | | `-TextComment 0x56046815d670 Text=" Building up this state happens during query creation." | |-ParagraphComment 0x56046815d7d0 | | |-TextComment 0x56046815d6e0 Text=" Once a query is created, matching only happens when new tables are created." | | |-TextComment 0x56046815d700 Text=" In most applications this is an infrequent process, since it only occurs when" | | |-TextComment 0x56046815d720 Text=" a new combination of components is introduced. While matching is expensive," | | |-TextComment 0x56046815d740 Text=" it is importent to note that matching does not happen on a per-entity basis," | | |-TextComment 0x56046815d760 Text=" but on a per-table basis. This means that the average time spent on matching" | | `-TextComment 0x56046815d780 Text=" per frame should rapidly approach zero over the lifetime of an application." | |-ParagraphComment 0x56046815d910 | | |-TextComment 0x56046815d7f0 Text=" A query provides direct access to the component arrays. When an application" | | |-TextComment 0x56046815d810 Text=" creates/deletes entities or adds/removes components, these arrays can shift" | | |-TextComment 0x56046815d830 Text=" component values around, or may grow in size. This can cause unexpected or" | | |-TextComment 0x56046815d850 Text=" undefined behavior to occur if these operations are performed while " | | |-TextComment 0x56046815d870 Text=" iterating. To prevent this from happening an application should either not" | | |-TextComment 0x56046815d890 Text=" perform these operations while iterating, or use deferred operations (see" | | `-TextComment 0x56046815d8b0 Text=" ecs_defer_begin and ecs_defer_end)." | |-ParagraphComment 0x56046815d9b0 | | |-TextComment 0x56046815d930 Text=" Queries can be created and deleted dynamically. If a query was not deleted" | | |-TextComment 0x56046815d950 Text=" (using ecs_query_fini) before the world is deleted, it will be deleted " | | `-TextComment 0x56046815d970 Text=" automatically." | |-ParagraphComment 0x56046815da00 | | `-TextComment 0x56046815d9d0 Text=" " | |-ParamCommandComment 0x56046815da20 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046815dad0 | | |-TextComment 0x56046815da80 Text=" The world." | | `-TextComment 0x56046815daa0 Text=" " | |-ParamCommandComment 0x56046815daf0 [in] implicitly Param="desc" ParamIndex=1 | | `-ParagraphComment 0x56046815dba0 | | |-TextComment 0x56046815db50 Text=" A structure describing the query properties." | | `-TextComment 0x56046815db70 Text=" " | `-BlockCommandComment 0x56046815dbc0 Name="return" | `-ParagraphComment 0x56046815dc20 | `-TextComment 0x56046815dbf0 Text=" The new query." |-FunctionDecl 0x56046805c4b8 line:7016:6 ecs_query_fini 'void (ecs_query_t *)' | |-ParmVarDecl 0x56046805c3c8 col:18 query 'ecs_query_t *' | `-FullComment 0x56046815dee0 | |-ParagraphComment 0x56046815dda0 | | |-TextComment 0x56046815dd00 Text=" Destroy a query." | | |-TextComment 0x56046815dd20 Text=" This operation destroys a query and its resources. If the query is used as" | | |-TextComment 0x56046815dd40 Text=" the parent of subqueries, those subqueries will be orphaned and must be" | | `-TextComment 0x56046815dd60 Text=" deinitialized as well." | |-ParagraphComment 0x56046815ddf0 | | `-TextComment 0x56046815ddc0 Text=" " | `-ParamCommandComment 0x56046815de10 [in] implicitly Param="query" ParamIndex=0 | `-ParagraphComment 0x56046815dea0 | `-TextComment 0x56046815de70 Text=" The query." |-FunctionDecl 0x56046805c688 line:7026:21 ecs_query_get_filter 'const ecs_filter_t *(ecs_query_t *)' | |-ParmVarDecl 0x56046805c598 col:18 query 'ecs_query_t *' | `-FullComment 0x56046815e110 | |-ParagraphComment 0x56046815dfd0 | | |-TextComment 0x56046815df50 Text=" Get filter from a query." | | |-TextComment 0x56046815df70 Text=" This operation obtains a pointer to the internally constructed filter" | | `-TextComment 0x56046815df90 Text=" of the query and can be used to introspect the query terms." | |-ParagraphComment 0x56046815e020 | | `-TextComment 0x56046815dff0 Text=" " | `-ParamCommandComment 0x56046815e040 [in] implicitly Param="query" ParamIndex=0 | `-ParagraphComment 0x56046815e0d0 | `-TextComment 0x56046815e0a0 Text=" The query." |-FunctionDecl 0x56046805c930 line:7057:12 ecs_query_iter 'ecs_iter_t (const ecs_world_t *, ecs_query_t *)' | |-ParmVarDecl 0x56046805c768 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x56046805c7e0 col:18 query 'ecs_query_t *' | `-FullComment 0x56046815e7e0 | |-ParagraphComment 0x56046815e220 | | |-TextComment 0x56046815e180 Text=" Return a query iterator." | | |-TextComment 0x56046815e1a0 Text=" A query iterator lets an application iterate over entities that match the" | | |-TextComment 0x56046815e1c0 Text=" specified query. If a sorting function is specified, the query will check" | | `-TextComment 0x56046815e1e0 Text=" whether a resort is required upon creating the iterator." | |-ParagraphComment 0x56046815e2c0 | | |-TextComment 0x56046815e240 Text=" Creating a query iterator is a cheap operation that does not allocate any" | | |-TextComment 0x56046815e260 Text=" resources. An application does not need to deinitialize or free a query " | | `-TextComment 0x56046815e280 Text=" iterator before it goes out of scope." | |-ParagraphComment 0x56046815e350 | | |-TextComment 0x56046815e2e0 Text=" To iterate the iterator, an application should use ecs_query_next to progress" | | `-TextComment 0x56046815e320 Text=" the iterator and test if it has data." | |-ParagraphComment 0x56046815e410 | | |-TextComment 0x56046815e370 Text=" Query iteration requires an outer and an inner loop. The outer loop uses" | | |-TextComment 0x56046815e390 Text=" ecs_query_next to test if new tables are available. The inner loop iterates" | | |-TextComment 0x56046815e3b0 Text=" the entities in the table, and is usually a for loop that uses iter.count to" | | `-TextComment 0x56046815e3d0 Text=" loop through the entities and component arrays." | |-ParagraphComment 0x56046815e500 | | |-TextComment 0x56046815e430 Text=" The two loops are necessary because of how data is stored internally. " | | |-TextComment 0x56046815e450 Text=" Entities are grouped by the components they have, in tables. A single query " | | |-TextComment 0x56046815e470 Text=" can (and often does) match with multiple tables. Because each table has its" | | |-TextComment 0x56046815e490 Text=" own set of arrays, an application has to reobtain pointers to those arrays" | | `-TextComment 0x56046815e4b0 Text=" for each matching table." | |-ParagraphComment 0x56046815e550 | | `-TextComment 0x56046815e520 Text=" " | |-ParamCommandComment 0x56046815e570 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046815e620 | | |-TextComment 0x56046815e5d0 Text=" The world or stage, when iterating in readonly mode." | | `-TextComment 0x56046815e5f0 Text=" " | |-ParamCommandComment 0x56046815e640 [in] implicitly Param="query" ParamIndex=1 | | `-ParagraphComment 0x56046815e6f0 | | |-TextComment 0x56046815e6a0 Text=" The query to iterate." | | `-TextComment 0x56046815e6c0 Text=" " | `-BlockCommandComment 0x56046815e710 Name="return" | `-ParagraphComment 0x56046815e770 | `-TextComment 0x56046815e740 Text=" The query iterator." |-FunctionDecl 0x56046805caa8 line:7071:6 ecs_query_next 'bool (ecs_iter_t *)' | |-ParmVarDecl 0x56046805ca18 col:17 iter 'ecs_iter_t *' | `-FullComment 0x56046815eb00 | |-ParagraphComment 0x56046815e920 | | |-TextComment 0x56046815e850 Text=" Progress the query iterator." | | |-TextComment 0x56046815e870 Text=" This operation progresses the query iterator to the next table. The " | | |-TextComment 0x56046815e890 Text=" iterator must have been initialized with `ecs_query_iter`. This operation " | | |-TextComment 0x56046815e8b0 Text=" must be invoked at least once before interpreting the contents of the " | | `-TextComment 0x56046815e8d0 Text=" iterator." | |-ParagraphComment 0x56046815e970 | | `-TextComment 0x56046815e940 Text=" " | |-ParamCommandComment 0x56046815e990 [in] implicitly Param="iter" ParamIndex=0 | | `-ParagraphComment 0x56046815ea40 | | |-TextComment 0x56046815e9f0 Text=" The iterator." | | `-TextComment 0x56046815ea10 Text=" " | `-BlockCommandComment 0x56046815ea60 Name="returns" | `-ParagraphComment 0x56046815eac0 | `-TextComment 0x56046815ea90 Text=" True if more data is available, false if not." |-FunctionDecl 0x56046805cc18 line:7078:6 ecs_query_next_instanced 'bool (ecs_iter_t *)' | |-ParmVarDecl 0x56046805cb88 col:17 iter 'ecs_iter_t *' | `-FullComment 0x56046815ebf0 | `-ParagraphComment 0x56046815ebc0 | |-TextComment 0x56046815eb70 Text=" Same as ecs_query_next, but always instanced." | `-TextComment 0x56046815eb90 Text=" See "instanced" property of ecs_filter_desc_t." |-FunctionDecl 0x56046805cd88 line:7092:6 ecs_query_next_table 'bool (ecs_iter_t *)' | |-ParmVarDecl 0x56046805ccf8 col:17 iter 'ecs_iter_t *' | `-FullComment 0x56046815ef40 | |-ParagraphComment 0x56046815ece0 | | |-TextComment 0x56046815ec60 Text=" Fast alternative to ecs_query_next that only returns matched tables." | | |-TextComment 0x56046815ec80 Text=" This operation only populates the ecs_iter_t::table field. To access the" | | `-TextComment 0x56046815eca0 Text=" matched components, call ecs_query_populate." | |-ParagraphComment 0x56046815ed50 | | |-TextComment 0x56046815ed00 Text=" If this operation is used with a query that has inout/out terms, those terms" | | `-TextComment 0x56046815ed20 Text=" will not be marked dirty unless ecs_query_populate is called. " | |-ParagraphComment 0x56046815eda0 | | `-TextComment 0x56046815ed70 Text=" " | |-ParamCommandComment 0x56046815edc0 [in] implicitly Param="iter" ParamIndex=0 | | `-ParagraphComment 0x56046815ee70 | | |-TextComment 0x56046815ee20 Text=" The iterator." | | `-TextComment 0x56046815ee40 Text=" " | `-BlockCommandComment 0x56046815ee90 Name="returns" | `-ParagraphComment 0x56046815eef0 | `-TextComment 0x56046815eec0 Text=" True if more data is available, false if not." |-FunctionDecl 0x56046805cef8 line:7113:6 ecs_query_populate 'void (ecs_iter_t *)' | |-ParmVarDecl 0x56046805ce68 col:17 iter 'ecs_iter_t *' | `-FullComment 0x56046815f330 | |-ParagraphComment 0x56046815f030 | | |-TextComment 0x56046815efb0 Text=" Populate iterator fields." | | |-TextComment 0x56046815efd0 Text=" This operation can be combined with ecs_query_next_table to populate the" | | `-TextComment 0x56046815eff0 Text=" iterator fields for the current table." | |-ParagraphComment 0x56046815f0d0 | | |-TextComment 0x56046815f050 Text=" Populating fields conditionally can save time when a query uses change " | | |-TextComment 0x56046815f070 Text=" detection, and only needs iterator data when the table has changed. When this" | | `-TextComment 0x56046815f090 Text=" operation is called, inout/out terms will be marked dirty." | |-ParagraphComment 0x56046815f170 | | |-TextComment 0x56046815f0f0 Text=" In cases where inout/out terms are conditionally written and no changes" | | |-TextComment 0x56046815f110 Text=" were made after calling ecs_query_populate, the ecs_query_skip function can" | | `-TextComment 0x56046815f130 Text=" be called to prevent the matched table components from being marked dirty." | |-ParagraphComment 0x56046815f1e0 | | |-TextComment 0x56046815f190 Text=" This operation does should not be used with queries that match disabled " | | `-TextComment 0x56046815f1b0 Text=" components, union relationships, or with queries that use order_by." | |-ParagraphComment 0x56046815f230 | | `-TextComment 0x56046815f200 Text=" " | `-ParamCommandComment 0x56046815f250 [in] implicitly Param="iter" ParamIndex=0 | `-ParagraphComment 0x56046815f2e0 | `-TextComment 0x56046815f2b0 Text=" The iterator." |-FunctionDecl 0x56046805d168 line:7146:6 ecs_query_changed 'bool (ecs_query_t *, const ecs_iter_t *)' | |-ParmVarDecl 0x56046805cfd8 col:18 query 'ecs_query_t *' | |-ParmVarDecl 0x56046805d050 col:23 it 'const ecs_iter_t *' | `-FullComment 0x56046815fa30 | |-ParagraphComment 0x56046815f490 | | |-TextComment 0x56046815f3a0 Text=" Returns whether the query data changed since the last iteration." | | |-TextComment 0x56046815f3c0 Text=" The operation will return true after:" | | |-TextComment 0x56046815f3e0 Text=" - new entities have been matched with" | | |-TextComment 0x56046815f400 Text=" - new tables have been matched/unmatched with" | | |-TextComment 0x56046815f420 Text=" - matched entities were deleted" | | `-TextComment 0x56046815f440 Text=" - matched components were changed" | |-ParagraphComment 0x56046815f530 | | |-TextComment 0x56046815f4b0 Text=" The operation will not return true after a write-only (EcsOut) or filter" | | |-TextComment 0x56046815f4d0 Text=" (EcsInOutNone) term has changed, when a term is not matched with the" | | `-TextComment 0x56046815f4f0 Text=" current table (This subject) or for tag terms." | |-ParagraphComment 0x56046815f5a0 | | |-TextComment 0x56046815f550 Text=" The changed state of a table is reset after it is iterated. If a iterator was" | | `-TextComment 0x56046815f570 Text=" not iterated until completion, tables may still be marked as changed." | |-ParagraphComment 0x56046815f610 | | |-TextComment 0x56046815f5c0 Text=" If no iterator is provided the operation will return the changed state of the" | | `-TextComment 0x56046815f5e0 Text=" all matched tables of the query. " | |-ParagraphComment 0x56046815f6b0 | | |-TextComment 0x56046815f630 Text=" If an iterator is provided, the operation will return the changed state of " | | |-TextComment 0x56046815f650 Text=" the currently returned iterator result. The following preconditions must be" | | `-TextComment 0x56046815f670 Text=" met before using an iterator with change detection:" | |-ParagraphComment 0x56046815f750 | | |-TextComment 0x56046815f6d0 Text=" - The iterator is a query iterator (created with ecs_query_iter)" | | |-TextComment 0x56046815f6f0 Text=" - The iterator must be valid (ecs_query_next must have returned true)" | | `-TextComment 0x56046815f710 Text=" - The iterator must be instanced" | |-ParagraphComment 0x56046815f7a0 | | `-TextComment 0x56046815f770 Text=" " | |-ParamCommandComment 0x56046815f7c0 [in] implicitly Param="query" ParamIndex=0 | | `-ParagraphComment 0x56046815f870 | | |-TextComment 0x56046815f820 Text=" The query (optional if 'it' is provided)." | | `-TextComment 0x56046815f840 Text=" " | |-ParamCommandComment 0x56046815f890 [in] implicitly Param="it" ParamIndex=1 | | `-ParagraphComment 0x56046815f940 | | |-TextComment 0x56046815f8f0 Text=" The iterator result to test (optional if 'query' is provided)." | | `-TextComment 0x56046815f910 Text=" " | `-BlockCommandComment 0x56046815f960 Name="return" | `-ParagraphComment 0x56046815f9c0 | `-TextComment 0x56046815f990 Text=" true if entities changed, otherwise false." |-FunctionDecl 0x56046805d2e8 line:7161:6 ecs_query_skip 'void (ecs_iter_t *)' | |-ParmVarDecl 0x56046805d258 col:17 it 'ecs_iter_t *' | `-FullComment 0x56046815fd20 | |-ParagraphComment 0x56046815fb40 | | |-TextComment 0x56046815faa0 Text=" Skip a table while iterating." | | |-TextComment 0x56046815fac0 Text=" This operation lets the query iterator know that a table was skipped while" | | |-TextComment 0x56046815fae0 Text=" iterating. A skipped table will not reset its changed state, and the query" | | `-TextComment 0x56046815fb00 Text=" will not update the dirty flags of the table for its out columns." | |-ParagraphComment 0x56046815fbe0 | | |-TextComment 0x56046815fb60 Text=" Only valid iterators must be provided (next has to be called at least once " | | |-TextComment 0x56046815fb80 Text="&" | | `-TextComment 0x56046815fba0 Text=" return true) and the iterator must be a query iterator." | |-ParagraphComment 0x56046815fc30 | | `-TextComment 0x56046815fc00 Text=" " | `-ParamCommandComment 0x56046815fc50 [in] implicitly Param="it" ParamIndex=0 | `-ParagraphComment 0x56046815fce0 | `-TextComment 0x56046815fcb0 Text=" The iterator result to skip." |-FunctionDecl 0x56046805d558 line:7187:6 ecs_query_set_group 'void (ecs_iter_t *, uint64_t)' | |-ParmVarDecl 0x56046805d3c8 col:17 it 'ecs_iter_t *' | |-ParmVarDecl 0x56046805d440 col:14 group_id 'uint64_t':'unsigned long' | `-FullComment 0x560468160280 | |-ParagraphComment 0x56046815fe30 | | |-TextComment 0x56046815fd90 Text=" Set group to iterate for query iterator." | | |-TextComment 0x56046815fdb0 Text=" This operation limits the results returned by the query to only the selected" | | |-TextComment 0x56046815fdd0 Text=" group id. The query must have a group_by function, and the iterator must" | | `-TextComment 0x56046815fdf0 Text=" be a query iterator." | |-ParagraphComment 0x56046815fef0 | | |-TextComment 0x56046815fe50 Text=" Groups are sets of tables that are stored together in the query cache based" | | |-TextComment 0x56046815fe70 Text=" on a group id, which is calculated per table by the group_by function. To " | | |-TextComment 0x56046815fe90 Text=" iterate a group, an iterator only needs to know the first and last cache node" | | `-TextComment 0x56046815feb0 Text=" for that group, which can both be found in a fast O(1) operation." | |-ParagraphComment 0x56046815ffb0 | | |-TextComment 0x56046815ff10 Text=" As a result, group iteration is one of the most efficient mechanisms to " | | |-TextComment 0x56046815ff30 Text=" filter out large numbers of entities, even if those entities are distributed" | | |-TextComment 0x56046815ff50 Text=" across many tables. This makes it a good fit for things like dividing up" | | `-TextComment 0x56046815ff70 Text=" a world into cells, and only iterating cells close to a player." | |-ParagraphComment 0x560468160050 | | |-TextComment 0x56046815ffd0 Text=" The group to iterate must be set before the first call to ecs_query_next. No" | | |-TextComment 0x56046815fff0 Text=" operations that can add/remove components should be invoked between calling " | | `-TextComment 0x560468160010 Text=" ecs_query_set_group and ecs_query_next." | |-ParagraphComment 0x5604681600a0 | | `-TextComment 0x560468160070 Text=" " | |-ParamCommandComment 0x5604681600c0 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468160170 | | |-TextComment 0x560468160120 Text=" The query iterator." | | `-TextComment 0x560468160140 Text=" " | `-ParamCommandComment 0x560468160190 [in] implicitly Param="group_id" ParamIndex=1 | `-ParagraphComment 0x560468160220 | `-TextComment 0x5604681601f0 Text=" The group to iterate." |-FunctionDecl 0x56046805d7e0 line:7200:7 ecs_query_get_group_ctx 'void *(ecs_query_t *, uint64_t)' | |-ParmVarDecl 0x56046805d648 col:18 query 'ecs_query_t *' | |-ParmVarDecl 0x56046805d6c0 col:14 group_id 'uint64_t':'unsigned long' | `-FullComment 0x560468160650 | |-ParagraphComment 0x560468160390 | | |-TextComment 0x5604681602f0 Text=" Get context of query group." | | |-TextComment 0x560468160330 Text=" This operation returns the context of a query group as returned by the " | | `-TextComment 0x560468160350 Text=" on_group_create callback." | |-ParagraphComment 0x5604681603e0 | | `-TextComment 0x5604681603b0 Text=" " | |-ParamCommandComment 0x560468160400 [in] implicitly Param="query" ParamIndex=0 | | `-ParagraphComment 0x5604681604b0 | | |-TextComment 0x560468160460 Text=" The query." | | `-TextComment 0x560468160480 Text=" " | |-ParamCommandComment 0x5604681604d0 [in] implicitly Param="group_id" ParamIndex=1 | | `-ParagraphComment 0x560468160580 | | |-TextComment 0x560468160530 Text=" The group for which to obtain the context." | | `-TextComment 0x560468160550 Text=" " | `-BlockCommandComment 0x5604681605a0 Name="return" | `-ParagraphComment 0x560468160600 | `-TextComment 0x5604681605d0 Text=" The group context, NULL if the group doesn't exist." |-FunctionDecl 0x56046805db28 line:7213:31 ecs_query_get_group_info 'const ecs_query_group_info_t *(ecs_query_t *, uint64_t)' | |-ParmVarDecl 0x56046805d940 col:18 query 'ecs_query_t *' | |-ParmVarDecl 0x56046805d9b8 col:14 group_id 'uint64_t':'unsigned long' | `-FullComment 0x560468160a00 | |-ParagraphComment 0x560468160740 | | |-TextComment 0x5604681606c0 Text=" Get information about query group." | | |-TextComment 0x5604681606e0 Text=" This operation returns information about a query group, including the group" | | `-TextComment 0x560468160700 Text=" context returned by the on_group_create callback." | |-ParagraphComment 0x560468160790 | | `-TextComment 0x560468160760 Text=" " | |-ParamCommandComment 0x5604681607b0 [in] implicitly Param="query" ParamIndex=0 | | `-ParagraphComment 0x560468160860 | | |-TextComment 0x560468160810 Text=" The query." | | `-TextComment 0x560468160830 Text=" " | |-ParamCommandComment 0x560468160880 [in] implicitly Param="group_id" ParamIndex=1 | | `-ParagraphComment 0x560468160930 | | |-TextComment 0x5604681608e0 Text=" The group for which to obtain the group info." | | `-TextComment 0x560468160900 Text=" " | `-BlockCommandComment 0x560468160950 Name="return" | `-ParagraphComment 0x5604681609b0 | `-TextComment 0x560468160980 Text=" The group info, NULL if the group doesn't exist." |-FunctionDecl 0x56046805dd08 line:7226:6 ecs_query_orphaned 'bool (ecs_query_t *)' | |-ParmVarDecl 0x56046805dc18 col:18 query 'ecs_query_t *' | `-FullComment 0x560468160cf0 | |-ParagraphComment 0x560468160b10 | | |-TextComment 0x560468160a70 Text=" Returns whether query is orphaned." | | |-TextComment 0x560468160a90 Text=" When the parent query of a subquery is deleted, it is left in an orphaned" | | |-TextComment 0x560468160ab0 Text=" state. The only valid operation on an orphaned query is deleting it. Only" | | `-TextComment 0x560468160ad0 Text=" subqueries can be orphaned." | |-ParagraphComment 0x560468160b60 | | `-TextComment 0x560468160b30 Text=" " | |-ParamCommandComment 0x560468160b80 [in] implicitly Param="query" ParamIndex=0 | | `-ParagraphComment 0x560468160c30 | | |-TextComment 0x560468160be0 Text=" The query." | | `-TextComment 0x560468160c00 Text=" " | `-BlockCommandComment 0x560468160c50 Name="return" | `-ParagraphComment 0x560468160cb0 | `-TextComment 0x560468160c80 Text=" true if query is orphaned, otherwise false." |-FunctionDecl 0x56046805df40 line:7235:7 ecs_query_str 'char *(const ecs_query_t *)' | |-ParmVarDecl 0x56046805de48 col:24 query 'const ecs_query_t *' | `-FullComment 0x560468160f70 | |-ParagraphComment 0x560468160d90 | | `-TextComment 0x560468160d60 Text=" Convert query to string." | |-ParagraphComment 0x560468160de0 | | `-TextComment 0x560468160db0 Text=" " | |-ParamCommandComment 0x560468160e00 [in] implicitly Param="query" ParamIndex=0 | | `-ParagraphComment 0x560468160eb0 | | |-TextComment 0x560468160e60 Text=" The query." | | `-TextComment 0x560468160e80 Text=" " | `-BlockCommandComment 0x560468160ed0 Name="return" | `-ParagraphComment 0x560468160f30 | `-TextComment 0x560468160f00 Text=" The query string." |-FunctionDecl 0x56046805e118 line:7244:9 ecs_query_table_count 'int32_t (const ecs_query_t *)' | |-ParmVarDecl 0x56046805e028 col:24 query 'const ecs_query_t *' | `-FullComment 0x5604681611f0 | |-ParagraphComment 0x560468161010 | | `-TextComment 0x560468160fe0 Text=" Returns number of tables query matched with." | |-ParagraphComment 0x560468161060 | | `-TextComment 0x560468161030 Text=" " | |-ParamCommandComment 0x560468161080 [in] implicitly Param="query" ParamIndex=0 | | `-ParagraphComment 0x560468161130 | | |-TextComment 0x5604681610e0 Text=" The query." | | `-TextComment 0x560468161100 Text=" " | `-BlockCommandComment 0x560468161150 Name="return" | `-ParagraphComment 0x5604681611b0 | `-TextComment 0x560468161180 Text=" The number of matched tables." |-FunctionDecl 0x56046805e288 line:7253:9 ecs_query_empty_table_count 'int32_t (const ecs_query_t *)' | |-ParmVarDecl 0x56046805e1f8 col:24 query 'const ecs_query_t *' | `-FullComment 0x560468161470 | |-ParagraphComment 0x560468161290 | | `-TextComment 0x560468161260 Text=" Returns number of empty tables query matched with." | |-ParagraphComment 0x5604681612e0 | | `-TextComment 0x5604681612b0 Text=" " | |-ParamCommandComment 0x560468161300 [in] implicitly Param="query" ParamIndex=0 | | `-ParagraphComment 0x5604681613b0 | | |-TextComment 0x560468161360 Text=" The query." | | `-TextComment 0x560468161380 Text=" " | `-BlockCommandComment 0x5604681613d0 Name="return" | `-ParagraphComment 0x560468161430 | `-TextComment 0x560468161400 Text=" The number of matched empty tables." |-FunctionDecl 0x56046805e3f8 line:7264:9 ecs_query_entity_count 'int32_t (const ecs_query_t *)' | |-ParmVarDecl 0x56046805e368 col:24 query 'const ecs_query_t *' | `-FullComment 0x560468161740 | |-ParagraphComment 0x560468161560 | | |-TextComment 0x5604681614e0 Text=" Returns number of entities query matched with." | | |-TextComment 0x560468161500 Text=" This operation iterates all non-empty tables in the query cache to find the" | | `-TextComment 0x560468161520 Text=" total number of entities." | |-ParagraphComment 0x5604681615b0 | | `-TextComment 0x560468161580 Text=" " | |-ParamCommandComment 0x5604681615d0 [in] implicitly Param="query" ParamIndex=0 | | `-ParagraphComment 0x560468161680 | | |-TextComment 0x560468161630 Text=" The query." | | `-TextComment 0x560468161650 Text=" " | `-BlockCommandComment 0x5604681616a0 Name="return" | `-ParagraphComment 0x560468161700 | `-TextComment 0x5604681616d0 Text=" The number of matched entities." |-RecordDecl 0x56046805e4f8 line:7275:16 struct ecs_event_desc_t definition | |-FullComment 0x5604681619a0 | | |-ParagraphComment 0x5604681617e0 | | | `-TextComment 0x5604681617b0 Text=" " | | |-VerbatimLineComment 0x560468161800 Text=" observer Observers" | | |-ParagraphComment 0x560468161870 | | | `-TextComment 0x560468161840 Text=" " | | `-BlockCommandComment 0x560468161890 Name="brief" | | `-ParagraphComment 0x560468161960 | | |-TextComment 0x5604681618c0 Text=" Functions for working with events and observers." | | |-TextComment 0x5604681618e0 Text=" " | | |-TextComment 0x560468161900 Text="@" | | `-TextComment 0x560468161920 Text="{" | |-FieldDecl 0x56046805e5b0 col:18 event 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x56046805e610 col:23 ids 'const ecs_type_t *' | |-FieldDecl 0x56046805e670 col:18 table 'ecs_table_t *' | |-FieldDecl 0x56046805e6d0 col:18 other_table 'ecs_table_t *' | |-FieldDecl 0x56046805e730 col:13 offset 'int32_t':'int' | |-FieldDecl 0x56046805e790 col:13 count 'int32_t':'int' | |-FieldDecl 0x56046805e7f0 col:18 entity 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x56046805e858 col:17 param 'const void *' | |-FieldDecl 0x56046805e8b8 col:17 observable 'ecs_poly_t *' | `-FieldDecl 0x56046805e950 col:19 flags 'ecs_flags32_t':'unsigned int' |-TypedefDecl 0x56046805e9f8 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 | |-ParagraphComment 0x560468161a40 | | `-TextComment 0x560468161a10 Text=" " | |-VerbatimLineComment 0x560468161a60 Text=" observer Observers" | |-ParagraphComment 0x560468161ad0 | | `-TextComment 0x560468161aa0 Text=" " | `-BlockCommandComment 0x560468161af0 Name="brief" | `-ParagraphComment 0x560468161bc0 | |-TextComment 0x560468161b20 Text=" Functions for working with events and observers." | |-TextComment 0x560468161b40 Text=" " | |-TextComment 0x560468161b60 Text="@" | `-TextComment 0x560468161b80 Text="{" |-FunctionDecl 0x56046805eca8 line:7342:6 ecs_emit 'void (ecs_world_t *, ecs_event_desc_t *)' | |-ParmVarDecl 0x56046805eaa0 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046805eb98 col:23 desc 'ecs_event_desc_t *' | `-FullComment 0x560468162340 | |-ParagraphComment 0x560468161d40 | | |-TextComment 0x560468161c70 Text=" Send event." | | |-TextComment 0x560468161c90 Text=" This sends an event to matching triggers " | | |-TextComment 0x560468161cb0 Text="&" | | |-TextComment 0x560468161cd0 Text=" is the mechanism used by flecs" | | `-TextComment 0x560468161cf0 Text=" itself to send OnAdd, OnRemove, etc events." | |-ParagraphComment 0x560468161db0 | | |-TextComment 0x560468161d60 Text=" Applications can use this function to send custom events, where a custom" | | `-TextComment 0x560468161d80 Text=" event can be any regular entity." | |-ParagraphComment 0x560468161e50 | | |-TextComment 0x560468161dd0 Text=" Applications should not send builtin flecs events, as this may violate" | | |-TextComment 0x560468161df0 Text=" assumptions the code makes about the conditions under which those events are" | | `-TextComment 0x560468161e10 Text=" sent." | |-ParagraphComment 0x560468161ec0 | | |-TextComment 0x560468161e70 Text=" Triggers are invoked synchronously. It is therefore safe to use stack-based" | | `-TextComment 0x560468161e90 Text=" data as event context, which can be set in the "param" member." | |-ParagraphComment 0x560468161f30 | | |-TextComment 0x560468161ee0 Text=" To send a notification for a single entity, an application should set the" | | `-TextComment 0x560468161f00 Text=" following members in the event descriptor:" | |-ParagraphComment 0x560468161fd0 | | |-TextComment 0x560468161f50 Text=" - table: set to the table of the entity" | | |-TextComment 0x560468161f70 Text=" - offset: set to the row of the entity in the table" | | `-TextComment 0x560468161f90 Text=" - count: set to 1" | |-ParagraphComment 0x5604681620e0 | | |-TextComment 0x560468161ff0 Text=" The table " | | |-TextComment 0x560468162010 Text="&" | | |-TextComment 0x560468162030 Text=" row of the entity can be obtained like this:" | | |-TextComment 0x560468162050 Text=" ecs_record_t *r = ecs_record_find(world, e);" | | |-TextComment 0x560468162070 Text=" desc.table = r->table;" | | `-TextComment 0x560468162090 Text=" desc.offset = ECS_RECORD_TO_ROW(r->row);" | |-ParagraphComment 0x560468162130 | | `-TextComment 0x560468162100 Text=" " | |-ParamCommandComment 0x560468162150 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468162200 | | |-TextComment 0x5604681621b0 Text=" The world." | | `-TextComment 0x5604681621d0 Text=" " | `-ParamCommandComment 0x560468162220 [in] implicitly Param="desc" ParamIndex=1 | `-ParagraphComment 0x5604681622b0 | `-TextComment 0x560468162280 Text=" Event parameters." |-FunctionDecl 0x56046805ef98 line:7356:14 ecs_observer_init 'ecs_entity_t (ecs_world_t *, const ecs_observer_desc_t *)' | |-ParmVarDecl 0x56046805ed98 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046805ee88 col:32 desc 'const ecs_observer_desc_t *' | `-FullComment 0x5604681626a0 | |-ParagraphComment 0x560468162430 | | |-TextComment 0x5604681623b0 Text=" Create observer." | | |-TextComment 0x5604681623d0 Text=" Observers are like triggers, but can subscribe for multiple terms. An " | | `-TextComment 0x5604681623f0 Text=" observer only triggers when the source of the event meets all terms." | |-ParagraphComment 0x560468162480 | | `-TextComment 0x560468162450 Text=" See the documentation for ecs_observer_desc_t for more details." | |-ParagraphComment 0x5604681624d0 | | `-TextComment 0x5604681624a0 Text=" " | |-ParamCommandComment 0x5604681624f0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681625a0 | | |-TextComment 0x560468162550 Text=" The world." | | `-TextComment 0x560468162570 Text=" " | `-ParamCommandComment 0x5604681625c0 [in] implicitly Param="desc" ParamIndex=1 | `-ParagraphComment 0x560468162650 | `-TextComment 0x560468162620 Text=" The observer creation parameters." |-FunctionDecl 0x56046805f118 line:7370:6 ecs_observer_default_run_action 'bool (ecs_iter_t *)' | |-ParmVarDecl 0x56046805f088 col:17 it 'ecs_iter_t *' | `-FullComment 0x5604681629c0 | |-ParagraphComment 0x5604681627e0 | | |-TextComment 0x560468162710 Text=" Default run action for observer." | | |-TextComment 0x560468162730 Text=" This function can be called from a custom observer run action (see " | | |-TextComment 0x560468162750 Text=" ecs_observer_desc_t::run for more details). This function ensures that the " | | |-TextComment 0x560468162770 Text=" observer's filter is applied to the iterator's table, filters out duplicate " | | `-TextComment 0x560468162790 Text=" events and implements EcsMonitor logic." | |-ParagraphComment 0x560468162830 | | `-TextComment 0x560468162800 Text=" " | |-ParamCommandComment 0x560468162850 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468162900 | | |-TextComment 0x5604681628b0 Text=" The iterator." | | `-TextComment 0x5604681628d0 Text=" " | `-BlockCommandComment 0x560468162920 Name="return" | `-ParagraphComment 0x560468162980 | `-TextComment 0x560468162950 Text=" True if the observer was invoked." |-FunctionDecl 0x56046805f360 line:7374:7 ecs_get_observer_ctx 'void *(const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x56046805f1d0 col:24 world 'const ecs_world_t *' | `-ParmVarDecl 0x56046805f248 col:18 observer 'ecs_entity_t':'unsigned long' |-FunctionDecl 0x56046805f538 line:7379:7 ecs_get_observer_binding_ctx 'void *(const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x56046805f420 col:24 world 'const ecs_world_t *' | `-ParmVarDecl 0x56046805f498 col:18 observer 'ecs_entity_t':'unsigned long' |-FunctionDecl 0x56046805f898 line:7413:6 ecs_iter_poly 'void (const ecs_world_t *, const ecs_poly_t *, ecs_iter_t *, ecs_term_t *)' | |-ParmVarDecl 0x56046805f688 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x56046805f700 col:23 poly 'const ecs_poly_t *' | |-ParmVarDecl 0x56046805f778 col:17 iter 'ecs_iter_t *' | |-ParmVarDecl 0x56046805f7f0 col:17 filter 'ecs_term_t *' | `-FullComment 0x560468163070 | |-ParagraphComment 0x560468162ab0 | | |-TextComment 0x560468162a30 Text=" Create iterator from poly object." | | |-TextComment 0x560468162a50 Text=" The provided poly object must have the iterable mixin. If an object is " | | `-TextComment 0x560468162a70 Text=" provided that does not have the mixin, the function will assert. " | |-ParagraphComment 0x560468162b50 | | |-TextComment 0x560468162ad0 Text=" When a filter is provided, an array of two iterators must be passed to the " | | |-TextComment 0x560468162af0 Text=" function. This allows the mixin implementation to create a chained iterator " | | `-TextComment 0x560468162b10 Text=" when necessary, which requires two iterator objects." | |-ParagraphComment 0x560468162bf0 | | |-TextComment 0x560468162b70 Text=" If a filter is provided, the first element in the array of two iterators is" | | |-TextComment 0x560468162b90 Text=" the one that should be iterated. The mixin implementation may or may not set" | | `-TextComment 0x560468162bb0 Text=" the second element, depending on whether an iterator chain is required." | |-ParagraphComment 0x560468162c90 | | |-TextComment 0x560468162c10 Text=" Additionally, when a filter is provided the returned iterator will be for a" | | |-TextComment 0x560468162c30 Text=" single term with the provided filter id. If the iterator is chained, the" | | `-TextComment 0x560468162c50 Text=" previous iterator in the chain can be accessed through it->chain_it." | |-ParagraphComment 0x560468162ce0 | | `-TextComment 0x560468162cb0 Text=" " | |-ParamCommandComment 0x560468162d00 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468162db0 | | |-TextComment 0x560468162d60 Text=" The world or stage for which to create the iterator." | | `-TextComment 0x560468162d80 Text=" " | |-ParamCommandComment 0x560468162dd0 [in] implicitly Param="poly" ParamIndex=1 | | `-ParagraphComment 0x560468162e80 | | |-TextComment 0x560468162e30 Text=" The poly object from which to create the iterator." | | `-TextComment 0x560468162e50 Text=" " | |-ParamCommandComment 0x560468162ea0 [in] implicitly Param="iter" ParamIndex=2 | | `-ParagraphComment 0x560468162f50 | | |-TextComment 0x560468162f00 Text=" The iterator (out, ecs_iter_t[2] when filter is set)." | | `-TextComment 0x560468162f20 Text=" " | `-ParamCommandComment 0x560468162f70 [in] implicitly Param="filter" ParamIndex=3 | `-ParagraphComment 0x560468163000 | `-TextComment 0x560468162fd0 Text=" Optional term used for filtering the results." |-FunctionDecl 0x560468060a58 line:7433:6 ecs_iter_next 'bool (ecs_iter_t *)' | |-ParmVarDecl 0x5604680609c8 col:17 it 'ecs_iter_t *' | `-FullComment 0x560468163440 | |-ParagraphComment 0x5604681631b0 | | |-TextComment 0x5604681630e0 Text=" Progress any iterator." | | |-TextComment 0x560468163100 Text=" This operation is useful in combination with iterators for which it is not" | | |-TextComment 0x560468163120 Text=" known what created them. Example use cases are functions that should accept" | | |-TextComment 0x560468163140 Text=" any kind of iterator (such as serializers) or iterators created from poly" | | `-TextComment 0x560468163160 Text=" objects." | |-ParagraphComment 0x560468163250 | | |-TextComment 0x5604681631d0 Text=" This operation is slightly slower than using a type-specific iterator (e.g." | | |-TextComment 0x5604681631f0 Text=" ecs_filter_next, ecs_query_next) as it has to call a function pointer which" | | `-TextComment 0x560468163210 Text=" introduces a level of indirection." | |-ParagraphComment 0x5604681632a0 | | `-TextComment 0x560468163270 Text=" " | |-ParamCommandComment 0x5604681632c0 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468163370 | | |-TextComment 0x560468163320 Text=" The iterator." | | `-TextComment 0x560468163340 Text=" " | `-BlockCommandComment 0x560468163390 Name="return" | `-ParagraphComment 0x5604681633f0 | `-TextComment 0x5604681633c0 Text=" True if iterator has more results, false if not." |-FunctionDecl 0x560468060bc8 line:7446:6 ecs_iter_fini 'void (ecs_iter_t *)' | |-ParmVarDecl 0x560468060b38 col:17 it 'ecs_iter_t *' | `-FullComment 0x5604681636e0 | |-ParagraphComment 0x560468163500 | | |-TextComment 0x5604681634b0 Text=" Cleanup iterator resources." | | `-TextComment 0x5604681634d0 Text=" This operation cleans up any resources associated with the iterator." | |-ParagraphComment 0x5604681635a0 | | |-TextComment 0x560468163520 Text=" This operation should only be used when an iterator is not iterated until" | | |-TextComment 0x560468163540 Text=" completion (next has not yet returned false). When an iterator is iterated" | | `-TextComment 0x560468163560 Text=" until completion, resources are automatically freed." | |-ParagraphComment 0x5604681635f0 | | `-TextComment 0x5604681635c0 Text=" " | `-ParamCommandComment 0x560468163610 [in] implicitly Param="it" ParamIndex=0 | `-ParagraphComment 0x5604681636a0 | `-TextComment 0x560468163670 Text=" The iterator." |-FunctionDecl 0x560468060d98 line:7461:9 ecs_iter_count 'int32_t (ecs_iter_t *)' | |-ParmVarDecl 0x560468060ca8 col:17 it 'ecs_iter_t *' | `-FullComment 0x560468163a50 | |-ParagraphComment 0x5604681637f0 | | |-TextComment 0x560468163750 Text=" Count number of matched entities in query." | | |-TextComment 0x560468163770 Text=" This operation returns the number of matched entities. If a query contains no" | | |-TextComment 0x560468163790 Text=" matched entities but still yields results (e.g. it has no terms with This" | | `-TextComment 0x5604681637b0 Text=" sources) the operation will return 0." | |-ParagraphComment 0x560468163860 | | |-TextComment 0x560468163810 Text=" To determine the number of matched entities, the operation iterates the" | | `-TextComment 0x560468163830 Text=" iterator until it yields no more results." | |-ParagraphComment 0x5604681638b0 | | `-TextComment 0x560468163880 Text=" " | |-ParamCommandComment 0x5604681638d0 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468163980 | | |-TextComment 0x560468163930 Text=" The iterator." | | `-TextComment 0x560468163950 Text=" " | `-BlockCommandComment 0x5604681639a0 Name="return" | `-ParagraphComment 0x560468163a00 | `-TextComment 0x5604681639d0 Text=" True if iterator has more results, false if not." |-FunctionDecl 0x560468060f08 line:7477:6 ecs_iter_is_true 'bool (ecs_iter_t *)' | |-ParmVarDecl 0x560468060e78 col:17 it 'ecs_iter_t *' | `-FullComment 0x560468163df0 | |-ParagraphComment 0x560468163b60 | | |-TextComment 0x560468163ac0 Text=" Test if iterator is true." | | |-TextComment 0x560468163ae0 Text=" This operation will return true if the iterator returns at least one result." | | |-TextComment 0x560468163b00 Text=" This is especially useful in combination with fact-checking rules (see the" | | `-TextComment 0x560468163b20 Text=" rules addon)." | |-ParagraphComment 0x560468163c00 | | |-TextComment 0x560468163b80 Text=" The operation requires a valid iterator. After the operation is invoked, the" | | |-TextComment 0x560468163ba0 Text=" application should no longer invoke next on the iterator and should treat it" | | `-TextComment 0x560468163bc0 Text=" as if the iterator is iterated until completion." | |-ParagraphComment 0x560468163c50 | | `-TextComment 0x560468163c20 Text=" " | |-ParamCommandComment 0x560468163c70 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468163d20 | | |-TextComment 0x560468163cd0 Text=" The iterator." | | `-TextComment 0x560468163cf0 Text=" " | `-BlockCommandComment 0x560468163d40 Name="return" | `-ParagraphComment 0x560468163da0 | `-TextComment 0x560468163d70 Text=" true if the iterator returns at least one result." |-FunctionDecl 0x5604680610d8 line:7488:14 ecs_iter_first 'ecs_entity_t (ecs_iter_t *)' | |-ParmVarDecl 0x560468060fe8 col:17 it 'ecs_iter_t *' | `-FullComment 0x5604681640c0 | |-ParagraphComment 0x560468163ee0 | | |-TextComment 0x560468163e60 Text=" Get first matching entity from iterator." | | |-TextComment 0x560468163e80 Text=" After this operation the application should treat the iterator as if it has" | | `-TextComment 0x560468163ea0 Text=" been iterated until completion." | |-ParagraphComment 0x560468163f30 | | `-TextComment 0x560468163f00 Text=" " | |-ParamCommandComment 0x560468163f50 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468164000 | | |-TextComment 0x560468163fb0 Text=" The iterator." | | `-TextComment 0x560468163fd0 Text=" " | `-BlockCommandComment 0x560468164020 Name="return" | `-ParagraphComment 0x560468164080 | `-TextComment 0x560468164050 Text=" The first matching entity, or 0 if no entities were matched." |-FunctionDecl 0x5604680613c8 line:7525:6 ecs_iter_set_var 'void (ecs_iter_t *, int32_t, ecs_entity_t)' | |-ParmVarDecl 0x5604680611b8 col:17 it 'ecs_iter_t *' | |-ParmVarDecl 0x560468061230 col:13 var_id 'int32_t':'int' | |-ParmVarDecl 0x5604680612a8 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x5604681649f0 | |-ParagraphComment 0x5604681641d0 | | |-TextComment 0x560468164130 Text=" Set value for iterator variable." | | |-TextComment 0x560468164150 Text=" This constrains the iterator to return only results for which the variable" | | |-TextComment 0x560468164170 Text=" equals the specified value. The default value for all variables is " | | `-TextComment 0x560468164190 Text=" EcsWildcard, which means the variable can assume any value." | |-ParagraphComment 0x560468164220 | | `-TextComment 0x5604681641f0 Text=" Example:" | |-ParagraphComment 0x560468164390 | | |-TextComment 0x560468164240 Text=" // Rule that matches (Eats, *)" | | |-TextComment 0x560468164260 Text=" ecs_rule_t *r = ecs_rule_init(world, " | | |-TextComment 0x560468164280 Text="&" | | |-TextComment 0x5604681642a0 Text="(ecs_filter_desc_t){" | | |-TextComment 0x5604681642c0 Text=" .terms = {" | | |-TextComment 0x5604681642e0 Text=" { .first.id = Eats, .second.name = "_Food" }" | | |-TextComment 0x560468164300 Text=" }" | | `-TextComment 0x560468164320 Text=" });" | |-ParagraphComment 0x5604681643e0 | | `-TextComment 0x5604681643b0 Text=" int food_var = ecs_rule_find_var(r, "Food");" | |-ParagraphComment 0x5604681644d0 | | |-TextComment 0x560468164400 Text=" // Set Food to Apples, so we're only matching (Eats, Apples)" | | |-TextComment 0x560468164420 Text=" ecs_iter_t it = ecs_rule_iter(world, r);" | | |-TextComment 0x560468164440 Text=" ecs_iter_set_var(" | | |-TextComment 0x560468164460 Text="&it" | | `-TextComment 0x560468164480 Text=", food_var, Apples);" | |-ParagraphComment 0x560468164660 | | |-TextComment 0x5604681644f0 Text=" while (ecs_rule_next(" | | |-TextComment 0x560468164510 Text="&it" | | |-TextComment 0x560468164530 Text=")) {" | | |-TextComment 0x560468164550 Text=" for (int i = 0; i " | | |-TextComment 0x560468164570 Text="<" | | |-TextComment 0x560468164590 Text=" it.count; i ++) {" | | |-TextComment 0x5604681645b0 Text=" // iterate as usual" | | |-TextComment 0x5604681645d0 Text=" }" | | `-TextComment 0x5604681645f0 Text=" }" | |-ParagraphComment 0x5604681646d0 | | |-TextComment 0x560468164680 Text=" The variable must be initialized after creating the iterator and before the" | | `-TextComment 0x5604681646a0 Text=" first call to next." | |-ParagraphComment 0x560468164720 | | `-TextComment 0x5604681646f0 Text=" " | |-ParamCommandComment 0x560468164740 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x5604681647f0 | | |-TextComment 0x5604681647a0 Text=" The iterator." | | `-TextComment 0x5604681647c0 Text=" " | |-ParamCommandComment 0x560468164810 [in] implicitly Param="var_id" ParamIndex=1 | | `-ParagraphComment 0x5604681648c0 | | |-TextComment 0x560468164870 Text=" The variable index." | | `-TextComment 0x560468164890 Text=" " | `-ParamCommandComment 0x5604681648e0 [in] implicitly Param="entity" ParamIndex=2 | `-ParagraphComment 0x560468164970 | `-TextComment 0x560468164940 Text=" The entity variable value." |-FunctionDecl 0x5604680616c8 line:7538:6 ecs_iter_set_var_as_table 'void (ecs_iter_t *, int32_t, const ecs_table_t *)' | |-ParmVarDecl 0x5604680614b8 col:17 it 'ecs_iter_t *' | |-ParmVarDecl 0x560468061530 col:13 var_id 'int32_t':'int' | |-ParmVarDecl 0x5604680615a8 col:24 table 'const ecs_table_t *' | `-FullComment 0x560468164da0 | |-ParagraphComment 0x560468164ab0 | | |-TextComment 0x560468164a60 Text=" Same as ecs_iter_set_var, but for a table." | | `-TextComment 0x560468164a80 Text=" This constrains the variable to all entities in a table." | |-ParagraphComment 0x560468164b00 | | `-TextComment 0x560468164ad0 Text=" " | |-ParamCommandComment 0x560468164b20 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468164bd0 | | |-TextComment 0x560468164b80 Text=" The iterator." | | `-TextComment 0x560468164ba0 Text=" " | |-ParamCommandComment 0x560468164bf0 [in] implicitly Param="var_id" ParamIndex=1 | | `-ParagraphComment 0x560468164ca0 | | |-TextComment 0x560468164c50 Text=" The variable index." | | `-TextComment 0x560468164c70 Text=" " | `-ParamCommandComment 0x560468164cc0 [in] implicitly Param="table" ParamIndex=2 | `-ParagraphComment 0x560468164d50 | `-TextComment 0x560468164d20 Text=" The table variable value." |-FunctionDecl 0x560468061a38 line:7551:6 ecs_iter_set_var_as_range 'void (ecs_iter_t *, int32_t, const ecs_table_range_t *)' | |-ParmVarDecl 0x5604680617b8 col:17 it 'ecs_iter_t *' | |-ParmVarDecl 0x560468061830 col:13 var_id 'int32_t':'int' | |-ParmVarDecl 0x560468061908 col:30 range 'const ecs_table_range_t *' | `-FullComment 0x560468165150 | |-ParagraphComment 0x560468164e60 | | |-TextComment 0x560468164e10 Text=" Same as ecs_iter_set_var, but for a range of entities" | | `-TextComment 0x560468164e30 Text=" This constrains the variable to a range of entities in a table." | |-ParagraphComment 0x560468164eb0 | | `-TextComment 0x560468164e80 Text=" " | |-ParamCommandComment 0x560468164ed0 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468164f80 | | |-TextComment 0x560468164f30 Text=" The iterator." | | `-TextComment 0x560468164f50 Text=" " | |-ParamCommandComment 0x560468164fa0 [in] implicitly Param="var_id" ParamIndex=1 | | `-ParagraphComment 0x560468165050 | | |-TextComment 0x560468165000 Text=" The variable index." | | `-TextComment 0x560468165020 Text=" " | `-ParamCommandComment 0x560468165070 [in] implicitly Param="range" ParamIndex=2 | `-ParagraphComment 0x560468165100 | `-TextComment 0x5604681650d0 Text=" The range variable value." |-FunctionDecl 0x560468061cb8 line:7568:14 ecs_iter_get_var 'ecs_entity_t (ecs_iter_t *, int32_t)' | |-ParmVarDecl 0x560468061b28 col:17 it 'ecs_iter_t *' | |-ParmVarDecl 0x560468061ba0 col:13 var_id 'int32_t':'int' | `-FullComment 0x560468165500 | |-ParagraphComment 0x560468165240 | | |-TextComment 0x5604681651c0 Text=" Get value of iterator variable as entity." | | |-TextComment 0x5604681651e0 Text=" A variable can be interpreted as entity if it is set to an entity, or if it" | | `-TextComment 0x560468165200 Text=" is set to a table range with count 1." | |-ParagraphComment 0x5604681652e0 | | |-TextComment 0x560468165260 Text=" This operation can only be invoked on valid iterators. The variable index" | | |-TextComment 0x560468165280 Text=" must be smaller than the total number of variables provided by the iterator" | | `-TextComment 0x5604681652a0 Text=" (as set in ecs_iter_t::variable_count)." | |-ParagraphComment 0x560468165330 | | `-TextComment 0x560468165300 Text=" " | |-ParamCommandComment 0x560468165350 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468165400 | | |-TextComment 0x5604681653b0 Text=" The iterator." | | `-TextComment 0x5604681653d0 Text=" " | `-ParamCommandComment 0x560468165420 [in] implicitly Param="var_id" ParamIndex=1 | `-ParagraphComment 0x5604681654b0 | `-TextComment 0x560468165480 Text=" The variable index." |-FunctionDecl 0x560468061f38 line:7585:14 ecs_iter_get_var_as_table 'ecs_table_t *(ecs_iter_t *, int32_t)' | |-ParmVarDecl 0x560468061da8 col:17 it 'ecs_iter_t *' | |-ParmVarDecl 0x560468061e20 col:13 var_id 'int32_t':'int' | `-FullComment 0x5604681658d0 | |-ParagraphComment 0x560468165610 | | |-TextComment 0x560468165570 Text=" Get value of iterator variable as table." | | |-TextComment 0x560468165590 Text=" A variable can be interpreted as table if it is set as table range with" | | |-TextComment 0x5604681655b0 Text=" both offset and count set to 0, or if offset is 0 and count matches the" | | `-TextComment 0x5604681655d0 Text=" number of elements in the table." | |-ParagraphComment 0x5604681656b0 | | |-TextComment 0x560468165630 Text=" This operation can only be invoked on valid iterators. The variable index" | | |-TextComment 0x560468165650 Text=" must be smaller than the total number of variables provided by the iterator" | | `-TextComment 0x560468165670 Text=" (as set in ecs_iter_t::variable_count)." | |-ParagraphComment 0x560468165700 | | `-TextComment 0x5604681656d0 Text=" " | |-ParamCommandComment 0x560468165720 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x5604681657d0 | | |-TextComment 0x560468165780 Text=" The iterator." | | `-TextComment 0x5604681657a0 Text=" " | `-ParamCommandComment 0x5604681657f0 [in] implicitly Param="var_id" ParamIndex=1 | `-ParagraphComment 0x560468165880 | `-TextComment 0x560468165850 Text=" The variable index." |-FunctionDecl 0x5604680621b8 line:7602:19 ecs_iter_get_var_as_range 'ecs_table_range_t (ecs_iter_t *, int32_t)' | |-ParmVarDecl 0x560468062028 col:17 it 'ecs_iter_t *' | |-ParmVarDecl 0x5604680620a0 col:13 var_id 'int32_t':'int' | `-FullComment 0x560468165ca0 | |-ParagraphComment 0x5604681659e0 | | |-TextComment 0x560468165940 Text=" Get value of iterator variable as table range." | | |-TextComment 0x560468165960 Text=" A value can be interpreted as table range if it is set as table range, or if" | | |-TextComment 0x560468165980 Text=" it is set to an entity with a non-empty type (the entity must have at least" | | `-TextComment 0x5604681659a0 Text=" one component, tag or relationship in its type)." | |-ParagraphComment 0x560468165a80 | | |-TextComment 0x560468165a00 Text=" This operation can only be invoked on valid iterators. The variable index" | | |-TextComment 0x560468165a20 Text=" must be smaller than the total number of variables provided by the iterator" | | `-TextComment 0x560468165a40 Text=" (as set in ecs_iter_t::variable_count)." | |-ParagraphComment 0x560468165ad0 | | `-TextComment 0x560468165aa0 Text=" " | |-ParamCommandComment 0x560468165af0 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468165ba0 | | |-TextComment 0x560468165b50 Text=" The iterator." | | `-TextComment 0x560468165b70 Text=" " | `-ParamCommandComment 0x560468165bc0 [in] implicitly Param="var_id" ParamIndex=1 | `-ParagraphComment 0x560468165c50 | `-TextComment 0x560468165c20 Text=" The variable index." |-FunctionDecl 0x560468062438 line:7619:6 ecs_iter_var_is_constrained 'bool (ecs_iter_t *, int32_t)' | |-ParmVarDecl 0x5604680622a8 col:17 it 'ecs_iter_t *' | |-ParmVarDecl 0x560468062320 col:13 var_id 'int32_t':'int' | `-FullComment 0x5604681660c0 | |-ParagraphComment 0x560468165d90 | | |-TextComment 0x560468165d10 Text=" Returns whether variable is constrained." | | |-TextComment 0x560468165d30 Text=" This operation returns true for variables set by one of the ecs_iter_set_var*" | | `-TextComment 0x560468165d50 Text=" operations." | |-ParagraphComment 0x560468165e00 | | |-TextComment 0x560468165db0 Text=" A constrained variable is guaranteed not to change values while results are" | | `-TextComment 0x560468165dd0 Text=" being iterated." | |-ParagraphComment 0x560468165e50 | | `-TextComment 0x560468165e20 Text=" " | |-ParamCommandComment 0x560468165e70 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468165f20 | | |-TextComment 0x560468165ed0 Text=" The iterator." | | `-TextComment 0x560468165ef0 Text=" " | |-ParamCommandComment 0x560468165f40 [in] implicitly Param="var_id" ParamIndex=1 | | `-ParagraphComment 0x560468165ff0 | | |-TextComment 0x560468165fa0 Text=" The variable index." | | `-TextComment 0x560468165fc0 Text=" " | `-BlockCommandComment 0x560468166010 Name="return" | `-ParagraphComment 0x560468166070 | `-TextComment 0x560468166040 Text=" Whether the variable is constrained to a specified value." |-FunctionDecl 0x560468062738 line:7639:12 ecs_page_iter 'ecs_iter_t (const ecs_iter_t *, int32_t, int32_t)' | |-ParmVarDecl 0x560468062528 col:23 it 'const ecs_iter_t *' | |-ParmVarDecl 0x5604680625a0 col:13 offset 'int32_t':'int' | |-ParmVarDecl 0x560468062618 col:13 limit 'int32_t':'int' | `-FullComment 0x560468166650 | |-ParagraphComment 0x5604681661b0 | | |-TextComment 0x560468166130 Text=" Create a paged iterator." | | |-TextComment 0x560468166150 Text=" Paged iterators limit the results to those starting from 'offset', and will" | | `-TextComment 0x560468166170 Text=" return at most 'limit' results." | |-ParagraphComment 0x560468166200 | | `-TextComment 0x5604681661d0 Text=" The iterator must be iterated with ecs_page_next." | |-ParagraphComment 0x5604681662a0 | | |-TextComment 0x560468166220 Text=" A paged iterator acts as a passthrough for data exposed by the parent" | | |-TextComment 0x560468166240 Text=" iterator, so that any data provided by the parent will also be provided by" | | `-TextComment 0x560468166260 Text=" the paged iterator." | |-ParagraphComment 0x5604681662f0 | | `-TextComment 0x5604681662c0 Text=" " | |-ParamCommandComment 0x560468166310 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x5604681663d0 | | |-TextComment 0x560468166380 Text=" The source iterator." | | `-TextComment 0x5604681663a0 Text=" " | |-ParamCommandComment 0x5604681663f0 [in] implicitly Param="offset" ParamIndex=1 | | `-ParagraphComment 0x5604681664a0 | | |-TextComment 0x560468166450 Text=" The number of entities to skip." | | `-TextComment 0x560468166470 Text=" " | |-ParamCommandComment 0x5604681664c0 [in] implicitly Param="limit" ParamIndex=2 | | `-ParagraphComment 0x560468166570 | | |-TextComment 0x560468166520 Text=" The maximum number of entities to iterate." | | `-TextComment 0x560468166540 Text=" " | `-BlockCommandComment 0x560468166590 Name="return" | `-ParagraphComment 0x5604681665f0 | `-TextComment 0x5604681665c0 Text=" A page iterator." |-FunctionDecl 0x5604680628b8 line:7651:6 ecs_page_next 'bool (ecs_iter_t *)' | |-ParmVarDecl 0x560468062828 col:17 it 'ecs_iter_t *' | `-FullComment 0x5604681668f0 | |-ParagraphComment 0x560468166710 | | |-TextComment 0x5604681666c0 Text=" Progress a paged iterator." | | `-TextComment 0x5604681666e0 Text=" Progresses an iterator created by ecs_page_iter." | |-ParagraphComment 0x560468166760 | | `-TextComment 0x560468166730 Text=" " | |-ParamCommandComment 0x560468166780 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468166830 | | |-TextComment 0x5604681667e0 Text=" The iterator." | | `-TextComment 0x560468166800 Text=" " | `-BlockCommandComment 0x560468166850 Name="return" | `-ParagraphComment 0x5604681668b0 | `-TextComment 0x560468166880 Text=" true if iterator has more results, false if not." |-FunctionDecl 0x560468062b58 line:7675:12 ecs_worker_iter 'ecs_iter_t (const ecs_iter_t *, int32_t, int32_t)' | |-ParmVarDecl 0x5604680629c8 col:23 it 'const ecs_iter_t *' | |-ParmVarDecl 0x560468062a40 col:13 index 'int32_t':'int' | |-ParmVarDecl 0x560468062ab8 col:13 count 'int32_t':'int' | `-FullComment 0x560468166f40 | |-ParagraphComment 0x560468166a00 | | |-TextComment 0x560468166960 Text=" Create a worker iterator." | | |-TextComment 0x560468166980 Text=" Worker iterators can be used to equally divide the number of matched entities " | | |-TextComment 0x5604681669a0 Text=" across N resources (usually threads). Each resource will process the total" | | `-TextComment 0x5604681669c0 Text=" number of matched entities divided by 'count'." | |-ParagraphComment 0x560468166aa0 | | |-TextComment 0x560468166a20 Text=" Entities are distributed across resources such that the distribution is" | | |-TextComment 0x560468166a40 Text=" stable between queries. Two queries that match the same table are guaranteed" | | `-TextComment 0x560468166a60 Text=" to match the same entities in that table." | |-ParagraphComment 0x560468166af0 | | `-TextComment 0x560468166ac0 Text=" The iterator must be iterated with ecs_worker_next." | |-ParagraphComment 0x560468166b90 | | |-TextComment 0x560468166b10 Text=" A worker iterator acts as a passthrough for data exposed by the parent" | | |-TextComment 0x560468166b30 Text=" iterator, so that any data provided by the parent will also be provided by" | | `-TextComment 0x560468166b50 Text=" the worker iterator." | |-ParagraphComment 0x560468166be0 | | `-TextComment 0x560468166bb0 Text=" " | |-ParamCommandComment 0x560468166c00 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468166cb0 | | |-TextComment 0x560468166c60 Text=" The source iterator." | | `-TextComment 0x560468166c80 Text=" " | |-ParamCommandComment 0x560468166cd0 [in] implicitly Param="index" ParamIndex=1 | | `-ParagraphComment 0x560468166d80 | | |-TextComment 0x560468166d30 Text=" The index of the current resource." | | `-TextComment 0x560468166d50 Text=" " | |-ParamCommandComment 0x560468166da0 [in] implicitly Param="count" ParamIndex=2 | | `-ParagraphComment 0x560468166e50 | | |-TextComment 0x560468166e00 Text=" The total number of resources to divide entities between." | | `-TextComment 0x560468166e20 Text=" " | `-BlockCommandComment 0x560468166e70 Name="return" | `-ParagraphComment 0x560468166ed0 | `-TextComment 0x560468166ea0 Text=" A worker iterator." |-FunctionDecl 0x560468062cd8 line:7687:6 ecs_worker_next 'bool (ecs_iter_t *)' | |-ParmVarDecl 0x560468062c48 col:17 it 'ecs_iter_t *' | `-FullComment 0x5604681671e0 | |-ParagraphComment 0x560468167000 | | |-TextComment 0x560468166fb0 Text=" Progress a worker iterator." | | `-TextComment 0x560468166fd0 Text=" Progresses an iterator created by ecs_worker_iter." | |-ParagraphComment 0x560468167050 | | `-TextComment 0x560468167020 Text=" " | |-ParamCommandComment 0x560468167070 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468167120 | | |-TextComment 0x5604681670d0 Text=" The iterator." | | `-TextComment 0x5604681670f0 Text=" " | `-BlockCommandComment 0x560468167140 Name="return" | `-ParagraphComment 0x5604681671a0 | `-TextComment 0x560468167170 Text=" true if iterator has more results, false if not." |-FunctionDecl 0x560468062fd0 line:7714:7 ecs_field_w_size 'void *(const ecs_iter_t *, size_t, int32_t)' | |-ParmVarDecl 0x560468062db8 col:23 it 'const ecs_iter_t *' | |-ParmVarDecl 0x560468062e30 col:12 size 'size_t':'unsigned long' | |-ParmVarDecl 0x560468062ea8 col:13 index 'int32_t':'int' | `-FullComment 0x5604681678a0 | |-ParagraphComment 0x5604681672f0 | | |-TextComment 0x560468167250 Text=" Obtain data for a query field." | | |-TextComment 0x560468167270 Text=" This operation retrieves a pointer to an array of data that belongs to the" | | |-TextComment 0x560468167290 Text=" term in the query. The index refers to the location of the term in the query," | | `-TextComment 0x5604681672b0 Text=" and starts counting from one." | |-ParagraphComment 0x560468167360 | | |-TextComment 0x560468167310 Text=" For example, the query "Position, Velocity" will return the Position array" | | `-TextComment 0x560468167330 Text=" for index 1, and the Velocity array for index 2." | |-ParagraphComment 0x560468167450 | | |-TextComment 0x560468167380 Text=" When the specified field is not owned by the entity this function returns a" | | |-TextComment 0x5604681673a0 Text=" pointer instead of an array. This happens when the source of a field is not" | | |-TextComment 0x5604681673c0 Text=" the entity being iterated, such as a shared component (from a prefab), a" | | |-TextComment 0x5604681673e0 Text=" component from a parent, or another entity. The ecs_field_is_self operation" | | `-TextComment 0x560468167400 Text=" can be used to test dynamically if a field is owned." | |-ParagraphComment 0x5604681674f0 | | |-TextComment 0x560468167470 Text=" The provided size must be either 0 or must match the size of the datatype" | | |-TextComment 0x560468167490 Text=" of the returned array. If the size does not match, the operation may assert." | | `-TextComment 0x5604681674b0 Text=" The size can be dynamically obtained with ecs_field_size." | |-ParagraphComment 0x560468167540 | | `-TextComment 0x560468167510 Text=" " | |-ParamCommandComment 0x560468167560 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468167610 | | |-TextComment 0x5604681675c0 Text=" The iterator." | | `-TextComment 0x5604681675e0 Text=" " | |-ParamCommandComment 0x560468167630 [in] implicitly Param="size" ParamIndex=1 | | `-ParagraphComment 0x5604681676e0 | | |-TextComment 0x560468167690 Text=" The type size of the requested data." | | `-TextComment 0x5604681676b0 Text=" " | |-ParamCommandComment 0x560468167700 [in] implicitly Param="index" ParamIndex=2 | | `-ParagraphComment 0x5604681677b0 | | |-TextComment 0x560468167760 Text=" The index of the field in the iterator." | | `-TextComment 0x560468167780 Text=" " | `-BlockCommandComment 0x5604681677d0 Name="return" | `-ParagraphComment 0x560468167830 | `-TextComment 0x560468167800 Text=" A pointer to the data of the field." |-FunctionDecl 0x560468063258 line:7728:6 ecs_field_is_readonly 'bool (const ecs_iter_t *, int32_t)' | |-ParmVarDecl 0x5604680630c8 col:23 it 'const ecs_iter_t *' | |-ParmVarDecl 0x560468063140 col:13 index 'int32_t':'int' | `-FullComment 0x560468167c50 | |-ParagraphComment 0x560468167990 | | |-TextComment 0x560468167910 Text=" Test whether the field is readonly." | | |-TextComment 0x560468167930 Text=" This operation returns whether the field is readonly. Readonly fields are" | | `-TextComment 0x560468167950 Text=" annotated with [in], or are added as a const type in the C++ API." | |-ParagraphComment 0x5604681679e0 | | `-TextComment 0x5604681679b0 Text=" " | |-ParamCommandComment 0x560468167a00 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468167ab0 | | |-TextComment 0x560468167a60 Text=" The iterator." | | `-TextComment 0x560468167a80 Text=" " | |-ParamCommandComment 0x560468167ad0 [in] implicitly Param="index" ParamIndex=1 | | `-ParagraphComment 0x560468167b80 | | |-TextComment 0x560468167b30 Text=" The index of the field in the iterator." | | `-TextComment 0x560468167b50 Text=" " | `-BlockCommandComment 0x560468167ba0 Name="return" | `-ParagraphComment 0x560468167c00 | `-TextComment 0x560468167bd0 Text=" Whether the field is readonly." |-FunctionDecl 0x560468063458 line:7743:6 ecs_field_is_writeonly 'bool (const ecs_iter_t *, int32_t)' | |-ParmVarDecl 0x560468063348 col:23 it 'const ecs_iter_t *' | |-ParmVarDecl 0x5604680633c0 col:13 index 'int32_t':'int' | `-FullComment 0x560468168050 | |-ParagraphComment 0x560468167d40 | | |-TextComment 0x560468167cc0 Text=" Test whether the field is writeonly." | | |-TextComment 0x560468167ce0 Text=" This operation returns whether this is a writeonly field. Writeonly terms are" | | `-TextComment 0x560468167d00 Text=" annotated with [out]." | |-ParagraphComment 0x560468167d90 | | `-TextComment 0x560468167d60 Text=" Serializers are not required to serialize the values of a writeonly field." | |-ParagraphComment 0x560468167de0 | | `-TextComment 0x560468167db0 Text=" " | |-ParamCommandComment 0x560468167e00 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468167eb0 | | |-TextComment 0x560468167e60 Text=" The iterator." | | `-TextComment 0x560468167e80 Text=" " | |-ParamCommandComment 0x560468167ed0 [in] implicitly Param="index" ParamIndex=1 | | `-ParagraphComment 0x560468167f80 | | |-TextComment 0x560468167f30 Text=" The index of the field in the iterator." | | `-TextComment 0x560468167f50 Text=" " | `-BlockCommandComment 0x560468167fa0 Name="return" | `-ParagraphComment 0x560468168000 | `-TextComment 0x560468167fd0 Text=" Whether the field is writeonly." |-FunctionDecl 0x560468063658 line:7754:6 ecs_field_is_set 'bool (const ecs_iter_t *, int32_t)' | |-ParmVarDecl 0x560468063548 col:23 it 'const ecs_iter_t *' | |-ParmVarDecl 0x5604680635c0 col:13 index 'int32_t':'int' | `-FullComment 0x5604681683c0 | |-ParagraphComment 0x5604681680f0 | | `-TextComment 0x5604681680c0 Text=" Test whether field is set." | |-ParagraphComment 0x560468168140 | | `-TextComment 0x560468168110 Text=" " | |-ParamCommandComment 0x560468168160 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468168210 | | |-TextComment 0x5604681681c0 Text=" The iterator." | | `-TextComment 0x5604681681e0 Text=" " | |-ParamCommandComment 0x560468168230 [in] implicitly Param="index" ParamIndex=1 | | `-ParagraphComment 0x5604681682e0 | | |-TextComment 0x560468168290 Text=" The index of the field in the iterator." | | `-TextComment 0x5604681682b0 Text=" " | `-BlockCommandComment 0x560468168300 Name="return" | `-ParagraphComment 0x560468168370 | `-TextComment 0x560468168330 Text=" Whether the field is set." |-FunctionDecl 0x5604680638d8 line:7765:10 ecs_field_id 'ecs_id_t (const ecs_iter_t *, int32_t)' | |-ParmVarDecl 0x560468063748 col:23 it 'const ecs_iter_t *' | |-ParmVarDecl 0x5604680637c0 col:13 index 'int32_t':'int' | `-FullComment 0x560468168720 | |-ParagraphComment 0x560468168460 | | `-TextComment 0x560468168430 Text=" Return id matched for field." | |-ParagraphComment 0x5604681684b0 | | `-TextComment 0x560468168480 Text=" " | |-ParamCommandComment 0x5604681684d0 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468168580 | | |-TextComment 0x560468168530 Text=" The iterator." | | `-TextComment 0x560468168550 Text=" " | |-ParamCommandComment 0x5604681685a0 [in] implicitly Param="index" ParamIndex=1 | | `-ParagraphComment 0x560468168650 | | |-TextComment 0x560468168600 Text=" The index of the field in the iterator." | | `-TextComment 0x560468168620 Text=" " | `-BlockCommandComment 0x560468168670 Name="return" | `-ParagraphComment 0x5604681686d0 | `-TextComment 0x5604681686a0 Text=" The id matched for the field." |-FunctionDecl 0x560468063b28 line:7777:14 ecs_field_src 'ecs_entity_t (const ecs_iter_t *, int32_t)' | |-ParmVarDecl 0x5604680639d8 col:23 it 'const ecs_iter_t *' | |-ParmVarDecl 0x560468063a50 col:13 index 'int32_t':'int' | `-FullComment 0x560468168aa0 | |-ParagraphComment 0x5604681687e0 | | |-TextComment 0x560468168790 Text=" Return field source." | | `-TextComment 0x5604681687b0 Text=" The field source is the entity on which the field was matched." | |-ParagraphComment 0x560468168830 | | `-TextComment 0x560468168800 Text=" " | |-ParamCommandComment 0x560468168850 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468168900 | | |-TextComment 0x5604681688b0 Text=" The iterator." | | `-TextComment 0x5604681688d0 Text=" " | |-ParamCommandComment 0x560468168920 [in] implicitly Param="index" ParamIndex=1 | | `-ParagraphComment 0x5604681689d0 | | |-TextComment 0x560468168980 Text=" The index of the field in the iterator." | | `-TextComment 0x5604681689a0 Text=" " | `-BlockCommandComment 0x5604681689f0 Name="return" | `-ParagraphComment 0x560468168a50 | `-TextComment 0x560468168a20 Text=" The source for the field." |-FunctionDecl 0x560468063d68 line:7790:8 ecs_field_size 'size_t (const ecs_iter_t *, int32_t)' | |-ParmVarDecl 0x560468063c18 col:23 it 'const ecs_iter_t *' | |-ParmVarDecl 0x560468063c90 col:13 index 'int32_t':'int' | `-FullComment 0x560468168e50 | |-ParagraphComment 0x560468168b90 | | |-TextComment 0x560468168b10 Text=" Return field type size." | | |-TextComment 0x560468168b30 Text=" Return type size of the data returned by field. Returns 0 if field has no " | | `-TextComment 0x560468168b50 Text=" data." | |-ParagraphComment 0x560468168be0 | | `-TextComment 0x560468168bb0 Text=" " | |-ParamCommandComment 0x560468168c00 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468168cb0 | | |-TextComment 0x560468168c60 Text=" The iterator." | | `-TextComment 0x560468168c80 Text=" " | |-ParamCommandComment 0x560468168cd0 [in] implicitly Param="index" ParamIndex=1 | | `-ParagraphComment 0x560468168d80 | | |-TextComment 0x560468168d30 Text=" The index of the field in the iterator." | | `-TextComment 0x560468168d50 Text=" " | `-BlockCommandComment 0x560468168da0 Name="return" | `-ParagraphComment 0x560468168e00 | `-TextComment 0x560468168dd0 Text=" The type size for the field." |-FunctionDecl 0x560468063f68 line:7808:6 ecs_field_is_self 'bool (const ecs_iter_t *, int32_t)' | |-ParmVarDecl 0x560468063e58 col:23 it 'const ecs_iter_t *' | |-ParmVarDecl 0x560468063ed0 col:13 index 'int32_t':'int' | `-FullComment 0x5604681692c0 | |-ParagraphComment 0x560468168f60 | | |-TextComment 0x560468168ec0 Text=" Test whether the field is matched on self." | | |-TextComment 0x560468168ee0 Text=" This operation returns whether the field is matched on the currently iterated" | | |-TextComment 0x560468168f00 Text=" entity. This function will return false when the field is owned by another" | | `-TextComment 0x560468168f20 Text=" entity, such as a parent or a prefab." | |-ParagraphComment 0x560468169000 | | |-TextComment 0x560468168f80 Text=" When this operation returns false, the field must be accessed as a single " | | |-TextComment 0x560468168fa0 Text=" value instead of an array. Fields for which this operation returns true" | | `-TextComment 0x560468168fc0 Text=" return arrays with it->count values." | |-ParagraphComment 0x560468169050 | | `-TextComment 0x560468169020 Text=" " | |-ParamCommandComment 0x560468169070 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468169120 | | |-TextComment 0x5604681690d0 Text=" The iterator." | | `-TextComment 0x5604681690f0 Text=" " | |-ParamCommandComment 0x560468169140 [in] implicitly Param="index" ParamIndex=1 | | `-ParagraphComment 0x5604681691f0 | | |-TextComment 0x5604681691a0 Text=" The index of the field in the iterator." | | `-TextComment 0x5604681691c0 Text=" " | `-BlockCommandComment 0x560468169210 Name="return" | `-ParagraphComment 0x560468169270 | `-TextComment 0x560468169240 Text=" Whether the field is matched on self." |-FunctionDecl 0x560468064150 line:7824:7 ecs_iter_str 'char *(const ecs_iter_t *)' | |-ParmVarDecl 0x560468064058 col:23 it 'const ecs_iter_t *' | `-FullComment 0x560468169640 | |-ParagraphComment 0x5604681693b0 | | |-TextComment 0x560468169330 Text=" Convert iterator to string." | | |-TextComment 0x560468169350 Text=" Prints the contents of an iterator to a string. Useful for debugging and/or" | | `-TextComment 0x560468169370 Text=" testing the output of an iterator." | |-ParagraphComment 0x560468169450 | | |-TextComment 0x5604681693d0 Text=" The function only converts the currently iterated data to a string. To " | | |-TextComment 0x5604681693f0 Text=" convert all data, the application has to manually call the next function and" | | `-TextComment 0x560468169410 Text=" call ecs_iter_str on each result." | |-ParagraphComment 0x5604681694a0 | | `-TextComment 0x560468169470 Text=" " | |-ParamCommandComment 0x5604681694c0 [in] implicitly Param="it" ParamIndex=0 | | `-ParagraphComment 0x560468169570 | | |-TextComment 0x560468169520 Text=" The iterator." | | `-TextComment 0x560468169540 Text=" " | `-BlockCommandComment 0x560468169590 Name="return" | `-ParagraphComment 0x5604681695f0 | `-TextComment 0x5604681695c0 Text=" A string representing the contents of the iterator." |-FunctionDecl 0x560468064388 line:7842:19 ecs_table_get_type 'const ecs_type_t *(const ecs_table_t *)' | |-ParmVarDecl 0x560468064298 col:24 table 'const ecs_table_t *' | `-FullComment 0x5604681698c0 | |-ParagraphComment 0x5604681696e0 | | `-TextComment 0x5604681696b0 Text=" Get type for table." | |-ParagraphComment 0x560468169730 | | `-TextComment 0x560468169700 Text=" " | |-ParamCommandComment 0x560468169750 [in] implicitly Param="table" ParamIndex=0 | | `-ParagraphComment 0x560468169800 | | |-TextComment 0x5604681697b0 Text=" The table." | | `-TextComment 0x5604681697d0 Text=" " | `-BlockCommandComment 0x560468169820 Name="return" | `-ParagraphComment 0x560468169880 | `-TextComment 0x560468169850 Text=" The type of the table." |-FunctionDecl 0x560468064680 line:7854:7 ecs_table_get_column 'void *(const ecs_table_t *, int32_t, int32_t)' | |-ParmVarDecl 0x560468064468 col:24 table 'const ecs_table_t *' | |-ParmVarDecl 0x5604680644e0 col:13 index 'int32_t':'int' | |-ParmVarDecl 0x560468064558 col:13 offset 'int32_t':'int' | `-FullComment 0x560468169d10 | |-ParagraphComment 0x560468169980 | | |-TextComment 0x560468169930 Text=" Get column from table." | | `-TextComment 0x560468169950 Text=" This operation returns the component array for the provided index." | |-ParagraphComment 0x5604681699d0 | | `-TextComment 0x5604681699a0 Text=" " | |-ParamCommandComment 0x5604681699f0 [in] implicitly Param="table" ParamIndex=0 | | `-ParagraphComment 0x560468169aa0 | | |-TextComment 0x560468169a50 Text=" The table." | | `-TextComment 0x560468169a70 Text=" " | |-ParamCommandComment 0x560468169ac0 [in] implicitly Param="index" ParamIndex=1 | | `-ParagraphComment 0x560468169b70 | | |-TextComment 0x560468169b20 Text=" The index of the column (corresponds with element in type)." | | `-TextComment 0x560468169b40 Text=" " | |-ParamCommandComment 0x560468169b90 [in] implicitly Param="offset" ParamIndex=2 | | `-ParagraphComment 0x560468169c40 | | |-TextComment 0x560468169bf0 Text=" The index of the first row to return (0 for entire column)." | | `-TextComment 0x560468169c10 Text=" " | `-BlockCommandComment 0x560468169c60 Name="return" | `-ParagraphComment 0x560468169cc0 | `-TextComment 0x560468169c90 Text=" The component array, or NULL if the index is not a component." |-FunctionDecl 0x5604680649b0 line:7868:9 ecs_table_get_index 'int32_t (const ecs_world_t *, const ecs_table_t *, ecs_id_t)' | |-ParmVarDecl 0x560468064778 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680647f0 col:24 table 'const ecs_table_t *' | |-ParmVarDecl 0x560468064868 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x56046816a160 | |-ParagraphComment 0x560468169dd0 | | |-TextComment 0x560468169d80 Text=" Get column index for id." | | `-TextComment 0x560468169da0 Text=" This operation returns the index for an id in the table's type." | |-ParagraphComment 0x560468169e20 | | `-TextComment 0x560468169df0 Text=" " | |-ParamCommandComment 0x560468169e40 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468169ef0 | | |-TextComment 0x560468169ea0 Text=" The world." | | `-TextComment 0x560468169ec0 Text=" " | |-ParamCommandComment 0x560468169f10 [in] implicitly Param="table" ParamIndex=1 | | `-ParagraphComment 0x560468169fc0 | | |-TextComment 0x560468169f70 Text=" The table." | | `-TextComment 0x560468169f90 Text=" " | |-ParamCommandComment 0x560468169fe0 [in] implicitly Param="id" ParamIndex=2 | | `-ParagraphComment 0x56046816a090 | | |-TextComment 0x56046816a040 Text=" The id." | | `-TextComment 0x56046816a060 Text=" " | `-BlockCommandComment 0x56046816a0b0 Name="return" | `-ParagraphComment 0x56046816a110 | `-TextComment 0x56046816a0e0 Text=" The index of the id in the table type, or -1 if not found." |-FunctionDecl 0x560468064d60 line:7882:7 ecs_table_get_id 'void *(const ecs_world_t *, const ecs_table_t *, ecs_id_t, int32_t)' | |-ParmVarDecl 0x560468064aa8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468064b20 col:24 table 'const ecs_table_t *' | |-ParmVarDecl 0x560468064b98 col:14 id 'ecs_id_t':'unsigned long' | |-ParmVarDecl 0x560468064c10 col:13 offset 'int32_t':'int' | `-FullComment 0x56046816a5d0 | |-ParagraphComment 0x56046816a220 | | |-TextComment 0x56046816a1d0 Text=" Get column from table by component id." | | `-TextComment 0x56046816a1f0 Text=" This operation returns the component array for the provided component id." | |-ParagraphComment 0x56046816a270 | | `-TextComment 0x56046816a240 Text=" " | |-ParamCommandComment 0x56046816a290 [in] implicitly Param="table" ParamIndex=1 | | `-ParagraphComment 0x56046816a340 | | |-TextComment 0x56046816a2f0 Text=" The table." | | `-TextComment 0x56046816a310 Text=" " | |-ParamCommandComment 0x56046816a380 [in] implicitly Param="id" ParamIndex=2 | | `-ParagraphComment 0x56046816a430 | | |-TextComment 0x56046816a3e0 Text=" The component id for the column." | | `-TextComment 0x56046816a400 Text=" " | |-ParamCommandComment 0x56046816a450 [in] implicitly Param="offset" ParamIndex=3 | | `-ParagraphComment 0x56046816a500 | | |-TextComment 0x56046816a4b0 Text=" The index of the first row to return (0 for entire column)." | | `-TextComment 0x56046816a4d0 Text=" " | `-BlockCommandComment 0x56046816a520 Name="return" | `-ParagraphComment 0x56046816a580 | `-TextComment 0x56046816a550 Text=" The component array, or NULL if the index is not a component." |-FunctionDecl 0x560468065028 line:7899:9 ecs_table_get_depth 'int32_t (const ecs_world_t *, const ecs_table_t *, ecs_entity_t)' | |-ParmVarDecl 0x560468064e58 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468064ed0 col:24 table 'const ecs_table_t *' | |-ParmVarDecl 0x560468064f48 col:18 rel 'ecs_entity_t':'unsigned long' | `-FullComment 0x56046816aa70 | |-ParagraphComment 0x56046816a6e0 | | |-TextComment 0x56046816a640 Text=" Return depth for table in tree for relationship rel." | | |-TextComment 0x56046816a660 Text=" Depth is determined by counting the number of targets encountered while " | | |-TextComment 0x56046816a680 Text=" traversing up the relationship tree for rel. Only acyclic relationships are" | | `-TextComment 0x56046816a6a0 Text=" supported." | |-ParagraphComment 0x56046816a730 | | `-TextComment 0x56046816a700 Text=" " | |-ParamCommandComment 0x56046816a750 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046816a800 | | |-TextComment 0x56046816a7b0 Text=" The world." | | `-TextComment 0x56046816a7d0 Text=" " | |-ParamCommandComment 0x56046816a820 [in] implicitly Param="table" ParamIndex=1 | | `-ParagraphComment 0x56046816a8d0 | | |-TextComment 0x56046816a880 Text=" The table." | | `-TextComment 0x56046816a8a0 Text=" " | |-ParamCommandComment 0x56046816a8f0 [in] implicitly Param="rel" ParamIndex=2 | | `-ParagraphComment 0x56046816a9a0 | | |-TextComment 0x56046816a950 Text=" The relationship." | | `-TextComment 0x56046816a970 Text=" " | `-BlockCommandComment 0x56046816a9c0 Name="return" | `-ParagraphComment 0x56046816aa20 | `-TextComment 0x56046816a9f0 Text=" The depth of the table in the tree." |-FunctionDecl 0x560468065208 line:7910:14 ecs_table_get_storage_table 'ecs_table_t *(const ecs_table_t *)' | |-ParmVarDecl 0x560468065118 col:24 table 'const ecs_table_t *' | `-FullComment 0x56046816acf0 | |-ParagraphComment 0x56046816ab10 | | `-TextComment 0x56046816aae0 Text=" Get storage type for table." | |-ParagraphComment 0x56046816ab60 | | `-TextComment 0x56046816ab30 Text=" " | |-ParamCommandComment 0x56046816ab80 [in] implicitly Param="table" ParamIndex=0 | | `-ParagraphComment 0x56046816ac30 | | |-TextComment 0x56046816abe0 Text=" The table." | | `-TextComment 0x56046816ac00 Text=" " | `-BlockCommandComment 0x56046816ac50 Name="return" | `-ParagraphComment 0x56046816acb0 | `-TextComment 0x56046816ac80 Text=" The storage type of the table (components only)." |-FunctionDecl 0x560468065478 line:7915:9 ecs_table_type_to_storage_index 'int32_t (const ecs_table_t *, int32_t)' | |-ParmVarDecl 0x5604680652e8 col:24 table 'const ecs_table_t *' | |-ParmVarDecl 0x560468065360 col:13 index 'int32_t':'int' | `-FullComment 0x56046816adc0 | `-ParagraphComment 0x56046816ad90 | `-TextComment 0x56046816ad60 Text=" Convert index in table type to index in table storage type. " |-FunctionDecl 0x560468065678 line:7921:9 ecs_table_storage_to_type_index 'int32_t (const ecs_table_t *, int32_t)' | |-ParmVarDecl 0x560468065568 col:24 table 'const ecs_table_t *' | |-ParmVarDecl 0x5604680655e0 col:13 index 'int32_t':'int' | `-FullComment 0x56046816ae90 | `-ParagraphComment 0x56046816ae60 | `-TextComment 0x56046816ae30 Text=" Convert index in table storage type to index in table type. " |-FunctionDecl 0x5604680657f8 line:7934:9 ecs_table_count 'int32_t (const ecs_table_t *)' | |-ParmVarDecl 0x560468065768 col:24 table 'const ecs_table_t *' | `-FullComment 0x56046816b180 | |-ParagraphComment 0x56046816afa0 | | |-TextComment 0x56046816af00 Text=" Returns the number of records in the table. " | | |-TextComment 0x56046816af20 Text=" This operation returns the number of records that have been populated through" | | |-TextComment 0x56046816af40 Text=" the regular (entity) API as well as the number of records that have been" | | `-TextComment 0x56046816af60 Text=" inserted using the direct access API." | |-ParagraphComment 0x56046816aff0 | | `-TextComment 0x56046816afc0 Text=" " | |-ParamCommandComment 0x56046816b010 [in] implicitly Param="table" ParamIndex=0 | | `-ParagraphComment 0x56046816b0c0 | | |-TextComment 0x56046816b070 Text=" The table." | | `-TextComment 0x56046816b090 Text=" " | `-BlockCommandComment 0x56046816b0e0 Name="return" | `-ParagraphComment 0x56046816b140 | `-TextComment 0x56046816b110 Text=" The number of records in a table." |-FunctionDecl 0x560468065b58 line:7947:14 ecs_table_add_id 'ecs_table_t *(ecs_world_t *, ecs_table_t *, ecs_id_t)' | |-ParmVarDecl 0x5604680658d8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680659c0 col:18 table 'ecs_table_t *' | |-ParmVarDecl 0x560468065a38 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x56046816b600 | |-ParagraphComment 0x56046816b270 | | |-TextComment 0x56046816b1f0 Text=" Get table that has all components of current table plus the specified id." | | |-TextComment 0x56046816b210 Text=" If the provided table already has the provided id, the operation will return" | | `-TextComment 0x56046816b230 Text=" the provided table." | |-ParagraphComment 0x56046816b2c0 | | `-TextComment 0x56046816b290 Text=" " | |-ParamCommandComment 0x56046816b2e0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046816b390 | | |-TextComment 0x56046816b340 Text=" The world." | | `-TextComment 0x56046816b360 Text=" " | |-ParamCommandComment 0x56046816b3b0 [in] implicitly Param="table" ParamIndex=1 | | `-ParagraphComment 0x56046816b460 | | |-TextComment 0x56046816b410 Text=" The table." | | `-TextComment 0x56046816b430 Text=" " | |-ParamCommandComment 0x56046816b480 [in] implicitly Param="id" ParamIndex=2 | | `-ParagraphComment 0x56046816b530 | | |-TextComment 0x56046816b4e0 Text=" The id to add." | | `-TextComment 0x56046816b500 Text=" " | `-BlockCommandComment 0x56046816b550 Name="result" | `-ParagraphComment 0x56046816b5b0 | `-TextComment 0x56046816b580 Text=" The resulting table." |-FunctionDecl 0x560468065dd8 line:7962:14 ecs_table_remove_id 'ecs_table_t *(ecs_world_t *, ecs_table_t *, ecs_id_t)' | |-ParmVarDecl 0x560468065c48 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468065cc0 col:18 table 'ecs_table_t *' | |-ParmVarDecl 0x560468065d38 col:14 id 'ecs_id_t':'unsigned long' | `-FullComment 0x56046816ba80 | |-ParagraphComment 0x56046816b6f0 | | |-TextComment 0x56046816b670 Text=" Get table that has all components of current table minus the specified id." | | |-TextComment 0x56046816b690 Text=" If the provided table doesn't have the provided id, the operation will return" | | `-TextComment 0x56046816b6b0 Text=" the provided table." | |-ParagraphComment 0x56046816b740 | | `-TextComment 0x56046816b710 Text=" " | |-ParamCommandComment 0x56046816b760 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046816b810 | | |-TextComment 0x56046816b7c0 Text=" The world." | | `-TextComment 0x56046816b7e0 Text=" " | |-ParamCommandComment 0x56046816b830 [in] implicitly Param="table" ParamIndex=1 | | `-ParagraphComment 0x56046816b8e0 | | |-TextComment 0x56046816b890 Text=" The table." | | `-TextComment 0x56046816b8b0 Text=" " | |-ParamCommandComment 0x56046816b900 [in] implicitly Param="id" ParamIndex=2 | | `-ParagraphComment 0x56046816b9b0 | | |-TextComment 0x56046816b960 Text=" The id to remove." | | `-TextComment 0x56046816b980 Text=" " | `-BlockCommandComment 0x56046816b9d0 Name="result" | `-ParagraphComment 0x56046816ba30 | `-TextComment 0x56046816ba00 Text=" The resulting table." |-FunctionDecl 0x560468066058 line:7983:6 ecs_table_lock 'void (ecs_world_t *, ecs_table_t *)' | |-ParmVarDecl 0x560468065ec8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468065f40 col:18 table 'ecs_table_t *' | `-FullComment 0x56046816bec0 | |-ParagraphComment 0x56046816bb90 | | |-TextComment 0x56046816baf0 Text=" Lock or unlock table." | | |-TextComment 0x56046816bb10 Text=" When a table is locked, modifications to it will throw an assert. When the " | | |-TextComment 0x56046816bb30 Text=" table is locked recursively, it will take an equal amount of unlock" | | `-TextComment 0x56046816bb50 Text=" operations to actually unlock the table." | |-ParagraphComment 0x56046816bc00 | | |-TextComment 0x56046816bbb0 Text=" Table locks can be used to build safe iterators where it is guaranteed that" | | `-TextComment 0x56046816bbd0 Text=" the contents of a table are not modified while it is being iterated." | |-ParagraphComment 0x56046816bca0 | | |-TextComment 0x56046816bc20 Text=" The operation only works when called on the world, and has no side effects " | | |-TextComment 0x56046816bc40 Text=" when called on a stage. The assumption is that when called on a stage," | | `-TextComment 0x56046816bc60 Text=" operations are deferred already." | |-ParagraphComment 0x56046816bcf0 | | `-TextComment 0x56046816bcc0 Text=" " | |-ParamCommandComment 0x56046816bd10 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046816bdc0 | | |-TextComment 0x56046816bd70 Text=" The world." | | `-TextComment 0x56046816bd90 Text=" " | `-ParamCommandComment 0x56046816bde0 [in] implicitly Param="table" ParamIndex=1 | `-ParagraphComment 0x56046816be70 | `-TextComment 0x56046816be40 Text=" The table to lock." |-FunctionDecl 0x560468066258 line:7994:6 ecs_table_unlock 'void (ecs_world_t *, ecs_table_t *)' | |-ParmVarDecl 0x560468066148 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680661c0 col:18 table 'ecs_table_t *' | `-FullComment 0x56046816c190 | |-ParagraphComment 0x56046816bf80 | | |-TextComment 0x56046816bf30 Text=" Unlock a table." | | `-TextComment 0x56046816bf50 Text=" Must be called after calling ecs_table_lock." | |-ParagraphComment 0x56046816bfd0 | | `-TextComment 0x56046816bfa0 Text=" " | |-ParamCommandComment 0x56046816bff0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046816c0a0 | | |-TextComment 0x56046816c050 Text=" The world." | | `-TextComment 0x56046816c070 Text=" " | `-ParamCommandComment 0x56046816c0c0 [in] implicitly Param="table" ParamIndex=1 | `-ParagraphComment 0x56046816c150 | `-TextComment 0x56046816c120 Text=" The table to unlock." |-FunctionDecl 0x560468066438 line:8006:6 ecs_table_has_module 'bool (ecs_table_t *)' | |-ParmVarDecl 0x560468066348 col:18 table 'ecs_table_t *' | `-FullComment 0x56046816c480 | |-ParagraphComment 0x56046816c280 | | |-TextComment 0x56046816c200 Text=" Returns whether table is a module or contains module contents" | | |-TextComment 0x56046816c220 Text=" Returns true for tables that have module contents. Can be used to filter out" | | `-TextComment 0x56046816c240 Text=" tables that do not contain application data." | |-ParagraphComment 0x56046816c2d0 | | `-TextComment 0x56046816c2a0 Text=" " | |-ParamCommandComment 0x56046816c2f0 [in] implicitly Param="table" ParamIndex=0 | | `-ParagraphComment 0x56046816c3c0 | | |-TextComment 0x56046816c350 Text=" The table." | | `-TextComment 0x56046816c390 Text=" " | `-BlockCommandComment 0x56046816c3e0 Name="return" | `-ParagraphComment 0x56046816c440 | `-TextComment 0x56046816c410 Text=" true if table contains module contents, false if not." |-FunctionDecl 0x5604680667c8 line:8017:6 ecs_table_swap_rows 'void (ecs_world_t *, ecs_table_t *, int32_t, int32_t)' | |-ParmVarDecl 0x560468066518 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468066590 col:18 table 'ecs_table_t *' | |-ParmVarDecl 0x560468066608 col:13 row_1 'int32_t':'int' | |-ParmVarDecl 0x560468066680 col:13 row_2 'int32_t':'int' | `-FullComment 0x56046816c8e0 | |-ParagraphComment 0x56046816c570 | | |-TextComment 0x56046816c4f0 Text=" Swaps two elements inside the table. This is useful for implementing custom" | | |-TextComment 0x56046816c510 Text=" table sorting algorithms." | | `-TextComment 0x56046816c530 Text=" " | |-ParamCommandComment 0x56046816c590 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046816c640 | | |-TextComment 0x56046816c5f0 Text=" The world" | | `-TextComment 0x56046816c610 Text=" " | |-ParamCommandComment 0x56046816c660 [in] implicitly Param="table" ParamIndex=1 | | `-ParagraphComment 0x56046816c710 | | |-TextComment 0x56046816c6c0 Text=" The table to swap elements in" | | `-TextComment 0x56046816c6e0 Text=" " | |-ParamCommandComment 0x56046816c730 [in] implicitly Param="row_1" ParamIndex=2 | | `-ParagraphComment 0x56046816c7e0 | | |-TextComment 0x56046816c790 Text=" Table element to swap with row_2" | | `-TextComment 0x56046816c7b0 Text=" " | `-ParamCommandComment 0x56046816c800 [in] implicitly Param="row_2" ParamIndex=3 | `-ParagraphComment 0x56046816c890 | `-TextComment 0x56046816c860 Text=" Table element to swap with row_1" |-FunctionDecl 0x560468066ca8 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 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468066940 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680669d0 col:19 record 'ecs_record_t *' | |-ParmVarDecl 0x560468066a48 col:18 table 'ecs_table_t *' | |-ParmVarDecl 0x560468066ac0 col:23 added 'const ecs_type_t *' | |-ParmVarDecl 0x560468066b38 col:23 removed 'const ecs_type_t *' | `-FullComment 0x56046816d020 | |-ParagraphComment 0x56046816ca90 | | |-TextComment 0x56046816c950 Text=" Commit (move) entity to a table." | | |-TextComment 0x56046816c970 Text=" This operation moves an entity from its current table to the specified" | | |-TextComment 0x56046816c990 Text=" table. This may cause the following actions:" | | |-TextComment 0x56046816c9b0 Text=" - Ctor for each component in the target table" | | |-TextComment 0x56046816c9d0 Text=" - Move for each overlapping component" | | |-TextComment 0x56046816c9f0 Text=" - Dtor for each component in the source table." | | |-TextComment 0x56046816ca10 Text=" - OnAdd triggers for non-overlapping components in the target table" | | `-TextComment 0x56046816ca30 Text=" - OnRemove triggers for non-overlapping components in the source table." | |-ParagraphComment 0x56046816cae0 | | `-TextComment 0x56046816cab0 Text=" This operation is a faster than adding/removing components individually." | |-ParagraphComment 0x56046816cba0 | | |-TextComment 0x56046816cb00 Text=" The application must explicitly provide the difference in components between" | | |-TextComment 0x56046816cb20 Text=" tables as the added/removed parameters. This can usually be derived directly" | | |-TextComment 0x56046816cb40 Text=" from the result of ecs_table_add_id and esc_table_remove_id. These arrays are" | | `-TextComment 0x56046816cb60 Text=" required to properly execute OnAdd/OnRemove triggers." | |-ParagraphComment 0x56046816cbf0 | | `-TextComment 0x56046816cbc0 Text=" " | |-ParamCommandComment 0x56046816cc10 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046816ccc0 | | |-TextComment 0x56046816cc70 Text=" The world." | | `-TextComment 0x56046816cc90 Text=" " | |-ParamCommandComment 0x56046816cce0 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x56046816cd90 | | |-TextComment 0x56046816cd40 Text=" The entity to commit." | | `-TextComment 0x56046816cd60 Text=" " | |-ParamCommandComment 0x56046816cdb0 [in] implicitly Param="record" ParamIndex=2 | | `-ParagraphComment 0x56046816ce60 | | |-TextComment 0x56046816ce10 Text=" The entity's record (optional, providing it saves a lookup)." | | `-TextComment 0x56046816ce30 Text=" " | |-ParamCommandComment 0x56046816ce80 [in] implicitly Param="table" ParamIndex=3 | | `-ParagraphComment 0x56046816cf30 | | |-TextComment 0x56046816cee0 Text=" The table to commit the entity to." | | `-TextComment 0x56046816cf00 Text=" " | `-BlockCommandComment 0x56046816cf50 Name="return" | `-ParagraphComment 0x56046816cfb0 | `-TextComment 0x56046816cf80 Text=" True if the entity got moved, false otherwise." |-FunctionDecl 0x560468066f48 line:8056:15 ecs_record_find 'ecs_record_t *(const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x560468066db8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468066e30 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x56046816d0f0 | `-ParagraphComment 0x56046816d0c0 | `-TextComment 0x56046816d090 Text=" Find record for entity. " |-FunctionDecl 0x560468067250 line:8062:7 ecs_record_get_column 'void *(const ecs_record_t *, int32_t, size_t)' | |-ParmVarDecl 0x560468067038 col:25 r 'const ecs_record_t *' | |-ParmVarDecl 0x5604680670b0 col:13 column 'int32_t':'int' | |-ParmVarDecl 0x560468067128 col:12 c_size 'size_t':'unsigned long' | `-FullComment 0x56046816d1c0 | `-ParagraphComment 0x56046816d190 | `-TextComment 0x56046816d160 Text=" Get component pointer from column/record. " |-FunctionDecl 0x5604680675f8 line:8083:9 ecs_search 'int32_t (const ecs_world_t *, const ecs_table_t *, ecs_id_t, ecs_id_t *)' | |-ParmVarDecl 0x560468067348 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680673c0 col:24 table 'const ecs_table_t *' | |-ParmVarDecl 0x560468067438 col:14 id 'ecs_id_t':'unsigned long' | |-ParmVarDecl 0x5604680674b0 col:15 id_out 'ecs_id_t *' | `-FullComment 0x56046816d7f0 | |-ParagraphComment 0x56046816d2b0 | | |-TextComment 0x56046816d230 Text=" Search for component id in table type." | | |-TextComment 0x56046816d250 Text=" This operation returns the index of first occurrance of the id in the table" | | `-TextComment 0x56046816d270 Text=" type. The id may be a wildcard." | |-ParagraphComment 0x56046816d320 | | |-TextComment 0x56046816d2d0 Text=" When id_out is provided, the function will assign it with the found id. The" | | `-TextComment 0x56046816d2f0 Text=" found id may be different from the provided id if it is a wildcard." | |-ParagraphComment 0x56046816d370 | | `-TextComment 0x56046816d340 Text=" This is a constant time operation." | |-ParagraphComment 0x56046816d3c0 | | `-TextComment 0x56046816d390 Text=" " | |-ParamCommandComment 0x56046816d3e0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046816d490 | | |-TextComment 0x56046816d440 Text=" The world." | | `-TextComment 0x56046816d460 Text=" " | |-ParamCommandComment 0x56046816d4b0 [in] implicitly Param="table" ParamIndex=1 | | `-ParagraphComment 0x56046816d560 | | |-TextComment 0x56046816d510 Text=" The table." | | `-TextComment 0x56046816d530 Text=" " | |-ParamCommandComment 0x56046816d580 [in] implicitly Param="id" ParamIndex=2 | | `-ParagraphComment 0x56046816d630 | | |-TextComment 0x56046816d5e0 Text=" The id to search for." | | `-TextComment 0x56046816d600 Text=" " | |-ParamCommandComment 0x56046816d650 [in] implicitly Param="id_out" ParamIndex=3 | | `-ParagraphComment 0x56046816d700 | | |-TextComment 0x56046816d6b0 Text=" If provided, it will be set to the found id (optional)." | | `-TextComment 0x56046816d6d0 Text=" " | `-BlockCommandComment 0x56046816d720 Name="return" | `-ParagraphComment 0x56046816d780 | `-TextComment 0x56046816d750 Text=" The index of the id in the table type." |-FunctionDecl 0x560468067af8 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 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468067770 col:24 table 'const ecs_table_t *' | |-ParmVarDecl 0x5604680677e8 col:13 offset 'int32_t':'int' | |-ParmVarDecl 0x560468067860 col:14 id 'ecs_id_t':'unsigned long' | |-ParmVarDecl 0x5604680678d8 col:15 id_out 'ecs_id_t *' | `-FullComment 0x56046816e130 | |-ParagraphComment 0x56046816d8e0 | | |-TextComment 0x56046816d860 Text=" Search for component id in table type starting from an offset." | | |-TextComment 0x56046816d880 Text=" This operation is the same as ecs_search, but starts searching from an offset" | | `-TextComment 0x56046816d8a0 Text=" in the table type." | |-ParagraphComment 0x56046816d950 | | |-TextComment 0x56046816d900 Text=" This operation is typically called in a loop where the resulting index is" | | `-TextComment 0x56046816d920 Text=" used in the next iteration as offset:" | |-ParagraphComment 0x56046816da10 | | |-TextComment 0x56046816d970 Text=" int32_t index = -1;" | | |-TextComment 0x56046816d990 Text=" while ((index = ecs_search_offset(world, table, offset, id, NULL))) {" | | |-TextComment 0x56046816d9b0 Text=" // do stuff" | | `-TextComment 0x56046816d9d0 Text=" }" | |-ParagraphComment 0x56046816dab0 | | |-TextComment 0x56046816da30 Text=" Depending on how the operation is used it is either linear or constant time." | | |-TextComment 0x56046816da50 Text=" When the id has the form (id) or (rel, *) and the operation is invoked as " | | `-TextComment 0x56046816da70 Text=" in the above example, it is guaranteed to be constant time." | |-ParagraphComment 0x56046816db50 | | |-TextComment 0x56046816dad0 Text=" If the provided id has the form (*, tgt) the operation takes linear time. The" | | |-TextComment 0x56046816daf0 Text=" reason for this is that ids for an target are not packed together, as they" | | `-TextComment 0x56046816db10 Text=" are sorted relationship first." | |-ParagraphComment 0x56046816dbc0 | | |-TextComment 0x56046816db70 Text=" If the id at the offset does not match the provided id, the operation will do" | | `-TextComment 0x56046816db90 Text=" a linear search to find a matching id." | |-ParagraphComment 0x56046816dc10 | | `-TextComment 0x56046816dbe0 Text=" " | |-ParamCommandComment 0x56046816dc30 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046816dce0 | | |-TextComment 0x56046816dc90 Text=" The world." | | `-TextComment 0x56046816dcb0 Text=" " | |-ParamCommandComment 0x56046816dd00 [in] implicitly Param="table" ParamIndex=1 | | `-ParagraphComment 0x56046816ddb0 | | |-TextComment 0x56046816dd60 Text=" The table." | | `-TextComment 0x56046816dd80 Text=" " | |-ParamCommandComment 0x56046816ddd0 [in] implicitly Param="offset" ParamIndex=2 | | `-ParagraphComment 0x56046816de80 | | |-TextComment 0x56046816de30 Text=" Offset from where to start searching." | | `-TextComment 0x56046816de50 Text=" " | |-ParamCommandComment 0x56046816dea0 [in] implicitly Param="id" ParamIndex=3 | | `-ParagraphComment 0x56046816df50 | | |-TextComment 0x56046816df00 Text=" The id to search for." | | `-TextComment 0x56046816df20 Text=" " | |-ParamCommandComment 0x56046816df70 [in] implicitly Param="id_out" ParamIndex=4 | | `-ParagraphComment 0x56046816e020 | | |-TextComment 0x56046816dfd0 Text=" If provided, it will be set to the found id (optional)." | | `-TextComment 0x56046816dff0 Text=" " | `-BlockCommandComment 0x56046816e040 Name="return" | `-ParagraphComment 0x56046816e0a0 | `-TextComment 0x56046816e070 Text=" The index of the id in the table type." |-FunctionDecl 0x5604680681e8 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 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468067c70 col:24 table 'const ecs_table_t *' | |-ParmVarDecl 0x560468067ce8 col:13 offset 'int32_t':'int' | |-ParmVarDecl 0x560468067d60 col:14 id 'ecs_id_t':'unsigned long' | |-ParmVarDecl 0x560468067dd8 col:18 rel 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560468067e50 col:19 flags 'ecs_flags32_t':'unsigned int' | |-ParmVarDecl 0x560468067ec8 col:19 subject_out 'ecs_entity_t *' | |-ParmVarDecl 0x560468067f40 col:15 id_out 'ecs_id_t *' | |-ParmVarDecl 0x560468068030 col:33 tr_out 'struct ecs_table_record_t **' | `-FullComment 0x56046816ee20 | |-ParagraphComment 0x56046816e290 | | |-TextComment 0x56046816e1a0 Text=" Search for component/relationship id in table type starting from an offset." | | |-TextComment 0x56046816e1c0 Text=" This operation is the same as ecs_search_offset, but has the additional" | | |-TextComment 0x56046816e1e0 Text=" capability of traversing relationships to find a component. For example, if" | | |-TextComment 0x56046816e200 Text=" an application wants to find a component for either the provided table or a" | | |-TextComment 0x56046816e220 Text=" prefab (using the IsA relationship) of that table, it could use the operation " | | `-TextComment 0x56046816e240 Text=" like this:" | |-ParagraphComment 0x56046816e480 | | |-TextComment 0x56046816e2b0 Text=" int32_t index = ecs_search_relation(" | | |-TextComment 0x56046816e2d0 Text=" world, // the world" | | |-TextComment 0x56046816e2f0 Text=" table, // the table" | | |-TextComment 0x56046816e310 Text=" 0, // offset 0" | | |-TextComment 0x56046816e330 Text=" ecs_id(Position), // the component id" | | |-TextComment 0x56046816e350 Text=" EcsIsA, // the relationship to traverse" | | |-TextComment 0x56046816e370 Text=" 0, // start at depth 0 (the table itself)" | | |-TextComment 0x56046816e3a0 Text=" 0, // no depth limit" | | |-TextComment 0x56046816e3c0 Text=" NULL, // (optional) entity on which component was found" | | |-TextComment 0x56046816e3e0 Text=" NULL, // see above" | | `-TextComment 0x56046816e400 Text=" NULL); // internal type with information about matched id" | |-ParagraphComment 0x56046816e4f0 | | |-TextComment 0x56046816e4a0 Text=" The operation searches depth first. If a table type has 2 IsA relationships, the" | | `-TextComment 0x56046816e4c0 Text=" operation will first search the IsA tree of the first relationship." | |-ParagraphComment 0x56046816e560 | | |-TextComment 0x56046816e510 Text=" When choosing betwen ecs_search, ecs_search_offset and ecs_search_relation," | | `-TextComment 0x56046816e530 Text=" the simpler the function the better its performance." | |-ParagraphComment 0x56046816e5b0 | | `-TextComment 0x56046816e580 Text=" " | |-ParamCommandComment 0x56046816e5d0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046816e680 | | |-TextComment 0x56046816e630 Text=" The world." | | `-TextComment 0x56046816e650 Text=" " | |-ParamCommandComment 0x56046816e6a0 [in] implicitly Param="table" ParamIndex=1 | | `-ParagraphComment 0x56046816e750 | | |-TextComment 0x56046816e700 Text=" The table." | | `-TextComment 0x56046816e720 Text=" " | |-ParamCommandComment 0x56046816e770 [in] implicitly Param="offset" ParamIndex=2 | | `-ParagraphComment 0x56046816e820 | | |-TextComment 0x56046816e7d0 Text=" Offset from where to start searching." | | `-TextComment 0x56046816e7f0 Text=" " | |-ParamCommandComment 0x56046816e840 [in] implicitly Param="id" ParamIndex=3 | | `-ParagraphComment 0x56046816e8f0 | | |-TextComment 0x56046816e8a0 Text=" The id to search for." | | `-TextComment 0x56046816e8c0 Text=" " | |-ParamCommandComment 0x56046816e910 [in] implicitly Param="rel" ParamIndex=4 | | `-ParagraphComment 0x56046816e9c0 | | |-TextComment 0x56046816e970 Text=" The relationship to traverse (optional)." | | `-TextComment 0x56046816e990 Text=" " | |-ParamCommandComment 0x56046816e9e0 [in] implicitly Param="flags" ParamIndex=5 | | `-ParagraphComment 0x56046816ea90 | | |-TextComment 0x56046816ea40 Text=" Whether to search EcsSelf and/or EcsUp." | | `-TextComment 0x56046816ea60 Text=" " | |-ParamCommandComment 0x56046816eab0 [in] implicitly Param="subject_out" ParamIndex=6 | | `-ParagraphComment 0x56046816eb60 | | |-TextComment 0x56046816eb10 Text=" If provided, it will be set to the matched entity." | | `-TextComment 0x56046816eb30 Text=" " | |-ParamCommandComment 0x56046816eb80 [in] implicitly Param="id_out" ParamIndex=7 | | `-ParagraphComment 0x56046816ec30 | | |-TextComment 0x56046816ebe0 Text=" If provided, it will be set to the found id (optional)." | | `-TextComment 0x56046816ec00 Text=" " | |-ParamCommandComment 0x56046816ec50 [in] implicitly Param="tr_out" ParamIndex=8 | | `-ParagraphComment 0x56046816ed00 | | |-TextComment 0x56046816ecb0 Text=" Internal datatype." | | `-TextComment 0x56046816ecd0 Text=" " | `-BlockCommandComment 0x56046816ed20 Name="return" | `-ParagraphComment 0x56046816ed80 | `-TextComment 0x56046816ed50 Text=" The index of the id in the table type." |-FunctionDecl 0x560468068590 line:8191:5 ecs_value_init 'int (const ecs_world_t *, ecs_entity_t, void *)' | |-ParmVarDecl 0x560468068368 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680683e0 col:18 type 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560468068460 col:11 ptr 'void *' | `-FullComment 0x56046816f250 | |-ParagraphComment 0x56046816eec0 | | `-TextComment 0x56046816ee90 Text=" Construct a value in existing storage " | |-ParagraphComment 0x56046816ef10 | | `-TextComment 0x56046816eee0 Text=" " | |-ParamCommandComment 0x56046816ef30 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046816efe0 | | |-TextComment 0x56046816ef90 Text=" The world." | | `-TextComment 0x56046816efb0 Text=" " | |-ParamCommandComment 0x56046816f000 [in] implicitly Param="type" ParamIndex=1 | | `-ParagraphComment 0x56046816f0b0 | | |-TextComment 0x56046816f060 Text=" The type of the value to create." | | `-TextComment 0x56046816f080 Text=" " | |-ParamCommandComment 0x56046816f0d0 [in] implicitly Param="ptr" ParamIndex=2 | | `-ParagraphComment 0x56046816f180 | | |-TextComment 0x56046816f130 Text=" Pointer to a value of type 'type'" | | `-TextComment 0x56046816f150 Text=" " | `-BlockCommandComment 0x56046816f1a0 Name="return" | `-ParagraphComment 0x56046816f200 | `-TextComment 0x56046816f1d0 Text=" Zero if success, nonzero if failed." |-FunctionDecl 0x5604680688b0 line:8204:5 ecs_value_init_w_type_info 'int (const ecs_world_t *, const ecs_type_info_t *, void *)' | |-ParmVarDecl 0x560468068688 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468068700 col:28 ti 'const ecs_type_info_t *' | |-ParmVarDecl 0x560468068780 col:11 ptr 'void *' | `-FullComment 0x56046816f680 | |-ParagraphComment 0x56046816f2f0 | | `-TextComment 0x56046816f2c0 Text=" Construct a value in existing storage " | |-ParagraphComment 0x56046816f340 | | `-TextComment 0x56046816f310 Text=" " | |-ParamCommandComment 0x56046816f360 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046816f410 | | |-TextComment 0x56046816f3c0 Text=" The world." | | `-TextComment 0x56046816f3e0 Text=" " | |-ParamCommandComment 0x56046816f430 [in] implicitly Param="ti" ParamIndex=1 | | `-ParagraphComment 0x56046816f4e0 | | |-TextComment 0x56046816f490 Text=" The type info of the type to create." | | `-TextComment 0x56046816f4b0 Text=" " | |-ParamCommandComment 0x56046816f500 [in] implicitly Param="ptr" ParamIndex=2 | | `-ParagraphComment 0x56046816f5b0 | | |-TextComment 0x56046816f560 Text=" Pointer to a value of type 'type'" | | `-TextComment 0x56046816f580 Text=" " | `-BlockCommandComment 0x56046816f5d0 Name="return" | `-ParagraphComment 0x56046816f630 | `-TextComment 0x56046816f600 Text=" Zero if success, nonzero if failed." |-FunctionDecl 0x560468068d10 line:8216:7 ecs_value_new 'void *(ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x5604680689a8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468068bf0 col:18 type 'ecs_entity_t':'unsigned long' | `-FullComment 0x56046816f9e0 | |-ParagraphComment 0x56046816f720 | | `-TextComment 0x56046816f6f0 Text=" Construct a value in new storage " | |-ParagraphComment 0x56046816f770 | | `-TextComment 0x56046816f740 Text=" " | |-ParamCommandComment 0x56046816f790 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046816f840 | | |-TextComment 0x56046816f7f0 Text=" The world." | | `-TextComment 0x56046816f810 Text=" " | |-ParamCommandComment 0x56046816f860 [in] implicitly Param="type" ParamIndex=1 | | `-ParagraphComment 0x56046816f910 | | |-TextComment 0x56046816f8c0 Text=" The type of the value to create." | | `-TextComment 0x56046816f8e0 Text=" " | `-BlockCommandComment 0x56046816f930 Name="return" | `-ParagraphComment 0x56046816f990 | `-TextComment 0x56046816f960 Text=" Pointer to type if success, NULL if failed." |-FunctionDecl 0x560468068f98 line:8227:5 ecs_value_fini_w_type_info 'int (const ecs_world_t *, const ecs_type_info_t *, void *)' | |-ParmVarDecl 0x560468068df8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468068e70 col:28 ti 'const ecs_type_info_t *' | |-ParmVarDecl 0x560468068ef0 col:11 ptr 'void *' | `-FullComment 0x56046816fe10 | |-ParagraphComment 0x56046816fa80 | | `-TextComment 0x56046816fa50 Text=" Destruct a value " | |-ParagraphComment 0x56046816fad0 | | `-TextComment 0x56046816faa0 Text=" " | |-ParamCommandComment 0x56046816faf0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046816fba0 | | |-TextComment 0x56046816fb50 Text=" The world." | | `-TextComment 0x56046816fb70 Text=" " | |-ParamCommandComment 0x56046816fbc0 [in] implicitly Param="ti" ParamIndex=1 | | `-ParagraphComment 0x56046816fc70 | | |-TextComment 0x56046816fc20 Text=" Type info of the value to destruct." | | `-TextComment 0x56046816fc40 Text=" " | |-ParamCommandComment 0x56046816fc90 [in] implicitly Param="ptr" ParamIndex=2 | | `-ParagraphComment 0x56046816fd40 | | |-TextComment 0x56046816fcf0 Text=" Pointer to constructed value of type 'type'." | | `-TextComment 0x56046816fd10 Text=" " | `-BlockCommandComment 0x56046816fd60 Name="return" | `-ParagraphComment 0x56046816fdc0 | `-TextComment 0x56046816fd90 Text=" Zero if success, nonzero if failed. " |-FunctionDecl 0x560468069228 line:8240:5 ecs_value_fini 'int (const ecs_world_t *, ecs_entity_t, void *)' | |-ParmVarDecl 0x560468069088 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468069100 col:18 type 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560468069180 col:11 ptr 'void *' | `-FullComment 0x560468170240 | |-ParagraphComment 0x56046816feb0 | | `-TextComment 0x56046816fe80 Text=" Destruct a value " | |-ParagraphComment 0x56046816ff00 | | `-TextComment 0x56046816fed0 Text=" " | |-ParamCommandComment 0x56046816ff20 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046816ffd0 | | |-TextComment 0x56046816ff80 Text=" The world." | | `-TextComment 0x56046816ffa0 Text=" " | |-ParamCommandComment 0x56046816fff0 [in] implicitly Param="type" ParamIndex=1 | | `-ParagraphComment 0x5604681700a0 | | |-TextComment 0x560468170050 Text=" The type of the value to destruct." | | `-TextComment 0x560468170070 Text=" " | |-ParamCommandComment 0x5604681700c0 [in] implicitly Param="ptr" ParamIndex=2 | | `-ParagraphComment 0x560468170170 | | |-TextComment 0x560468170120 Text=" Pointer to constructed value of type 'type'." | | `-TextComment 0x560468170140 Text=" " | `-BlockCommandComment 0x560468170190 Name="return" | `-ParagraphComment 0x5604681701f0 | `-TextComment 0x5604681701c0 Text=" Zero if success, nonzero if failed. " |-FunctionDecl 0x560468069540 line:8252:5 ecs_value_free 'int (ecs_world_t *, ecs_entity_t, void *)' | |-ParmVarDecl 0x560468069318 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468069390 col:18 type 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560468069410 col:11 ptr 'void *' | `-FullComment 0x5604681705c0 | |-ParagraphComment 0x5604681702e0 | | `-TextComment 0x5604681702b0 Text=" Destruct a value, free storage" | |-ParagraphComment 0x560468170330 | | `-TextComment 0x560468170300 Text=" " | |-ParamCommandComment 0x560468170350 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468170420 | | |-TextComment 0x5604681703d0 Text=" The world." | | `-TextComment 0x5604681703f0 Text=" " | |-ParamCommandComment 0x560468170440 [in] implicitly Param="type" ParamIndex=1 | | `-ParagraphComment 0x5604681704f0 | | |-TextComment 0x5604681704a0 Text=" The type of the value to destruct." | | `-TextComment 0x5604681704c0 Text=" " | `-BlockCommandComment 0x560468170510 Name="return" | `-ParagraphComment 0x560468170570 | `-TextComment 0x560468170540 Text=" Zero if success, nonzero if failed. " |-FunctionDecl 0x560468069900 line:8266:5 ecs_value_copy_w_type_info 'int (const ecs_world_t *, const ecs_type_info_t *, void *, const void *)' | |-ParmVarDecl 0x560468069638 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680696b0 col:28 ti 'const ecs_type_info_t *' | |-ParmVarDecl 0x560468069730 col:11 dst 'void *' | |-ParmVarDecl 0x5604680697b0 col:17 src 'const void *' | `-FullComment 0x560468170ad0 | |-ParagraphComment 0x560468170660 | | `-TextComment 0x560468170630 Text=" Copy value." | |-ParagraphComment 0x5604681706b0 | | `-TextComment 0x560468170680 Text=" " | |-ParamCommandComment 0x5604681706d0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468170780 | | |-TextComment 0x560468170730 Text=" The world." | | `-TextComment 0x560468170750 Text=" " | |-ParamCommandComment 0x5604681707a0 [in] implicitly Param="ti" ParamIndex=1 | | `-ParagraphComment 0x560468170850 | | |-TextComment 0x560468170800 Text=" Type info of the value to copy." | | `-TextComment 0x560468170820 Text=" " | |-ParamCommandComment 0x560468170870 [in] implicitly Param="dst" ParamIndex=2 | | `-ParagraphComment 0x560468170920 | | |-TextComment 0x5604681708d0 Text=" Pointer to the storage to copy to." | | `-TextComment 0x5604681708f0 Text=" " | |-ParamCommandComment 0x560468170940 [in] implicitly Param="src" ParamIndex=3 | | `-ParagraphComment 0x5604681709f0 | | |-TextComment 0x5604681709a0 Text=" Pointer to the value to copy." | | `-TextComment 0x5604681709c0 Text=" " | `-BlockCommandComment 0x560468170a10 Name="return" | `-ParagraphComment 0x560468170a70 | `-TextComment 0x560468170a40 Text=" Zero if success, nonzero if failed. " |-FunctionDecl 0x560468069e20 line:8281:5 ecs_value_copy 'int (const ecs_world_t *, ecs_entity_t, void *, const void *)' | |-ParmVarDecl 0x5604680699f8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468069a70 col:18 type 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x560468069af0 col:11 dst 'void *' | |-ParmVarDecl 0x560468069b70 col:17 src 'const void *' | `-FullComment 0x560468170fe0 | |-ParagraphComment 0x560468170b70 | | `-TextComment 0x560468170b40 Text=" Copy value." | |-ParagraphComment 0x560468170bc0 | | `-TextComment 0x560468170b90 Text=" " | |-ParamCommandComment 0x560468170be0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468170c90 | | |-TextComment 0x560468170c40 Text=" The world." | | `-TextComment 0x560468170c60 Text=" " | |-ParamCommandComment 0x560468170cb0 [in] implicitly Param="type" ParamIndex=1 | | `-ParagraphComment 0x560468170d60 | | |-TextComment 0x560468170d10 Text=" The type of the value to copy." | | `-TextComment 0x560468170d30 Text=" " | |-ParamCommandComment 0x560468170d80 [in] implicitly Param="dst" ParamIndex=2 | | `-ParagraphComment 0x560468170e30 | | |-TextComment 0x560468170de0 Text=" Pointer to the storage to copy to." | | `-TextComment 0x560468170e00 Text=" " | |-ParamCommandComment 0x560468170e50 [in] implicitly Param="src" ParamIndex=3 | | `-ParagraphComment 0x560468170f00 | | |-TextComment 0x560468170eb0 Text=" Pointer to the value to copy." | | `-TextComment 0x560468170ed0 Text=" " | `-BlockCommandComment 0x560468170f20 Name="return" | `-ParagraphComment 0x560468170f80 | `-TextComment 0x560468170f50 Text=" Zero if success, nonzero if failed. " |-FunctionDecl 0x56046806a1e0 line:8295:5 ecs_value_move_w_type_info 'int (const ecs_world_t *, const ecs_type_info_t *, void *, void *)' | |-ParmVarDecl 0x560468069f18 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x560468069f90 col:28 ti 'const ecs_type_info_t *' | |-ParmVarDecl 0x56046806a010 col:11 dst 'void *' | |-ParmVarDecl 0x56046806a090 col:11 src 'void *' | `-FullComment 0x5604681714f0 | |-ParagraphComment 0x560468171080 | | `-TextComment 0x560468171050 Text=" Move value." | |-ParagraphComment 0x5604681710d0 | | `-TextComment 0x5604681710a0 Text=" " | |-ParamCommandComment 0x5604681710f0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681711a0 | | |-TextComment 0x560468171150 Text=" The world." | | `-TextComment 0x560468171170 Text=" " | |-ParamCommandComment 0x5604681711c0 [in] implicitly Param="ti" ParamIndex=1 | | `-ParagraphComment 0x560468171270 | | |-TextComment 0x560468171220 Text=" Type info of the value to move." | | `-TextComment 0x560468171240 Text=" " | |-ParamCommandComment 0x560468171290 [in] implicitly Param="dst" ParamIndex=2 | | `-ParagraphComment 0x560468171340 | | |-TextComment 0x5604681712f0 Text=" Pointer to the storage to move to." | | `-TextComment 0x560468171310 Text=" " | |-ParamCommandComment 0x560468171360 [in] implicitly Param="src" ParamIndex=3 | | `-ParagraphComment 0x560468171410 | | |-TextComment 0x5604681713c0 Text=" Pointer to the value to move." | | `-TextComment 0x5604681713e0 Text=" " | `-BlockCommandComment 0x560468171430 Name="return" | `-ParagraphComment 0x560468171490 | `-TextComment 0x560468171460 Text=" Zero if success, nonzero if failed. " |-FunctionDecl 0x56046806a5a0 line:8309:5 ecs_value_move 'int (const ecs_world_t *, ecs_entity_t, void *, void *)' | |-ParmVarDecl 0x56046806a2d8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x56046806a350 col:18 type 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x56046806a3d0 col:11 dst 'void *' | |-ParmVarDecl 0x56046806a450 col:11 src 'void *' | `-FullComment 0x560468171a00 | |-ParagraphComment 0x560468171590 | | `-TextComment 0x560468171560 Text=" Move value." | |-ParagraphComment 0x5604681715e0 | | `-TextComment 0x5604681715b0 Text=" " | |-ParamCommandComment 0x560468171600 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681716b0 | | |-TextComment 0x560468171660 Text=" The world." | | `-TextComment 0x560468171680 Text=" " | |-ParamCommandComment 0x5604681716d0 [in] implicitly Param="type" ParamIndex=1 | | `-ParagraphComment 0x560468171780 | | |-TextComment 0x560468171730 Text=" The type of the value to move." | | `-TextComment 0x560468171750 Text=" " | |-ParamCommandComment 0x5604681717a0 [in] implicitly Param="dst" ParamIndex=2 | | `-ParagraphComment 0x560468171850 | | |-TextComment 0x560468171800 Text=" Pointer to the storage to move to." | | `-TextComment 0x560468171820 Text=" " | |-ParamCommandComment 0x560468171870 [in] implicitly Param="src" ParamIndex=3 | | `-ParagraphComment 0x560468171920 | | |-TextComment 0x5604681718d0 Text=" Pointer to the value to move." | | `-TextComment 0x5604681718f0 Text=" " | `-BlockCommandComment 0x560468171940 Name="return" | `-ParagraphComment 0x5604681719a0 | `-TextComment 0x560468171970 Text=" Zero if success, nonzero if failed. " |-FunctionDecl 0x56046806a8c0 line:8323:5 ecs_value_move_ctor_w_type_info 'int (const ecs_world_t *, const ecs_type_info_t *, void *, void *)' | |-ParmVarDecl 0x56046806a698 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x56046806a710 col:28 ti 'const ecs_type_info_t *' | |-ParmVarDecl 0x56046806a790 col:11 dst 'void *' | |-ParmVarDecl 0x56046806a810 col:11 src 'void *' | `-FullComment 0x560468171f10 | |-ParagraphComment 0x560468171aa0 | | `-TextComment 0x560468171a70 Text=" Move construct value." | |-ParagraphComment 0x560468171af0 | | `-TextComment 0x560468171ac0 Text=" " | |-ParamCommandComment 0x560468171b10 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468171bc0 | | |-TextComment 0x560468171b70 Text=" The world." | | `-TextComment 0x560468171b90 Text=" " | |-ParamCommandComment 0x560468171be0 [in] implicitly Param="ti" ParamIndex=1 | | `-ParagraphComment 0x560468171c90 | | |-TextComment 0x560468171c40 Text=" Type info of the value to move." | | `-TextComment 0x560468171c60 Text=" " | |-ParamCommandComment 0x560468171cb0 [in] implicitly Param="dst" ParamIndex=2 | | `-ParagraphComment 0x560468171d60 | | |-TextComment 0x560468171d10 Text=" Pointer to the storage to move to." | | `-TextComment 0x560468171d30 Text=" " | |-ParamCommandComment 0x560468171d80 [in] implicitly Param="src" ParamIndex=3 | | `-ParagraphComment 0x560468171e30 | | |-TextComment 0x560468171de0 Text=" Pointer to the value to move." | | `-TextComment 0x560468171e00 Text=" " | `-BlockCommandComment 0x560468171e50 Name="return" | `-ParagraphComment 0x560468171eb0 | `-TextComment 0x560468171e80 Text=" Zero if success, nonzero if failed. " |-FunctionDecl 0x56046806abe0 line:8337:5 ecs_value_move_ctor 'int (const ecs_world_t *, ecs_entity_t, void *, void *)' | |-ParmVarDecl 0x56046806a9b8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x56046806aa30 col:18 type 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x56046806aab0 col:11 dst 'void *' | |-ParmVarDecl 0x56046806ab30 col:11 src 'void *' | `-FullComment 0x560468172430 | |-ParagraphComment 0x560468171fb0 | | `-TextComment 0x560468171f80 Text=" Move construct value." | |-ParagraphComment 0x560468172000 | | `-TextComment 0x560468171fd0 Text=" " | |-ParamCommandComment 0x560468172020 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681720d0 | | |-TextComment 0x560468172080 Text=" The world." | | `-TextComment 0x5604681720a0 Text=" " | |-ParamCommandComment 0x5604681720f0 [in] implicitly Param="type" ParamIndex=1 | | `-ParagraphComment 0x5604681721a0 | | |-TextComment 0x560468172150 Text=" The type of the value to move." | | `-TextComment 0x560468172170 Text=" " | |-ParamCommandComment 0x5604681721c0 [in] implicitly Param="dst" ParamIndex=2 | | `-ParagraphComment 0x560468172270 | | |-TextComment 0x560468172220 Text=" Pointer to the storage to move to." | | `-TextComment 0x560468172240 Text=" " | |-ParamCommandComment 0x560468172290 [in] implicitly Param="src" ParamIndex=3 | | `-ParagraphComment 0x560468172340 | | |-TextComment 0x5604681722f0 Text=" Pointer to the value to move." | | `-TextComment 0x560468172310 Text=" " | `-BlockCommandComment 0x560468172360 Name="return" | `-ParagraphComment 0x5604681723d0 | `-TextComment 0x560468172390 Text=" Zero if success, nonzero if failed. " |-FunctionDecl 0x56046806c9c8 line:9212:6 _ecs_deprecated 'void (const char *, int32_t, const char *)' | |-ParmVarDecl 0x56046806c830 col:17 file 'const char *' | |-ParmVarDecl 0x56046806c8a8 col:13 line 'int32_t':'int' | |-ParmVarDecl 0x56046806c928 col:17 msg 'const char *' | `-FullComment 0x560468172550 | `-ParagraphComment 0x560468172520 | |-TextComment 0x5604681724a0 Text="/////////////////////////////////////////////////////////////////////////////" | |-TextComment 0x5604681724c0 Text="/ Tracing" | `-TextComment 0x5604681724e0 Text="/////////////////////////////////////////////////////////////////////////////" |-FunctionDecl 0x56046806cba8 col:6 _ecs_log_push 'void (int32_t)' | |-ParmVarDecl 0x56046806cab8 col:28 level 'int32_t':'int' | `-FullComment 0x560468172780 | |-ParagraphComment 0x560468172640 | | |-TextComment 0x5604681725c0 Text=" Increase log stack." | | |-TextComment 0x5604681725e0 Text=" This operation increases the indent_ value of the OS API and can be useful to" | | `-TextComment 0x560468172600 Text=" make nested behavior more visible." | |-ParagraphComment 0x560468172690 | | `-TextComment 0x560468172660 Text=" " | `-ParamCommandComment 0x5604681726b0 [in] implicitly Param="level" ParamIndex=0 | `-ParagraphComment 0x560468172740 | `-TextComment 0x560468172710 Text=" The log level." |-FunctionDecl 0x56046806cd18 col:6 _ecs_log_pop 'void (int32_t)' | |-ParmVarDecl 0x56046806cc88 col:27 level 'int32_t':'int' | `-FullComment 0x5604681729b0 | |-ParagraphComment 0x560468172870 | | |-TextComment 0x5604681727f0 Text=" Decrease log stack." | | |-TextComment 0x560468172810 Text=" This operation decreases the indent_ value of the OS API and can be useful to" | | `-TextComment 0x560468172830 Text=" make nested behavior more visible." | |-ParagraphComment 0x5604681728c0 | | `-TextComment 0x560468172890 Text=" " | `-ParamCommandComment 0x5604681728e0 [in] implicitly Param="level" ParamIndex=0 | `-ParagraphComment 0x560468172970 | `-TextComment 0x560468172940 Text=" The log level." |-FunctionDecl 0x56046808be20 col:6 ecs_should_log 'bool (int32_t)' | |-ParmVarDecl 0x56046806cdf8 col:29 level 'int32_t':'int' | `-FullComment 0x560468172c80 | |-ParagraphComment 0x560468172aa0 | | |-TextComment 0x560468172a20 Text=" Should current level be logged." | | |-TextComment 0x560468172a40 Text=" This operation returns true when the specified log level should be logged " | | `-TextComment 0x560468172a60 Text=" with the current log level." | |-ParagraphComment 0x560468172af0 | | `-TextComment 0x560468172ac0 Text=" " | |-ParamCommandComment 0x560468172b10 [in] implicitly Param="level" ParamIndex=0 | | `-ParagraphComment 0x560468172bc0 | | |-TextComment 0x560468172b70 Text=" The log level to check for." | | `-TextComment 0x560468172b90 Text=" " | `-BlockCommandComment 0x560468172be0 Name="return" | `-ParagraphComment 0x560468172c40 | `-TextComment 0x560468172c10 Text=" Whether logging is enabled for the current level." |-FunctionDecl 0x56046808c000 line:9251:13 ecs_strerror 'const char *(int32_t)' | |-ParmVarDecl 0x56046808bf38 col:13 error_code 'int32_t':'int' | `-FullComment 0x560468172d50 | `-ParagraphComment 0x560468172d20 | `-TextComment 0x560468172cf0 Text=" Get description for error code " |-FunctionDecl 0x56046808c3b0 line:9280:6 _ecs_print 'void (int32_t, const char *, int32_t, const char *, ...)' | |-ParmVarDecl 0x56046808c0e8 col:13 level 'int32_t':'int' | |-ParmVarDecl 0x56046808c168 col:17 file 'const char *' | |-ParmVarDecl 0x56046808c1e0 col:13 line 'int32_t':'int' | |-ParmVarDecl 0x56046808c260 col:17 fmt 'const char *' | `-FullComment 0x560468172e70 | `-ParagraphComment 0x560468172e40 | |-TextComment 0x560468172dc0 Text="/////////////////////////////////////////////////////////////////////////////" | |-TextComment 0x560468172de0 Text="/ Logging functions (do nothing when logging is enabled)" | `-TextComment 0x560468172e00 Text="/////////////////////////////////////////////////////////////////////////////" |-FunctionDecl 0x56046808c7c8 line:9288:6 _ecs_printv 'void (int, const char *, int32_t, const char *, struct __va_list_tag *)' | |-ParmVarDecl 0x56046808c488 col:9 level 'int' | |-ParmVarDecl 0x56046808c508 col:17 file 'const char *' | |-ParmVarDecl 0x56046808c580 col:13 line 'int32_t':'int' | |-ParmVarDecl 0x56046808c600 col:17 fmt 'const char *' | `-ParmVarDecl 0x56046808c678 col:13 args 'struct __va_list_tag *':'struct __va_list_tag *' |-FunctionDecl 0x56046808cac0 line:9296:6 _ecs_log 'void (int32_t, const char *, int32_t, const char *, ...)' | |-ParmVarDecl 0x56046808c8a0 col:13 level 'int32_t':'int' | |-ParmVarDecl 0x56046808c920 col:17 file 'const char *' | |-ParmVarDecl 0x56046808c998 col:13 line 'int32_t':'int' | `-ParmVarDecl 0x56046808ca18 col:17 fmt 'const char *' |-FunctionDecl 0x56046808cf38 line:9304:6 _ecs_logv 'void (int, const char *, int32_t, const char *, struct __va_list_tag *)' | |-ParmVarDecl 0x56046808cb98 col:9 level 'int' | |-ParmVarDecl 0x56046808cc18 col:17 file 'const char *' | |-ParmVarDecl 0x56046808cc90 col:13 line 'int32_t':'int' | |-ParmVarDecl 0x56046808cd10 col:17 fmt 'const char *' | `-ParmVarDecl 0x56046808cd88 col:13 args 'struct __va_list_tag *':'struct __va_list_tag *' |-FunctionDecl 0x56046808d230 line:9312:6 _ecs_abort 'void (int32_t, const char *, int32_t, const char *, ...)' | |-ParmVarDecl 0x56046808d010 col:13 error_code 'int32_t':'int' | |-ParmVarDecl 0x56046808d090 col:17 file 'const char *' | |-ParmVarDecl 0x56046808d108 col:13 line 'int32_t':'int' | `-ParmVarDecl 0x56046808d188 col:17 fmt 'const char *' |-FunctionDecl 0x56046808d6f0 line:9320:6 _ecs_assert 'bool (bool, int32_t, const char *, const char *, int32_t, const char *, ...)' | |-ParmVarDecl 0x56046808d300 col:10 condition 'bool' | |-ParmVarDecl 0x56046808d378 col:13 error_code 'int32_t':'int' | |-ParmVarDecl 0x56046808d3f8 col:17 condition_str 'const char *' | |-ParmVarDecl 0x56046808d478 col:17 file 'const char *' | |-ParmVarDecl 0x56046808d4f0 col:13 line 'int32_t':'int' | `-ParmVarDecl 0x56046808d570 col:17 fmt 'const char *' |-FunctionDecl 0x56046808daa0 line:9330:6 _ecs_parser_error 'void (const char *, const char *, int64_t, const char *, ...)' | |-ParmVarDecl 0x56046808d7d8 col:17 name 'const char *' | |-ParmVarDecl 0x56046808d858 col:17 expr 'const char *' | |-ParmVarDecl 0x56046808d8d0 col:13 column 'int64_t':'long' | `-ParmVarDecl 0x56046808d950 col:17 fmt 'const char *' |-FunctionDecl 0x56046808df00 line:9338:6 _ecs_parser_errorv 'void (const char *, const char *, int64_t, const char *, struct __va_list_tag *)' | |-ParmVarDecl 0x56046808db78 col:17 name 'const char *' | |-ParmVarDecl 0x56046808dbf8 col:17 expr 'const char *' | |-ParmVarDecl 0x56046808dc70 col:13 column 'int64_t':'long' | |-ParmVarDecl 0x56046808dcf0 col:17 fmt 'const char *' | `-ParmVarDecl 0x56046808dd68 col:13 args 'struct __va_list_tag *':'struct __va_list_tag *' |-FunctionDecl 0x56046808e228 line:9605:5 ecs_log_set_level 'int (int)' | |-ParmVarDecl 0x56046808e190 col:9 level 'int' | `-FullComment 0x560468173300 | |-ParagraphComment 0x560468172f60 | | |-TextComment 0x560468172ee0 Text=" Enable or disable tracing." | | |-TextComment 0x560468172f00 Text=" This will enable builtin tracing. For tracing to work, it will have to be" | | `-TextComment 0x560468172f20 Text=" compiled in which requires defining one of the following macros:" | |-ParagraphComment 0x560468173020 | | |-TextComment 0x560468172f80 Text=" FLECS_LOG_0 - All tracing is disabled" | | |-TextComment 0x560468172fa0 Text=" FLECS_LOG_1 - Enable tracing level 1" | | |-TextComment 0x560468172fc0 Text=" FLECS_LOG_2 - Enable tracing level 2 and below" | | `-TextComment 0x560468172fe0 Text=" FLECS_LOG_3 - Enable tracing level 3 and below" | |-ParagraphComment 0x560468173090 | | |-TextComment 0x560468173040 Text=" If no tracing level is defined and this is a debug build, FLECS_LOG_3 will" | | `-TextComment 0x560468173060 Text=" have been automatically defined." | |-ParagraphComment 0x560468173100 | | |-TextComment 0x5604681730b0 Text=" The provided level corresponds with the tracing level. If -1 is provided as" | | `-TextComment 0x5604681730d0 Text=" value, warnings are disabled. If -2 is provided, errors are disabled as well." | |-ParagraphComment 0x560468173150 | | `-TextComment 0x560468173120 Text=" " | |-ParamCommandComment 0x560468173170 [in] implicitly Param="level" ParamIndex=0 | | `-ParagraphComment 0x560468173220 | | |-TextComment 0x5604681731d0 Text=" Desired tracing level." | | `-TextComment 0x5604681731f0 Text=" " | `-BlockCommandComment 0x560468173240 Name="return" | `-ParagraphComment 0x5604681732a0 | `-TextComment 0x560468173270 Text=" Previous tracing level." |-FunctionDecl 0x56046808e3c8 line:9615:6 ecs_log_enable_colors 'bool (bool)' | |-ParmVarDecl 0x56046808e308 col:10 enabled 'bool' | `-FullComment 0x5604681735a0 | |-ParagraphComment 0x5604681733c0 | | |-TextComment 0x560468173370 Text=" Enable/disable tracing with colors." | | `-TextComment 0x560468173390 Text=" By default colors are enabled." | |-ParagraphComment 0x560468173410 | | `-TextComment 0x5604681733e0 Text=" " | |-ParamCommandComment 0x560468173430 [in] implicitly Param="enabled" ParamIndex=0 | | `-ParagraphComment 0x5604681734e0 | | |-TextComment 0x560468173490 Text=" Whether to enable tracing with colors." | | `-TextComment 0x5604681734b0 Text=" " | `-BlockCommandComment 0x560468173500 Name="return" | `-ParagraphComment 0x560468173560 | `-TextComment 0x560468173530 Text=" Previous color setting." |-FunctionDecl 0x56046808e538 line:9626:6 ecs_log_enable_timestamp 'bool (bool)' | |-ParmVarDecl 0x56046808e4a8 col:10 enabled 'bool' | `-FullComment 0x560468173870 | |-ParagraphComment 0x560468173690 | | |-TextComment 0x560468173610 Text=" Enable/disable logging timestamp." | | |-TextComment 0x560468173630 Text=" By default timestamps are disabled. Note that enabling timestamps introduces" | | `-TextComment 0x560468173650 Text=" overhead as the logging code will need to obtain the current time." | |-ParagraphComment 0x5604681736e0 | | `-TextComment 0x5604681736b0 Text=" " | |-ParamCommandComment 0x560468173700 [in] implicitly Param="enabled" ParamIndex=0 | | `-ParagraphComment 0x5604681737b0 | | |-TextComment 0x560468173760 Text=" Whether to enable tracing with timestamps." | | `-TextComment 0x560468173780 Text=" " | `-BlockCommandComment 0x5604681737d0 Name="return" | `-ParagraphComment 0x560468173830 | `-TextComment 0x560468173800 Text=" Previous timestamp setting." |-FunctionDecl 0x56046808e6a8 line:9643:6 ecs_log_enable_timedelta 'bool (bool)' | |-ParmVarDecl 0x56046808e618 col:10 enabled 'bool' | `-FullComment 0x560468173c40 | |-ParagraphComment 0x560468173960 | | |-TextComment 0x5604681738e0 Text=" Enable/disable logging time since last log." | | |-TextComment 0x560468173900 Text=" By default deltatime is disabled. Note that enabling timestamps introduces" | | `-TextComment 0x560468173920 Text=" overhead as the logging code will need to obtain the current time." | |-ParagraphComment 0x560468173a00 | | |-TextComment 0x560468173980 Text=" When enabled, this logs the amount of time in seconds passed since the last" | | |-TextComment 0x5604681739a0 Text=" log, when this amount is non-zero. The format is a '+' character followed by" | | `-TextComment 0x5604681739c0 Text=" the number of seconds:" | |-ParagraphComment 0x560468173a50 | | `-TextComment 0x560468173a20 Text=" +1 trace: log message" | |-ParagraphComment 0x560468173aa0 | | `-TextComment 0x560468173a70 Text=" " | |-ParamCommandComment 0x560468173ac0 [in] implicitly Param="enabled" ParamIndex=0 | | `-ParagraphComment 0x560468173b70 | | |-TextComment 0x560468173b20 Text=" Whether to enable tracing with timestamps." | | `-TextComment 0x560468173b40 Text=" " | `-BlockCommandComment 0x560468173b90 Name="return" | `-ParagraphComment 0x560468173bf0 | `-TextComment 0x560468173bc0 Text=" Previous timestamp setting." |-FunctionDecl 0x56046808e840 col:5 ecs_log_last_error 'int (void)' | `-FullComment 0x560468173e10 | |-ParagraphComment 0x560468173d00 | | |-TextComment 0x560468173cb0 Text=" Get last logged error code." | | `-TextComment 0x560468173cd0 Text=" Calling this operation resets the error code." | |-ParagraphComment 0x560468173d50 | | `-TextComment 0x560468173d20 Text=" " | `-BlockCommandComment 0x560468173d70 Name="return" | `-ParagraphComment 0x560468173dd0 | `-TextComment 0x560468173da0 Text=" Last error, 0 if none was logged since last call to last_error." |-TypedefDecl 0x56046808eb38 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 | `-ParagraphComment 0x560468173eb0 | `-TextComment 0x560468173e80 Text=" Callback type for init action. " |-RecordDecl 0x56046808ebb8 line:9774:16 struct ecs_app_desc_t definition | |-FullComment 0x560468173fb0 | | `-ParagraphComment 0x560468173f80 | | `-TextComment 0x560468173f50 Text=" Used with ecs_app_run. " | |-FieldDecl 0x56046808ec78 col:17 target_fps 'float' | | `-FullComment 0x560468174080 | | `-ParagraphComment 0x560468174050 | | `-TextComment 0x560468174020 Text=" Target FPS. " | |-FieldDecl 0x56046808ed10 col:17 delta_time 'float' | | `-FullComment 0x560468174150 | | `-ParagraphComment 0x560468174120 | | `-TextComment 0x5604681740f0 Text=" Frame time increment (0 for measured values) " | |-FieldDecl 0x56046808ed98 col:13 threads 'int32_t':'int' | | `-FullComment 0x560468174220 | | `-ParagraphComment 0x5604681741f0 | | `-TextComment 0x5604681741c0 Text=" Number of threads. " | |-FieldDecl 0x56046808ee28 col:13 frames 'int32_t':'int' | | `-FullComment 0x5604681742f0 | | `-ParagraphComment 0x5604681742c0 | | `-TextComment 0x560468174290 Text=" Number of frames to run (0 for infinite) " | |-FieldDecl 0x560468099150 col:10 enable_rest 'bool' | | `-FullComment 0x5604681743d0 | | `-ParagraphComment 0x560468174390 | | `-TextComment 0x560468174360 Text=" Allows HTTP clients to access ECS data " | |-FieldDecl 0x5604680991d8 col:10 enable_monitor 'bool' | | `-FullComment 0x5604681744a0 | | `-ParagraphComment 0x560468174470 | | `-TextComment 0x560468174440 Text=" Periodically collect statistics " | |-FieldDecl 0x560468099290 col:27 init 'ecs_app_init_action_t':'int (*)(ecs_world_t *)' | | `-FullComment 0x560468174590 | | `-ParagraphComment 0x560468174560 | | |-TextComment 0x560468174510 Text=" If set, function is ran before starting the" | | `-TextComment 0x560468174530 Text=" main loop. " | `-FieldDecl 0x560468099320 col:11 ctx 'void *' | `-FullComment 0x560468174660 | `-ParagraphComment 0x560468174630 | `-TextComment 0x560468174600 Text=" Reserved for custom run/frame actions " |-TypedefDecl 0x5604680993f8 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 | `-ParagraphComment 0x560468174700 | `-TextComment 0x5604681746d0 Text=" Used with ecs_app_run. " |-TypedefDecl 0x560468099750 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 | `-ParagraphComment 0x5604681747d0 | `-TextComment 0x5604681747a0 Text=" Callback type for run action. " |-TypedefDecl 0x560468099a70 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 | `-ParagraphComment 0x5604681748a0 | `-TextComment 0x560468174870 Text=" Callback type for frame action. " |-FunctionDecl 0x560468099c20 line:9810:5 ecs_app_run 'int (ecs_world_t *, ecs_app_desc_t *)' | |-ParmVarDecl 0x560468099b08 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468099b80 col:21 desc 'ecs_app_desc_t *' | `-FullComment 0x560468174c80 | |-ParagraphComment 0x5604681749c0 | | |-TextComment 0x560468174940 Text=" Run application." | | |-TextComment 0x560468174960 Text=" This will run the application with the parameters specified in desc. After" | | `-TextComment 0x560468174980 Text=" the application quits (ecs_quit is called) the world will be cleaned up." | |-ParagraphComment 0x560468174a60 | | |-TextComment 0x5604681749e0 Text=" If a custom run action is set, it will be invoked by this operation. The" | | |-TextComment 0x560468174a00 Text=" default run action calls the frame action in a loop until it returns a" | | `-TextComment 0x560468174a20 Text=" non-zero value." | |-ParagraphComment 0x560468174ab0 | | `-TextComment 0x560468174a80 Text=" " | |-ParamCommandComment 0x560468174ad0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468174b80 | | |-TextComment 0x560468174b30 Text=" The world." | | `-TextComment 0x560468174b50 Text=" " | `-ParamCommandComment 0x560468174ba0 [in] implicitly Param="desc" ParamIndex=1 | `-ParagraphComment 0x560468174c30 | `-TextComment 0x560468174c00 Text=" Application parameters." |-FunctionDecl 0x560468099e20 line:9823:5 ecs_app_run_frame 'int (ecs_world_t *, const ecs_app_desc_t *)' | |-ParmVarDecl 0x560468099d08 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x560468099d80 col:27 desc 'const ecs_app_desc_t *' | `-FullComment 0x560468175030 | |-ParagraphComment 0x560468174d70 | | |-TextComment 0x560468174cf0 Text=" Default frame callback." | | |-TextComment 0x560468174d10 Text=" This operation will run a single frame. By default this operation will invoke" | | `-TextComment 0x560468174d30 Text=" ecs_progress directly, unless a custom frame action is set." | |-ParagraphComment 0x560468174dc0 | | `-TextComment 0x560468174d90 Text=" " | |-ParamCommandComment 0x560468174de0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468174e90 | | |-TextComment 0x560468174e40 Text=" The world." | | `-TextComment 0x560468174e60 Text=" " | |-ParamCommandComment 0x560468174eb0 [in] implicitly Param="desc" ParamIndex=1 | | `-ParagraphComment 0x560468174f60 | | |-TextComment 0x560468174f10 Text=" The desc struct passed to ecs_app_run." | | `-TextComment 0x560468174f30 Text=" " | `-BlockCommandComment 0x560468174f80 Name="return" | `-ParagraphComment 0x560468174fe0 | `-TextComment 0x560468174fb0 Text=" value returned by ecs_progress" |-FunctionDecl 0x56046809a030 line:9833:5 ecs_app_set_run_action 'int (ecs_app_run_action_t)' | |-ParmVarDecl 0x560468099f30 col:26 callback 'ecs_app_run_action_t':'int (*)(ecs_world_t *, ecs_app_desc_t *)' | `-FullComment 0x560468175230 | |-ParagraphComment 0x5604681750f0 | | |-TextComment 0x5604681750a0 Text=" Set custom run action." | | `-TextComment 0x5604681750c0 Text=" See ecs_app_run." | |-ParagraphComment 0x560468175140 | | `-TextComment 0x560468175110 Text=" " | `-ParamCommandComment 0x560468175160 [in] implicitly Param="callback" ParamIndex=0 | `-ParagraphComment 0x5604681751f0 | `-TextComment 0x5604681751c0 Text=" The run action." |-FunctionDecl 0x56046809acf0 line:9842:5 ecs_app_set_frame_action 'int (ecs_app_frame_action_t)' | |-ParmVarDecl 0x56046809abf0 col:28 callback 'ecs_app_frame_action_t':'int (*)(ecs_world_t *, const ecs_app_desc_t *)' | `-FullComment 0x560468175430 | |-ParagraphComment 0x5604681752f0 | | |-TextComment 0x5604681752a0 Text=" Set custom frame action." | | `-TextComment 0x5604681752c0 Text=" See ecs_app_run_frame." | |-ParagraphComment 0x560468175340 | | `-TextComment 0x560468175310 Text=" " | `-ParamCommandComment 0x560468175360 [in] implicitly Param="callback" ParamIndex=0 | `-ParagraphComment 0x5604681753f0 | `-TextComment 0x5604681753c0 Text=" The frame action." |-VarDecl 0x56046809ae68 :52:1> col:1 FLECS__EEcsRest 'const ecs_entity_t':'const unsigned long' extern |-RecordDecl 0x56046809aed0 line:9912:9 struct definition | |-FieldDecl 0x56046809af80 col:14 port 'uint16_t':'unsigned short' | | `-FullComment 0x560468175500 | | `-ParagraphComment 0x5604681754d0 | | `-TextComment 0x5604681754a0 Text=" Port of server (optional, default = 27750) " | |-FieldDecl 0x56046809b010 col:11 ipaddr 'char *' | | `-FullComment 0x5604681755d0 | | `-ParagraphComment 0x5604681755a0 | | `-TextComment 0x560468175570 Text=" Interface address (optional, default = 0.0.0.0) " | `-FieldDecl 0x56046809b0a0 col:11 impl 'void *' |-TypedefDecl 0x56046809b148 col:3 EcsRest 'struct EcsRest':'EcsRest' | `-ElaboratedType 0x56046809b0f0 'struct EcsRest' sugar | `-RecordType 0x56046809af50 'EcsRest' | `-Record 0x56046809aed0 '' |-VarDecl 0x56046809b1c8 col:16 ecs_rest_request_count 'int64_t':'long' extern |-VarDecl 0x56046809b240 col:16 ecs_rest_entity_count 'int64_t':'long' extern |-VarDecl 0x56046809b2b8 col:16 ecs_rest_entity_error_count 'int64_t':'long' extern |-VarDecl 0x56046809b330 col:16 ecs_rest_query_count 'int64_t':'long' extern |-VarDecl 0x56046809b3a8 col:16 ecs_rest_query_error_count 'int64_t':'long' extern |-VarDecl 0x56046809b420 col:16 ecs_rest_query_name_count 'int64_t':'long' extern |-VarDecl 0x56046809b498 col:16 ecs_rest_query_name_error_count 'int64_t':'long' extern |-VarDecl 0x56046809b510 col:16 ecs_rest_query_name_from_cache_count 'int64_t':'long' extern |-VarDecl 0x56046809b588 col:16 ecs_rest_enable_count 'int64_t':'long' extern |-VarDecl 0x56046809b600 col:16 ecs_rest_enable_error_count 'int64_t':'long' extern |-VarDecl 0x56046809b678 col:16 ecs_rest_delete_count 'int64_t':'long' extern |-VarDecl 0x56046809b6f0 col:16 ecs_rest_delete_error_count 'int64_t':'long' extern |-VarDecl 0x56046809b768 col:16 ecs_rest_world_stats_count 'int64_t':'long' extern |-VarDecl 0x56046809b7e0 col:16 ecs_rest_pipeline_stats_count 'int64_t':'long' extern |-VarDecl 0x56046809b858 col:16 ecs_rest_stats_error_count 'int64_t':'long' extern |-FunctionDecl 0x56046809b960 line:9937:6 FlecsRestImport 'void (ecs_world_t *)' | `-ParmVarDecl 0x56046809b8d0 col:18 world 'ecs_world_t *' |-RecordDecl 0x56046809bac8 line:9989:16 struct EcsTimer definition | |-FullComment 0x5604681756a0 | | `-ParagraphComment 0x560468175670 | | `-TextComment 0x560468175640 Text=" Component used for one shot/interval timer functionality " | |-FieldDecl 0x56046809bb88 col:17 timeout 'float' | | `-FullComment 0x560468175770 | | `-ParagraphComment 0x560468175740 | | `-TextComment 0x560468175710 Text=" Timer timeout period " | |-FieldDecl 0x56046809bec0 col:17 time 'float' | | `-FullComment 0x560468175840 | | `-ParagraphComment 0x560468175810 | | `-TextComment 0x5604681757e0 Text=" Incrementing time value " | |-FieldDecl 0x56046809bf48 col:13 fired_count 'int32_t':'int' | | `-FullComment 0x560468175910 | | `-ParagraphComment 0x5604681758e0 | | `-TextComment 0x5604681758b0 Text=" Number of times ticked " | |-FieldDecl 0x56046809bfd8 col:10 active 'bool' | | `-FullComment 0x5604681759e0 | | `-ParagraphComment 0x5604681759b0 | | `-TextComment 0x560468175980 Text=" Is the timer active or not " | `-FieldDecl 0x56046809c068 col:10 single_shot 'bool' | `-FullComment 0x560468175ab0 | `-ParagraphComment 0x560468175a80 | `-TextComment 0x560468175a50 Text=" Is this a single shot timer " |-TypedefDecl 0x56046809c148 col:3 EcsTimer 'struct EcsTimer':'struct EcsTimer' | |-ElaboratedType 0x56046809c0f0 'struct EcsTimer' sugar | | `-RecordType 0x56046809bb50 'struct EcsTimer' | | `-Record 0x56046809bac8 'EcsTimer' | `-FullComment 0x560468175b80 | `-ParagraphComment 0x560468175b50 | `-TextComment 0x560468175b20 Text=" Component used for one shot/interval timer functionality " |-RecordDecl 0x56046809c1e0 line:9998:16 struct EcsRateFilter definition | |-FullComment 0x560468175c50 | | `-ParagraphComment 0x560468175c20 | | `-TextComment 0x560468175bf0 Text=" Apply a rate filter to a tick source " | |-FieldDecl 0x56046809c290 col:18 src 'ecs_entity_t':'unsigned long' | | `-FullComment 0x560468175d20 | | `-ParagraphComment 0x560468175cf0 | | `-TextComment 0x560468175cc0 Text=" Source of the rate filter " | |-FieldDecl 0x56046809c318 col:13 rate 'int32_t':'int' | | `-FullComment 0x560468175df0 | | `-ParagraphComment 0x560468175dc0 | | `-TextComment 0x560468175d90 Text=" Rate of the rate filter " | |-FieldDecl 0x56046809c3a8 col:13 tick_count 'int32_t':'int' | | `-FullComment 0x560468175ec0 | | `-ParagraphComment 0x560468175e90 | | `-TextComment 0x560468175e60 Text=" Number of times the rate filter ticked " | `-FieldDecl 0x56046809c440 col:17 time_elapsed 'float' | `-FullComment 0x560468175f90 | `-ParagraphComment 0x560468175f60 | `-TextComment 0x560468175f30 Text=" Time elapsed since last tick " |-TypedefDecl 0x56046809c518 col:3 EcsRateFilter 'struct EcsRateFilter':'struct EcsRateFilter' | |-ElaboratedType 0x56046809c4c0 'struct EcsRateFilter' sugar | | `-RecordType 0x56046809c260 'struct EcsRateFilter' | | `-Record 0x56046809c1e0 'EcsRateFilter' | `-FullComment 0x560468176060 | `-ParagraphComment 0x560468176030 | `-TextComment 0x560468176000 Text=" Apply a rate filter to a tick source " |-FunctionDecl 0x56046809c7d8 line:10025:14 ecs_set_timeout 'ecs_entity_t (ecs_world_t *, ecs_entity_t, float)' | |-ParmVarDecl 0x56046809c5c0 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046809c638 col:18 tick_source 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x56046809c6b8 col:17 timeout 'float' | `-FullComment 0x560468176660 | |-ParagraphComment 0x5604681761a0 | | |-TextComment 0x5604681760d0 Text=" Set timer timeout." | | |-TextComment 0x5604681760f0 Text=" This operation executes any systems associated with the timer after the" | | |-TextComment 0x560468176110 Text=" specified timeout value. If the entity contains an existing timer, the " | | |-TextComment 0x560468176130 Text=" timeout value will be reset. The timer can be started and stopped with " | | `-TextComment 0x560468176150 Text=" ecs_start_timer and ecs_stop_timer." | |-ParagraphComment 0x5604681761f0 | | `-TextComment 0x5604681761c0 Text=" The timer is synchronous, and is incremented each frame by delta_time." | |-ParagraphComment 0x5604681762b0 | | |-TextComment 0x560468176210 Text=" The tick_source entity will be be a tick source after this operation. Tick" | | |-TextComment 0x560468176230 Text=" sources can be read by getting the EcsTickSource component. If the tick" | | |-TextComment 0x560468176250 Text=" source ticked this frame, the 'tick' member will be true. When the tick " | | `-TextComment 0x560468176270 Text=" source is a system, the system will tick when the timer ticks." | |-ParagraphComment 0x560468176300 | | `-TextComment 0x5604681762d0 Text=" " | |-ParamCommandComment 0x560468176320 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681763e0 | | |-TextComment 0x560468176380 Text=" The world." | | `-TextComment 0x5604681763a0 Text=" " | |-ParamCommandComment 0x560468176400 [in] implicitly Param="tick_source" ParamIndex=1 | | `-ParagraphComment 0x5604681764b0 | | |-TextComment 0x560468176460 Text=" The timer for which to set the timeout (0 to create one)." | | `-TextComment 0x560468176480 Text=" " | |-ParamCommandComment 0x5604681764d0 [in] implicitly Param="timeout" ParamIndex=2 | | `-ParagraphComment 0x560468176580 | | |-TextComment 0x560468176530 Text=" The timeout value." | | `-TextComment 0x560468176550 Text=" " | `-BlockCommandComment 0x5604681765a0 Name="return" | `-ParagraphComment 0x560468176600 | `-TextComment 0x5604681765d0 Text=" The timer entity." |-FunctionDecl 0x56046809ca60 line:10050:13 ecs_get_timeout 'float (const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x56046809c8c8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x56046809c940 col:18 tick_source 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468176bd0 | |-ParagraphComment 0x560468176750 | | |-TextComment 0x5604681766d0 Text=" Get current timeout value for the specified timer." | | |-TextComment 0x5604681766f0 Text=" This operation returns the value set by ecs_set_timeout. If no timer is" | | `-TextComment 0x560468176710 Text=" active for this entity, the operation returns 0." | |-ParagraphComment 0x5604681767f0 | | |-TextComment 0x560468176770 Text=" After the timeout expires the EcsTimer component is removed from the entity." | | |-TextComment 0x560468176790 Text=" This means that if ecs_get_timeout is invoked after the timer is expired, the" | | `-TextComment 0x5604681767b0 Text=" operation will return 0." | |-ParagraphComment 0x560468176840 | | `-TextComment 0x560468176810 Text=" The timer is synchronous, and is incremented each frame by delta_time." | |-ParagraphComment 0x560468176900 | | |-TextComment 0x560468176860 Text=" The tick_source entity will be be a tick source after this operation. Tick" | | |-TextComment 0x560468176880 Text=" sources can be read by getting the EcsTickSource component. If the tick" | | |-TextComment 0x5604681768a0 Text=" source ticked this frame, the 'tick' member will be true. When the tick " | | `-TextComment 0x5604681768c0 Text=" source is a system, the system will tick when the timer ticks." | |-ParagraphComment 0x560468176950 | | `-TextComment 0x560468176920 Text=" " | |-ParamCommandComment 0x560468176970 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468176a20 | | |-TextComment 0x5604681769d0 Text=" The world." | | `-TextComment 0x5604681769f0 Text=" " | |-ParamCommandComment 0x560468176a40 [in] implicitly Param="tick_source" ParamIndex=1 | | `-ParagraphComment 0x560468176af0 | | |-TextComment 0x560468176aa0 Text=" The timer." | | `-TextComment 0x560468176ac0 Text=" " | `-BlockCommandComment 0x560468176b10 Name="return" | `-ParagraphComment 0x560468176b70 | `-TextComment 0x560468176b40 Text=" The current timeout value, or 0 if no timer is active." |-FunctionDecl 0x56046809cce0 line:10072:14 ecs_set_interval 'ecs_entity_t (ecs_world_t *, ecs_entity_t, float)' | |-ParmVarDecl 0x56046809cb48 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046809cbc0 col:18 tick_source 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x56046809cc40 col:17 interval 'float' | `-FullComment 0x560468177190 | |-ParagraphComment 0x560468176ce0 | | |-TextComment 0x560468176c40 Text=" Set timer interval." | | |-TextComment 0x560468176c60 Text=" This operation will continously invoke systems associated with the timer " | | |-TextComment 0x560468176c80 Text=" after the interval period expires. If the entity contains an existing timer," | | `-TextComment 0x560468176ca0 Text=" the interval value will be reset." | |-ParagraphComment 0x560468176d30 | | `-TextComment 0x560468176d00 Text=" The timer is synchronous, and is incremented each frame by delta_time." | |-ParagraphComment 0x560468176df0 | | |-TextComment 0x560468176d50 Text=" The tick_source entity will be be a tick source after this operation. Tick" | | |-TextComment 0x560468176d70 Text=" sources can be read by getting the EcsTickSource component. If the tick" | | |-TextComment 0x560468176d90 Text=" source ticked this frame, the 'tick' member will be true. When the tick " | | `-TextComment 0x560468176db0 Text=" source is a system, the system will tick when the timer ticks. " | |-ParagraphComment 0x560468176e40 | | `-TextComment 0x560468176e10 Text=" " | |-ParamCommandComment 0x560468176e60 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468176f10 | | |-TextComment 0x560468176ec0 Text=" The world." | | `-TextComment 0x560468176ee0 Text=" " | |-ParamCommandComment 0x560468176f30 [in] implicitly Param="tick_source" ParamIndex=1 | | `-ParagraphComment 0x560468176fe0 | | |-TextComment 0x560468176f90 Text=" The timer for which to set the interval (0 to create one)." | | `-TextComment 0x560468176fb0 Text=" " | |-ParamCommandComment 0x560468177000 [in] implicitly Param="interval" ParamIndex=2 | | `-ParagraphComment 0x5604681770b0 | | |-TextComment 0x560468177060 Text=" The interval value." | | `-TextComment 0x560468177080 Text=" " | `-BlockCommandComment 0x5604681770d0 Name="return" | `-ParagraphComment 0x560468177130 | `-TextComment 0x560468177100 Text=" The timer entity." |-FunctionDecl 0x56046809d2b0 line:10086:13 ecs_get_interval 'float (const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x56046809cdd8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x56046809d210 col:18 tick_source 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468177540 | |-ParagraphComment 0x560468177280 | | |-TextComment 0x560468177200 Text=" Get current interval value for the specified timer." | | |-TextComment 0x560468177220 Text=" This operation returns the value set by ecs_set_interval. If the entity is" | | `-TextComment 0x560468177240 Text=" not a timer, the operation will return 0." | |-ParagraphComment 0x5604681772d0 | | `-TextComment 0x5604681772a0 Text=" " | |-ParamCommandComment 0x5604681772f0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681773a0 | | |-TextComment 0x560468177350 Text=" The world." | | `-TextComment 0x560468177370 Text=" " | |-ParamCommandComment 0x5604681773c0 [in] implicitly Param="tick_source" ParamIndex=1 | | `-ParagraphComment 0x560468177470 | | |-TextComment 0x560468177420 Text=" The timer for which to set the interval." | | `-TextComment 0x560468177440 Text=" " | `-BlockCommandComment 0x560468177490 Name="return" | `-ParagraphComment 0x5604681774f0 | `-TextComment 0x5604681774c0 Text=" The current interval value, or 0 if no timer is active." |-FunctionDecl 0x56046809d4a8 line:10100:6 ecs_start_timer 'void (ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x56046809d398 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046809d410 col:18 tick_source 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468177890 | |-ParagraphComment 0x560468177680 | | |-TextComment 0x5604681775b0 Text=" Start timer." | | |-TextComment 0x5604681775d0 Text=" This operation resets the timer and starts it with the specified timeout. The" | | |-TextComment 0x5604681775f0 Text=" entity must have the EcsTimer component (added by ecs_set_timeout and " | | |-TextComment 0x560468177610 Text=" ecs_set_interval). If the entity does not have the EcsTimer component this" | | `-TextComment 0x560468177630 Text=" operation will assert." | |-ParagraphComment 0x5604681776d0 | | `-TextComment 0x5604681776a0 Text=" " | |-ParamCommandComment 0x5604681776f0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681777a0 | | |-TextComment 0x560468177750 Text=" The world." | | `-TextComment 0x560468177770 Text=" " | `-ParamCommandComment 0x5604681777c0 [in] implicitly Param="tick_source" ParamIndex=1 | `-ParagraphComment 0x560468177850 | `-TextComment 0x560468177820 Text=" The timer to start." |-FunctionDecl 0x56046809d6a8 line:10112:6 ecs_stop_timer 'void (ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x56046809d598 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046809d610 col:18 tick_source 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468177b90 | |-ParagraphComment 0x560468177980 | | |-TextComment 0x560468177900 Text=" Stop timer" | | |-TextComment 0x560468177920 Text=" This operation stops a timer from triggering. The entity must have the " | | `-TextComment 0x560468177940 Text=" EcsTimer component or this operation will assert." | |-ParagraphComment 0x5604681779d0 | | `-TextComment 0x5604681779a0 Text=" " | |-ParamCommandComment 0x5604681779f0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468177aa0 | | |-TextComment 0x560468177a50 Text=" The world." | | `-TextComment 0x560468177a70 Text=" " | `-ParamCommandComment 0x560468177ac0 [in] implicitly Param="tick_source" ParamIndex=1 | `-ParagraphComment 0x560468177b50 | `-TextComment 0x560468177b20 Text=" The timer to stop." |-FunctionDecl 0x56046809da48 line:10147:14 ecs_set_rate 'ecs_entity_t (ecs_world_t *, ecs_entity_t, int32_t, ecs_entity_t)' | |-ParmVarDecl 0x56046809d798 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046809d810 col:18 tick_source 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x56046809d888 col:13 rate 'int32_t':'int' | |-ParmVarDecl 0x56046809d900 col:18 source 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468178450 | |-ParagraphComment 0x560468177ca0 | | |-TextComment 0x560468177c00 Text=" Set rate filter." | | |-TextComment 0x560468177c20 Text=" This operation initializes a rate filter. Rate filters sample tick sources" | | |-TextComment 0x560468177c40 Text=" and tick at a configurable multiple. A rate filter is a tick source itself," | | `-TextComment 0x560468177c60 Text=" which means that rate filters can be chained." | |-ParagraphComment 0x560468177d90 | | |-TextComment 0x560468177cc0 Text=" Rate filters enable deterministic system execution which cannot be achieved" | | |-TextComment 0x560468177ce0 Text=" with interval timers alone. For example, if timer A has interval 2.0 and" | | |-TextComment 0x560468177d00 Text=" timer B has interval 4.0, it is not guaranteed that B will tick at exactly" | | |-TextComment 0x560468177d20 Text=" twice the multiple of A. This is partly due to the indeterministic nature of" | | `-TextComment 0x560468177d40 Text=" timers, and partly due to floating point rounding errors. " | |-ParagraphComment 0x560468177e50 | | |-TextComment 0x560468177db0 Text=" Rate filters can be combined with timers (or other rate filters) to ensure " | | |-TextComment 0x560468177dd0 Text=" that a system ticks at an exact multiple of a tick source (which can be" | | |-TextComment 0x560468177df0 Text=" another system). If a rate filter is created with a rate of 1 it will tick" | | `-TextComment 0x560468177e10 Text=" at the exact same time as its source." | |-ParagraphComment 0x560468177ec0 | | |-TextComment 0x560468177e70 Text=" If no tick source is provided, the rate filter will use the frame tick as" | | `-TextComment 0x560468177e90 Text=" source, which corresponds with the number of times ecs_progress is called." | |-ParagraphComment 0x560468177f80 | | |-TextComment 0x560468177ee0 Text=" The tick_source entity will be be a tick source after this operation. Tick" | | |-TextComment 0x560468177f00 Text=" sources can be read by getting the EcsTickSource component. If the tick" | | |-TextComment 0x560468177f20 Text=" source ticked this frame, the 'tick' member will be true. When the tick " | | `-TextComment 0x560468177f40 Text=" source is a system, the system will tick when the timer ticks. " | |-ParagraphComment 0x560468177fd0 | | `-TextComment 0x560468177fa0 Text=" " | |-ParamCommandComment 0x560468177ff0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681780a0 | | |-TextComment 0x560468178050 Text=" The world." | | `-TextComment 0x560468178070 Text=" " | |-ParamCommandComment 0x5604681780c0 [in] implicitly Param="tick_source" ParamIndex=1 | | `-ParagraphComment 0x560468178170 | | |-TextComment 0x560468178120 Text=" The rate filter entity (0 to create one)." | | `-TextComment 0x560468178140 Text=" " | |-ParamCommandComment 0x560468178190 [in] implicitly Param="rate" ParamIndex=2 | | `-ParagraphComment 0x560468178240 | | |-TextComment 0x5604681781f0 Text=" The rate to apply." | | `-TextComment 0x560468178210 Text=" " | |-ParamCommandComment 0x560468178260 [in] implicitly Param="source" ParamIndex=3 | | `-ParagraphComment 0x560468178310 | | |-TextComment 0x5604681782c0 Text=" The tick source (0 to use frames)" | | `-TextComment 0x5604681782e0 Text=" " | `-BlockCommandComment 0x560468178330 Name="return" | `-ParagraphComment 0x560468178390 | `-TextComment 0x560468178360 Text=" The filter entity." |-FunctionDecl 0x56046809dcd8 line:10176:6 ecs_set_tick_source 'void (ecs_world_t *, ecs_entity_t, ecs_entity_t)' | |-ParmVarDecl 0x56046809db48 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046809dbc0 col:18 system 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x56046809dc38 col:18 tick_source 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468178a50 | |-ParagraphComment 0x560468178560 | | |-TextComment 0x5604681784c0 Text=" Assign tick source to system." | | |-TextComment 0x5604681784e0 Text=" Systems can be their own tick source, which can be any of the tick sources" | | |-TextComment 0x560468178500 Text=" (one shot timers, interval times and rate filters). However, in some cases it" | | `-TextComment 0x560468178520 Text=" is must be guaranteed that different systems tick on the exact same frame." | |-ParagraphComment 0x560468178620 | | |-TextComment 0x560468178580 Text=" This cannot be guaranteed by giving two systems the same interval/rate filter" | | |-TextComment 0x5604681785a0 Text=" as it is possible that one system is (for example) disabled, which would" | | |-TextComment 0x5604681785c0 Text=" cause the systems to go out of sync. To provide these guarantees, systems" | | `-TextComment 0x5604681785e0 Text=" must use the same tick source, which is what this operation enables." | |-ParagraphComment 0x5604681786e0 | | |-TextComment 0x560468178640 Text=" When two systems share the same tick source, it is guaranteed that they tick" | | |-TextComment 0x560468178660 Text=" in the same frame. The provided tick source can be any entity that is a tick" | | |-TextComment 0x560468178680 Text=" source, including another system. If the provided entity is not a tick source" | | `-TextComment 0x5604681786a0 Text=" the system will not be ran." | |-ParagraphComment 0x560468178750 | | |-TextComment 0x560468178700 Text=" To disassociate a tick source from a system, use 0 for the tick_source " | | `-TextComment 0x560468178720 Text=" parameter." | |-ParagraphComment 0x5604681787a0 | | `-TextComment 0x560468178770 Text=" " | |-ParamCommandComment 0x5604681787c0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468178870 | | |-TextComment 0x560468178820 Text=" The world." | | `-TextComment 0x560468178840 Text=" " | |-ParamCommandComment 0x560468178890 [in] implicitly Param="system" ParamIndex=1 | | `-ParagraphComment 0x560468178940 | | |-TextComment 0x5604681788f0 Text=" The system to associate with the timer." | | `-TextComment 0x560468178910 Text=" " | `-ParamCommandComment 0x560468178960 [in] implicitly Param="tick_source" ParamIndex=2 | `-ParagraphComment 0x5604681789f0 | `-TextComment 0x5604681789c0 Text=" The tick source to associate with the system." |-FunctionDecl 0x56046809de58 line:10187:6 FlecsTimerImport 'void (ecs_world_t *)' | |-ParmVarDecl 0x56046809ddc8 col:18 world 'ecs_world_t *' | `-FullComment 0x560468178b70 | `-ParagraphComment 0x560468178b40 | |-TextComment 0x560468178ac0 Text="/////////////////////////////////////////////////////////////////////////////" | |-TextComment 0x560468178ae0 Text="/ Module" | `-TextComment 0x560468178b00 Text="/////////////////////////////////////////////////////////////////////////////" |-RecordDecl 0x56046809df88 line:10275:16 struct ecs_pipeline_desc_t definition | |-FieldDecl 0x56046809e040 col:18 entity 'ecs_entity_t':'unsigned long' | `-FieldDecl 0x56046809e0a0 col:22 query 'ecs_query_desc_t':'struct ecs_query_desc_t' |-TypedefDecl 0x56046809e148 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:14 ecs_pipeline_init 'ecs_entity_t (ecs_world_t *, const ecs_pipeline_desc_t *)' | |-ParmVarDecl 0x56046809e1f0 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046809e2e8 col:32 desc 'const ecs_pipeline_desc_t *' | `-FullComment 0x560468178c40 | `-ParagraphComment 0x560468178c10 | `-TextComment 0x560468178be0 Text=" Create a custom pipeline." |-FunctionDecl 0x56046809e5f8 line:10298:6 ecs_set_pipeline 'void (ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x56046809e4e8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046809e560 col:18 pipeline 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468178f10 | |-ParagraphComment 0x560468178d00 | | |-TextComment 0x560468178cb0 Text=" Set a custom pipeline." | | `-TextComment 0x560468178cd0 Text=" This operation sets the pipeline to run when ecs_progress is invoked." | |-ParagraphComment 0x560468178d50 | | `-TextComment 0x560468178d20 Text=" " | |-ParamCommandComment 0x560468178d70 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468178e20 | | |-TextComment 0x560468178dd0 Text=" The world." | | `-TextComment 0x560468178df0 Text=" " | `-ParamCommandComment 0x560468178e40 [in] implicitly Param="pipeline" ParamIndex=1 | `-ParagraphComment 0x560468178ed0 | `-TextComment 0x560468178ea0 Text=" The pipeline to set." |-FunctionDecl 0x56046809e778 line:10309:14 ecs_get_pipeline 'ecs_entity_t (const ecs_world_t *)' | |-ParmVarDecl 0x56046809e6e8 col:24 world 'const ecs_world_t *' | `-FullComment 0x5604681791b0 | |-ParagraphComment 0x560468178fd0 | | |-TextComment 0x560468178f80 Text=" Get the current pipeline." | | `-TextComment 0x560468178fa0 Text=" This operation gets the current pipeline." | |-ParagraphComment 0x560468179020 | | `-TextComment 0x560468178ff0 Text=" " | |-ParamCommandComment 0x560468179040 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681790f0 | | |-TextComment 0x5604681790a0 Text=" The world." | | `-TextComment 0x5604681790c0 Text=" " | `-BlockCommandComment 0x560468179110 Name="return" | `-ParagraphComment 0x560468179170 | `-TextComment 0x560468179140 Text=" The current pipeline." |-FunctionDecl 0x56046809e9e8 line:10331:6 ecs_progress 'bool (ecs_world_t *, float)' | |-ParmVarDecl 0x56046809e858 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046809e8d8 col:17 delta_time 'float' | `-FullComment 0x5604681796f0 | |-ParagraphComment 0x5604681792a0 | | |-TextComment 0x560468179220 Text=" Progress a world." | | |-TextComment 0x560468179240 Text=" This operation progresses the world by running all systems that are both" | | `-TextComment 0x560468179260 Text=" enabled and periodic on their matching entities." | |-ParagraphComment 0x560468179360 | | |-TextComment 0x5604681792c0 Text=" An application can pass a delta_time into the function, which is the time" | | |-TextComment 0x5604681792e0 Text=" passed since the last frame. This value is passed to systems so they can" | | |-TextComment 0x560468179300 Text=" update entity values proportional to the elapsed time since their last" | | `-TextComment 0x560468179320 Text=" invocation." | |-ParagraphComment 0x560468179420 | | |-TextComment 0x560468179380 Text=" When an application passes 0 to delta_time, ecs_progress will automatically" | | |-TextComment 0x5604681793a0 Text=" measure the time passed since the last frame. If an application does not uses" | | |-TextComment 0x5604681793c0 Text=" time management, it should pass a non-zero value for delta_time (1.0 is" | | `-TextComment 0x5604681793e0 Text=" recommended). That way, no time will be wasted measuring the time." | |-ParagraphComment 0x560468179470 | | `-TextComment 0x560468179440 Text=" " | |-ParamCommandComment 0x560468179490 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468179540 | | |-TextComment 0x5604681794f0 Text=" The world to progress." | | `-TextComment 0x560468179510 Text=" " | |-ParamCommandComment 0x560468179560 [in] implicitly Param="delta_time" ParamIndex=1 | | `-ParagraphComment 0x560468179610 | | |-TextComment 0x5604681795c0 Text=" The time passed since the last frame." | | `-TextComment 0x5604681795e0 Text=" " | `-BlockCommandComment 0x560468179630 Name="return" | `-ParagraphComment 0x560468179690 | `-TextComment 0x560468179660 Text=" false if ecs_quit has been called, true otherwise." |-FunctionDecl 0x56046809ebf0 line:10342:6 ecs_set_time_scale 'void (ecs_world_t *, float)' | |-ParmVarDecl 0x56046809ead8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046809eb58 col:17 scale 'float' | `-FullComment 0x5604681799c0 | |-ParagraphComment 0x5604681797b0 | | |-TextComment 0x560468179760 Text=" Set time scale." | | `-TextComment 0x560468179780 Text=" Increase or decrease simulation speed by the provided multiplier." | |-ParagraphComment 0x560468179800 | | `-TextComment 0x5604681797d0 Text=" " | |-ParamCommandComment 0x560468179820 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681798d0 | | |-TextComment 0x560468179880 Text=" The world." | | `-TextComment 0x5604681798a0 Text=" " | `-ParamCommandComment 0x5604681798f0 [in] implicitly Param="scale" ParamIndex=1 | `-ParagraphComment 0x560468179980 | `-TextComment 0x560468179950 Text=" The scale to apply (default = 1)." |-FunctionDecl 0x56046809ed68 line:10352:6 ecs_reset_clock 'void (ecs_world_t *)' | |-ParmVarDecl 0x56046809ecd8 col:18 world 'ecs_world_t *' | `-FullComment 0x560468179bc0 | |-ParagraphComment 0x560468179a80 | | |-TextComment 0x560468179a30 Text=" Reset world clock." | | `-TextComment 0x560468179a50 Text=" Reset the clock that keeps track of the total time passed in the simulation." | |-ParagraphComment 0x560468179ad0 | | `-TextComment 0x560468179aa0 Text=" " | `-ParamCommandComment 0x560468179af0 [in] implicitly Param="world" ParamIndex=0 | `-ParagraphComment 0x560468179b80 | `-TextComment 0x560468179b50 Text=" The world." |-FunctionDecl 0x56046809f068 line:10374:6 ecs_run_pipeline 'void (ecs_world_t *, ecs_entity_t, float)' | |-ParmVarDecl 0x56046809ee48 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x56046809eec0 col:18 pipeline 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x56046809ef40 col:17 delta_time 'float' | `-FullComment 0x56046817a080 | |-ParagraphComment 0x560468179cd0 | | |-TextComment 0x560468179c30 Text=" Run pipeline." | | |-TextComment 0x560468179c50 Text=" This will run all systems in the provided pipeline. This operation may be" | | |-TextComment 0x560468179c70 Text=" invoked from multiple threads, and only when staging is disabled, as the" | | `-TextComment 0x560468179c90 Text=" pipeline manages staging and, if necessary, synchronization between threads." | |-ParagraphComment 0x560468179d40 | | |-TextComment 0x560468179cf0 Text=" If 0 is provided for the pipeline id, the default pipeline will be ran (this" | | `-TextComment 0x560468179d10 Text=" is either the builtin pipeline or the pipeline set with set_pipeline()). " | |-ParagraphComment 0x560468179de0 | | |-TextComment 0x560468179d60 Text=" When using progress() this operation will be invoked automatically for the" | | |-TextComment 0x560468179d80 Text=" default pipeline (either the builtin pipeline or the pipeline set with " | | `-TextComment 0x560468179da0 Text=" set_pipeline()). An application may run additional pipelines." | |-ParagraphComment 0x560468179e50 | | |-TextComment 0x560468179e00 Text=" Note: calling this function from an application currently only works in" | | `-TextComment 0x560468179e20 Text=" single threaded applications with a single stage." | |-ParagraphComment 0x560468179ea0 | | `-TextComment 0x560468179e70 Text=" " | |-ParamCommandComment 0x560468179ec0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468179f70 | | |-TextComment 0x560468179f20 Text=" The world." | | `-TextComment 0x560468179f40 Text=" " | `-ParamCommandComment 0x560468179f90 [in] implicitly Param="pipeline" ParamIndex=1 | `-ParagraphComment 0x56046817a020 | `-TextComment 0x560468179ff0 Text=" The pipeline to run." |-FunctionDecl 0x5604680a1968 line:10390:6 ecs_set_threads 'void (ecs_world_t *, int32_t)' | |-ParmVarDecl 0x56046809f188 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680a18d0 col:13 threads 'int32_t':'int' | `-FullComment 0x56046817a1f0 | `-ParagraphComment 0x56046817a1c0 | |-TextComment 0x56046817a0f0 Text=" Set number of worker threads." | |-TextComment 0x56046817a110 Text=" Setting this value to a value higher than 1 will start as many threads and" | |-TextComment 0x56046817a130 Text=" will cause systems to evenly distribute matched entities across threads. The" | |-TextComment 0x56046817a150 Text=" operation may be called multiple times to reconfigure the number of threads" | `-TextComment 0x56046817a170 Text=" used, but never while running a system / pipeline. " |-FunctionDecl 0x5604680a1ae8 line:10399:6 FlecsPipelineImport 'void (ecs_world_t *)' | |-ParmVarDecl 0x5604680a1a58 col:18 world 'ecs_world_t *' | `-FullComment 0x56046817a310 | `-ParagraphComment 0x56046817a2e0 | |-TextComment 0x56046817a260 Text="/////////////////////////////////////////////////////////////////////////////" | |-TextComment 0x56046817a280 Text="/ Module" | `-TextComment 0x56046817a2a0 Text="/////////////////////////////////////////////////////////////////////////////" |-RecordDecl 0x5604680a1c48 line:10448:16 struct EcsTickSource definition | |-FullComment 0x56046817a400 | | `-ParagraphComment 0x56046817a3b0 | | `-TextComment 0x56046817a380 Text=" Component used to provide a tick source to systems " | |-FieldDecl 0x5604680a1d00 col:10 tick 'bool' | | `-FullComment 0x56046817a4d0 | | `-ParagraphComment 0x56046817a4a0 | | `-TextComment 0x56046817a470 Text=" True if providing tick " | `-FieldDecl 0x5604680a1d90 col:17 time_elapsed 'float' | `-FullComment 0x56046817a5a0 | `-ParagraphComment 0x56046817a570 | `-TextComment 0x56046817a540 Text=" Time elapsed since last tick " |-TypedefDecl 0x5604680a1e68 col:3 EcsTickSource 'struct EcsTickSource':'struct EcsTickSource' | |-ElaboratedType 0x5604680a1e10 'struct EcsTickSource' sugar | | `-RecordType 0x5604680a1cd0 'struct EcsTickSource' | | `-Record 0x5604680a1c48 'EcsTickSource' | `-FullComment 0x56046817a670 | `-ParagraphComment 0x56046817a640 | `-TextComment 0x56046817a610 Text=" Component used to provide a tick source to systems " |-RecordDecl 0x5604680a1f00 line:10454:16 struct ecs_system_desc_t definition | |-FullComment 0x56046817a740 | | `-ParagraphComment 0x56046817a710 | | `-TextComment 0x56046817a6e0 Text=" Use with ecs_system_init " | |-FieldDecl 0x5604680a1fb0 col:13 _canary 'int32_t':'int' | |-FieldDecl 0x5604680a2038 col:18 entity 'ecs_entity_t':'unsigned long' | | `-FullComment 0x56046817a810 | | `-ParagraphComment 0x56046817a7e0 | | `-TextComment 0x56046817a7b0 Text=" Existing entity to associate with system (optional) " | |-FieldDecl 0x5604680a20c8 col:22 query 'ecs_query_desc_t':'struct ecs_query_desc_t' | | `-FullComment 0x56046817a8e0 | | `-ParagraphComment 0x56046817a8b0 | | `-TextComment 0x56046817a880 Text=" System query parameters " | |-FieldDecl 0x5604680a2158 col:22 run 'ecs_run_action_t':'void (*)(ecs_iter_t *)' | | `-FullComment 0x56046817ab70 | | |-ParagraphComment 0x56046817a9d0 | | | |-TextComment 0x56046817a950 Text=" Callback that is invoked when a system is ran. " | | | |-TextComment 0x56046817a970 Text=" When left to NULL, the default system runner is used, which calls the " | | | `-TextComment 0x56046817a990 Text=" "callback" action for each result returned from the system's query. " | | |-ParagraphComment 0x56046817aac0 | | | |-TextComment 0x56046817a9f0 Text=" It should not be assumed that the input iterator can always be iterated" | | | |-TextComment 0x56046817aa10 Text=" with ecs_query_next. When a system is multithreaded and/or paged, the" | | | |-TextComment 0x56046817aa30 Text=" iterator can be either a worker or paged iterator. Future use cases may" | | | |-TextComment 0x56046817aa50 Text=" introduce additional inputs for a system, such as rules and filters. The" | | | `-TextComment 0x56046817aa70 Text=" correct function to use for iteration is ecs_iter_next." | | `-ParagraphComment 0x56046817ab30 | | |-TextComment 0x56046817aae0 Text=" An implementation can test whether the iterator is a query iterator by" | | `-TextComment 0x56046817ab00 Text=" testing whether the it->next value is equal to ecs_query_next. " | |-FieldDecl 0x5604680a21e8 col:23 callback 'ecs_iter_action_t':'void (*)(ecs_iter_t *)' | | `-FullComment 0x56046817ac90 | | `-ParagraphComment 0x56046817ac60 | | |-TextComment 0x56046817abe0 Text=" Callback that is ran for each result returned by the system's query. This" | | |-TextComment 0x56046817ac00 Text=" means that this callback can be invoked multiple times per system per" | | `-TextComment 0x56046817ac20 Text=" frame, typically once for each matching table. " | |-FieldDecl 0x5604680a2280 col:11 ctx 'void *' | | `-FullComment 0x56046817ad60 | | `-ParagraphComment 0x56046817ad30 | | `-TextComment 0x56046817ad00 Text=" Context to be passed to callback (as ecs_iter_t::param) " | |-FieldDecl 0x5604680a2310 col:11 binding_ctx 'void *' | | `-FullComment 0x56046817ae30 | | `-ParagraphComment 0x56046817ae00 | | `-TextComment 0x56046817add0 Text=" Binding context, for when system is implemented in other language " | |-FieldDecl 0x5604680a2398 col:20 ctx_free 'ecs_ctx_free_t':'void (*)(void *)' | | `-FullComment 0x56046817af50 | | `-ParagraphComment 0x56046817af20 | | |-TextComment 0x56046817aea0 Text=" Functions that are invoked during system cleanup to free context data." | | |-TextComment 0x56046817aec0 Text=" When set, functions are called unconditionally, even when the ctx" | | `-TextComment 0x56046817aee0 Text=" pointers are NULL. " | |-FieldDecl 0x5604680a23f8 col:20 binding_ctx_free 'ecs_ctx_free_t':'void (*)(void *)' | |-FieldDecl 0x5604680a2490 col:17 interval 'float' | | `-FullComment 0x56046817b020 | | `-ParagraphComment 0x56046817aff0 | | `-TextComment 0x56046817afc0 Text=" Interval in seconds at which the system should run " | |-FieldDecl 0x5604680a2518 col:13 rate 'int32_t':'int' | | `-FullComment 0x56046817b0f0 | | `-ParagraphComment 0x56046817b0c0 | | `-TextComment 0x56046817b090 Text=" Rate at which the system should run " | |-FieldDecl 0x5604680a25a8 col:18 tick_source 'ecs_entity_t':'unsigned long' | | `-FullComment 0x56046817b1c0 | | `-ParagraphComment 0x56046817b190 | | `-TextComment 0x56046817b160 Text=" External tick soutce that determines when system ticks " | |-FieldDecl 0x5604680a2638 col:10 multi_threaded 'bool' | | `-FullComment 0x56046817b290 | | `-ParagraphComment 0x56046817b260 | | `-TextComment 0x56046817b230 Text=" If true, system will be ran on multiple threads " | `-FieldDecl 0x5604680a26c8 col:10 no_readonly 'bool' | `-FullComment 0x56046817b380 | `-ParagraphComment 0x56046817b350 | |-TextComment 0x56046817b300 Text=" If true, system will have access to actuall world. Cannot be true at the" | `-TextComment 0x56046817b320 Text=" same time as multi_threaded. " |-TypedefDecl 0x5604680a2778 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 | `-ParagraphComment 0x56046817b420 | `-TextComment 0x56046817b3f0 Text=" Use with ecs_system_init " |-FunctionDecl 0x5604680a2a28 line:10513:14 ecs_system_init 'ecs_entity_t (ecs_world_t *, const ecs_system_desc_t *)' | |-ParmVarDecl 0x5604680a2820 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680a2918 col:30 desc 'const ecs_system_desc_t *' | `-FullComment 0x56046817b520 | `-ParagraphComment 0x56046817b4f0 | `-TextComment 0x56046817b4c0 Text=" Create a system " |-FunctionDecl 0x5604680a2dd8 line:10572:14 ecs_run 'ecs_entity_t (ecs_world_t *, ecs_entity_t, float, void *)' | |-ParmVarDecl 0x5604680a2b18 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680a2b90 col:18 system 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680a2c10 col:17 delta_time 'float' | |-ParmVarDecl 0x5604680a2c90 col:11 param 'void *' | `-FullComment 0x56046817bd20 | |-ParagraphComment 0x56046817b630 | | |-TextComment 0x56046817b590 Text=" Run a specific system manually." | | |-TextComment 0x56046817b5b0 Text=" This operation runs a single system manually. It is an efficient way to" | | |-TextComment 0x56046817b5d0 Text=" invoke logic on a set of entities, as manual systems are only matched to" | | `-TextComment 0x56046817b5f0 Text=" tables at creation time or after creation time, when a new table is created." | |-ParagraphComment 0x56046817b6f0 | | |-TextComment 0x56046817b650 Text=" Manual systems are useful to evaluate lists of prematched entities at" | | |-TextComment 0x56046817b670 Text=" application defined times. Because none of the matching logic is evaluated" | | |-TextComment 0x56046817b690 Text=" before the system is invoked, manual systems are much more efficient than" | | `-TextComment 0x56046817b6b0 Text=" manually obtaining a list of entities and retrieving their components." | |-ParagraphComment 0x56046817b790 | | |-TextComment 0x56046817b710 Text=" An application may pass custom data to a system through the param parameter." | | |-TextComment 0x56046817b730 Text=" This data can be accessed by the system through the param member in the" | | `-TextComment 0x56046817b750 Text=" ecs_iter_t value that is passed to the system callback." | |-ParagraphComment 0x56046817b8a0 | | |-TextComment 0x56046817b7b0 Text=" Any system may interrupt execution by setting the interrupted_by member in" | | |-TextComment 0x56046817b7d0 Text=" the ecs_iter_t value. This is particularly useful for manual systems, where" | | |-TextComment 0x56046817b7f0 Text=" the value of interrupted_by is returned by this operation. This, in" | | |-TextComment 0x56046817b810 Text=" cominbation with the param argument lets applications use manual systems" | | |-TextComment 0x56046817b830 Text=" to lookup entities: once the entity has been found its handle is passed to" | | `-TextComment 0x56046817b850 Text=" interrupted_by, which is then subsequently returned." | |-ParagraphComment 0x56046817b8f0 | | `-TextComment 0x56046817b8c0 Text=" " | |-ParamCommandComment 0x56046817b910 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046817b9c0 | | |-TextComment 0x56046817b970 Text=" The world." | | `-TextComment 0x56046817b990 Text=" " | |-ParamCommandComment 0x56046817b9e0 [in] implicitly Param="system" ParamIndex=1 | | `-ParagraphComment 0x56046817ba90 | | |-TextComment 0x56046817ba40 Text=" The system to run." | | `-TextComment 0x56046817ba60 Text=" " | |-ParamCommandComment 0x56046817bab0 [in] implicitly Param="delta_time" ParamIndex=2 | | `-ParagraphComment 0x56046817bb60 | | |-TextComment 0x56046817bb10 Text=" The time passed since the last system invocation." | | `-TextComment 0x56046817bb30 Text=" " | |-ParamCommandComment 0x56046817bb80 [in] implicitly Param="param" ParamIndex=3 | | `-ParagraphComment 0x56046817bc30 | | |-TextComment 0x56046817bbe0 Text=" A user-defined parameter to pass to the system." | | `-TextComment 0x56046817bc00 Text=" " | `-BlockCommandComment 0x56046817bc50 Name="return" | `-ParagraphComment 0x56046817bcb0 | `-TextComment 0x56046817bc80 Text=" handle to last evaluated entity if system was interrupted." |-FunctionDecl 0x5604680a32b8 line:10589:14 ecs_run_worker 'ecs_entity_t (ecs_world_t *, ecs_entity_t, int32_t, int32_t, float, void *)' | |-ParmVarDecl 0x5604680a2ed8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680a2f50 col:18 system 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680a2fc8 col:13 stage_current 'int32_t':'int' | |-ParmVarDecl 0x5604680a3040 col:13 stage_count 'int32_t':'int' | |-ParmVarDecl 0x5604680a30c0 col:17 delta_time 'float' | |-ParmVarDecl 0x5604680a3140 col:11 param 'void *' | `-FullComment 0x56046817c410 | |-ParagraphComment 0x56046817bdc0 | | `-TextComment 0x56046817bd90 Text=" Same as ecs_run, but subdivides entities across number of provided stages." | |-ParagraphComment 0x56046817be10 | | `-TextComment 0x56046817bde0 Text=" " | |-ParamCommandComment 0x56046817be30 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046817bee0 | | |-TextComment 0x56046817be90 Text=" The world." | | `-TextComment 0x56046817beb0 Text=" " | |-ParamCommandComment 0x56046817bf00 [in] implicitly Param="system" ParamIndex=1 | | `-ParagraphComment 0x56046817bfb0 | | |-TextComment 0x56046817bf60 Text=" The system to run." | | `-TextComment 0x56046817bf80 Text=" " | |-ParamCommandComment 0x56046817bfd0 [in] implicitly Param="stage_current" ParamIndex=2 | | `-ParagraphComment 0x56046817c080 | | |-TextComment 0x56046817c030 Text=" The id of the current stage." | | `-TextComment 0x56046817c050 Text=" " | |-ParamCommandComment 0x56046817c0a0 [in] implicitly Param="stage_count" ParamIndex=3 | | `-ParagraphComment 0x56046817c150 | | |-TextComment 0x56046817c100 Text=" The total number of stages." | | `-TextComment 0x56046817c120 Text=" " | |-ParamCommandComment 0x56046817c170 [in] implicitly Param="delta_time" ParamIndex=4 | | `-ParagraphComment 0x56046817c220 | | |-TextComment 0x56046817c1d0 Text=" The time passed since the last system invocation." | | `-TextComment 0x56046817c1f0 Text=" " | |-ParamCommandComment 0x56046817c240 [in] implicitly Param="param" ParamIndex=5 | | `-ParagraphComment 0x56046817c2f0 | | |-TextComment 0x56046817c2a0 Text=" A user-defined parameter to pass to the system." | | `-TextComment 0x56046817c2c0 Text=" " | `-BlockCommandComment 0x56046817c310 Name="return" | `-ParagraphComment 0x56046817c370 | `-TextComment 0x56046817c340 Text=" handle to last evaluated entity if system was interrupted." |-FunctionDecl 0x5604680a37a8 line:10618:14 ecs_run_w_filter 'ecs_entity_t (ecs_world_t *, ecs_entity_t, float, int32_t, int32_t, void *)' | |-ParmVarDecl 0x5604680a33c8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680a3440 col:18 system 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680a34c0 col:17 delta_time 'float' | |-ParmVarDecl 0x5604680a3538 col:13 offset 'int32_t':'int' | |-ParmVarDecl 0x5604680a35b0 col:13 limit 'int32_t':'int' | |-ParmVarDecl 0x5604680a3630 col:11 param 'void *' | `-FullComment 0x56046817cb10 | |-ParagraphComment 0x56046817c500 | | |-TextComment 0x56046817c480 Text=" Run system with offset/limit and type filter." | | |-TextComment 0x56046817c4a0 Text=" This operation is the same as ecs_run, but filters the entities that will be" | | `-TextComment 0x56046817c4c0 Text=" iterated by the system." | |-ParagraphComment 0x56046817c5a0 | | |-TextComment 0x56046817c520 Text=" Entities can be filtered in two ways. Offset and limit control the range of" | | |-TextComment 0x56046817c540 Text=" entities that is iterated over. The range is applied to all entities matched" | | `-TextComment 0x56046817c560 Text=" with the system, thus may cover multiple archetypes." | |-ParagraphComment 0x56046817c690 | | |-TextComment 0x56046817c5c0 Text=" The type filter controls which entity types the system will evaluate. Only" | | |-TextComment 0x56046817c5e0 Text=" types that contain all components in the type filter will be iterated over. A" | | |-TextComment 0x56046817c600 Text=" type filter is only evaluated once per table, which makes filtering cheap if" | | |-TextComment 0x56046817c620 Text=" the number of entities is large and the number of tables is small, but not as" | | `-TextComment 0x56046817c640 Text=" cheap as filtering in the system signature." | |-ParagraphComment 0x56046817c6e0 | | `-TextComment 0x56046817c6b0 Text=" " | |-ParamCommandComment 0x56046817c700 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046817c7b0 | | |-TextComment 0x56046817c760 Text=" The world." | | `-TextComment 0x56046817c780 Text=" " | |-ParamCommandComment 0x56046817c7d0 [in] implicitly Param="system" ParamIndex=1 | | `-ParagraphComment 0x56046817c880 | | |-TextComment 0x56046817c830 Text=" The system to invoke." | | `-TextComment 0x56046817c850 Text=" " | |-ParamCommandComment 0x56046817c8a0 [in] implicitly Param="delta_time" ParamIndex=2 | | `-ParagraphComment 0x56046817c950 | | |-TextComment 0x56046817c900 Text=" The time passed since the last system invocation." | | `-TextComment 0x56046817c920 Text=" " | |-ParamCommandComment 0x56046817c970 [in] implicitly Param="param" ParamIndex=5 | | `-ParagraphComment 0x56046817ca20 | | |-TextComment 0x56046817c9d0 Text=" A user-defined parameter to pass to the system." | | `-TextComment 0x56046817c9f0 Text=" " | `-BlockCommandComment 0x56046817ca40 Name="return" | `-ParagraphComment 0x56046817caa0 | `-TextComment 0x56046817ca70 Text=" handle to last evaluated entity if system was interrupted." |-FunctionDecl 0x5604680a6678 line:10636:14 ecs_system_get_query 'ecs_query_t *(const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x5604680a64f0 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680a6568 col:18 system 'ecs_entity_t':'unsigned long' | `-FullComment 0x56046817cee0 | |-ParagraphComment 0x56046817cc20 | | |-TextComment 0x56046817cb80 Text=" Get the query object for a system." | | |-TextComment 0x56046817cba0 Text=" Systems use queries under the hood. This enables an application to get access" | | |-TextComment 0x56046817cbc0 Text=" to the underlying query object of a system. This can be useful when, for " | | `-TextComment 0x56046817cbe0 Text=" example, an application needs to enable sorting for a system." | |-ParagraphComment 0x56046817cc70 | | `-TextComment 0x56046817cc40 Text=" " | |-ParamCommandComment 0x56046817cc90 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046817cd40 | | |-TextComment 0x56046817ccf0 Text=" The world." | | `-TextComment 0x56046817cd10 Text=" " | |-ParamCommandComment 0x56046817cd60 [in] implicitly Param="system" ParamIndex=1 | | `-ParagraphComment 0x56046817ce10 | | |-TextComment 0x56046817cdc0 Text=" The system from which to obtain the query." | | `-TextComment 0x56046817cde0 Text=" " | `-BlockCommandComment 0x56046817ce30 Name="return" | `-ParagraphComment 0x56046817ce90 | `-TextComment 0x56046817ce60 Text=" The query." |-FunctionDecl 0x5604680a6880 line:10649:7 ecs_get_system_ctx 'void *(const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x5604680a6768 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680a67e0 col:18 system 'ecs_entity_t':'unsigned long' | `-FullComment 0x56046817d290 | |-ParagraphComment 0x56046817cfd0 | | |-TextComment 0x56046817cf50 Text=" Get system context." | | |-TextComment 0x56046817cf70 Text=" This operation returns the context pointer set for the system. If" | | `-TextComment 0x56046817cf90 Text=" the provided entity is not a system, the function will return NULL." | |-ParagraphComment 0x56046817d020 | | `-TextComment 0x56046817cff0 Text=" " | |-ParamCommandComment 0x56046817d040 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046817d0f0 | | |-TextComment 0x56046817d0a0 Text=" The world." | | `-TextComment 0x56046817d0c0 Text=" " | |-ParamCommandComment 0x56046817d110 [in] implicitly Param="system" ParamIndex=1 | | `-ParagraphComment 0x56046817d1c0 | | |-TextComment 0x56046817d170 Text=" The system from which to obtain the context." | | `-TextComment 0x56046817d190 Text=" " | `-BlockCommandComment 0x56046817d1e0 Name="return" | `-ParagraphComment 0x56046817d240 | `-TextComment 0x56046817d210 Text=" The context." |-FunctionDecl 0x5604680a6a80 line:10663:7 ecs_get_system_binding_ctx 'void *(const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x5604680a6968 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680a69e0 col:18 system 'ecs_entity_t':'unsigned long' | `-FullComment 0x56046817d660 | |-ParagraphComment 0x56046817d3a0 | | |-TextComment 0x56046817d300 Text=" Get system binding context." | | |-TextComment 0x56046817d320 Text=" The binding context is a context typically used to attach any language " | | |-TextComment 0x56046817d340 Text=" binding specific data that is needed when invoking a callback that is " | | `-TextComment 0x56046817d360 Text=" implemented in another language." | |-ParagraphComment 0x56046817d3f0 | | `-TextComment 0x56046817d3c0 Text=" " | |-ParamCommandComment 0x56046817d410 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046817d4c0 | | |-TextComment 0x56046817d470 Text=" The world." | | `-TextComment 0x56046817d490 Text=" " | |-ParamCommandComment 0x56046817d4e0 [in] implicitly Param="system" ParamIndex=1 | | `-ParagraphComment 0x56046817d590 | | |-TextComment 0x56046817d540 Text=" The system from which to obtain the context." | | `-TextComment 0x56046817d560 Text=" " | `-BlockCommandComment 0x56046817d5b0 Name="return" | `-ParagraphComment 0x56046817d610 | `-TextComment 0x56046817d5e0 Text=" The context." |-FunctionDecl 0x5604680a6bd0 line:10668:6 FlecsSystemImport 'void (ecs_world_t *)' | `-ParmVarDecl 0x5604680a6b40 col:18 world 'ecs_world_t *' |-RecordDecl 0x5604680a6d38 line:10714:16 struct ecs_gauge_t definition | |-FullComment 0x56046817d730 | | `-ParagraphComment 0x56046817d700 | | `-TextComment 0x56046817d6d0 Text=" Simple value that indicates current state " | |-FieldDecl 0x5604680a6ea0 col:17 avg 'float[60]' | |-FieldDecl 0x5604680a6f78 col:17 min 'float[60]' | `-FieldDecl 0x5604680a7050 col:17 max 'float[60]' |-TypedefDecl 0x5604680a70f8 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 | `-ParagraphComment 0x56046817d7d0 | `-TextComment 0x56046817d7a0 Text=" Simple value that indicates current state " |-RecordDecl 0x5604680a7168 line:10721:16 struct ecs_counter_t definition | |-FieldDecl 0x5604680a7240 col:17 rate 'ecs_gauge_t':'struct ecs_gauge_t' | | `-FullComment 0x56046817d8d0 | | `-ParagraphComment 0x56046817d8a0 | | `-TextComment 0x56046817d870 Text=" Keep track of deltas too " | `-FieldDecl 0x5604680a7380 col:12 value 'double[60]' |-TypedefDecl 0x5604680a7498 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:15 union ecs_metric_t definition | |-FieldDecl 0x5604680a75c0 col:17 gauge 'ecs_gauge_t':'struct ecs_gauge_t' | `-FieldDecl 0x5604680a7640 col:19 counter 'ecs_counter_t':'struct ecs_counter_t' |-TypedefDecl 0x5604680a76e8 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:16 struct ecs_world_stats_t definition | |-FieldDecl 0x5604680a7810 col:13 first_ 'int64_t':'long' | |-RecordDecl 0x5604680a7860 line:10736:5 struct definition | | |-FieldDecl 0x5604680a7930 col:22 count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817d9a0 | | | `-ParagraphComment 0x56046817d970 | | | `-TextComment 0x56046817d940 Text=" Number of entities " | | `-FieldDecl 0x5604680a79b8 col:22 not_alive_count 'ecs_metric_t':'union ecs_metric_t' | | `-FullComment 0x56046817da70 | | `-ParagraphComment 0x56046817da40 | | `-TextComment 0x56046817da10 Text=" Number of not alive (recyclable) entity ids " | |-FieldDecl 0x5604680a7b58 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 struct definition | | |-FieldDecl 0x5604680a7c60 col:22 count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817db40 | | | `-ParagraphComment 0x56046817db10 | | | `-TextComment 0x56046817dae0 Text=" Number of ids (excluding wildcards) " | | |-FieldDecl 0x5604680a7ce8 col:22 tag_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817dc10 | | | `-ParagraphComment 0x56046817dbe0 | | | `-TextComment 0x56046817dbb0 Text=" Number of tag ids (ids without data) " | | |-FieldDecl 0x5604680a7d78 col:22 component_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817dce0 | | | `-ParagraphComment 0x56046817dcb0 | | | `-TextComment 0x56046817dc80 Text=" Number of components ids (ids with data) " | | |-FieldDecl 0x5604680a7e08 col:22 pair_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817ddb0 | | | `-ParagraphComment 0x56046817dd80 | | | `-TextComment 0x56046817dd50 Text=" Number of pair ids " | | |-FieldDecl 0x5604680a7e98 col:22 wildcard_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817de80 | | | `-ParagraphComment 0x56046817de50 | | | `-TextComment 0x56046817de20 Text=" Number of wildcard ids " | | |-FieldDecl 0x5604680a7f28 col:22 type_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817df50 | | | `-ParagraphComment 0x56046817df20 | | | `-TextComment 0x56046817def0 Text=" Number of registered types " | | |-FieldDecl 0x5604680a7fb8 col:22 create_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817e020 | | | `-ParagraphComment 0x56046817dff0 | | | `-TextComment 0x56046817dfc0 Text=" Number of times id has been created " | | `-FieldDecl 0x5604680a8048 col:22 delete_count 'ecs_metric_t':'union ecs_metric_t' | | `-FullComment 0x56046817e0f0 | | `-ParagraphComment 0x56046817e0c0 | | `-TextComment 0x56046817e090 Text=" Number of times id has been deleted " | |-FieldDecl 0x5604680a8128 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 struct definition | | |-FieldDecl 0x5604680a8230 col:22 count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817e1c0 | | | `-ParagraphComment 0x56046817e190 | | | `-TextComment 0x56046817e160 Text=" Number of tables " | | |-FieldDecl 0x5604680a82b8 col:22 empty_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817e290 | | | `-ParagraphComment 0x56046817e260 | | | `-TextComment 0x56046817e230 Text=" Number of empty tables " | | |-FieldDecl 0x5604680a8348 col:22 tag_only_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817e360 | | | `-ParagraphComment 0x56046817e330 | | | `-TextComment 0x56046817e300 Text=" Number of tables with only tags " | | |-FieldDecl 0x5604680a83d8 col:22 trivial_only_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817e450 | | | `-ParagraphComment 0x56046817e420 | | | `-TextComment 0x56046817e3d0 Text=" Number of tables with only trivial components " | | |-FieldDecl 0x5604680a8468 col:22 record_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817e520 | | | `-ParagraphComment 0x56046817e4f0 | | | `-TextComment 0x56046817e4c0 Text=" Number of table cache records " | | |-FieldDecl 0x5604680a8a90 col:22 storage_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817e5f0 | | | `-ParagraphComment 0x56046817e5c0 | | | `-TextComment 0x56046817e590 Text=" Number of table storages " | | |-FieldDecl 0x5604680a8b18 col:22 create_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817e6c0 | | | `-ParagraphComment 0x56046817e690 | | | `-TextComment 0x56046817e660 Text=" Number of times table has been created " | | `-FieldDecl 0x5604680a8ba8 col:22 delete_count 'ecs_metric_t':'union ecs_metric_t' | | `-FullComment 0x56046817e790 | | `-ParagraphComment 0x56046817e760 | | `-TextComment 0x56046817e730 Text=" Number of times table has been deleted " | |-FieldDecl 0x5604680a8c88 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 struct definition | | |-FieldDecl 0x5604680a8d90 col:22 query_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817e860 | | | `-ParagraphComment 0x56046817e830 | | | `-TextComment 0x56046817e800 Text=" Number of queries " | | |-FieldDecl 0x5604680a8e18 col:22 observer_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817e930 | | | `-ParagraphComment 0x56046817e900 | | | `-TextComment 0x56046817e8d0 Text=" Number of observers " | | `-FieldDecl 0x5604680a8ea8 col:22 system_count 'ecs_metric_t':'union ecs_metric_t' | | `-FullComment 0x56046817ea00 | | `-ParagraphComment 0x56046817e9d0 | | `-TextComment 0x56046817e9a0 Text=" Number of systems " | |-FieldDecl 0x5604680a8f88 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 struct definition | | |-FieldDecl 0x5604680a9090 col:22 add_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680a90f0 col:22 remove_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680a9150 col:22 delete_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680a91b0 col:22 clear_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680a9210 col:22 set_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680a9270 col:22 get_mut_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680a92d0 col:22 modified_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680a9330 col:22 other_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680a9390 col:22 discard_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680a93f0 col:22 batched_entity_count 'ecs_metric_t':'union ecs_metric_t' | | `-FieldDecl 0x5604680a9450 col:22 batched_count 'ecs_metric_t':'union ecs_metric_t' | |-FieldDecl 0x5604680a94f8 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 struct definition | | |-FieldDecl 0x5604680a9600 col:22 frame_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817ead0 | | | `-ParagraphComment 0x56046817eaa0 | | | `-TextComment 0x56046817ea70 Text=" Number of frames processed. " | | |-FieldDecl 0x5604680a9688 col:22 merge_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817eba0 | | | `-ParagraphComment 0x56046817eb70 | | | `-TextComment 0x56046817eb40 Text=" Number of merges executed. " | | |-FieldDecl 0x5604680a9718 col:22 rematch_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817ec70 | | | `-ParagraphComment 0x56046817ec40 | | | `-TextComment 0x56046817ec10 Text=" Number of query rematches " | | |-FieldDecl 0x5604680a97a8 col:22 pipeline_build_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817ed40 | | | `-ParagraphComment 0x56046817ed10 | | | `-TextComment 0x56046817ece0 Text=" Number of system pipeline rebuilds (occurs when an inactive system becomes active). " | | |-FieldDecl 0x5604680a9838 col:22 systems_ran 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817ee10 | | | `-ParagraphComment 0x56046817ede0 | | | `-TextComment 0x56046817edb0 Text=" Number of systems ran. " | | |-FieldDecl 0x5604680a98c8 col:22 observers_ran 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817eee0 | | | `-ParagraphComment 0x56046817eeb0 | | | `-TextComment 0x56046817ee80 Text=" Number of times an observer was invoked. " | | `-FieldDecl 0x5604680a9958 col:22 event_emit_count 'ecs_metric_t':'union ecs_metric_t' | | `-FullComment 0x56046817efb0 | | `-ParagraphComment 0x56046817ef80 | | `-TextComment 0x56046817ef50 Text=" Number of events emitted " | |-FieldDecl 0x5604680a9a38 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 struct definition | | |-FieldDecl 0x5604680a9b40 col:22 world_time_raw 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817f080 | | | `-ParagraphComment 0x56046817f050 | | | `-TextComment 0x56046817f020 Text=" Actual time passed since simulation start (first time progress() is called) " | | |-FieldDecl 0x5604680a9bc8 col:22 world_time 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817f150 | | | `-ParagraphComment 0x56046817f120 | | | `-TextComment 0x56046817f0f0 Text=" Simulation time passed since simulation start. Takes into account time scaling " | | |-FieldDecl 0x5604680a9c58 col:22 frame_time 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817f220 | | | `-ParagraphComment 0x56046817f1f0 | | | `-TextComment 0x56046817f1c0 Text=" Time spent processing a frame. Smaller than world_time_total when load is not 100% " | | |-FieldDecl 0x5604680a9ce8 col:22 system_time 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817f2f0 | | | `-ParagraphComment 0x56046817f2c0 | | | `-TextComment 0x56046817f290 Text=" Time spent on running systems. " | | |-FieldDecl 0x5604680a9d78 col:22 emit_time 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817f3c0 | | | `-ParagraphComment 0x56046817f390 | | | `-TextComment 0x56046817f360 Text=" Time spent on notifying observers. " | | |-FieldDecl 0x5604680a9e08 col:22 merge_time 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817f490 | | | `-ParagraphComment 0x56046817f460 | | | `-TextComment 0x56046817f430 Text=" Time spent on merging commands. " | | |-FieldDecl 0x5604680a9e98 col:22 rematch_time 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817f560 | | | `-ParagraphComment 0x56046817f530 | | | `-TextComment 0x56046817f500 Text=" Time spent on rematching. " | | |-FieldDecl 0x5604680a9f28 col:22 fps 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817f630 | | | `-ParagraphComment 0x56046817f600 | | | `-TextComment 0x56046817f5d0 Text=" Frames per second. " | | `-FieldDecl 0x5604680a9fb8 col:22 delta_time 'ecs_metric_t':'union ecs_metric_t' | | `-FullComment 0x56046817f700 | | `-ParagraphComment 0x56046817f6d0 | | `-TextComment 0x56046817f6a0 Text=" Delta_time. " | |-FieldDecl 0x5604680aa098 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 struct definition | | |-FieldDecl 0x5604680aa1a0 col:22 alloc_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817f7d0 | | | `-ParagraphComment 0x56046817f7a0 | | | `-TextComment 0x56046817f770 Text=" Allocs per frame " | | |-FieldDecl 0x5604680aa228 col:22 realloc_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817f8a0 | | | `-ParagraphComment 0x56046817f870 | | | `-TextComment 0x56046817f840 Text=" Reallocs per frame " | | |-FieldDecl 0x5604680aa2b8 col:22 free_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817f970 | | | `-ParagraphComment 0x56046817f940 | | | `-TextComment 0x56046817f910 Text=" Frees per frame " | | |-FieldDecl 0x5604680aa348 col:22 outstanding_alloc_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817fa90 | | | `-ParagraphComment 0x56046817fa60 | | | |-TextComment 0x56046817f9e0 Text=" Difference between allocs " | | | |-TextComment 0x56046817fa00 Text="&" | | | `-TextComment 0x56046817fa20 Text=" frees " | | |-FieldDecl 0x5604680aa3d8 col:22 block_alloc_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817fb60 | | | `-ParagraphComment 0x56046817fb30 | | | `-TextComment 0x56046817fb00 Text=" Block allocations per frame " | | |-FieldDecl 0x5604680aa468 col:22 block_free_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817fc30 | | | `-ParagraphComment 0x56046817fc00 | | | `-TextComment 0x56046817fbd0 Text=" Block frees per frame " | | |-FieldDecl 0x5604680aa4f8 col:22 block_outstanding_alloc_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817fd50 | | | `-ParagraphComment 0x56046817fd20 | | | |-TextComment 0x56046817fca0 Text=" Difference between allocs " | | | |-TextComment 0x56046817fcc0 Text="&" | | | `-TextComment 0x56046817fce0 Text=" frees " | | |-FieldDecl 0x5604680aa588 col:22 stack_alloc_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817fe20 | | | `-ParagraphComment 0x56046817fdf0 | | | `-TextComment 0x56046817fdc0 Text=" Page allocations per frame " | | |-FieldDecl 0x5604680aa618 col:22 stack_free_count 'ecs_metric_t':'union ecs_metric_t' | | | `-FullComment 0x56046817fef0 | | | `-ParagraphComment 0x56046817fec0 | | | `-TextComment 0x56046817fe90 Text=" Page frees per frame " | | `-FieldDecl 0x5604680aa6a8 col:22 stack_outstanding_alloc_count 'ecs_metric_t':'union ecs_metric_t' | | `-FullComment 0x560468180010 | | `-ParagraphComment 0x56046817ffe0 | | |-TextComment 0x56046817ff60 Text=" Difference between allocs " | | |-TextComment 0x56046817ff80 Text="&" | | `-TextComment 0x56046817ffa0 Text=" frees " | |-FieldDecl 0x5604680aa788 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 struct definition | | |-FieldDecl 0x5604680aa890 col:22 request_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680aa8f0 col:22 entity_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680aa950 col:22 entity_error_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680aa9b0 col:22 query_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680aaa10 col:22 query_error_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680ac2a0 col:22 query_name_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680ac300 col:22 query_name_error_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680ac360 col:22 query_name_from_cache_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680ac3c0 col:22 enable_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680ac420 col:22 enable_error_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680ac480 col:22 world_stats_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680ac4e0 col:22 pipeline_stats_count 'ecs_metric_t':'union ecs_metric_t' | | `-FieldDecl 0x5604680ac540 col:22 stats_error_count 'ecs_metric_t':'union ecs_metric_t' | |-FieldDecl 0x5604680ac5e8 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 struct definition | | |-FieldDecl 0x5604680ac6f0 col:22 request_received_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680ac750 col:22 request_invalid_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680ac7b0 col:22 request_handled_ok_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680ac810 col:22 request_handled_error_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680ac870 col:22 request_not_handled_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680ac8d0 col:22 request_preflight_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680ac930 col:22 send_ok_count 'ecs_metric_t':'union ecs_metric_t' | | |-FieldDecl 0x5604680ac990 col:22 send_error_count 'ecs_metric_t':'union ecs_metric_t' | | `-FieldDecl 0x5604680ac9f0 col:22 busy_count 'ecs_metric_t':'union ecs_metric_t' | |-FieldDecl 0x5604680aca98 col:7 http 'struct (unnamed struct at flecs.h:10844:5)':'struct ecs_world_stats_t::(unnamed at flecs.h:10844:5)' | |-FieldDecl 0x5604680acaf8 col:13 last_ 'int64_t':'long' | `-FieldDecl 0x5604680acb88 col:13 t 'int32_t':'int' | `-FullComment 0x5604681800e0 | `-ParagraphComment 0x5604681800b0 | `-TextComment 0x560468180080 Text=" Current position in ringbuffer " |-TypedefDecl 0x5604680acc38 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:16 struct ecs_query_stats_t definition | |-FieldDecl 0x5604680acd60 col:13 first_ 'int64_t':'long' | |-FieldDecl 0x5604680acdc0 col:18 matched_table_count 'ecs_metric_t':'union ecs_metric_t' | | `-FullComment 0x5604681801b0 | | `-ParagraphComment 0x560468180180 | | `-TextComment 0x560468180150 Text=" Matched non-empty tables " | |-FieldDecl 0x5604680ace48 col:18 matched_empty_table_count 'ecs_metric_t':'union ecs_metric_t' | | `-FullComment 0x560468180280 | | `-ParagraphComment 0x560468180250 | | `-TextComment 0x560468180220 Text=" Matched empty tables " | |-FieldDecl 0x5604680aced8 col:18 matched_entity_count 'ecs_metric_t':'union ecs_metric_t' | | `-FullComment 0x560468180350 | | `-ParagraphComment 0x560468180320 | | `-TextComment 0x5604681802f0 Text=" Number of matched entities " | |-FieldDecl 0x5604680acf68 col:13 last_ 'int64_t':'long' | `-FieldDecl 0x5604680acff8 col:13 t 'int32_t':'int' | `-FullComment 0x560468182440 | `-ParagraphComment 0x5604681803f0 | `-TextComment 0x5604681803c0 Text=" Current position in ringbuffer " |-TypedefDecl 0x5604680ad0a8 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:16 struct ecs_system_stats_t definition | |-FullComment 0x560468182510 | | `-ParagraphComment 0x5604681824e0 | | `-TextComment 0x5604681824b0 Text=" Statistics for a single system (use ecs_system_stats_get) " | |-FieldDecl 0x5604680ad1f0 col:13 first_ 'int64_t':'long' | |-FieldDecl 0x5604680ad250 col:18 time_spent 'ecs_metric_t':'union ecs_metric_t' | | `-FullComment 0x5604681825e0 | | `-ParagraphComment 0x5604681825b0 | | `-TextComment 0x560468182580 Text=" Time spent processing a system " | |-FieldDecl 0x5604680ad2d8 col:18 invoke_count 'ecs_metric_t':'union ecs_metric_t' | | `-FullComment 0x5604681826b0 | | `-ParagraphComment 0x560468182680 | | `-TextComment 0x560468182650 Text=" Number of times system is invoked " | |-FieldDecl 0x5604680ad368 col:18 active 'ecs_metric_t':'union ecs_metric_t' | | `-FullComment 0x560468182780 | | `-ParagraphComment 0x560468182750 | | `-TextComment 0x560468182720 Text=" Whether system is active (is matched with >0 entities) " | |-FieldDecl 0x5604680ad3f8 col:18 enabled 'ecs_metric_t':'union ecs_metric_t' | | `-FullComment 0x560468182850 | | `-ParagraphComment 0x560468182820 | | `-TextComment 0x5604681827f0 Text=" Whether system is enabled " | |-FieldDecl 0x5604680ad488 col:13 last_ 'int64_t':'long' | |-FieldDecl 0x5604680ad4e8 col:10 task 'bool' | | `-FullComment 0x560468182920 | | `-ParagraphComment 0x5604681828f0 | | `-TextComment 0x5604681828c0 Text=" Is system a task " | `-FieldDecl 0x5604680ad5a0 col:23 query 'ecs_query_stats_t':'struct ecs_query_stats_t' |-TypedefDecl 0x5604680ad648 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 | `-ParagraphComment 0x5604681829c0 | `-TextComment 0x560468182990 Text=" Statistics for a single system (use ecs_system_stats_get) " |-RecordDecl 0x5604680ad6e0 line:10890:16 struct ecs_pipeline_stats_t definition | |-FullComment 0x560468182ac0 | | `-ParagraphComment 0x560468182a90 | | `-TextComment 0x560468182a60 Text=" Statistics for all systems in a pipeline. " | |-FieldDecl 0x5604680ad7b8 col:19 systems 'ecs_vector_t *' | | `-FullComment 0x560468182bb0 | | `-ParagraphComment 0x560468182b80 | | |-TextComment 0x560468182b30 Text=" Vector with system ids of all systems in the pipeline. The systems are" | | `-TextComment 0x560468182b50 Text=" stored in the order they are executed. Merges are represented by a 0. " | |-FieldDecl 0x5604680ad848 col:15 system_stats 'ecs_map_t':'struct ecs_map_t' | | `-FullComment 0x560468182ca0 | | `-ParagraphComment 0x560468182c70 | | |-TextComment 0x560468182c20 Text=" Map with system statistics. For each system in the systems vector, an" | | `-TextComment 0x560468182c40 Text=" entry in the map exists of type ecs_system_stats_t. " | |-FieldDecl 0x5604680ad8d8 col:13 t 'int32_t':'int' | | `-FullComment 0x560468182d70 | | `-ParagraphComment 0x560468182d40 | | `-TextComment 0x560468182d10 Text=" Current position in ringbuffer " | |-FieldDecl 0x5604680ad938 col:13 system_count 'int32_t':'int' | | `-FullComment 0x560468182e40 | | `-ParagraphComment 0x560468182e10 | | `-TextComment 0x560468182de0 Text=" Number of systems in pipeline " | |-FieldDecl 0x5604680ad9c8 col:13 active_system_count 'int32_t':'int' | | `-FullComment 0x560468182f10 | | `-ParagraphComment 0x560468182ee0 | | `-TextComment 0x560468182eb0 Text=" Number of active systems in pipeline " | `-FieldDecl 0x5604680ada58 col:13 rebuild_count 'int32_t':'int' | `-FullComment 0x560468182fe0 | `-ParagraphComment 0x560468182fb0 | `-TextComment 0x560468182f80 Text=" Number of times pipeline has rebuilt " |-TypedefDecl 0x5604680adb38 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 | `-ParagraphComment 0x560468183080 | `-TextComment 0x560468183050 Text=" Statistics for all systems in a pipeline. " |-FunctionDecl 0x5604680adde8 line:10913:6 ecs_world_stats_get 'void (const ecs_world_t *, ecs_world_stats_t *)' | |-ParmVarDecl 0x5604680adbe0 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680adcd8 col:24 stats 'ecs_world_stats_t *' | `-FullComment 0x560468183360 | |-ParagraphComment 0x560468183150 | | `-TextComment 0x560468183120 Text=" Get world statistics." | |-ParagraphComment 0x5604681831a0 | | `-TextComment 0x560468183170 Text=" " | |-ParamCommandComment 0x5604681831c0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468183270 | | |-TextComment 0x560468183220 Text=" The world." | | `-TextComment 0x560468183240 Text=" " | `-ParamCommandComment 0x560468183290 [in] implicitly Param="stats" ParamIndex=1 | `-ParagraphComment 0x560468183320 | `-TextComment 0x5604681832f0 Text=" Out parameter for statistics." |-FunctionDecl 0x5604680ae0b8 line:10919:6 ecs_world_stats_reduce 'void (ecs_world_stats_t *, const ecs_world_stats_t *)' | |-ParmVarDecl 0x5604680aded8 col:24 dst 'ecs_world_stats_t *' | |-ParmVarDecl 0x5604680adfa8 col:30 src 'const ecs_world_stats_t *' | `-FullComment 0x560468183430 | `-ParagraphComment 0x560468183400 | `-TextComment 0x5604681833d0 Text=" Reduce source measurement window into single destination measurement. " |-FunctionDecl 0x5604680ae918 line:10925:6 ecs_world_stats_reduce_last 'void (ecs_world_stats_t *, const ecs_world_stats_t *, int32_t)' | |-ParmVarDecl 0x5604680ae1a8 col:24 stats 'ecs_world_stats_t *' | |-ParmVarDecl 0x5604680ae220 col:30 old 'const ecs_world_stats_t *' | |-ParmVarDecl 0x5604680ae7f0 col:13 count 'int32_t':'int' | `-FullComment 0x560468183500 | `-ParagraphComment 0x5604681834d0 | `-TextComment 0x5604681834a0 Text=" Reduce last measurement into previous measurement, restore old value. " |-FunctionDecl 0x5604680aeaf8 line:10932:6 ecs_world_stats_repeat_last 'void (ecs_world_stats_t *)' | |-ParmVarDecl 0x5604680aea08 col:24 stats 'ecs_world_stats_t *' | `-FullComment 0x5604681835d0 | `-ParagraphComment 0x5604681835a0 | `-TextComment 0x560468183570 Text=" Repeat last measurement. " |-FunctionDecl 0x5604680aece8 line:10937:6 ecs_world_stats_copy_last 'void (ecs_world_stats_t *, const ecs_world_stats_t *)' | |-ParmVarDecl 0x5604680aebd8 col:24 dst 'ecs_world_stats_t *' | |-ParmVarDecl 0x5604680aec50 col:30 src 'const ecs_world_stats_t *' | `-FullComment 0x5604681836a0 | `-ParagraphComment 0x560468183670 | `-TextComment 0x560468183640 Text=" Copy last measurement from source to destination. " |-FunctionDecl 0x5604680aef38 line:10942:6 ecs_world_stats_log 'void (const ecs_world_t *, const ecs_world_stats_t *)' | |-ParmVarDecl 0x5604680aeda8 col:24 world 'const ecs_world_t *' | `-ParmVarDecl 0x5604680aee20 col:30 stats 'const ecs_world_stats_t *' |-FunctionDecl 0x5604680af298 line:10954:6 ecs_query_stats_get 'void (const ecs_world_t *, const ecs_query_t *, ecs_query_stats_t *)' | |-ParmVarDecl 0x5604680af028 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680af0a0 col:24 query 'const ecs_query_t *' | |-ParmVarDecl 0x5604680af178 col:24 stats 'ecs_query_stats_t *' | `-FullComment 0x560468183a50 | |-ParagraphComment 0x560468183760 | | |-TextComment 0x560468183710 Text=" Get query statistics." | | `-TextComment 0x560468183730 Text=" Obtain statistics for the provided query." | |-ParagraphComment 0x5604681837b0 | | `-TextComment 0x560468183780 Text=" " | |-ParamCommandComment 0x5604681837d0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468183880 | | |-TextComment 0x560468183830 Text=" The world." | | `-TextComment 0x560468183850 Text=" " | |-ParamCommandComment 0x5604681838a0 [in] implicitly Param="query" ParamIndex=1 | | `-ParagraphComment 0x560468183950 | | |-TextComment 0x560468183900 Text=" The query." | | `-TextComment 0x560468183920 Text=" " | `-ParamCommandComment 0x560468183970 [in] implicitly Param="stats" ParamIndex=2 | `-ParagraphComment 0x560468183a00 | `-TextComment 0x5604681839d0 Text=" Out parameter for statistics." |-FunctionDecl 0x5604680af568 line:10961:6 ecs_query_stats_reduce 'void (ecs_query_stats_t *, const ecs_query_stats_t *)' | |-ParmVarDecl 0x5604680af388 col:24 dst 'ecs_query_stats_t *' | |-ParmVarDecl 0x5604680af458 col:30 src 'const ecs_query_stats_t *' | `-FullComment 0x560468183b20 | `-ParagraphComment 0x560468183af0 | `-TextComment 0x560468183ac0 Text=" Reduce source measurement window into single destination measurement. " |-FunctionDecl 0x5604680af868 line:10967:6 ecs_query_stats_reduce_last 'void (ecs_query_stats_t *, const ecs_query_stats_t *, int32_t)' | |-ParmVarDecl 0x5604680af658 col:24 stats 'ecs_query_stats_t *' | |-ParmVarDecl 0x5604680af6d0 col:30 old 'const ecs_query_stats_t *' | |-ParmVarDecl 0x5604680af748 col:13 count 'int32_t':'int' | `-FullComment 0x560468183bf0 | `-ParagraphComment 0x560468183bc0 | `-TextComment 0x560468183b90 Text=" Reduce last measurement into previous measurement, restore old value. " |-FunctionDecl 0x5604680afa48 line:10974:6 ecs_query_stats_repeat_last 'void (ecs_query_stats_t *)' | |-ParmVarDecl 0x5604680af958 col:24 stats 'ecs_query_stats_t *' | `-FullComment 0x560468183cc0 | `-ParagraphComment 0x560468183c90 | `-TextComment 0x560468183c60 Text=" Repeat last measurement. " |-FunctionDecl 0x5604680afc38 line:10979:6 ecs_query_stats_copy_last 'void (ecs_query_stats_t *, const ecs_query_stats_t *)' | |-ParmVarDecl 0x5604680afb28 col:24 dst 'ecs_query_stats_t *' | |-ParmVarDecl 0x5604680afba0 col:30 src 'const ecs_query_stats_t *' | `-FullComment 0x560468183d90 | `-ParagraphComment 0x560468183d60 | `-TextComment 0x560468183d30 Text=" Copy last measurement from source to destination. " |-FunctionDecl 0x5604680affb8 line:10993:6 ecs_system_stats_get 'bool (const ecs_world_t *, ecs_entity_t, ecs_system_stats_t *)' | |-ParmVarDecl 0x5604680afd28 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680afda0 col:18 system 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680afe98 col:25 stats 'ecs_system_stats_t *' | `-FullComment 0x5604681841e0 | |-ParagraphComment 0x560468183e50 | | |-TextComment 0x560468183e00 Text=" Get system statistics." | | `-TextComment 0x560468183e20 Text=" Obtain statistics for the provided system." | |-ParagraphComment 0x560468183ea0 | | `-TextComment 0x560468183e70 Text=" " | |-ParamCommandComment 0x560468183ec0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468183f70 | | |-TextComment 0x560468183f20 Text=" The world." | | `-TextComment 0x560468183f40 Text=" " | |-ParamCommandComment 0x560468183f90 [in] implicitly Param="system" ParamIndex=1 | | `-ParagraphComment 0x560468184040 | | |-TextComment 0x560468183ff0 Text=" The system." | | `-TextComment 0x560468184010 Text=" " | |-ParamCommandComment 0x560468184060 [in] implicitly Param="stats" ParamIndex=2 | | `-ParagraphComment 0x560468184110 | | |-TextComment 0x5604681840c0 Text=" Out parameter for statistics." | | `-TextComment 0x5604681840e0 Text=" " | `-BlockCommandComment 0x560468184130 Name="return" | `-ParagraphComment 0x560468184190 | `-TextComment 0x560468184160 Text=" true if success, false if not a system." |-FunctionDecl 0x5604680b0288 line:11000:6 ecs_system_stats_reduce 'void (ecs_system_stats_t *, const ecs_system_stats_t *)' | |-ParmVarDecl 0x5604680b00a8 col:25 dst 'ecs_system_stats_t *' | |-ParmVarDecl 0x5604680b0178 col:31 src 'const ecs_system_stats_t *' | `-FullComment 0x5604681842b0 | `-ParagraphComment 0x560468184280 | `-TextComment 0x560468184250 Text=" Reduce source measurement window into single destination measurement " |-FunctionDecl 0x5604680b0588 line:11006:6 ecs_system_stats_reduce_last 'void (ecs_system_stats_t *, const ecs_system_stats_t *, int32_t)' | |-ParmVarDecl 0x5604680b0378 col:25 stats 'ecs_system_stats_t *' | |-ParmVarDecl 0x5604680b03f0 col:31 old 'const ecs_system_stats_t *' | |-ParmVarDecl 0x5604680b0468 col:13 count 'int32_t':'int' | `-FullComment 0x560468184380 | `-ParagraphComment 0x560468184350 | `-TextComment 0x560468184320 Text=" Reduce last measurement into previous measurement, restore old value. " |-FunctionDecl 0x5604680b0ac0 line:11013:6 ecs_system_stats_repeat_last 'void (ecs_system_stats_t *)' | |-ParmVarDecl 0x5604680b0678 col:25 stats 'ecs_system_stats_t *' | `-FullComment 0x560468184460 | `-ParagraphComment 0x560468184420 | `-TextComment 0x5604681843f0 Text=" Repeat last measurement. " |-FunctionDecl 0x5604680b0cb8 line:11018:6 ecs_system_stats_copy_last 'void (ecs_system_stats_t *, const ecs_system_stats_t *)' | |-ParmVarDecl 0x5604680b0ba8 col:25 dst 'ecs_system_stats_t *' | |-ParmVarDecl 0x5604680b0c20 col:31 src 'const ecs_system_stats_t *' | `-FullComment 0x560468184530 | `-ParagraphComment 0x560468184500 | `-TextComment 0x5604681844d0 Text=" Copy last measurement from source to destination. " |-FunctionDecl 0x5604680b1038 line:11033:6 ecs_pipeline_stats_get 'bool (ecs_world_t *, ecs_entity_t, ecs_pipeline_stats_t *)' | |-ParmVarDecl 0x5604680b0da8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680b0e20 col:18 pipeline 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680b0f18 col:27 stats 'ecs_pipeline_stats_t *' | `-FullComment 0x560468184980 | |-ParagraphComment 0x5604681845f0 | | |-TextComment 0x5604681845a0 Text=" Get pipeline statistics." | | `-TextComment 0x5604681845c0 Text=" Obtain statistics for the provided pipeline." | |-ParagraphComment 0x560468184640 | | `-TextComment 0x560468184610 Text=" " | |-ParamCommandComment 0x560468184660 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468184710 | | |-TextComment 0x5604681846c0 Text=" The world." | | `-TextComment 0x5604681846e0 Text=" " | |-ParamCommandComment 0x560468184730 [in] implicitly Param="pipeline" ParamIndex=1 | | `-ParagraphComment 0x5604681847e0 | | |-TextComment 0x560468184790 Text=" The pipeline." | | `-TextComment 0x5604681847b0 Text=" " | |-ParamCommandComment 0x560468184800 [in] implicitly Param="stats" ParamIndex=2 | | `-ParagraphComment 0x5604681848b0 | | |-TextComment 0x560468184860 Text=" Out parameter for statistics." | | `-TextComment 0x560468184880 Text=" " | `-BlockCommandComment 0x5604681848d0 Name="return" | `-ParagraphComment 0x560468184930 | `-TextComment 0x560468184900 Text=" true if success, false if not a pipeline." |-FunctionDecl 0x5604680b1218 line:11043:6 ecs_pipeline_stats_fini 'void (ecs_pipeline_stats_t *)' | |-ParmVarDecl 0x5604680b1128 col:27 stats 'ecs_pipeline_stats_t *' | `-FullComment 0x560468184b60 | |-ParagraphComment 0x560468184a20 | | `-TextComment 0x5604681849f0 Text=" Free pipeline stats." | |-ParagraphComment 0x560468184a70 | | `-TextComment 0x560468184a40 Text=" " | `-ParamCommandComment 0x560468184a90 [in] implicitly Param="stats" ParamIndex=0 | `-ParagraphComment 0x560468184b20 | `-TextComment 0x560468184af0 Text=" The stats to free." |-FunctionDecl 0x5604680b14d8 line:11048:6 ecs_pipeline_stats_reduce 'void (ecs_pipeline_stats_t *, const ecs_pipeline_stats_t *)' | |-ParmVarDecl 0x5604680b12f8 col:27 dst 'ecs_pipeline_stats_t *' | |-ParmVarDecl 0x5604680b13c8 col:33 src 'const ecs_pipeline_stats_t *' | `-FullComment 0x560468184c30 | `-ParagraphComment 0x560468184c00 | `-TextComment 0x560468184bd0 Text=" Reduce source measurement window into single destination measurement " |-FunctionDecl 0x5604680b17d8 line:11054:6 ecs_pipeline_stats_reduce_last 'void (ecs_pipeline_stats_t *, const ecs_pipeline_stats_t *, int32_t)' | |-ParmVarDecl 0x5604680b15c8 col:27 stats 'ecs_pipeline_stats_t *' | |-ParmVarDecl 0x5604680b1640 col:33 old 'const ecs_pipeline_stats_t *' | |-ParmVarDecl 0x5604680b16b8 col:13 count 'int32_t':'int' | `-FullComment 0x560468184d00 | `-ParagraphComment 0x560468184cd0 | `-TextComment 0x560468184ca0 Text=" Reduce last measurement into previous measurement, restore old value. " |-FunctionDecl 0x5604680b1958 line:11061:6 ecs_pipeline_stats_repeat_last 'void (ecs_pipeline_stats_t *)' | |-ParmVarDecl 0x5604680b18c8 col:27 stats 'ecs_pipeline_stats_t *' | `-FullComment 0x560468184dd0 | `-ParagraphComment 0x560468184da0 | `-TextComment 0x560468184d70 Text=" Repeat last measurement. " |-FunctionDecl 0x5604680b1b48 line:11072:6 ecs_pipeline_stats_copy_last 'void (ecs_pipeline_stats_t *, const ecs_pipeline_stats_t *)' | |-ParmVarDecl 0x5604680b1a38 col:27 dst 'ecs_pipeline_stats_t *' | |-ParmVarDecl 0x5604680b1ab0 col:33 src 'const ecs_pipeline_stats_t *' | `-FullComment 0x5604681850d0 | |-ParagraphComment 0x560468184ec0 | | |-TextComment 0x560468184e40 Text=" Copy last measurement to destination." | | |-TextComment 0x560468184e60 Text=" This operation copies the last measurement into the destination. It does not" | | `-TextComment 0x560468184e80 Text=" modify the cursor." | |-ParagraphComment 0x560468184f10 | | `-TextComment 0x560468184ee0 Text=" " | |-ParamCommandComment 0x560468184f30 [in] implicitly Param="dst" ParamIndex=0 | | `-ParagraphComment 0x560468184fe0 | | |-TextComment 0x560468184f90 Text=" The metrics." | | `-TextComment 0x560468184fb0 Text=" " | `-ParamCommandComment 0x560468185000 [in] implicitly Param="src" ParamIndex=1 | `-ParagraphComment 0x560468185090 | `-TextComment 0x560468185060 Text=" The metrics to copy." |-FunctionDecl 0x5604680b1f98 line:11080:6 ecs_metric_reduce 'void (ecs_metric_t *, const ecs_metric_t *, int32_t, int32_t)' | |-ParmVarDecl 0x5604680b1c98 col:19 dst 'ecs_metric_t *' | |-ParmVarDecl 0x5604680b1d68 col:25 src 'const ecs_metric_t *' | |-ParmVarDecl 0x5604680b1de0 col:13 t_dst 'int32_t':'int' | |-ParmVarDecl 0x5604680b1e58 col:13 t_src 'int32_t':'int' | `-FullComment 0x5604681851a0 | `-ParagraphComment 0x560468185170 | `-TextComment 0x560468185140 Text=" Reduce all measurements from a window into a single measurement. " |-FunctionDecl 0x5604680b22a8 line:11088:6 ecs_metric_reduce_last 'void (ecs_metric_t *, int32_t, int32_t)' | |-ParmVarDecl 0x5604680b2098 col:19 m 'ecs_metric_t *' | |-ParmVarDecl 0x5604680b2110 col:13 t 'int32_t':'int' | |-ParmVarDecl 0x5604680b2188 col:13 count 'int32_t':'int' | `-FullComment 0x560468185270 | `-ParagraphComment 0x560468185240 | `-TextComment 0x560468185210 Text=" Reduce last measurement into previous measurement " |-FunctionDecl 0x5604680b2528 line:11095:6 ecs_metric_copy 'void (ecs_metric_t *, int32_t, int32_t)' | |-ParmVarDecl 0x5604680b2398 col:19 m 'ecs_metric_t *' | |-ParmVarDecl 0x5604680b2410 col:13 dst 'int32_t':'int' | |-ParmVarDecl 0x5604680b2488 col:13 src 'int32_t':'int' | `-FullComment 0x560468185340 | `-ParagraphComment 0x560468185310 | `-TextComment 0x5604681852e0 Text=" Copy measurement " |-VarDecl 0x5604680b2678 :53:1> col:1 FLECS__EFlecsMonitor 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680b26f0 :54:1> col:1 FLECS__EEcsWorldStats 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680b2768 :55:1> col:1 FLECS__EEcsPipelineStats 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680b27e0 col:31 EcsPeriod1s 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680b2858 col:31 EcsPeriod1m 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680b28d0 col:31 EcsPeriod1h 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680b2948 col:31 EcsPeriod1d 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680b29c0 col:31 EcsPeriod1w 'ecs_entity_t':'unsigned long' extern |-RecordDecl 0x5604680b2a28 line:11158:9 struct definition | |-FieldDecl 0x5604680b3e58 col:17 elapsed 'float' | `-FieldDecl 0x5604680b3eb8 col:13 reduce_count 'int32_t':'int' |-TypedefDecl 0x5604680b3f68 col:3 referenced EcsStatsHeader 'struct EcsStatsHeader':'EcsStatsHeader' | `-ElaboratedType 0x5604680b3f10 'struct EcsStatsHeader' sugar | `-RecordType 0x5604680b3e20 'EcsStatsHeader' | `-Record 0x5604680b2a28 '' |-RecordDecl 0x5604680b3fd8 line:11163:9 struct definition | |-FieldDecl 0x5604680b40b0 col:20 hdr 'EcsStatsHeader':'EcsStatsHeader' | `-FieldDecl 0x5604680b4110 col:23 stats 'ecs_world_stats_t':'struct ecs_world_stats_t' |-TypedefDecl 0x5604680b4218 col:3 EcsWorldStats 'struct EcsWorldStats':'EcsWorldStats' | `-ElaboratedType 0x5604680b41c0 'struct EcsWorldStats' sugar | `-RecordType 0x5604680b4060 'EcsWorldStats' | `-Record 0x5604680b3fd8 '' |-RecordDecl 0x5604680b4288 line:11168:9 struct definition | |-FieldDecl 0x5604680b4340 col:20 hdr 'EcsStatsHeader':'EcsStatsHeader' | `-FieldDecl 0x5604680b43a0 col:26 stats 'ecs_pipeline_stats_t':'struct ecs_pipeline_stats_t' |-TypedefDecl 0x5604680b4448 col:3 EcsPipelineStats 'struct EcsPipelineStats':'EcsPipelineStats' | `-ElaboratedType 0x5604680b43f0 'struct EcsPipelineStats' sugar | `-RecordType 0x5604680b4310 'EcsPipelineStats' | `-Record 0x5604680b4288 '' |-FunctionDecl 0x5604680b4558 line:11175:6 FlecsMonitorImport 'void (ecs_world_t *)' | `-ParmVarDecl 0x5604680b44c8 col:18 world 'ecs_world_t *' |-FunctionDecl 0x5604680b4728 line:11229:6 FlecsCoreDocImport 'void (ecs_world_t *)' | |-ParmVarDecl 0x5604680b4698 col:18 world 'ecs_world_t *' | `-FullComment 0x560468185680 | |-ParagraphComment 0x5604681853e0 | | `-TextComment 0x5604681853b0 Text=" " | |-VerbatimLineComment 0x560468185400 Text=" c_addons_coredoc Coredoc" | |-ParagraphComment 0x560468185470 | | `-TextComment 0x560468185440 Text=" " | |-BlockCommandComment 0x560468185490 Name="brief" | | `-ParagraphComment 0x5604681854f0 | | `-TextComment 0x5604681854c0 Text=" Module that adds documentation and reflection to core entities." | |-ParagraphComment 0x560468185540 | | `-TextComment 0x560468185510 Text=" " | |-VerbatimLineComment 0x560468185560 Text=" c_addons" | `-ParagraphComment 0x560468185620 | |-TextComment 0x5604681855a0 Text=" " | |-TextComment 0x5604681855c0 Text="@" | `-TextComment 0x5604681855e0 Text="{" |-VarDecl 0x5604680b4838 :56:1> col:1 FLECS__EEcsDocDescription 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680b48b0 col:37 EcsDocBrief 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680b4928 col:37 EcsDocDetail 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680b49a0 col:37 EcsDocLink 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680b4a18 col:37 EcsDocColor 'const ecs_entity_t':'const unsigned long' extern |-RecordDecl 0x5604680b4a80 line:11284:16 struct EcsDocDescription definition | `-FieldDecl 0x5604680b4b38 col:11 value 'char *' |-TypedefDecl 0x5604680b4be8 col:3 EcsDocDescription 'struct EcsDocDescription':'struct EcsDocDescription' | `-ElaboratedType 0x5604680b4b90 'struct EcsDocDescription' sugar | `-RecordType 0x5604680b4b00 'struct EcsDocDescription' | `-Record 0x5604680b4a80 'EcsDocDescription' |-FunctionDecl 0x5604680b4e28 line:11297:6 ecs_doc_set_name 'void (ecs_world_t *, ecs_entity_t, const char *)' | |-ParmVarDecl 0x5604680b4c90 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680b4d08 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680b4d88 col:17 name 'const char *' | `-FullComment 0x560468185a60 | |-ParagraphComment 0x560468185770 | | |-TextComment 0x5604681856f0 Text=" Add human-readable name to entity." | | |-TextComment 0x560468185710 Text=" Contrary to entity names, human readable names do not have to be unique and" | | `-TextComment 0x560468185730 Text=" can contain special characters used in the query language like '*'." | |-ParagraphComment 0x5604681857c0 | | `-TextComment 0x560468185790 Text=" " | |-ParamCommandComment 0x5604681857e0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468185890 | | |-TextComment 0x560468185840 Text=" The world." | | `-TextComment 0x560468185860 Text=" " | |-ParamCommandComment 0x5604681858b0 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468185960 | | |-TextComment 0x560468185910 Text=" The entity to which to add the name." | | `-TextComment 0x560468185930 Text=" " | `-ParamCommandComment 0x560468185980 [in] implicitly Param="name" ParamIndex=2 | `-ParagraphComment 0x560468185a10 | `-TextComment 0x5604681859e0 Text=" The name to add." |-FunctionDecl 0x5604680b50b0 line:11309:6 ecs_doc_set_brief 'void (ecs_world_t *, ecs_entity_t, const char *)' | |-ParmVarDecl 0x5604680b4f18 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680b4f90 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680b5010 col:17 description 'const char *' | `-FullComment 0x560468185df0 | |-ParagraphComment 0x560468185b00 | | `-TextComment 0x560468185ad0 Text=" Add brief description to entity." | |-ParagraphComment 0x560468185b50 | | `-TextComment 0x560468185b20 Text=" " | |-ParamCommandComment 0x560468185b70 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468185c20 | | |-TextComment 0x560468185bd0 Text=" The world." | | `-TextComment 0x560468185bf0 Text=" " | |-ParamCommandComment 0x560468185c40 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468185cf0 | | |-TextComment 0x560468185ca0 Text=" The entity to which to add the description." | | `-TextComment 0x560468185cc0 Text=" " | `-ParamCommandComment 0x560468185d10 [in] implicitly Param="description" ParamIndex=2 | `-ParagraphComment 0x560468185da0 | `-TextComment 0x560468185d70 Text=" The description to add." |-FunctionDecl 0x5604680b5340 line:11321:6 ecs_doc_set_detail 'void (ecs_world_t *, ecs_entity_t, const char *)' | |-ParmVarDecl 0x5604680b51a8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680b5220 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680b52a0 col:17 description 'const char *' | `-FullComment 0x560468186180 | |-ParagraphComment 0x560468185e90 | | `-TextComment 0x560468185e60 Text=" Add detailed description to entity." | |-ParagraphComment 0x560468185ee0 | | `-TextComment 0x560468185eb0 Text=" " | |-ParamCommandComment 0x560468185f00 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468185fb0 | | |-TextComment 0x560468185f60 Text=" The world." | | `-TextComment 0x560468185f80 Text=" " | |-ParamCommandComment 0x560468185fd0 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468186080 | | |-TextComment 0x560468186030 Text=" The entity to which to add the description." | | `-TextComment 0x560468186050 Text=" " | `-ParamCommandComment 0x5604681860a0 [in] implicitly Param="description" ParamIndex=2 | `-ParagraphComment 0x560468186130 | `-TextComment 0x560468186100 Text=" The description to add." |-FunctionDecl 0x5604680b55d0 line:11333:6 ecs_doc_set_link 'void (ecs_world_t *, ecs_entity_t, const char *)' | |-ParmVarDecl 0x5604680b5438 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680b54b0 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680b5530 col:17 link 'const char *' | `-FullComment 0x560468186540 | |-ParagraphComment 0x560468186220 | | `-TextComment 0x5604681861f0 Text=" Add link to external documentation to entity." | |-ParagraphComment 0x560468186270 | | `-TextComment 0x560468186240 Text=" " | |-ParamCommandComment 0x560468186290 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468186340 | | |-TextComment 0x5604681862f0 Text=" The world." | | `-TextComment 0x560468186310 Text=" " | |-ParamCommandComment 0x560468186360 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468186410 | | |-TextComment 0x5604681863c0 Text=" The entity to which to add the link." | | `-TextComment 0x5604681863e0 Text=" " | `-ParamCommandComment 0x560468186460 [in] implicitly Param="link" ParamIndex=2 | `-ParagraphComment 0x5604681864f0 | `-TextComment 0x5604681864c0 Text=" The link to add." |-FunctionDecl 0x5604680b5860 line:11346:6 ecs_doc_set_color 'void (ecs_world_t *, ecs_entity_t, const char *)' | |-ParmVarDecl 0x5604680b56c8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680b5740 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680b57c0 col:17 color 'const char *' | `-FullComment 0x5604681868f0 | |-ParagraphComment 0x560468186600 | | |-TextComment 0x5604681865b0 Text=" Add color to entity." | | `-TextComment 0x5604681865d0 Text=" UIs can use color as hint to improve visualizing entities." | |-ParagraphComment 0x560468186650 | | `-TextComment 0x560468186620 Text=" " | |-ParamCommandComment 0x560468186670 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468186720 | | |-TextComment 0x5604681866d0 Text=" The world." | | `-TextComment 0x5604681866f0 Text=" " | |-ParamCommandComment 0x560468186740 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x5604681867f0 | | |-TextComment 0x5604681867a0 Text=" The entity to which to add the link." | | `-TextComment 0x5604681867c0 Text=" " | `-ParamCommandComment 0x560468186810 [in] implicitly Param="color" ParamIndex=2 | `-ParagraphComment 0x5604681868a0 | `-TextComment 0x560468186870 Text=" The color to add." |-FunctionDecl 0x5604680b5a70 line:11365:13 ecs_doc_get_name 'const char *(const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x5604680b5958 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680b59d0 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468186db0 | |-ParagraphComment 0x5604681869e0 | | |-TextComment 0x560468186960 Text=" Get human readable name from entity." | | |-TextComment 0x560468186980 Text=" If entity does not have an explicit human readable name, this operation will" | | `-TextComment 0x5604681869a0 Text=" return the entity name." | |-ParagraphComment 0x560468186af0 | | |-TextComment 0x560468186a00 Text=" To test if an entity has a human readable name, use:" | | |-TextComment 0x560468186a20 Text=" ecs_has_pair(world, e, ecs_id(EcsDescription), EcsName);" | | |-TextComment 0x560468186a40 Text=" Or in C++:" | | |-TextComment 0x560468186a60 Text=" e.has" | | |-TextComment 0x560468186a80 Text=" Text="::Description>(flecs::Name);" | |-ParagraphComment 0x560468186b40 | | `-TextComment 0x560468186b10 Text=" " | |-ParamCommandComment 0x560468186b60 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468186c10 | | |-TextComment 0x560468186bc0 Text=" The world." | | `-TextComment 0x560468186be0 Text=" " | |-ParamCommandComment 0x560468186c30 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468186ce0 | | |-TextComment 0x560468186c90 Text=" The entity from which to get the name." | | `-TextComment 0x560468186cb0 Text=" " | `-BlockCommandComment 0x560468186d00 Name="return" | `-ParagraphComment 0x560468186d60 | `-TextComment 0x560468186d30 Text=" The name." |-FunctionDecl 0x5604680b5c70 line:11376:13 ecs_doc_get_brief 'const char *(const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x5604680b5b58 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680b5bd0 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468187110 | |-ParagraphComment 0x560468186e50 | | `-TextComment 0x560468186e20 Text=" Get brief description from entity." | |-ParagraphComment 0x560468186ea0 | | `-TextComment 0x560468186e70 Text=" " | |-ParamCommandComment 0x560468186ec0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468186f70 | | |-TextComment 0x560468186f20 Text=" The world." | | `-TextComment 0x560468186f40 Text=" " | |-ParamCommandComment 0x560468186f90 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468187040 | | |-TextComment 0x560468186ff0 Text=" The entity from which to get the description." | | `-TextComment 0x560468187010 Text=" " | `-BlockCommandComment 0x560468187060 Name="return" | `-ParagraphComment 0x5604681870c0 | `-TextComment 0x560468187090 Text=" The description." |-FunctionDecl 0x5604680b6210 line:11387:13 ecs_doc_get_detail 'const char *(const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x5604680b5d58 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680b6170 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468187470 | |-ParagraphComment 0x5604681871b0 | | `-TextComment 0x560468187180 Text=" Get detailed description from entity." | |-ParagraphComment 0x560468187200 | | `-TextComment 0x5604681871d0 Text=" " | |-ParamCommandComment 0x560468187220 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681872d0 | | |-TextComment 0x560468187280 Text=" The world." | | `-TextComment 0x5604681872a0 Text=" " | |-ParamCommandComment 0x5604681872f0 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x5604681873a0 | | |-TextComment 0x560468187350 Text=" The entity from which to get the description." | | `-TextComment 0x560468187370 Text=" " | `-BlockCommandComment 0x5604681873c0 Name="return" | `-ParagraphComment 0x560468187420 | `-TextComment 0x5604681873f0 Text=" The description." |-FunctionDecl 0x5604680b6410 line:11398:13 ecs_doc_get_link 'const char *(const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x5604680b62f8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680b6370 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x5604681877d0 | |-ParagraphComment 0x560468187510 | | `-TextComment 0x5604681874e0 Text=" Get link to external documentation from entity." | |-ParagraphComment 0x560468187560 | | `-TextComment 0x560468187530 Text=" " | |-ParamCommandComment 0x560468187580 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468187630 | | |-TextComment 0x5604681875e0 Text=" The world." | | `-TextComment 0x560468187600 Text=" " | |-ParamCommandComment 0x560468187650 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468187700 | | |-TextComment 0x5604681876b0 Text=" The entity from which to get the link." | | `-TextComment 0x5604681876d0 Text=" " | `-BlockCommandComment 0x560468187720 Name="return" | `-ParagraphComment 0x560468187780 | `-TextComment 0x560468187750 Text=" The link." |-FunctionDecl 0x5604680b6610 line:11409:13 ecs_doc_get_color 'const char *(const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x5604680b64f8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680b6570 col:18 entity 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468187b30 | |-ParagraphComment 0x560468187870 | | `-TextComment 0x560468187840 Text=" Get color from entity." | |-ParagraphComment 0x5604681878c0 | | `-TextComment 0x560468187890 Text=" " | |-ParamCommandComment 0x5604681878e0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468187990 | | |-TextComment 0x560468187940 Text=" The world." | | `-TextComment 0x560468187960 Text=" " | |-ParamCommandComment 0x5604681879b0 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x560468187a60 | | |-TextComment 0x560468187a10 Text=" The entity from which to get the link." | | `-TextComment 0x560468187a30 Text=" " | `-BlockCommandComment 0x560468187a80 Name="return" | `-ParagraphComment 0x560468187ae0 | `-TextComment 0x560468187ab0 Text=" The color." |-FunctionDecl 0x5604680b6760 line:11415:6 FlecsDocImport 'void (ecs_world_t *)' | `-ParmVarDecl 0x5604680b66d0 col:18 world 'ecs_world_t *' |-RecordDecl 0x5604680b6898 line:11465:16 struct ecs_parse_json_desc_t definition | |-FullComment 0x560468187c00 | | `-ParagraphComment 0x560468187bd0 | | `-TextComment 0x560468187ba0 Text=" Used with ecs_parse_json. " | |-FieldDecl 0x5604680b6958 col:17 name 'const char *' | `-FieldDecl 0x5604680b69c0 col:17 expr 'const char *' |-TypedefDecl 0x5604680b6a68 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 | `-ParagraphComment 0x560468187ca0 | `-TextComment 0x560468187c70 Text=" Used with ecs_parse_json. " |-FunctionDecl 0x5604680b6ed0 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 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680b6b90 col:17 ptr 'const char *' | |-ParmVarDecl 0x5604680b6c08 col:18 type 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680b6c88 col:11 data_out 'void *' | |-ParmVarDecl 0x5604680b6d78 col:34 desc 'const ecs_parse_json_desc_t *' | `-FullComment 0x560468188300 | |-ParagraphComment 0x560468187dc0 | | |-TextComment 0x560468187d40 Text=" Parse JSON string into value." | | |-TextComment 0x560468187d60 Text=" This operation parses a JSON expression into the provided pointer. The" | | `-TextComment 0x560468187d80 Text=" memory pointed to must be large enough to contain a value of the used type." | |-ParagraphComment 0x560468187e10 | | `-TextComment 0x560468187de0 Text=" " | |-ParamCommandComment 0x560468187e30 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468187ee0 | | |-TextComment 0x560468187e90 Text=" The world." | | `-TextComment 0x560468187eb0 Text=" " | |-ParamCommandComment 0x560468187f00 [in] implicitly Param="ptr" ParamIndex=1 | | `-ParagraphComment 0x560468187fb0 | | |-TextComment 0x560468187f60 Text=" The pointer to the expression to parse." | | `-TextComment 0x560468187f80 Text=" " | |-ParamCommandComment 0x560468187fd0 [in] implicitly Param="type" ParamIndex=2 | | `-ParagraphComment 0x560468188080 | | |-TextComment 0x560468188030 Text=" The type of the expression to parse." | | `-TextComment 0x560468188050 Text=" " | |-ParamCommandComment 0x5604681880a0 [in] implicitly Param="data_out" ParamIndex=3 | | `-ParagraphComment 0x560468188150 | | |-TextComment 0x560468188100 Text=" Pointer to the memory to write to." | | `-TextComment 0x560468188120 Text=" " | |-ParamCommandComment 0x560468188170 [in] implicitly Param="desc" ParamIndex=4 | | `-ParagraphComment 0x560468188220 | | |-TextComment 0x5604681881d0 Text=" Configuration parameters for deserializer." | | `-TextComment 0x5604681881f0 Text=" " | `-BlockCommandComment 0x560468188240 Name="return" | `-ParagraphComment 0x5604681882a0 | `-TextComment 0x560468188270 Text=" Pointer to the character after the last one read, or NULL if failed." |-FunctionDecl 0x5604680b7290 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 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680b7050 col:18 e 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680b70d0 col:17 ptr 'const char *' | |-ParmVarDecl 0x5604680b7148 col:34 desc 'const ecs_parse_json_desc_t *' | `-FullComment 0x560468188420 | `-ParagraphComment 0x5604681883f0 | |-TextComment 0x560468188370 Text=" Parse JSON object with multiple component values into entity. The format" | |-TextComment 0x560468188390 Text=" is the same as the one outputted by ecs_entity_to_json, but at the moment" | `-TextComment 0x5604681883b0 Text=" only supports the "ids" and "values" member." |-FunctionDecl 0x5604680b7640 line:11515:7 ecs_array_to_json 'char *(const ecs_world_t *, ecs_entity_t, const void *, int32_t)' | |-ParmVarDecl 0x5604680b7388 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680b7400 col:18 type 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680b7480 col:17 data 'const void *' | |-ParmVarDecl 0x5604680b74f8 col:13 count 'int32_t':'int' | `-FullComment 0x560468188a40 | |-ParagraphComment 0x560468188530 | | |-TextComment 0x5604681884b0 Text=" Serialize value into JSON string." | | |-TextComment 0x5604681884d0 Text=" This operation serializes a value of the provided type to a JSON string. The " | | `-TextComment 0x5604681884f0 Text=" memory pointed to must be large enough to contain a value of the used type." | |-ParagraphComment 0x5604681885d0 | | |-TextComment 0x560468188550 Text=" If count is 0, the function will serialize a single value, not wrapped in" | | |-TextComment 0x560468188570 Text=" array brackets. If count is >= 1, the operation will serialize values to a" | | `-TextComment 0x560468188590 Text=" a comma-separated list inside of array brackets." | |-ParagraphComment 0x560468188620 | | `-TextComment 0x5604681885f0 Text=" " | |-ParamCommandComment 0x560468188640 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681886f0 | | |-TextComment 0x5604681886a0 Text=" The world." | | `-TextComment 0x5604681886c0 Text=" " | |-ParamCommandComment 0x560468188710 [in] implicitly Param="type" ParamIndex=1 | | `-ParagraphComment 0x5604681887c0 | | |-TextComment 0x560468188770 Text=" The type of the value to serialize." | | `-TextComment 0x560468188790 Text=" " | |-ParamCommandComment 0x5604681887e0 [in] implicitly Param="data" ParamIndex=2 | | `-ParagraphComment 0x560468188890 | | |-TextComment 0x560468188840 Text=" The value to serialize." | | `-TextComment 0x560468188860 Text=" " | |-ParamCommandComment 0x5604681888b0 [in] implicitly Param="count" ParamIndex=3 | | `-ParagraphComment 0x560468188960 | | |-TextComment 0x560468188910 Text=" The number of elements to serialize." | | `-TextComment 0x560468188930 Text=" " | `-BlockCommandComment 0x560468188980 Name="return" | `-ParagraphComment 0x5604681889e0 | `-TextComment 0x5604681889b0 Text=" String with JSON expression, or NULL if failed." |-FunctionDecl 0x5604680b7a80 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 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680b77b0 col:18 type 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680b7830 col:17 data 'const void *' | |-ParmVarDecl 0x5604680b78a8 col:13 count 'int32_t':'int' | |-ParmVarDecl 0x5604680b7920 col:19 buf_out 'ecs_strbuf_t *' | `-FullComment 0x560468189040 | |-ParagraphComment 0x560468188b00 | | |-TextComment 0x560468188ab0 Text=" Serialize value into JSON string buffer." | | `-TextComment 0x560468188ad0 Text=" Same as ecs_array_to_json_buf, but serializes to an ecs_strbuf_t instance." | |-ParagraphComment 0x560468188b50 | | `-TextComment 0x560468188b20 Text=" " | |-ParamCommandComment 0x560468188b70 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468188c20 | | |-TextComment 0x560468188bd0 Text=" The world." | | `-TextComment 0x560468188bf0 Text=" " | |-ParamCommandComment 0x560468188c40 [in] implicitly Param="type" ParamIndex=1 | | `-ParagraphComment 0x560468188cf0 | | |-TextComment 0x560468188ca0 Text=" The type of the value to serialize." | | `-TextComment 0x560468188cc0 Text=" " | |-ParamCommandComment 0x560468188d10 [in] implicitly Param="data" ParamIndex=2 | | `-ParagraphComment 0x560468188dc0 | | |-TextComment 0x560468188d70 Text=" The value to serialize." | | `-TextComment 0x560468188d90 Text=" " | |-ParamCommandComment 0x560468188de0 [in] implicitly Param="count" ParamIndex=3 | | `-ParagraphComment 0x560468188e90 | | |-TextComment 0x560468188e40 Text=" The number of elements to serialize." | | `-TextComment 0x560468188e60 Text=" " | |-ParamCommandComment 0x560468188eb0 [in] implicitly Param="buf_out" ParamIndex=4 | | `-ParagraphComment 0x560468188f60 | | |-TextComment 0x560468188f10 Text=" The strbuf to append the string to." | | `-TextComment 0x560468188f30 Text=" " | `-BlockCommandComment 0x560468188f80 Name="return" | `-ParagraphComment 0x560468188fe0 | `-TextComment 0x560468188fb0 Text=" Zero if success, non-zero if failed." |-FunctionDecl 0x5604680b7db0 line:11548:7 ecs_ptr_to_json 'char *(const ecs_world_t *, ecs_entity_t, const void *)' | |-ParmVarDecl 0x5604680b7b88 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680b7c00 col:18 type 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680b7c80 col:17 data 'const void *' | `-FullComment 0x560468189490 | |-ParagraphComment 0x560468189100 | | |-TextComment 0x5604681890b0 Text=" Serialize value into JSON string." | | `-TextComment 0x5604681890d0 Text=" Same as ecs_array_to_json, with count = 0." | |-ParagraphComment 0x560468189150 | | `-TextComment 0x560468189120 Text=" " | |-ParamCommandComment 0x560468189170 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468189220 | | |-TextComment 0x5604681891d0 Text=" The world." | | `-TextComment 0x5604681891f0 Text=" " | |-ParamCommandComment 0x560468189240 [in] implicitly Param="type" ParamIndex=1 | | `-ParagraphComment 0x5604681892f0 | | |-TextComment 0x5604681892a0 Text=" The type of the value to serialize." | | `-TextComment 0x5604681892c0 Text=" " | |-ParamCommandComment 0x560468189310 [in] implicitly Param="data" ParamIndex=2 | | `-ParagraphComment 0x5604681893c0 | | |-TextComment 0x560468189370 Text=" The value to serialize." | | `-TextComment 0x560468189390 Text=" " | `-BlockCommandComment 0x5604681893e0 Name="return" | `-ParagraphComment 0x560468189440 | `-TextComment 0x560468189410 Text=" String with JSON expression, or NULL if failed." |-FunctionDecl 0x5604680b8440 line:11563:5 ecs_ptr_to_json_buf 'int (const ecs_world_t *, ecs_entity_t, const void *, ecs_strbuf_t *)' | |-ParmVarDecl 0x5604680b7ea8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680b7f20 col:18 type 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680b7fa0 col:17 data 'const void *' | |-ParmVarDecl 0x5604680b8018 col:19 buf_out 'ecs_strbuf_t *' | `-FullComment 0x5604681899c0 | |-ParagraphComment 0x560468189550 | | |-TextComment 0x560468189500 Text=" Serialize value into JSON string buffer." | | `-TextComment 0x560468189520 Text=" Same as ecs_ptr_to_json, but serializes to an ecs_strbuf_t instance." | |-ParagraphComment 0x5604681895a0 | | `-TextComment 0x560468189570 Text=" " | |-ParamCommandComment 0x5604681895c0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468189670 | | |-TextComment 0x560468189620 Text=" The world." | | `-TextComment 0x560468189640 Text=" " | |-ParamCommandComment 0x560468189690 [in] implicitly Param="type" ParamIndex=1 | | `-ParagraphComment 0x560468189740 | | |-TextComment 0x5604681896f0 Text=" The type of the value to serialize." | | `-TextComment 0x560468189710 Text=" " | |-ParamCommandComment 0x560468189760 [in] implicitly Param="data" ParamIndex=2 | | `-ParagraphComment 0x560468189810 | | |-TextComment 0x5604681897c0 Text=" The value to serialize." | | `-TextComment 0x5604681897e0 Text=" " | |-ParamCommandComment 0x560468189830 [in] implicitly Param="buf_out" ParamIndex=3 | | `-ParagraphComment 0x5604681898e0 | | |-TextComment 0x560468189890 Text=" The strbuf to append the string to." | | `-TextComment 0x5604681898b0 Text=" " | `-BlockCommandComment 0x560468189900 Name="return" | `-ParagraphComment 0x560468189960 | `-TextComment 0x560468189930 Text=" Zero if success, non-zero if failed." |-FunctionDecl 0x5604680b8650 line:11580:7 ecs_type_info_to_json 'char *(const ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x5604680b8538 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680b85b0 col:18 type 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468189dc0 | |-ParagraphComment 0x560468189ab0 | | |-TextComment 0x560468189a30 Text=" Serialize type info to JSON." | | |-TextComment 0x560468189a50 Text=" This serializes type information to JSON, and can be used to store/transmit" | | `-TextComment 0x560468189a70 Text=" the structure of a (component) value." | |-ParagraphComment 0x560468189b00 | | `-TextComment 0x560468189ad0 Text=" If the provided type does not have reflection data, "0" will be returned." | |-ParagraphComment 0x560468189b50 | | `-TextComment 0x560468189b20 Text=" " | |-ParamCommandComment 0x560468189b70 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468189c20 | | |-TextComment 0x560468189bd0 Text=" The world." | | `-TextComment 0x560468189bf0 Text=" " | |-ParamCommandComment 0x560468189c40 [in] implicitly Param="type" ParamIndex=1 | | `-ParagraphComment 0x560468189cf0 | | |-TextComment 0x560468189ca0 Text=" The type to serialize to JSON." | | `-TextComment 0x560468189cc0 Text=" " | `-BlockCommandComment 0x560468189d10 Name="return" | `-ParagraphComment 0x560468189d70 | `-TextComment 0x560468189d40 Text=" A JSON string with the serialized type info, or NULL if failed." |-FunctionDecl 0x5604680b8950 line:11593:5 ecs_type_info_to_json_buf 'int (const ecs_world_t *, ecs_entity_t, ecs_strbuf_t *)' | |-ParmVarDecl 0x5604680b8738 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680b87b0 col:18 type 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680b8828 col:19 buf_out 'ecs_strbuf_t *' | `-FullComment 0x56046818a210 | |-ParagraphComment 0x560468189e80 | | |-TextComment 0x560468189e30 Text=" Serialize type info into JSON string buffer." | | `-TextComment 0x560468189e50 Text=" Same as ecs_type_info_to_json, but serializes to an ecs_strbuf_t instance." | |-ParagraphComment 0x560468189ed0 | | `-TextComment 0x560468189ea0 Text=" " | |-ParamCommandComment 0x560468189ef0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468189fa0 | | |-TextComment 0x560468189f50 Text=" The world." | | `-TextComment 0x560468189f70 Text=" " | |-ParamCommandComment 0x560468189fc0 [in] implicitly Param="type" ParamIndex=1 | | `-ParagraphComment 0x56046818a070 | | |-TextComment 0x56046818a020 Text=" The type to serialize." | | `-TextComment 0x56046818a040 Text=" " | |-ParamCommandComment 0x56046818a090 [in] implicitly Param="buf_out" ParamIndex=2 | | `-ParagraphComment 0x56046818a140 | | |-TextComment 0x56046818a0f0 Text=" The strbuf to append the string to." | | `-TextComment 0x56046818a110 Text=" " | `-BlockCommandComment 0x56046818a160 Name="return" | `-ParagraphComment 0x56046818a1c0 | `-TextComment 0x56046818a190 Text=" Zero if success, non-zero if failed." |-RecordDecl 0x5604680b8a38 line:11599:16 struct ecs_entity_to_json_desc_t definition | |-FullComment 0x56046818a2e0 | | `-ParagraphComment 0x56046818a2b0 | | `-TextComment 0x56046818a280 Text=" Used with ecs_iter_to_json. " | |-FieldDecl 0x5604680b8af0 col:10 serialize_path 'bool' | |-FieldDecl 0x5604680b8b50 col:10 serialize_meta_ids 'bool' | |-FieldDecl 0x5604680b8bb0 col:10 serialize_label 'bool' | |-FieldDecl 0x5604680b8c10 col:10 serialize_brief 'bool' | |-FieldDecl 0x5604680b8c70 col:10 serialize_link 'bool' | |-FieldDecl 0x5604680b8cd0 col:10 serialize_color 'bool' | |-FieldDecl 0x5604680b8d30 col:10 serialize_id_labels 'bool' | |-FieldDecl 0x5604680b8d90 col:10 serialize_base 'bool' | |-FieldDecl 0x5604680b8df0 col:10 serialize_private 'bool' | |-FieldDecl 0x5604680b8e50 col:10 serialize_hidden 'bool' | |-FieldDecl 0x5604680b8eb0 col:10 serialize_values 'bool' | `-FieldDecl 0x5604680b8f10 col:10 serialize_type_info 'bool' |-TypedefDecl 0x5604680b8fb8 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 | `-ParagraphComment 0x56046818a380 | `-TextComment 0x56046818a350 Text=" Used with ecs_iter_to_json. " |-FunctionDecl 0x5604680b92f0 line:11628:7 ecs_entity_to_json 'char *(const ecs_world_t *, ecs_entity_t, const ecs_entity_to_json_desc_t *)' | |-ParmVarDecl 0x5604680b9060 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680b90d8 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680b91c8 col:38 desc 'const ecs_entity_to_json_desc_t *' | `-FullComment 0x56046818a7d0 | |-ParagraphComment 0x56046818a4c0 | | |-TextComment 0x56046818a420 Text=" Serialize entity into JSON string." | | |-TextComment 0x56046818a440 Text=" This creates a JSON object with the entity's (path) name, which components" | | `-TextComment 0x56046818a480 Text=" and tags the entity has, and the component values." | |-ParagraphComment 0x56046818a510 | | `-TextComment 0x56046818a4e0 Text=" The operation may fail if the entity contains components with invalid values." | |-ParagraphComment 0x56046818a560 | | `-TextComment 0x56046818a530 Text=" " | |-ParamCommandComment 0x56046818a580 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046818a630 | | |-TextComment 0x56046818a5e0 Text=" The world." | | `-TextComment 0x56046818a600 Text=" " | |-ParamCommandComment 0x56046818a650 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x56046818a700 | | |-TextComment 0x56046818a6b0 Text=" The entity to serialize to JSON." | | `-TextComment 0x56046818a6d0 Text=" " | `-BlockCommandComment 0x56046818a720 Name="return" | `-ParagraphComment 0x56046818a780 | `-TextComment 0x56046818a750 Text=" A JSON string with the serialized entity data, or NULL if failed." |-FunctionDecl 0x5604680b96a0 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 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680b9460 col:18 entity 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680b94d8 col:19 buf_out 'ecs_strbuf_t *' | |-ParmVarDecl 0x5604680b9550 col:38 desc 'const ecs_entity_to_json_desc_t *' | `-FullComment 0x56046818ac20 | |-ParagraphComment 0x56046818a890 | | |-TextComment 0x56046818a840 Text=" Serialize entity into JSON string buffer." | | `-TextComment 0x56046818a860 Text=" Same as ecs_entity_to_json, but serializes to an ecs_strbuf_t instance." | |-ParagraphComment 0x56046818a8e0 | | `-TextComment 0x56046818a8b0 Text=" " | |-ParamCommandComment 0x56046818a900 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046818a9b0 | | |-TextComment 0x56046818a960 Text=" The world." | | `-TextComment 0x56046818a980 Text=" " | |-ParamCommandComment 0x56046818a9d0 [in] implicitly Param="entity" ParamIndex=1 | | `-ParagraphComment 0x56046818aa80 | | |-TextComment 0x56046818aa30 Text=" The entity to serialize." | | `-TextComment 0x56046818aa50 Text=" " | |-ParamCommandComment 0x56046818aaa0 [in] implicitly Param="buf_out" ParamIndex=2 | | `-ParagraphComment 0x56046818ab50 | | |-TextComment 0x56046818ab00 Text=" The strbuf to append the string to." | | `-TextComment 0x56046818ab20 Text=" " | `-BlockCommandComment 0x56046818ab70 Name="return" | `-ParagraphComment 0x56046818abd0 | `-TextComment 0x56046818aba0 Text=" Zero if success, non-zero if failed." |-RecordDecl 0x5604680b9788 line:11649:16 struct ecs_iter_to_json_desc_t definition | |-FullComment 0x56046818acf0 | | `-ParagraphComment 0x56046818acc0 | | `-TextComment 0x56046818ac90 Text=" Used with ecs_iter_to_json. " | |-FieldDecl 0x5604680b9840 col:10 serialize_term_ids 'bool' | |-FieldDecl 0x5604680b98a0 col:10 serialize_ids 'bool' | |-FieldDecl 0x5604680b9900 col:10 serialize_sources 'bool' | |-FieldDecl 0x5604680b9960 col:10 serialize_variables 'bool' | |-FieldDecl 0x5604680b99c0 col:10 serialize_is_set 'bool' | |-FieldDecl 0x5604680b9a20 col:10 serialize_values 'bool' | |-FieldDecl 0x5604680b9a80 col:10 serialize_entities 'bool' | |-FieldDecl 0x5604680b9ae0 col:10 serialize_entity_labels 'bool' | |-FieldDecl 0x5604680b9b40 col:10 serialize_entity_ids 'bool' | |-FieldDecl 0x5604680b9ba0 col:10 serialize_variable_labels 'bool' | |-FieldDecl 0x5604680b9c00 col:10 serialize_variable_ids 'bool' | |-FieldDecl 0x5604680b9c60 col:10 serialize_colors 'bool' | |-FieldDecl 0x5604680b9cc0 col:10 measure_eval_duration 'bool' | `-FieldDecl 0x5604680b9d20 col:10 serialize_type_info 'bool' |-TypedefDecl 0x5604680b9dc8 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 | `-ParagraphComment 0x56046818ad90 | `-TextComment 0x56046818ad60 Text=" Used with ecs_iter_to_json. " |-FunctionDecl 0x5604680ba100 line:11692:7 ecs_iter_to_json 'char *(const ecs_world_t *, ecs_iter_t *, const ecs_iter_to_json_desc_t *)' | |-ParmVarDecl 0x5604680b9e70 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680b9ee8 col:17 iter 'ecs_iter_t *' | |-ParmVarDecl 0x5604680b9fd8 col:36 desc 'const ecs_iter_to_json_desc_t *' | `-FullComment 0x56046818b170 | |-ParagraphComment 0x56046818aeb0 | | |-TextComment 0x56046818ae30 Text=" Serialize iterator into JSON string." | | |-TextComment 0x56046818ae50 Text=" This operation will iterate the contents of the iterator and serialize them" | | `-TextComment 0x56046818ae70 Text=" to JSON. The function acccepts iterators from any source." | |-ParagraphComment 0x56046818af00 | | `-TextComment 0x56046818aed0 Text=" " | |-ParamCommandComment 0x56046818af20 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046818afd0 | | |-TextComment 0x56046818af80 Text=" The world." | | `-TextComment 0x56046818afa0 Text=" " | |-ParamCommandComment 0x56046818aff0 [in] implicitly Param="iter" ParamIndex=1 | | `-ParagraphComment 0x56046818b0a0 | | |-TextComment 0x56046818b050 Text=" The iterator to serialize to JSON." | | `-TextComment 0x56046818b070 Text=" " | `-BlockCommandComment 0x56046818b0c0 Name="return" | `-ParagraphComment 0x56046818b120 | `-TextComment 0x56046818b0f0 Text=" A JSON string with the serialized iterator data, or NULL if failed." |-FunctionDecl 0x5604680bcbc0 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 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680ba270 col:17 iter 'ecs_iter_t *' | |-ParmVarDecl 0x5604680ba2e8 col:19 buf_out 'ecs_strbuf_t *' | |-ParmVarDecl 0x5604680ba360 col:36 desc 'const ecs_iter_to_json_desc_t *' | `-FullComment 0x56046818b5c0 | |-ParagraphComment 0x56046818b230 | | |-TextComment 0x56046818b1e0 Text=" Serialize iterator into JSON string buffer." | | `-TextComment 0x56046818b200 Text=" Same as ecs_iter_to_json, but serializes to an ecs_strbuf_t instance." | |-ParagraphComment 0x56046818b280 | | `-TextComment 0x56046818b250 Text=" " | |-ParamCommandComment 0x56046818b2a0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046818b350 | | |-TextComment 0x56046818b300 Text=" The world." | | `-TextComment 0x56046818b320 Text=" " | |-ParamCommandComment 0x56046818b370 [in] implicitly Param="iter" ParamIndex=1 | | `-ParagraphComment 0x56046818b420 | | |-TextComment 0x56046818b3d0 Text=" The iterator to serialize." | | `-TextComment 0x56046818b3f0 Text=" " | |-ParamCommandComment 0x56046818b440 [in] implicitly Param="buf_out" ParamIndex=2 | | `-ParagraphComment 0x56046818b4f0 | | |-TextComment 0x56046818b4a0 Text=" The strbuf to append the string to." | | `-TextComment 0x56046818b4c0 Text=" " | `-BlockCommandComment 0x56046818b510 Name="return" | `-ParagraphComment 0x56046818b570 | `-TextComment 0x56046818b540 Text=" Zero if success, non-zero if failed." |-VarDecl 0x5604680bcd48 col:30 EcsUnitPrefixes 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bcdc0 :57:1> col:1 FLECS__EEcsUnitPrefixes 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bce50 col:30 EcsYocto 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bcec8 :58:1> col:1 FLECS__EEcsYocto 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bcf58 col:30 EcsZepto 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bcfd0 :59:1> col:1 FLECS__EEcsZepto 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd060 col:30 EcsAtto 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd0d8 :60:1> col:1 FLECS__EEcsAtto 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd168 col:30 EcsFemto 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd1e0 :61:1> col:1 FLECS__EEcsFemto 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd270 col:30 EcsPico 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd2e8 :62:1> col:1 FLECS__EEcsPico 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd378 col:30 EcsNano 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd3f0 :63:1> col:1 FLECS__EEcsNano 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd480 col:30 EcsMicro 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd4f8 :64:1> col:1 FLECS__EEcsMicro 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd588 col:30 EcsMilli 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd600 :65:1> col:1 FLECS__EEcsMilli 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd690 col:30 EcsCenti 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd708 :66:1> col:1 FLECS__EEcsCenti 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd798 col:30 EcsDeci 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd810 :67:1> col:1 FLECS__EEcsDeci 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd8a0 col:30 EcsDeca 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd918 :68:1> col:1 FLECS__EEcsDeca 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bd9a8 col:30 EcsHecto 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bda20 :69:1> col:1 FLECS__EEcsHecto 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bdab0 col:30 EcsKilo 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bdb28 :70:1> col:1 FLECS__EEcsKilo 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bdbb8 col:30 EcsMega 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bdc30 :71:1> col:1 FLECS__EEcsMega 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bdcc0 col:30 EcsGiga 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bdd38 :72:1> col:1 FLECS__EEcsGiga 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bddc8 col:30 EcsTera 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bde40 :73:1> col:1 FLECS__EEcsTera 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bded0 col:30 EcsPeta 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bdf48 :74:1> col:1 FLECS__EEcsPeta 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bdfd8 col:30 EcsExa 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be050 :75:1> col:1 FLECS__EEcsExa 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be0e0 col:30 EcsZetta 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be158 :76:1> col:1 FLECS__EEcsZetta 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be1e8 col:30 EcsYotta 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be260 :77:1> col:1 FLECS__EEcsYotta 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be2f0 col:30 EcsKibi 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be368 :78:1> col:1 FLECS__EEcsKibi 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be3f8 col:30 EcsMebi 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be470 :79:1> col:1 FLECS__EEcsMebi 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be500 col:30 EcsGibi 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be578 :80:1> col:1 FLECS__EEcsGibi 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be608 col:30 EcsTebi 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be680 :81:1> col:1 FLECS__EEcsTebi 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be710 col:30 EcsPebi 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be788 :82:1> col:1 FLECS__EEcsPebi 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be818 col:30 EcsExbi 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be890 :83:1> col:1 FLECS__EEcsExbi 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be920 col:30 EcsZebi 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680be998 :84:1> col:1 FLECS__EEcsZebi 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bea28 col:30 EcsYobi 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680beaa0 :85:1> col:1 FLECS__EEcsYobi 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bfcd0 col:30 EcsDuration 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bfd48 :86:1> col:1 FLECS__EEcsDuration 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bfdd8 col:34 EcsPicoSeconds 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bfe50 :87:1> col:1 FLECS__EEcsPicoSeconds 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bfee0 col:34 EcsNanoSeconds 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bff58 :88:1> col:1 FLECS__EEcsNanoSeconds 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680bffe8 col:34 EcsMicroSeconds 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0060 :89:1> col:1 FLECS__EEcsMicroSeconds 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c00f0 col:34 EcsMilliSeconds 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0168 :90:1> col:1 FLECS__EEcsMilliSeconds 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c01f8 col:34 EcsSeconds 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0270 :91:1> col:1 FLECS__EEcsSeconds 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0300 col:34 EcsMinutes 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0378 :92:1> col:1 FLECS__EEcsMinutes 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0408 col:34 EcsHours 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0480 :93:1> col:1 FLECS__EEcsHours 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0510 col:34 EcsDays 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0588 :94:1> col:1 FLECS__EEcsDays 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0670 col:30 EcsTime 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c06e8 :95:1> col:1 FLECS__EEcsTime 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0778 col:34 EcsDate 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c07f0 :96:1> col:1 FLECS__EEcsDate 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c08e0 col:30 EcsMass 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0958 :97:1> col:1 FLECS__EEcsMass 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c09e8 col:34 EcsGrams 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0a60 :98:1> col:1 FLECS__EEcsGrams 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0af0 col:34 EcsKiloGrams 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0b68 :99:1> col:1 FLECS__EEcsKiloGrams 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0c50 col:30 EcsElectricCurrent 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0cc8 :100:1> col:1 FLECS__EEcsElectricCurrent 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0d58 col:34 EcsAmpere 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0dd0 :101:1> col:1 FLECS__EEcsAmpere 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0ec0 col:30 EcsAmount 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0f38 :102:1> col:1 FLECS__EEcsAmount 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c0fc8 col:34 EcsMole 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c1040 :103:1> col:1 FLECS__EEcsMole 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c1130 col:30 EcsLuminousIntensity 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c11a8 :104:1> col:1 FLECS__EEcsLuminousIntensity 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c1238 col:34 EcsCandela 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c12b0 :105:1> col:1 FLECS__EEcsCandela 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c13a0 col:30 EcsForce 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c1418 :106:1> col:1 FLECS__EEcsForce 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c14a8 col:34 EcsNewton 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c1520 :107:1> col:1 FLECS__EEcsNewton 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c1610 col:30 EcsLength 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c1688 :108:1> col:1 FLECS__EEcsLength 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c1718 col:34 EcsMeters 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c1790 :109:1> col:1 FLECS__EEcsMeters 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c1820 col:38 EcsPicoMeters 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c1898 :110:1> col:1 FLECS__EEcsPicoMeters 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c1928 col:38 EcsNanoMeters 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c19a0 :111:1> col:1 FLECS__EEcsNanoMeters 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c1a30 col:38 EcsMicroMeters 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c1aa8 :112:1> col:1 FLECS__EEcsMicroMeters 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c1b38 col:38 EcsMilliMeters 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c1bb0 :113:1> col:1 FLECS__EEcsMilliMeters 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2060 col:38 EcsCentiMeters 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c20d8 :114:1> col:1 FLECS__EEcsCentiMeters 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2168 col:38 EcsKiloMeters 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c21e0 :115:1> col:1 FLECS__EEcsKiloMeters 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2270 col:34 EcsMiles 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c22e8 :116:1> col:1 FLECS__EEcsMiles 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2378 col:34 EcsPixels 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c23f0 :117:1> col:1 FLECS__EEcsPixels 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c24e0 col:30 EcsPressure 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2558 :118:1> col:1 FLECS__EEcsPressure 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c25e8 col:34 EcsPascal 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2660 :119:1> col:1 FLECS__EEcsPascal 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c26f0 col:34 EcsBar 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2768 :120:1> col:1 FLECS__EEcsBar 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2850 col:30 EcsSpeed 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c28c8 :121:1> col:1 FLECS__EEcsSpeed 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2958 col:34 EcsMetersPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c29d0 :122:1> col:1 FLECS__EEcsMetersPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2a60 col:34 EcsKiloMetersPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2ad8 :123:1> col:1 FLECS__EEcsKiloMetersPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2b68 col:34 EcsKiloMetersPerHour 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2be0 :124:1> col:1 FLECS__EEcsKiloMetersPerHour 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2c70 col:34 EcsMilesPerHour 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2ce8 :125:1> col:1 FLECS__EEcsMilesPerHour 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2dd0 col:30 EcsTemperature 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2e48 :126:1> col:1 FLECS__EEcsTemperature 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2ed8 col:34 EcsKelvin 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2f50 :127:1> col:1 FLECS__EEcsKelvin 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c2fe0 col:34 EcsCelsius 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3058 :128:1> col:1 FLECS__EEcsCelsius 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c30e8 col:34 EcsFahrenheit 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3160 :129:1> col:1 FLECS__EEcsFahrenheit 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3250 col:30 EcsData 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c32c8 :130:1> col:1 FLECS__EEcsData 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3358 col:34 EcsBits 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c33d0 :131:1> col:1 FLECS__EEcsBits 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3460 col:38 EcsKiloBits 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c34d8 :132:1> col:1 FLECS__EEcsKiloBits 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3568 col:38 EcsMegaBits 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c35e0 :133:1> col:1 FLECS__EEcsMegaBits 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3670 col:38 EcsGigaBits 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c36e8 :134:1> col:1 FLECS__EEcsGigaBits 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3778 col:34 EcsBytes 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c37f0 :135:1> col:1 FLECS__EEcsBytes 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3880 col:38 EcsKiloBytes 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c38f8 :136:1> col:1 FLECS__EEcsKiloBytes 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3988 col:38 EcsMegaBytes 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3a00 :137:1> col:1 FLECS__EEcsMegaBytes 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3a90 col:38 EcsGigaBytes 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3b08 :138:1> col:1 FLECS__EEcsGigaBytes 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3b98 col:38 EcsKibiBytes 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3c10 :139:1> col:1 FLECS__EEcsKibiBytes 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3ca0 col:38 EcsMebiBytes 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3d18 :140:1> col:1 FLECS__EEcsMebiBytes 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3da8 col:38 EcsGibiBytes 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3e20 :141:1> col:1 FLECS__EEcsGibiBytes 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3f10 col:30 EcsDataRate 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c3f88 :142:1> col:1 FLECS__EEcsDataRate 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5300 col:34 EcsBitsPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5378 :143:1> col:1 FLECS__EEcsBitsPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5408 col:34 EcsKiloBitsPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5480 :144:1> col:1 FLECS__EEcsKiloBitsPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5510 col:34 EcsMegaBitsPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5588 :145:1> col:1 FLECS__EEcsMegaBitsPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5618 col:34 EcsGigaBitsPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5690 :146:1> col:1 FLECS__EEcsGigaBitsPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5720 col:34 EcsBytesPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5798 :147:1> col:1 FLECS__EEcsBytesPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5828 col:34 EcsKiloBytesPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c58a0 :148:1> col:1 FLECS__EEcsKiloBytesPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5930 col:34 EcsMegaBytesPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c59a8 :149:1> col:1 FLECS__EEcsMegaBytesPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5a38 col:34 EcsGigaBytesPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5ab0 :150:1> col:1 FLECS__EEcsGigaBytesPerSecond 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5ba0 col:30 EcsAngle 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5c18 :151:1> col:1 FLECS__EEcsAngle 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5ca8 col:34 EcsRadians 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5d20 :152:1> col:1 FLECS__EEcsRadians 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5db0 col:34 EcsDegrees 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5e28 :153:1> col:1 FLECS__EEcsDegrees 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5f10 col:30 EcsFrequency 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c5f88 :154:1> col:1 FLECS__EEcsFrequency 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c6018 col:34 EcsHertz 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c6090 :155:1> col:1 FLECS__EEcsHertz 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c6120 col:34 EcsKiloHertz 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c6198 :156:1> col:1 FLECS__EEcsKiloHertz 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c6228 col:34 EcsMegaHertz 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c62a0 :157:1> col:1 FLECS__EEcsMegaHertz 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c6330 col:34 EcsGigaHertz 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c63a8 :158:1> col:1 FLECS__EEcsGigaHertz 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c6490 col:30 EcsUri 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c6508 :159:1> col:1 FLECS__EEcsUri 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c6598 col:34 EcsUriHyperlink 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c6610 :160:1> col:1 FLECS__EEcsUriHyperlink 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c66a0 col:34 EcsUriImage 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c6718 :161:1> col:1 FLECS__EEcsUriImage 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c67a8 col:34 EcsUriFile 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c6820 :162:1> col:1 FLECS__EEcsUriFile 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c68e0 col:30 EcsAcceleration 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c6958 :163:1> col:1 FLECS__EEcsAcceleration 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c69e8 col:30 EcsPercentage 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c6a60 :164:1> col:1 FLECS__EEcsPercentage 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c6af0 col:30 EcsBel 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c6b68 :165:1> col:1 FLECS__EEcsBel 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c6bf8 col:30 EcsDeciBel 'ecs_entity_t':'unsigned long' extern |-VarDecl 0x5604680c6c70 :166:1> col:1 FLECS__EEcsDeciBel 'ecs_entity_t':'unsigned long' extern |-FunctionDecl 0x5604680c6dc0 line:12064:6 FlecsUnitsImport 'void (ecs_world_t *)' | |-ParmVarDecl 0x5604680c6d30 col:18 world 'ecs_world_t *' | `-FullComment 0x56046818b6e0 | `-ParagraphComment 0x56046818b6b0 | |-TextComment 0x56046818b630 Text="/////////////////////////////////////////////////////////////////////////////" | |-TextComment 0x56046818b650 Text="/ Module" | `-TextComment 0x56046818b670 Text="/////////////////////////////////////////////////////////////////////////////" |-TypedefDecl 0x5604680c6f10 col:26 ptrdiff_t 'long' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x5604680c6f80 col:24 wchar_t 'int' | `-BuiltinType 0x560467ec18b0 'int' |-RecordDecl 0x5604680c6fd8 line:19:9 struct definition | |-FieldDecl 0x5604680c70d0 col:13 __clang_max_align_nonce1 'long long' | | `-AlignedAttr 0x5604680c7140 aligned | | `-ConstantExpr 0x5604680c7120 'unsigned long' | | |-value: Int 8 | | `-UnaryExprOrTypeTraitExpr 0x5604680c7098 'unsigned long' __alignof 'long long' | `-FieldDecl 0x5604680c71f0 col:15 __clang_max_align_nonce2 'long double' | `-AlignedAttr 0x5604680c7260 aligned | `-ConstantExpr 0x5604680c7240 'unsigned long' | |-value: Int 16 | `-UnaryExprOrTypeTraitExpr 0x5604680c71b8 'unsigned long' __alignof 'long double' |-TypedefDecl 0x5604680cacf0 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 col:14 ecs_bool_t 'bool' | |-BuiltinType 0x560467ec1830 'bool' | `-FullComment 0x56046818b870 | |-ParagraphComment 0x56046818b7d0 | | |-TextComment 0x56046818b750 Text=" Primitive type definitions." | | |-TextComment 0x56046818b770 Text=" These typedefs allow the builtin primitives to be used as regular components:" | | `-TextComment 0x56046818b790 Text=" ecs_set(world, e, ecs_i32_t, {10});" | `-ParagraphComment 0x56046818b840 | |-TextComment 0x56046818b7f0 Text=" Or a more useful example (create an enum constant with a manual value):" | `-TextComment 0x56046818b810 Text=" ecs_set_pair_object(world, e, EcsConstant, ecs_i32_t, {10});" |-TypedefDecl 0x5604680cae08 col:14 ecs_char_t 'char' | `-BuiltinType 0x560467ec1850 'char' |-TypedefDecl 0x5604680cae78 col:23 ecs_byte_t 'unsigned char' | `-BuiltinType 0x560467ec1910 'unsigned char' |-TypedefDecl 0x5604680caee0 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 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 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 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 col:19 ecs_uptr_t 'uintptr_t':'unsigned long' | `-TypedefType 0x560467fd50e0 'uintptr_t' sugar | |-Typedef 0x560467f8ca30 'uintptr_t' | `-BuiltinType 0x560467ec1970 'unsigned long' |-TypedefDecl 0x5604680cb110 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 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 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 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 col:18 ecs_iptr_t 'intptr_t':'long' | `-TypedefType 0x5604680cb2a0 'intptr_t' sugar | |-Typedef 0x560467f8c9c0 'intptr_t' | `-BuiltinType 0x560467ec18d0 'long' |-TypedefDecl 0x5604680cb340 col:15 ecs_f32_t 'float' | `-BuiltinType 0x560467ec19b0 'float' |-TypedefDecl 0x5604680cb3b0 col:16 ecs_f64_t 'double' | `-BuiltinType 0x560467ec19d0 'double' |-TypedefDecl 0x5604680cb420 col:15 ecs_string_t 'char *' | `-PointerType 0x560467ec23a0 'char *' | `-BuiltinType 0x560467ec1850 'char' |-VarDecl 0x5604680cb4b8 :174:1> col:1 FLECS__EEcsMetaType 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cb530 :175:1> col:1 FLECS__EEcsMetaTypeSerialized 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cb5a8 :176:1> col:1 FLECS__EEcsPrimitive 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cb620 :177:1> col:1 FLECS__EEcsEnum 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cb698 :178:1> col:1 FLECS__EEcsBitmask 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cb710 :179:1> col:1 FLECS__EEcsMember 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cb788 :180:1> col:1 FLECS__EEcsStruct 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cb800 :181:1> col:1 FLECS__EEcsArray 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cb878 :182:1> col:1 FLECS__EEcsVector 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cb8f0 :183:1> col:1 FLECS__EEcsUnit 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cb968 :184:1> col:1 FLECS__EEcsUnitPrefix 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cb9e0 col:37 EcsConstant 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cba58 col:37 EcsQuantity 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cbaf8 :185:1> col:1 FLECS__Eecs_bool_t 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cbb70 :186:1> col:1 FLECS__Eecs_char_t 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cbbe8 :187:1> col:1 FLECS__Eecs_byte_t 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cbc60 :188:1> col:1 FLECS__Eecs_u8_t 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cbcd8 :189:1> col:1 FLECS__Eecs_u16_t 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cbd50 :190:1> col:1 FLECS__Eecs_u32_t 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cbdc8 :191:1> col:1 FLECS__Eecs_u64_t 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cbe40 :192:1> col:1 FLECS__Eecs_uptr_t 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cbeb8 :193:1> col:1 FLECS__Eecs_i8_t 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cbf30 :194:1> col:1 FLECS__Eecs_i16_t 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cbfa8 :195:1> col:1 FLECS__Eecs_i32_t 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cc020 :196:1> col:1 FLECS__Eecs_i64_t 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cc098 :197:1> col:1 FLECS__Eecs_iptr_t 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cc110 :198:1> col:1 FLECS__Eecs_f32_t 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cc188 :199:1> col:1 FLECS__Eecs_f64_t 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cc200 :200:1> col:1 FLECS__Eecs_string_t 'const ecs_entity_t':'const unsigned long' extern |-VarDecl 0x5604680cc278 :201:1> col:1 FLECS__Eecs_entity_t 'const ecs_entity_t':'const unsigned long' extern |-EnumDecl 0x5604680cc308 line:12220:14 ecs_type_kind_t | |-FullComment 0x56046818b940 | | `-ParagraphComment 0x56046818b910 | | `-TextComment 0x56046818b8e0 Text=" Type kinds supported by reflection type system " | |-EnumConstantDecl 0x5604680cc3d0 col:5 EcsPrimitiveType 'int' | |-EnumConstantDecl 0x5604680cc420 col:5 EcsBitmaskType 'int' | |-EnumConstantDecl 0x5604680cc470 col:5 EcsEnumType 'int' | |-EnumConstantDecl 0x5604680cc4c0 col:5 EcsStructType 'int' | |-EnumConstantDecl 0x5604680cc510 col:5 EcsArrayType 'int' | |-EnumConstantDecl 0x5604680cc560 col:5 referenced EcsVectorType 'int' | `-EnumConstantDecl 0x5604680cc5f0 col:5 EcsTypeKindLast 'int' | `-ConstantExpr 0x5604680cc5d0 'int' | |-value: Int 5 | `-DeclRefExpr 0x5604680cc5b0 'int' EnumConstant 0x5604680cc560 'EcsVectorType' 'int' |-TypedefDecl 0x5604680cc698 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 | `-ParagraphComment 0x56046818b9e0 | `-TextComment 0x56046818b9b0 Text=" Type kinds supported by reflection type system " |-RecordDecl 0x5604680cc730 line:12231:16 struct EcsMetaType definition | |-FullComment 0x56046818bae0 | | `-ParagraphComment 0x56046818bab0 | | `-TextComment 0x56046818ba80 Text=" Component that is automatically added to every type with the right kind. " | |-FieldDecl 0x5604680cc800 col:21 kind 'ecs_type_kind_t':'enum ecs_type_kind_t' | |-FieldDecl 0x5604680cc860 col:10 existing 'bool' | |-FieldDecl 0x5604680cc8c0 col:10 partial 'bool' | |-FieldDecl 0x5604680cc920 col:16 size 'ecs_size_t':'int' | `-FieldDecl 0x5604680cc980 col:16 alignment 'ecs_size_t':'int' |-TypedefDecl 0x5604680cca28 col:3 EcsMetaType 'struct EcsMetaType':'struct EcsMetaType' | |-ElaboratedType 0x5604680cc9d0 'struct EcsMetaType' sugar | | `-RecordType 0x5604680cc7b0 'struct EcsMetaType' | | `-Record 0x5604680cc730 'EcsMetaType' | `-FullComment 0x56046818bbb0 | `-ParagraphComment 0x56046818bb80 | `-TextComment 0x56046818bb50 Text=" Component that is automatically added to every type with the right kind. " |-EnumDecl 0x5604680cca98 line:12239:14 ecs_primitive_kind_t | |-EnumConstantDecl 0x5604680ccba0 col:5 EcsBool 'int' | | `-ConstantExpr 0x5604680ccb80 'int' | | |-value: Int 1 | | `-IntegerLiteral 0x5604680ccb60 'int' 1 | |-EnumConstantDecl 0x5604680ccbf0 col:5 EcsChar 'int' | |-EnumConstantDecl 0x5604680ccc40 col:5 EcsByte 'int' | |-EnumConstantDecl 0x5604680cdcf0 col:5 EcsU8 'int' | |-EnumConstantDecl 0x5604680cdd40 col:5 EcsU16 'int' | |-EnumConstantDecl 0x5604680cdd90 col:5 EcsU32 'int' | |-EnumConstantDecl 0x5604680cdde0 col:5 EcsU64 'int' | |-EnumConstantDecl 0x5604680cde30 col:5 EcsI8 'int' | |-EnumConstantDecl 0x5604680cde80 col:5 EcsI16 'int' | |-EnumConstantDecl 0x5604680cded0 col:5 EcsI32 'int' | |-EnumConstantDecl 0x5604680cdf20 col:5 EcsI64 'int' | |-EnumConstantDecl 0x5604680cdf70 col:5 EcsF32 'int' | |-EnumConstantDecl 0x5604680cdfc0 col:5 EcsF64 'int' | |-EnumConstantDecl 0x5604680ce010 col:5 EcsUPtr 'int' | |-EnumConstantDecl 0x5604680ce060 col:5 EcsIPtr 'int' | |-EnumConstantDecl 0x5604680ce0b0 col:5 EcsString 'int' | |-EnumConstantDecl 0x5604680ce100 col:5 referenced EcsEntity 'int' | `-EnumConstantDecl 0x5604680ce190 col:5 EcsPrimitiveKindLast 'int' | `-ConstantExpr 0x5604680ce170 'int' | |-value: Int 17 | `-DeclRefExpr 0x5604680ce150 'int' EnumConstant 0x5604680ce100 'EcsEntity' 'int' |-TypedefDecl 0x5604680ce238 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:16 struct EcsPrimitive definition | `-FieldDecl 0x5604680ce380 col:26 kind 'ecs_primitive_kind_t':'enum ecs_primitive_kind_t' |-TypedefDecl 0x5604680ce428 col:3 EcsPrimitive 'struct EcsPrimitive':'struct EcsPrimitive' | `-ElaboratedType 0x5604680ce3d0 'struct EcsPrimitive' sugar | `-RecordType 0x5604680ce330 'struct EcsPrimitive' | `-Record 0x5604680ce2a8 'EcsPrimitive' |-RecordDecl 0x5604680ce498 line:12264:16 struct EcsMember definition | |-FieldDecl 0x5604680ce550 col:18 type 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x5604680ce5b0 col:13 count 'int32_t':'int' | |-FieldDecl 0x5604680ce610 col:18 unit 'ecs_entity_t':'unsigned long' | `-FieldDecl 0x5604680ce670 col:13 offset 'int32_t':'int' |-TypedefDecl 0x5604680ce718 col:3 EcsMember 'struct EcsMember':'struct EcsMember' | `-ElaboratedType 0x5604680ce6c0 'struct EcsMember' sugar | `-RecordType 0x5604680ce520 'struct EcsMember' | `-Record 0x5604680ce498 'EcsMember' |-RecordDecl 0x5604680ce788 line:12272:16 struct ecs_member_t definition | |-FieldDecl 0x5604680ce848 col:17 name 'const char *' | |-FieldDecl 0x5604680ce8a8 col:18 type 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x5604680ce908 col:13 count 'int32_t':'int' | |-FieldDecl 0x5604680ce968 col:13 offset 'int32_t':'int' | |-FieldDecl 0x5604680ce9c8 col:18 unit 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x5604680cea28 col:16 size 'ecs_size_t':'int' | `-FieldDecl 0x5604680cea88 col:18 member 'ecs_entity_t':'unsigned long' |-TypedefDecl 0x5604680ceb38 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:16 struct EcsStruct definition | `-FieldDecl 0x5604680cec60 col:19 members 'ecs_vector_t *' |-TypedefDecl 0x5604680ced08 col:3 EcsStruct 'struct EcsStruct':'struct EcsStruct' | `-ElaboratedType 0x5604680cecb0 'struct EcsStruct' sugar | `-RecordType 0x5604680cec30 'struct EcsStruct' | `-Record 0x5604680ceba8 'EcsStruct' |-RecordDecl 0x5604680ced78 line:12295:16 struct ecs_enum_constant_t definition | |-FieldDecl 0x5604680cee38 col:17 name 'const char *' | |-FieldDecl 0x5604680cee98 col:13 value 'int32_t':'int' | `-FieldDecl 0x5604680ceef8 col:18 constant 'ecs_entity_t':'unsigned long' |-TypedefDecl 0x5604680cefa8 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:16 struct EcsEnum definition | `-FieldDecl 0x5604680cf0d0 col:16 constants 'ecs_map_t *' |-TypedefDecl 0x5604680cf178 col:3 EcsEnum 'struct EcsEnum':'struct EcsEnum' | `-ElaboratedType 0x5604680cf120 'struct EcsEnum' sugar | `-RecordType 0x5604680cf0a0 'struct EcsEnum' | `-Record 0x5604680cf018 'EcsEnum' |-RecordDecl 0x5604680cf1e8 line:12311:16 struct ecs_bitmask_constant_t definition | |-FieldDecl 0x5604680cf2a8 col:17 name 'const char *' | |-FieldDecl 0x5604680cf308 col:19 value 'ecs_flags32_t':'unsigned int' | `-FieldDecl 0x5604680cf368 col:18 constant 'ecs_entity_t':'unsigned long' |-TypedefDecl 0x5604680cf418 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:16 struct EcsBitmask definition | `-FieldDecl 0x5604680cf540 col:16 constants 'ecs_map_t *' |-TypedefDecl 0x5604680cf5e8 col:3 EcsBitmask 'struct EcsBitmask':'struct EcsBitmask' | `-ElaboratedType 0x5604680cf590 'struct EcsBitmask' sugar | `-RecordType 0x5604680cf510 'struct EcsBitmask' | `-Record 0x5604680cf488 'EcsBitmask' |-RecordDecl 0x5604680cf658 line:12327:16 struct EcsArray definition | |-FieldDecl 0x5604680cf710 col:18 type 'ecs_entity_t':'unsigned long' | `-FieldDecl 0x5604680cf770 col:13 count 'int32_t':'int' |-TypedefDecl 0x5604680cf818 col:3 EcsArray 'struct EcsArray':'struct EcsArray' | `-ElaboratedType 0x5604680cf7c0 'struct EcsArray' sugar | `-RecordType 0x5604680cf6e0 'struct EcsArray' | `-Record 0x5604680cf658 'EcsArray' |-RecordDecl 0x5604680cf888 line:12332:16 struct EcsVector definition | `-FieldDecl 0x5604680cf940 col:18 type 'ecs_entity_t':'unsigned long' |-TypedefDecl 0x5604680cf9e8 col:3 EcsVector 'struct EcsVector':'struct EcsVector' | `-ElaboratedType 0x5604680cf990 'struct EcsVector' sugar | `-RecordType 0x5604680cf910 'struct EcsVector' | `-Record 0x5604680cf888 'EcsVector' |-RecordDecl 0x5604680cfa80 line:12346:16 struct ecs_unit_translation_t definition | |-FieldDecl 0x5604680cfb30 col:13 factor 'int32_t':'int' | `-FieldDecl 0x5604680cfb90 col:13 power 'int32_t':'int' |-TypedefDecl 0x5604680cfc38 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:16 struct EcsUnit definition | |-FieldDecl 0x5604680d0dc8 col:11 symbol 'char *' | |-FieldDecl 0x5604680d0e28 col:18 prefix 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x5604680d0e88 col:18 base 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x5604680d0ee8 col:18 over 'ecs_entity_t':'unsigned long' | `-FieldDecl 0x5604680d0f70 col:28 translation 'ecs_unit_translation_t':'struct ecs_unit_translation_t' |-TypedefDecl 0x5604680d1018 col:3 EcsUnit 'struct EcsUnit':'struct EcsUnit' | `-ElaboratedType 0x5604680d0fc0 'struct EcsUnit' sugar | `-RecordType 0x5604680d0d90 'struct EcsUnit' | `-Record 0x5604680d0d10 'EcsUnit' |-RecordDecl 0x5604680d1088 line:12359:16 struct EcsUnitPrefix definition | |-FieldDecl 0x5604680d1148 col:11 symbol 'char *' | `-FieldDecl 0x5604680d11a8 col:28 translation 'ecs_unit_translation_t':'struct ecs_unit_translation_t' |-TypedefDecl 0x5604680d1258 col:3 EcsUnitPrefix 'struct EcsUnitPrefix':'struct EcsUnitPrefix' | `-ElaboratedType 0x5604680d1200 'struct EcsUnitPrefix' sugar | `-RecordType 0x5604680d1110 'struct EcsUnitPrefix' | `-Record 0x5604680d1088 'EcsUnitPrefix' |-EnumDecl 0x5604680d12f0 line:12367:14 ecs_meta_type_op_kind_t | |-FullComment 0x56046818bc80 | | `-ParagraphComment 0x56046818bc50 | | `-TextComment 0x56046818bc20 Text=" Serializer utilities " | |-EnumConstantDecl 0x5604680d13b0 col:5 EcsOpArray 'int' | |-EnumConstantDecl 0x5604680d1400 col:5 EcsOpVector 'int' | |-EnumConstantDecl 0x5604680d1450 col:5 EcsOpPush 'int' | |-EnumConstantDecl 0x5604680d14a0 col:5 EcsOpPop 'int' | |-EnumConstantDecl 0x5604680d14f0 col:5 EcsOpScope 'int' | |-EnumConstantDecl 0x5604680d1540 col:5 EcsOpEnum 'int' | |-EnumConstantDecl 0x5604680d1590 col:5 EcsOpBitmask 'int' | |-EnumConstantDecl 0x5604680d15e0 col:5 EcsOpPrimitive 'int' | |-EnumConstantDecl 0x5604680d1630 col:5 EcsOpBool 'int' | |-EnumConstantDecl 0x5604680d1680 col:5 EcsOpChar 'int' | |-EnumConstantDecl 0x5604680d16d0 col:5 EcsOpByte 'int' | |-EnumConstantDecl 0x5604680d1720 col:5 EcsOpU8 'int' | |-EnumConstantDecl 0x5604680d1770 col:5 EcsOpU16 'int' | |-EnumConstantDecl 0x5604680d17c0 col:5 EcsOpU32 'int' | |-EnumConstantDecl 0x5604680d1810 col:5 EcsOpU64 'int' | |-EnumConstantDecl 0x5604680d1860 col:5 EcsOpI8 'int' | |-EnumConstantDecl 0x5604680d18b0 col:5 EcsOpI16 'int' | |-EnumConstantDecl 0x5604680d1900 col:5 EcsOpI32 'int' | |-EnumConstantDecl 0x5604680d1950 col:5 EcsOpI64 'int' | |-EnumConstantDecl 0x5604680d19a0 col:5 EcsOpF32 'int' | |-EnumConstantDecl 0x5604680d19f0 col:5 EcsOpF64 'int' | |-EnumConstantDecl 0x5604680d1a40 col:5 EcsOpUPtr 'int' | |-EnumConstantDecl 0x5604680d1a90 col:5 EcsOpIPtr 'int' | |-EnumConstantDecl 0x5604680d1ae0 col:5 EcsOpString 'int' | |-EnumConstantDecl 0x5604680d1b30 col:5 referenced EcsOpEntity 'int' | `-EnumConstantDecl 0x5604680d1bc0 col:5 EcsMetaTypeOpKindLast 'int' | `-ConstantExpr 0x5604680d1ba0 'int' | |-value: Int 24 | `-DeclRefExpr 0x5604680d1b80 'int' EnumConstant 0x5604680d1b30 'EcsOpEntity' 'int' |-TypedefDecl 0x5604680d1c68 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 | `-ParagraphComment 0x56046818bd20 | `-TextComment 0x56046818bcf0 Text=" Serializer utilities " |-RecordDecl 0x5604680d1cd8 line:12400:16 struct ecs_meta_type_op_t definition | |-FieldDecl 0x5604680d1db0 col:29 kind 'ecs_meta_type_op_kind_t':'enum ecs_meta_type_op_kind_t' | |-FieldDecl 0x5604680d1e10 col:16 offset 'ecs_size_t':'int' | |-FieldDecl 0x5604680d1e70 col:13 count 'int32_t':'int' | |-FieldDecl 0x5604680d1ed8 col:17 name 'const char *' | |-FieldDecl 0x5604680d1f38 col:13 op_count 'int32_t':'int' | |-FieldDecl 0x5604680d1f98 col:16 size 'ecs_size_t':'int' | |-FieldDecl 0x5604680d1ff8 col:18 type 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x5604680d2058 col:18 unit 'ecs_entity_t':'unsigned long' | `-FieldDecl 0x5604680d20b8 col:20 members 'ecs_hashmap_t *' |-TypedefDecl 0x5604680d2168 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:16 struct EcsMetaTypeSerialized definition | `-FieldDecl 0x5604680d2290 col:19 ops 'ecs_vector_t *' |-TypedefDecl 0x5604680d2338 col:3 EcsMetaTypeSerialized 'struct EcsMetaTypeSerialized':'struct EcsMetaTypeSerialized' | `-ElaboratedType 0x5604680d22e0 'struct EcsMetaTypeSerialized' sugar | `-RecordType 0x5604680d2260 'struct EcsMetaTypeSerialized' | `-Record 0x5604680d21d8 'EcsMetaTypeSerialized' |-RecordDecl 0x5604680d23d0 line:12421:16 struct ecs_meta_scope_t definition | |-FieldDecl 0x5604680d2480 col:18 type 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x5604680d2558 col:25 ops 'ecs_meta_type_op_t *' | |-FieldDecl 0x5604680d25b8 col:13 op_count 'int32_t':'int' | |-FieldDecl 0x5604680d2618 col:13 op_cur 'int32_t':'int' | |-FieldDecl 0x5604680d2678 col:13 elem_cur 'int32_t':'int' | |-FieldDecl 0x5604680d26d8 col:13 prev_depth 'int32_t':'int' | |-FieldDecl 0x5604680d2740 col:11 ptr 'void *' | |-FieldDecl 0x5604680d2818 col:25 comp 'const EcsComponent *' | |-FieldDecl 0x5604680d2880 col:20 vector 'ecs_vector_t **' | |-FieldDecl 0x5604680d28e0 col:10 is_collection 'bool' | `-FieldDecl 0x5604680d2940 col:10 is_inline_array 'bool' |-TypedefDecl 0x5604680d29e8 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:16 struct ecs_meta_cursor_t definition | |-FullComment 0x56046818be20 | | `-ParagraphComment 0x56046818bdf0 | | `-TextComment 0x56046818bdc0 Text=" Type that enables iterating/populating a value using reflection data " | |-FieldDecl 0x5604680d2b30 col:24 world 'const ecs_world_t *' | |-FieldDecl 0x5604680d2df8 col:22 scope 'ecs_meta_scope_t[32]' | |-FieldDecl 0x5604680d2e58 col:13 depth 'int32_t':'int' | |-FieldDecl 0x5604680d2eb8 col:10 valid 'bool' | |-FieldDecl 0x5604680d2f18 col:10 is_primitive_scope 'bool' | |-FieldDecl 0x5604680d3230 col:20 lookup_action 'ecs_entity_t (*)(const ecs_world_t *, const char *, void *)' | `-FieldDecl 0x5604680d3298 col:11 lookup_ctx 'void *' |-TypedefDecl 0x5604680d3348 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 | `-ParagraphComment 0x56046818bec0 | `-TextComment 0x56046818be90 Text=" Type that enables iterating/populating a value using reflection data " |-FunctionDecl 0x5604680d3608 line:12450:19 ecs_meta_cursor 'ecs_meta_cursor_t (const ecs_world_t *, ecs_entity_t, void *)' | |-ParmVarDecl 0x5604680d33f0 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680d3468 col:18 type 'ecs_entity_t':'unsigned long' | `-ParmVarDecl 0x5604680d34e8 col:11 ptr 'void *' |-FunctionDecl 0x5604680d3850 line:12457:7 ecs_meta_get_ptr 'void *(ecs_meta_cursor_t *)' | |-ParmVarDecl 0x5604680d3758 col:24 cursor 'ecs_meta_cursor_t *' | `-FullComment 0x56046818bfc0 | `-ParagraphComment 0x56046818bf90 | `-TextComment 0x56046818bf60 Text=" Get pointer to current field " |-FunctionDecl 0x5604680d3a30 line:12462:5 ecs_meta_next 'int (ecs_meta_cursor_t *)' | |-ParmVarDecl 0x5604680d3938 col:24 cursor 'ecs_meta_cursor_t *' | `-FullComment 0x56046818c090 | `-ParagraphComment 0x56046818c060 | `-TextComment 0x56046818c030 Text=" Move cursor to next field " |-FunctionDecl 0x5604680d3cb0 line:12467:5 ecs_meta_elem 'int (ecs_meta_cursor_t *, int32_t)' | |-ParmVarDecl 0x5604680d3b18 col:24 cursor 'ecs_meta_cursor_t *' | |-ParmVarDecl 0x5604680d3b90 col:13 elem 'int32_t':'int' | `-FullComment 0x56046818c160 | `-ParagraphComment 0x56046818c130 | `-TextComment 0x56046818c100 Text=" Move cursor to a element " |-FunctionDecl 0x5604680d3f30 line:12473:5 ecs_meta_member 'int (ecs_meta_cursor_t *, const char *)' | |-ParmVarDecl 0x5604680d3d98 col:24 cursor 'ecs_meta_cursor_t *' | |-ParmVarDecl 0x5604680d3e18 col:17 name 'const char *' | `-FullComment 0x56046818c230 | `-ParagraphComment 0x56046818c200 | `-TextComment 0x56046818c1d0 Text=" Move cursor to member " |-FunctionDecl 0x5604680d4138 line:12479:5 ecs_meta_dotmember 'int (ecs_meta_cursor_t *, const char *)' | |-ParmVarDecl 0x5604680d4018 col:24 cursor 'ecs_meta_cursor_t *' | |-ParmVarDecl 0x5604680d4098 col:17 name 'const char *' | `-FullComment 0x56046818c300 | `-ParagraphComment 0x56046818c2d0 | `-TextComment 0x56046818c2a0 Text=" Move cursor to member, supports dot-separated nested members " |-FunctionDecl 0x5604680d42c0 line:12485:5 ecs_meta_push 'int (ecs_meta_cursor_t *)' | |-ParmVarDecl 0x5604680d4228 col:24 cursor 'ecs_meta_cursor_t *' | `-FullComment 0x56046818c420 | `-ParagraphComment 0x56046818c3f0 | |-TextComment 0x56046818c370 Text=" Push a scope (required/only valid for structs " | |-TextComment 0x56046818c390 Text="&" | `-TextComment 0x56046818c3b0 Text=" collections) " |-FunctionDecl 0x5604680d4440 line:12490:5 ecs_meta_pop 'int (ecs_meta_cursor_t *)' | |-ParmVarDecl 0x5604680d43a8 col:24 cursor 'ecs_meta_cursor_t *' | `-FullComment 0x56046818c530 | `-ParagraphComment 0x56046818c500 | `-TextComment 0x56046818c4d0 Text=" Pop a struct or collection scope (must follow a push) " |-FunctionDecl 0x5604680d4678 line:12495:6 ecs_meta_is_collection 'bool (const ecs_meta_cursor_t *)' | |-ParmVarDecl 0x5604680d4588 col:30 cursor 'const ecs_meta_cursor_t *' | `-FullComment 0x56046818c600 | `-ParagraphComment 0x56046818c5d0 | `-TextComment 0x56046818c5a0 Text=" Is the current scope a collection? " |-FunctionDecl 0x5604680d4848 line:12500:14 ecs_meta_get_type 'ecs_entity_t (const ecs_meta_cursor_t *)' | |-ParmVarDecl 0x5604680d4758 col:30 cursor 'const ecs_meta_cursor_t *' | `-FullComment 0x56046818c6d0 | `-ParagraphComment 0x56046818c6a0 | `-TextComment 0x56046818c670 Text=" Get type of current element. " |-FunctionDecl 0x5604680d49b8 line:12505:14 ecs_meta_get_unit 'ecs_entity_t (const ecs_meta_cursor_t *)' | |-ParmVarDecl 0x5604680d4928 col:30 cursor 'const ecs_meta_cursor_t *' | `-FullComment 0x56046818c7a0 | `-ParagraphComment 0x56046818c770 | `-TextComment 0x56046818c740 Text=" Get unit of current element. " |-FunctionDecl 0x5604680d4b90 line:12510:13 ecs_meta_get_member 'const char *(const ecs_meta_cursor_t *)' | |-ParmVarDecl 0x5604680d4a98 col:30 cursor 'const ecs_meta_cursor_t *' | `-FullComment 0x56046818c870 | `-ParagraphComment 0x56046818c840 | `-TextComment 0x56046818c810 Text=" Get member name of current member " |-FunctionDecl 0x5604680d51a0 line:12519:5 ecs_meta_set_bool 'int (ecs_meta_cursor_t *, bool)' | |-ParmVarDecl 0x5604680d4ca8 col:24 cursor 'ecs_meta_cursor_t *' | |-ParmVarDecl 0x5604680d4d20 col:10 value 'bool' | `-FullComment 0x56046818c940 | `-ParagraphComment 0x56046818c910 | `-TextComment 0x56046818c8e0 Text=" Set field with boolean value " |-FunctionDecl 0x5604680d5420 line:12525:5 ecs_meta_set_char 'int (ecs_meta_cursor_t *, char)' | |-ParmVarDecl 0x5604680d5288 col:24 cursor 'ecs_meta_cursor_t *' | |-ParmVarDecl 0x5604680d5300 col:10 value 'char' | `-FullComment 0x56046818ca10 | `-ParagraphComment 0x56046818c9e0 | `-TextComment 0x56046818c9b0 Text=" Set field with char value " |-FunctionDecl 0x5604680d56a0 line:12531:5 ecs_meta_set_int 'int (ecs_meta_cursor_t *, int64_t)' | |-ParmVarDecl 0x5604680d5508 col:24 cursor 'ecs_meta_cursor_t *' | |-ParmVarDecl 0x5604680d5580 col:13 value 'int64_t':'long' | `-FullComment 0x56046818cae0 | `-ParagraphComment 0x56046818cab0 | `-TextComment 0x56046818ca80 Text=" Set field with int value " |-FunctionDecl 0x5604680d5920 line:12537:5 ecs_meta_set_uint 'int (ecs_meta_cursor_t *, uint64_t)' | |-ParmVarDecl 0x5604680d5788 col:24 cursor 'ecs_meta_cursor_t *' | |-ParmVarDecl 0x5604680d5800 col:14 value 'uint64_t':'unsigned long' | `-FullComment 0x56046818cbb0 | `-ParagraphComment 0x56046818cb80 | `-TextComment 0x56046818cb50 Text=" Set field with uint value " |-FunctionDecl 0x5604680d5ba0 line:12543:5 ecs_meta_set_float 'int (ecs_meta_cursor_t *, double)' | |-ParmVarDecl 0x5604680d5a08 col:24 cursor 'ecs_meta_cursor_t *' | |-ParmVarDecl 0x5604680d5a88 col:12 value 'double' | `-FullComment 0x56046818cc80 | `-ParagraphComment 0x56046818cc50 | `-TextComment 0x56046818cc20 Text=" Set field with float value " |-FunctionDecl 0x5604680d5da8 line:12549:5 ecs_meta_set_string 'int (ecs_meta_cursor_t *, const char *)' | |-ParmVarDecl 0x5604680d5c88 col:24 cursor 'ecs_meta_cursor_t *' | |-ParmVarDecl 0x5604680d5d08 col:17 value 'const char *' | `-FullComment 0x56046818cd50 | `-ParagraphComment 0x56046818cd20 | `-TextComment 0x56046818ccf0 Text=" Set field with string value " |-FunctionDecl 0x5604680d5fb8 line:12555:5 ecs_meta_set_string_literal 'int (ecs_meta_cursor_t *, const char *)' | |-ParmVarDecl 0x5604680d5e98 col:24 cursor 'ecs_meta_cursor_t *' | |-ParmVarDecl 0x5604680d5f18 col:17 value 'const char *' | `-FullComment 0x56046818ce20 | `-ParagraphComment 0x56046818cdf0 | `-TextComment 0x56046818cdc0 Text=" Set field with string literal value (has enclosing "") " |-FunctionDecl 0x5604680d6200 line:12561:5 ecs_meta_set_entity 'int (ecs_meta_cursor_t *, ecs_entity_t)' | |-ParmVarDecl 0x5604680d60a8 col:24 cursor 'ecs_meta_cursor_t *' | |-ParmVarDecl 0x5604680d6120 col:18 value 'ecs_entity_t':'unsigned long' | `-FullComment 0x56046818cef0 | `-ParagraphComment 0x56046818cec0 | `-TextComment 0x56046818ce90 Text=" Set field with entity value " |-FunctionDecl 0x5604680d6380 line:12567:5 ecs_meta_set_null 'int (ecs_meta_cursor_t *)' | |-ParmVarDecl 0x5604680d62e8 col:24 cursor 'ecs_meta_cursor_t *' | `-FullComment 0x56046818cfc0 | `-ParagraphComment 0x56046818cf90 | `-TextComment 0x56046818cf60 Text=" Set field with null value " |-FunctionDecl 0x5604680d6670 line:12572:5 ecs_meta_set_value 'int (ecs_meta_cursor_t *, const ecs_value_t *)' | |-ParmVarDecl 0x5604680d6468 col:24 cursor 'ecs_meta_cursor_t *' | |-ParmVarDecl 0x5604680d6558 col:24 value 'const ecs_value_t *' | `-FullComment 0x56046818d090 | `-ParagraphComment 0x56046818d060 | `-TextComment 0x56046818d030 Text=" Set field with dynamic value " |-FunctionDecl 0x5604680d6818 line:12580:6 ecs_meta_get_bool 'bool (const ecs_meta_cursor_t *)' | |-ParmVarDecl 0x5604680d6788 col:30 cursor 'const ecs_meta_cursor_t *' | `-FullComment 0x56046818d160 | `-ParagraphComment 0x56046818d130 | `-TextComment 0x56046818d100 Text=" Get field value as boolean. " |-FunctionDecl 0x5604680d69e8 line:12585:6 ecs_meta_get_char 'char (const ecs_meta_cursor_t *)' | |-ParmVarDecl 0x5604680d68f8 col:30 cursor 'const ecs_meta_cursor_t *' | `-FullComment 0x56046818d230 | `-ParagraphComment 0x56046818d200 | `-TextComment 0x56046818d1d0 Text=" Get field value as char. " |-FunctionDecl 0x5604680d6bb8 line:12590:9 ecs_meta_get_int 'int64_t (const ecs_meta_cursor_t *)' | |-ParmVarDecl 0x5604680d6ac8 col:30 cursor 'const ecs_meta_cursor_t *' | `-FullComment 0x56046818d300 | `-ParagraphComment 0x56046818d2d0 | `-TextComment 0x56046818d2a0 Text=" Get field value as signed integer. " |-FunctionDecl 0x5604680d6d58 line:12595:10 ecs_meta_get_uint 'uint64_t (const ecs_meta_cursor_t *)' | |-ParmVarDecl 0x5604680d6c98 col:30 cursor 'const ecs_meta_cursor_t *' | `-FullComment 0x56046818d3d0 | `-ParagraphComment 0x56046818d3a0 | `-TextComment 0x56046818d370 Text=" Get field value as unsigned integer. " |-FunctionDecl 0x5604680d6f30 line:12600:8 ecs_meta_get_float 'double (const ecs_meta_cursor_t *)' | |-ParmVarDecl 0x5604680d6e38 col:30 cursor 'const ecs_meta_cursor_t *' | `-FullComment 0x56046818d4a0 | `-ParagraphComment 0x56046818d470 | `-TextComment 0x56046818d440 Text=" Get field value as float. " |-FunctionDecl 0x5604680d8510 line:12608:13 ecs_meta_get_string 'const char *(const ecs_meta_cursor_t *)' | |-ParmVarDecl 0x5604680d7018 col:30 cursor 'const ecs_meta_cursor_t *' | `-FullComment 0x56046818d5c0 | `-ParagraphComment 0x56046818d590 | |-TextComment 0x56046818d510 Text=" Get field value as string. " | |-TextComment 0x56046818d530 Text=" This operation does not perform conversions. If the field is not a string," | `-TextComment 0x56046818d550 Text=" this operation will fail." |-FunctionDecl 0x5604680d8688 line:12614:14 ecs_meta_get_entity 'ecs_entity_t (const ecs_meta_cursor_t *)' | |-ParmVarDecl 0x5604680d85f8 col:30 cursor 'const ecs_meta_cursor_t *' | `-FullComment 0x56046818d6b0 | `-ParagraphComment 0x56046818d680 | |-TextComment 0x56046818d630 Text=" Get field value as entity. " | `-TextComment 0x56046818d650 Text=" This operation does not perform conversions. " |-RecordDecl 0x5604680d8788 line:12620:16 struct ecs_primitive_desc_t definition | |-FullComment 0x56046818d780 | | `-ParagraphComment 0x56046818d750 | | `-TextComment 0x56046818d720 Text=" Used with ecs_primitive_init. " | |-FieldDecl 0x5604680d8840 col:18 entity 'ecs_entity_t':'unsigned long' | `-FieldDecl 0x5604680d88a0 col:26 kind 'ecs_primitive_kind_t':'enum ecs_primitive_kind_t' |-TypedefDecl 0x5604680d8948 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 | `-ParagraphComment 0x56046818d820 | `-TextComment 0x56046818d7f0 Text=" Used with ecs_primitive_init. " |-FunctionDecl 0x5604680d8bf8 line:12628:14 ecs_primitive_init 'ecs_entity_t (ecs_world_t *, const ecs_primitive_desc_t *)' | |-ParmVarDecl 0x5604680d89f0 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680d8ae8 col:33 desc 'const ecs_primitive_desc_t *' | `-FullComment 0x56046818d920 | `-ParagraphComment 0x56046818d8f0 | `-TextComment 0x56046818d8c0 Text=" Create a new primitive type " |-RecordDecl 0x5604680d8cd8 line:12633:16 struct ecs_enum_desc_t definition | |-FullComment 0x56046818d9f0 | | `-ParagraphComment 0x56046818d9c0 | | `-TextComment 0x56046818d990 Text=" Used with ecs_enum_init. " | |-FieldDecl 0x5604680d8d90 col:18 entity 'ecs_entity_t':'unsigned long' | `-FieldDecl 0x5604680d8f68 col:25 constants 'ecs_enum_constant_t[32]' |-TypedefDecl 0x5604680d9018 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 | `-ParagraphComment 0x56046818da90 | `-TextComment 0x56046818da60 Text=" Used with ecs_enum_init. " |-FunctionDecl 0x5604680d92c8 line:12641:14 ecs_enum_init 'ecs_entity_t (ecs_world_t *, const ecs_enum_desc_t *)' | |-ParmVarDecl 0x5604680d90c0 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680d91b8 col:28 desc 'const ecs_enum_desc_t *' | `-FullComment 0x56046818db90 | `-ParagraphComment 0x56046818db60 | `-TextComment 0x56046818db30 Text=" Create a new enum type " |-RecordDecl 0x5604680d93a8 line:12647:16 struct ecs_bitmask_desc_t definition | |-FullComment 0x56046818dc60 | | `-ParagraphComment 0x56046818dc30 | | `-TextComment 0x56046818dc00 Text=" Used with ecs_bitmask_init. " | |-FieldDecl 0x5604680d9460 col:18 entity 'ecs_entity_t':'unsigned long' | `-FieldDecl 0x5604680d9638 col:28 constants 'ecs_bitmask_constant_t[32]' |-TypedefDecl 0x5604680d96e8 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 | `-ParagraphComment 0x56046818dd00 | `-TextComment 0x56046818dcd0 Text=" Used with ecs_bitmask_init. " |-FunctionDecl 0x5604680d9998 line:12655:14 ecs_bitmask_init 'ecs_entity_t (ecs_world_t *, const ecs_bitmask_desc_t *)' | |-ParmVarDecl 0x5604680d9790 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680d9888 col:31 desc 'const ecs_bitmask_desc_t *' | `-FullComment 0x56046818de00 | `-ParagraphComment 0x56046818ddd0 | `-TextComment 0x56046818dda0 Text=" Create a new bitmask type " |-RecordDecl 0x5604680d9a78 line:12661:16 struct ecs_array_desc_t definition | |-FullComment 0x56046818ded0 | | `-ParagraphComment 0x56046818dea0 | | `-TextComment 0x56046818de70 Text=" Used with ecs_array_init. " | |-FieldDecl 0x5604680d9b30 col:18 entity 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x5604680d9b90 col:18 type 'ecs_entity_t':'unsigned long' | `-FieldDecl 0x5604680d9bf0 col:13 count 'int32_t':'int' |-TypedefDecl 0x5604680d9c98 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 | `-ParagraphComment 0x56046818df70 | `-TextComment 0x56046818df40 Text=" Used with ecs_array_init. " |-FunctionDecl 0x5604680d9f48 line:12670:14 ecs_array_init 'ecs_entity_t (ecs_world_t *, const ecs_array_desc_t *)' | |-ParmVarDecl 0x5604680d9d40 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680d9e38 col:29 desc 'const ecs_array_desc_t *' | `-FullComment 0x56046818e070 | `-ParagraphComment 0x56046818e040 | `-TextComment 0x56046818e010 Text=" Create a new array type " |-RecordDecl 0x5604680da028 line:12676:16 struct ecs_vector_desc_t definition | |-FullComment 0x56046818e140 | | `-ParagraphComment 0x56046818e110 | | `-TextComment 0x56046818e0e0 Text=" Used with ecs_vector_init. " | |-FieldDecl 0x5604680da0e0 col:18 entity 'ecs_entity_t':'unsigned long' | `-FieldDecl 0x5604680da140 col:18 type 'ecs_entity_t':'unsigned long' |-TypedefDecl 0x5604680da1e8 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 | `-ParagraphComment 0x56046818e1e0 | `-TextComment 0x56046818e1b0 Text=" Used with ecs_vector_init. " |-FunctionDecl 0x5604680da820 line:12684:14 ecs_vector_init 'ecs_entity_t (ecs_world_t *, const ecs_vector_desc_t *)' | |-ParmVarDecl 0x5604680da290 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680da388 col:30 desc 'const ecs_vector_desc_t *' | `-FullComment 0x56046818e2e0 | `-ParagraphComment 0x56046818e2b0 | `-TextComment 0x56046818e280 Text=" Create a new vector type " |-RecordDecl 0x5604680da8f8 line:12690:16 struct ecs_struct_desc_t definition | |-FullComment 0x56046818e3b0 | | `-ParagraphComment 0x56046818e380 | | `-TextComment 0x56046818e350 Text=" Used with ecs_struct_init. " | |-FieldDecl 0x5604680da9b0 col:18 entity 'ecs_entity_t':'unsigned long' | `-FieldDecl 0x5604680daba8 col:18 members 'ecs_member_t[32]' |-TypedefDecl 0x5604680dac58 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 | `-ParagraphComment 0x56046818e450 | `-TextComment 0x56046818e420 Text=" Used with ecs_struct_init. " |-FunctionDecl 0x5604680daf08 line:12698:14 ecs_struct_init 'ecs_entity_t (ecs_world_t *, const ecs_struct_desc_t *)' | |-ParmVarDecl 0x5604680dad00 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680dadf8 col:30 desc 'const ecs_struct_desc_t *' | `-FullComment 0x56046818e570 | `-ParagraphComment 0x56046818e540 | `-TextComment 0x56046818e510 Text=" Create a new struct type " |-RecordDecl 0x5604680dafe8 line:12703:16 struct ecs_unit_desc_t definition | |-FullComment 0x56046818e640 | | `-ParagraphComment 0x56046818e610 | | `-TextComment 0x56046818e5e0 Text=" Used with ecs_unit_init. " | |-FieldDecl 0x5604680db0a0 col:18 entity 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x5604680db108 col:17 symbol 'const char *' | |-FieldDecl 0x5604680db168 col:18 quantity 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x5604680db1c8 col:18 base 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x5604680db228 col:18 over 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x5604680db288 col:28 translation 'ecs_unit_translation_t':'struct ecs_unit_translation_t' | `-FieldDecl 0x5604680db2e8 col:18 prefix 'ecs_entity_t':'unsigned long' |-TypedefDecl 0x5604680db398 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 | `-ParagraphComment 0x56046818e6e0 | `-TextComment 0x56046818e6b0 Text=" Used with ecs_unit_init. " |-FunctionDecl 0x5604680db648 line:12733:14 ecs_unit_init 'ecs_entity_t (ecs_world_t *, const ecs_unit_desc_t *)' | |-ParmVarDecl 0x5604680db440 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680db538 col:28 desc 'const ecs_unit_desc_t *' | `-FullComment 0x56046818e7e0 | `-ParagraphComment 0x56046818e7b0 | `-TextComment 0x56046818e780 Text=" Create a new unit " |-RecordDecl 0x5604680db728 line:12738:16 struct ecs_unit_prefix_desc_t definition | |-FullComment 0x56046818e8b0 | | `-ParagraphComment 0x56046818e880 | | `-TextComment 0x56046818e850 Text=" Used with ecs_unit_prefix_init. " | |-FieldDecl 0x5604680db7e0 col:18 entity 'ecs_entity_t':'unsigned long' | |-FieldDecl 0x5604680db848 col:17 symbol 'const char *' | `-FieldDecl 0x5604680db8a8 col:28 translation 'ecs_unit_translation_t':'struct ecs_unit_translation_t' |-TypedefDecl 0x5604680db958 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 | `-ParagraphComment 0x56046818e950 | `-TextComment 0x56046818e920 Text=" Used with ecs_unit_prefix_init. " |-FunctionDecl 0x5604680dbc08 line:12751:14 ecs_unit_prefix_init 'ecs_entity_t (ecs_world_t *, const ecs_unit_prefix_desc_t *)' | |-ParmVarDecl 0x5604680dba00 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680dbaf8 col:35 desc 'const ecs_unit_prefix_desc_t *' | `-FullComment 0x56046818ea50 | `-ParagraphComment 0x56046818ea20 | `-TextComment 0x56046818e9f0 Text=" Create a new unit prefix " |-FunctionDecl 0x5604680dbe08 line:12757:14 ecs_quantity_init 'ecs_entity_t (ecs_world_t *, const ecs_entity_desc_t *)' | |-ParmVarDecl 0x5604680dbcf8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680dbd70 col:30 desc 'const ecs_entity_desc_t *' | `-FullComment 0x56046818eb20 | `-ParagraphComment 0x56046818eaf0 | `-TextComment 0x56046818eac0 Text=" Create a new quantity " |-FunctionDecl 0x5604680dbf58 line:12792:6 FlecsMetaImport 'void (ecs_world_t *)' | `-ParmVarDecl 0x5604680dbec8 col:18 world 'ecs_world_t *' |-FunctionDecl 0x5604680dc2b0 line:12874:7 ecs_chresc 'char *(char *, char, char)' | |-ParmVarDecl 0x5604680dc0d0 col:11 out 'char *' | |-ParmVarDecl 0x5604680dc148 col:10 in 'char' | |-ParmVarDecl 0x5604680dc1c0 col:10 delimiter 'char' | `-FullComment 0x56046818ef70 | |-ParagraphComment 0x56046818ebe0 | | |-TextComment 0x56046818eb90 Text=" Write an escaped character." | | `-TextComment 0x56046818ebb0 Text=" Write a character to an output string, insert escape character if necessary." | |-ParagraphComment 0x56046818ec30 | | `-TextComment 0x56046818ec00 Text=" " | |-ParamCommandComment 0x56046818ec50 [in] implicitly Param="out" ParamIndex=0 | | `-ParagraphComment 0x56046818ed00 | | |-TextComment 0x56046818ecb0 Text=" The string to write the character to." | | `-TextComment 0x56046818ecd0 Text=" " | |-ParamCommandComment 0x56046818ed20 [in] implicitly Param="in" ParamIndex=1 | | `-ParagraphComment 0x56046818edd0 | | |-TextComment 0x56046818ed80 Text=" The input character." | | `-TextComment 0x56046818eda0 Text=" " | |-ParamCommandComment 0x56046818edf0 [in] implicitly Param="delimiter" ParamIndex=2 | | `-ParagraphComment 0x56046818eea0 | | |-TextComment 0x56046818ee50 Text=" The delimiiter used (for example '"')" | | `-TextComment 0x56046818ee70 Text=" " | `-BlockCommandComment 0x56046818eec0 Name="return" | `-ParagraphComment 0x56046818ef20 | `-TextComment 0x56046818eef0 Text=" Pointer to the character after the last one written." |-FunctionDecl 0x5604680dc510 line:12886:13 ecs_chrparse 'const char *(const char *, char *)' | |-ParmVarDecl 0x5604680dc3b0 col:17 in 'const char *' | |-ParmVarDecl 0x5604680dc430 col:11 out 'char *' | `-FullComment 0x56046818f2f0 | |-ParagraphComment 0x56046818f030 | | |-TextComment 0x56046818efe0 Text=" Parse an escaped character." | | `-TextComment 0x56046818f000 Text=" Parse a character with a potential escape sequence." | |-ParagraphComment 0x56046818f080 | | `-TextComment 0x56046818f050 Text=" " | |-ParamCommandComment 0x56046818f0a0 [in] implicitly Param="in" ParamIndex=0 | | `-ParagraphComment 0x56046818f150 | | |-TextComment 0x56046818f100 Text=" Pointer to character in input string." | | `-TextComment 0x56046818f120 Text=" " | |-ParamCommandComment 0x56046818f170 [in] implicitly Param="out" ParamIndex=1 | | `-ParagraphComment 0x56046818f220 | | |-TextComment 0x56046818f1d0 Text=" Output string." | | `-TextComment 0x56046818f1f0 Text=" " | `-BlockCommandComment 0x56046818f240 Name="return" | `-ParagraphComment 0x56046818f2a0 | `-TextComment 0x56046818f270 Text=" Pointer to the character after the last one read." |-FunctionDecl 0x5604680deaf8 line:12903:12 ecs_stresc 'ecs_size_t (char *, ecs_size_t, char, const char *)' | |-ParmVarDecl 0x5604680dc600 col:11 out 'char *' | |-ParmVarDecl 0x5604680dc678 col:16 size 'ecs_size_t':'int' | |-ParmVarDecl 0x5604680dc6f0 col:10 delimiter 'char' | |-ParmVarDecl 0x5604680dc770 col:17 in 'const char *' | `-FullComment 0x56046818f8a0 | |-ParagraphComment 0x56046818f430 | | |-TextComment 0x56046818f360 Text=" Write an escaped string." | | |-TextComment 0x56046818f380 Text=" Write an input string to an output string, escape characters where necessary." | | |-TextComment 0x56046818f3a0 Text=" To determine the size of the output string, call the operation with a NULL" | | |-TextComment 0x56046818f3c0 Text=" argument for 'out', and use the returned size to allocate a string that is" | | `-TextComment 0x56046818f3e0 Text=" large enough." | |-ParagraphComment 0x56046818f480 | | `-TextComment 0x56046818f450 Text=" " | |-ParamCommandComment 0x56046818f4a0 [in] implicitly Param="out" ParamIndex=0 | | `-ParagraphComment 0x56046818f550 | | |-TextComment 0x56046818f500 Text=" Pointer to output string (msut be)." | | `-TextComment 0x56046818f520 Text=" " | |-ParamCommandComment 0x56046818f570 [in] implicitly Param="size" ParamIndex=1 | | `-ParagraphComment 0x56046818f620 | | |-TextComment 0x56046818f5d0 Text=" Maximum number of characters written to output." | | `-TextComment 0x56046818f5f0 Text=" " | |-ParamCommandComment 0x56046818f640 [in] implicitly Param="delimiter" ParamIndex=2 | | `-ParagraphComment 0x56046818f6f0 | | |-TextComment 0x56046818f6a0 Text=" The delimiter used (for example '"')." | | `-TextComment 0x56046818f6c0 Text=" " | |-ParamCommandComment 0x56046818f710 [in] implicitly Param="in" ParamIndex=3 | | `-ParagraphComment 0x56046818f7c0 | | |-TextComment 0x56046818f770 Text=" The input string." | | `-TextComment 0x56046818f790 Text=" " | `-BlockCommandComment 0x56046818f7e0 Name="return" | `-ParagraphComment 0x56046818f840 | `-TextComment 0x56046818f810 Text=" The number of characters that (would) have been written." |-FunctionDecl 0x5604680ded50 line:12918:7 ecs_astresc 'char *(char, const char *)' | |-ParmVarDecl 0x5604680debf8 col:10 delimiter 'char' | |-ParmVarDecl 0x5604680dec78 col:17 in 'const char *' | `-FullComment 0x56046818fc50 | |-ParagraphComment 0x56046818f990 | | |-TextComment 0x56046818f910 Text=" Return escaped string." | | |-TextComment 0x56046818f930 Text=" Return escaped version of input string. Same as ecs_stresc, but returns an" | | `-TextComment 0x56046818f950 Text=" allocated string of the right size." | |-ParagraphComment 0x56046818f9e0 | | `-TextComment 0x56046818f9b0 Text=" " | |-ParamCommandComment 0x56046818fa00 [in] implicitly Param="delimiter" ParamIndex=0 | | `-ParagraphComment 0x56046818fab0 | | |-TextComment 0x56046818fa60 Text=" The delimiter used (for example '"')." | | `-TextComment 0x56046818fa80 Text=" " | |-ParamCommandComment 0x56046818fad0 [in] implicitly Param="in" ParamIndex=1 | | `-ParagraphComment 0x56046818fb80 | | |-TextComment 0x56046818fb30 Text=" The input string." | | `-TextComment 0x56046818fb50 Text=" " | `-BlockCommandComment 0x56046818fba0 Name="return" | `-ParagraphComment 0x56046818fc00 | `-TextComment 0x56046818fbd0 Text=" Escaped string." |-RecordDecl 0x5604680dee28 line:12924:16 struct ecs_expr_var_t definition | |-FullComment 0x56046818fd40 | | `-ParagraphComment 0x56046818fd10 | | |-TextComment 0x56046818fcc0 Text=" Storage for parser variables. Variables make it possible to parameterize" | | `-TextComment 0x56046818fce0 Text=" expression strings, and are referenced with the $ operator (e.g. $var). " | |-FieldDecl 0x5604680deee8 col:11 name 'char *' | `-FieldDecl 0x5604680def48 col:17 value 'ecs_value_t':'struct ecs_value_t' |-TypedefDecl 0x5604680deff8 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 | `-ParagraphComment 0x56046818fe00 | |-TextComment 0x56046818fdb0 Text=" Storage for parser variables. Variables make it possible to parameterize" | `-TextComment 0x56046818fdd0 Text=" expression strings, and are referenced with the $ operator (e.g. $var). " |-RecordDecl 0x5604680df068 line:12929:16 struct ecs_expr_var_scope_t definition | |-FieldDecl 0x5604680df120 col:19 var_index 'ecs_hashmap_t':'ecs_hashmap_t' | |-FieldDecl 0x5604680df180 col:15 vars 'ecs_vec_t':'struct ecs_vec_t' | `-FieldDecl 0x5604680df280 col:34 parent 'struct ecs_expr_var_scope_t *' |-TypedefDecl 0x5604680df3a8 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:16 struct ecs_vars_t definition | |-FieldDecl 0x5604680df4d0 col:18 world 'ecs_world_t *' | |-FieldDecl 0x5604680df550 col:26 root 'ecs_expr_var_scope_t':'struct ecs_expr_var_scope_t' | `-FieldDecl 0x5604680df5d8 col:27 cur 'ecs_expr_var_scope_t *' |-TypedefDecl 0x5604680df688 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:6 ecs_vars_init 'void (ecs_world_t *, ecs_vars_t *)' | |-ParmVarDecl 0x5604680df730 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680df828 col:17 vars 'ecs_vars_t *' | `-FullComment 0x56046818ff00 | `-ParagraphComment 0x56046818fed0 | `-TextComment 0x56046818fea0 Text=" Init variable storage " |-FunctionDecl 0x5604680dfb18 line:12949:6 ecs_vars_fini 'void (ecs_vars_t *)' | |-ParmVarDecl 0x5604680dfa28 col:17 vars 'ecs_vars_t *' | `-FullComment 0x56046818ffd0 | `-ParagraphComment 0x56046818ffa0 | `-TextComment 0x56046818ff70 Text=" Cleanup variable storage " |-FunctionDecl 0x5604680dfc88 line:12954:6 ecs_vars_push 'void (ecs_vars_t *)' | |-ParmVarDecl 0x5604680dfbf8 col:17 vars 'ecs_vars_t *' | `-FullComment 0x5604681900a0 | `-ParagraphComment 0x560468190070 | `-TextComment 0x560468190040 Text=" Push variable scope " |-FunctionDecl 0x5604680dfe60 line:12959:5 ecs_vars_pop 'int (ecs_vars_t *)' | |-ParmVarDecl 0x5604680dfd68 col:17 vars 'ecs_vars_t *' | `-FullComment 0x560468190170 | `-ParagraphComment 0x560468190140 | `-TextComment 0x560468190110 Text=" Pop variable scope " |-FunctionDecl 0x5604680e01e8 line:12964:17 ecs_vars_declare 'ecs_expr_var_t *(ecs_vars_t *, const char *, ecs_entity_t)' | |-ParmVarDecl 0x5604680dff70 col:17 vars 'ecs_vars_t *' | |-ParmVarDecl 0x5604680dfff0 col:17 name 'const char *' | |-ParmVarDecl 0x5604680e0068 col:18 type 'ecs_entity_t':'unsigned long' | `-FullComment 0x560468190240 | `-ParagraphComment 0x560468190210 | `-TextComment 0x5604681901e0 Text=" Declare variable in current scope " |-FunctionDecl 0x5604680e0548 line:12974:17 ecs_vars_declare_w_value 'ecs_expr_var_t *(ecs_vars_t *, const char *, ecs_value_t *)' | |-ParmVarDecl 0x5604680e02d8 col:17 vars 'ecs_vars_t *' | |-ParmVarDecl 0x5604680e0358 col:17 name 'const char *' | |-ParmVarDecl 0x5604680e0428 col:18 value 'ecs_value_t *' | `-FullComment 0x560468190360 | `-ParagraphComment 0x560468190330 | |-TextComment 0x5604681902b0 Text=" Declare variable in current scope from value." | |-TextComment 0x5604681902d0 Text=" This operation takes ownership of the value. The value pointer must be " | `-TextComment 0x5604681902f0 Text=" allocated with ecs_value_new." |-FunctionDecl 0x5604680e07c8 line:12981:17 ecs_vars_lookup 'ecs_expr_var_t *(ecs_vars_t *, const char *)' | |-ParmVarDecl 0x5604680e0638 col:17 vars 'ecs_vars_t *' | |-ParmVarDecl 0x5604680e06b8 col:17 name 'const char *' | `-FullComment 0x560468190430 | `-ParagraphComment 0x560468190400 | `-TextComment 0x5604681903d0 Text=" Lookup variable in scope and parent scopes " |-RecordDecl 0x5604680e08a8 line:12986:16 struct ecs_parse_expr_desc_t definition | |-FullComment 0x560468190510 | | `-ParagraphComment 0x5604681904e0 | | `-TextComment 0x5604681904b0 Text=" Used with ecs_parse_expr. " | |-FieldDecl 0x5604680e0968 col:17 name 'const char *' | |-FieldDecl 0x5604680e09d0 col:17 expr 'const char *' | |-FieldDecl 0x5604680e3c80 line:12989:20 lookup_action 'ecs_entity_t (*)(const ecs_world_t *, const char *, void *)' | |-FieldDecl 0x5604680e3ce8 col:11 lookup_ctx 'void *' | `-FieldDecl 0x5604680e3d48 col:17 vars 'ecs_vars_t *' |-TypedefDecl 0x5604680e3df8 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 | `-ParagraphComment 0x5604681905b0 | `-TextComment 0x560468190580 Text=" Used with ecs_parse_expr. " |-FunctionDecl 0x5604680e41d0 line:13012:13 ecs_parse_expr 'const char *(ecs_world_t *, const char *, ecs_value_t *, const ecs_parse_expr_desc_t *)' | |-ParmVarDecl 0x5604680e3ea0 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680e3f20 col:17 ptr 'const char *' | |-ParmVarDecl 0x5604680e3f98 col:18 value 'ecs_value_t *' | |-ParmVarDecl 0x5604680e4088 col:34 desc 'const ecs_parse_expr_desc_t *' | `-FullComment 0x560468190c30 | |-ParagraphComment 0x5604681906d0 | | |-TextComment 0x560468190650 Text=" Parse expression into value." | | |-TextComment 0x560468190670 Text=" This operation parses a flecs expression into the provided pointer. The" | | `-TextComment 0x560468190690 Text=" memory pointed to must be large enough to contain a value of the used type." | |-ParagraphComment 0x560468190770 | | |-TextComment 0x5604681906f0 Text=" If no type and pointer are provided for the value argument, the operation " | | |-TextComment 0x560468190710 Text=" will discover the type from the expression and allocate storage for the " | | `-TextComment 0x560468190730 Text=" value. The allocated value must be freed with ecs_value_free." | |-ParagraphComment 0x5604681907c0 | | `-TextComment 0x560468190790 Text=" " | |-ParamCommandComment 0x5604681907e0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468190890 | | |-TextComment 0x560468190840 Text=" The world." | | `-TextComment 0x560468190860 Text=" " | |-ParamCommandComment 0x5604681908b0 [in] implicitly Param="ptr" ParamIndex=1 | | `-ParagraphComment 0x560468190960 | | |-TextComment 0x560468190910 Text=" The pointer to the expression to parse." | | `-TextComment 0x560468190930 Text=" " | |-ParamCommandComment 0x560468190980 [in] implicitly Param="value" ParamIndex=2 | | `-ParagraphComment 0x560468190a80 | | |-TextComment 0x5604681909e0 Text=" The value containing type " | | |-TextComment 0x560468190a00 Text="&" | | |-TextComment 0x560468190a20 Text=" pointer to write to." | | `-TextComment 0x560468190a40 Text=" " | |-ParamCommandComment 0x560468190aa0 [in] implicitly Param="desc" ParamIndex=3 | | `-ParagraphComment 0x560468190b50 | | |-TextComment 0x560468190b00 Text=" Configuration parameters for deserializer." | | `-TextComment 0x560468190b20 Text=" " | `-BlockCommandComment 0x560468190b70 Name="return" | `-ParagraphComment 0x560468190bd0 | `-TextComment 0x560468190ba0 Text=" Pointer to the character after the last one read, or NULL if failed." |-FunctionDecl 0x5604680e4468 line:13028:7 ecs_ptr_to_expr 'char *(const ecs_world_t *, ecs_entity_t, const void *)' | |-ParmVarDecl 0x5604680e42c8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680e4340 col:18 type 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680e43c0 col:17 data 'const void *' | `-FullComment 0x5604681910b0 | |-ParagraphComment 0x560468190d20 | | |-TextComment 0x560468190ca0 Text=" Serialize value into expression string." | | |-TextComment 0x560468190cc0 Text=" This operation serializes a value of the provided type to a string. The " | | `-TextComment 0x560468190ce0 Text=" memory pointed to must be large enough to contain a value of the used type." | |-ParagraphComment 0x560468190d70 | | `-TextComment 0x560468190d40 Text=" " | |-ParamCommandComment 0x560468190d90 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468190e40 | | |-TextComment 0x560468190df0 Text=" The world." | | `-TextComment 0x560468190e10 Text=" " | |-ParamCommandComment 0x560468190e60 [in] implicitly Param="type" ParamIndex=1 | | `-ParagraphComment 0x560468190f10 | | |-TextComment 0x560468190ec0 Text=" The type of the value to serialize." | | `-TextComment 0x560468190ee0 Text=" " | |-ParamCommandComment 0x560468190f30 [in] implicitly Param="data" ParamIndex=2 | | `-ParagraphComment 0x560468190fe0 | | |-TextComment 0x560468190f90 Text=" The value to serialize." | | `-TextComment 0x560468190fb0 Text=" " | `-BlockCommandComment 0x560468191000 Name="return" | `-ParagraphComment 0x560468191060 | `-TextComment 0x560468191030 Text=" String with expression, or NULL if failed." |-FunctionDecl 0x5604680e4778 line:13043:5 ecs_ptr_to_expr_buf 'int (const ecs_world_t *, ecs_entity_t, const void *, ecs_strbuf_t *)' | |-ParmVarDecl 0x5604680e4558 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680e45d0 col:18 type 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680e4650 col:17 data 'const void *' | |-ParmVarDecl 0x5604680e46c8 col:19 buf 'ecs_strbuf_t *' | `-FullComment 0x5604681915e0 | |-ParagraphComment 0x560468191170 | | |-TextComment 0x560468191120 Text=" Serialize value into string buffer." | | `-TextComment 0x560468191140 Text=" Same as ecs_ptr_to_expr, but serializes to an ecs_strbuf_t instance." | |-ParagraphComment 0x5604681911c0 | | `-TextComment 0x560468191190 Text=" " | |-ParamCommandComment 0x5604681911e0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468191290 | | |-TextComment 0x560468191240 Text=" The world." | | `-TextComment 0x560468191260 Text=" " | |-ParamCommandComment 0x5604681912b0 [in] implicitly Param="type" ParamIndex=1 | | `-ParagraphComment 0x560468191360 | | |-TextComment 0x560468191310 Text=" The type of the value to serialize." | | `-TextComment 0x560468191330 Text=" " | |-ParamCommandComment 0x560468191380 [in] implicitly Param="data" ParamIndex=2 | | `-ParagraphComment 0x560468191430 | | |-TextComment 0x5604681913e0 Text=" The value to serialize." | | `-TextComment 0x560468191400 Text=" " | |-ParamCommandComment 0x560468191450 [in] implicitly Param="buf" ParamIndex=3 | | `-ParagraphComment 0x560468191500 | | |-TextComment 0x5604681914b0 Text=" The strbuf to append the string to." | | `-TextComment 0x5604681914d0 Text=" " | `-BlockCommandComment 0x560468191520 Name="return" | `-ParagraphComment 0x560468191580 | `-TextComment 0x560468191550 Text=" Zero if success, non-zero if failed." |-FunctionDecl 0x5604680e4b30 line:13061:5 ecs_primitive_to_expr_buf 'int (const ecs_world_t *, ecs_primitive_kind_t, const void *, ecs_strbuf_t *)' | |-ParmVarDecl 0x5604680e4878 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680e48f0 col:26 kind 'ecs_primitive_kind_t':'enum ecs_primitive_kind_t' | |-ParmVarDecl 0x5604680e4970 col:17 data 'const void *' | |-ParmVarDecl 0x5604680e49e8 col:19 buf 'ecs_strbuf_t *' | `-FullComment 0x560468191b60 | |-ParagraphComment 0x5604681916f0 | | |-TextComment 0x560468191650 Text=" Serialize primitive value into string buffer." | | |-TextComment 0x560468191670 Text=" Serializes a primitive value to an ecs_strbuf_t instance. This operation can" | | |-TextComment 0x560468191690 Text=" be reused by other serializers to avoid having to write boilerplate code that" | | `-TextComment 0x5604681916b0 Text=" serializes primitive values to a string." | |-ParagraphComment 0x560468191740 | | `-TextComment 0x560468191710 Text=" " | |-ParamCommandComment 0x560468191760 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468191810 | | |-TextComment 0x5604681917c0 Text=" The world." | | `-TextComment 0x5604681917e0 Text=" " | |-ParamCommandComment 0x560468191830 [in] implicitly Param="kind" ParamIndex=1 | | `-ParagraphComment 0x5604681918e0 | | |-TextComment 0x560468191890 Text=" The kind of primitive value." | | `-TextComment 0x5604681918b0 Text=" " | |-ParamCommandComment 0x560468191900 [in] implicitly Param="data" ParamIndex=2 | | `-ParagraphComment 0x5604681919b0 | | |-TextComment 0x560468191960 Text=" The value ot serialize" | | `-TextComment 0x560468191980 Text=" " | |-ParamCommandComment 0x5604681919d0 [in] implicitly Param="buf" ParamIndex=3 | | `-ParagraphComment 0x560468191a80 | | |-TextComment 0x560468191a30 Text=" The strbuf to append the string to." | | `-TextComment 0x560468191a50 Text=" " | `-BlockCommandComment 0x560468191aa0 Name="return" | `-ParagraphComment 0x560468191b00 | `-TextComment 0x560468191ad0 Text=" Zero if success, non-zero if failed." |-FunctionDecl 0x5604680e4eb0 line:13078:13 ecs_parse_expr_token 'const char *(const char *, const char *, const char *, char *)' | |-ParmVarDecl 0x5604680e4c30 col:17 name 'const char *' | |-ParmVarDecl 0x5604680e4cb0 col:17 expr 'const char *' | |-ParmVarDecl 0x5604680e4d30 col:17 ptr 'const char *' | |-ParmVarDecl 0x5604680e4db0 col:11 token 'char *' | `-FullComment 0x5604681920c0 | |-ParagraphComment 0x560468191c50 | | |-TextComment 0x560468191bd0 Text=" Parse expression token." | | |-TextComment 0x560468191bf0 Text=" Expression tokens can contain more characters (such as '|') than tokens" | | `-TextComment 0x560468191c10 Text=" parsed by the query (term) parser." | |-ParagraphComment 0x560468191ca0 | | `-TextComment 0x560468191c70 Text=" " | |-ParamCommandComment 0x560468191cc0 [in] implicitly Param="name" ParamIndex=0 | | `-ParagraphComment 0x560468191d70 | | |-TextComment 0x560468191d20 Text=" The name of the expression (used for debug logs)." | | `-TextComment 0x560468191d40 Text=" " | |-ParamCommandComment 0x560468191d90 [in] implicitly Param="expr" ParamIndex=1 | | `-ParagraphComment 0x560468191e40 | | |-TextComment 0x560468191df0 Text=" The full expression (used for debug logs)." | | `-TextComment 0x560468191e10 Text=" " | |-ParamCommandComment 0x560468191e60 [in] implicitly Param="ptr" ParamIndex=2 | | `-ParagraphComment 0x560468191f10 | | |-TextComment 0x560468191ec0 Text=" The pointer to the expression to parse." | | `-TextComment 0x560468191ee0 Text=" " | |-ParamCommandComment 0x560468191f30 [in] implicitly Param="token" ParamIndex=3 | | `-ParagraphComment 0x560468191fe0 | | |-TextComment 0x560468191f90 Text=" The buffer to write to (must have size ECS_MAX_TOKEN_SIZE)" | | `-TextComment 0x560468191fb0 Text=" " | `-BlockCommandComment 0x560468192000 Name="return" | `-ParagraphComment 0x560468192060 | `-TextComment 0x560468192030 Text=" Pointer to the character after the last one read, or NULL if failed." |-FunctionDecl 0x5604680e53e0 line:13171:5 ecs_meta_from_desc 'int (ecs_world_t *, ecs_entity_t, ecs_type_kind_t, const char *)' | |-ParmVarDecl 0x5604680e5128 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680e51a0 col:18 component 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680e5218 col:21 kind 'ecs_type_kind_t':'enum ecs_type_kind_t' | |-ParmVarDecl 0x5604680e5298 col:17 desc 'const char *' | `-FullComment 0x560468192190 | `-ParagraphComment 0x560468192160 | `-TextComment 0x560468192130 Text=" Populate meta information from type descriptor. " |-FunctionDecl 0x5604680e5790 line:13325:5 ecs_plecs_from_str 'int (ecs_world_t *, const char *, const char *)' | |-ParmVarDecl 0x5604680e5568 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680e55e8 col:17 name 'const char *' | |-ParmVarDecl 0x5604680e5668 col:17 str 'const char *' | `-FullComment 0x560468192600 | |-ParagraphComment 0x560468192250 | | |-TextComment 0x560468192200 Text=" Parse plecs string." | | `-TextComment 0x560468192220 Text=" This parses a plecs string and instantiates the entities in the world." | |-ParagraphComment 0x5604681922a0 | | `-TextComment 0x560468192270 Text=" " | |-ParamCommandComment 0x5604681922c0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468192370 | | |-TextComment 0x560468192320 Text=" The world." | | `-TextComment 0x560468192340 Text=" " | |-ParamCommandComment 0x560468192390 [in] implicitly Param="name" ParamIndex=1 | | `-ParagraphComment 0x560468192440 | | |-TextComment 0x5604681923f0 Text=" The script name (typically the file)." | | `-TextComment 0x560468192410 Text=" " | |-ParamCommandComment 0x560468192460 [in] implicitly Param="str" ParamIndex=2 | | `-ParagraphComment 0x560468192530 | | |-TextComment 0x5604681924e0 Text=" The plecs string." | | `-TextComment 0x560468192500 Text=" " | `-BlockCommandComment 0x560468192550 Name="return" | `-ParagraphComment 0x5604681925b0 | `-TextComment 0x560468192580 Text=" Zero if success, non-zero otherwise." |-FunctionDecl 0x5604680e5a20 line:13340:5 ecs_plecs_from_file 'int (ecs_world_t *, const char *)' | |-ParmVarDecl 0x5604680e5888 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680e5908 col:17 filename 'const char *' | `-FullComment 0x5604681929d0 | |-ParagraphComment 0x560468192710 | | |-TextComment 0x560468192670 Text=" Parse plecs file." | | |-TextComment 0x560468192690 Text=" This parses a plecs file and instantiates the entities in the world. This" | | |-TextComment 0x5604681926b0 Text=" operation is equivalent to loading the file contents and passing it to" | | `-TextComment 0x5604681926d0 Text=" ecs_plecs_from_str." | |-ParagraphComment 0x560468192760 | | `-TextComment 0x560468192730 Text=" " | |-ParamCommandComment 0x560468192780 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468192830 | | |-TextComment 0x5604681927e0 Text=" The world." | | `-TextComment 0x560468192800 Text=" " | |-ParamCommandComment 0x560468192850 [in] implicitly Param="filename" ParamIndex=1 | | `-ParagraphComment 0x560468192900 | | |-TextComment 0x5604681928b0 Text=" The plecs file name." | | `-TextComment 0x5604681928d0 Text=" " | `-BlockCommandComment 0x560468192920 Name="return" | `-ParagraphComment 0x560468192980 | `-TextComment 0x560468192950 Text=" Zero if success, non-zero otherwise." |-FunctionDecl 0x5604680e9ac8 line:13439:13 ecs_rule_init 'ecs_rule_t *(ecs_world_t *, const ecs_filter_desc_t *)' | |-ParmVarDecl 0x5604680e98d8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680e9950 col:30 desc 'const ecs_filter_desc_t *' | `-FullComment 0x560468193370 | |-ParagraphComment 0x560468192ac0 | | |-TextComment 0x560468192a40 Text=" Create a rule." | | |-TextComment 0x560468192a60 Text=" A rule accepts the same descriptor as a filter, but has the additional" | | `-TextComment 0x560468192a80 Text=" ability to use query variables." | |-ParagraphComment 0x560468192b60 | | |-TextComment 0x560468192ae0 Text=" Query variables can be used to constrain wildcards across multiple terms to" | | |-TextComment 0x560468192b00 Text=" the same entity. Regular ECS queries do this in a limited form, as querying" | | `-TextComment 0x560468192b20 Text=" for Position, Velocity only returns entities that have both components." | |-ParagraphComment 0x560468192c20 | | |-TextComment 0x560468192b80 Text=" Query variables expand this to constrain entities that are resolved while the" | | |-TextComment 0x560468192ba0 Text=" query is being matched. Consider a query for all entities and the mission" | | |-TextComment 0x560468192bc0 Text=" they are on:" | | `-TextComment 0x560468192be0 Text=" (Mission, *)" | |-ParagraphComment 0x560468192cc0 | | |-TextComment 0x560468192c40 Text=" If an entity is on multiple missions, the wildcard will match it multiple" | | |-TextComment 0x560468192c60 Text=" times. Now say we want to only list combat missions. Naively we could try:" | | `-TextComment 0x560468192c80 Text=" (Mission, *), CombatMission(*)" | |-ParagraphComment 0x560468192d80 | | |-TextComment 0x560468192ce0 Text=" But this doesn't work, as term 1 returns entities with missions, and term 2" | | |-TextComment 0x560468192d00 Text=" returns all combat missions for all entities. Query variables make it " | | |-TextComment 0x560468192d20 Text=" possible to apply CombatMission to the found mission:" | | `-TextComment 0x560468192d40 Text=" (Mission, $M), CombatMission($M)" | |-ParagraphComment 0x560468192df0 | | |-TextComment 0x560468192da0 Text=" By using the same variable ('M') we ensure that CombatMission is applied to" | | `-TextComment 0x560468192dc0 Text=" the mission found in the current result." | |-ParagraphComment 0x560468192e90 | | |-TextComment 0x560468192e10 Text=" Variables can be used in each part of the term (predicate, subject, object)." | | |-TextComment 0x560468192e30 Text=" This is a valid query:" | | `-TextComment 0x560468192e50 Text=" Likes($X, $Y), Likes($Y, $X)" | |-ParagraphComment 0x560468192f00 | | |-TextComment 0x560468192eb0 Text=" This is also a valid query:" | | `-TextComment 0x560468192ed0 Text=" _Component, Serializable(_Component)" | |-ParagraphComment 0x560468192fa0 | | |-TextComment 0x560468192f20 Text=" In the query expression syntax, variables are prefixed with a $. When using" | | |-TextComment 0x560468192f40 Text=" the descriptor, specify the variable kind:" | | `-TextComment 0x560468192f60 Text=" desc.terms[0].second = { .name = "X", .var = EcsVarIsVariable }" | |-ParagraphComment 0x560468193010 | | |-TextComment 0x560468192fc0 Text=" Different terms with the same variable name are automatically correlated by" | | `-TextComment 0x560468192fe0 Text=" the query engine." | |-ParagraphComment 0x560468193060 | | `-TextComment 0x560468193030 Text=" A rule needs to be explicitly deleted with ecs_rule_fini." | |-ParagraphComment 0x5604681930b0 | | `-TextComment 0x560468193080 Text=" " | |-ParamCommandComment 0x5604681930d0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468193180 | | |-TextComment 0x560468193130 Text=" The world." | | `-TextComment 0x560468193150 Text=" " | |-ParamCommandComment 0x5604681931a0 [in] implicitly Param="desc" ParamIndex=1 | | `-ParagraphComment 0x560468193250 | | |-TextComment 0x560468193200 Text=" The descriptor (see ecs_filter_desc_t)" | | `-TextComment 0x560468193220 Text=" " | `-BlockCommandComment 0x560468193270 Name="return" | `-ParagraphComment 0x5604681932d0 | `-TextComment 0x5604681932a0 Text=" The rule." |-FunctionDecl 0x5604680e9ca8 line:13448:6 ecs_rule_fini 'void (ecs_rule_t *)' | |-ParmVarDecl 0x5604680e9bb8 col:17 rule 'ecs_rule_t *' | `-FullComment 0x560468193550 | |-ParagraphComment 0x560468193410 | | `-TextComment 0x5604681933e0 Text=" Delete a rule. " | |-ParagraphComment 0x560468193460 | | `-TextComment 0x560468193430 Text=" " | `-ParamCommandComment 0x560468193480 [in] implicitly Param="rule" ParamIndex=0 | `-ParagraphComment 0x560468193510 | `-TextComment 0x5604681934e0 Text=" The rule." |-FunctionDecl 0x5604680e9e78 line:13458:21 ecs_rule_get_filter 'const ecs_filter_t *(const ecs_rule_t *)' | |-ParmVarDecl 0x5604680e9d88 col:23 rule 'const ecs_rule_t *' | `-FullComment 0x5604681937f0 | |-ParagraphComment 0x560468193610 | | |-TextComment 0x5604681935c0 Text=" Obtain filter from rule." | | `-TextComment 0x5604681935e0 Text=" This operation returns the filter with which the rule was created." | |-ParagraphComment 0x560468193660 | | `-TextComment 0x560468193630 Text=" " | |-ParamCommandComment 0x560468193680 [in] implicitly Param="rule" ParamIndex=0 | | `-ParagraphComment 0x560468193730 | | |-TextComment 0x5604681936e0 Text=" The rule." | | `-TextComment 0x560468193700 Text=" " | `-BlockCommandComment 0x560468193750 Name="return" | `-ParagraphComment 0x5604681937b0 | `-TextComment 0x560468193780 Text=" The filter." |-FunctionDecl 0x5604680ea048 line:13467:9 ecs_rule_var_count 'int32_t (const ecs_rule_t *)' | |-ParmVarDecl 0x5604680e9f58 col:23 rule 'const ecs_rule_t *' | `-FullComment 0x560468193a70 | |-ParagraphComment 0x560468193890 | | `-TextComment 0x560468193860 Text=" Return number of variables in rule." | |-ParagraphComment 0x5604681938e0 | | `-TextComment 0x5604681938b0 Text=" " | |-ParamCommandComment 0x560468193900 [in] implicitly Param="rule" ParamIndex=0 | | `-ParagraphComment 0x5604681939b0 | | |-TextComment 0x560468193960 Text=" The rule." | | `-TextComment 0x560468193980 Text=" " | `-BlockCommandComment 0x5604681939d0 Name="return" | `-ParagraphComment 0x560468193a30 | `-TextComment 0x560468193a00 Text=" The number of variables/" |-FunctionDecl 0x5604680ea2b8 line:13479:9 ecs_rule_find_var 'int32_t (const ecs_rule_t *, const char *)' | |-ParmVarDecl 0x5604680ea128 col:23 rule 'const ecs_rule_t *' | |-ParmVarDecl 0x5604680ea1a8 col:17 name 'const char *' | `-FullComment 0x560468193e20 | |-ParagraphComment 0x560468193b60 | | |-TextComment 0x560468193ae0 Text=" Find variable index." | | |-TextComment 0x560468193b00 Text=" This operation looks up the index of a variable in the rule. This index can" | | `-TextComment 0x560468193b20 Text=" be used in operations like ecs_iter_set_var and ecs_iter_get_var." | |-ParagraphComment 0x560468193bb0 | | `-TextComment 0x560468193b80 Text=" " | |-ParamCommandComment 0x560468193bd0 [in] implicitly Param="rule" ParamIndex=0 | | `-ParagraphComment 0x560468193c80 | | |-TextComment 0x560468193c30 Text=" The rule." | | `-TextComment 0x560468193c50 Text=" " | |-ParamCommandComment 0x560468193ca0 [in] implicitly Param="name" ParamIndex=1 | | `-ParagraphComment 0x560468193d50 | | |-TextComment 0x560468193d00 Text=" The variable name." | | `-TextComment 0x560468193d20 Text=" " | `-BlockCommandComment 0x560468193d70 Name="return" | `-ParagraphComment 0x560468193dd0 | `-TextComment 0x560468193da0 Text=" The variable index." |-FunctionDecl 0x5604680ea540 line:13490:13 ecs_rule_var_name 'const char *(const ecs_rule_t *, int32_t)' | |-ParmVarDecl 0x5604680ea3a8 col:23 rule 'const ecs_rule_t *' | |-ParmVarDecl 0x5604680ea420 col:13 var_id 'int32_t':'int' | `-FullComment 0x5604681940f0 | |-ParagraphComment 0x560468193ee0 | | |-TextComment 0x560468193e90 Text=" Get variable name." | | `-TextComment 0x560468193eb0 Text=" This operation returns the variable name for an index." | |-ParagraphComment 0x560468193f30 | | `-TextComment 0x560468193f00 Text=" " | |-ParamCommandComment 0x560468193f50 [in] implicitly Param="rule" ParamIndex=0 | | `-ParagraphComment 0x560468194000 | | |-TextComment 0x560468193fb0 Text=" The rule." | | `-TextComment 0x560468193fd0 Text=" " | `-ParamCommandComment 0x560468194020 [in] implicitly Param="var_id" ParamIndex=1 | `-ParagraphComment 0x5604681940b0 | `-TextComment 0x560468194080 Text=" The variable index." |-FunctionDecl 0x5604680ea7b8 line:13504:6 ecs_rule_var_is_entity 'bool (const ecs_rule_t *, int32_t)' | |-ParmVarDecl 0x5604680ea628 col:23 rule 'const ecs_rule_t *' | |-ParmVarDecl 0x5604680ea6a0 col:13 var_id 'int32_t':'int' | `-FullComment 0x560468194440 | |-ParagraphComment 0x560468194230 | | |-TextComment 0x560468194160 Text=" Test if variable is an entity." | | |-TextComment 0x560468194180 Text=" Internally the rule engine has entity variables and table variables. When" | | |-TextComment 0x5604681941a0 Text=" iterating through rule variables (by using ecs_rule_variable_count) only" | | |-TextComment 0x5604681941c0 Text=" the values for entity variables are accessible. This operation enables an" | | `-TextComment 0x5604681941e0 Text=" appliction to check if a variable is an entity variable." | |-ParagraphComment 0x560468194280 | | `-TextComment 0x560468194250 Text=" " | |-ParamCommandComment 0x5604681942a0 [in] implicitly Param="rule" ParamIndex=0 | | `-ParagraphComment 0x560468194350 | | |-TextComment 0x560468194300 Text=" The rule." | | `-TextComment 0x560468194320 Text=" " | `-ParamCommandComment 0x560468194370 [in] implicitly Param="var_id" ParamIndex=1 | `-ParagraphComment 0x560468194400 | `-TextComment 0x5604681943d0 Text=" The variable id." |-FunctionDecl 0x5604680eaa38 line:13519:12 ecs_rule_iter 'ecs_iter_t (const ecs_world_t *, const ecs_rule_t *)' | |-ParmVarDecl 0x5604680ea8a8 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680ea920 col:23 rule 'const ecs_rule_t *' | `-FullComment 0x560468194860 | |-ParagraphComment 0x5604681945a0 | | |-TextComment 0x5604681944d0 Text=" Iterate a rule." | | |-TextComment 0x5604681944f0 Text=" Note that rule iterators may allocate memory, and that unless the iterator" | | |-TextComment 0x560468194510 Text=" is iterated until completion, it may still hold resources. When stopping" | | |-TextComment 0x560468194530 Text=" iteration before ecs_rule_next has returned false, use ecs_iter_fini to" | | `-TextComment 0x560468194550 Text=" cleanup any remaining resources." | |-ParagraphComment 0x5604681945f0 | | `-TextComment 0x5604681945c0 Text=" " | |-ParamCommandComment 0x560468194610 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681946c0 | | |-TextComment 0x560468194670 Text=" The world." | | `-TextComment 0x560468194690 Text=" " | |-ParamCommandComment 0x5604681946e0 [in] implicitly Param="rule" ParamIndex=1 | | `-ParagraphComment 0x560468194790 | | |-TextComment 0x560468194740 Text=" The rule." | | `-TextComment 0x560468194760 Text=" " | `-BlockCommandComment 0x5604681947b0 Name="return" | `-ParagraphComment 0x560468194810 | `-TextComment 0x5604681947e0 Text=" An iterator." |-FunctionDecl 0x5604680eabb8 line:13528:6 ecs_rule_next 'bool (ecs_iter_t *)' | |-ParmVarDecl 0x5604680eab28 col:17 it 'ecs_iter_t *' | `-FullComment 0x560468194a40 | |-ParagraphComment 0x560468194900 | | `-TextComment 0x5604681948d0 Text=" Progress rule iterator." | |-ParagraphComment 0x560468194950 | | `-TextComment 0x560468194920 Text=" " | `-ParamCommandComment 0x560468194970 [in] implicitly Param="it" ParamIndex=0 | `-ParagraphComment 0x560468194a00 | `-TextComment 0x5604681949d0 Text=" The iterator." |-FunctionDecl 0x5604680ead28 line:13537:6 ecs_rule_next_instanced 'bool (ecs_iter_t *)' | |-ParmVarDecl 0x5604680eac98 col:17 it 'ecs_iter_t *' | `-FullComment 0x560468194c40 | |-ParagraphComment 0x560468194b00 | | |-TextComment 0x560468194ab0 Text=" Progress instanced iterator." | | `-TextComment 0x560468194ad0 Text=" Should not be called unless you know what you're doing :-)" | |-ParagraphComment 0x560468194b50 | | `-TextComment 0x560468194b20 Text=" " | `-ParamCommandComment 0x560468194b70 [in] implicitly Param="it" ParamIndex=0 | `-ParagraphComment 0x560468194c00 | `-TextComment 0x560468194bd0 Text=" The iterator." |-FunctionDecl 0x5604680eaf00 line:13550:7 ecs_rule_str 'char *(ecs_rule_t *)' | |-ParmVarDecl 0x5604680eae08 col:17 rule 'ecs_rule_t *' | `-FullComment 0x560468194f70 | |-ParagraphComment 0x560468194d30 | | |-TextComment 0x560468194cb0 Text=" Convert rule to a string." | | |-TextComment 0x560468194cd0 Text=" This will convert the rule program to a string which can aid in debugging" | | `-TextComment 0x560468194cf0 Text=" the behavior of a rule." | |-ParagraphComment 0x560468194d80 | | `-TextComment 0x560468194d50 Text=" The returned string must be freed with ecs_os_free." | |-ParagraphComment 0x560468194dd0 | | `-TextComment 0x560468194da0 Text=" " | |-ParamCommandComment 0x560468194df0 [in] implicitly Param="rule" ParamIndex=0 | | `-ParagraphComment 0x560468194ea0 | | |-TextComment 0x560468194e50 Text=" The rule." | | `-TextComment 0x560468194e70 Text=" " | `-BlockCommandComment 0x560468194ec0 Name="return" | `-ParagraphComment 0x560468194f20 | `-TextComment 0x560468194ef0 Text=" The string" |-RecordDecl 0x5604680eb068 col:16 struct ecs_snapshot_t |-TypedefDecl 0x5604680eb168 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 | `-ParagraphComment 0x560468195010 | `-TextComment 0x560468194fe0 Text=" A snapshot stores the state of a world in a particular point in time. " |-FunctionDecl 0x5604680eb388 line:13608:17 ecs_snapshot_take 'ecs_snapshot_t *(ecs_world_t *)' | |-ParmVarDecl 0x5604680eb230 col:18 world 'ecs_world_t *' | `-FullComment 0x5604681952e0 | |-ParagraphComment 0x560468195100 | | |-TextComment 0x5604681950b0 Text=" Create a snapshot." | | `-TextComment 0x5604681950d0 Text=" This operation makes a copy of the current state of the world." | |-ParagraphComment 0x560468195150 | | `-TextComment 0x560468195120 Text=" " | |-ParamCommandComment 0x560468195170 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x560468195220 | | |-TextComment 0x5604681951d0 Text=" The world to snapshot." | | `-TextComment 0x5604681951f0 Text=" " | `-BlockCommandComment 0x560468195240 Name="return" | `-ParagraphComment 0x5604681952a0 | `-TextComment 0x560468195270 Text=" The snapshot." |-FunctionDecl 0x5604680eb558 line:13619:17 ecs_snapshot_take_w_iter 'ecs_snapshot_t *(ecs_iter_t *)' | |-ParmVarDecl 0x5604680eb468 col:17 iter 'ecs_iter_t *' | `-FullComment 0x5604681955b0 | |-ParagraphComment 0x5604681953d0 | | |-TextComment 0x560468195350 Text=" Create a filtered snapshot." | | |-TextComment 0x560468195370 Text=" This operation is the same as ecs_snapshot_take, but accepts an iterator so" | | `-TextComment 0x560468195390 Text=" an application can control what is stored by the snapshot. " | |-ParagraphComment 0x560468195420 | | `-TextComment 0x5604681953f0 Text=" " | |-ParamCommandComment 0x560468195440 [in] implicitly Param="iter" ParamIndex=0 | | `-ParagraphComment 0x5604681954f0 | | |-TextComment 0x5604681954a0 Text=" An iterator to the data to be stored by the snapshot." | | `-TextComment 0x5604681954c0 Text=" " | `-BlockCommandComment 0x560468195510 Name="return" | `-ParagraphComment 0x560468195570 | `-TextComment 0x560468195540 Text=" The snapshot." |-FunctionDecl 0x5604680ebf00 line:13637:6 ecs_snapshot_restore 'void (ecs_world_t *, ecs_snapshot_t *)' | |-ParmVarDecl 0x5604680eb638 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680eb6b0 col:21 snapshot 'ecs_snapshot_t *' | `-FullComment 0x5604681959d0 | |-ParagraphComment 0x560468195740 | | |-TextComment 0x560468195620 Text=" Restore a snapshot." | | |-TextComment 0x560468195640 Text=" This operation restores the world to the state it was in when the specified" | | |-TextComment 0x560468195660 Text=" snapshot was taken. A snapshot can only be used once for restoring, as its" | | |-TextComment 0x560468195680 Text=" data replaces the data that is currently in the world." | | |-TextComment 0x5604681956a0 Text=" This operation also resets the last issued entity handle, so any calls to" | | |-TextComment 0x5604681956c0 Text=" ecs_new may return entity ids that have been issued before restoring the " | | `-TextComment 0x5604681956e0 Text=" snapshot." | |-ParagraphComment 0x5604681957b0 | | |-TextComment 0x560468195760 Text=" The world in which the snapshot is restored must be the same as the world in" | | `-TextComment 0x560468195780 Text=" which the snapshot is taken." | |-ParagraphComment 0x560468195800 | | `-TextComment 0x5604681957d0 Text=" " | |-ParamCommandComment 0x560468195820 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681958d0 | | |-TextComment 0x560468195880 Text=" The world to restore the snapshot to." | | `-TextComment 0x5604681958a0 Text=" " | `-ParamCommandComment 0x5604681958f0 [in] implicitly Param="snapshot" ParamIndex=1 | `-ParagraphComment 0x560468195980 | `-TextComment 0x560468195950 Text=" The snapshot to restore. " |-FunctionDecl 0x5604680ec0d8 line:13646:12 ecs_snapshot_iter 'ecs_iter_t (ecs_snapshot_t *)' | |-ParmVarDecl 0x5604680ebfe8 col:21 snapshot 'ecs_snapshot_t *' | `-FullComment 0x560468195c50 | |-ParagraphComment 0x560468195a70 | | `-TextComment 0x560468195a40 Text=" Obtain iterator to snapshot data." | |-ParagraphComment 0x560468195ac0 | | `-TextComment 0x560468195a90 Text=" " | |-ParamCommandComment 0x560468195ae0 [in] implicitly Param="snapshot" ParamIndex=0 | | `-ParagraphComment 0x560468195b90 | | |-TextComment 0x560468195b40 Text=" The snapshot to iterate over." | | `-TextComment 0x560468195b60 Text=" " | `-BlockCommandComment 0x560468195bb0 Name="return" | `-ParagraphComment 0x560468195c10 | `-TextComment 0x560468195be0 Text=" Iterator to snapshot data. " |-FunctionDecl 0x5604680ec248 line:13655:6 ecs_snapshot_next 'bool (ecs_iter_t *)' | |-ParmVarDecl 0x5604680ec1b8 col:17 iter 'ecs_iter_t *' | `-FullComment 0x560468195ed0 | |-ParagraphComment 0x560468195cf0 | | `-TextComment 0x560468195cc0 Text=" Progress snapshot iterator." | |-ParagraphComment 0x560468195d40 | | `-TextComment 0x560468195d10 Text=" " | |-ParamCommandComment 0x560468195d60 [in] implicitly Param="iter" ParamIndex=0 | | `-ParagraphComment 0x560468195e10 | | |-TextComment 0x560468195dc0 Text=" The snapshot iterator." | | `-TextComment 0x560468195de0 Text=" " | `-BlockCommandComment 0x560468195e30 Name="return" | `-ParagraphComment 0x560468195e90 | `-TextComment 0x560468195e60 Text=" True if more data is available, otherwise false." |-FunctionDecl 0x5604680ec418 line:13664:6 ecs_snapshot_free 'void (ecs_snapshot_t *)' | |-ParmVarDecl 0x5604680ec328 col:21 snapshot 'ecs_snapshot_t *' | `-FullComment 0x5604681960d0 | |-ParagraphComment 0x560468195f90 | | |-TextComment 0x560468195f40 Text=" Free snapshot resources." | | `-TextComment 0x560468195f60 Text=" This frees resources associated with a snapshot without restoring it." | |-ParagraphComment 0x560468195fe0 | | `-TextComment 0x560468195fb0 Text=" " | `-ParamCommandComment 0x560468196000 [in] implicitly Param="snapshot" ParamIndex=0 | `-ParagraphComment 0x560468196090 | `-TextComment 0x560468196060 Text=" The snapshot to free. " |-FunctionDecl 0x5604680ec660 line:13714:13 ecs_parse_whitespace 'const char *(const char *)' | |-ParmVarDecl 0x5604680ec590 col:17 ptr 'const char *' | `-FullComment 0x560468196370 | |-ParagraphComment 0x560468196190 | | |-TextComment 0x560468196140 Text=" Skip whitespace characters." | | `-TextComment 0x560468196160 Text=" This function skips whitespace characters. Does not skip newlines." | |-ParagraphComment 0x5604681961e0 | | `-TextComment 0x5604681961b0 Text=" " | |-ParamCommandComment 0x560468196200 [in] implicitly Param="ptr" ParamIndex=0 | | `-ParagraphComment 0x5604681962b0 | | |-TextComment 0x560468196260 Text=" Pointer to (potential) whitespaces to skip." | | `-TextComment 0x560468196280 Text=" " | `-BlockCommandComment 0x5604681962d0 Name="return" | `-ParagraphComment 0x560468196330 | `-TextComment 0x560468196300 Text=" Pointer to the next non-whitespace character." |-FunctionDecl 0x5604680ec7e8 line:13724:13 ecs_parse_eol_and_whitespace 'const char *(const char *)' | |-ParmVarDecl 0x5604680ec750 col:17 ptr 'const char *' | `-FullComment 0x560468196620 | |-ParagraphComment 0x560468196430 | | |-TextComment 0x5604681963e0 Text=" Skip whitespace and newline characters." | | `-TextComment 0x560468196400 Text=" This function skips whitespace characters." | |-ParagraphComment 0x560468196480 | | `-TextComment 0x560468196450 Text=" " | |-ParamCommandComment 0x5604681964a0 [in] implicitly Param="ptr" ParamIndex=0 | | `-ParagraphComment 0x560468196560 | | |-TextComment 0x560468196510 Text=" Pointer to (potential) whitespaces to skip." | | `-TextComment 0x560468196530 Text=" " | `-BlockCommandComment 0x560468196580 Name="return" | `-ParagraphComment 0x5604681965e0 | `-TextComment 0x5604681965b0 Text=" Pointer to the next non-whitespace character." |-FunctionDecl 0x5604680ec9f0 line:13736:13 ecs_parse_digit 'const char *(const char *, char *)' | |-ParmVarDecl 0x5604680ec8d0 col:17 ptr 'const char *' | |-ParmVarDecl 0x5604680ec950 col:11 token 'char *' | `-FullComment 0x5604681969d0 | |-ParagraphComment 0x560468196710 | | |-TextComment 0x560468196690 Text=" Parse digit." | | |-TextComment 0x5604681966b0 Text=" This function will parse until the first non-digit character is found. The" | | `-TextComment 0x5604681966d0 Text=" provided expression must contain at least one digit character." | |-ParagraphComment 0x560468196760 | | `-TextComment 0x560468196730 Text=" " | |-ParamCommandComment 0x560468196780 [in] implicitly Param="ptr" ParamIndex=0 | | `-ParagraphComment 0x560468196830 | | |-TextComment 0x5604681967e0 Text=" The expression to parse." | | `-TextComment 0x560468196800 Text=" " | |-ParamCommandComment 0x560468196850 [in] implicitly Param="token" ParamIndex=1 | | `-ParagraphComment 0x560468196900 | | |-TextComment 0x5604681968b0 Text=" The output buffer." | | `-TextComment 0x5604681968d0 Text=" " | `-BlockCommandComment 0x560468196920 Name="return" | `-ParagraphComment 0x560468196980 | `-TextComment 0x560468196950 Text=" Pointer to the first non-digit character." |-FunctionDecl 0x5604680ecc40 line:13747:13 ecs_parse_fluff 'const char *(const char *, char **)' | |-ParmVarDecl 0x5604680ecae0 col:17 ptr 'const char *' | |-ParmVarDecl 0x5604680ecb60 col:12 last_comment 'char **' | `-FullComment 0x560468196c70 | |-ParagraphComment 0x560468196a90 | | |-TextComment 0x560468196a40 Text=" Skip whitespaces and comments." | | `-TextComment 0x560468196a60 Text=" This function skips whitespace characters and comments (single line, //)." | |-ParagraphComment 0x560468196ae0 | | `-TextComment 0x560468196ab0 Text=" " | |-ParamCommandComment 0x560468196b00 [in] implicitly Param="ptr" ParamIndex=0 | | `-ParagraphComment 0x560468196bb0 | | |-TextComment 0x560468196b60 Text=" pointer to (potential) whitespaces/comments to skip." | | `-TextComment 0x560468196b80 Text=" " | `-BlockCommandComment 0x560468196bd0 Name="return" | `-ParagraphComment 0x560468196c30 | `-TextComment 0x560468196c00 Text=" pointer to the next non-whitespace character." |-FunctionDecl 0x5604680ed030 line:13761:13 ecs_parse_token 'const char *(const char *, const char *, const char *, char *, char)' | |-ParmVarDecl 0x5604680ecd30 col:17 name 'const char *' | |-ParmVarDecl 0x5604680ecdb0 col:17 expr 'const char *' | |-ParmVarDecl 0x5604680ece30 col:17 ptr 'const char *' | |-ParmVarDecl 0x5604680eceb0 col:11 token_out 'char *' | |-ParmVarDecl 0x5604680ecf28 col:10 delim 'char' | `-FullComment 0x5604681971a0 | |-ParagraphComment 0x560468196d30 | | |-TextComment 0x560468196ce0 Text=" Parse a single token." | | `-TextComment 0x560468196d00 Text=" This function can be used as simple tokenizer by other parsers." | |-ParagraphComment 0x560468196d80 | | `-TextComment 0x560468196d50 Text=" " | |-ParamCommandComment 0x560468196da0 [in] implicitly Param="name" ParamIndex=0 | | `-ParagraphComment 0x560468196e50 | | |-TextComment 0x560468196e00 Text=" of program (used for logging)." | | `-TextComment 0x560468196e20 Text=" " | |-ParamCommandComment 0x560468196e70 [in] implicitly Param="expr" ParamIndex=1 | | `-ParagraphComment 0x560468196f20 | | |-TextComment 0x560468196ed0 Text=" pointer to token to parse." | | `-TextComment 0x560468196ef0 Text=" " | |-ParamCommandComment 0x560468196f40 [in] implicitly Param="ptr" ParamIndex=2 | | `-ParagraphComment 0x560468196ff0 | | |-TextComment 0x560468196fa0 Text=" pointer to first character to parse." | | `-TextComment 0x560468196fc0 Text=" " | |-ParamCommandComment 0x560468197010 [in] implicitly Param="token_out" ParamIndex=3 | | `-ParagraphComment 0x5604681970c0 | | |-TextComment 0x560468197070 Text=" Parsed token (buffer should be ECS_MAX_TOKEN_SIZE large)" | | `-TextComment 0x560468197090 Text=" " | `-BlockCommandComment 0x5604681970e0 Name="return" | `-ParagraphComment 0x560468197140 | `-TextComment 0x560468197110 Text=" Pointer to the next token, or NULL if error occurred." |-FunctionDecl 0x5604680ed490 line:13796:7 ecs_parse_term 'char *(const ecs_world_t *, const char *, const char *, const char *, ecs_term_t *)' | |-ParmVarDecl 0x5604680ed138 col:24 world 'const ecs_world_t *' | |-ParmVarDecl 0x5604680ed1b8 col:17 name 'const char *' | |-ParmVarDecl 0x5604680ed238 col:17 expr 'const char *' | |-ParmVarDecl 0x5604680ed2b8 col:17 ptr 'const char *' | |-ParmVarDecl 0x5604680ed330 col:17 term_out 'ecs_term_t *' | `-FullComment 0x560468197b40 | |-ParagraphComment 0x560468197290 | | |-TextComment 0x560468197210 Text=" Parse term in expression." | | |-TextComment 0x560468197230 Text=" This operation parses a single term in an expression and returns a pointer" | | `-TextComment 0x560468197250 Text=" to the next term expression." | |-ParagraphComment 0x560468197300 | | |-TextComment 0x5604681972b0 Text=" If the returned pointer points to the 0-terminator, the expression is fully " | | `-TextComment 0x5604681972d0 Text=" parsed. The function would typically be called in a while loop:" | |-ParagraphComment 0x560468197440 | | |-TextComment 0x560468197320 Text=" const char *ptr = expr;" | | |-TextComment 0x560468197340 Text=" while (ptr[0] " | | |-TextComment 0x560468197360 Text="&" | | |-TextComment 0x560468197380 Text="&" | | |-TextComment 0x5604681973a0 Text=" (ptr = ecs_parse_term(world, name, expr, ptr, " | | |-TextComment 0x5604681973c0 Text="&term" | | `-TextComment 0x5604681973e0 Text="))) { }" | |-ParagraphComment 0x5604681974e0 | | |-TextComment 0x560468197460 Text=" The operation does not attempt to find entity ids from the names in the" | | |-TextComment 0x560468197480 Text=" expression. Use the ecs_term_resolve_ids function to resolve the identifiers" | | `-TextComment 0x5604681974a0 Text=" in the parsed term." | |-ParagraphComment 0x560468197580 | | |-TextComment 0x560468197500 Text=" The returned term will in most cases contain allocated resources, which" | | |-TextComment 0x560468197520 Text=" should freed (or used) by the application. To free the resources for a term," | | `-TextComment 0x560468197540 Text=" use the ecs_term_free function." | |-ParagraphComment 0x5604681975d0 | | `-TextComment 0x5604681975a0 Text=" The parser accepts expressions in the legacy string format." | |-ParagraphComment 0x560468197620 | | `-TextComment 0x5604681975f0 Text=" " | |-ParamCommandComment 0x560468197640 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x5604681976f0 | | |-TextComment 0x5604681976a0 Text=" The world." | | `-TextComment 0x5604681976c0 Text=" " | |-ParamCommandComment 0x560468197710 [in] implicitly Param="name" ParamIndex=1 | | `-ParagraphComment 0x5604681977c0 | | |-TextComment 0x560468197770 Text=" The name of the expression (optional, improves error logs)" | | `-TextComment 0x560468197790 Text=" " | |-ParamCommandComment 0x5604681977e0 [in] implicitly Param="expr" ParamIndex=2 | | `-ParagraphComment 0x560468197890 | | |-TextComment 0x560468197840 Text=" The expression to parse (optional, improves error logs)" | | `-TextComment 0x560468197860 Text=" " | |-ParamCommandComment 0x5604681978b0 [in] implicitly Param="ptr" ParamIndex=3 | | `-ParagraphComment 0x560468197960 | | |-TextComment 0x560468197910 Text=" The pointer to the current term (must be in expr)." | | `-TextComment 0x560468197930 Text=" " | |-ParamCommandComment 0x560468197980 [in] implicitly Param="term_out" ParamIndex=4 | | `-ParagraphComment 0x560468197a30 | | |-TextComment 0x5604681979e0 Text=" Out parameter for the term." | | `-TextComment 0x560468197a00 Text=" " | `-BlockCommandComment 0x560468197a50 Name="return" | `-ParagraphComment 0x560468197ab0 | `-TextComment 0x560468197a80 Text=" pointer to next term if successful, NULL if failed." |-RecordDecl 0x5604680ed618 col:16 struct ecs_http_server_t |-TypedefDecl 0x5604680ed718 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 | `-ParagraphComment 0x560468197be0 | `-TextComment 0x560468197bb0 Text=" HTTP server " |-RecordDecl 0x5604680ed7b0 line:13868:9 struct definition | |-FullComment 0x560468197ce0 | | `-ParagraphComment 0x560468197cb0 | | `-TextComment 0x560468197c80 Text=" A connection manages communication with the remote host " | |-FieldDecl 0x5604680ed860 col:14 id 'uint64_t':'unsigned long' | |-FieldDecl 0x5604680ed938 col:24 server 'ecs_http_server_t *' | |-FieldDecl 0x5604680eda28 col:10 host 'char[128]' | `-FieldDecl 0x5604680edb18 col:10 port 'char[16]' |-TypedefDecl 0x5604680edbc8 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 | `-ParagraphComment 0x560468197d80 | `-TextComment 0x560468197d50 Text=" A connection manages communication with the remote host " |-RecordDecl 0x5604680edc60 line:13877:9 struct definition | |-FullComment 0x560468197ed0 | | `-ParagraphComment 0x560468197ea0 | | |-TextComment 0x560468197e20 Text=" Helper type used for headers " | | |-TextComment 0x560468197e40 Text="&" | | `-TextComment 0x560468197e60 Text=" URL query parameters " | |-FieldDecl 0x5604680edd18 col:17 key 'const char *' | `-FieldDecl 0x5604680edd80 col:17 value 'const char *' |-TypedefDecl 0x5604680ede28 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 | `-ParagraphComment 0x560468197fc0 | |-TextComment 0x560468197f40 Text=" Helper type used for headers " | |-TextComment 0x560468197f60 Text="&" | `-TextComment 0x560468197f80 Text=" URL query parameters " |-EnumDecl 0x560468051970 line:13883:9 | |-FullComment 0x5604681980c0 | | `-ParagraphComment 0x560468198090 | | `-TextComment 0x560468198060 Text=" Supported request methods " | |-EnumConstantDecl 0x560468051a30 col:5 EcsHttpGet 'int' | |-EnumConstantDecl 0x560468051a80 col:5 EcsHttpPost 'int' | |-EnumConstantDecl 0x560468051ad0 col:5 EcsHttpPut 'int' | |-EnumConstantDecl 0x560468051b20 col:5 EcsHttpDelete 'int' | |-EnumConstantDecl 0x560468051b70 col:5 EcsHttpOptions 'int' | `-EnumConstantDecl 0x560468051bc0 col:5 EcsHttpMethodUnsupported 'int' |-TypedefDecl 0x560468051c68 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 | `-ParagraphComment 0x560468198160 | `-TextComment 0x560468198130 Text=" Supported request methods " |-RecordDecl 0x560468051d00 line:13893:9 struct definition | |-FullComment 0x560468198260 | | `-ParagraphComment 0x560468198230 | | `-TextComment 0x560468198200 Text=" A request " | |-FieldDecl 0x560468051db0 col:14 id 'uint64_t':'unsigned long' | |-FieldDecl 0x560468051e30 col:23 method 'ecs_http_method_t':'ecs_http_method_t' | |-FieldDecl 0x560468051e98 col:11 path 'char *' | |-FieldDecl 0x560468051f00 col:11 body 'char *' | |-FieldDecl 0x5604680520c8 col:26 headers 'ecs_http_key_value_t[32]' | |-FieldDecl 0x560468052198 col:26 params 'ecs_http_key_value_t[32]' | |-FieldDecl 0x5604680521f8 col:13 header_count 'int32_t':'int' | |-FieldDecl 0x560468052258 col:13 param_count 'int32_t':'int' | `-FieldDecl 0x560468052338 col:28 conn 'ecs_http_connection_t *' |-TypedefDecl 0x5604680523e8 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 | `-ParagraphComment 0x560468198300 | `-TextComment 0x5604681982d0 Text=" A request " |-RecordDecl 0x560468052480 line:13908:9 struct definition | |-FullComment 0x560468198400 | | `-ParagraphComment 0x5604681983d0 | | `-TextComment 0x5604681983a0 Text=" A reply " | |-FieldDecl 0x560468052538 col:9 code 'int' | | `-FullComment 0x5604681984f0 | | `-ParagraphComment 0x5604681984a0 | | `-TextComment 0x560468198470 Text=" default = 200 " | |-FieldDecl 0x5604680525c8 col:18 body 'ecs_strbuf_t':'struct ecs_strbuf_t' | | `-FullComment 0x5604681985c0 | | `-ParagraphComment 0x560468198590 | | `-TextComment 0x560468198560 Text=" default = "" " | |-FieldDecl 0x560468052660 col:17 status 'const char *' | | `-FullComment 0x560468198690 | | `-ParagraphComment 0x560468198660 | | `-TextComment 0x560468198630 Text=" default = OK " | |-FieldDecl 0x5604680526f0 col:17 content_type 'const char *' | | `-FullComment 0x560468198760 | | `-ParagraphComment 0x560468198730 | | `-TextComment 0x560468198700 Text=" default = application/json " | `-FieldDecl 0x560468052778 col:18 headers 'ecs_strbuf_t':'struct ecs_strbuf_t' | `-FullComment 0x560468198830 | `-ParagraphComment 0x560468198800 | `-TextComment 0x5604681987d0 Text=" default = "" " |-TypedefDecl 0x560468052858 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 | `-ParagraphComment 0x5604681988d0 | `-TextComment 0x5604681988a0 Text=" A reply " |-VarDecl 0x5604680528d8 col:16 ecs_http_request_received_count 'int64_t':'long' extern |-VarDecl 0x560468052950 col:16 ecs_http_request_invalid_count 'int64_t':'long' extern |-VarDecl 0x5604680529c8 col:16 ecs_http_request_handled_ok_count 'int64_t':'long' extern |-VarDecl 0x560468052a40 col:16 ecs_http_request_handled_error_count 'int64_t':'long' extern |-VarDecl 0x560468052ab8 col:16 ecs_http_request_not_handled_count 'int64_t':'long' extern |-VarDecl 0x560468052b30 col:16 ecs_http_request_preflight_count 'int64_t':'long' extern |-VarDecl 0x560468052ba8 col:16 ecs_http_send_ok_count 'int64_t':'long' extern |-VarDecl 0x560468052c20 col:16 ecs_http_send_error_count 'int64_t':'long' extern |-VarDecl 0x560468052c98 col:16 ecs_http_busy_count 'int64_t':'long' extern |-TypedefDecl 0x5604680530e0 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 | `-ParagraphComment 0x560468198a10 | |-TextComment 0x560468198970 Text=" Request callback." | |-TextComment 0x560468198990 Text=" Invoked for each valid request. The function should populate the reply and" | |-TextComment 0x5604681989b0 Text=" return true. When the function returns false, the server will reply with a " | `-TextComment 0x5604681989d0 Text=" 404 (Not found) code. " |-RecordDecl 0x560468053168 line:13940:9 struct definition | |-FullComment 0x560468198b10 | | `-ParagraphComment 0x560468198ae0 | | `-TextComment 0x560468198ab0 Text=" Used with ecs_http_server_init. " | |-FieldDecl 0x560468053240 col:29 callback 'ecs_http_reply_action_t':'bool (*)(const ecs_http_request_t *, ecs_http_reply_t *, void *)' | |-FieldDecl 0x5604680532a8 col:11 ctx 'void *' | |-FieldDecl 0x560468053308 col:14 port 'uint16_t':'unsigned short' | |-FieldDecl 0x560468053370 col:17 ipaddr 'const char *' | `-FieldDecl 0x5604680533d0 col:13 send_queue_wait_ms 'int32_t':'int' |-TypedefDecl 0x560468053478 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 | `-ParagraphComment 0x560468198bb0 | `-TextComment 0x560468198b80 Text=" Used with ecs_http_server_init. " |-FunctionDecl 0x560468053688 line:13955:20 ecs_http_server_init 'ecs_http_server_t *(const ecs_http_server_desc_t *)' | |-ParmVarDecl 0x560468053598 col:35 desc 'const ecs_http_server_desc_t *' | `-FullComment 0x560468198e80 | |-ParagraphComment 0x560468198ca0 | | |-TextComment 0x560468198c50 Text=" Create server. " | | `-TextComment 0x560468198c70 Text=" Use ecs_http_server_start to start receiving requests." | |-ParagraphComment 0x560468198cf0 | | `-TextComment 0x560468198cc0 Text=" " | |-ParamCommandComment 0x560468198d10 [in] implicitly Param="desc" ParamIndex=0 | | `-ParagraphComment 0x560468198dc0 | | |-TextComment 0x560468198d70 Text=" Server configuration parameters." | | `-TextComment 0x560468198d90 Text=" " | `-BlockCommandComment 0x560468198de0 Name="return" | `-ParagraphComment 0x560468198e40 | `-TextComment 0x560468198e10 Text=" The new server, or NULL if creation failed." |-FunctionDecl 0x560468053858 line:13964:6 ecs_http_server_fini 'void (ecs_http_server_t *)' | |-ParmVarDecl 0x560468053768 col:24 server 'ecs_http_server_t *' | `-FullComment 0x560468199080 | |-ParagraphComment 0x560468198f40 | | |-TextComment 0x560468198ef0 Text=" Destroy server. " | | `-TextComment 0x560468198f10 Text=" This operation will stop the server if it was still running." | |-ParagraphComment 0x560468198f90 | | `-TextComment 0x560468198f60 Text=" " | `-ParamCommandComment 0x560468198fb0 [in] implicitly Param="server" ParamIndex=0 | `-ParagraphComment 0x560468199040 | `-TextComment 0x560468199010 Text=" The server to destroy." |-FunctionDecl 0x5604680f7430 line:13974:5 ecs_http_server_start 'int (ecs_http_server_t *)' | |-ParmVarDecl 0x5604680f7330 col:24 server 'ecs_http_server_t *' | `-FullComment 0x560468199320 | |-ParagraphComment 0x560468199140 | | |-TextComment 0x5604681990f0 Text=" Start server. " | | `-TextComment 0x560468199110 Text=" After this operation the server will be able to accept requests." | |-ParagraphComment 0x560468199190 | | `-TextComment 0x560468199160 Text=" " | |-ParamCommandComment 0x5604681991b0 [in] implicitly Param="server" ParamIndex=0 | | `-ParagraphComment 0x560468199260 | | |-TextComment 0x560468199210 Text=" The server to start." | | `-TextComment 0x560468199230 Text=" " | `-BlockCommandComment 0x560468199280 Name="return" | `-ParagraphComment 0x5604681992e0 | `-TextComment 0x5604681992b0 Text=" Zero if successful, non-zero if failed." |-FunctionDecl 0x5604680f76a8 line:13984:6 ecs_http_server_dequeue 'void (ecs_http_server_t *, float)' | |-ParmVarDecl 0x5604680f7518 col:24 server 'ecs_http_server_t *' | |-ParmVarDecl 0x5604680f7598 col:17 delta_time 'float' | `-FullComment 0x560468199550 | |-ParagraphComment 0x560468199410 | | |-TextComment 0x560468199390 Text=" Process server requests. " | | |-TextComment 0x5604681993b0 Text=" This operation invokes the reply callback for each received request. No new" | | `-TextComment 0x5604681993d0 Text=" requests will be enqueued while processing requests." | |-ParagraphComment 0x560468199460 | | `-TextComment 0x560468199430 Text=" " | `-ParamCommandComment 0x560468199480 [in] implicitly Param="server" ParamIndex=0 | `-ParagraphComment 0x560468199510 | `-TextComment 0x5604681994e0 Text=" The server for which to process requests." |-FunctionDecl 0x5604680f7828 line:13994:6 ecs_http_server_stop 'void (ecs_http_server_t *)' | |-ParmVarDecl 0x5604680f7798 col:24 server 'ecs_http_server_t *' | `-FullComment 0x560468199750 | |-ParagraphComment 0x560468199610 | | |-TextComment 0x5604681995c0 Text=" Stop server. " | | `-TextComment 0x5604681995e0 Text=" After this operation no new requests can be received." | |-ParagraphComment 0x560468199660 | | `-TextComment 0x560468199630 Text=" " | `-ParamCommandComment 0x560468199680 [in] implicitly Param="server" ParamIndex=0 | `-ParagraphComment 0x560468199710 | `-TextComment 0x5604681996e0 Text=" The server." |-FunctionDecl 0x5604680f7aa0 line:14004:13 ecs_http_get_header 'const char *(const ecs_http_request_t *, const char *)' | |-ParmVarDecl 0x5604680f7908 col:31 req 'const ecs_http_request_t *' | |-ParmVarDecl 0x5604680f7988 col:17 name 'const char *' | `-FullComment 0x560468199ab0 | |-ParagraphComment 0x5604681997f0 | | `-TextComment 0x5604681997c0 Text=" Find header in request. " | |-ParagraphComment 0x560468199840 | | `-TextComment 0x560468199810 Text=" " | |-ParamCommandComment 0x560468199860 [in] implicitly Param="req" ParamIndex=0 | | `-ParagraphComment 0x560468199910 | | |-TextComment 0x5604681998c0 Text=" The request." | | `-TextComment 0x5604681998e0 Text=" " | |-ParamCommandComment 0x560468199930 [in] implicitly Param="name" ParamIndex=1 | | `-ParagraphComment 0x5604681999e0 | | |-TextComment 0x560468199990 Text=" name of the header to find" | | `-TextComment 0x5604681999b0 Text=" " | `-BlockCommandComment 0x560468199a00 Name="return" | `-ParagraphComment 0x560468199a60 | `-TextComment 0x560468199a30 Text=" The header value, or NULL if not found." |-FunctionDecl 0x5604680f7ca8 line:14015:13 ecs_http_get_param 'const char *(const ecs_http_request_t *, const char *)' | |-ParmVarDecl 0x5604680f7b88 col:31 req 'const ecs_http_request_t *' | |-ParmVarDecl 0x5604680f7c08 col:17 name 'const char *' | `-FullComment 0x560468199e10 | |-ParagraphComment 0x560468199b50 | | `-TextComment 0x560468199b20 Text=" Find query parameter in request. " | |-ParagraphComment 0x560468199ba0 | | `-TextComment 0x560468199b70 Text=" " | |-ParamCommandComment 0x560468199bc0 [in] implicitly Param="req" ParamIndex=0 | | `-ParagraphComment 0x560468199c70 | | |-TextComment 0x560468199c20 Text=" The request." | | `-TextComment 0x560468199c40 Text=" " | |-ParamCommandComment 0x560468199c90 [in] implicitly Param="name" ParamIndex=1 | | `-ParagraphComment 0x560468199d40 | | |-TextComment 0x560468199cf0 Text=" The parameter name." | | `-TextComment 0x560468199d10 Text=" " | `-BlockCommandComment 0x560468199d60 Name="return" | `-ParagraphComment 0x560468199dc0 | `-TextComment 0x560468199d90 Text=" The decoded parameter value, or NULL if not found." |-FunctionDecl 0x5604680f7e80 col:6 ecs_set_os_api_impl 'void (void)' |-FunctionDecl 0x5604680f8228 line:14120:14 ecs_import 'ecs_entity_t (ecs_world_t *, ecs_module_action_t, const char *)' | |-ParmVarDecl 0x5604680f7fe8 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680f8080 col:25 module 'ecs_module_action_t':'void (*)(ecs_world_t *)' | |-ParmVarDecl 0x5604680f8100 col:17 module_name 'const char *' | `-FullComment 0x56046819a420 | |-ParagraphComment 0x560468199f70 | | |-TextComment 0x560468199e80 Text=" Import a module." | | |-TextComment 0x560468199ea0 Text=" This operation will load a modules and store the public module handles in the" | | |-TextComment 0x560468199ec0 Text=" handles_out out parameter. The module name will be used to verify if the" | | |-TextComment 0x560468199ee0 Text=" module was already loaded, in which case it won't be reimported. The name" | | |-TextComment 0x560468199f00 Text=" will be translated from PascalCase to an entity path (pascal.case) before the" | | `-TextComment 0x560468199f20 Text=" lookup occurs." | |-ParagraphComment 0x56046819a030 | | |-TextComment 0x560468199f90 Text=" Module contents will be stored as children of the module entity. This " | | |-TextComment 0x560468199fb0 Text=" prevents modules from accidentally defining conflicting identifiers. This is" | | |-TextComment 0x560468199fd0 Text=" enforced by setting the scope before and after loading the module to the " | | `-TextComment 0x560468199ff0 Text=" module entity id." | |-ParagraphComment 0x56046819a080 | | `-TextComment 0x56046819a050 Text=" A more convenient way to import a module is by using the ECS_IMPORT macro." | |-ParagraphComment 0x56046819a0d0 | | `-TextComment 0x56046819a0a0 Text=" " | |-ParamCommandComment 0x56046819a0f0 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046819a1a0 | | |-TextComment 0x56046819a150 Text=" The world." | | `-TextComment 0x56046819a170 Text=" " | |-ParamCommandComment 0x56046819a1c0 [in] implicitly Param="module" ParamIndex=1 | | `-ParagraphComment 0x56046819a270 | | |-TextComment 0x56046819a220 Text=" The module import function." | | `-TextComment 0x56046819a240 Text=" " | |-ParamCommandComment 0x56046819a290 [in] implicitly Param="module_name" ParamIndex=2 | | `-ParagraphComment 0x56046819a340 | | |-TextComment 0x56046819a2f0 Text=" The name of the module." | | `-TextComment 0x56046819a310 Text=" " | `-BlockCommandComment 0x56046819a360 Name="return" | `-ParagraphComment 0x56046819a3c0 | `-TextComment 0x56046819a390 Text=" The module entity." |-FunctionDecl 0x5604680f84b0 line:14134:14 ecs_import_c 'ecs_entity_t (ecs_world_t *, ecs_module_action_t, const char *)' | |-ParmVarDecl 0x5604680f8318 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680f8390 col:25 module 'ecs_module_action_t':'void (*)(ecs_world_t *)' | |-ParmVarDecl 0x5604680f8410 col:17 module_name_c 'const char *' | `-FullComment 0x56046819a890 | |-ParagraphComment 0x56046819a500 | | |-TextComment 0x56046819a490 Text=" Same as ecs_import, but with name to scope conversion." | | `-TextComment 0x56046819a4b0 Text=" PascalCase names are automatically converted to scoped names." | |-ParagraphComment 0x56046819a550 | | `-TextComment 0x56046819a520 Text=" " | |-ParamCommandComment 0x56046819a570 [in] implicitly Param="world" ParamIndex=0 | | `-ParagraphComment 0x56046819a620 | | |-TextComment 0x56046819a5d0 Text=" The world." | | `-TextComment 0x56046819a5f0 Text=" " | |-ParamCommandComment 0x56046819a640 [in] implicitly Param="module" ParamIndex=1 | | `-ParagraphComment 0x56046819a6f0 | | |-TextComment 0x56046819a6a0 Text=" The module import function." | | `-TextComment 0x56046819a6c0 Text=" " | |-ParamCommandComment 0x56046819a710 [in] implicitly Param="module_name_c" ParamIndex=2 | | `-ParagraphComment 0x56046819a7c0 | | |-TextComment 0x56046819a770 Text=" The name of the module." | | `-TextComment 0x56046819a790 Text=" " | `-BlockCommandComment 0x56046819a7e0 Name="return" | `-ParagraphComment 0x56046819a840 | `-TextComment 0x56046819a810 Text=" The module entity." |-FunctionDecl 0x5604680f8798 line:14158:14 ecs_import_from_library 'ecs_entity_t (ecs_world_t *, const char *, const char *)' | |-ParmVarDecl 0x5604680f8578 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680f85f8 col:17 library_name 'const char *' | `-ParmVarDecl 0x5604680f8678 col:17 module_name 'const char *' |-FunctionDecl 0x5604680f8aa8 line:14165:14 ecs_module_init 'ecs_entity_t (ecs_world_t *, const char *, const ecs_component_desc_t *)' | |-ParmVarDecl 0x5604680f8888 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680f8908 col:17 c_name 'const char *' | |-ParmVarDecl 0x5604680f8980 col:33 desc 'const ecs_component_desc_t *' | `-FullComment 0x56046819a960 | `-ParagraphComment 0x56046819a930 | `-TextComment 0x56046819a900 Text=" Register a new module. " |-FunctionDecl 0x5604680f8e10 line:14245:7 ecs_cpp_get_type_name 'char *(char *, const char *, size_t)' | |-ParmVarDecl 0x5604680f8c30 col:11 type_name 'char *' | |-ParmVarDecl 0x5604680f8cb0 col:17 func_name 'const char *' | `-ParmVarDecl 0x5604680f8d28 col:12 len 'size_t':'unsigned long' |-FunctionDecl 0x5604680f9080 line:14251:7 ecs_cpp_get_symbol_name 'char *(char *, const char *, size_t)' | |-ParmVarDecl 0x5604680f8ee0 col:11 symbol_name 'char *' | |-ParmVarDecl 0x5604680f8f60 col:17 type_name 'const char *' | `-ParmVarDecl 0x5604680f8fd8 col:12 len 'size_t':'unsigned long' |-FunctionDecl 0x5604680fb650 line:14257:7 ecs_cpp_get_constant_name 'char *(char *, const char *, size_t)' | |-ParmVarDecl 0x5604680f9150 col:11 constant_name 'char *' | |-ParmVarDecl 0x5604680f91d0 col:17 func_name 'const char *' | `-ParmVarDecl 0x5604680f9248 col:12 len 'size_t':'unsigned long' |-FunctionDecl 0x5604680fb838 line:14263:13 ecs_cpp_trim_module 'const char *(ecs_world_t *, const char *)' | |-ParmVarDecl 0x5604680fb718 col:18 world 'ecs_world_t *' | `-ParmVarDecl 0x5604680fb798 col:17 type_name 'const char *' |-FunctionDecl 0x5604680fbd58 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 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680fb970 col:18 id 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680fb9f0 col:17 name 'const char *' | |-ParmVarDecl 0x5604680fba70 col:17 symbol 'const char *' | |-ParmVarDecl 0x5604680fbae8 col:12 size 'size_t':'unsigned long' | |-ParmVarDecl 0x5604680fbb60 col:12 alignment 'size_t':'unsigned long' | `-ParmVarDecl 0x5604680fbbd8 col:10 implicit_name 'bool' |-FunctionDecl 0x5604680fc378 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 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680fbeb8 col:18 id 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680fbf38 col:17 name 'const char *' | |-ParmVarDecl 0x5604680fbfb8 col:17 symbol 'const char *' | |-ParmVarDecl 0x5604680fc030 col:16 size 'ecs_size_t':'int' | |-ParmVarDecl 0x5604680fc0a8 col:16 alignment 'ecs_size_t':'int' | |-ParmVarDecl 0x5604680fc120 col:10 implicit_name 'bool' | `-ParmVarDecl 0x5604680fc1d0 col:11 existing_out 'bool *' |-FunctionDecl 0x5604680fca98 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 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680fc4e0 col:18 s_id 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680fc558 col:18 id 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680fc5d8 col:17 name 'const char *' | |-ParmVarDecl 0x5604680fc658 col:17 type_name 'const char *' | |-ParmVarDecl 0x5604680fc6d8 col:17 symbol 'const char *' | |-ParmVarDecl 0x5604680fc750 col:12 size 'size_t':'unsigned long' | |-ParmVarDecl 0x5604680fc7c8 col:12 alignment 'size_t':'unsigned long' | |-ParmVarDecl 0x5604680fc840 col:10 is_component 'bool' | `-ParmVarDecl 0x5604680fc8c0 col:11 existing_out 'bool *' |-FunctionDecl 0x5604680fcca8 line:14302:6 ecs_cpp_enum_init 'void (ecs_world_t *, ecs_entity_t)' | |-ParmVarDecl 0x5604680fcb98 col:18 world 'ecs_world_t *' | `-ParmVarDecl 0x5604680fcc10 col:18 id 'ecs_entity_t':'unsigned long' |-FunctionDecl 0x5604680fd0a8 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 col:18 world 'ecs_world_t *' | |-ParmVarDecl 0x5604680fcde0 col:18 parent 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680fce58 col:18 id 'ecs_entity_t':'unsigned long' | |-ParmVarDecl 0x5604680fced8 col:17 name 'const char *' | `-ParmVarDecl 0x5604680fcf58 col:9 value 'int' |-FunctionDecl 0x5604680fd238 col:9 ecs_cpp_reset_count_get 'int32_t (void)' `-FunctionDecl 0x5604680fd370 col:9 ecs_cpp_reset_count_inc 'int32_t (void)'