bake-toolkit 2.19.2 → 2.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/documentation/_build/html/_images/dot.png +0 -0
  3. data/documentation/_build/html/_images/dotP.png +0 -0
  4. data/documentation/_build/html/_images/dotPC.png +0 -0
  5. data/documentation/_build/html/_sources/changelog.txt +12 -0
  6. data/documentation/_build/html/_sources/concepts/concepts.txt +2 -0
  7. data/documentation/_build/html/_sources/concepts/inject.txt +65 -0
  8. data/documentation/_build/html/_sources/concepts/prebuild.txt +56 -0
  9. data/documentation/_build/html/_sources/index.txt +1 -1
  10. data/documentation/_build/html/_sources/syntax/auto_adjustment.txt +43 -0
  11. data/documentation/_build/html/_sources/syntax/syntax.txt +1 -1
  12. data/documentation/_build/html/_sources/syntax/variable_substitutions.txt +41 -68
  13. data/documentation/_build/html/_sources/tips_and_tricks/dot.txt +34 -0
  14. data/documentation/_build/html/_sources/tips_and_tricks/tips_and_tricks.txt +1 -1
  15. data/documentation/_build/html/_static/dot.png +0 -0
  16. data/documentation/_build/html/_static/dotP.png +0 -0
  17. data/documentation/_build/html/_static/dotPC.png +0 -0
  18. data/documentation/_build/html/_static/syntax.html +20 -0
  19. data/documentation/_build/html/changelog.html +17 -3
  20. data/documentation/_build/html/commandline/commandline.html +3 -3
  21. data/documentation/_build/html/concepts/build_hierarchy.html +3 -3
  22. data/documentation/_build/html/concepts/concepts.html +13 -3
  23. data/documentation/_build/html/concepts/inject.html +217 -0
  24. data/documentation/_build/html/concepts/link_order.html +3 -3
  25. data/documentation/_build/html/concepts/prebuild.html +205 -0
  26. data/documentation/_build/html/concepts/the_main_project.html +3 -3
  27. data/documentation/_build/html/concepts/the_project_meta_file.html +3 -3
  28. data/documentation/_build/html/genindex.html +3 -3
  29. data/documentation/_build/html/ide/eclipse/eclipse.html +3 -3
  30. data/documentation/_build/html/ide/eclipse/how_to_convert_existing_cdt_workspace.html +3 -3
  31. data/documentation/_build/html/ide/eclipse/how_to_create_a_new_project_in_eclipse.html +3 -3
  32. data/documentation/_build/html/ide/eclipse/how_to_create_a_workspace_in_eclipse.html +3 -3
  33. data/documentation/_build/html/ide/eclipse/how_to_debug_in_eclipse.html +3 -3
  34. data/documentation/_build/html/ide/eclipse/how_to_install_eclipse_plugin.html +3 -3
  35. data/documentation/_build/html/ide/eclipse/how_to_use_bake_in_eclipse.html +3 -3
  36. data/documentation/_build/html/ide/ide_integrations.html +3 -3
  37. data/documentation/_build/html/ide/vs/how_to_create_vs_projects.html +3 -3
  38. data/documentation/_build/html/ide/vs/how_to_debug_in_vs.html +3 -3
  39. data/documentation/_build/html/ide/vs/how_to_used_bake_in_vs.html +3 -3
  40. data/documentation/_build/html/ide/vs/vs.html +3 -3
  41. data/documentation/_build/html/ide/vs/vs_install.html +3 -3
  42. data/documentation/_build/html/index.html +10 -7
  43. data/documentation/_build/html/install/install_bake.html +3 -3
  44. data/documentation/_build/html/internal.html +3 -3
  45. data/documentation/_build/html/known_issues.html +3 -3
  46. data/documentation/_build/html/license.html +3 -3
  47. data/documentation/_build/html/performance/performance.html +5 -5
  48. data/documentation/_build/html/quickstart/quickstart.html +3 -3
  49. data/documentation/_build/html/search.html +3 -3
  50. data/documentation/_build/html/searchindex.js +1 -1
  51. data/documentation/_build/html/syntax/adapt_configs.html +3 -3
  52. data/documentation/_build/html/syntax/auto_adjustment.html +190 -0
  53. data/documentation/_build/html/syntax/derive_configs.html +3 -3
  54. data/documentation/_build/html/syntax/project_meta_syntax.html +23 -3
  55. data/documentation/_build/html/syntax/syntax.html +11 -7
  56. data/documentation/_build/html/syntax/variable_substitutions.html +54 -67
  57. data/documentation/_build/html/tips_and_tricks/{bundle.html → dot.html} +25 -19
  58. data/documentation/_build/html/tips_and_tricks/how_to_use_bake_with_cygwin.html +3 -3
  59. data/documentation/_build/html/tips_and_tricks/static_code_analysis.html +3 -3
  60. data/documentation/_build/html/tips_and_tricks/the_bakery.html +3 -3
  61. data/documentation/_build/html/tips_and_tricks/the_clang.html +5 -5
  62. data/documentation/_build/html/tips_and_tricks/tips_and_tricks.html +4 -4
  63. data/documentation/_build/html/why_bake/why_bake.html +5 -5
  64. data/lib/adapt/config/loader.rb +37 -35
  65. data/lib/bake/config/checks.rb +19 -11
  66. data/lib/bake/config/loader.rb +67 -60
  67. data/lib/bake/model/metamodel.rb +56 -30
  68. data/lib/bake/options/options.rb +37 -3
  69. data/lib/bake/options/usage.rb +12 -3
  70. data/lib/bake/subst.rb +5 -2
  71. data/lib/blocks/block.rb +27 -6
  72. data/lib/blocks/blockBase.rb +2 -17
  73. data/lib/blocks/compile.rb +91 -91
  74. data/lib/blocks/executable.rb +41 -41
  75. data/lib/common/version.rb +1 -1
  76. data/lib/tocxx.rb +212 -55
  77. metadata +16 -4
  78. data/documentation/_build/html/_sources/tips_and_tricks/bundle.txt +0 -24
