1 # $Id: node.rb,v 1.9 2011/12/12 18:16:56 machan Exp $
2
3 require 'tmdoc/tmstd'
4 require 'tmdoc/tmstd/treeable'
5 require 'tmdoc/constant'
6 require 'tmdoc/model/object/logical/path'
7 require 'tmdoc/model/object/logical/location'
8 require 'tmdoc/model/object/logical/abstraction'
9 require 'tmdoc/model/object/logical/leaf'
10
11
12 module TmDoc
13
14 module Model::Object::Logical
15
16 module Node
17
18 class ToplevelModule < Abstraction::RootModule
19 def suppressable?
20 result = super && (! self.has_any_properties?)
21
22 ASSERT.boolean result
23 end
24 end
25
26
27
28 class BuiltinModule < Abstraction::RootModule; end
29
30
31
32 class UnknownModule < Abstraction::RootModule; end
33
34
35
36 class Module < Abstraction::ChildModule; end
37
38
39
40 class Object < Abstraction::GenericClass
41 def initialize(
42 above_path,
43 name,
44 properties,
45 below_module_paths,
46 extendee_module_paths,
47 includee_module_paths,
48 above_module_path
49 )
50 ASSERT.kind_of above_path, Path
51 ASSERT.kind_of name, String
52 ASSERT.kind_of properties, MOLA::SetOfProperty
53 ASSERT.kind_of below_module_paths, SetOfPath
54 ASSERT.kind_of extendee_module_paths, SetOfPath
55 ASSERT.kind_of includee_module_paths, SetOfPath
56 ASSERT.kind_of above_module_path, Path
57
58 super(
59 SetOfLocation.new,
60 above_path,
61 name,
62 nil, # store
63 properties,
64 below_module_paths,
65 extendee_module_paths,
66 includee_module_paths,
67 above_module_path
68 )
69 end
70
71
72 def suppressable?
73 set_of_subclass = @store.map_of_superclass_to_subclasses.at self
74
75 result = set_of_subclass.all? { |a_subclass|
76 a_subclass.suppressable?
77 } && (! self.has_any_properties?)
78
79 ASSERT.boolean result
80 end
81
82
83 def ancestor_classes
84 unless @set_of_ancestor_class
85 @set_of_ancestor_class = Abstraction::SetOfGenericClass.new(
86 [self]
87 )
88 end
89
90 ASSERT.kind_of @set_of_ancestor_class, MOLA::SetOfGenericClass
91 end
92
93
94 def sibling_classes
95 siblings = Abstraction::EMPTY_SET_OF_GENERIC_CLASS
96
97 ASSERT.kind_of siblings, MOLA::SetOfGenericClass
98 end
99 end
100
101
102
103 class Class < Abstraction::ChildClass; end
104
105
106
107 class UnknownClass < Node::Class
108 def suppressable?
109 self.subclasses.empty?
110 end
111 end
112
113 end # TmDoc::Model::Object::Logical::Node
114
115 end # TmDoc::Model::Object::Logical
116
117 end # TmDoc