// CkTarW.h: interface for the CkTarW class.
//
//////////////////////////////////////////////////////////////////////

// This header is generated for Chilkat 11.4.0

#ifndef _CkTarW_H
#define _CkTarW_H
	
#include "chilkatDefs.h"
#include "CkString.h"
#include "CkClassWithCallbacksW.h"

class CkTaskW;
class CkBinDataW;
class CkByteData;
class CkTarProgressW;



#if !defined(__sun__) && !defined(__sun)
#pragma pack (push, 8)
#endif
 

// CLASS: CkTarW
class CK_VISIBLE_PUBLIC CkTarW  : public CkClassWithCallbacksW
{
	private:
	bool m_cbOwned;

	private:
	
	// Don't allow assignment or copying these objects.
	CkTarW(const CkTarW &);
	CkTarW &operator=(const CkTarW &);

    public:
	CkTarW(void);
	virtual ~CkTarW(void);

	

	static CkTarW *createNew(void);
	

	CkTarW(bool bCallbackOwned);
	static CkTarW *createNew(bool bCallbackOwned);

	
	void CK_VISIBLE_PRIVATE inject(void *impl);

	// May be called when finished with the object to free/dispose of any
	// internal resources held by the object. 
	void dispose(void);

	CkTarProgressW *get_EventCallbackObject(void) const;
	void put_EventCallbackObject(CkTarProgressW *progress);


	// BEGIN PUBLIC INTERFACE

	// ----------------------
	// Properties
	// ----------------------
	// If true, then untar methods, such as Untar, UntarGz, UntarBz2, and UntarZ,
	// will also capture an XML listing of the contents in the XmlListing property. The
	// format of the XML contained in XmlListing is identical to what is returned by
	// the ListXml method. The default value is false.
	bool get_CaptureXmlListing(void);
	// If true, then untar methods, such as Untar, UntarGz, UntarBz2, and UntarZ,
	// will also capture an XML listing of the contents in the XmlListing property. The
	// format of the XML contained in XmlListing is identical to what is returned by
	// the ListXml method. The default value is false.
	void put_CaptureXmlListing(bool newVal);

	// Character encoding to be used when interpreting filenames within .tar archives
	// for untar operations. The default is utf-8 , and this is typically not changed.
	// (The WriteTar methods always uses utf-8 to store filenames within the TAR
	// archive.)
	void get_Charset(CkString &str);
	// Character encoding to be used when interpreting filenames within .tar archives
	// for untar operations. The default is utf-8 , and this is typically not changed.
	// (The WriteTar methods always uses utf-8 to store filenames within the TAR
	// archive.)
	const wchar_t *charset(void);
	// Character encoding to be used when interpreting filenames within .tar archives
	// for untar operations. The default is utf-8 , and this is typically not changed.
	// (The WriteTar methods always uses utf-8 to store filenames within the TAR
	// archive.)
	void put_Charset(const wchar_t *newVal);

	// The directory permissions to used in WriteTar* methods. The default is octal
	// 0755. This is the value to be stored in the mode field of each TAR header for a
	// directory entries.
	int get_DirMode(void);
	// The directory permissions to used in WriteTar* methods. The default is octal
	// 0755. This is the value to be stored in the mode field of each TAR header for a
	// directory entries.
	void put_DirMode(int newVal);

	// A prefix to be added to each file's path within the TAR archive as it is being
	// created. For example, if this property is set to the string subdir1 , then
	// subdir1/ will be prepended to each file's path within the TAR.
	// 
	// Note: This property does not apply to files added using the AddFile2 method,
	// which directly specifies the path-in-tar.
	// 
	void get_DirPrefix(CkString &str);
	// A prefix to be added to each file's path within the TAR archive as it is being
	// created. For example, if this property is set to the string subdir1 , then
	// subdir1/ will be prepended to each file's path within the TAR.
	// 
	// Note: This property does not apply to files added using the AddFile2 method,
	// which directly specifies the path-in-tar.
	// 
	const wchar_t *dirPrefix(void);
	// A prefix to be added to each file's path within the TAR archive as it is being
	// created. For example, if this property is set to the string subdir1 , then
	// subdir1/ will be prepended to each file's path within the TAR.
	// 
	// Note: This property does not apply to files added using the AddFile2 method,
	// which directly specifies the path-in-tar.
	// 
	void put_DirPrefix(const wchar_t *newVal);

