WriterImplBase: Some simplifications

... using the recently introduced _AddStringAttribute[IfNotEmpty]().
This commit is contained in:
Ingo Weinhold
2013-05-25 01:12:37 +02:00
parent 0f4e11e75c
commit 927e070869
+52 -144
View File
@@ -280,51 +280,28 @@ WriterImplBase::RegisterPackageInfo(PackageAttributeList& attributeList,
const BPackageInfo& packageInfo) const BPackageInfo& packageInfo)
{ {
// name // name
PackageAttribute* name = new PackageAttribute( _AddStringAttribute(B_HPKG_ATTRIBUTE_ID_PACKAGE_NAME, packageInfo.Name(),
B_HPKG_ATTRIBUTE_ID_PACKAGE_NAME, B_HPKG_ATTRIBUTE_TYPE_STRING, attributeList);
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
name->string = fPackageStringCache.Get(packageInfo.Name().String());
attributeList.Add(name);
// summary // summary
PackageAttribute* summary = new PackageAttribute( _AddStringAttribute(B_HPKG_ATTRIBUTE_ID_PACKAGE_SUMMARY,
B_HPKG_ATTRIBUTE_ID_PACKAGE_SUMMARY, B_HPKG_ATTRIBUTE_TYPE_STRING, packageInfo.Summary(), attributeList);
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
summary->string = fPackageStringCache.Get(packageInfo.Summary().String());
attributeList.Add(summary);
// description // description
PackageAttribute* description = new PackageAttribute( _AddStringAttribute(B_HPKG_ATTRIBUTE_ID_PACKAGE_DESCRIPTION,
B_HPKG_ATTRIBUTE_ID_PACKAGE_DESCRIPTION, B_HPKG_ATTRIBUTE_TYPE_STRING, packageInfo.Description(), attributeList);
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
description->string
= fPackageStringCache.Get(packageInfo.Description().String());
attributeList.Add(description);
// vendor // vendor
PackageAttribute* vendor = new PackageAttribute( _AddStringAttribute(B_HPKG_ATTRIBUTE_ID_PACKAGE_VENDOR,
B_HPKG_ATTRIBUTE_ID_PACKAGE_VENDOR, B_HPKG_ATTRIBUTE_TYPE_STRING, packageInfo.Vendor(), attributeList);
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
vendor->string = fPackageStringCache.Get(packageInfo.Vendor().String());
attributeList.Add(vendor);
// packager // packager
PackageAttribute* packager = new PackageAttribute( _AddStringAttribute(B_HPKG_ATTRIBUTE_ID_PACKAGE_PACKAGER,
B_HPKG_ATTRIBUTE_ID_PACKAGE_PACKAGER, B_HPKG_ATTRIBUTE_TYPE_STRING, packageInfo.Packager(), attributeList);
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
packager->string = fPackageStringCache.Get(packageInfo.Packager().String());
attributeList.Add(packager);
// base package (optional) // base package (optional)
if (!packageInfo.BasePackage().IsEmpty()) { _AddStringAttributeIfNotEmpty(B_HPKG_ATTRIBUTE_ID_PACKAGE_BASE_PACKAGE,
PackageAttribute* basePackage = new PackageAttribute( packageInfo.BasePackage(), attributeList);
B_HPKG_ATTRIBUTE_ID_PACKAGE_BASE_PACKAGE,
B_HPKG_ATTRIBUTE_TYPE_STRING,
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
basePackage->string
= fPackageStringCache.Get(packageInfo.BasePackage());
attributeList.Add(basePackage);
}
// flags // flags
PackageAttribute* flags = new PackageAttribute( PackageAttribute* flags = new PackageAttribute(
@@ -346,42 +323,29 @@ WriterImplBase::RegisterPackageInfo(PackageAttributeList& attributeList,
// copyright list // copyright list
const BStringList& copyrightList = packageInfo.CopyrightList(); const BStringList& copyrightList = packageInfo.CopyrightList();
for (int i = 0; i < copyrightList.CountStrings(); ++i) { for (int i = 0; i < copyrightList.CountStrings(); ++i) {
PackageAttribute* copyright = new PackageAttribute( _AddStringAttribute(B_HPKG_ATTRIBUTE_ID_PACKAGE_COPYRIGHT,
B_HPKG_ATTRIBUTE_ID_PACKAGE_COPYRIGHT, B_HPKG_ATTRIBUTE_TYPE_STRING, copyrightList.StringAt(i), attributeList);
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
copyright->string = fPackageStringCache.Get(copyrightList.StringAt(i));
attributeList.Add(copyright);
} }
// license list // license list
const BStringList& licenseList = packageInfo.LicenseList(); const BStringList& licenseList = packageInfo.LicenseList();
for (int i = 0; i < licenseList.CountStrings(); ++i) { for (int i = 0; i < licenseList.CountStrings(); ++i) {
PackageAttribute* license = new PackageAttribute( _AddStringAttribute(B_HPKG_ATTRIBUTE_ID_PACKAGE_LICENSE,
B_HPKG_ATTRIBUTE_ID_PACKAGE_LICENSE, B_HPKG_ATTRIBUTE_TYPE_STRING, licenseList.StringAt(i), attributeList);
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
license->string = fPackageStringCache.Get(licenseList.StringAt(i));
attributeList.Add(license);
} }
// URL list // URL list
const BStringList& urlList = packageInfo.URLList(); const BStringList& urlList = packageInfo.URLList();
for (int i = 0; i < urlList.CountStrings(); ++i) { for (int i = 0; i < urlList.CountStrings(); ++i) {
PackageAttribute* url = new PackageAttribute( _AddStringAttribute(B_HPKG_ATTRIBUTE_ID_PACKAGE_URL,
B_HPKG_ATTRIBUTE_ID_PACKAGE_URL, B_HPKG_ATTRIBUTE_TYPE_STRING, urlList.StringAt(i), attributeList);
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
url->string = fPackageStringCache.Get(urlList.StringAt(i));
attributeList.Add(url);
} }
// source URL list // source URL list
const BStringList& sourceURLList = packageInfo.SourceURLList(); const BStringList& sourceURLList = packageInfo.SourceURLList();
for (int i = 0; i < sourceURLList.CountStrings(); ++i) { for (int i = 0; i < sourceURLList.CountStrings(); ++i) {
PackageAttribute* url = new PackageAttribute( _AddStringAttribute(B_HPKG_ATTRIBUTE_ID_PACKAGE_SOURCE_URL,
B_HPKG_ATTRIBUTE_ID_PACKAGE_SOURCE_URL, sourceURLList.StringAt(i), attributeList);
B_HPKG_ATTRIBUTE_TYPE_STRING,
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
url->string = fPackageStringCache.Get(sourceURLList.StringAt(i));
attributeList.Add(url);
} }
// provides list // provides list
@@ -393,11 +357,9 @@ WriterImplBase::RegisterPackageInfo(PackageAttributeList& attributeList,
bool hasCompatibleVersion bool hasCompatibleVersion
= resolvable->CompatibleVersion().InitCheck() == B_OK; = resolvable->CompatibleVersion().InitCheck() == B_OK;
PackageAttribute* provides = new PackageAttribute( PackageAttribute* provides = _AddStringAttribute(
B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES, B_HPKG_ATTRIBUTE_TYPE_STRING, B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES, resolvable->Name(),
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE); attributeList);
provides->string = fPackageStringCache.Get(resolvable->Name().String());
attributeList.Add(provides);
if (hasVersion) if (hasVersion)
RegisterPackageVersion(provides->children, resolvable->Version()); RegisterPackageVersion(provides->children, resolvable->Version());
@@ -428,11 +390,8 @@ WriterImplBase::RegisterPackageInfo(PackageAttributeList& attributeList,
// replaces list // replaces list
const BStringList& replacesList = packageInfo.ReplacesList(); const BStringList& replacesList = packageInfo.ReplacesList();
for (int i = 0; i < replacesList.CountStrings(); ++i) { for (int i = 0; i < replacesList.CountStrings(); ++i) {
PackageAttribute* replaces = new PackageAttribute( _AddStringAttribute(B_HPKG_ATTRIBUTE_ID_PACKAGE_REPLACES,
B_HPKG_ATTRIBUTE_ID_PACKAGE_REPLACES, B_HPKG_ATTRIBUTE_TYPE_STRING, replacesList.StringAt(i), attributeList);
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
replaces->string = fPackageStringCache.Get(replacesList.StringAt(i));
attributeList.Add(replaces);
} }
// global settings file info list // global settings file info list
@@ -440,12 +399,9 @@ WriterImplBase::RegisterPackageInfo(PackageAttributeList& attributeList,
= packageInfo.GlobalSettingsFileInfos(); = packageInfo.GlobalSettingsFileInfos();
for (int32 i = 0; i < globalSettingsFileInfos.CountItems(); ++i) { for (int32 i = 0; i < globalSettingsFileInfos.CountItems(); ++i) {
BGlobalSettingsFileInfo* info = globalSettingsFileInfos.ItemAt(i); BGlobalSettingsFileInfo* info = globalSettingsFileInfos.ItemAt(i);
PackageAttribute* attribute = new PackageAttribute( PackageAttribute* attribute = _AddStringAttribute(
B_HPKG_ATTRIBUTE_ID_PACKAGE_GLOBAL_SETTINGS_FILE, B_HPKG_ATTRIBUTE_ID_PACKAGE_GLOBAL_SETTINGS_FILE, info->Path(),
B_HPKG_ATTRIBUTE_TYPE_STRING, attributeList);
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
attribute->string = fPackageStringCache.Get(info->Path());
attributeList.Add(attribute);
if (info->IsIncluded()) { if (info->IsIncluded()) {
PackageAttribute* updateTypeAttribute = new PackageAttribute( PackageAttribute* updateTypeAttribute = new PackageAttribute(
@@ -462,22 +418,13 @@ WriterImplBase::RegisterPackageInfo(PackageAttributeList& attributeList,
= packageInfo.UserSettingsFileInfos(); = packageInfo.UserSettingsFileInfos();
for (int32 i = 0; i < userSettingsFileInfos.CountItems(); ++i) { for (int32 i = 0; i < userSettingsFileInfos.CountItems(); ++i) {
BUserSettingsFileInfo* info = userSettingsFileInfos.ItemAt(i); BUserSettingsFileInfo* info = userSettingsFileInfos.ItemAt(i);
PackageAttribute* attribute = new PackageAttribute( PackageAttribute* attribute = _AddStringAttribute(
B_HPKG_ATTRIBUTE_ID_PACKAGE_USER_SETTINGS_FILE, B_HPKG_ATTRIBUTE_ID_PACKAGE_USER_SETTINGS_FILE, info->Path(),
B_HPKG_ATTRIBUTE_TYPE_STRING, attributeList);
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
attribute->string = fPackageStringCache.Get(info->Path());
attributeList.Add(attribute);
if (!info->TemplatePath().IsEmpty()) { _AddStringAttributeIfNotEmpty(
PackageAttribute* templatePathAttribute = new PackageAttribute( B_HPKG_ATTRIBUTE_ID_PACKAGE_SETTINGS_FILE_TEMPLATE,
B_HPKG_ATTRIBUTE_ID_PACKAGE_SETTINGS_FILE_TEMPLATE, info->TemplatePath(), attribute->children);
B_HPKG_ATTRIBUTE_TYPE_STRING,
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
templatePathAttribute->string
= fPackageStringCache.Get(info->TemplatePath());
attribute->children.Add(templatePathAttribute);
}
} }
// user list // user list
@@ -511,25 +458,12 @@ WriterImplBase::RegisterPackageInfo(PackageAttributeList& attributeList,
} }
// checksum (optional, only exists in repositories) // checksum (optional, only exists in repositories)
if (packageInfo.Checksum().Length() > 0) { _AddStringAttributeIfNotEmpty(B_HPKG_ATTRIBUTE_ID_PACKAGE_CHECKSUM,
PackageAttribute* checksum = new PackageAttribute( packageInfo.Checksum(), attributeList);
B_HPKG_ATTRIBUTE_ID_PACKAGE_CHECKSUM, B_HPKG_ATTRIBUTE_TYPE_STRING,
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
checksum->string
= fPackageStringCache.Get(packageInfo.Checksum().String());
attributeList.Add(checksum);
}
// install path (optional) // install path (optional)
if (!packageInfo.InstallPath().IsEmpty()) { _AddStringAttributeIfNotEmpty(B_HPKG_ATTRIBUTE_ID_PACKAGE_INSTALL_PATH,
PackageAttribute* installPath = new PackageAttribute( packageInfo.InstallPath(), attributeList);
B_HPKG_ATTRIBUTE_ID_PACKAGE_INSTALL_PATH,
B_HPKG_ATTRIBUTE_TYPE_STRING,
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
installPath->string = fPackageStringCache.Get(
packageInfo.InstallPath().String());
attributeList.Add(installPath);
}
} }
@@ -537,41 +471,20 @@ void
WriterImplBase::RegisterPackageVersion(PackageAttributeList& attributeList, WriterImplBase::RegisterPackageVersion(PackageAttributeList& attributeList,
const BPackageVersion& version, BHPKGAttributeID attributeID) const BPackageVersion& version, BHPKGAttributeID attributeID)
{ {
PackageAttribute* versionMajor = new PackageAttribute( PackageAttribute* versionMajor = _AddStringAttribute(attributeID,
attributeID, B_HPKG_ATTRIBUTE_TYPE_STRING, version.Major(), attributeList);
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
versionMajor->string = fPackageStringCache.Get(version.Major().String());
attributeList.Add(versionMajor);
if (version.Minor().Length() > 0) { if (!version.Minor().IsEmpty()) {
PackageAttribute* versionMinor = new PackageAttribute( _AddStringAttribute(B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_MINOR,
B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_MINOR, version.Minor(), versionMajor->children);
B_HPKG_ATTRIBUTE_TYPE_STRING, _AddStringAttributeIfNotEmpty(
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE); B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_MICRO, version.Micro(),
versionMinor->string versionMajor->children);
= fPackageStringCache.Get(version.Minor().String());
versionMajor->children.Add(versionMinor);
if (version.Micro().Length() > 0) {
PackageAttribute* versionMicro = new PackageAttribute(
B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_MICRO,
B_HPKG_ATTRIBUTE_TYPE_STRING,
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
versionMicro->string
= fPackageStringCache.Get(version.Micro().String());
versionMajor->children.Add(versionMicro);
}
} }
if (!version.PreRelease().IsEmpty()) { _AddStringAttributeIfNotEmpty(
PackageAttribute* preRelease = new PackageAttribute( B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_PRE_RELEASE,
B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_PRE_RELEASE, version.PreRelease(), versionMajor->children);
B_HPKG_ATTRIBUTE_TYPE_STRING,
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
preRelease->string
= fPackageStringCache.Get(version.PreRelease().String());
versionMajor->children.Add(preRelease);
}
if (version.Revision() != 0) { if (version.Revision() != 0) {
PackageAttribute* versionRevision = new PackageAttribute( PackageAttribute* versionRevision = new PackageAttribute(
@@ -590,15 +503,10 @@ WriterImplBase::RegisterPackageResolvableExpressionList(
{ {
for (int i = 0; i < expressionList.CountItems(); ++i) { for (int i = 0; i < expressionList.CountItems(); ++i) {
BPackageResolvableExpression* resolvableExpr = expressionList.ItemAt(i); BPackageResolvableExpression* resolvableExpr = expressionList.ItemAt(i);
bool hasVersion = resolvableExpr->Version().InitCheck() == B_OK; PackageAttribute* name = _AddStringAttribute((BHPKGAttributeID)id,
resolvableExpr->Name(), attributeList);
PackageAttribute* name = new PackageAttribute((BHPKGAttributeID)id, if (resolvableExpr->Version().InitCheck() == B_OK) {
B_HPKG_ATTRIBUTE_TYPE_STRING,
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE);
name->string = fPackageStringCache.Get(resolvableExpr->Name().String());
attributeList.Add(name);
if (hasVersion) {
PackageAttribute* op = new PackageAttribute( PackageAttribute* op = new PackageAttribute(
B_HPKG_ATTRIBUTE_ID_PACKAGE_RESOLVABLE_OPERATOR, B_HPKG_ATTRIBUTE_ID_PACKAGE_RESOLVABLE_OPERATOR,
B_HPKG_ATTRIBUTE_TYPE_UINT, B_HPKG_ATTRIBUTE_TYPE_UINT,