OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [g++.old-deja/] [g++.brendan/] [operators5.C] - Rev 338

Compare with Previous | Blame | View Log

// { dg-do run  }
// GROUPS passed operators
// Check that operators may be (directly) recursive.

extern "C" int printf (const char *, ...); 

struct base {
        int i;
};

base base_variable;

base operator+ (const base& left, const base& right)
{
        base ret_val;

        ret_val.i = left.i + right.i;
        return ret_val;
}

base operator- (const base& left, int right)
{
        base ret_val;

        ret_val.i = left.i - right;
        return ret_val;
}

// Define the unary ! operator for class base to be the fibonachi
// operator.

base operator! (const base& right)
{
        if (right.i < 2)
                return right;
        else
                return ((!(right-1)) + (!(right-2)));
}

int main ()
{
        base k;

        k.i = 15;
        k = !k;         // fib it!

        if (k.i != 610)
          { printf ("FAIL\n"); return 1; }
        else
          printf ("PASS\n");

        return 0;
}

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.