/* * Copyright 2024-2025, Andrew Lindesay . * All rights reserved. Distributed under the terms of the MIT License. */ #ifndef PACKAGE_CORE_INFO_H #define PACKAGE_CORE_INFO_H #include #include #include "PackagePublisherInfo.h" #include "PackageVersion.h" using BPackageKit::BPackageVersion; class PackageCoreInfoBuilder; /*! This class models the core data for the package. Instances of this class should not be created directly; instead use the PackageCoreInfoBuilder class as a builder-constructor. */ class PackageCoreInfo : public BReferenceable { friend class PackageCoreInfoBuilder; public: PackageCoreInfo(); PackageCoreInfo(const PackageCoreInfo& other); virtual ~PackageCoreInfo(); bool operator==(const PackageCoreInfo& other) const; bool operator!=(const PackageCoreInfo& other) const; const PackageVersionRef& Version() const; const PackagePublisherInfoRef& Publisher() const; const BString Architecture() const; const BString& DepotName() const; private: void SetVersion(PackageVersionRef value); void SetPublisher(PackagePublisherInfoRef value); void SetArchitecture(const BString& value); void SetDepotName(const BString& value); private: PackageVersionRef fVersion; PackagePublisherInfoRef fPublisher; BString fArchitecture; BString fDepotName; // The name and not the identifier are used here because the // identifier is not readily available in all API situations. }; typedef BReference PackageCoreInfoRef; class PackageCoreInfoBuilder { public: PackageCoreInfoBuilder(); PackageCoreInfoBuilder(const PackageCoreInfoRef& other); virtual ~PackageCoreInfoBuilder(); PackageCoreInfoRef BuildRef(); PackageCoreInfoBuilder& WithVersion(PackageVersionRef value); PackageCoreInfoBuilder& WithPublisher(PackagePublisherInfoRef value); PackageCoreInfoBuilder& WithArchitecture(const BString& value); PackageCoreInfoBuilder& WithDepotName(const BString& value); private: void _InitFromSource(); void _Init(const PackageCoreInfo* value); private: PackageCoreInfoRef fSource; PackageVersionRef fVersion; PackagePublisherInfoRef fPublisher; BString fArchitecture; BString fDepotName; }; #endif // PACKAGE_CORE_INFO_H