/* * Copyright 2009-2011, Haiku, Inc. All rights reserved. * 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 #include #include #include #include #include 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 BGlobalWritableFileInfoData { const char* path; BWritableFileUpdateType updateType; bool isDirectory; }; struct BUserSettingsFileInfoData { const char* path; const char* templatePath; bool isDirectory; }; struct BUserData { const char* name; const char* realName; const char* home; const char* shell; const char* const* groups; size_t groupCount; }; struct BPackageInfoAttributeValue { union { uint64 unsignedInt; const char* string; BPackageVersionData version; BPackageResolvableData resolvable; BPackageResolvableExpressionData resolvableExpression; BGlobalWritableFileInfoData globalWritableFileInfo; BUserSettingsFileInfoData userSettingsFileInfo; BUserData user; }; 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() { unsignedInt = 0; string = NULL; memset(&version, 0, sizeof(version)); memset(&resolvable, 0, sizeof(resolvable)); memset(&resolvableExpression, 0, sizeof(resolvableExpression)); memset(&globalWritableFileInfo, 0, sizeof(globalWritableFileInfo)); memset(&userSettingsFileInfo, 0, sizeof(userSettingsFileInfo)); memset(&user, 0, sizeof(user)); attributeID = B_PACKAGE_INFO_ENUM_COUNT; } } // namespace BHPKG } // namespace BPackageKit #endif // _PACKAGE__HPKG__PACKAGE_ATTRIBUTE_VALUE_H_