@@ -100,9 +100,9 @@ module Bake
100
100
  p = @block.convPath(@tcs[:OUTPUT_DIR])
101
101
  @output_dir = p
102
102
  elsif isMainProject?
103
- @output_dir = "build/" + Bake.options.build_config
103
+ @output_dir = "build" + Bake.options.buildDirDelimiter + Bake.options.build_config
104
104
  else
105
- @output_dir = "build/" + @config.name + "_" + Bake.options.main_project_name + "_" + Bake.options.build_config
105
+ @output_dir = "build" + Bake.options.buildDirDelimiter + @config.name + "_" + Bake.options.main_project_name + "_" + Bake.options.build_config
106
106
  end
107
107
  end
108
108
 
@@ -199,21 +199,6 @@ module Bake
199
199
  incList
200
200
  end
201
201
 
202
- def getSubBlocks(b, method)
203
- b.send(method).each do |child_b|
204
- if not @otherBlocks.include?child_b
205
- @otherBlocks << child_b
206
- getSubBlocks(child_b, method)
207
- end
208
- end
209
- end
210
-
211
- def getBlocks(method)
212
- @otherBlocks = []
213
- getSubBlocks(@block, method)
214
- return @otherBlocks
215
- end
216
-
217
202
  end
218
203
  end
219
204
  end
@@ -6,24 +6,24 @@ require 'bake/toolchain/colorizing_formatter'
6
6
  require 'bake/config/loader'
7
7
 
8
8
  module Bake
9
-
9
+
10
10
  module Blocks
11
-
11
+
12
12
  class Compile < BlockBase
13
-
13
+
14
14
  attr_reader :objects, :include_list
15
-
15
+
16
16
  def initialize(block, config, referencedConfigs, tcs)
17
17
  super(block, config, referencedConfigs, tcs)
18
18
  @objects = []
19
19
  @object_files = {}
20
-
20
+
21
21
  calcFileTcs
22
22
  calcIncludes
23
23
  calcDefines # not for files with changed tcs
24
24
  calcFlags # not for files with changed tcs
25
25
  end
26
-
26
+
27
27
  def get_object_file(source)
28
28
 
29
29
  # until now all OBJECT_FILE_ENDING are equal in all three types
@@ -31,23 +31,23 @@ module Bake
31
31
  return adaptedSource if File.is_absolute?source
32
32
  File.join([@output_dir, adaptedSource])
33
33
  end
34
-
34
+
35
35
  def ignore?(type)
36
36
  Bake.options.linkOnly or (Bake.options.prepro and type == ASM)
37
37
  end
