# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

class RootConfig(object):
	"""This is used internally by depgraph to track information about a
	particular $ROOT."""
	__slots__ = ("root", "setconfig", "sets", "settings", "trees")

	pkg_tree_map = {
		"ebuild"    : "porttree",
		"binary"    : "bintree",
		"installed" : "vartree"
	}

	tree_pkg_map = {}
	for k, v in pkg_tree_map.items():
		tree_pkg_map[v] = k

	def __init__(self, settings, trees, setconfig):
		self.trees = trees
		self.settings = settings
		self.root = self.settings["ROOT"]
		self.setconfig = setconfig
		if setconfig is None:
			self.sets = {}
		else:
			self.sets = self.setconfig.getSets()

	def update(self, other):
		"""
		Shallow copy all attributes from another instance.
		"""
		for k in self.__slots__:
			setattr(self, k, getattr(other, k))
