Artifact Content

Not logged in

Artifact c407465455d14dd7011548822622f6b8c977b602


#ifndef AFX_ARCACE_H__84B9CB87_29F7_428D_A3E7_F239213B127C__INCLUDED_
#define AFX_ARCACE_H__84B9CB87_29F7_428D_A3E7_F239213B127C__INCLUDED_

#include "Archiver.h"
#include "SubDlg.h"

#include "unacedef.h"

class CArcAce : public CArchiver
{
public: //-- CArchiver  --------------------------------

	CArcAce() : CArchiver("ace."), hDLL( NULL ) {}
	virtual ~CArcAce()
	{
		if(hDLL) 
			::FreeLibrary(hDLL);
	}
private:
	int  v_load();
	bool v_ver( kiStr& str );
	bool v_check( const kiPath& aname );
	int  v_contents( const kiPath& aname, kiPath& dname );
	int  v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files );
	bool v_list( const arcname& aname, aflArray& files );
	kiStr v_name(const char*) const { return "Unace32"; }

private: //-- UnAceV2.DLL  ------------------------------

	HINSTANCE hDLL;
	static int __stdcall callback_error( pACEErrorCallbackProcStruc Error );
	static int __stdcall callback_request( pACERequestCallbackProcStruc Request );
	static int __stdcall callback_state( pACEStateCallbackProcStruc State );
	static int __stdcall callback_info( pACEInfoCallbackProcStruc Info );
	bool listup( tACEFileDataStruc& f );
	aflArray* list;
	CArcProgressDlg* dlg;
	CArcPathCheckDlg* pathCheck;
	char pwdBuf[100];
	const char* m_aname;
	int aCnt;
	kiPath* dName;
	bool m_bCanceled;

private: //-- UnAce.h ---------------------------------------

	// API
	typedef int (__stdcall *FI)( pACEInitDllStruc );
	typedef int (__stdcall *FR)( LPSTR, pACEReadArchiveDataStruc );
	typedef int (__stdcall *FL)( LPSTR, pACEListStruc );
	typedef int (__stdcall *FT)( LPSTR, pACETestStruc );
	typedef int (__stdcall *FE)( LPSTR, pACEExtractStruc );
	FI aceInit; FR aceHead; FL aceList; FT aceTest; FE aceExtr;
};

#endif