1/* 2 * Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de> 3 * Distributed under the terms of the MIT License. 4 */ 5 6 7#include <package/PackageResolvable.h> 8 9#include <package/hpkg/PackageInfoAttributeValue.h> 10 11 12namespace BPackageKit { 13 14 15const char* 16BPackageResolvable::kTypeNames[B_PACKAGE_RESOLVABLE_TYPE_ENUM_COUNT] = { 17 "", 18 "lib", 19 "cmd", 20 "app", 21 "add_on", 22}; 23 24 25BPackageResolvable::BPackageResolvable() 26 : 27 fType(B_PACKAGE_RESOLVABLE_TYPE_DEFAULT) 28{ 29} 30 31 32BPackageResolvable::BPackageResolvable(const BPackageResolvableData& data) 33 : 34 fName(data.name), 35 fType(data.type), 36 fVersion(data.version), 37 fCompatibleVersion(data.compatibleVersion) 38{ 39} 40 41 42BPackageResolvable::BPackageResolvable(const BString& name, 43 BPackageResolvableType type, const BPackageVersion& version, 44 const BPackageVersion& compatibleVersion) 45 : 46 fName(name), 47 fType(type), 48 fVersion(version), 49 fCompatibleVersion(compatibleVersion) 50{ 51 fName.ToLower(); 52} 53 54 55status_t 56BPackageResolvable::InitCheck() const 57{ 58 return fName.Length() > 0 ? B_OK : B_NO_INIT; 59} 60 61 62const BString& 63BPackageResolvable::Name() const 64{ 65 return fName; 66} 67 68 69BPackageResolvableType 70BPackageResolvable::Type() const 71{ 72 return fType; 73} 74 75 76const BPackageVersion& 77BPackageResolvable::Version() const 78{ 79 return fVersion; 80} 81 82 83const BPackageVersion& 84BPackageResolvable::CompatibleVersion() const 85{ 86 return fCompatibleVersion; 87} 88 89 90BString 91BPackageResolvable::ToString() const 92{ 93 // the type is part of the name 94 BString string = fName; 95 96 if (fVersion.InitCheck() == B_OK) 97 string << '=' << fVersion.ToString(); 98 99 if (fCompatibleVersion.InitCheck() == B_OK) 100 string << " compat>=" << fCompatibleVersion.ToString(); 101 102 return string; 103} 104 105 106void 107BPackageResolvable::SetTo(const BString& name, BPackageResolvableType type, 108 const BPackageVersion& version, const BPackageVersion& compatibleVersion) 109{ 110 fName = name; 111 fType = type; 112 fVersion = version; 113 fCompatibleVersion = compatibleVersion; 114 115 fName.ToLower(); 116} 117 118 119void 120BPackageResolvable::Clear() 121{ 122 fName.Truncate(0); 123 fVersion.Clear(); 124 fCompatibleVersion.Clear(); 125} 126 127 128} // namespace BPackageKit 129