template <typename T>
struct RemoteAbiTranscriber
Defined at line 82 of file ../../sdk/lib/ld/include/lib/ld/remote-abi-transcriber.h
This is the main point of specialization, which is the responsibility of the
definer of T. It gets explicit (often partial) specializations for the most
interesting types. Otherwise the default implementation handles three kinds
of "uninteresting" types:
* Single-byte integral types that are copied verbatim (e.g. bool, uint8_t).
* Single-byte enum types that are copied verbatim.
* All
<lib
/elfldltl/layout.h> and
<lib
/elfldltl/field.h> types (regardless
of ElfClass and ElfData, as per elfldltl::kIsLayout) are copied verbatim.
* Class / struct types are copied member-by-member. To make this work
they must provide the API of Abi* template aliases described below.
Explicit partial specializations below cover the
<lib
/elfldltl/field.h>
types, which are copied verbatim; and std::array, which is copied piecewise
(separately transcribing each element, however that type is specialized).
The partial specialization of elfldltl::AbiPtr is the only generic type
that's considered "interesting". elfldltl::AbiPtr or its derivatives (such
as AbiSpan) must be used for all pointers in transcribable data structures.
Those must take an AbiTraits template class parameter and propagate it down
to all the ABI-sensitive types, especially AbiPtr.