	// The file permissions to used in WriteTar* methods. The default is octal 0644.
	// This is the value to be stored in the mode field of each TAR header for a file
	// entries.
	int get_FileMode(void);
	// The file permissions to used in WriteTar* methods. The default is octal 0644.
	// This is the value to be stored in the mode field of each TAR header for a file
	// entries.
	void put_FileMode(int newVal);

	// The default numerical GID to be stored in each TAR header when writing TAR
	// archives. The default value is 1000.
	int get_GroupId(void);
	// The default numerical GID to be stored in each TAR header when writing TAR
	// archives. The default value is 1000.
	void put_GroupId(int newVal);

	// The default group name to be stored in each TAR header when writing TAR
	// archives. The default value is the logged-on username of the application's
	// process.
	void get_GroupName(CkString &str);
	// The default group name to be stored in each TAR header when writing TAR
	// archives. The default value is the logged-on username of the application's
	// process.
	const wchar_t *groupName(void);
	// The default group name to be stored in each TAR header when writing TAR
	// archives. The default value is the logged-on username of the application's
	// process.
	void put_GroupName(const wchar_t *newVal);

	// The interval in milliseconds between each AbortCheck event callback, which
	// enables an application to abort certain method calls before they complete. By
	// default, HeartbeatMs is set to 0 , meaning no AbortCheck event callbacks will
	// trigger.
	// 
	// References:
	// 1: #AbortCheck
	int get_HeartbeatMs(void);
	// The interval in milliseconds between each AbortCheck event callback, which
	// enables an application to abort certain method calls before they complete. By
	// default, HeartbeatMs is set to 0 , meaning no AbortCheck event callbacks will
	// trigger.
	// 
	// References:
	// 1: #AbortCheck
	void put_HeartbeatMs(int newVal);

	// Determines whether pattern matching for the MustMatch and MustNotMatch
	// properties is case-sensitive or not. The default value is false.
	bool get_MatchCaseSensitive(void);
	// Determines whether pattern matching for the MustMatch and MustNotMatch
	// properties is case-sensitive or not. The default value is false.
	void put_MatchCaseSensitive(bool newVal);

	// If set, then file paths must match this pattern when creating TAR archives, or
	// when extracting from TAR archives. If a file does not match, it will not be
	// included when creating a TAR, or it will not be extracted when extracting from a
	// TAR. This property also applies to methods that create or extract from
	// compressed TAR archives.
	// 
	// The must-match pattern may include 0 or more asterisk characters, each of which
	// represents 0 or more of any character. For example, the pattern *.txt causes
	// only .txt files to be included or extracted. The default value is an empty
	// string, indicating that all files are implicitly matched.
	// 
	void get_MustMatch(CkString &str);
	// If set, then file paths must match this pattern when creating TAR archives, or
	// when extracting from TAR archives. If a file does not match, it will not be
	// included when creating a TAR, or it will not be extracted when extracting from a
	// TAR. This property also applies to methods that create or extract from
	// compressed TAR archives.
	// 
	// The must-match pattern may include 0 or more asterisk characters, each of which
	// represents 0 or more of any character. For example, the pattern *.txt causes
	// only .txt files to be included or extracted. The default value is an empty
	// string, indicating that all files are implicitly matched.
	// 
	const wchar_t *mustMatch(void);
	// If set, then file paths must match this pattern when creating TAR archives, or
	// when extracting from TAR archives. If a file does not match, it will not be
	// included when creating a TAR, or it will not be extracted when extracting from a
	// TAR. This property also applies to methods that create or extract from
	// compressed TAR archives.
	// 
	// The must-match pattern may include 0 or more asterisk characters, each of which
	// represents 0 or more of any character. For example, the pattern *.txt causes
	// only .txt files to be included or extracted. The default value is an empty
	// string, indicating that all files are implicitly matched.
	// 
	void put_MustMatch(const wchar_t *newVal);