38
-
38
+
39
39
  def needed?(source, object, type, dep_filename_conv)
40
40
  return "because analyzer toolchain is configured" if Bake.options.analyze
41
- return "because prepro was specified and source is no assembler file" if Bake.options.prepro
42
-
41
+ return "because prepro was specified and source is no assembler file" if Bake.options.prepro
42
+
43
43
  return "because object does not exist" if not File.exist?(object)
44
44
  oTime = File.mtime(object)
45
-
45
+
46
46
  return "because source is newer than object" if oTime < File.mtime(source)
47
-
47
+
48
48
  if type != :ASM
49
49
  return "because dependency file does not exist" if not File.exist?(dep_filename_conv)
50
-
50
+
51
51
  begin
52
52
  File.readlines(dep_filename_conv).map{|line| line.strip}.each do |dep|
53
53
  if not File.exist?(dep)
@@ -68,19 +68,19 @@ module Bake
68
68
  if Bake.options.debug
69
69
  puts "While reading #{dep_filename_conv}:"
70
70
  puts ex.message
71
- puts ex.backtrace
71
+ puts ex.backtrace
72
72
  end
73
73
  return "because dependency file could not be loaded"
74
74
  end
75
75
  end
76
-
76
+
77
77
  false
78
78
  end
79
-
79
+
80
80
  def calcCmdlineFile(object)
81
81
  object[0..-3] + ".cmdline"
82
82
  end
83
-
83
+
84
84
  def calcDepFile(object, type)
85
85
  dep_filename = nil
86
86
  if type != :ASM
@@ -88,7 +88,7 @@ module Bake
88
88
  end
89
89
  dep_filename
90
90
  end
91
-
91
+
92
92
  def calcDepFileConv(dep_filename)
93
93
  dep_filename + ".bake"
94
94
  end
@@ -100,16 +100,16 @@ module Bake
100
100
  end
101
101
  nil
102
102
  end
103
-
103
+
104
104
  def compileFile(source)
105
105
  type = get_source_type(source)
106
106
  return if type.nil?
107
-
107
+
108
108
  object = @object_files[source]
109
-
109
+
110
110
  dep_filename = calcDepFile(object, type)
111
111
  dep_filename_conv = calcDepFileConv(dep_filename) if type != :ASM
112
-
112
+
113
113
  cmdLineCheck = false
114
114
  cmdLineFile = calcCmdlineFile(object)
115
115
 
@@ -131,14 +131,14 @@ module Bake
131
131
  end
132
132
  includes = @include_array[type]
133
133
 
134
- if Bake.options.prepro and compiler[:PREPRO_FLAGS] == ""
134
+ if Bake.options.prepro and compiler[:PREPRO_FLAGS] == ""
135
135
  Bake.formatter.printError("Error: No preprocessor option available for " + source)
136
- raise SystemCommandFailed.new
136
+ raise SystemCommandFailed.new
137
137
  end
138
-
138
+
139
139
  cmd = Utils.flagSplit(compiler[:COMMAND], false)
140
140
  cmd += compiler[:COMPILE_FLAGS].split(" ")
141
-
141
+
142
142
  if dep_filename
143
143
  cmd += @tcs[:COMPILER][type][:DEP_FLAGS].split(" ")
144
144
  if @tcs[:COMPILER][type][:DEP_FLAGS_FILENAME]
@@ -150,17 +150,17 @@ module Bake
150
150
  else
151
151
  cmd[cmd.length-1] << dep_filename
152
152
  end
153
-
153
+
154
154
  end
155
155
  end
156
156
  end
157
-
157
+
158
158
  cmd += compiler[:PREPRO_FLAGS].split(" ") if Bake.options.prepro
159
159
  cmd += flags
160
160
  cmd += includes
161
161
  cmd += defines
162
-
163
- offlag = compiler[:OBJECT_FILE_FLAG]
162
+
163
+ offlag = compiler[:OBJECT_FILE_FLAG]
164
164
  offlag = compiler[:PREPRO_FILE_FLAG] if compiler[:PREPRO_FILE_FLAG] and Bake.options.prepro
165
165
 
166
166
  if compiler[:OBJ_FLAG_SPACE]
@@ -168,7 +168,7 @@ module Bake
168
168
  cmd << object
169
169
  else
170
170
  if object.include?" "
