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#include <package/PackageInfo.h> 11 12 13namespace BPackageKit { 14 15 16BPackageResolvable::BPackageResolvable() 17{ 18} 19 20 21BPackageResolvable::BPackageResolvable(const BPackageResolvableData& data) 22 : 23 fName(data.name), 24 fVersion(data.version), 25 fCompatibleVersion(data.compatibleVersion) 26{ 27} 28 29 30BPackageResolvable::BPackageResolvable(const BString& name, 31 const BPackageVersion& version, const BPackageVersion& compatibleVersion) 32 : 33 fName(name), 34 fVersion(version), 35 fCompatibleVersion(compatibleVersion) 36{ 37 fName.ToLower(); 38} 39 40 41status_t 42BPackageResolvable::InitCheck() const 43{ 44 return fName.Length() > 0 ? B_OK : B_NO_INIT; 45} 46 47 48const BString& 49BPackageResolvable::Name() const 50{ 51 return fName; 52} 53 54 55const BPackageVersion& 56BPackageResolvable::Version() const 57{ 58 return fVersion; 59} 60 61 62const BPackageVersion& 63BPackageResolvable::CompatibleVersion() const 64{ 65 return fCompatibleVersion; 66} 67 68 69BString 70BPackageResolvable::ToString() const 71{ 72 // the type is part of the name 73 BString string = fName; 74 75 if (fVersion.InitCheck() == B_OK) 76 string << '=' << fVersion.ToString(); 77 78 if (fCompatibleVersion.InitCheck() == B_OK) 79 string << " compat>=" << fCompatibleVersion.ToString(); 80 81 return string; 82} 83 84 85status_t 86BPackageResolvable::SetToString(const BString& expressionString) 87{ 88 fName.Truncate(0); 89 fVersion.Clear(); 90 fCompatibleVersion.Clear(); 91 92 return BPackageInfo::ParseResolvableString(expressionString, 93 *this); 94} 95 96 97void 98BPackageResolvable::SetTo(const BString& name, const BPackageVersion& version, 99 const BPackageVersion& compatibleVersion) 100{ 101 fName = name; 102 fVersion = version; 103 fCompatibleVersion = compatibleVersion; 104 105 fName.ToLower(); 106} 107 108 109void 110BPackageResolvable::Clear() 111{ 112 fName.Truncate(0); 113 fVersion.Clear(); 114 fCompatibleVersion.Clear(); 115} 116 117 118} // namespace BPackageKit 119