	// If set, then file paths must NOT match this pattern when creating TAR archives,
	// or when extracting from TAR archives. If a file path matches, it will not be
	// included when creating a TAR, or it will not be extracted when extracting from a
	// TAR. This property also applies to methods that create or extract from
	// compressed TAR archives.
	// 
	// The must-not-match pattern may include 0 or more asterisk characters, each of
	// which represents 0 or more of any character. For example, the pattern *.obj
	// causes all .obj files to be skipped. The default value is an empty string,
	// indicating that no files are skipped.
	// 
	void get_MustNotMatch(CkString &str);
	// If set, then file paths must NOT match this pattern when creating TAR archives,
	// or when extracting from TAR archives. If a file path matches, it will not be
	// included when creating a TAR, or it will not be extracted when extracting from a
	// TAR. This property also applies to methods that create or extract from
	// compressed TAR archives.
	// 
	// The must-not-match pattern may include 0 or more asterisk characters, each of
	// which represents 0 or more of any character. For example, the pattern *.obj
	// causes all .obj files to be skipped. The default value is an empty string,
	// indicating that no files are skipped.
	// 
	const wchar_t *mustNotMatch(void);
	// If set, then file paths must NOT match this pattern when creating TAR archives,
	// or when extracting from TAR archives. If a file path matches, it will not be
	// included when creating a TAR, or it will not be extracted when extracting from a
	// TAR. This property also applies to methods that create or extract from
	// compressed TAR archives.
	// 
	// The must-not-match pattern may include 0 or more asterisk characters, each of
	// which represents 0 or more of any character. For example, the pattern *.obj
	// causes all .obj files to be skipped. The default value is an empty string,
	// indicating that no files are skipped.
	// 
	void put_MustNotMatch(const wchar_t *newVal);

	// If true, then absolute paths are converted to relative paths by removing the
	// leading / or \ character when untarring. This protects your system from
	// unknowingly untarring files into important system directories, such as
	// C:\Windows\system32. The default value is true.
	bool get_NoAbsolutePaths(void);
	// If true, then absolute paths are converted to relative paths by removing the
	// leading / or \ character when untarring. This protects your system from
	// unknowingly untarring files into important system directories, such as
	// C:\Windows\system32. The default value is true.
	void put_NoAbsolutePaths(bool newVal);

	// The total number of directory roots set by calling AddDirRoot (i.e. the number
	// of times AddDirRoot was called by the application). A TAR archive is created by
	// calling AddDirRoot for one or more directory tree roots, followed by a single
	// call to WriteTar (or WriteTarBz2, WriteTarGz, WriteTarZ). This allows for TAR
	// archives containing multiple directory trees to be created.
	int get_NumDirRoots(void);

