1 # $Id: physical.rb,v 1.3 2011/11/30 19:26:34 machan Exp $
2
3 require 'tmdoc/tmstd'
4 require 'tmdoc/tmstd/treeable'
5 require 'tmdoc/constant'
6 require 'tmdoc/model/abstraction'
7
8
9 module TmDoc
10
11 module Model::Module::Physical
12
13 module Abstraction
14
15 class Source < Model::Abstraction::Subject::PhysicalSubject; end
16
17
18
19 class SetOfSource < Model::Abstraction::Subject::SetOfPhysicalSubject
20 LSM_ELEMENT_CLASS = Source
21 end
22
23 end # TmDoc::Model::Module::Physical::Abstraction
24
25
26
27 class File < Abstraction::Source
28 attr_reader :require_files
29
30
31 def initialize(name, seq_num, require_file_names = [])
32 ASSERT.kind_of name, String
33 ASSERT.kind_of seq_num, Integer
34 ASSERT.kind_of require_file_names, Array
35
36 super(name, seq_num)
37
38 @require_files = SetOfRequireFile.new require_file_names
39 end
40
41
42 def to_s
43 str = super('file')
44
45 ASSERT.kind_of str, String
46 end
47
48
49 def print(indent)
50 ASSERT.kind_of indent, Integer
51
52 super(indent)
53
54 is = "\t" * indent
55 is1 = "\t" * (indent + 1)
56
57 unless self.require_files.empty?
58 LOG::Debug.log "%srequire_files:", is
59 for require_file in self.require_files.sort
60 LOG::Debug.log "%s%s", is1, require_file.to_s
61 end
62 end
63
64 nil
65 end
66 end
67
68
69
70 class SetOfFile < Abstraction::SetOfSource
71 LSM_ELEMENT_CLASS = File
72 end
73
74
75
76 class RequireFile < Abstraction::Source
77 def to_s
78 str = super('require file')
79
80 ASSERT.kind_of str, String
81 end
82 end
83
84
85
86 class SetOfRequireFile < Abstraction::SetOfSource
87 include TmStd::Lsm::Collection::Set::Mutable
88
89 LSM_ELEMENT_CLASS = RequireFile
90 end
91
92 end # TmDoc::Model::Module::Physical
93
94 end # TmDoc