haiku/headers/os/package/hpkg/PackageInfoAttributeValue.h
Ingo Weinhold fe707a23fc hpkg format: Add attributes for declaring settings files
Global and user settings files can be declared. For global ones an
update policy can be specified. If not specified, the settings file is
not included in the package, but created by the program (or user) later.
If an update type is specified, it defines what to do with the settings
file when updating the package to a newer version.

User settings files are never included in the package; they are always
created by the program or the user. If the package contains a template/
default settings file, it can be declared, but for informative purposes
only.
2013-05-25 01:12:34 +02:00

124 lines
2.3 KiB
C++

/*
* Copyright 2009,2011, Haiku, Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _PACKAGE__HPKG__PACKAGE_INFO_ATTRIBUTE_VALUE_H_
#define _PACKAGE__HPKG__PACKAGE_INFO_ATTRIBUTE_VALUE_H_
#include <SupportDefs.h>
#include <string.h>
#include <package/PackageArchitecture.h>
#include <package/PackageInfoAttributes.h>
#include <package/PackageResolvableOperator.h>
#include <package/SettingsFileUpdateType.h>
namespace BPackageKit {
namespace BHPKG {
struct BPackageVersionData {
const char* major;
const char* minor;
const char* micro;
const char* preRelease;
uint32 revision;
};
struct BPackageResolvableData {
const char* name;
bool haveVersion;
bool haveCompatibleVersion;
BPackageVersionData version;
BPackageVersionData compatibleVersion;
};
struct BPackageResolvableExpressionData {
const char* name;
bool haveOpAndVersion;
BPackageResolvableOperator op;
BPackageVersionData version;
};
struct BGlobalSettingsFileInfoData {
const char* path;
BSettingsFileUpdateType updateType;
};
struct BUserSettingsFileInfoData {
const char* path;
const char* templatePath;
};
struct BPackageInfoAttributeValue {
union {
uint64 unsignedInt;
const char* string;
BPackageVersionData version;
BPackageResolvableData resolvable;
BPackageResolvableExpressionData resolvableExpression;
BGlobalSettingsFileInfoData globalSettingsFileInfo;
BUserSettingsFileInfoData userSettingsFileInfo;
};
BPackageInfoAttributeID attributeID;
public:
BPackageInfoAttributeValue();
void SetTo(BPackageInfoAttributeID id,
uint8 value);
void SetTo(BPackageInfoAttributeID id,
const char* value);
void Clear();
};
inline
BPackageInfoAttributeValue::BPackageInfoAttributeValue()
{
Clear();
}
inline void
BPackageInfoAttributeValue::SetTo(BPackageInfoAttributeID id, uint8 value)
{
attributeID = id;
unsignedInt = value;
}
inline void
BPackageInfoAttributeValue::SetTo(BPackageInfoAttributeID id,
const char* value)
{
attributeID = id;
string = value;
}
inline void
BPackageInfoAttributeValue::Clear()
{
memset(this, 0, sizeof(BPackageInfoAttributeValue));
attributeID = B_PACKAGE_INFO_ENUM_COUNT;
}
} // namespace BHPKG
} // namespace BPackageKit
#endif // _PACKAGE__HPKG__PACKAGE_ATTRIBUTE_VALUE_H_