	// This property is only valid in programming environment and languages that allow
	// for event callbacks.
	// 
	// Sets the value to be defined as 100% complete for the purpose of PercentDone
	// event callbacks. The defaut value of 100 means that at most 100 event
	// PercentDone callbacks will occur in a method that (1) is event enabled and (2)
	// is such that it is possible to measure progress as a percentage completed. This
	// property may be set to larger numbers to get more fine-grained PercentDone
	// callbacks. For example, setting this property equal to 1000 will provide
	// callbacks with .1 percent granularity. For example, a value of 453 would
	// indicate 45.3% competed. This property is clamped to a minimum value of 10, and
	// a maximum value of 100000.
	// 
	int get_PercentDoneScale(void);
	// This property is only valid in programming environment and languages that allow
	// for event callbacks.
	// 
	// Sets the value to be defined as 100% complete for the purpose of PercentDone
	// event callbacks. The defaut value of 100 means that at most 100 event
	// PercentDone callbacks will occur in a method that (1) is event enabled and (2)
	// is such that it is possible to measure progress as a percentage completed. This
	// property may be set to larger numbers to get more fine-grained PercentDone
	// callbacks. For example, setting this property equal to 1000 will provide
	// callbacks with .1 percent granularity. For example, a value of 453 would
	// indicate 45.3% competed. This property is clamped to a minimum value of 10, and
	// a maximum value of 100000.
	// 
	void put_PercentDoneScale(int newVal);

	// The file permissions to used in WriteTar* methods for shell script files (.sh,
	// .csh, .bash, .bsh). The default is octal 0755. This is the value to be stored in
	// the mode field of each TAR header for a file entries.
	int get_ScriptFileMode(void);
	// The file permissions to used in WriteTar* methods for shell script files (.sh,
	// .csh, .bash, .bsh). The default is octal 0755. This is the value to be stored in
	// the mode field of each TAR header for a file entries.
	void put_ScriptFileMode(int newVal);

	// If true, then untar methods, such as Untar, UntarGz, UntarBz2, and UntarZ, do
	// not produce any output. Setting this value equal to true is useful when the
	// CaptureXmlListing is also set to true, which enables an application to get the
	// contents of a TAR archive without extracting. The default value is false.
	bool get_SuppressOutput(void);
	// If true, then untar methods, such as Untar, UntarGz, UntarBz2, and UntarZ, do
	// not produce any output. Setting this value equal to true is useful when the
	// CaptureXmlListing is also set to true, which enables an application to get the
	// contents of a TAR archive without extracting. The default value is false.
	void put_SuppressOutput(bool newVal);

	// This property is deprecated. Applications should instead use the
	// MatchCaseSensitive property. Until this property is officially removed, it will
	// behave the same as the MatchCaseSensitive property.
	bool get_UntarCaseSensitive(void);
	// This property is deprecated. Applications should instead use the
	// MatchCaseSensitive property. Until this property is officially removed, it will
	// behave the same as the MatchCaseSensitive property.
	void put_UntarCaseSensitive(bool newVal);

	// Similar to the VerboseLogging property. If set to true, then information about
	// each file/directory extracted in an untar method call is logged to LastErrorText
	// (or LastErrorXml / LastErrorHtml). The default value is false.
	bool get_UntarDebugLog(void);
	// Similar to the VerboseLogging property. If set to true, then information about
	// each file/directory extracted in an untar method call is logged to LastErrorText
	// (or LastErrorXml / LastErrorHtml). The default value is false.
	void put_UntarDebugLog(bool newVal);

	// If true, then discard all path information when untarring. This causes all
	// files to be untarred into a single directory. The default value is false.
	bool get_UntarDiscardPaths(void);
	// If true, then discard all path information when untarring. This causes all
	// files to be untarred into a single directory. The default value is false.
	void put_UntarDiscardPaths(bool newVal);

	// The directory path where files are extracted when untarring. The default value
	// is . , meaning that the current working directory of the calling process is
	// used. If UntarDiscardPaths is set, then all files are untarred into this
	// directory. Otherwise, the untar operation will re-create a directory tree rooted
	// in this directory.
	void get_UntarFromDir(CkString &str);
	// The directory path where files are extracted when untarring. The default value
	// is . , meaning that the current working directory of the calling process is
	// used. If UntarDiscardPaths is set, then all files are untarred into this
	// directory. Otherwise, the untar operation will re-create a directory tree rooted
	// in this directory.
	const wchar_t *untarFromDir(void);
	// The directory path where files are extracted when untarring. The default value
	// is . , meaning that the current working directory of the calling process is
	// used. If UntarDiscardPaths is set, then all files are untarred into this
	// directory. Otherwise, the untar operation will re-create a directory tree rooted
	// in this directory.
	void put_UntarFromDir(const wchar_t *newVal);

