// PR c++/15209 // { dg-options "-w" } __extension__ typedef __SIZE_TYPE__ size_t; typedef unsigned char uint8_t; typedef unsigned short int uint16_t; typedef unsigned int uint32_t; __extension__ typedef unsigned long long int uint64_t; typedef uint8_t u8; typedef uint16_t u16; typedef uint32_t u32; typedef uint64_t u64; struct MAGIC {u8 magic[8];} __attribute__ ((packed)); struct PACKETTYPE {u8 type[16];} __attribute__ ((packed)); typedef u16 leu16; typedef u32 leu32; typedef u64 leu64; class MD5Hash { public: MD5Hash(void) {}; void *print(void) const; MD5Hash(const MD5Hash &other); MD5Hash& operator=(const MD5Hash &other); public: u8 hash[16]; }; struct PACKET_HEADER { MAGIC magic; leu64 length; MD5Hash hash; MD5Hash setid; PACKETTYPE type; } __attribute__ ((packed)); struct MAINPACKET { PACKET_HEADER header; leu64 blocksize; leu32 recoverablefilecount; MD5Hash fileid[0]; } __attribute__ ((packed)); struct CriticalPacket { u8 *packetdata; size_t packetlength; }; class MainPacket : public CriticalPacket { const MD5Hash& SetId(void) const; u64 blocksize; u32 totalfilecount; u32 recoverablefilecount; }; inline const MD5Hash& MainPacket::SetId(void) const { return ((const MAINPACKET*)packetdata)->header.setid; }