iteratable.h 1.71 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*! \file iteratable.h
 * \brief Interface base class template definition 
 * 
 * ----------------------------------------------------------------------------
 * 
 * $Id: iteratable.h,v 1.1 2003-06-27 18:12:52 tforb Exp $
 * \author Thomas Forbriger
 * \date 27/06/2003
 * 
 * Interface base class template definition 
 * 
 * Copyright (c) 2003 by Thomas Forbriger (BFO Schiltach) 
 * 
 * REVISIONS and CHANGES 
 *  - 27/06/2003   V1.0   Thomas Forbriger
 * 
 * ============================================================================
 */

// include guard
#ifndef AFF_ITERATABLE_H_VERSION

#define AFF_ITERATABLE_H_VERSION \
  "AFF_ITERATABLE_H   V1.0"
#define AFF_ITERATABLE_H_CVSID \
  "$Id: iteratable.h,v 1.1 2003-06-27 18:12:52 tforb Exp $"

namespace aff {

/*! Base class template defining mandatory interface for iteratable containers
 *
 * This uses the Barton and Nackman trick for class template inheritance. The
 * class template aff::Iteratable is a base class to all iteratable
 * containers, i.e. containers that may be used together with with the
 * aff::Iterator class template. In case you define a function template the
 * may take any interatable container class as argument type for browsing
 * elements, use a declaration like
 * \code
 * template<class C>
 * void func(const aff::Iteratable<C>& cont);
 * \endcode
 *
 * \todo
 * Implement aff::Iteratable
 *
 * \todo
 * Inherit aff::Array and aff::Series from aff::Iteratable
 *
 * \todo
 * explain why this construct is helpful
 */
template<class C>
  class Iteratable {
    public:
    private:
      //! reference to leaf
      C& Mleaf;
  }; // class Iteratable

} // namespace aff

#endif // AFF_ITERATABLE_H_VERSION (includeguard)

/* ----- END OF iteratable.h ----- */