	// Limits the number of files extracted during an untar to this count. The default
	// value is 0 to indicate no maximum. To untar a single file, one might set the
	// UntarMatchPattern such that it will match only the file to be extracted, and
	// also set UntarMaxCount equal to 1. This causes an untar to scan the TAR archive
	// until it finds the matching file, extract it, and then return.
	int get_UntarMaxCount(void);
	// Limits the number of files extracted during an untar to this count. The default
	// value is 0 to indicate no maximum. To untar a single file, one might set the
	// UntarMatchPattern such that it will match only the file to be extracted, and
	// also set UntarMaxCount equal to 1. This causes an untar to scan the TAR archive
	// until it finds the matching file, extract it, and then return.
	void put_UntarMaxCount(int newVal);

	// The default numerical UID to be stored in each TAR header when writing TAR
	// archives. The default value is 1000.
	int get_UserId(void);
	// The default numerical UID to be stored in each TAR header when writing TAR
	// archives. The default value is 1000.
	void put_UserId(int newVal);

	// The default user name to be stored in each TAR header when writing TAR archives.
	// The default value is the logged-on username of the application's process.
	void get_UserName(CkString &str);
	// The default user name to be stored in each TAR header when writing TAR archives.
	// The default value is the logged-on username of the application's process.
	const wchar_t *userName(void);
	// The default user name to be stored in each TAR header when writing TAR archives.
	// The default value is the logged-on username of the application's process.
	void put_UserName(const wchar_t *newVal);

	// The TAR format to use when writing a TAR archive. Valid values are gnu , pax ,
	// and ustar . The default value is gnu .
	void get_WriteFormat(CkString &str);
	// The TAR format to use when writing a TAR archive. Valid values are gnu , pax ,
	// and ustar . The default value is gnu .
	const wchar_t *writeFormat(void);
	// The TAR format to use when writing a TAR archive. Valid values are gnu , pax ,
	// and ustar . The default value is gnu .
	void put_WriteFormat(const wchar_t *newVal);

	// Contains the XML listing of the contents of the TAR archive for the last untar
	// method call (such as Untar, UntarGz, etc.) where the CaptureXmlListing property
	// was set to true.
	void get_XmlListing(CkString &str);
	// Contains the XML listing of the contents of the TAR archive for the last untar
	// method call (such as Untar, UntarGz, etc.) where the CaptureXmlListing property
	// was set to true.
	const wchar_t *xmlListing(void);
	// Contains the XML listing of the contents of the TAR archive for the last untar
	// method call (such as Untar, UntarGz, etc.) where the CaptureXmlListing property
	// was set to true.
	void put_XmlListing(const wchar_t *newVal);



	// ----------------------
	// Methods
	// ----------------------
	// Adds a directory tree to be included in the next call to one of the WriteTar*
	// methods. To include multiple directory trees in a .tar, call AddDirRoot multiple
	// times followed by a single call to WriteTar.
	bool AddDirRoot(const wchar_t *dirPath);

	// Adds a directory tree to be included in the next call to one of the WriteTar*
	// methods. To include multiple directory trees in a .tar, call AddDirRoot2 (and/or
	// AddDirRoot) multiple times followed by a single call to WriteTar.
	// 
	// The rootPrefix adds a prefix to the path in the TAR for all files added under this
	// root. The rootPrefix should not end with a forward-slash char. For example: This is
	// good: abc/123 , but this is not good: abc/123/ . If the DirPrefix property is
	// also set, its prefix will added first.
	// 
	bool AddDirRoot2(const wchar_t *rootPrefix, const wchar_t *rootPath);

