/* * Copyright 2011-2018, Haiku, Inc. * Distributed under the terms of the MIT License. */ #ifndef _PACKAGE__REPOSITORY_INFO_H_ #define _PACKAGE__REPOSITORY_INFO_H_ #include #include #include #include #include namespace BPackageKit { class BRepositoryInfo : public BArchivable { typedef BArchivable inherited; public: BRepositoryInfo(); BRepositoryInfo(BMessage* data); BRepositoryInfo(const BEntry& entry); virtual ~BRepositoryInfo(); virtual status_t Archive(BMessage* data, bool deep = true) const; status_t SetTo(const BMessage* data); status_t SetTo(const BEntry& entry); status_t InitCheck() const; const BString& Name() const; const BString& BaseURL() const; const BString& Identifier() const; const BString& Vendor() const; const BString& Summary() const; uint8 Priority() const; BPackageArchitecture Architecture() const; const BStringList& LicenseNames() const; const BStringList& LicenseTexts() const; void SetName(const BString& name); void SetBaseURL(const BString& url); void SetIdentifier(const BString& url); void SetVendor(const BString& vendor); void SetSummary(const BString& summary); void SetPriority(uint8 priority); void SetArchitecture(BPackageArchitecture arch); status_t AddLicense(const BString& licenseName, const BString& licenseText); void ClearLicenses(); public: static BRepositoryInfo* Instantiate(BMessage* data); static const uint8 kDefaultPriority; static const char* const kNameField; static const char* const kURLField; static const char* const kIdentifierField; static const char* const kBaseURLField; static const char* const kVendorField; static const char* const kSummaryField; static const char* const kPriorityField; static const char* const kArchitectureField; static const char* const kLicenseNameField; static const char* const kLicenseTextField; private: status_t _SetTo(const BMessage* data); status_t _SetTo(const BEntry& entry); private: status_t fInitStatus; BString fName; BString fBaseURL; // This is the URL to a single mirror. This field is optional. BString fIdentifier; // This is an identifier in the form of an URI for the // repository, that applies across mirrors. Good choices of // URI schemes are tag: and uuid:, for example. BString fVendor; BString fSummary; uint8 fPriority; BPackageArchitecture fArchitecture; BStringList fLicenseNames; BStringList fLicenseTexts; }; } // namespace BPackageKit #endif // _PACKAGE__REPOSITORY_INFO_H_