mirror of
https://github.com/JakeHillion/object-introspection.git
synced 2024-09-19 19:19:05 +01:00
3d91603c8e
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.
19 lines
360 B
TOML
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%
|
|
"""
|