[info] typeName = "std::basic_string<" numTemplateParams = 1 ctype = "STRING_TYPE" header = "string" ns = ["namespace std"] replaceTemplateParamIndex = [] # allocatorIndex = 0 # underlyingContainerIndex = 0 [codegen] decl = """ template void getSizeType(const %1% &t, size_t& returnArg); """ func = """ template void getSizeType(const %1% &t, size_t& returnArg) { SAVE_SIZE(sizeof(%1%)); SAVE_DATA((uintptr_t)t.capacity()); SAVE_DATA((uintptr_t)t.size()); // Test for small string optimisation - whether the underlying string is // contained within the string object. SAVE_SIZE( ((uintptr_t)t.data() < (uintptr_t)(&t + sizeof(%1%))) && ((uintptr_t)t.data() >= (uintptr_t)&t) ? 0 : (t.capacity() * sizeof(T)) ); } """