171
- cmd << offlag + "\"" + object + "\""
171
+ cmd << offlag + "\"" + object + "\""
172
172
  else
173
173
  cmd << offlag + object
174
174
  end
@@ -178,24 +178,24 @@ module Bake
178
178
  if Bake.options.cc2j_filename
179
179
  Blocks::CC2J << { :directory => @projectDir, :command => cmd, :file => source }
180
180
  end
181
-
181
+
182
182
  if not (cmdLineCheck and BlockBase.isCmdLineEqual?(cmd, cmdLineFile))
183
183
  BlockBase.prepareOutput(object)
184
184
  BlockBase.writeCmdLineFile(cmd, cmdLineFile)
185
185
  success, consoleOutput = ProcessHelper.run(cmd, false, false)
186
-
186
+
187
187
  outputType = Bake.options.analyze ? "Analyzing" : (Bake.options.prepro ? "Preprocessing" : "Compiling")
188
188
  incList = process_result(cmd, consoleOutput, compiler[:ERROR_PARSER], "#{outputType} #{source}", reason, success)
189
-
189
+
190
190
  if type != :ASM and not Bake.options.analyze and not Bake.options.prepro
191
191
  incList = Compile.read_depfile(dep_filename, @projectDir, @tcs[:COMPILER][:DEP_FILE_SINGLE_LINE]) if incList.nil?
192
- Compile.write_depfile(incList, dep_filename_conv)
192
+ Compile.write_depfile(incList, dep_filename_conv)
193
193
  end
194
194
  check_config_file
195
195
  end
196
-
196
+
197
197
  Bake::Bundle.instance.addSource(source, @include_list, dep_filename_conv) if isMainProject?
198
-
198
+
199
199
  end
200
200
 
201
201
  def self.read_depfile(dep_filename, projDir, singeLine)
@@ -206,7 +206,7 @@ module Bake
206
206
  splitted = line.split(": ")
207
207
  deps << splitted[1].gsub(/[\\]/,'/') if splitted.length > 1
208
208
  end
209
- else
209
+ else
210
210
  deps_string = File.read(dep_filename)
211
211
  deps_string = deps_string.gsub(/\\\n/,'')
212
212
  dep_splitted = deps_string.split(/([^\\]) /).each_slice(2).map(&:join)[2..-1]
@@ -218,7 +218,7 @@ module Bake
218
218
  end
219
219
  deps
220
220
  end
221
-
221
+
222
222
  # todo: move to toolchain util file
223
223
  def self.write_depfile(deps, dep_filename_conv)
224
224
  if deps
@@ -238,30 +238,30 @@ module Bake
238
238
  def mutex
239
239
  @mutex ||= Mutex.new
240
240
  end
241
-
241
+
242
242
  def execute
243
243
  Dir.chdir(@projectDir) do
244
-
244
+
245
245
  calcSources
246
246
  calcObjects
247
247
 
248
248
  @incWarns.each do |x|
249
249
  Bake.formatter.printInfo("IncludeDir '#{x[0].name}' will be converted to '#{x[1]}' although local path exists. If not intended, use './#{x[0].name}'.", x[0])
250
250
  end if Bake.options.verbose >= 1
251
-
251
+
252
252
  @error_strings = {}
253
-
253
+
254
254
  compileJobs = Multithread::Jobs.new(@source_files) do |jobs|
255
255
  while source = jobs.get_next_or_nil do
256
-
256
+
257
257
  if (jobs.failed and Bake.options.stopOnFirstError) or Bake::IDEInterface.instance.get_abort
258
258
  break
259
259
  end
260
-
260
+
261
261
  s = StringIO.new
262
262
  tmp = Thread.current[:stdout]
263
263
  Thread.current[:stdout] = s unless tmp
264
-
264
+
265
265
  result = false
266
266
  begin
267
267
  compileFile(source)
@@ -273,22 +273,22 @@ module Bake
273
273
  Bake.formatter.printError("Error: #{ex1.message}")
274
274
  puts ex1.backtrace if Bake.options.debug
275
275
  end
276
- end
277
-
276
+ end
277
+
278
278
  jobs.set_failed if not result
279
-
279
+
280
280
  Thread.current[:stdout] = tmp
281
-
281
+
282
282
  mutex.synchronize do
283
- if s.string.length > 0
283
+ if s.string.length > 0
284
284
  if Bake.options.stopOnFirstError and not result
