Move package attribute ID definitions to a separate file

... <package/hpkg/PackageAttributes.h>, which also defines other
properties (name and type) for each attribute. It does so via a macro
that the caller can define to generate whatever code is desired.
This commit is contained in:
Ingo Weinhold
2013-05-25 01:12:35 +02:00
parent fe707a23fc
commit a8de2761c7
4 changed files with 83 additions and 89 deletions
@@ -0,0 +1 @@
#include <../os/package/hpkg/PackageAttributes.h>
+4 -46
View File
@@ -86,52 +86,10 @@ extern const char* const B_HPKG_PACKAGE_INFO_FILE_NAME;
// package attribute IDs
enum BHPKGAttributeID {
B_HPKG_ATTRIBUTE_ID_DIRECTORY_ENTRY = 0,
B_HPKG_ATTRIBUTE_ID_FILE_TYPE = 1,
B_HPKG_ATTRIBUTE_ID_FILE_PERMISSIONS = 2,
B_HPKG_ATTRIBUTE_ID_FILE_USER = 3,
B_HPKG_ATTRIBUTE_ID_FILE_GROUP = 4,
B_HPKG_ATTRIBUTE_ID_FILE_ATIME = 5,
B_HPKG_ATTRIBUTE_ID_FILE_MTIME = 6,
B_HPKG_ATTRIBUTE_ID_FILE_CRTIME = 7,
B_HPKG_ATTRIBUTE_ID_FILE_ATIME_NANOS = 8,
B_HPKG_ATTRIBUTE_ID_FILE_MTIME_NANOS = 9,
B_HPKG_ATTRIBUTE_ID_FILE_CRTIM_NANOS = 10,
B_HPKG_ATTRIBUTE_ID_FILE_ATTRIBUTE = 11,
B_HPKG_ATTRIBUTE_ID_FILE_ATTRIBUTE_TYPE = 12,
B_HPKG_ATTRIBUTE_ID_DATA = 13,
B_HPKG_ATTRIBUTE_ID_SYMLINK_PATH = 14,
B_HPKG_ATTRIBUTE_ID_PACKAGE_NAME = 15,
B_HPKG_ATTRIBUTE_ID_PACKAGE_SUMMARY = 16,
B_HPKG_ATTRIBUTE_ID_PACKAGE_DESCRIPTION = 17,
B_HPKG_ATTRIBUTE_ID_PACKAGE_VENDOR = 18,
B_HPKG_ATTRIBUTE_ID_PACKAGE_PACKAGER = 19,
B_HPKG_ATTRIBUTE_ID_PACKAGE_FLAGS = 20,
B_HPKG_ATTRIBUTE_ID_PACKAGE_ARCHITECTURE = 21,
B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_MAJOR = 22,
B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_MINOR = 23,
B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_MICRO = 24,
B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_REVISION = 25,
B_HPKG_ATTRIBUTE_ID_PACKAGE_COPYRIGHT = 26,
B_HPKG_ATTRIBUTE_ID_PACKAGE_LICENSE = 27,
B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES = 28,
B_HPKG_ATTRIBUTE_ID_PACKAGE_REQUIRES = 29,
B_HPKG_ATTRIBUTE_ID_PACKAGE_SUPPLEMENTS = 30,
B_HPKG_ATTRIBUTE_ID_PACKAGE_CONFLICTS = 31,
B_HPKG_ATTRIBUTE_ID_PACKAGE_FRESHENS = 32,
B_HPKG_ATTRIBUTE_ID_PACKAGE_REPLACES = 33,
B_HPKG_ATTRIBUTE_ID_PACKAGE_RESOLVABLE_OPERATOR = 34,
B_HPKG_ATTRIBUTE_ID_PACKAGE_CHECKSUM = 35,
B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_PRE_RELEASE = 36,
B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES_COMPATIBLE = 37,
B_HPKG_ATTRIBUTE_ID_PACKAGE_URL = 38,
B_HPKG_ATTRIBUTE_ID_PACKAGE_SOURCE_URL = 39,
B_HPKG_ATTRIBUTE_ID_PACKAGE_INSTALL_PATH = 40,
B_HPKG_ATTRIBUTE_ID_PACKAGE_BASE_PACKAGE = 41,
B_HPKG_ATTRIBUTE_ID_PACKAGE_GLOBAL_SETTINGS_FILE = 42,
B_HPKG_ATTRIBUTE_ID_PACKAGE_USER_SETTINGS_FILE = 43,
B_HPKG_ATTRIBUTE_ID_PACKAGE_SETTINGS_FILE_UPDATE_TYPE = 44,
B_HPKG_ATTRIBUTE_ID_PACKAGE_SETTINGS_FILE_TEMPLATE = 45,
#define B_DEFINE_HPKG_ATTRIBUTE(id, type, name, constant) \
B_HPKG_ATTRIBUTE_ID_##constant = id,
#include <package/hpkg/PackageAttributes.h>
#undef B_DEFINE_HPKG_ATTRIBUTE
//
B_HPKG_ATTRIBUTE_ID_ENUM_COUNT,
};
@@ -0,0 +1,72 @@
/*
* Copyright 2009-2013, Haiku, Inc.
* Distributed under the terms of the MIT License.
*/
// This file defines the HPKG file attributes with all their properties in one
// place. Includers of the file need to define the macro
// B_DEFINE_HPKG_ATTRIBUTE(id, type, name, constant) so that it evaluates to
// whatever is desired in their context.
B_DEFINE_HPKG_ATTRIBUTE( 0, STRING, "dir:entry", DIRECTORY_ENTRY)
B_DEFINE_HPKG_ATTRIBUTE( 1, UINT, "file:type", FILE_TYPE)
B_DEFINE_HPKG_ATTRIBUTE( 2, UINT, "file:permissions", FILE_PERMISSIONS)
B_DEFINE_HPKG_ATTRIBUTE( 3, STRING, "file:user", FILE_USER)
B_DEFINE_HPKG_ATTRIBUTE( 4, STRING, "file:group", FILE_GROUP)
B_DEFINE_HPKG_ATTRIBUTE( 5, UINT, "file:atime", FILE_ATIME)
B_DEFINE_HPKG_ATTRIBUTE( 6, UINT, "file:mtime", FILE_MTIME)
B_DEFINE_HPKG_ATTRIBUTE( 7, UINT, "file:crtime", FILE_CRTIME)
B_DEFINE_HPKG_ATTRIBUTE( 8, UINT, "file:atime:nanos", FILE_ATIME_NANOS)
B_DEFINE_HPKG_ATTRIBUTE( 9, UINT, "file:mtime:nanos", FILE_MTIME_NANOS)
B_DEFINE_HPKG_ATTRIBUTE(10, UINT, "file:crtime:nanos", FILE_CRTIM_NANOS)
B_DEFINE_HPKG_ATTRIBUTE(11, STRING, "file:attribute", FILE_ATTRIBUTE)
B_DEFINE_HPKG_ATTRIBUTE(12, UINT, "file:attribute:type", FILE_ATTRIBUTE_TYPE)
B_DEFINE_HPKG_ATTRIBUTE(13, RAW, "data", DATA)
B_DEFINE_HPKG_ATTRIBUTE(14, STRING, "symlink:path", SYMLINK_PATH)
B_DEFINE_HPKG_ATTRIBUTE(15, STRING, "package:name", PACKAGE_NAME)
B_DEFINE_HPKG_ATTRIBUTE(16, STRING, "package:summary", PACKAGE_SUMMARY)
B_DEFINE_HPKG_ATTRIBUTE(17, STRING, "package:description", PACKAGE_DESCRIPTION)
B_DEFINE_HPKG_ATTRIBUTE(18, STRING, "package:vendor", PACKAGE_VENDOR)
B_DEFINE_HPKG_ATTRIBUTE(19, STRING, "package:packager", PACKAGE_PACKAGER)
B_DEFINE_HPKG_ATTRIBUTE(20, UINT, "package:flags", PACKAGE_FLAGS)
B_DEFINE_HPKG_ATTRIBUTE(21, UINT, "package:architecture",
PACKAGE_ARCHITECTURE)
B_DEFINE_HPKG_ATTRIBUTE(22, STRING, "package:version.major",
PACKAGE_VERSION_MAJOR)
B_DEFINE_HPKG_ATTRIBUTE(23, STRING, "package:version.minor",
PACKAGE_VERSION_MINOR)
B_DEFINE_HPKG_ATTRIBUTE(24, STRING, "package:version.micro",
PACKAGE_VERSION_MICRO)
B_DEFINE_HPKG_ATTRIBUTE(25, UINT, "package:version.revision",
PACKAGE_VERSION_REVISION)
B_DEFINE_HPKG_ATTRIBUTE(26, STRING, "package:copyright", PACKAGE_COPYRIGHT)
B_DEFINE_HPKG_ATTRIBUTE(27, STRING, "package:license", PACKAGE_LICENSE)
B_DEFINE_HPKG_ATTRIBUTE(28, STRING, "package:provides", PACKAGE_PROVIDES)
B_DEFINE_HPKG_ATTRIBUTE(29, STRING, "package:requires", PACKAGE_REQUIRES)
B_DEFINE_HPKG_ATTRIBUTE(30, STRING, "package:supplements", PACKAGE_SUPPLEMENTS)
B_DEFINE_HPKG_ATTRIBUTE(31, STRING, "package:conflicts", PACKAGE_CONFLICTS)
B_DEFINE_HPKG_ATTRIBUTE(32, STRING, "package:freshens", PACKAGE_FRESHENS)
B_DEFINE_HPKG_ATTRIBUTE(33, STRING, "package:replaces", PACKAGE_REPLACES)
B_DEFINE_HPKG_ATTRIBUTE(34, UINT, "package:resolvable.operator",
PACKAGE_RESOLVABLE_OPERATOR)
B_DEFINE_HPKG_ATTRIBUTE(35, STRING, "package:checksum", PACKAGE_CHECKSUM)
B_DEFINE_HPKG_ATTRIBUTE(36, STRING, "package:version.prerelease",
PACKAGE_VERSION_PRE_RELEASE)
B_DEFINE_HPKG_ATTRIBUTE(37, STRING, "package:provides.compatible",
PACKAGE_PROVIDES_COMPATIBLE)
B_DEFINE_HPKG_ATTRIBUTE(38, STRING, "package:url", PACKAGE_URL)
B_DEFINE_HPKG_ATTRIBUTE(39, STRING, "package:source-url", PACKAGE_SOURCE_URL)
B_DEFINE_HPKG_ATTRIBUTE(40, STRING, "package:install-path",
PACKAGE_INSTALL_PATH)
B_DEFINE_HPKG_ATTRIBUTE(41, STRING, "package:base-package",
PACKAGE_BASE_PACKAGE)
B_DEFINE_HPKG_ATTRIBUTE(42, STRING, "package:global-settings-file",
PACKAGE_GLOBAL_SETTINGS_FILE)
B_DEFINE_HPKG_ATTRIBUTE(43, STRING, "package:user-settings-file",
PACKAGE_USER_SETTINGS_FILE)
B_DEFINE_HPKG_ATTRIBUTE(44, UINT, "package:settings-file-update-type",
PACKAGE_SETTINGS_FILE_UPDATE_TYPE)
B_DEFINE_HPKG_ATTRIBUTE(45, STRING, "package:settings-file-template",
PACKAGE_SETTINGS_FILE_TEMPLATE)