#include <iostream>
constexpr long hash(const char* ptr) { return ptr[0] == '\0' ? 0 : ((hash(ptr + 1) << 1) ^ ptr[0]); }
void my_method(const char* function)
{
switch(hash(function))
{
case hash("test1"): { std::cout << "test 1 got matched." << std::endl; } break;
case hash("test2"): { std::cout << "test 2 got matched." << std::endl; } break;
default: { std::cout << "test 1 got matched." << std::endl; } break;
}
}
int main(int argc, char** argv)
{
my_method("test1");
my_method("test2");
my_method("");
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY29uc3RleHByIGxvbmcgaGFzaChjb25zdCBjaGFyKiBwdHIpIHsgcmV0dXJuIHB0clswXSA9PSAnXDAnID8gMCA6ICgoaGFzaChwdHIgKyAxKSA8PCAxKSBeIHB0clswXSk7IH0KCgp2b2lkIG15X21ldGhvZChjb25zdCBjaGFyKiBmdW5jdGlvbikKewoJc3dpdGNoKGhhc2goZnVuY3Rpb24pKQoJewoJCWNhc2UgaGFzaCgidGVzdDEiKTogeyBzdGQ6OmNvdXQgPDwgInRlc3QgMSBnb3QgbWF0Y2hlZC4iIDw8IHN0ZDo6ZW5kbDsgfSBicmVhazsKCQljYXNlIGhhc2goInRlc3QyIik6IHsgc3RkOjpjb3V0IDw8ICJ0ZXN0IDIgZ290IG1hdGNoZWQuIiA8PCBzdGQ6OmVuZGw7IH0gYnJlYWs7CgkJZGVmYXVsdDogeyBzdGQ6OmNvdXQgPDwgInRlc3QgMSBnb3QgbWF0Y2hlZC4iIDw8IHN0ZDo6ZW5kbDsgfSBicmVhazsKCX0KfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQp7CglteV9tZXRob2QoInRlc3QxIik7CglteV9tZXRob2QoInRlc3QyIik7CglteV9tZXRob2QoIiIpOwp9