#include <iostream>
#include <string>
// Forward declaration so DisplayDriver knows SPIBus exists
class SPIBus;
class DisplayDriver {
public:
/**
* Directly modifies the private buffer of an SPIBus instance.
* This bypasses standard access modifiers for high-performance writing.
*/
void fastWrite(SPIBus& bus, int v1, int v2);
};
class SPIBus {
private:
int buffer[2];
// Granting friend status to DisplayDriver.
// This allows DisplayDriver to access 'buffer' even though it's private.
friend class DisplayDriver;
public:
SPIBus() {
buffer[0] = 0;
buffer[1] = 0;
}
// Displays current buffer state to standard output
void dump() {
std::cout << "Buffer: [ " << buffer[0] << " " << buffer[1] << " ]" << std::endl;
}
};
/**
* Implementation of fastWrite.
* Because DisplayDriver is a friend of SPIBus, we can access bus.buffer directly.
*/
void DisplayDriver::fastWrite(SPIBus& bus, int v1, int v2) {
bus.buffer[0] = v1;
bus.buffer[1] = v2;
}
int main() {
SPIBus bus;
DisplayDriver driver;
int N;
// Read the number of commands
if (!(std::cin >> N)) return 0;
for (int i = 0; i < N; ++i) {
std::string cmd;
std::cin >> cmd;
if (cmd == "WRITE") {
int v1, v2;
std::cin >> v1 >> v2;
driver.fastWrite(bus, v1, v2);
} else if (cmd == "SHOW") {
bus.dump();
}
}
return 0;
}