d009f02ecb
Types within containers were previously named TODO. This sorts it out so they're named as their most resolved type. The current implementation skips Typedef names. |
||
---|---|---|
.. | ||
array_type.toml | ||
boost_bimap_type.toml | ||
caffe2_blob_type.toml | ||
cxx11_list_type.toml | ||
cxx11_string_type.toml | ||
deque_list_type.toml | ||
f14_fast_map.toml | ||
f14_fast_set.toml | ||
f14_node_map.toml | ||
f14_node_set.toml | ||
f14_vector_map.toml | ||
f14_vector_set.toml | ||
fb_string_type.toml | ||
folly_iobuf_queue_type.toml | ||
folly_iobuf_type.toml | ||
folly_optional_type.toml | ||
folly_small_heap_vector_map.toml | ||
list_type.toml | ||
map_seq_type.toml | ||
multi_map_type.toml | ||
multi_set_type.toml | ||
optional_type.toml | ||
pair_type.toml | ||
priority_queue_container_adapter_type.toml | ||
queue_container_adapter_type.toml | ||
README.md | ||
ref_wrapper_type.toml | ||
repeated_field_type.toml | ||
repeated_ptr_field_type.toml | ||
seq_type.toml | ||
set_type.toml | ||
shrd_ptr_type.toml | ||
small_vec_type.toml | ||
sorted_vec_set_type.toml | ||
stack_container_adapter_type.toml | ||
std_map_type.toml | ||
std_unordered_map_type.toml | ||
std_variant.toml | ||
string_type.toml | ||
thrift_isset_type.toml | ||
try_type.toml | ||
uniq_ptr_type.toml | ||
unordered_set_type.toml | ||
weak_ptr_type.toml |
Container Type Definition Format
This document describes the format of the container definition files contained in this directory.
info
-
type_name
The fully-qualified name of the container type. This is used to match against the names of types contained in an executable's debug information.
-
header
The name of the C++ header file in which this container is defined.
-
stub_template_params
The indexes of template parameters which do not represent types stored within this container. These parameters will not be recursed into and measured by OI.
-
underlying_container_index
Only used for container adapters. Points OI to the template parameter representing the underlying container to be measured.
codegen
-
decl
C++ code for the declaration of a
getSizeType
function for this container. -
func
C++ code for the definition of a
getSizeType
function for this container. -
processor.type
The static type that will be filled in by this particular processor. Multiple processors are allowed and recommended.
-
processor.func
C++ code for the function body of a function with this signature:
void(result::Element& el, std::stack<Inst>& ins, ParsedData d)
which is supplied with the data of the paired static type. -
traversal_func
C++ code for the function body of a function with this signature:
static types::st::Unit<DB> getSizeType(const T& container, ST returnArg)
whereST
defines the combined static type of each supplied processor.
Changes introduced with Typed Data Segment
decl
andfunc
fields are ignored when using-ftyped-data-segment
and thehandler
field is used instead.
## Changes introduced with TreeBuilder V2
decl
,func
, andhandler
fields are ignored when using-ftree-builder-v2
. TheTypeHandler
is instead constructed fromtraversal_func
andprocessor
entries.
Changes introduced with TypeGraph
typeName
andmatcher
fields have been merged into the single fieldtype_name
.ns
namespace definition is no longer required.underlyingContainerIndex
renamed tounderlying_container_index
- The options for measuring / stubbing / removing template parameters have been reworked:
- By default all parameters are now measured. This includes the tail parameters in a variadic template.
- There is one option to specify template parameters which should not be measured:
stub_template_params
. The type graph code will automatically determine what type of stubbing to apply to each parameter in this list.
Deprecated Options
-
ctype
A reference to the enum
ContainerTypeEnum
in OI's source code. This is no longer required with Tree Builder v2. -
handler
C++ code for the definition of a
TypeHandler
class for this container. Now generated fromtraversal_func
andprocessor
entries. -
numTemplateParams
The first
numTemplateParams
template parameters for this container represent the types for the data we want to process. If this is not set, use all a container's template parameters. All of a container's parameters will still be enumerated and output in CodeGen, regardless of this setting. -
allocatorIndex
Index of a template parameter representing an allocator. It will be not be used when CodeGenning this container.
-
replaceTemplateParamIndex
Indexes of template parameters to be stubbed out, i.e. replaced with dummy structs of a given size. Used for custom hashers and comparers.