Mercurial > minori
comparison dep/pugixml/scripts/natvis/pugixml_compact.natvis @ 57:3c802806b74a
*: merge
| author | Paper <mrpapersonic@gmail.com> |
|---|---|
| date | Thu, 28 Sep 2023 13:09:11 -0400 |
| parents | d10b6c6b432e |
| children |
comparison
equal
deleted
inserted
replaced
| 56:6ff7aabeb9d7 | 57:3c802806b74a |
|---|---|
| 1 <?xml version="1.0" encoding="utf-8"?> | |
| 2 <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> | |
| 3 <Type Name="pugi::xml_node"> | |
| 4 <DisplayString Condition="_root">{_root}</DisplayString> | |
| 5 <DisplayString Condition="!_root">none</DisplayString> | |
| 6 <Expand> | |
| 7 <ExpandedItem Condition="_root">_root</ExpandedItem> | |
| 8 </Expand> | |
| 9 </Type> | |
| 10 | |
| 11 <Type Name="pugi::xml_attribute"> | |
| 12 <DisplayString Condition="_attr">{_attr}</DisplayString> | |
| 13 <DisplayString Condition="!_attr">none</DisplayString> | |
| 14 <Expand> | |
| 15 <ExpandedItem Condition="_attr">_attr</ExpandedItem> | |
| 16 </Expand> | |
| 17 </Type> | |
| 18 | |
| 19 <Type Name="pugi::xml_node_struct"> | |
| 20 <Expand> | |
| 21 <Item Name="type">(pugi::xml_node_type)(header._flags & 15)</Item> | |
| 22 <Item Name="name" Condition="name._data">name,na</Item> | |
| 23 <Item Name="value" Condition="value._data">value,na</Item> | |
| 24 | |
| 25 <Synthetic Name="attributes" Condition="first_attribute._data"> | |
| 26 <DisplayString>...</DisplayString> | |
| 27 <Expand> | |
| 28 <CustomListItems> | |
| 29 <Variable Name="attribute_this" InitialValue="(size_t)&first_attribute" /> | |
| 30 <Variable Name="attribute_data" InitialValue="first_attribute._data" /> | |
| 31 <Variable Name="attribute_data_copy" InitialValue="attribute_data" /> | |
| 32 | |
| 33 <!-- first_attribute struct template arguments --> | |
| 34 <Variable Name="attribute_T1" InitialValue="11" /> | |
| 35 <Variable Name="attribute_T2" InitialValue="0" /> | |
| 36 | |
| 37 <Variable Name="compact_alignment_log2" InitialValue="2" /> | |
| 38 <Variable Name="compact_alignment" InitialValue="1 << compact_alignment_log2" /> | |
| 39 | |
| 40 <!-- compact_get_page() --> | |
| 41 <Variable Name="_page" InitialValue="*(char*)(attribute_this - attribute_T1)" /> | |
| 42 <Variable Name="page" InitialValue="((attribute_this - attribute_T1 - (_page << compact_alignment_log2)) - *(unsigned*)(attribute_this - attribute_T1 - (_page << compact_alignment_log2)))" /> | |
| 43 | |
| 44 <!-- page->allocator->_hash --> | |
| 45 <Variable Name="allocator" InitialValue="*(size_t*)page" /> | |
| 46 <Variable Name="_hash" InitialValue="*(size_t*)(allocator + 2 * sizeof(size_t))" /><!--2 pointer offsetof(allocator, _hash)--> | |
| 47 <Variable Name="_items" InitialValue="*(size_t*)_hash" /> | |
| 48 <Variable Name="_capacity" InitialValue="*((size_t*)_hash + 1)" /><!--1 pointer offsetof(_hash, _capacity)--> | |
| 49 <Variable Name="_count" InitialValue="*((size_t*)_hash + 2)" /><!--2 pointer offsetof(_hash, _count)--> | |
| 50 | |
| 51 <!-- find() prolog --> | |
| 52 <Variable Name="hashmod" InitialValue="_capacity - 1" /> | |
| 53 | |
| 54 <Variable Name="h" InitialValue="(unsigned)attribute_this" /> | |
| 55 <Variable Name="bucket" InitialValue="0" /> | |
| 56 | |
| 57 <Variable Name="probe" InitialValue="0" /> | |
| 58 <Variable Name="probe_item" InitialValue="(size_t*)0" /> | |
| 59 | |
| 60 <Variable Name="attribute_real" InitialValue="(pugi::xml_attribute_struct*)0" /> | |
| 61 | |
| 62 <!-- if _data < 255 --> | |
| 63 <Variable Name="attribute_short" InitialValue="(pugi::xml_attribute_struct*)(((size_t)attribute_this & ~(compact_alignment - 1)) + (attribute_data - 1 + attribute_T2) * compact_alignment)" /> | |
| 64 | |
| 65 <Variable Name="number" InitialValue="0" /> | |
| 66 | |
| 67 <!-- Loop over all attributes --> | |
| 68 <Loop Condition="attribute_this && attribute_data"> | |
| 69 <!-- find() hash --> | |
| 70 <Exec>h = h ^ (h >> 16)</Exec> | |
| 71 <Exec>h = h * (0x85ebca6bu)</Exec> | |
| 72 <Exec>h = h ^ (h >> 13)</Exec> | |
| 73 <Exec>h = h * (0xc2b2ae35u)</Exec> | |
| 74 <Exec>h = h ^ (h >> 16)</Exec> | |
| 75 | |
| 76 <Exec>bucket = h & hashmod</Exec> | |
| 77 | |
| 78 <!-- find() loop --> | |
| 79 <Loop Condition="probe <= hashmod &&_capacity"> | |
| 80 <Exec>probe_item = (size_t*)_items + bucket * 2</Exec><!--2 pointer sizeof(item_t)--> | |
| 81 | |
| 82 <If Condition="*probe_item == attribute_this || *probe_item == 0"> | |
| 83 <Exec>attribute_real = *(pugi::xml_attribute_struct**)(probe_item + 1)</Exec><!--1 pointer offsetof(item_t, value)--> | |
| 84 <Break/> | |
| 85 </If> | |
| 86 | |
| 87 <Exec>bucket = (bucket + probe + 1) & hashmod</Exec> | |
| 88 <Exec>probe++</Exec> | |
| 89 </Loop> | |
| 90 | |
| 91 <Exec>attribute_data_copy = attribute_data</Exec> | |
| 92 | |
| 93 <If Condition="attribute_data_copy >= 255 && attribute_real"> | |
| 94 <Item Name="[{number}]">*attribute_real,view(child)</Item> | |
| 95 <Exec>attribute_this = (size_t)&(*attribute_real).next_attribute</Exec> | |
| 96 <Exec>attribute_data = (*attribute_real).next_attribute._data</Exec> | |
| 97 </If> | |
| 98 <If Condition="attribute_data_copy < 255 && attribute_short"> | |
| 99 <Item Name="[{number}]">*attribute_short,view(child)</Item> | |
| 100 <Exec>attribute_this = (size_t)&(*attribute_short).next_attribute</Exec> | |
| 101 <Exec>attribute_data = (*attribute_short).next_attribute._data</Exec> | |
| 102 </If> | |
| 103 | |
| 104 <!-- next_attribute struct template arguments --> | |
| 105 <Exec>attribute_T1 = 7</Exec> | |
| 106 <Exec>attribute_T2 = 0</Exec> | |
| 107 | |
| 108 <!-- find() prolog again --> | |
| 109 <Exec>h = (unsigned)attribute_this</Exec> | |
| 110 <Exec>bucket = 0</Exec> | |
| 111 | |
| 112 <Exec>probe = 0</Exec> | |
| 113 <Exec>probe_item = (size_t*)0</Exec> | |
| 114 | |
| 115 <Exec>attribute_real = (pugi::xml_attribute_struct*)0</Exec> | |
| 116 <Exec>attribute_short = (pugi::xml_attribute_struct*)(((size_t)attribute_this & ~(compact_alignment - 1)) + (attribute_data - 1 + attribute_T2) * compact_alignment)</Exec> | |
| 117 | |
| 118 <Exec>number++</Exec> | |
| 119 </Loop> | |
| 120 </CustomListItems> | |
| 121 </Expand> | |
| 122 </Synthetic> | |
| 123 | |
| 124 <CustomListItems> | |
| 125 <Variable Name="child_this" InitialValue="&first_child" /> | |
| 126 <Variable Name="child_data" InitialValue="first_child._data" /> | |
| 127 <Variable Name="child_data_copy" InitialValue="child_data" /> | |
| 128 | |
| 129 <!-- first_child struct template arguments --> | |
| 130 <Variable Name="child_T1" InitialValue="8" /> | |
| 131 <Variable Name="child_T2" InitialValue="0" /> | |
| 132 | |
| 133 <Variable Name="compact_alignment_log2" InitialValue="2" /> | |
| 134 <Variable Name="compact_alignment" InitialValue="1 << compact_alignment_log2" /> | |
| 135 | |
| 136 <!-- compact_get_page() --> | |
| 137 <Variable Name="_page" InitialValue="*(char*)(child_this - child_T1)" /> | |
| 138 <Variable Name="page" InitialValue="((child_this - child_T1 - (_page << compact_alignment_log2)) - *(unsigned*)(child_this - child_T1 - (_page << compact_alignment_log2)))" /> | |
| 139 | |
| 140 <!-- page->allocator->_hash --> | |
| 141 <Variable Name="allocator" InitialValue="*(size_t*)page" /> | |
| 142 <Variable Name="_hash" InitialValue="*(size_t*)(allocator + 2 * sizeof(size_t))" /><!--2 pointer offsetof(allocator, _hash)--> | |
| 143 <Variable Name="_items" InitialValue="*(size_t*)_hash" /> | |
| 144 <Variable Name="_capacity" InitialValue="*((size_t*)_hash + 1)" /><!--1 pointer offsetof(_hash, _capacity)--> | |
| 145 <Variable Name="_count" InitialValue="*((size_t*)_hash + 2)" /><!--2 pointer offsetof(_hash, _count)--> | |
| 146 | |
| 147 <!-- find() prolog --> | |
| 148 <Variable Name="hashmod" InitialValue="_capacity - 1" /> | |
| 149 | |
| 150 <Variable Name="h" InitialValue="(unsigned)child_this" /> | |
| 151 <Variable Name="bucket" InitialValue="0" /> | |
| 152 | |
| 153 <Variable Name="probe" InitialValue="0" /> | |
| 154 <Variable Name="probe_item" InitialValue="(size_t*)0" /> | |
| 155 | |
| 156 <Variable Name="child_real" InitialValue="(pugi::xml_node_struct*)0" /> | |
| 157 | |
| 158 <!-- if _data < 255 --> | |
| 159 <Variable Name="child_short" InitialValue="(pugi::xml_node_struct*)(((size_t)child_this & ~(compact_alignment - 1)) + (child_data - 1 + child_T2) * compact_alignment)" /> | |
| 160 | |
| 161 <Variable Name="number" InitialValue="0" /> | |
| 162 | |
| 163 <Loop Condition="child_this && child_data"> | |
| 164 <!-- find() hash --> | |
| 165 <Exec>h = h ^ (h >> 16)</Exec> | |
| 166 <Exec>h = h * (0x85ebca6bu)</Exec> | |
| 167 <Exec>h = h ^ (h >> 13)</Exec> | |
| 168 <Exec>h = h * (0xc2b2ae35u)</Exec> | |
| 169 <Exec>h = h ^ (h >> 16)</Exec> | |
| 170 | |
| 171 <Exec>bucket = h & hashmod</Exec> | |
| 172 | |
| 173 <!-- find() loop --> | |
| 174 <Loop Condition="probe <= hashmod &&_capacity"> | |
| 175 <Exec>probe_item = (size_t*)_items + bucket * 2</Exec><!--2 pointer sizeof(item_t)--> | |
| 176 | |
| 177 <If Condition="*probe_item == child_this || *probe_item == 0"> | |
| 178 <Exec>child_real = *(pugi::xml_node_struct**)(probe_item + 1)</Exec><!--1 pointer offsetof(item_t, value)--> | |
| 179 <Break/> | |
| 180 </If> | |
| 181 | |
| 182 <Exec>bucket = (bucket + probe + 1) & hashmod</Exec> | |
| 183 <Exec>probe++</Exec> | |
| 184 </Loop> | |
| 185 | |
| 186 <Exec>child_data_copy = child_data</Exec> | |
| 187 | |
| 188 <If Condition="child_data_copy >= 255 && child_real"> | |
| 189 <Item Name="[{number}]">*child_real,view(child)</Item> | |
| 190 <Exec>child_this = (size_t)&(*child_real).next_sibling</Exec> | |
| 191 <Exec>child_data = (*child_real).next_sibling._data</Exec> | |
| 192 </If> | |
| 193 <If Condition="child_data_copy < 255 && child_short"> | |
| 194 <Item Name="[{number}]">*child_short,view(child)</Item> | |
| 195 <Exec>child_this = (size_t)&(*child_short).next_sibling</Exec> | |
| 196 <Exec>child_data = (*child_short).next_sibling._data</Exec> | |
| 197 </If> | |
| 198 | |
| 199 <!-- next_sibling struct template arguments --> | |
| 200 <Exec>child_T1 = 10</Exec> | |
| 201 <Exec>child_T2 = 0</Exec> | |
| 202 | |
| 203 <!-- find() prolog again --> | |
| 204 <Exec>h = (unsigned)child_this</Exec> | |
| 205 <Exec>bucket = 0</Exec> | |
| 206 | |
| 207 <Exec>probe = 0</Exec> | |
| 208 <Exec>probe_item = (size_t*)0</Exec> | |
| 209 | |
| 210 <Exec>child_real = (pugi::xml_node_struct*)0</Exec> | |
| 211 <Exec>child_short = (pugi::xml_node_struct*)(((size_t)child_this & ~(compact_alignment - 1)) + (child_data - 1 + child_T2) * compact_alignment)</Exec> | |
| 212 | |
| 213 <Exec>number++</Exec> | |
| 214 </Loop> | |
| 215 </CustomListItems> | |
| 216 | |
| 217 <Item Name="next_sibling" ExcludeView="child">next_sibling</Item> | |
| 218 </Expand> | |
| 219 </Type> | |
| 220 | |
| 221 <Type Name="pugi::xml_attribute_struct"> | |
| 222 <Expand> | |
| 223 <Item Name="name">name,na</Item> | |
| 224 <Item Name="value">value,na</Item> | |
| 225 | |
| 226 <CustomListItems ExcludeView="child"> | |
| 227 <Variable Name="attribute_this" InitialValue="&next_attribute" /> | |
| 228 <Variable Name="attribute_data" InitialValue="next_attribute._data" /> | |
| 229 | |
| 230 <!-- next_attribute struct template arguments --> | |
| 231 <Variable Name="attribute_T1" InitialValue="7" /> | |
| 232 <Variable Name="attribute_T2" InitialValue="0" /> | |
| 233 | |
| 234 <Variable Name="compact_alignment_log2" InitialValue="2" /> | |
| 235 <Variable Name="compact_alignment" InitialValue="1 << compact_alignment_log2" /> | |
| 236 | |
| 237 <!-- compact_get_page() --> | |
| 238 <Variable Name="_page" InitialValue="*(char*)(attribute_this - attribute_T1)" /> | |
| 239 <Variable Name="page" InitialValue="((attribute_this - attribute_T1 - (_page << compact_alignment_log2)) - *(unsigned*)(attribute_this - attribute_T1 - (_page << compact_alignment_log2)))" /> | |
| 240 | |
| 241 <!-- page->allocator->_hash --> | |
| 242 <Variable Name="allocator" InitialValue="*(size_t*)page" /> | |
| 243 <Variable Name="_hash" InitialValue="*(size_t*)(allocator + 2 * sizeof(size_t))" /><!--2 pointer offsetof(allocator, _hash)--> | |
| 244 <Variable Name="_items" InitialValue="*(size_t*)_hash" /> | |
| 245 <Variable Name="_capacity" InitialValue="*((size_t*)_hash + 1)" /><!--1 pointer offsetof(_hash, _capacity)--> | |
| 246 <Variable Name="_count" InitialValue="*((size_t*)_hash + 2)" /><!--2 pointer offsetof(_hash, _count)--> | |
| 247 | |
| 248 <!-- find() prolog --> | |
| 249 <Variable Name="hashmod" InitialValue="_capacity - 1" /> | |
| 250 | |
| 251 <Variable Name="h" InitialValue="(unsigned)attribute_this" /> | |
| 252 <Variable Name="bucket" InitialValue="0" /> | |
| 253 | |
| 254 <Variable Name="probe" InitialValue="0" /> | |
| 255 <Variable Name="probe_item" InitialValue="(size_t*)0" /> | |
| 256 | |
| 257 <Variable Name="attribute_real" InitialValue="(pugi::xml_attribute_struct*)0" /> | |
| 258 | |
| 259 <!-- if _data < 255 --> | |
| 260 <Variable Name="attribute_short" InitialValue="(pugi::xml_attribute_struct*)(((size_t)attribute_this & ~(compact_alignment - 1)) + (attribute_data - 1 + attribute_T2) * compact_alignment)" /> | |
| 261 | |
| 262 <!-- find() hash --> | |
| 263 <Exec>h = h ^ (h >> 16)</Exec> | |
| 264 <Exec>h = h * (0x85ebca6bu)</Exec> | |
| 265 <Exec>h = h ^ (h >> 13)</Exec> | |
| 266 <Exec>h = h * (0xc2b2ae35u)</Exec> | |
| 267 <Exec>h = h ^ (h >> 16)</Exec> | |
| 268 | |
| 269 <Exec>bucket = h & hashmod</Exec> | |
| 270 | |
| 271 <!-- find() loop --> | |
| 272 <Loop Condition="probe <= hashmod &&_capacity"> | |
| 273 <Exec>probe_item = (size_t*)_items + bucket * 2</Exec><!--2 pointer sizeof(item_t)--> | |
| 274 | |
| 275 <If Condition="*probe_item == attribute_this || *probe_item == 0"> | |
| 276 <Exec>attribute_real = *(pugi::xml_attribute_struct**)(probe_item + 1)</Exec><!--1 pointer offsetof(item_t, value)--> | |
| 277 <Break/> | |
| 278 </If> | |
| 279 | |
| 280 <Exec>bucket = (bucket + probe + 1) & hashmod</Exec> | |
| 281 <Exec>probe++</Exec> | |
| 282 </Loop> | |
| 283 | |
| 284 <If Condition="attribute_data >= 255 && attribute_real"> | |
| 285 <Item Name="next_attribute">*attribute_real</Item> | |
| 286 </If> | |
| 287 <If Condition="attribute_data != 0 && attribute_data < 255 && attribute_short"> | |
| 288 <Item Name="next_attribute">*attribute_short</Item> | |
| 289 </If> | |
| 290 </CustomListItems> | |
| 291 </Expand> | |
| 292 </Type> | |
| 293 | |
| 294 <Type Name="pugi::impl::`anonymous-namespace'::compact_string<*,*>"> | |
| 295 <Expand HideRawView="1"> | |
| 296 <CustomListItems Condition="_data && _data < 255"> | |
| 297 <Variable Name="compact_alignment_log2" InitialValue="2" /> | |
| 298 <Variable Name="compact_alignment" InitialValue="1 << compact_alignment_log2" /> | |
| 299 | |
| 300 <!-- compact_get_page() --> | |
| 301 <Variable Name="_page" InitialValue="*(char*)(this - $T1)" /> | |
| 302 <Variable Name="page" InitialValue="((this - $T1 - (_page << compact_alignment_log2)) - *(unsigned*)(this - $T1 - (_page << compact_alignment_log2)))" /> | |
| 303 | |
| 304 <Variable Name="compact_string_base" InitialValue="*(size_t*)(page + 5 * sizeof(void*))" /><!-- 5 pointer offsetof(page, compact_string_base)--> | |
| 305 <Variable Name="base" InitialValue="this - $T2" /> | |
| 306 <Variable Name="offset" InitialValue="((*(short*)base - 1) << 7) + (_data - 1)" /> | |
| 307 | |
| 308 <Item Name="value">(pugi::char_t*)(compact_string_base + offset * sizeof(pugi::char_t)),na</Item> | |
| 309 </CustomListItems> | |
| 310 | |
| 311 <CustomListItems Condition="_data && _data >= 255"> | |
| 312 <Variable Name="compact_alignment_log2" InitialValue="2" /> | |
| 313 <Variable Name="compact_alignment" InitialValue="1 << compact_alignment_log2" /> | |
| 314 | |
| 315 <!-- compact_get_page() --> | |
| 316 <Variable Name="_page" InitialValue="*(char*)(this - $T1)" /> | |
| 317 <Variable Name="page" InitialValue="((this - $T1 - (_page << compact_alignment_log2)) - *(unsigned*)(this - $T1 - (_page << compact_alignment_log2)))" /> | |
| 318 | |
| 319 <!-- page->allocator->_hash --> | |
| 320 <Variable Name="allocator" InitialValue="*(size_t*)page" /> | |
| 321 <Variable Name="_hash" InitialValue="*(size_t*)(allocator + 2 * sizeof(size_t))" /><!--2 pointer offsetof(allocator, _hash)--> | |
| 322 <Variable Name="_items" InitialValue="*(size_t*)_hash" /> | |
| 323 <Variable Name="_capacity" InitialValue="*((size_t*)_hash + 1)" /><!--1 pointer offsetof(_hash, _capacity)--> | |
| 324 <Variable Name="_count" InitialValue="*((size_t*)_hash + 2)" /><!--2 pointer offsetof(_hash, _count)--> | |
| 325 | |
| 326 <!-- find() prolog --> | |
| 327 <Variable Name="hashmod" InitialValue="_capacity - 1" /> | |
| 328 | |
| 329 <Variable Name="h" InitialValue="(unsigned)this" /> | |
| 330 <Variable Name="bucket" InitialValue="0" /> | |
| 331 | |
| 332 <Variable Name="probe" InitialValue="0" /> | |
| 333 <Variable Name="probe_item" InitialValue="(size_t*)0" /> | |
| 334 | |
| 335 <!-- find() hash --> | |
| 336 <Exec>h = h ^ (h >> 16)</Exec> | |
| 337 <Exec>h = h * (0x85ebca6bu)</Exec> | |
| 338 <Exec>h = h ^ (h >> 13)</Exec> | |
| 339 <Exec>h = h * (0xc2b2ae35u)</Exec> | |
| 340 <Exec>h = h ^ (h >> 16)</Exec> | |
| 341 | |
| 342 <Exec>bucket = h & hashmod</Exec> | |
| 343 | |
| 344 <!-- find() loop --> | |
| 345 <Loop Condition="probe <= hashmod &&_capacity"> | |
| 346 <Exec>probe_item = (size_t*)_items + bucket * 2</Exec><!--2 pointer sizeof(item_t)--> | |
| 347 | |
| 348 <If Condition="*probe_item == this || *probe_item == 0"> | |
| 349 <Item Name="value">*(pugi::char_t**)(probe_item + 1)</Item><!--1 pointer offsetof(item_t, value)--> | |
| 350 <Break/> | |
| 351 </If> | |
| 352 | |
| 353 <Exec>bucket = (bucket + probe + 1) & hashmod</Exec> | |
| 354 <Exec>probe++</Exec> | |
| 355 </Loop> | |
| 356 </CustomListItems> | |
| 357 </Expand> | |
| 358 </Type> | |
| 359 | |
| 360 <Type Name="pugi::impl::`anonymous-namespace'::compact_pointer<pugi::xml_node_struct,*,*>"> | |
| 361 <DisplayString Condition="!_data">nullptr</DisplayString> | |
| 362 <DisplayString Condition="_data">...</DisplayString> | |
| 363 | |
| 364 <Expand HideRawView="1"> | |
| 365 <CustomListItems Condition="_data && _data < 255"> | |
| 366 <Variable Name="compact_alignment_log2" InitialValue="2" /> | |
| 367 <Variable Name="compact_alignment" InitialValue="1 << compact_alignment_log2" /> | |
| 368 | |
| 369 <Item Name="value">*(pugi::xml_node_struct*)(((size_t)this & ~(compact_alignment - 1)) + (_data - 1 + $T2) * compact_alignment)</Item> | |
| 370 </CustomListItems> | |
| 371 | |
| 372 <CustomListItems Condition="_data && _data >= 255"> | |
| 373 <Variable Name="compact_alignment_log2" InitialValue="2" /> | |
| 374 <Variable Name="compact_alignment" InitialValue="1 << compact_alignment_log2" /> | |
| 375 | |
| 376 <!-- compact_get_page() --> | |
| 377 <Variable Name="_page" InitialValue="*(char*)(this - $T1)" /> | |
| 378 <Variable Name="page" InitialValue="((this - $T1 - (_page << compact_alignment_log2)) - *(unsigned*)(this - $T1 - (_page << compact_alignment_log2)))" /> | |
| 379 | |
| 380 <!-- page->allocator->_hash --> | |
| 381 <Variable Name="allocator" InitialValue="*(size_t*)page" /> | |
| 382 <Variable Name="_hash" InitialValue="*(size_t*)(allocator + 2 * sizeof(size_t))" /><!--2 pointer offsetof(allocator, _hash)--> | |
| 383 <Variable Name="_items" InitialValue="*(size_t*)_hash" /> | |
| 384 <Variable Name="_capacity" InitialValue="*((size_t*)_hash + 1)" /><!--1 pointer offsetof(_hash, _capacity)--> | |
| 385 <Variable Name="_count" InitialValue="*((size_t*)_hash + 2)" /><!--2 pointer offsetof(_hash, _count)--> | |
| 386 | |
| 387 <!-- find() prolog --> | |
| 388 <Variable Name="hashmod" InitialValue="_capacity - 1" /> | |
| 389 | |
| 390 <Variable Name="h" InitialValue="(unsigned)this" /> | |
| 391 <Variable Name="bucket" InitialValue="0" /> | |
| 392 | |
| 393 <Variable Name="probe" InitialValue="0" /> | |
| 394 <Variable Name="probe_item" InitialValue="(size_t*)0" /> | |
| 395 | |
| 396 <!-- find() hash --> | |
| 397 <Exec>h = h ^ (h >> 16)</Exec> | |
| 398 <Exec>h = h * (0x85ebca6bu)</Exec> | |
| 399 <Exec>h = h ^ (h >> 13)</Exec> | |
| 400 <Exec>h = h * (0xc2b2ae35u)</Exec> | |
| 401 <Exec>h = h ^ (h >> 16)</Exec> | |
| 402 | |
| 403 <Exec>bucket = h & hashmod</Exec> | |
| 404 | |
| 405 <!-- find() loop --> | |
| 406 <Loop Condition="probe <= hashmod &&_capacity"> | |
| 407 <Exec>probe_item = (size_t*)_items + bucket * 2</Exec><!--2 pointer sizeof(item_t)--> | |
| 408 | |
| 409 <If Condition="*probe_item == this || *probe_item == 0"> | |
| 410 <Item Name="value">**(pugi::xml_node_struct**)(probe_item + 1)</Item><!--1 pointer offsetof(item_t, value)--> | |
| 411 <Break/> | |
| 412 </If> | |
| 413 | |
| 414 <Exec>bucket = (bucket + probe + 1) & hashmod</Exec> | |
| 415 <Exec>probe++</Exec> | |
| 416 </Loop> | |
| 417 </CustomListItems> | |
| 418 </Expand> | |
| 419 </Type> | |
| 420 | |
| 421 <Type Name="pugi::impl::`anonymous-namespace'::compact_pointer<pugi::xml_attribute_struct,*,*>"> | |
| 422 <DisplayString Condition="!_data">nullptr</DisplayString> | |
| 423 <DisplayString Condition="_data">...</DisplayString> | |
| 424 | |
| 425 <Expand HideRawView="1"> | |
| 426 <CustomListItems Condition="_data && _data < 255"> | |
| 427 <Variable Name="compact_alignment_log2" InitialValue="2" /> | |
| 428 <Variable Name="compact_alignment" InitialValue="1 << compact_alignment_log2" /> | |
| 429 | |
| 430 <Item Name="value">*(pugi::xml_attribute_struct*)(((size_t)this & ~(compact_alignment - 1)) + (_data - 1 + $T2) * compact_alignment)</Item> | |
| 431 </CustomListItems> | |
| 432 | |
| 433 <CustomListItems Condition="_data && _data >= 255"> | |
| 434 <Variable Name="compact_alignment_log2" InitialValue="2" /> | |
| 435 <Variable Name="compact_alignment" InitialValue="1 << compact_alignment_log2" /> | |
| 436 | |
| 437 <!-- compact_get_page() --> | |
| 438 <Variable Name="_page" InitialValue="*(char*)(this - $T1)" /> | |
| 439 <Variable Name="page" InitialValue="((this - $T1 - (_page << compact_alignment_log2)) - *(unsigned*)(this - $T1 - (_page << compact_alignment_log2)))" /> | |
| 440 | |
| 441 <!-- page->allocator->_hash --> | |
| 442 <Variable Name="allocator" InitialValue="*(size_t*)page" /> | |
| 443 <Variable Name="_hash" InitialValue="*(size_t*)(allocator + 2 * sizeof(size_t))" /><!--2 pointer offsetof(allocator, _hash)--> | |
| 444 <Variable Name="_items" InitialValue="*(size_t*)_hash" /> | |
| 445 <Variable Name="_capacity" InitialValue="*((size_t*)_hash + 1)" /><!--1 pointer offsetof(_hash, _capacity)--> | |
| 446 <Variable Name="_count" InitialValue="*((size_t*)_hash + 2)" /><!--2 pointer offsetof(_hash, _count)--> | |
| 447 | |
| 448 <!-- find() prolog --> | |
| 449 <Variable Name="hashmod" InitialValue="_capacity - 1" /> | |
| 450 | |
| 451 <Variable Name="h" InitialValue="(unsigned)this" /> | |
| 452 <Variable Name="bucket" InitialValue="0" /> | |
| 453 | |
| 454 <Variable Name="probe" InitialValue="0" /> | |
| 455 <Variable Name="probe_item" InitialValue="(size_t*)0" /> | |
| 456 | |
| 457 <!-- find() hash --> | |
| 458 <Exec>h = h ^ (h >> 16)</Exec> | |
| 459 <Exec>h = h * (0x85ebca6bu)</Exec> | |
| 460 <Exec>h = h ^ (h >> 13)</Exec> | |
| 461 <Exec>h = h * (0xc2b2ae35u)</Exec> | |
| 462 <Exec>h = h ^ (h >> 16)</Exec> | |
| 463 | |
| 464 <Exec>bucket = h & hashmod</Exec> | |
| 465 | |
| 466 <!-- find() loop --> | |
| 467 <Loop Condition="probe <= hashmod &&_capacity"> | |
| 468 <Exec>probe_item = (size_t*)_items + bucket * 2</Exec><!--2 pointer sizeof(item_t)--> | |
| 469 | |
| 470 <If Condition="*probe_item == this || *probe_item == 0"> | |
| 471 <Item Name="value">**(pugi::xml_attribute_struct**)(probe_item + 1)</Item><!--1 pointer offsetof(item_t, value)--> | |
| 472 <Break/> | |
| 473 </If> | |
| 474 | |
| 475 <Exec>bucket = (bucket + probe + 1) & hashmod</Exec> | |
| 476 <Exec>probe++</Exec> | |
| 477 </Loop> | |
| 478 </CustomListItems> | |
| 479 </Expand> | |
| 480 </Type> | |
| 481 | |
| 482 <Type Name="pugi::xpath_node"> | |
| 483 <DisplayString Condition="_node._root && _attribute._attr">{_node,na} {_attribute,na}</DisplayString> | |
| 484 <DisplayString Condition="_node._root">{_node,na}</DisplayString> | |
| 485 <DisplayString Condition="_attribute._attr">{_attribute}</DisplayString> | |
| 486 <DisplayString>empty</DisplayString> | |
| 487 | |
| 488 <Expand HideRawView="1"> | |
| 489 <ExpandedItem Condition="_node._root && !_attribute._attr">_node</ExpandedItem> | |
| 490 <ExpandedItem Condition="!_node._root && _attribute._attr">_attribute</ExpandedItem> | |
| 491 | |
| 492 <Item Name="node" Condition="_node._root && _attribute._attr">_node,na</Item> | |
| 493 <Item Name="attribute" Condition="_node._root && _attribute._attr">_attribute,na</Item> | |
| 494 </Expand> | |
| 495 </Type> | |
| 496 | |
| 497 <Type Name="pugi::xpath_node_set"> | |
| 498 <Expand> | |
| 499 <Item Name="type">_type</Item> | |
| 500 <ArrayItems> | |
| 501 <Size>_end - _begin</Size> | |
| 502 <ValuePointer>_begin</ValuePointer> | |
| 503 </ArrayItems> | |
| 504 </Expand> | |
| 505 </Type> | |
| 506 </AutoVisualizer> |