285
285
  @error_strings[source] = s.string
286
286
  else
287
287
  puts s.string
288
288
  end
289
289
  end
290
- end
291
-
290
+ end
291
+
292
292
  end
293
293
  end
294
294
  compileJobs.join
@@ -297,35 +297,35 @@ module Bake
297
297
  # if not sorted, it may be confusing when builing more than once and the order of the error appearances changes from build to build
298
298
  # (it is not deterministic which file compilation finishes first)
299
299
  @error_strings.sort.each {|es| puts es[1]}
300
-
300
+
301
301
  raise SystemCommandFailed.new if compileJobs.failed
302
-
303
-
302
+
303
+
304
304
  end
305
305
  return true
306
306
  end
307
-
307
+
308
308
  def clean
309
309
  if Bake.options.filename or Bake.options.analyze
310
310
  Dir.chdir(@projectDir) do
311
311
  calcSources(true)
312
312
  @source_files.each do |source|
313
-
313
+
314
314
  type = get_source_type(source)
315
315
  next if type.nil?
316
316
  object = get_object_file(source)
317
- if File.exist?object
317
+ if File.exist?object
318
318
  puts "Deleting file #{object}" if Bake.options.verbose >= 2
319
319
  FileUtils.rm_rf(object)
320
320
  end
321
321
  if not Bake.options.analyze
322
322
  dep_filename = calcDepFile(object, type)
323
- if dep_filename and File.exist?dep_filename
323
+ if dep_filename and File.exist?dep_filename
324
324
  puts "Deleting file #{dep_filename}" if Bake.options.verbose >= 2
325
325
  FileUtils.rm_rf(dep_filename)
326
326
  end
327
327
  cmdLineFile = calcCmdlineFile(object)
328
- if File.exist?cmdLineFile
328
+ if File.exist?cmdLineFile
329
329
  puts "Deleting file #{cmdLineFile}" if Bake.options.verbose >= 2
330
330
  FileUtils.rm_rf(cmdLineFile)
331
331
  end
@@ -335,7 +335,7 @@ module Bake
335
335
  end
336
336
  return true
337
337
  end
338
-
338
+
339
339
  def calcObjects
340
340
  @source_files.each do |source|
341
341
  type = get_source_type(source)
@@ -345,7 +345,7 @@ module Bake
345
345
  @object_files.each do |k,v|
346
346
  if (v == object) # will be found exactly once
347
347
  Bake.formatter.printError("Source files '#{k}' and '#{source}' would result in the same object file", source)
348
- raise SystemCommandFailed.new
348
+ raise SystemCommandFailed.new
349
349
  end
350
350
  end
351
351
  end
@@ -354,17 +354,17 @@ module Bake
354
354
  end
355
355
  end
356
356
  end
357
-
357
+
358
358
  def calcSources(cleaning = false, keep = false)
359
359
  return @source_files if @source_files and not @source_files.empty?
360
360
  Dir.chdir(@projectDir) do
361
361
  @source_files = []
362
-
362
+
363
363
  exclude_files = Set.new
364
364
  @config.excludeFiles.each do |p|
365
365
  Dir.glob(p.name).each {|f| exclude_files << f}
366
366
  end
367
-
367
+
368
368
  source_files = Set.new
369
369
  @config.files.each do |sources|
370
370
  p = sources.name
@@ -372,7 +372,7 @@ module Bake
372
372
  if res.length == 0 and cleaning == false
373
373
  if not p.include?"*" and not p.include?"?"
374
374
  Bake.formatter.printError("Source file '#{p}' not found", sources)
375
- raise SystemCommandFailed.new
375
+ raise SystemCommandFailed.new
376
376
  elsif Bake.options.verbose >= 1
377
377
  Bake.formatter.printInfo("Source file pattern '#{p}' does not match to any file", sources)
378
378
  end
@@ -384,7 +384,7 @@ module Bake
384
384
  @source_files << f
385
385
  end
386
386
  end
387
-
387
+
388
388
  if Bake.options.filename
389
389
  @source_files.keep_if do |source|
390
390
  source.include?Bake.options.filename
@@ -393,7 +393,7 @@ module Bake
393
393
  Bake.formatter.printInfo("#{Bake.options.filename} does not match to any source", @config)
394
394
  end
395
395
  end
