mirror of
https://github.com/JakeHillion/object-introspection.git
synced 2024-11-13 22:06:55 +00:00
36 lines
814 B
TOML
36 lines
814 B
TOML
[info]
|
||
typeName = "std::basic_string<"
|
||
numTemplateParams = 1
|
||
ctype = "STRING_TYPE"
|
||
header = "string"
|
||
ns = ["namespace std"]
|
||
replaceTemplateParamIndex = []
|
||
# allocatorIndex = 0
|
||
# underlyingContainerIndex = 0
|
||
|
||
[codegen]
|
||
decl = """
|
||
template<typename T>
|
||
void getSizeType(const %1%<T> &t, size_t& returnArg);
|
||
"""
|
||
|
||
func = """
|
||
template<typename T>
|
||
void getSizeType(const %1%<T> &t, size_t& returnArg)
|
||
{
|
||
SAVE_SIZE(sizeof(%1%<T>));
|
||
|
||
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%<T>)))
|
||
&&
|
||
((uintptr_t)t.data() >= (uintptr_t)&t)
|
||
? 0 : (t.capacity() * sizeof(T))
|
||
);
|
||
}
|
||
"""
|