struct CCL::IPackageFile

Overview

A package file represents a “file system in a file”. More…

#include <ipackagefile.h>

struct IPackageFile: public CCL::IFileResource
{
    // methods

    virtual tresult CCL_API setOption (StringID id, VariantRef value) = 0;
    virtual tresult CCL_API getOption (Variant& value, StringID id) const = 0;
    virtual IFileSystem*CCL_API getFileSystem () = 0;
    virtual IPackageItem*CCL_API getRootItem () = 0;

    virtual int CCL_API embedd (
        UrlRef path,
        int fileIteratorMode = IFileIterator::kAll,
        IUrlFilter* filter = nullptr,
        IProgressNotify* progress = nullptr
    ) = 0;

    virtual int CCL_API embeddToFolder (
        UrlRef destPath,
        UrlRef sourcePath,
        int fileIteratorMode = IFileIterator::kAll,
        IUrlFilter* filter = nullptr,
        IProgressNotify* progress = nullptr
    ) = 0;

    virtual int CCL_API extractAll (
        UrlRef path,
        tbool deep = true,
        IUrlFilter* filter = nullptr,
        IProgressNotify* progress = nullptr
    ) = 0;

    virtual int CCL_API extractFolder (
        UrlRef sourcePath,
        UrlRef destPath,
        tbool deep = true,
        IUrlFilter* filter = nullptr,
        IProgressNotify* progress = nullptr
    ) = 0;

    virtual IPackageItem*CCL_API createItem (
        UrlRef url,
        IPackageItemWriter* writer,
        int* attributes = nullptr
    ) = 0;

    virtual IPackageItem*CCL_API copyItem (
        IPackageFile* sourcePackage,
        UrlRef sourcePath,
        const IUrl* destPath = nullptr
    ) = 0;

    virtual tbool CCL_API flush (IProgressNotify* progress = nullptr) = 0;
};

Inherited Members

public:
    // structs

    struct Closer;
    struct Opener;

    // methods

    virtual tresult CCL_API queryInterface (UIDRef iid, void** ptr) = 0;
    virtual unsigned int CCL_API retain () = 0;
    virtual unsigned int CCL_API release () = 0;
    virtual tbool CCL_API setPath (UrlRef path) = 0;
    virtual UrlRef CCL_API getPath () const = 0;
    virtual tbool CCL_API open (int mode = 0) = 0;
    virtual tbool CCL_API create (int mode = 0) = 0;
    virtual tbool CCL_API close () = 0;
    virtual tbool CCL_API isExisting () const = 0;
    virtual tbool CCL_API isOpen () const = 0;
    virtual tbool CCL_API deletePhysical (int mode = 0) = 0;

Detailed Documentation

A package file represents a “file system in a file”.

Methods

virtual tresult CCL_API setOption (StringID id, VariantRef value) = 0

Set package file option (e.g.

enable/disable compression).

virtual tresult CCL_API getOption (Variant& value, StringID id) const = 0

Get package file option.

virtual IFileSystem*CCL_API getFileSystem () = 0

Get file system interface to iterate, open and create individual streams.

virtual IPackageItem*CCL_API getRootItem () = 0

Get root of content table (returns null if unsupported).

virtual int CCL_API embedd (
    UrlRef path,
    int fileIteratorMode = IFileIterator::kAll,
    IUrlFilter* filter = nullptr,
    IProgressNotify* progress = nullptr
) = 0

Embedd files into package.

This method builds the content table only. Use ‘flush’ to copy file data.

virtual int CCL_API embeddToFolder (
    UrlRef destPath,
    UrlRef sourcePath,
    int fileIteratorMode = IFileIterator::kAll,
    IUrlFilter* filter = nullptr,
    IProgressNotify* progress = nullptr
) = 0

Embedd files into package in a subfolder.

This method builds the content table only. Use ‘flush’ to copy file data.

virtual int CCL_API extractAll (
    UrlRef path,
    tbool deep = true,
    IUrlFilter* filter = nullptr,
    IProgressNotify* progress = nullptr
) = 0

Extract all files from package to local folder.

virtual int CCL_API extractFolder (
    UrlRef sourcePath,
    UrlRef destPath,
    tbool deep = true,
    IUrlFilter* filter = nullptr,
    IProgressNotify* progress = nullptr
) = 0

Extract subfolder from package to local folder.

virtual IPackageItem*CCL_API createItem (
    UrlRef url,
    IPackageItemWriter* writer,
    int* attributes = nullptr
) = 0

Create item to be written during flush (takes ownership of writer!).

virtual IPackageItem*CCL_API copyItem (
    IPackageFile* sourcePackage,
    UrlRef sourcePath,
    const IUrl* destPath = nullptr
) = 0

Create item as a copy of an item from another package.

If destination path is not given, source path will be used.

virtual tbool CCL_API flush (IProgressNotify* progress = nullptr) = 0

Flush changes made to content table.

This process might take a while.