396
-
396
+
397
397
  if Bake.options.eclipseOrder # directories reverse order, files in directories in alphabetical order
398
398
  dirs = []
399
399
  filemap = {}
@@ -416,20 +416,20 @@ module Bake
416
416
  end
417
417
  @source_files
418
418
  end
419
-
419
+
420
420
  def mapInclude(inc, orgBlock)
421
-
421
+
422
422
  if inc.name == "___ROOTS___"
423
423
  return Bake.options.roots.map { |r| File.rel_from_to_project(@projectDir,r,false) }
424
424
  end
425
-
425
+
426
426
  i = orgBlock.convPath(inc,nil,true)
427
427
  if orgBlock != @block
428
428
  if not File.is_absolute?(i)
429
429
  i = File.rel_from_to_project(@projectDir,orgBlock.config.parent.get_project_dir) + i
430
430
  end
431
431
  end
432
-
432
+
433
433
  x = Pathname.new(i).cleanpath
434
434
  if orgBlock.warnConvValid
435
435
  @incWarns << [inc, x]
@@ -439,20 +439,20 @@ module Bake
439
439
 
440
440
  def calcIncludes
441
441
  @incWarns = []
442
-
442
+
443
443
  @include_list = @config.includeDir.uniq.map do |dir|
444
444
  mapInclude(dir, @block)
445
445
  end
446
-
447
- getBlocks(:childs).each do |b|
446
+
447
+ @block.getBlocks(:childs).each do |b|
448
448
  b.config.includeDir.each do |inc|
449
449
  if inc.inherit == true
450
- @include_list << mapInclude(inc, b)
450
+ @include_list << mapInclude(inc, b)
451
451
  end
452
452
  end if b.config.respond_to?("includeDir")
453
453
  end
454
-
455
- getBlocks(:parents).each do |b|
454
+
455
+ @block.getBlocks(:parents).each do |b|
456
456
  if b.config.respond_to?("includeDir")
457
457
  include_list_front = []
458
458
  b.config.includeDir.each do |inc|
@@ -465,27 +465,27 @@ module Bake
465
465
  elsif inc.infix == "back"
466
466
  @include_list << mapInclude(inc, b)
467
467
  end
468
- end
468
+ end
469
469
  @include_list = include_list_front + @include_list
470
470
  end
471
471
  end
472
472
 
473
473
  @include_list = @include_list.flatten.uniq
474
-
474
+
475
475
  @include_array = {}
476
476
  [:CPP, :C, :ASM].each do |type|
477
477
  @include_array[type] = @include_list.map {|k| "#{@tcs[:COMPILER][type][:INCLUDE_PATH_FLAG]}#{k}"}
478
478
  end
479
479
  end
480
-
480
+
481
481
  def getDefines(compiler)
482
482
  compiler[:DEFINES].map {|k| "#{compiler[:DEFINE_FLAG]}#{k}"}
483
483
  end
484
-
484
+
485
485
  def getFlags(compiler)
486
486
  Bake::Utils::flagSplit(compiler[:FLAGS],true)
487
487
  end
488
-
488
+
489
489
  def calcDefines
490
490
  @define_array = {}
491
491
  [:CPP, :C, :ASM].each do |type|
@@ -498,7 +498,7 @@ module Bake
498
498
  @flag_array[type] = getFlags(@tcs[:COMPILER][type])
499
499
  end
500
500
  end
501
-
501
+
502
502
  def calcFileTcs
503
503
  @fileTcs = {}
504
504
  @config.files.each do |f|
@@ -510,20 +510,20 @@ module Bake
510
510
  err_res.line_number = f.line_number
511
511
  err_res.severity = ErrorParser::SEVERITY_WARNING
512
512
  err_res.message = "Toolchain settings not allowed for file patterns"
513
- Bake::IDEInterface.instance.set_errors([err_res])
513
+ Bake::IDEInterface.instance.set_errors([err_res])
514
514
  else
515
515
  @fileTcs[f.name] = integrateCompilerFile(Utils.deep_copy(@tcs),f)
516
516
  end
517
517
  end
518
518
  end
519
519
  end
520
-
520
+
521
521
  def tcs4source(source)
522
522
  @fileTcs[source] || @tcs
523
- end
524
-
525
-
523
+ end
524
+
525
+
526
526
  end
527
-
527
+
528
528
  end
529
529
  end