File: tmstd/lsm/abstraction.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: TmStd#3
  module: Lsm#5
  class: Abstract#7
inherits from
  Object ( Builtin-Module )
  module: Product#11
  class: Abstract#13
inherits from
  Abstract ( TmStd::Lsm )
  module: Sum#19
  class: Abstract#21
inherits from
  Abstract ( TmStd::Lsm )
has properties
method: lsm_member #22
  module: Collection#31
  class: Abstract#33
includes
  Enumerable ( Builtin-Module )
inherits from
  Abstract ( TmStd::Lsm )
has properties
method: lsm_elements #36
method: each #41
method: empty? #46
method: size #51
method: lsm_element_class / 1 #58

Class Hierarchy

Code

   1  # $Id: abstraction.rb,v 1.3 2011/12/08 22:54:35 machan Exp $
   2 
   3  module TmStd
   4 
   5  module Lsm
   6 
   7  class Abstract; end
   8 
   9 
  10 
  11  module Product
  12 
  13  class Abstract < TmStd::Lsm::Abstract; end
  14 
  15  end
  16 
  17 
  18 
  19  module Sum
  20 
  21  class Abstract < TmStd::Lsm::Abstract
  22      def lsm_member
  23          raise TmStd::Exception::SubclassResponsibility
  24      end
  25  end
  26 
  27  end
  28 
  29 
  30 
  31  module Collection
  32 
  33  class Abstract < TmStd::Lsm::Abstract
  34      include Enumerable
  35 
  36      def lsm_elements
  37          raise TmStd::Exception::SubclassResponsibility
  38      end
  39 
  40 
  41      def each
  42          raise TmStd::Exception::SubclassResponsibility
  43      end
  44 
  45 
  46      def empty?
  47          Assertion.boolean self.lsm_elements.empty?
  48      end
  49 
  50 
  51      def size
  52          Assertion.kind_of self.lsm_elements.size, Integer
  53      end
  54 
  55 
  56  private
  57 
  58      def lsm_element_class(const_name = 'LSM_ELEMENT_CLASS')
  59          begin
  60              elem_class = self.class.const_get const_name
  61          rescue NameError
  62              raise TmStd::Exception::SubclassResponsibility
  63          end
  64 
  65          Assertion.kind_of elem_class, ::Class
  66      end
  67  end
  68 
  69  end
  70 
  71  end # TmStd::Lsm
  72 
  73  end # TmStd