#include <functional>
#include <vector>
#include <iostream>
#define DEVICE_A 0
#define DEVICE_B 1
//..
#define DEVICE_N 50
#define COMPANY_A 0
#define COMPANY_B 1
#define COMPANY_C 2
#define COMPANY_D 2
//..
#define COMPANY_N 50
int main ()
{
int giCompany = COMPANY_B;
int giDevice = DEVICE_A;
int randomValue_1 = 5;
int randomValue_2 = 7;
std::vector<std::pair<std::function<bool(int, int)>, std::function<void()>>> operations =
{
{
[] (int company, int device) {return company == COMPANY_A || company == COMPANY_B || company != COMPANY_C && device == DEVICE_A;},
[&] {std::cout << "First case " << randomValue_1 << '\n';}
},
{
[] (int company, int device) {return company == COMPANY_D;},
[&] {std::cout << "Second case " << randomValue_2 << '\n';}
},
};
for (auto const& pair: operations)
{
if (pair.first (giCompany, giDevice))
{
pair.second ();
}
}
}
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCiNkZWZpbmUgREVWSUNFX0EgMAojZGVmaW5lIERFVklDRV9CIDEKLy8uLgojZGVmaW5lIERFVklDRV9OIDUwCgojZGVmaW5lIENPTVBBTllfQSAwCiNkZWZpbmUgQ09NUEFOWV9CIDEKI2RlZmluZSBDT01QQU5ZX0MgMgojZGVmaW5lIENPTVBBTllfRCAyCi8vLi4KI2RlZmluZSBDT01QQU5ZX04gNTAKCmludCBtYWluICgpCgl7CglpbnQgZ2lDb21wYW55ID0gQ09NUEFOWV9COwoJaW50IGdpRGV2aWNlID0gREVWSUNFX0E7CglpbnQgcmFuZG9tVmFsdWVfMSA9IDU7CglpbnQgcmFuZG9tVmFsdWVfMiA9IDc7CglzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpmdW5jdGlvbjxib29sKGludCwgaW50KT4sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4+IG9wZXJhdGlvbnMgPQoJCXsKCQkJewoJCQlbXSAoaW50IGNvbXBhbnksIGludCBkZXZpY2UpIHtyZXR1cm4gY29tcGFueSA9PSBDT01QQU5ZX0EgfHwgY29tcGFueSA9PSBDT01QQU5ZX0IgfHwgY29tcGFueSAhPSBDT01QQU5ZX0MgJiYgZGV2aWNlID09IERFVklDRV9BO30sCgkJIAlbJl0ge3N0ZDo6Y291dCA8PCAiRmlyc3QgY2FzZSAiIDw8IHJhbmRvbVZhbHVlXzEgPDwgJ1xuJzt9CgkJIAl9LAoJCSAJewoJCQlbXSAoaW50IGNvbXBhbnksIGludCBkZXZpY2UpIHtyZXR1cm4gY29tcGFueSA9PSBDT01QQU5ZX0Q7fSwKCQkgCVsmXSB7c3RkOjpjb3V0IDw8ICJTZWNvbmQgY2FzZSAiIDw8IHJhbmRvbVZhbHVlXzIgPDwgJ1xuJzt9CgkJIAl9LAoJCX07CgkJCglmb3IgKGF1dG8gY29uc3QmIHBhaXI6IG9wZXJhdGlvbnMpCgkJewoJCWlmIChwYWlyLmZpcnN0IChnaUNvbXBhbnksIGdpRGV2aWNlKSkKCQkJewoJCQlwYWlyLnNlY29uZCAoKTsKCQkJfQoJCX0KCX0=