Class: DepSelector::DependencyGraph
- Inherits:
-
Object
- Object
- DepSelector::DependencyGraph
- Defined in:
- lib/dep_selector/dependency_graph.rb
Constant Summary collapse
- DebugOptionFile =
"/tmp/DepSelectorDebugOn"
Instance Attribute Summary collapse
-
#packages ⇒ Object
readonly
Returns the value of attribute packages.
Instance Method Summary collapse
-
#clone ⇒ Object
TODO [cw,2010/11/23]: this is a simple but inefficient impl.
- #each_package ⇒ Object
- #gecode_model_vars ⇒ Object
- #gecode_wrapper ⇒ Object
-
#generate_gecode_wrapper_constraints(packages_to_include_in_solve = nil) ⇒ Object
Note: only invoke this method once all Packages and PackageVersions have been added.
-
#initialize ⇒ DependencyGraph
constructor
A new instance of DependencyGraph.
- #package(name) ⇒ Object
- #to_s(incl_densely_packed_versions = false) ⇒ Object
Constructor Details
#initialize ⇒ DependencyGraph
Returns a new instance of DependencyGraph.
33 34 35 |
# File 'lib/dep_selector/dependency_graph.rb', line 33 def initialize @packages = {} end |
Instance Attribute Details
#packages ⇒ Object (readonly)
Returns the value of attribute packages.
31 32 33 |
# File 'lib/dep_selector/dependency_graph.rb', line 31 def packages @packages end |
Instance Method Details
#clone ⇒ Object
TODO [cw,2010/11/23]: this is a simple but inefficient impl. Do it for realz.
82 83 84 |
# File 'lib/dep_selector/dependency_graph.rb', line 82 def clone Marshal.load(Marshal.dump(self)) end |
#each_package ⇒ Object
41 42 43 44 45 |
# File 'lib/dep_selector/dependency_graph.rb', line 41 def each_package packages.each do |name, pkg| yield pkg end end |
#gecode_model_vars ⇒ Object
72 73 74 |
# File 'lib/dep_selector/dependency_graph.rb', line 72 def gecode_model_vars packages.inject({}){|acc, elt| acc[elt.first] = elt.last.gecode_model_var ; acc } end |
#gecode_wrapper ⇒ Object
47 48 49 50 |
# File 'lib/dep_selector/dependency_graph.rb', line 47 def gecode_wrapper raise "Must invoke generate_gecode_wrapper_constraints before attempting to access gecode_wrapper" unless @gecode_wrapper @gecode_wrapper end |
#generate_gecode_wrapper_constraints(packages_to_include_in_solve = nil) ⇒ Object
Note: only invoke this method once all Packages and PackageVersions have been added.
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/dep_selector/dependency_graph.rb', line 54 def generate_gecode_wrapper_constraints(packages_to_include_in_solve=nil) unless @gecode_wrapper packages_in_solve = if packages_to_include_in_solve packages_to_include_in_solve else packages.map{ |name, pkg| pkg } end debugFlag = DebugOptionFile && File::exists?(DebugOptionFile) # In addition to all the packages that the user specified, # there is a "ghost" package that contains the solution # constraints. See Selector#solve for more information. @gecode_wrapper = GecodeWrapper.new(packages_in_solve.size + 1, debugFlag) packages_in_solve.each{ |pkg| pkg.generate_gecode_wrapper_constraints } end end |
#package(name) ⇒ Object
37 38 39 |
# File 'lib/dep_selector/dependency_graph.rb', line 37 def package(name) packages.has_key?(name) ? packages[name] : (packages[name]=Package.new(self, name)) end |
#to_s(incl_densely_packed_versions = false) ⇒ Object
76 77 78 |
# File 'lib/dep_selector/dependency_graph.rb', line 76 def to_s(incl_densely_packed_versions = false) packages.keys.sort.map{|name| packages[name].to_s(incl_densely_packed_versions)}.join("\n") end |