⛏️ index : haiku.git

/*
 * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
 * Distributed under the terms of the MIT License.
 */


#include "Resolvable.h"

#include <string.h>

#include "Version.h"


Resolvable::Resolvable(::Package* package)
	:
	fPackage(package),
	fFamily(NULL),
	fName(),
	fVersion(NULL),
	fCompatibleVersion(NULL)
{
}


Resolvable::~Resolvable()
{
	delete fVersion;
	delete fCompatibleVersion;
}


status_t
Resolvable::Init(const char* name, ::Version* version,
	::Version* compatibleVersion)
{
	fVersion = version;
	fCompatibleVersion = compatibleVersion;

	if (!fName.SetTo(name))
		return B_NO_MEMORY;

	return B_OK;
}


void
Resolvable::AddDependency(Dependency* dependency)
{
	fDependencies.Add(dependency);
	dependency->SetResolvable(this);
}


void
Resolvable::RemoveDependency(Dependency* dependency)
{
	fDependencies.Remove(dependency);
	dependency->SetResolvable(NULL);
}


void
Resolvable::MoveDependencies(ResolvableDependencyList& dependencies)
{
	if (fDependencies.IsEmpty())
		return;

	for (ResolvableDependencyList::Iterator it = fDependencies.GetIterator();
			Dependency* dependency = it.Next();) {
		dependency->SetResolvable(NULL);
	}

	dependencies.TakeFrom(&fDependencies);
}