object-introspection/test/integration/std_list_del_allocator.toml
Jake Hillion e9d8df0ca4 oil: add support for std::list
Summary:

Remove the now useless `handler` and adds the `traversal_func` and `processor`
entries for `std::list`. This type is a bit weird as most of our sequential
containers don't have any overhead on storing the element. I went for the same
approach we take for maps where we have a shared `[]` element covering the map
overhead and below that a `key` & `value`. As we only have a single element
under it which doesn't have a logical name I went for `*`.

Closes #315.

Test Plan:
- CI
- Copied the relevant `std::vector` tests and updated the existing one.
2023-11-15 14:14:02 +00:00

67 lines
1.8 KiB
TOML

definitions = '''
namespace nsA {
struct C {
int a;
};
}
namespace nsB {
struct C {
int b;
};
}
template<typename T>
class CustomAllocator: public std::allocator<T>
{
};
// Naming conflict will only work if OI deletes the allocator field
struct Foo {
std::list<nsA::C, CustomAllocator<nsA::C>> v1;
std::list<nsB::C, CustomAllocator<nsB::C>> v2;
};
'''
includes = ["list"]
[cases]
[cases.a]
param_types = ["const Foo&"]
setup = '''
Foo foo;
foo.v1.resize(1);
foo.v2.resize(2);
return {foo};
'''
expect_json = '''[{
"staticSize":48,
"dynamicSize":12,
"members":[
{"name":"v1", "staticSize":24, "dynamicSize":4, "length":1, "capacity":1, "elementStaticSize":4,
"members":[
{"name":"", "typeName": "C", "staticSize":4, "dynamicSize":0,
"members":[
{"name":"a", "typeName": "int", "staticSize":4, "dynamicSize":0}
]}
]},
{"name":"v2", "staticSize":24, "dynamicSize":8, "length":2, "capacity":2, "elementStaticSize":4,
"members":[
{"name":"", "typeName": "C", "staticSize":4, "dynamicSize":0,
"members":[
{"name":"b", "typeName": "int", "staticSize":4, "dynamicSize":0}
]},
{"name":"", "typeName": "C", "staticSize":4, "dynamicSize":0,
"members":[
{"name":"b", "typeName": "int", "staticSize":4, "dynamicSize":0}
]}
]}
]}]'''
expect_json_v2 = '''[{
"staticSize": 48,
"exclusiveSize": 0,
"members": [
{"name": "v1", "staticSize": 24, "exclusiveSize": 24, "length": 1, "capacity": 1},
{"name": "v2", "staticSize": 24, "exclusiveSize": 24, "length": 2, "capacity": 2}
]}]'''