object-introspection/types/thrift_isset_type.toml
Alastair Robertson 3d91603c8e TypeGraph: Fix std::string container
std::basic_string takes three template parameters:
1. CharT
2. Traits
3. Allocator

The Traits parameter was causing issues, as it requires a type which
exposes certain things, e.g. `Traits::value_type`.

We have a few options to resolve this:
1. Remove this parameter, as we do for allocators
    Cons: removing a template parameter doesn't work if other
    parameters appear after it

2. Stub this parameter, as we do for hashers/comparators
    Cons: we need to hardcode an implementation that satisfies the
    `Traits::value_type` requirements

3. Leave the parameter as-is
    Cons: will not work if a non-standard Traits is used

    By using the real implementation of this Traits parameter
    (normally `std::char_traits<CharT>`), we get one that we know will
    work as long as it is defined in a stdlib header.

Option 3 is what we use in this patch. Instead of adding more
configuration options to the container TOML file format (e.g.
`params_to_keep = [1]`), we add `std::char_traits` as a dummy
container type. Now, whenever `std::char_traits` appears, it will be
left as-is, i.e. not removed, replaced or reverse-engineered.

This is the same approach previously used for Thrift's isset_bitset.
2023-05-30 17:17:29 +01:00

19 lines
360 B
TOML

[info]
type_name = "apache::thrift::detail::isset_bitset"
ctype = "DUMMY_TYPE"
header = "thrift/lib/cpp2/gen/module_types_h.h"
# Old:
typeName = "apache::thrift::detail::isset_bitset<"
ns = ["apache::thrift::detail::isset_bitset"]
numTemplateParams = 2
replaceTemplateParamIndex = []
[codegen]
decl = """
// DummyDecl %1%
"""
func = """
// DummyFunc %1%
"""