module Cxxproject::HasDependencies
Public Instance Methods
add_unique(res, bb)
click to toggle source
# File lib/cxxproject/buildingblocks/has_dependencies_mixin.rb, line 71 def add_unique(res, bb) res.delete(bb) res.push(bb) end
all_dependencies()
click to toggle source
# File lib/cxxproject/buildingblocks/has_dependencies_mixin.rb, line 82 def all_dependencies() return @all_dependencies if @all_deps_calculated direct_deps.each do |d| d.all_dependencies_recursive(@all_dependencies, @all_dependencies_set) end @all_deps_calculated = true @all_dependencies end
all_dependencies_recursive(all_deps, all_deps_set)
click to toggle source
# File lib/cxxproject/buildingblocks/has_dependencies_mixin.rb, line 93 def all_dependencies_recursive(all_deps, all_deps_set) deps = [] # needed to keep order direct_deps.each do |d| next if all_deps_set.include?d all_deps << d all_deps_set << d deps << d end deps.each do |d| d.all_dependencies_recursive(all_deps, all_deps_set) end end
collect_dependencies()
click to toggle source
# File lib/cxxproject/buildingblocks/has_dependencies_mixin.rb, line 59 def collect_dependencies() res = [] res << self todo = dependencies while not todo.empty? bb = resolve_by_name(todo.pop) add_unique(res, bb) todo += bb.dependencies end res end
convert_named_values_to_string(values)
click to toggle source
# File lib/cxxproject/buildingblocks/has_dependencies_mixin.rb, line 12 def convert_named_values_to_string(values) values.map { |v| v.instance_of?(String) ? v : v.name } end
dependencies()
click to toggle source
# File lib/cxxproject/buildingblocks/has_dependencies_mixin.rb, line 4 def dependencies @dependencies ||= [] end
direct_deps()
click to toggle source
# File lib/cxxproject/buildingblocks/has_dependencies_mixin.rb, line 25 def direct_deps return @direct_deps if @direct_deps @all_dependencies_set = Set.new @all_dependencies_set << self @all_dependencies = [self] depList = helper_dependencies.length > 0 ? helper_dependencies : dependencies depList.each do |d| bb = ALL_BUILDING_BLOCKS[d] if not bb raise "Error: while reading config file for #{self.name}: dependent building block \"#{d}\" was specified but not found!" end next if @all_dependencies_set.include?bb @all_dependencies << bb @all_dependencies_set << bb # deps in modules may be splitted into its contents if ModuleBuildingBlock === bb bb.contents.each do |c| next if @all_dependencies_set.include?c @all_dependencies << c @all_dependencies_set << c end end end @direct_deps = @all_dependencies.dup @direct_deps end
helper_dependencies()
click to toggle source
# File lib/cxxproject/buildingblocks/has_dependencies_mixin.rb, line 8 def helper_dependencies @helper_dependencies ||= [] end
resolve_by_name(name)
click to toggle source
# File lib/cxxproject/buildingblocks/has_dependencies_mixin.rb, line 76 def resolve_by_name(name) res = ALL_BUILDING_BLOCKS[name] raise "BuildingBlock #{name} not defined" unless res res end
set_dependencies(deps)
click to toggle source
# File lib/cxxproject/buildingblocks/has_dependencies_mixin.rb, line 15 def set_dependencies(deps) @dependencies = convert_named_values_to_string(deps) self end
set_helper_dependencies(deps)
click to toggle source
# File lib/cxxproject/buildingblocks/has_dependencies_mixin.rb, line 20 def set_helper_dependencies(deps) @helper_dependencies = convert_named_values_to_string(deps) self end