	// Adds a local file to be included in the next call to one of the WriteTar*
	// methods. To include multiple files or directory trees in a .tar, call
	// AddFile/AddDirRoot multiple times followed by a single call to WriteTar (or
	// WriteTarGz, or WriteTarBz2).
	bool AddFile(const wchar_t *path);

	// Adds a local file to be included in the next call to one of the WriteTar*
	// methods. Allows for the path within the TAR to be specified. To include multiple
	// files or directory trees in a .tar, call AddFile/AddFile2/AddDirRoot multiple
	// times followed by a single call to WriteTar (or WriteTarGz, or WriteTarBz2).
	// 
	// Note: The DirPrefix property does not apply to files added via this method
	// because this method explicilty specifies the path-in-tar.
	// 
	bool AddFile2(const wchar_t *filePath, const wchar_t *pathWithinTar);

	// Clears all directory roots and files previously added by calls to AddDirRoot,
	// AddDirRoot2, AddFile, and AddFile2.
	bool ClearDirRootsAndFiles(void);

	// Creates a .deb Debian binary package archive from a control.tar.gz and
	// data.tar.gz. The controlPath is the path to the control.tar.gz file (or equivalent),
	// and the dataPath is the path to the data.tar.gz file. The output file path (.deb) is
	// specified in debPath.
	bool CreateDeb(const wchar_t *controlPath, const wchar_t *dataPath, const wchar_t *debPath);

	// Returns the value of the Nth directory root. For example, if an application
	// calls AddDirRoot twice, then the NumDirRoots property would have a value of 2,
	// and GetDirRoot(0) would return the path passed to AddDirRoot in the 1st call,
	// and GetDirRoot(1) would return the directory path in the 2nd call to AddDirRoot.
	bool GetDirRoot(int index, CkString &outStr);
	// Returns the value of the Nth directory root. For example, if an application
	// calls AddDirRoot twice, then the NumDirRoots property would have a value of 2,
	// and GetDirRoot(0) would return the path passed to AddDirRoot in the 1st call,
	// and GetDirRoot(1) would return the directory path in the 2nd call to AddDirRoot.
	const wchar_t *getDirRoot(int index);
	// Returns the value of the Nth directory root. For example, if an application
	// calls AddDirRoot twice, then the NumDirRoots property would have a value of 2,
	// and GetDirRoot(0) would return the path passed to AddDirRoot in the 1st call,
	// and GetDirRoot(1) would return the directory path in the 2nd call to AddDirRoot.
	const wchar_t *dirRoot(int index);

	// Scans a TAR archive and returns XML detailing the files and directories found
	// within the TAR.
	bool ListXml(const wchar_t *tarPath, CkString &outStr);
	// Scans a TAR archive and returns XML detailing the files and directories found
	// within the TAR.
	const wchar_t *listXml(const wchar_t *tarPath);

	// Creates an asynchronous task to call the ListXml method with the arguments
	// provided.
	// The caller is responsible for deleting the object returned by this method.
	CkTaskW *ListXmlAsync(const wchar_t *tarPath);

	// Loads the caller of the task's async method.
	bool LoadTaskCaller(CkTaskW &task);

	// Extracts the files and directories from a TAR archive, reconstructing the
	// directory tree(s) in the local filesystem. The files are extracted to the
	// directory specified by the UntarFromDir property. Returns the number of files
	// and directories extracted, or -1 for failure.
	int Untar(const wchar_t *tarPath);

	// Creates an asynchronous task to call the Untar method with the arguments
	// provided.
	// The caller is responsible for deleting the object returned by this method.
	CkTaskW *UntarAsync(const wchar_t *tarPath);

	// Extracts the files and directories from a tar.bz2 (or tar.bzip2) archive,
	// reconstructing the directory tree(s) in the local filesystem. The files are
	// extracted to the directory specified by the UntarFromDir property.
	bool UntarBz2(const wchar_t *tarPath);

