Files
lasd/librerie/exercise4/iterator/iterator.hpp
Alessandro Ferro 25dadb7de6 Library 4
added template
2021-05-11 06:51:06 +02:00

180 lines
4.7 KiB
C++

#ifndef ITERATOR_HPP
#define ITERATOR_HPP
/* ************************************************************************** */
namespace lasd {
/* ************************************************************************** */
template <typename Data>
class Iterator {
private:
// ...
protected:
// ...
public:
// Destructor
// ~Iterator() specifiers
/* ************************************************************************ */
// Copy assignment
// type operator=(argument); // Copy assignment of abstract types should not be possible.
// Move assignment
// type operator=(argument); // Move assignment of abstract types should not be possible.
/* ************************************************************************ */
// Comparison operators
// type operator==(argument) specifiers; // Comparison of abstract types might not be possible.
// type operator!=(argument) specifiers; // Comparison of abstract types might not be possible.
/* ************************************************************************ */
// Specific member functions
// type operator*() specifiers; // (concrete function must throw std::out_of_range when terminated)
// type Terminated() specifiers; // (concrete function should not throw exceptions)
};
/* ************************************************************************** */
template <typename Data>
class ForwardIterator { // Must extend Iterator
private:
// ...
protected:
// ...
public:
// Destructor
// ~ForwardIterator() specifiers
/* ************************************************************************ */
// Copy assignment
// type operator=(argument); // Copy assignment of abstract types should not be possible.
// Move assignment
// type operator=(argument); // Move assignment of abstract types should not be possible.
/* ************************************************************************ */
// Comparison operators
// type operator==(argument) specifiers; // Comparison of abstract types might not be possible.
// type operator!=(argument) specifiers; // Comparison of abstract types might not be possible.
/* ************************************************************************ */
// Specific member functions
// type operator++() specifiers; // (concrete function must throw std::out_of_range when terminated)
};
/* ************************************************************************** */
template <typename Data>
class BackwardIterator { // Must extend Iterator
private:
// ...
protected:
// ...
public:
// Destructor
// ~BackwardIterator() specifiers
/* ************************************************************************ */
// Copy assignment
// type operator=(argument); // Copy assignment of abstract types should not be possible.
// Move assignment
// type operator=(argument); // Move assignment of abstract types should not be possible.
/* ************************************************************************ */
// Comparison operators
// type operator==(argument) specifiers; // Comparison of abstract types might not be possible.
// type operator!=(argument) specifiers; // Comparison of abstract types might not be possible.
/* ************************************************************************ */
// Specific member functions
// type operator--() specifiers; // (concrete function must throw std::out_of_range when terminated)
};
/* ************************************************************************** */
template <typename Data>
class BidirectionalIterator { // Must extend ForwardIterator and BackwardIterator
private:
// ...
protected:
// ...
public:
// Destructor
// ~BidirectionalIterator() specifiers
/* ************************************************************************ */
// Copy assignment
// type operator=(argument); // Copy assignment of abstract types should not be possible.
// Move assignment
// type operator=(argument); // Move assignment of abstract types should not be possible.
/* ************************************************************************ */
// Comparison operators
// type operator==(argument) specifiers; // Comparison of abstract types might not be possible.
// type operator!=(argument) specifiers; // Comparison of abstract types might not be possible.
/* ************************************************************************ */
// Specific member functions
// type Terminated() specifiers; // Override Iterator member
// type ForwardTerminated() specifiers; // (concrete function should not throw exceptions)
// type BackwardTerminated() specifiers; // (concrete function should not throw exceptions)
};
/* ************************************************************************** */
}
#endif