Provides classes and predicates for working with C/C++ code.
A string that represents an architecture. An “architecture” defines the sizes of variable-sized types and the properties of alignment for fields of various types. Two are provided out-of-the-box: ILP32 and LP64, corresponding to gcc’s behavior on x86 and amd64.
The ILP32 architecture has ints, longs and pointers of 32 bits.
The ILP32_MS architecture is essentially the same as the ILP32 architecture, except that long doubles are 64 bits.
The LLP64_MS architecture has pointers of 64 bits, but both long and int are still 32 bits.
The LP64 architecture has longs and pointers of 64 bits.
A class that is subject to padding by the compiler, and hence can introduce waste. Does not include types with virtual member functions, virtual base classes, or multiple base classes. These are excluded due to the complexity of the implementation.
Base class for architectures that follow the Itanium ABI. This includes pretty much everything except Windows, so we’ll refer to this as “UnixArchitecture” to avoid any confusion due to the use of the name “Itanium”.
Base class for Windows architectures.