#ifndef _RAR_UI_
#define _RAR_UI_
enum UIMESSAGE_CODE { … };
enum UIASKREP_FLAGS { … };
enum UIASKREP_RESULT { … };
UIASKREP_RESULT uiAskReplace(std::wstring &Name,int64 FileSize,RarTime *FileTime,uint Flags);
UIASKREP_RESULT uiAskReplaceEx(CommandData *Cmd,std::wstring &Name,int64 FileSize,RarTime *FileTime,uint Flags);
void uiInit(SOUND_NOTIFY_MODE Sound);
void uiStartArchiveExtract(bool Extract,const std::wstring &ArcName);
bool uiStartFileExtract(const std::wstring &FileName,bool Extract,bool Test,bool Skip);
void uiExtractProgress(int64 CurFileSize,int64 TotalFileSize,int64 CurSize,int64 TotalSize);
void uiProcessProgress(const char *Command,int64 CurSize,int64 TotalSize);
enum UIPASSWORD_TYPE
{ … };
bool uiGetPassword(UIPASSWORD_TYPE Type,const std::wstring &FileName,SecPassword *Password,CheckPassword *CheckPwd);
bool uiIsGlobalPasswordSet();
enum UIALARM_TYPE { … };
void uiAlarm(UIALARM_TYPE Type);
void uiEolAfterMsg();
bool uiAskNextVolume(std::wstring &VolName);
#if !defined(SILENT) && !defined(SFX_MODULE)
void uiAskRepeatRead(const std::wstring &FileName,bool &Ignore,bool &All,bool &Retry,bool &Quit);
#endif
bool uiAskRepeatWrite(const std::wstring &FileName,bool DiskFull);
bool uiDictLimit(CommandData *Cmd,const std::wstring &FileName,uint64 DictSize,uint64 MaxDictSize);
#ifndef SFX_MODULE
const wchar *uiGetMonthName(uint Month);
#endif
class uiMsgStore
{ … };
inline void uiMsgBase(uiMsgStore &Store)
{ … }
template<class T1,class... TN> void uiMsgBase(uiMsgStore &Store,T1&& a1,TN&&... aN)
{ … }
template<class... TN> void uiMsg(UIMESSAGE_CODE Code,TN&&... aN)
{ … }
#endif