Beispiel #1
0
void test_autodecl(const Shape* shape)
{
    double m = 0.0;

    Match(shape)
    {
        Case(Circle,c,r)  std::cout << "Circle"   << std::endl; m += r;       XTL_UNUSED(c); break;
        Case(Square,c,s)  std::cout << "Square"   << std::endl; m += s;       XTL_UNUSED(c); break;
        Case(Triangle,p)  std::cout << "Triangle" << std::endl; m += p.first; break;
        Otherwise()       std::cout << "Other"    << std::endl; m += 2;       break;
    }
    EndMatch
}
Beispiel #2
0
void do_match(const Shape* s0)
{
    const char* text = "unknown";

    Match(s0)
    {
    Case(const Circle&   a) text = "C"; XTL_UNUSED(a); break;
    Case(const Square&   a) text = "S"; XTL_UNUSED(a); break;
    Case(const Triangle& a) text = "T"; XTL_UNUSED(a); break;
    Otherwise()             text = "other";            break;
    }
    EndMatch

    std::cout << text << std::endl;
}
Beispiel #3
0
void do_match(const Shape* s0, const Shape* s1)
{
    const char* text = "unknown";

    Match(s0,s1)
    {
  //Case(const Circle&   a, const Circle&   b) text = "C,C"; XTL_UNUSED(a); XTL_UNUSED(b); break;
    Case(const Circle&   a, const Square&   b) text = "C,S"; XTL_UNUSED(a); XTL_UNUSED(b); break;
    Case(const Square&   a, const Circle&   b) text = "S,C"; XTL_UNUSED(a); XTL_UNUSED(b); break;
  //Case(const Square&   a, const Square&   b) text = "S,S"; XTL_UNUSED(a); XTL_UNUSED(b); break;
    Case(const Square&   a, const Triangle& b) text = "S,T"; XTL_UNUSED(a); XTL_UNUSED(b); break;
    Case(const Triangle& a, const Square&   b) text = "T,S"; XTL_UNUSED(a); XTL_UNUSED(b); break;
    Case(const Triangle& a, const Triangle& b) text = "T,T"; XTL_UNUSED(a); XTL_UNUSED(b); break;
    Case(const Triangle& a, const Circle&   b) text = "T,C"; XTL_UNUSED(a); XTL_UNUSED(b); break;
    Case(const Circle&   a, const Triangle& b) text = "C,T"; XTL_UNUSED(a); XTL_UNUSED(b); break;
    Otherwise()                                text = "other";                             break;
    }
Beispiel #4
0
void test_constant_variable(void)
{
    TEST_CASE_();

    int x = 100;
    Match(x)
    {
        Case(10)    std::cout << 1 << std::endl;
        Case(100)   std::cout << 2 << std::endl;
        Case(1000)  std::cout << 3 << std::endl;
    }
    EndMatch

    int a = 3, b = 321;
    Match(a, b)
    {
        Case(3, 123) std::cout << 1 << std::endl;
        Case(1, 2)   std::cout << 2 << std::endl;
        Case(3, 321) std::cout << 3 << std::endl;
        Otherwise()  std::cout << "Otherwise..." << std::endl;
    }