1e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _fib_h
2e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _fib_h
3e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass Fibonacci
4e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{
5e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  public:
6e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    Fibonacci() : v1(0), v2(1) {}
7e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    inline int operator()();
8e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  private:
9e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    int v1;
10e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    int v2;
11e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott};
12e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
13e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottinline int
14e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick ScottFibonacci::operator()()
15e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{
16e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  int r = v1 + v2;
17e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  v1 = v2;
18e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  v2 = r;
19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  return v1;
20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}
21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif // _fib_h
22