#include <iostream>
#include <cassert>
// File format: [ciiiiciiii...] a char (1 byte) followed by its state (4 bytes)
// Each group takes 5 bytes
char Buffer[30]; // 5*6, six groups
struct Group {
char c;
int state;
};
int main(void) {
assert(sizeof(char) == 1);
assert(sizeof(int) == 4);
Group& first_group = *(Group*)(&Buffer[0]); // Group 1 is at 0
Group& second_group = *(Group*)(&Buffer[5]); // Group 2 is at 5
first_group.c = '2';
first_group.state = 1234;
std::cout << first_group.state << std::endl;
second_group = first_group;
std::cout << first_group.state << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y2Fzc2VydD4KLy8gRmlsZSBmb3JtYXQ6IFtjaWlpaWNpaWlpLi4uXSBhIGNoYXIgKDEgYnl0ZSkgZm9sbG93ZWQgYnkgaXRzIHN0YXRlICg0IGJ5dGVzKQovLyBFYWNoIGdyb3VwIHRha2VzIDUgYnl0ZXMKY2hhciBCdWZmZXJbMzBdOyAvLyA1KjYsIHNpeCBncm91cHMKCnN0cnVjdCBHcm91cCB7CgljaGFyIGM7CglpbnQgc3RhdGU7Cn07CgppbnQgbWFpbih2b2lkKSB7Cglhc3NlcnQoc2l6ZW9mKGNoYXIpID09IDEpOwoJYXNzZXJ0KHNpemVvZihpbnQpID09IDQpOwoJCglHcm91cCYgZmlyc3RfZ3JvdXAgPSAqKEdyb3VwKikoJkJ1ZmZlclswXSk7IC8vIEdyb3VwIDEgaXMgYXQgMAoJR3JvdXAmIHNlY29uZF9ncm91cCA9ICooR3JvdXAqKSgmQnVmZmVyWzVdKTsgLy8gR3JvdXAgMiBpcyBhdCA1CgkKCWZpcnN0X2dyb3VwLmMgPSAnMic7CglmaXJzdF9ncm91cC5zdGF0ZSA9IDEyMzQ7CgkKCXN0ZDo6Y291dCA8PCBmaXJzdF9ncm91cC5zdGF0ZSA8PCBzdGQ6OmVuZGw7CgkKCXNlY29uZF9ncm91cCA9IGZpcnN0X2dyb3VwOwoJCglzdGQ6OmNvdXQgPDwgZmlyc3RfZ3JvdXAuc3RhdGUgPDwgc3RkOjplbmRsOwoJCglyZXR1cm4gMDsKfQo=