buckets/serf-buckets.natvis (74 lines of code) (raw):

<?xml version="1.0" encoding="utf-8"?> <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> <Type Name="serf_bucket_t" > <DisplayString>{{{type->name,s} bucket }}</DisplayString> <Expand> <!-- Show detailed types instead of just void* pointer --> <Item Name="data" Condition="type->name == serf_bucket_type_aggregate.name"> (aggregate_context_t *)data </Item> <Item Name="data" Condition="type->name == serf_bucket_type_barrier.name"> (serf_bucket_t *)data </Item> <Item Name="data" Condition="type->name == serf_bucket_type_headers.name"> (headers_context_t *)data </Item> <Item Name="data" Condition="type->name == serf_bucket_type_iovec.name"> (iovec_context_t *)data </Item> <Item Name="data" Condition="type->name == serf_bucket_type_request.name"> (request_context_t *)data </Item> <Item Name="data" Condition="type->name == serf_bucket_type_response.name"> (response_context_t *)data </Item> <Item Name="data" Condition="type->name == serf_bucket_type_simple.name"> (simple_context_t *)data </Item> <Item Name="data" Condition="type->name == serf_bucket_type_socket.name"> (socket_context_t *)data </Item> <Item Name="data" Condition="type->name == serf_bucket_type__event.name"> (event_context_t *)data </Item> </Expand> </Type> <!-- Inside aggregate buckets --> <Type Name="aggregate_context_t"> <Expand> <LinkedListItems> <HeadPointer>list</HeadPointer> <NextPointer>next</NextPointer> <ValueNode>bucket</ValueNode> </LinkedListItems> </Expand> </Type> <Type Name="headers_context_t"> <Expand> <LinkedListItems> <HeadPointer>list</HeadPointer> <NextPointer>next</NextPointer> <ValueNode>this</ValueNode> </LinkedListItems> </Expand> </Type> <Type Name="header_list"> <DisplayString>{header,na}: {value,na}</DisplayString> </Type> <!-- Standard iovec --> <Type Name="iovec"> <DisplayString>{(const char*)iov_base,na}</DisplayString> <StringView>(const char*)iov_base,na</StringView> <Expand> <ArrayItems> <Size>iov_len</Size> <ValuePointer>(const char*)iov_base</ValuePointer> </ArrayItems> </Expand> </Type> <!-- Stored inside iovec bucket --> <Type Name="iovec_context_t"> <Expand> <ArrayItems> <Size>vecs_len</Size> <ValuePointer>vecs</ValuePointer> </ArrayItems> </Expand> </Type> </AutoVisualizer>