1/* 2 * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5 6 7#include "Resolvable.h" 8 9#include <string.h> 10 11#include "Version.h" 12 13 14Resolvable::Resolvable(::Package* package) 15 : 16 fPackage(package), 17 fFamily(NULL), 18 fName(), 19 fVersion(NULL), 20 fCompatibleVersion(NULL) 21{ 22} 23 24 25Resolvable::~Resolvable() 26{ 27 delete fVersion; 28 delete fCompatibleVersion; 29} 30 31 32status_t 33Resolvable::Init(const char* name, ::Version* version, 34 ::Version* compatibleVersion) 35{ 36 fVersion = version; 37 fCompatibleVersion = compatibleVersion; 38 39 if (!fName.SetTo(name)) 40 return B_NO_MEMORY; 41 42 return B_OK; 43} 44 45 46void 47Resolvable::AddDependency(Dependency* dependency) 48{ 49 fDependencies.Add(dependency); 50 dependency->SetResolvable(this); 51} 52 53 54void 55Resolvable::RemoveDependency(Dependency* dependency) 56{ 57 fDependencies.Remove(dependency); 58 dependency->SetResolvable(NULL); 59} 60 61 62void 63Resolvable::MoveDependencies(ResolvableDependencyList& dependencies) 64{ 65 if (fDependencies.IsEmpty()) 66 return; 67 68 for (ResolvableDependencyList::Iterator it = fDependencies.GetIterator(); 69 Dependency* dependency = it.Next();) { 70 dependency->SetResolvable(NULL); 71 } 72 73 dependencies.MoveFrom(&fDependencies); 74} 75