object-introspection/types
2023-08-24 13:57:27 +02:00
..
array_type.toml oil v2 2023-08-23 15:59:53 +01:00
boost_bimap_type.toml TypeGraph: Update container TOML files to new format 2023-05-26 18:21:59 +01:00
caffe2_blob_type.toml TypeGraph: Update container TOML files to new format 2023-05-26 18:21:59 +01:00
cxx11_list_type.toml static types: place in own header for testing 2023-06-30 12:54:02 +01:00
cxx11_string_type.toml oil v2 2023-08-23 15:59:53 +01:00
deque_list_type.toml static types: place in own header for testing 2023-06-30 12:54:02 +01:00
f14_fast_map.toml TypeGraph: Update container TOML files to new format 2023-05-26 18:21:59 +01:00
f14_fast_set.toml TypeGraph: Update container TOML files to new format 2023-05-26 18:21:59 +01:00
f14_node_map.toml TypeGraph: Update container TOML files to new format 2023-05-26 18:21:59 +01:00
f14_node_set.toml TypeGraph: Update container TOML files to new format 2023-05-26 18:21:59 +01:00
f14_vector_map.toml TypeGraph: Update container TOML files to new format 2023-05-26 18:21:59 +01:00
f14_vector_set.toml TypeGraph: Update container TOML files to new format 2023-05-26 18:21:59 +01:00
fb_string_type.toml static types: place in own header for testing 2023-06-30 12:54:02 +01:00
folly_iobuf_queue_type.toml Specify namespace for IOBuf in IOBufQueue function 2023-07-19 11:13:39 +01:00
folly_iobuf_type.toml Add missing namespace to folly::IOBuf container TOML 2023-06-29 11:59:07 +01:00
folly_optional_type.toml TypeGraph: Update container TOML files to new format 2023-05-26 18:21:59 +01:00
folly_small_heap_vector_map.toml TypeGraph: Update container TOML files to new format 2023-05-26 18:21:59 +01:00
list_type.toml static types: place in own header for testing 2023-06-30 12:54:02 +01:00
map_seq_type.toml oil v2 2023-08-23 15:59:53 +01:00
multi_map_type.toml static types: place in own header for testing 2023-06-30 12:54:02 +01:00
optional_type.toml static types: place in own header for testing 2023-06-30 12:54:02 +01:00
pair_type.toml oil v2 2023-08-23 15:59:53 +01:00
priority_queue_container_adapter_type.toml static types: place in own header for testing 2023-06-30 12:54:02 +01:00
queue_container_adapter_type.toml static types: place in own header for testing 2023-06-30 12:54:02 +01:00
README.md oil v2 2023-08-23 15:59:53 +01:00
ref_wrapper_type.toml static types: place in own header for testing 2023-06-30 12:54:02 +01:00
repeated_field_type.toml TypeGraph: Update container TOML files to new format 2023-05-26 18:21:59 +01:00
repeated_ptr_field_type.toml TypeGraph: Update container TOML files to new format 2023-05-26 18:21:59 +01:00
seq_type.toml oil v2 2023-08-23 15:59:53 +01:00
set_type.toml std::set implementation for Container V2 2023-08-24 13:57:27 +02:00
shrd_ptr_type.toml static types: place in own header for testing 2023-06-30 12:54:02 +01:00
small_vec_type.toml Types: Fix folly::small_vector and folly::sorted_vector_map 2023-07-26 10:07:30 +01:00
sorted_vec_set_type.toml oil v2 2023-08-23 15:59:53 +01:00
stack_container_adapter_type.toml static types: place in own header for testing 2023-06-30 12:54:02 +01:00
std_map_type.toml static types: place in own header for testing 2023-06-30 12:54:02 +01:00
std_unordered_map_type.toml static types: place in own header for testing 2023-06-30 12:54:02 +01:00
std_variant.toml static types: place in own header for testing 2023-06-30 12:54:02 +01:00
string_type.toml TypeGraph: Replace allocators with DummyAllocator 2023-05-31 15:49:37 +01:00
thrift_isset_type.toml oil v2 2023-08-23 15:59:53 +01:00
try_type.toml Fix JIT CodeGen for Try<> 2023-08-21 19:16:13 +02:00
uniq_ptr_type.toml static types: place in own header for testing 2023-06-30 12:54:02 +01:00
unordered_set_type.toml static types: place in own header for testing 2023-06-30 12:54:02 +01:00
weak_ptr_type.toml oil v2 2023-08-23 15:59:53 +01:00

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) where ST defines the combined static type of each supplied processor.

Changes introduced with Typed Data Segment

  • decl and func fields are ignored when using -ftyped-data-segment and the handler field is used instead.

## Changes introduced with TreeBuilder V2

  • decl, func, and handler fields are ignored when using -ftree-builder-v2. The TypeHandler is instead constructed from traversal_func and processor entries.

Changes introduced with TypeGraph

  • typeName and matcher fields have been merged into the single field type_name.
  • ns namespace definition is no longer required.
  • underlyingContainerIndex renamed to underlying_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 from traversal_func and processor 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.