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(NULL), 19 fVersion(NULL), 20 fCompatibleVersion(NULL) 21{ 22} 23 24 25Resolvable::~Resolvable() 26{ 27 free(fName); 28 delete fVersion; 29 delete fCompatibleVersion; 30} 31 32 33status_t 34Resolvable::Init(const char* name, ::Version* version, 35 ::Version* compatibleVersion) 36{ 37 fVersion = version; 38 fCompatibleVersion = compatibleVersion; 39 40 fName = strdup(name); 41 if (fName == NULL) 42 return B_NO_MEMORY; 43 44 return B_OK; 45} 46 47 48void 49Resolvable::AddDependency(Dependency* dependency) 50{ 51 fDependencies.Add(dependency); 52 dependency->SetResolvable(this); 53} 54 55 56void 57Resolvable::RemoveDependency(Dependency* dependency) 58{ 59 fDependencies.Remove(dependency); 60 dependency->SetResolvable(NULL); 61} 62 63 64void 65Resolvable::MoveDependencies(ResolvableDependencyList& dependencies) 66{ 67 if (fDependencies.IsEmpty()) 68 return; 69 70 for (ResolvableDependencyList::Iterator it = fDependencies.GetIterator(); 71 Dependency* dependency = it.Next();) { 72 dependency->SetResolvable(NULL); 73 } 74 75 dependencies.MoveFrom(&fDependencies); 76} 77