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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [g++.old-deja/] [g++.brendan/] [operators5.C] - Blame information for rev 823

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 149 jeremybenn
// { dg-do run  }
2
// GROUPS passed operators
3
// Check that operators may be (directly) recursive.
4
 
5
extern "C" int printf (const char *, ...);
6
 
7
struct base {
8
        int i;
9
};
10
 
11
base base_variable;
12
 
13
base operator+ (const base& left, const base& right)
14
{
15
        base ret_val;
16
 
17
        ret_val.i = left.i + right.i;
18
        return ret_val;
19
}
20
 
21
base operator- (const base& left, int right)
22
{
23
        base ret_val;
24
 
25
        ret_val.i = left.i - right;
26
        return ret_val;
27
}
28
 
29
// Define the unary ! operator for class base to be the fibonachi
30
// operator.
31
 
32
base operator! (const base& right)
33
{
34
        if (right.i < 2)
35
                return right;
36
        else
37
                return ((!(right-1)) + (!(right-2)));
38
}
39
 
40
int main ()
41
{
42
        base k;
43
 
44
        k.i = 15;
45
        k = !k;         // fib it!
46
 
47
        if (k.i != 610)
48
          { printf ("FAIL\n"); return 1; }
49
        else
50
          printf ("PASS\n");
51
 
52
        return 0;
53
}

powered by: WebSVN 2.1.0

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