/switch

switch()-like statement whose cases can be strings and integrals

Primary LanguageC++

Build Status

switch

switch()-like statement whose cases are string literals and integrals

#Samples

int i = 1;
const char *r = switch_<const char*>(i)
  .case_(0, "0")
  .case_(1, "1")
  .case_(2, "2")
  .default_("undefined")
;
assert(!std::strcmp(r, "1"));
struct point {int x,y;
    point(int x, int y)
        :x(x)
        ,y(y)
    {}
    bool operator==(const point &r) const {
        return x == r.x && y == r.y;
    }
};

int i = 1;
const point r = switch_<point>(i)
    .case_(2, {100, 200})
    .case_(3, {200, 200})
    .default_({300, 300})
;
assert(r.x == 200 && r.y == 200);
std::string k = "3";
const point r = switch_<point>(k)
    .case_("2", {100, 200})
    .case_("3", {200, 200})
    .default_({300, 300})
;
assert(r.x == 200 && r.y == 200);
int i = 1;
const int r = switch_<int>(i)
    .case_(0, [](){return 0;})
    .case_(1, [](){return 1;})
    .case_(2, [](){return 2;})
    .default_([](){return 3;})
;
assert(r == 1);

Examples.