Parent

DepSelector::DependencyGraph

Attributes

packages[R]

Public Class Methods

new() click to toggle source
# File lib/dep_selector/dependency_graph.rb, line 31
def initialize
  @packages = {}
end

Public Instance Methods

clone() click to toggle source

TODO [cw,2010/11/23]: this is a simple but inefficient impl. Do it for realz.

# File lib/dep_selector/dependency_graph.rb, line 79
def clone
  Marshal.load(Marshal.dump(self))
end
each_package() click to toggle source
# File lib/dep_selector/dependency_graph.rb, line 39
def each_package
  packages.each do |name, pkg|
    yield pkg
  end
end
gecode_model_vars() click to toggle source
# File lib/dep_selector/dependency_graph.rb, line 69
def gecode_model_vars
  packages.inject({}){|acc, elt| acc[elt.first] = elt.last.gecode_model_var ; acc }
end
gecode_wrapper() click to toggle source
# File lib/dep_selector/dependency_graph.rb, line 45
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) click to toggle source

Note: only invoke this method once all Packages and PackageVersions have been added.

# File lib/dep_selector/dependency_graph.rb, line 52
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

    # 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)
    packages_in_solve.each{ |pkg| pkg.generate_gecode_wrapper_constraints }
  end
end
package(name) click to toggle source
# File lib/dep_selector/dependency_graph.rb, line 35
def package(name)
  packages.has_key?(name) ? packages[name] : (packages[name]=Package.new(self, name))
end
to_s(incl_densely_packed_versions = false) click to toggle source
# File lib/dep_selector/dependency_graph.rb, line 73
def to_s(incl_densely_packed_versions = false)
  packages.keys.sort.map{|name| packages[name].to_s(incl_densely_packed_versions)}.join("\n")
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.