includes = ["memory", "cstdint"] definitions = ''' void void_int_deleter(void *void_ptr) { auto *int_ptr = static_cast(void_ptr); delete int_ptr; } ''' [cases] [cases.unique_ptr_uint64_empty] param_types = ["std::unique_ptr&"] setup = "return {nullptr};" expect_json = ''' [ { "staticSize": 8, "dynamicSize": 0, "length": 0, "capacity": 1, "elementStaticSize": 8 } ] ''' [cases.unique_ptr_uint64_present] param_types = ["std::unique_ptr&"] setup = "return {std::make_unique(64)};" expect_json = ''' [ { "staticSize": 8, "dynamicSize": 8, "length": 1, "capacity": 1, "elementStaticSize": 8 } ] ''' [cases.unique_ptr_vector_empty] param_types = ["std::unique_ptr>&"] setup = "return {nullptr};" expect_json = ''' [ { "staticSize": 8, "dynamicSize": 0, "length": 0, "capacity": 1, "elementStaticSize": 24 } ] ''' [cases.unique_ptr_vector_present] param_types = ["std::unique_ptr>&"] setup = "return {std::make_unique>(std::initializer_list({1,2,3,4,5}))};" expect_json = ''' [ { "staticSize": 8, "dynamicSize": 64, "length": 1, "capacity": 1, "elementStaticSize": 24, "members": [ { "staticSize": 24, "dynamicSize": 40 } ] } ] ''' [cases.unique_ptr_void_empty] param_types = ["std::unique_ptr&"] setup = "return {std::unique_ptr(nullptr, &void_int_deleter)};" expect_json = ''' [ { "staticSize": 16, "dynamicSize": 0 } ] ''' [cases.unique_ptr_void_present] skip = "we don't report the dynamic size" param_types = ["std::unique_ptr&"] setup = "return {std::unique_ptr(new int, &void_int_deleter)};" expect_json = ''' [ { "staticSize": 16, "dynamicSize": 8 } ] ''' [cases.shared_ptr_uint64_empty] param_types = ["std::shared_ptr&"] setup = "return {nullptr};" expect_json = ''' [ { "staticSize": 16, "dynamicSize": 0, "length": 0, "capacity": 1, "elementStaticSize": 8 } ] ''' [cases.shared_ptr_uint64_present] param_types = ["std::shared_ptr&"] setup = "return std::make_shared(64);" expect_json = ''' [ { "staticSize": 16, "dynamicSize": 8, "length": 1, "capacity": 1, "elementStaticSize": 8 } ] ''' [cases.shared_ptr_vector_empty] param_types = ["std::shared_ptr>&"] setup = "return {nullptr};" expect_json = ''' [ { "staticSize": 16, "dynamicSize": 0, "length": 0, "capacity": 1, "elementStaticSize": 24 } ] ''' [cases.shared_ptr_vector_present] param_types = ["std::shared_ptr>&"] setup = "return std::make_shared>(std::initializer_list({1,2,3,4,5}));" expect_json = ''' [ { "staticSize": 16, "dynamicSize": 64, "length": 1, "capacity": 1, "elementStaticSize": 24, "members": [ { "staticSize": 24, "dynamicSize": 40 } ] } ] ''' [cases.shared_ptr_void_empty] param_types = ["std::shared_ptr&"] setup = "return {nullptr};" expect_json = ''' [ { "staticSize": 16, "dynamicSize": 0 } ] ''' [cases.shared_ptr_void_present] skip = "we don't report the dynamic size" param_types = ["std::shared_ptr&"] setup = "return {std::shared_ptr(new int)};" expect_json = ''' [ { "staticSize": 16, "dynamicSize": 8 } ] '''