mirror of
https://github.com/JakeHillion/object-introspection.git
synced 2024-09-19 19:19:05 +01:00
72 lines
2.0 KiB
TOML
72 lines
2.0 KiB
TOML
[info]
|
|
type_name = "folly::basic_fbstring"
|
|
ctype = "FB_STRING_TYPE"
|
|
header = "folly/FBString.h"
|
|
|
|
# Old:
|
|
typeName = "folly::basic_fbstring<"
|
|
ns = ["folly::basic_fbstring", "folly::fbstring_core"]
|
|
numTemplateParams = 1
|
|
replaceTemplateParamIndex = []
|
|
|
|
[codegen]
|
|
decl = """
|
|
template <typename E,class T,class A,class Storage>
|
|
void getSizeType(const %1%<E, T, A, Storage> &container, size_t& returnArg);
|
|
"""
|
|
|
|
func = """
|
|
template <typename E,class T,class A,class Storage>
|
|
void getSizeType(const %1%<E, T, A, Storage> &container, size_t& returnArg)
|
|
{
|
|
SAVE_SIZE(sizeof(%1%<E, T, A, Storage>));
|
|
|
|
SAVE_DATA((uintptr_t)(container.data()));
|
|
SAVE_DATA((uintptr_t)container.capacity());
|
|
SAVE_DATA((uintptr_t)container.size());
|
|
|
|
bool inlined = ((uintptr_t)container.data() < (uintptr_t)(&container + sizeof(%1%<E, T, A, Storage>)))
|
|
&&
|
|
((uintptr_t)container.data() >= (uintptr_t)&container);
|
|
|
|
if (!inlined && pointers.add((uintptr_t)container.data())) {
|
|
SAVE_SIZE(container.capacity() * sizeof(T));
|
|
SAVE_DATA(1);
|
|
} else {
|
|
SAVE_DATA(0);
|
|
}
|
|
}
|
|
"""
|
|
|
|
handler = """
|
|
template <typename DB, typename T0, typename T1, typename T2, typename T3>
|
|
struct TypeHandler<DB, %1%<T0, T1, T2, T3>> {
|
|
using type = types::st::Pair<DB,
|
|
types::st::VarInt<DB>,
|
|
types::st::Pair<DB,
|
|
types::st::VarInt<DB>,
|
|
types::st::Pair<DB,
|
|
types::st::VarInt<DB>,
|
|
types::st::VarInt<DB>
|
|
>>>;
|
|
|
|
static types::st::Unit<DB> getSizeType(
|
|
const %1%<T0, T1, T2, T3>& container,
|
|
typename TypeHandler<DB, %1%<T0, T1, T2, T3>>::type returnArg) {
|
|
auto last = returnArg.write((uintptr_t)container.data())
|
|
.write(container.capacity())
|
|
.write(container.size());
|
|
|
|
bool inlined = ((uintptr_t)container.data() < (uintptr_t)(&container + sizeof(%1%<T0, T1, T2, T3>)))
|
|
&&
|
|
((uintptr_t)container.data() >= (uintptr_t)&container);
|
|
|
|
if (!inlined && pointers.add((uintptr_t)container.data())) {
|
|
return last.write(1);
|
|
} else {
|
|
return last.write(0);
|
|
}
|
|
}
|
|
};
|
|
"""
|