An abstract data type which can be iterated, for which the number of pieces of items of data stored within is known.
type, extends(iterable), abstract, public :: countable
!* Author: Chris MacMackin
! Date: February 2016
! License: LGPLv3
!
! An abstract data type which can be iterated, for which the number of
! pieces of items of data stored within is known.
!
contains
procedure(size_func), deferred :: size
!! Return the number of items stored within this object
end type countable