	// Creates an asynchronous task to call the UntarBz2 method with the arguments
	// provided.
	// The caller is responsible for deleting the object returned by this method.
	CkTaskW *UntarBz2Async(const wchar_t *tarPath);

	// Untars the first file matching the matchPattern into bd.
	bool UntarFirstMatchingToBd(const wchar_t *tarPath, const wchar_t *matchPattern, CkBinDataW &bd);

	// Memory-to-memory untar. The first file matching the matchPattern is extracted and
	// returned.
	bool UntarFirstMatchingToMemory(CkByteData &tarFileBytes, const wchar_t *matchPattern, CkByteData &outBytes);

	// Extracts the files and directories from an in-memory TAR archive, reconstructing
	// the directory tree(s) in the local filesystem. The files are extracted to the
	// directory specified by the UntarFromDir property. Returns the number of files
	// and directories extracted, or -1 for failure.
	int UntarFromMemory(CkByteData &tarFileBytes);

	// Creates an asynchronous task to call the UntarFromMemory method with the
	// arguments provided.
	// The caller is responsible for deleting the object returned by this method.
	CkTaskW *UntarFromMemoryAsync(CkByteData &tarFileBytes);

	// Extracts the files and directories from a tar.gz (or tar.gzip) archive,
	// reconstructing the directory tree(s) in the local filesystem. The files are
	// extracted to the directory specified by the UntarFromDir property.
	bool UntarGz(const wchar_t *tarPath);

	// Creates an asynchronous task to call the UntarGz method with the arguments
	// provided.
	// The caller is responsible for deleting the object returned by this method.
	CkTaskW *UntarGzAsync(const wchar_t *tarPath);

	// Extracts the files and directories from a tar.Z archive, reconstructing the
	// directory tree(s) in the local filesystem. The files are extracted to the
	// directory specified by the UntarFromDir property.
	bool UntarZ(const wchar_t *tarPath);

	// Creates an asynchronous task to call the UntarZ method with the arguments
	// provided.
	// The caller is responsible for deleting the object returned by this method.
	CkTaskW *UntarZAsync(const wchar_t *tarPath);

	// Verifies that a TAR archive is valid. This method opens the TAR archive and
	// scans the entire file by walking the TAR headers. Returns true if no errors
	// were found. Otherwise returns false.
	bool VerifyTar(const wchar_t *tarPath);

	// Creates an asynchronous task to call the VerifyTar method with the arguments
	// provided.
	// The caller is responsible for deleting the object returned by this method.
	CkTaskW *VerifyTarAsync(const wchar_t *tarPath);

	// Writes a TAR archive. The directory trees previously added by calling AddDirRoot
	// one or more times are included in the output TAR archive.
	bool WriteTar(const wchar_t *tarPath);

	// Creates an asynchronous task to call the WriteTar method with the arguments
	// provided.
	// The caller is responsible for deleting the object returned by this method.
	CkTaskW *WriteTarAsync(const wchar_t *tarPath);

	// Writes a .tar.bz2 compressed TAR archive. The directory trees previously added
	// by calling AddDirRoot one or more times are included in the output file.
	bool WriteTarBz2(const wchar_t *bz2Path);

	// Creates an asynchronous task to call the WriteTarBz2 method with the arguments
	// provided.
	// The caller is responsible for deleting the object returned by this method.
	CkTaskW *WriteTarBz2Async(const wchar_t *bz2Path);

	// Writes a .tar.gz (also known as .tgz) compressed TAR archive. The directory
	// trees previously added by calling AddDirRoot one or more times are included in
	// the output file.
	bool WriteTarGz(const wchar_t *gzPath);

	// Creates an asynchronous task to call the WriteTarGz method with the arguments
	// provided.
	// The caller is responsible for deleting the object returned by this method.
	CkTaskW *WriteTarGzAsync(const wchar_t *gzPath);





	// END PUBLIC INTERFACE


};
#if !defined(__sun__) && !defined(__sun)
#pragma pack (pop)
#endif
	
#endif
