/* * Copyright 2011, Oliver Tappe * Distributed under the terms of the MIT License. */ #ifndef _PACKAGE__HPKG__PRIVATE__REPOSITORY_WRITER_IMPL_H_ #define _PACKAGE__HPKG__PRIVATE__REPOSITORY_WRITER_IMPL_H_ #include #include #include #include #include namespace BPackageKit { namespace BHPKG { class BPackageEntry; class BPackageEntryAttribute; struct BPackageInfoAttributeValue; namespace BPrivate { struct hpkg_header; class RepositoryWriterImpl : public WriterImplBase { typedef WriterImplBase inherited; public: RepositoryWriterImpl( BRepositoryWriterListener* listener, BRepositoryInfo* repositoryInfo); ~RepositoryWriterImpl(); status_t Init(const char* fileName); status_t AddPackage(const BEntry& packageEntry); status_t AddPackageInfo(const BPackageInfo& packageInfo); status_t Finish(); private: status_t _Init(const char* fileName); status_t _AddPackage(const BEntry& packageEntry); status_t _AddPackageInfo( const BPackageInfo& packageInfo); status_t _Finish(); status_t _RegisterCurrentPackageInfo(); status_t _WriteRepositoryInfo(hpkg_repo_header& header, uint64& _length); void _WritePackageAttributes( hpkg_repo_header& header, uint64& _length); struct PackageNameSet; private: BRepositoryWriterListener* fListener; BRepositoryInfo* fRepositoryInfo; BPackageInfo fPackageInfo; uint32 fPackageCount; PackageNameSet* fPackageNames; }; } // namespace BPrivate } // namespace BHPKG } // namespace BPackageKit #endif // _PACKAGE__HPKG__PRIVATE__REPOSITORY_WRITER_IMPL_H_