mirror of
https://github.com/JakeHillion/object-introspection.git
synced 2024-11-14 14:26: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))
|
|||
|
);
|
|||
|
}
|
|||
|
"""
|