#include <iostream>
using namespace std;
class Block
{
public:
Block(const char* name) :
name(name)
{
cout << "start: " << name << endl;
}
operator bool()
{
return false;
}
~Block()
{
cout << "end: " << name << endl;
}
private:
const char* name;
};
#define BLOCK(name) if(Block block = name) ; else
int main()
{
BLOCK("Program started")
{
if (1) BLOCK("if (1)")
{
cout << "Starting loop now\n";
for (int i = 0; i < 3; i++) BLOCK("Iteration")
{
cout << "Executing iteration " << i << "\n";
}
cout <<"Condition execution complete\n";
}
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApjbGFzcyBCbG9jawp7CnB1YmxpYzoKICAgIEJsb2NrKGNvbnN0IGNoYXIqIG5hbWUpIDoKICAgICAgICBuYW1lKG5hbWUpCiAgICB7CiAgICAgICAgY291dCA8PCAic3RhcnQ6ICIgPDwgbmFtZSA8PCBlbmRsOwogICAgfQogICAgb3BlcmF0b3IgYm9vbCgpIAogICAgeyAKICAgICAgICByZXR1cm4gZmFsc2U7IAogICAgfQogICAgfkJsb2NrKCkgCiAgICB7CiAgICAgICAgY291dCA8PCAiZW5kOiAiIDw8IG5hbWUgPDwgZW5kbDsKICAgIH0KcHJpdmF0ZTogICAgCiAgICBjb25zdCBjaGFyKiBuYW1lOwp9OwogCiNkZWZpbmUgQkxPQ0sobmFtZSkgaWYoQmxvY2sgYmxvY2sgPSBuYW1lKSA7IGVsc2UKIAppbnQgbWFpbigpCnsKCUJMT0NLKCJQcm9ncmFtIHN0YXJ0ZWQiKQoJewoJCWlmICgxKSAJQkxPQ0soImlmICgxKSIpCgkJewoJCQkJY291dCA8PCAiU3RhcnRpbmcgbG9vcCBub3dcbiI7CiAKCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKQlCTE9DSygiSXRlcmF0aW9uIikKCQkJCXsKCQkJCQkJY291dCA8PCAiRXhlY3V0aW5nIGl0ZXJhdGlvbiAiIDw8IGkgPDwgIlxuIjsKCQkJCX0KCQkJCWNvdXQgPDwiQ29uZGl0aW9uIGV4ZWN1dGlvbiBjb21wbGV0ZVxuIjsKCQl9Cgl9Cn0=