From 80f277aa7f0f26fc83dafa2d53feb966173250f5 Mon Sep 17 00:00:00 2001 From: yuanyuanxiang <962914132@qq.com> Date: Thu, 6 Feb 2025 03:34:57 +0800 Subject: [PATCH] Move compress libraries to one place --- 2019Remote.sln | 25 +- client/ClientDll_vs2015.vcxproj | 79 +- client/TalkManager.cpp | 2 +- client/TalkManager.h | 2 +- client/TestRun_vs2015.vcxproj | 76 +- client/ghost_vs2015.vcxproj | 78 +- {client => compress}/lz4/lz4.h | 0 {client => compress}/lz4/lz4.lib | Bin {client => compress/zlib}/zconf.h | 0 {client => compress/zlib}/zlib.h | 0 {client => compress/zlib}/zlib.lib | Bin {client => compress}/zstd/zstd.h | 0 {client => compress}/zstd/zstd.lib | Bin server/2015Remote/2015Remote_vs2015.vcxproj | 103 +- server/2015Remote/FileManagerDlg.cpp | 2 +- server/2015Remote/FileManagerDlg.h | 2 +- server/2015Remote/IOCPServer.cpp | 2 +- server/2015Remote/ScreenSpyDlg.cpp | 34 +- server/2015Remote/lz4/lz4.h | 631 ---- server/2015Remote/lz4/lz4.lib | Bin 314172 -> 0 bytes server/2015Remote/zconf.h | 545 ---- server/2015Remote/zlib.h | 1938 ------------ server/2015Remote/zlib.lib | Bin 116514 -> 0 bytes server/2015Remote/zstd/zstd.h | 3089 ------------------- server/2015Remote/zstd/zstd.lib | Bin 919358 -> 0 bytes 25 files changed, 365 insertions(+), 6243 deletions(-) rename {client => compress}/lz4/lz4.h (100%) rename {client => compress}/lz4/lz4.lib (100%) rename {client => compress/zlib}/zconf.h (100%) rename {client => compress/zlib}/zlib.h (100%) rename {client => compress/zlib}/zlib.lib (100%) rename {client => compress}/zstd/zstd.h (100%) rename {client => compress}/zstd/zstd.lib (100%) delete mode 100644 server/2015Remote/lz4/lz4.h delete mode 100644 server/2015Remote/lz4/lz4.lib delete mode 100644 server/2015Remote/zconf.h delete mode 100644 server/2015Remote/zlib.h delete mode 100644 server/2015Remote/zlib.lib delete mode 100644 server/2015Remote/zstd/zstd.h delete mode 100644 server/2015Remote/zstd/zstd.lib diff --git a/2019Remote.sln b/2019Remote.sln index 3909879..21fbbbc 100644 --- a/2019Remote.sln +++ b/2019Remote.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25420.1 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.35425.106 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Yama", "server\2015Remote\2015Remote_vs2015.vcxproj", "{D58E96CD-C41F-4DD1-9502-EF1CB7AC65E5}" EndProject @@ -16,28 +16,49 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ServerDll", "client\ClientD EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 + Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D58E96CD-C41F-4DD1-9502-EF1CB7AC65E5}.Debug|x64.ActiveCfg = Debug|x64 + {D58E96CD-C41F-4DD1-9502-EF1CB7AC65E5}.Debug|x64.Build.0 = Debug|x64 {D58E96CD-C41F-4DD1-9502-EF1CB7AC65E5}.Debug|x86.ActiveCfg = Debug|Win32 {D58E96CD-C41F-4DD1-9502-EF1CB7AC65E5}.Debug|x86.Build.0 = Debug|Win32 + {D58E96CD-C41F-4DD1-9502-EF1CB7AC65E5}.Release|x64.ActiveCfg = Release|x64 + {D58E96CD-C41F-4DD1-9502-EF1CB7AC65E5}.Release|x64.Build.0 = Release|x64 {D58E96CD-C41F-4DD1-9502-EF1CB7AC65E5}.Release|x86.ActiveCfg = Release|Win32 {D58E96CD-C41F-4DD1-9502-EF1CB7AC65E5}.Release|x86.Build.0 = Release|Win32 + {3F756E52-23C2-4EE4-A184-37CF788D50A7}.Debug|x64.ActiveCfg = Debug|x64 + {3F756E52-23C2-4EE4-A184-37CF788D50A7}.Debug|x64.Build.0 = Debug|x64 {3F756E52-23C2-4EE4-A184-37CF788D50A7}.Debug|x86.ActiveCfg = Debug|Win32 {3F756E52-23C2-4EE4-A184-37CF788D50A7}.Debug|x86.Build.0 = Debug|Win32 + {3F756E52-23C2-4EE4-A184-37CF788D50A7}.Release|x64.ActiveCfg = Release|x64 + {3F756E52-23C2-4EE4-A184-37CF788D50A7}.Release|x64.Build.0 = Release|x64 {3F756E52-23C2-4EE4-A184-37CF788D50A7}.Release|x86.ActiveCfg = Release|Win32 {3F756E52-23C2-4EE4-A184-37CF788D50A7}.Release|x86.Build.0 = Release|Win32 + {B5D7F0E5-E735-4B17-91AE-866CE7E6ABD3}.Debug|x64.ActiveCfg = Debug|x64 + {B5D7F0E5-E735-4B17-91AE-866CE7E6ABD3}.Debug|x64.Build.0 = Debug|x64 {B5D7F0E5-E735-4B17-91AE-866CE7E6ABD3}.Debug|x86.ActiveCfg = Debug|Win32 {B5D7F0E5-E735-4B17-91AE-866CE7E6ABD3}.Debug|x86.Build.0 = Debug|Win32 + {B5D7F0E5-E735-4B17-91AE-866CE7E6ABD3}.Release|x64.ActiveCfg = Release|x64 + {B5D7F0E5-E735-4B17-91AE-866CE7E6ABD3}.Release|x64.Build.0 = Release|x64 {B5D7F0E5-E735-4B17-91AE-866CE7E6ABD3}.Release|x86.ActiveCfg = Release|Win32 {B5D7F0E5-E735-4B17-91AE-866CE7E6ABD3}.Release|x86.Build.0 = Release|Win32 + {BEBAF888-532D-40D3-A8DD-DDAAF69F49AA}.Debug|x64.ActiveCfg = Debug|x64 + {BEBAF888-532D-40D3-A8DD-DDAAF69F49AA}.Debug|x64.Build.0 = Debug|x64 {BEBAF888-532D-40D3-A8DD-DDAAF69F49AA}.Debug|x86.ActiveCfg = Debug|Win32 {BEBAF888-532D-40D3-A8DD-DDAAF69F49AA}.Debug|x86.Build.0 = Debug|Win32 + {BEBAF888-532D-40D3-A8DD-DDAAF69F49AA}.Release|x64.ActiveCfg = Release|x64 + {BEBAF888-532D-40D3-A8DD-DDAAF69F49AA}.Release|x64.Build.0 = Release|x64 {BEBAF888-532D-40D3-A8DD-DDAAF69F49AA}.Release|x86.ActiveCfg = Release|Win32 {BEBAF888-532D-40D3-A8DD-DDAAF69F49AA}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B1D72004-04EB-4DFF-879C-BCB05C75DFA4} + EndGlobalSection EndGlobal diff --git a/client/ClientDll_vs2015.vcxproj b/client/ClientDll_vs2015.vcxproj index ef43d7e..45ac7ef 100644 --- a/client/ClientDll_vs2015.vcxproj +++ b/client/ClientDll_vs2015.vcxproj @@ -5,10 +5,18 @@ Debug Win32 + + Debug + x64 + Release Win32 + + Release + x64 + {BEBAF888-532D-40D3-A8DD-DDAAF69F49AA} @@ -24,6 +32,13 @@ MultiByte false + + DynamicLibrary + true + v142 + MultiByte + false + DynamicLibrary false @@ -31,27 +46,64 @@ true MultiByte + + DynamicLibrary + false + v142 + true + MultiByte + + + + + + + - ./d3d;$(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(IncludePath) - $(WindowsSDK_LibraryPath_x86);$(VLDPATH)\lib\Win32\;$(LibraryPath) + ./d3d;$(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(SolutionDir)compress;$(IncludePath) + $(VLDPATH)\lib\Win32\;$(SolutionDir)compress;$(LibraryPath) $(Configuration)\dll + + ./d3d;$(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(IncludePath) + $(VLDPATH)\lib\Win64\;$(LibraryPath) + - $(WindowsSDK_LibraryPath_x86);$(VLDPATH)\lib\Win32\;$(LibraryPath) - ./d3d;$(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(IncludePath) + $(VLDPATH)\lib\Win32\;$(SolutionDir)compress;$(LibraryPath) + ./d3d;$(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(SolutionDir)compress;$(IncludePath) $(Configuration)\dll + + $(WindowsSDK_LibraryPath_x86);$(VLDPATH)\lib\Win32\;$(LibraryPath) + ./d3d;$(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(IncludePath) + + + Level3 + Disabled + $(SolutionDir);./;$(WindowsSdkDir_81)Include\um;$(WindowsSdkDir_81)Include\shared;%(AdditionalIncludeDirectories) + MultiThreadedDebug + ZLIB_WINAPI;%(PreprocessorDefinitions) + true + false + + + true + zlib\zlib.lib;%(AdditionalDependencies) + libcmt.lib + + + Level3 Disabled @@ -68,6 +120,25 @@ + + Level3 + MaxSpeed + true + true + MultiThreaded + $(SolutionDir);./;$(WindowsSdkDir_81)Include\um;$(WindowsSdkDir_81)Include\shared;%(AdditionalIncludeDirectories) + ZLIB_WINAPI;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + + + true + true + true + zlib\zlib.lib;%(AdditionalDependencies) + /SAFESEH:NO %(AdditionalOptions) + + + Level3 MaxSpeed diff --git a/client/TalkManager.cpp b/client/TalkManager.cpp index 5e5096f..4136159 100644 --- a/client/TalkManager.cpp +++ b/client/TalkManager.cpp @@ -62,7 +62,7 @@ VOID CTalkManager::OnReceive(PBYTE szBuffer, ULONG ulLength) } } -int CALLBACK CTalkManager::DialogProc(HWND hDlg, unsigned int uMsg, +INT_PTR CALLBACK CTalkManager::DialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) diff --git a/client/TalkManager.h b/client/TalkManager.h index 787cd31..8c57ea3 100644 --- a/client/TalkManager.h +++ b/client/TalkManager.h @@ -18,7 +18,7 @@ public: virtual ~CTalkManager(); VOID OnReceive(PBYTE szBuffer, ULONG ulLength); - static int CALLBACK DialogProc(HWND hDlg, unsigned int uMsg, + static INT_PTR CALLBACK DialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); static VOID OnInitDialog(HWND hDlg); diff --git a/client/TestRun_vs2015.vcxproj b/client/TestRun_vs2015.vcxproj index 49db2a5..bc5ae77 100644 --- a/client/TestRun_vs2015.vcxproj +++ b/client/TestRun_vs2015.vcxproj @@ -5,10 +5,18 @@ Debug Win32 + + Debug + x64 + Release Win32 + + Release + x64 + {B5D7F0E5-E735-4B17-91AE-866CE7E6ABD3} @@ -23,6 +31,12 @@ v142 MultiByte + + Application + true + v142 + MultiByte + Application false @@ -30,26 +44,47 @@ true MultiByte + + Application + false + v142 + true + MultiByte + + + + + + + - $(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(IncludePath) - $(WindowsSDK_LibraryPath_x86);$(VLDPATH)\lib\Win32\;$(LibraryPath) + $(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(SolutionDir)compress;$(IncludePath) + $(VLDPATH)\lib\Win32\;$(SolutionDir)compress;$(LibraryPath) $(Configuration)\test + + $(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(IncludePath) + $(VLDPATH)\lib\Win64\;$(LibraryPath) + - $(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(IncludePath) - $(WindowsSDK_LibraryPath_x86);$(VLDPATH)\lib\Win32\;$(LibraryPath) + $(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(SolutionDir)compress;$(IncludePath) + $(VLDPATH)\lib\Win32\;$(SolutionDir)compress;$(LibraryPath) $(Configuration)\test + + $(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(IncludePath) + $(WindowsSDK_LibraryPath_x86);$(VLDPATH)\lib\Win32\;$(LibraryPath) + Level3 @@ -64,6 +99,20 @@ Console + + + Level3 + Disabled + MultiThreadedDebug + true + false + $(SolutionDir);%(AdditionalIncludeDirectories) + + + true + Console + + Level3 @@ -83,6 +132,25 @@ mainCRTStartup + + + Level3 + MaxSpeed + true + true + MultiThreaded + true + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(SolutionDir);%(AdditionalIncludeDirectories) + + + true + true + true + Windows + mainCRTStartup + + diff --git a/client/ghost_vs2015.vcxproj b/client/ghost_vs2015.vcxproj index bc82c27..2568d3b 100644 --- a/client/ghost_vs2015.vcxproj +++ b/client/ghost_vs2015.vcxproj @@ -5,10 +5,18 @@ Debug Win32 + + Debug + x64 + Release Win32 + + Release + x64 + {3F756E52-23C2-4EE4-A184-37CF788D50A7} @@ -24,6 +32,13 @@ MultiByte false + + Application + true + v142 + MultiByte + false + Application false @@ -31,27 +46,67 @@ true MultiByte + + Application + false + v142 + true + MultiByte + + + + + + + $(Configuration)\ghost + ./d3d;$(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(SolutionDir)compress;$(IncludePath) + $(VLDPATH)\lib\Win32\;$(SolutionDir)compress;$(LibraryPath) + + ./d3d;$(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(IncludePath) - $(WindowsSDK_LibraryPath_x86);$(VLDPATH)\lib\Win32\;$(LibraryPath) + $(VLDPATH)\lib\Win64\;$(LibraryPath) $(Configuration)\ghost + ./d3d;$(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(SolutionDir)compress;$(IncludePath) + $(VLDPATH)\lib\Win32\;$(SolutionDir)compress;$(LibraryPath) + + ./d3d;$(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(IncludePath) $(WindowsSDK_LibraryPath_x86);$(VLDPATH)\lib\Win32\;$(LibraryPath) + + Level3 + Disabled + $(SolutionDir);./;$(WindowsSdkDir_81)Include\um;$(WindowsSdkDir_81)Include\shared;%(AdditionalIncludeDirectories) + MultiThreadedDebug + _CONSOLE;ZLIB_WINAPI;%(PreprocessorDefinitions) + true + false + + + true + zlib\zlib.lib;%(AdditionalDependencies) + libcmt.lib + + + Console + + + Level3 Disabled @@ -71,6 +126,27 @@ + + Level3 + MaxSpeed + true + true + MultiThreaded + $(SolutionDir);./;$(WindowsSdkDir_81)Include\um;$(WindowsSdkDir_81)Include\shared;%(AdditionalIncludeDirectories) + _CONSOLE;ZLIB_WINAPI;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + + + true + true + true + zlib\zlib.lib;%(AdditionalDependencies) + /SAFESEH:NO %(AdditionalOptions) + Windows + mainCRTStartup + + + Level3 MaxSpeed diff --git a/client/lz4/lz4.h b/compress/lz4/lz4.h similarity index 100% rename from client/lz4/lz4.h rename to compress/lz4/lz4.h diff --git a/client/lz4/lz4.lib b/compress/lz4/lz4.lib similarity index 100% rename from client/lz4/lz4.lib rename to compress/lz4/lz4.lib diff --git a/client/zconf.h b/compress/zlib/zconf.h similarity index 100% rename from client/zconf.h rename to compress/zlib/zconf.h diff --git a/client/zlib.h b/compress/zlib/zlib.h similarity index 100% rename from client/zlib.h rename to compress/zlib/zlib.h diff --git a/client/zlib.lib b/compress/zlib/zlib.lib similarity index 100% rename from client/zlib.lib rename to compress/zlib/zlib.lib diff --git a/client/zstd/zstd.h b/compress/zstd/zstd.h similarity index 100% rename from client/zstd/zstd.h rename to compress/zstd/zstd.h diff --git a/client/zstd/zstd.lib b/compress/zstd/zstd.lib similarity index 100% rename from client/zstd/zstd.lib rename to compress/zstd/zstd.lib diff --git a/server/2015Remote/2015Remote_vs2015.vcxproj b/server/2015Remote/2015Remote_vs2015.vcxproj index 921c1dd..5047a54 100644 --- a/server/2015Remote/2015Remote_vs2015.vcxproj +++ b/server/2015Remote/2015Remote_vs2015.vcxproj @@ -5,10 +5,18 @@ Debug Win32 + + Debug + x64 + Release Win32 + + Release + x64 + {D58E96CD-C41F-4DD1-9502-EF1CB7AC65E5} @@ -25,6 +33,13 @@ Static v142 + + Application + true + MultiByte + Static + v142 + Application false @@ -33,22 +48,46 @@ Static v142 + + Application + false + true + MultiByte + Static + v142 + + + + + + + + true + $(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(SolutionDir)compress;$(IncludePath) + $(VLDPATH)\lib\Win32\;$(SolutionDir)compress;$(LibraryPath) + + true $(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(IncludePath) - $(WindowsSDK_LibraryPath_x86);$(VLDPATH)\lib\Win32\;$(LibraryPath) + $(VLDPATH)\lib\Win64\;$(LibraryPath) + false + $(VLDPATH)\lib\Win32\;$(SolutionDir)compress;$(LibraryPath) + $(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(SolutionDir)compress;$(IncludePath) + + false $(WindowsSDK_LibraryPath_x86);$(VLDPATH)\lib\Win32\;$(LibraryPath) $(WindowsSDK_IncludePath);$(VLDPATH)\include\;$(IncludePath) @@ -66,7 +105,7 @@ Windows true - zlib.lib;%(AdditionalDependencies) + zlib\zlib.lib;%(AdditionalDependencies) LIBCMT.lib;%(IgnoreSpecificDefaultLibraries) @@ -80,6 +119,32 @@ $(IntDir);%(AdditionalIncludeDirectories) + + + Use + Level3 + Disabled + WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) + true + false + $(SolutionDir);%(AdditionalIncludeDirectories) + + + Windows + true + zlib.lib;%(AdditionalDependencies) + LIBCMT.lib;%(IgnoreSpecificDefaultLibraries) + + + false + _DEBUG;%(PreprocessorDefinitions) + + + 0x0804 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + Level3 @@ -97,7 +162,7 @@ true true true - zlib.lib + zlib\zlib.lib;%(AdditionalDependencies) /SAFESEH:NO %(AdditionalOptions) @@ -111,6 +176,36 @@ $(IntDir);%(AdditionalIncludeDirectories) + + + Level3 + Use + MinSpace + true + WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions) + true + Size + true + $(SolutionDir);%(AdditionalIncludeDirectories) + + + Windows + true + true + true + zlib.lib + /SAFESEH:NO %(AdditionalOptions) + + + false + NDEBUG;%(PreprocessorDefinitions) + + + 0x0804 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + @@ -186,7 +281,9 @@ Create + Create Create + Create diff --git a/server/2015Remote/FileManagerDlg.cpp b/server/2015Remote/FileManagerDlg.cpp index b4a24cd..414704d 100644 --- a/server/2015Remote/FileManagerDlg.cpp +++ b/server/2015Remote/FileManagerDlg.cpp @@ -768,7 +768,7 @@ BOOL CFileManagerDlg::PreTranslateMessage(MSG* pMsg) return CDialog::PreTranslateMessage(pMsg); } -void CFileManagerDlg::OnTimer(UINT nIDEvent) +void CFileManagerDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: Add your message handler code here and/or call default m_ProgressCtrl->StepIt(); diff --git a/server/2015Remote/FileManagerDlg.h b/server/2015Remote/FileManagerDlg.h index 533b936..1724030 100644 --- a/server/2015Remote/FileManagerDlg.h +++ b/server/2015Remote/FileManagerDlg.h @@ -148,7 +148,7 @@ protected: afx_msg BOOL OnToolTipNotify(UINT id, NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnMouseMove(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); - afx_msg void OnTimer(UINT nIDEvent); + afx_msg void OnTimer(UINT_PTR nIDEvent); afx_msg void OnClose(); afx_msg void OnDblclkListRemote(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnLocalPrev(); diff --git a/server/2015Remote/IOCPServer.cpp b/server/2015Remote/IOCPServer.cpp index f107744..91b94ec 100644 --- a/server/2015Remote/IOCPServer.cpp +++ b/server/2015Remote/IOCPServer.cpp @@ -327,7 +327,7 @@ DWORD IOCPServer::WorkThreadProc(LPVOID lParam) BOOL bOk = GetQueuedCompletionStatus( hCompletionPort, &dwTrans, - (LPDWORD)&ContextObject, + (PULONG_PTR)&ContextObject, &Overlapped, INFINITE); STOP_TICK; DWORD dwIOError = GetLastError(); diff --git a/server/2015Remote/ScreenSpyDlg.cpp b/server/2015Remote/ScreenSpyDlg.cpp index 3d69e1e..7dd8c5c 100644 --- a/server/2015Remote/ScreenSpyDlg.cpp +++ b/server/2015Remote/ScreenSpyDlg.cpp @@ -6,6 +6,7 @@ #include "ScreenSpyDlg.h" #include "afxdialogex.h" #include +#include // CScreenSpyDlg 对话框 @@ -238,7 +239,11 @@ VOID CScreenSpyDlg::DrawNextScreenDiff(void) { bChange = TRUE; if (m_bIsCtrl && !m_bIsTraceCursor)//替换指定窗口所属类的WNDCLASSEX结构 - SetClassLong(m_hWnd, GCL_HCURSOR, (LONG)m_CursorInfo.getCursorHandle(m_bCursorIndex == (BYTE)-1 ? 1 : m_bCursorIndex)); +#ifdef _WIN64 + SetClassLongPtrA(m_hWnd, GCLP_HCURSOR, (ULONG_PTR)m_CursorInfo.getCursorHandle(m_bCursorIndex == (BYTE)-1 ? 1 : m_bCursorIndex)); +#else + SetClassLongA(m_hWnd, GCL_HCURSOR, (LONG)m_CursorInfo.getCursorHandle(m_bCursorIndex == (BYTE)-1 ? 1 : m_bCursorIndex)); +#endif } // 屏幕是否变化 @@ -247,26 +252,13 @@ VOID CScreenSpyDlg::DrawNextScreenDiff(void) bChange = TRUE; } - //lodsd指令从ESI指向的内存位置4个字节内容放入EAX中并且下移4 - //movsb指令字节传送数据,通过SI和DI这两个寄存器控制字符串的源地址和目标地址 - //m_rectBuffer [0002 esi0002 esi000A 000C] [][]edi[][][][][][][][][][][][][][][][][] - __asm - { - mov ebx, [NextScreenLength] //ebx 16 - mov esi, [NextScreenData] - jmp CopyEnd -CopyNextBlock: - mov edi, [FirstScreenData] - lodsd // 把lpNextScreen的第一个双字节,放到eax中,就是DIB中改变区域的偏移 - add edi, eax // lpFirstScreen偏移eax - lodsd // 把lpNextScreen的下一个双字节,放到eax中, 就是改变区域的大小 - mov ecx, eax - sub ebx, 8 // ebx 减去 两个dword - sub ebx, ecx // ebx 减去DIB数据的大小 - rep movsb -CopyEnd: - cmp ebx, 0 // 是否写入完毕 - jnz CopyNextBlock + BYTE algorithm = m_ContextObject->InDeCompressedBuffer.GetBYTE(1); + LPBYTE dst = (LPBYTE)FirstScreenData, p = (LPBYTE)NextScreenData; + for (LPBYTE end = p + NextScreenLength; p < end; ) { + ULONG ulCount = *(LPDWORD(p + sizeof(ULONG))); + memcpy(dst + *(LPDWORD)p, p + 2 * sizeof(ULONG), ulCount); + + p += 2 * sizeof(ULONG) + ulCount; } if (bChange) diff --git a/server/2015Remote/lz4/lz4.h b/server/2015Remote/lz4/lz4.h deleted file mode 100644 index 059ef7c..0000000 --- a/server/2015Remote/lz4/lz4.h +++ /dev/null @@ -1,631 +0,0 @@ -/* - * LZ4 - Fast LZ compression algorithm - * Header File - * Copyright (C) 2011-present, Yann Collet. - - BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following disclaimer - in the documentation and/or other materials provided with the - distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - You can contact the author at : - - LZ4 homepage : http://www.lz4.org - - LZ4 source repository : https://github.com/lz4/lz4 -*/ -#if defined (__cplusplus) -extern "C" { -#endif - -#ifndef LZ4_H_2983827168210 -#define LZ4_H_2983827168210 - -/* --- Dependency --- */ -#include /* size_t */ - - -/** - Introduction - - LZ4 is lossless compression algorithm, providing compression speed at 500 MB/s per core, - scalable with multi-cores CPU. It features an extremely fast decoder, with speed in - multiple GB/s per core, typically reaching RAM speed limits on multi-core systems. - - The LZ4 compression library provides in-memory compression and decompression functions. - Compression can be done in: - - a single step (described as Simple Functions) - - a single step, reusing a context (described in Advanced Functions) - - unbounded multiple steps (described as Streaming compression) - - lz4.h provides block compression functions. It gives full buffer control to user. - Decompressing an lz4-compressed block also requires metadata (such as compressed size). - Each application is free to encode such metadata in whichever way it wants. - - An additional format, called LZ4 frame specification (doc/lz4_Frame_format.md), - take care of encoding standard metadata alongside LZ4-compressed blocks. - Frame format is required for interoperability. - It is delivered through a companion API, declared in lz4frame.h. -*/ - -/*^*************************************************************** -* Export parameters -*****************************************************************/ -/* -* LZ4_DLL_EXPORT : -* Enable exporting of functions when building a Windows DLL -* LZ4LIB_VISIBILITY : -* Control library symbols visibility. -*/ -#ifndef LZ4LIB_VISIBILITY -# if defined(__GNUC__) && (__GNUC__ >= 4) -# define LZ4LIB_VISIBILITY __attribute__ ((visibility ("default"))) -# else -# define LZ4LIB_VISIBILITY -# endif -#endif -#if defined(LZ4_DLL_EXPORT) && (LZ4_DLL_EXPORT==1) -# define LZ4LIB_API __declspec(dllexport) LZ4LIB_VISIBILITY -#elif defined(LZ4_DLL_IMPORT) && (LZ4_DLL_IMPORT==1) -# define LZ4LIB_API __declspec(dllimport) LZ4LIB_VISIBILITY /* It isn't required but allows to generate better code, saving a function pointer load from the IAT and an indirect jump.*/ -#else -# define LZ4LIB_API LZ4LIB_VISIBILITY -#endif - -/*------ Version ------*/ -#define LZ4_VERSION_MAJOR 1 /* for breaking interface changes */ -#define LZ4_VERSION_MINOR 8 /* for new (non-breaking) interface capabilities */ -#define LZ4_VERSION_RELEASE 3 /* for tweaks, bug-fixes, or development */ - -#define LZ4_VERSION_NUMBER (LZ4_VERSION_MAJOR *100*100 + LZ4_VERSION_MINOR *100 + LZ4_VERSION_RELEASE) - -#define LZ4_LIB_VERSION LZ4_VERSION_MAJOR.LZ4_VERSION_MINOR.LZ4_VERSION_RELEASE -#define LZ4_QUOTE(str) #str -#define LZ4_EXPAND_AND_QUOTE(str) LZ4_QUOTE(str) -#define LZ4_VERSION_STRING LZ4_EXPAND_AND_QUOTE(LZ4_LIB_VERSION) - -LZ4LIB_API int LZ4_versionNumber (void); /**< library version number; useful to check dll version */ -LZ4LIB_API const char* LZ4_versionString (void); /**< library version string; unseful to check dll version */ - - -/*-************************************ -* Tuning parameter -**************************************/ -/*! - * LZ4_MEMORY_USAGE : - * Memory usage formula : N->2^N Bytes (examples : 10 -> 1KB; 12 -> 4KB ; 16 -> 64KB; 20 -> 1MB; etc.) - * Increasing memory usage improves compression ratio - * Reduced memory usage may improve speed, thanks to cache effect - * Default value is 14, for 16KB, which nicely fits into Intel x86 L1 cache - */ -#ifndef LZ4_MEMORY_USAGE -# define LZ4_MEMORY_USAGE 14 -#endif - -/*-************************************ -* Simple Functions -**************************************/ -/*! LZ4_compress_default() : - Compresses 'srcSize' bytes from buffer 'src' - into already allocated 'dst' buffer of size 'dstCapacity'. - Compression is guaranteed to succeed if 'dstCapacity' >= LZ4_compressBound(srcSize). - It also runs faster, so it's a recommended setting. - If the function cannot compress 'src' into a more limited 'dst' budget, - compression stops *immediately*, and the function result is zero. - Note : as a consequence, 'dst' content is not valid. - Note 2 : This function is protected against buffer overflow scenarios (never writes outside 'dst' buffer, nor read outside 'source' buffer). - srcSize : max supported value is LZ4_MAX_INPUT_SIZE. - dstCapacity : size of buffer 'dst' (which must be already allocated) - return : the number of bytes written into buffer 'dst' (necessarily <= dstCapacity) - or 0 if compression fails */ -LZ4LIB_API int LZ4_compress_default(const char* src, char* dst, int srcSize, int dstCapacity); - -/*! LZ4_decompress_safe() : - compressedSize : is the exact complete size of the compressed block. - dstCapacity : is the size of destination buffer, which must be already allocated. - return : the number of bytes decompressed into destination buffer (necessarily <= dstCapacity) - If destination buffer is not large enough, decoding will stop and output an error code (negative value). - If the source stream is detected malformed, the function will stop decoding and return a negative result. - This function is protected against malicious data packets. -*/ -LZ4LIB_API int LZ4_decompress_safe (const char* src, char* dst, int compressedSize, int dstCapacity); - - -/*-************************************ -* Advanced Functions -**************************************/ -#define LZ4_MAX_INPUT_SIZE 0x7E000000 /* 2 113 929 216 bytes */ -#define LZ4_COMPRESSBOUND(isize) ((unsigned)(isize) > (unsigned)LZ4_MAX_INPUT_SIZE ? 0 : (isize) + ((isize)/255) + 16) - -/*! -LZ4_compressBound() : - Provides the maximum size that LZ4 compression may output in a "worst case" scenario (input data not compressible) - This function is primarily useful for memory allocation purposes (destination buffer size). - Macro LZ4_COMPRESSBOUND() is also provided for compilation-time evaluation (stack memory allocation for example). - Note that LZ4_compress_default() compresses faster when dstCapacity is >= LZ4_compressBound(srcSize) - inputSize : max supported value is LZ4_MAX_INPUT_SIZE - return : maximum output size in a "worst case" scenario - or 0, if input size is incorrect (too large or negative) -*/ -LZ4LIB_API int LZ4_compressBound(int inputSize); - -/*! -LZ4_compress_fast() : - Same as LZ4_compress_default(), but allows selection of "acceleration" factor. - The larger the acceleration value, the faster the algorithm, but also the lesser the compression. - It's a trade-off. It can be fine tuned, with each successive value providing roughly +~3% to speed. - An acceleration value of "1" is the same as regular LZ4_compress_default() - Values <= 0 will be replaced by ACCELERATION_DEFAULT (currently == 1, see lz4.c). -*/ -LZ4LIB_API int LZ4_compress_fast (const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); - - -/*! -LZ4_compress_fast_extState() : - Same compression function, just using an externally allocated memory space to store compression state. - Use LZ4_sizeofState() to know how much memory must be allocated, - and allocate it on 8-bytes boundaries (using malloc() typically). - Then, provide this buffer as 'void* state' to compression function. -*/ -LZ4LIB_API int LZ4_sizeofState(void); -LZ4LIB_API int LZ4_compress_fast_extState (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); - - -/*! LZ4_compress_destSize() : - * Reverse the logic : compresses as much data as possible from 'src' buffer - * into already allocated buffer 'dst', of size >= 'targetDestSize'. - * This function either compresses the entire 'src' content into 'dst' if it's large enough, - * or fill 'dst' buffer completely with as much data as possible from 'src'. - * note: acceleration parameter is fixed to "default". - * - * *srcSizePtr : will be modified to indicate how many bytes where read from 'src' to fill 'dst'. - * New value is necessarily <= input value. - * @return : Nb bytes written into 'dst' (necessarily <= targetDestSize) - * or 0 if compression fails. -*/ -LZ4LIB_API int LZ4_compress_destSize (const char* src, char* dst, int* srcSizePtr, int targetDstSize); - - -/*! LZ4_decompress_fast() : **unsafe!** - * This function used to be a bit faster than LZ4_decompress_safe(), - * though situation has changed in recent versions, - * and now `LZ4_decompress_safe()` can be as fast and sometimes faster than `LZ4_decompress_fast()`. - * Moreover, LZ4_decompress_fast() is not protected vs malformed input, as it doesn't perform full validation of compressed data. - * As a consequence, this function is no longer recommended, and may be deprecated in future versions. - * It's only remaining specificity is that it can decompress data without knowing its compressed size. - * - * originalSize : is the uncompressed size to regenerate. - * `dst` must be already allocated, its size must be >= 'originalSize' bytes. - * @return : number of bytes read from source buffer (== compressed size). - * If the source stream is detected malformed, the function stops decoding and returns a negative result. - * note : This function requires uncompressed originalSize to be known in advance. - * The function never writes past the output buffer. - * However, since it doesn't know its 'src' size, it may read past the intended input. - * Also, because match offsets are not validated during decoding, - * reads from 'src' may underflow. - * Use this function in trusted environment **only**. - */ -LZ4LIB_API int LZ4_decompress_fast (const char* src, char* dst, int originalSize); - -/*! LZ4_decompress_safe_partial() : - * Decompress an LZ4 compressed block, of size 'srcSize' at position 'src', - * into destination buffer 'dst' of size 'dstCapacity'. - * Up to 'targetOutputSize' bytes will be decoded. - * The function stops decoding on reaching this objective, - * which can boost performance when only the beginning of a block is required. - * - * @return : the number of bytes decoded in `dst` (necessarily <= dstCapacity) - * If source stream is detected malformed, function returns a negative result. - * - * Note : @return can be < targetOutputSize, if compressed block contains less data. - * - * Note 2 : this function features 2 parameters, targetOutputSize and dstCapacity, - * and expects targetOutputSize <= dstCapacity. - * It effectively stops decoding on reaching targetOutputSize, - * so dstCapacity is kind of redundant. - * This is because in a previous version of this function, - * decoding operation would not "break" a sequence in the middle. - * As a consequence, there was no guarantee that decoding would stop at exactly targetOutputSize, - * it could write more bytes, though only up to dstCapacity. - * Some "margin" used to be required for this operation to work properly. - * This is no longer necessary. - * The function nonetheless keeps its signature, in an effort to not break API. - */ -LZ4LIB_API int LZ4_decompress_safe_partial (const char* src, char* dst, int srcSize, int targetOutputSize, int dstCapacity); - - -/*-********************************************* -* Streaming Compression Functions -***********************************************/ -typedef union LZ4_stream_u LZ4_stream_t; /* incomplete type (defined later) */ - -/*! LZ4_createStream() and LZ4_freeStream() : - * LZ4_createStream() will allocate and initialize an `LZ4_stream_t` structure. - * LZ4_freeStream() releases its memory. - */ -LZ4LIB_API LZ4_stream_t* LZ4_createStream(void); -LZ4LIB_API int LZ4_freeStream (LZ4_stream_t* streamPtr); - -/*! LZ4_resetStream() : - * An LZ4_stream_t structure can be allocated once and re-used multiple times. - * Use this function to start compressing a new stream. - */ -LZ4LIB_API void LZ4_resetStream (LZ4_stream_t* streamPtr); - -/*! LZ4_loadDict() : - * Use this function to load a static dictionary into LZ4_stream_t. - * Any previous data will be forgotten, only 'dictionary' will remain in memory. - * Loading a size of 0 is allowed, and is the same as reset. - * @return : dictionary size, in bytes (necessarily <= 64 KB) - */ -LZ4LIB_API int LZ4_loadDict (LZ4_stream_t* streamPtr, const char* dictionary, int dictSize); - -/*! LZ4_compress_fast_continue() : - * Compress 'src' content using data from previously compressed blocks, for better compression ratio. - * 'dst' buffer must be already allocated. - * If dstCapacity >= LZ4_compressBound(srcSize), compression is guaranteed to succeed, and runs faster. - * - * @return : size of compressed block - * or 0 if there is an error (typically, cannot fit into 'dst'). - * - * Note 1 : Each invocation to LZ4_compress_fast_continue() generates a new block. - * Each block has precise boundaries. - * It's not possible to append blocks together and expect a single invocation of LZ4_decompress_*() to decompress them together. - * Each block must be decompressed separately, calling LZ4_decompress_*() with associated metadata. - * - * Note 2 : The previous 64KB of source data is __assumed__ to remain present, unmodified, at same address in memory! - * - * Note 3 : When input is structured as a double-buffer, each buffer can have any size, including < 64 KB. - * Make sure that buffers are separated, by at least one byte. - * This construction ensures that each block only depends on previous block. - * - * Note 4 : If input buffer is a ring-buffer, it can have any size, including < 64 KB. - * - * Note 5 : After an error, the stream status is invalid, it can only be reset or freed. - */ -LZ4LIB_API int LZ4_compress_fast_continue (LZ4_stream_t* streamPtr, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); - -/*! LZ4_saveDict() : - * If last 64KB data cannot be guaranteed to remain available at its current memory location, - * save it into a safer place (char* safeBuffer). - * This is schematically equivalent to a memcpy() followed by LZ4_loadDict(), - * but is much faster, because LZ4_saveDict() doesn't need to rebuild tables. - * @return : saved dictionary size in bytes (necessarily <= maxDictSize), or 0 if error. - */ -LZ4LIB_API int LZ4_saveDict (LZ4_stream_t* streamPtr, char* safeBuffer, int maxDictSize); - - -/*-********************************************** -* Streaming Decompression Functions -* Bufferless synchronous API -************************************************/ -typedef union LZ4_streamDecode_u LZ4_streamDecode_t; /* tracking context */ - -/*! LZ4_createStreamDecode() and LZ4_freeStreamDecode() : - * creation / destruction of streaming decompression tracking context. - * A tracking context can be re-used multiple times. - */ -LZ4LIB_API LZ4_streamDecode_t* LZ4_createStreamDecode(void); -LZ4LIB_API int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream); - -/*! LZ4_setStreamDecode() : - * An LZ4_streamDecode_t context can be allocated once and re-used multiple times. - * Use this function to start decompression of a new stream of blocks. - * A dictionary can optionally be set. Use NULL or size 0 for a reset order. - * Dictionary is presumed stable : it must remain accessible and unmodified during next decompression. - * @return : 1 if OK, 0 if error - */ -LZ4LIB_API int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize); - -/*! LZ4_decoderRingBufferSize() : v1.8.2 - * Note : in a ring buffer scenario (optional), - * blocks are presumed decompressed next to each other - * up to the moment there is not enough remaining space for next block (remainingSize < maxBlockSize), - * at which stage it resumes from beginning of ring buffer. - * When setting such a ring buffer for streaming decompression, - * provides the minimum size of this ring buffer - * to be compatible with any source respecting maxBlockSize condition. - * @return : minimum ring buffer size, - * or 0 if there is an error (invalid maxBlockSize). - */ -LZ4LIB_API int LZ4_decoderRingBufferSize(int maxBlockSize); -#define LZ4_DECODER_RING_BUFFER_SIZE(mbs) (65536 + 14 + (mbs)) /* for static allocation; mbs presumed valid */ - -/*! LZ4_decompress_*_continue() : - * These decoding functions allow decompression of consecutive blocks in "streaming" mode. - * A block is an unsplittable entity, it must be presented entirely to a decompression function. - * Decompression functions only accepts one block at a time. - * The last 64KB of previously decoded data *must* remain available and unmodified at the memory position where they were decoded. - * If less than 64KB of data has been decoded, all the data must be present. - * - * Special : if decompression side sets a ring buffer, it must respect one of the following conditions : - * - Decompression buffer size is _at least_ LZ4_decoderRingBufferSize(maxBlockSize). - * maxBlockSize is the maximum size of any single block. It can have any value > 16 bytes. - * In which case, encoding and decoding buffers do not need to be synchronized. - * Actually, data can be produced by any source compliant with LZ4 format specification, and respecting maxBlockSize. - * - Synchronized mode : - * Decompression buffer size is _exactly_ the same as compression buffer size, - * and follows exactly same update rule (block boundaries at same positions), - * and decoding function is provided with exact decompressed size of each block (exception for last block of the stream), - * _then_ decoding & encoding ring buffer can have any size, including small ones ( < 64 KB). - * - Decompression buffer is larger than encoding buffer, by a minimum of maxBlockSize more bytes. - * In which case, encoding and decoding buffers do not need to be synchronized, - * and encoding ring buffer can have any size, including small ones ( < 64 KB). - * - * Whenever these conditions are not possible, - * save the last 64KB of decoded data into a safe buffer where it can't be modified during decompression, - * then indicate where this data is saved using LZ4_setStreamDecode(), before decompressing next block. -*/ -LZ4LIB_API int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* src, char* dst, int srcSize, int dstCapacity); -LZ4LIB_API int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* src, char* dst, int originalSize); - - -/*! LZ4_decompress_*_usingDict() : - * These decoding functions work the same as - * a combination of LZ4_setStreamDecode() followed by LZ4_decompress_*_continue() - * They are stand-alone, and don't need an LZ4_streamDecode_t structure. - * Dictionary is presumed stable : it must remain accessible and unmodified during next decompression. - */ -LZ4LIB_API int LZ4_decompress_safe_usingDict (const char* src, char* dst, int srcSize, int dstCapcity, const char* dictStart, int dictSize); -LZ4LIB_API int LZ4_decompress_fast_usingDict (const char* src, char* dst, int originalSize, const char* dictStart, int dictSize); - - -/*^********************************************** - * !!!!!! STATIC LINKING ONLY !!!!!! - ***********************************************/ - -/*-************************************ - * Unstable declarations - ************************************** - * Declarations in this section should be considered unstable. - * Use at your own peril, etc., etc. - * They may be removed in the future. - * Their signatures may change. - **************************************/ - -#ifdef LZ4_STATIC_LINKING_ONLY - -/*! LZ4_resetStream_fast() : - * Use this, like LZ4_resetStream(), to prepare a context for a new chain of - * calls to a streaming API (e.g., LZ4_compress_fast_continue()). - * - * Note: - * Using this in advance of a non- streaming-compression function is redundant, - * and potentially bad for performance, since they all perform their own custom - * reset internally. - * - * Differences from LZ4_resetStream(): - * When an LZ4_stream_t is known to be in a internally coherent state, - * it can often be prepared for a new compression with almost no work, only - * sometimes falling back to the full, expensive reset that is always required - * when the stream is in an indeterminate state (i.e., the reset performed by - * LZ4_resetStream()). - * - * LZ4_streams are guaranteed to be in a valid state when: - * - returned from LZ4_createStream() - * - reset by LZ4_resetStream() - * - memset(stream, 0, sizeof(LZ4_stream_t)), though this is discouraged - * - the stream was in a valid state and was reset by LZ4_resetStream_fast() - * - the stream was in a valid state and was then used in any compression call - * that returned success - * - the stream was in an indeterminate state and was used in a compression - * call that fully reset the state (e.g., LZ4_compress_fast_extState()) and - * that returned success - * - * When a stream isn't known to be in a valid state, it is not safe to pass to - * any fastReset or streaming function. It must first be cleansed by the full - * LZ4_resetStream(). - */ -LZ4LIB_API void LZ4_resetStream_fast (LZ4_stream_t* streamPtr); - -/*! LZ4_compress_fast_extState_fastReset() : - * A variant of LZ4_compress_fast_extState(). - * - * Using this variant avoids an expensive initialization step. It is only safe - * to call if the state buffer is known to be correctly initialized already - * (see above comment on LZ4_resetStream_fast() for a definition of "correctly - * initialized"). From a high level, the difference is that this function - * initializes the provided state with a call to something like - * LZ4_resetStream_fast() while LZ4_compress_fast_extState() starts with a - * call to LZ4_resetStream(). - */ -LZ4LIB_API int LZ4_compress_fast_extState_fastReset (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); - -/*! LZ4_attach_dictionary() : - * This is an experimental API that allows for the efficient use of a - * static dictionary many times. - * - * Rather than re-loading the dictionary buffer into a working context before - * each compression, or copying a pre-loaded dictionary's LZ4_stream_t into a - * working LZ4_stream_t, this function introduces a no-copy setup mechanism, - * in which the working stream references the dictionary stream in-place. - * - * Several assumptions are made about the state of the dictionary stream. - * Currently, only streams which have been prepared by LZ4_loadDict() should - * be expected to work. - * - * Alternatively, the provided dictionary stream pointer may be NULL, in which - * case any existing dictionary stream is unset. - * - * If a dictionary is provided, it replaces any pre-existing stream history. - * The dictionary contents are the only history that can be referenced and - * logically immediately precede the data compressed in the first subsequent - * compression call. - * - * The dictionary will only remain attached to the working stream through the - * first compression call, at the end of which it is cleared. The dictionary - * stream (and source buffer) must remain in-place / accessible / unchanged - * through the completion of the first compression call on the stream. - */ -LZ4LIB_API void LZ4_attach_dictionary(LZ4_stream_t *working_stream, const LZ4_stream_t *dictionary_stream); - -#endif - -/*-************************************ - * Private definitions - ************************************** - * Do not use these definitions. - * They are exposed to allow static allocation of `LZ4_stream_t` and `LZ4_streamDecode_t`. - * Using these definitions will expose code to API and/or ABI break in future versions of the library. - **************************************/ -#define LZ4_HASHLOG (LZ4_MEMORY_USAGE-2) -#define LZ4_HASHTABLESIZE (1 << LZ4_MEMORY_USAGE) -#define LZ4_HASH_SIZE_U32 (1 << LZ4_HASHLOG) /* required as macro for static allocation */ - -#if defined(__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) -#include - -typedef struct LZ4_stream_t_internal LZ4_stream_t_internal; -struct LZ4_stream_t_internal { - uint32_t hashTable[LZ4_HASH_SIZE_U32]; - uint32_t currentOffset; - uint16_t initCheck; - uint16_t tableType; - const uint8_t* dictionary; - const LZ4_stream_t_internal* dictCtx; - uint32_t dictSize; -}; - -typedef struct { - const uint8_t* externalDict; - size_t extDictSize; - const uint8_t* prefixEnd; - size_t prefixSize; -} LZ4_streamDecode_t_internal; - -#else - -typedef struct LZ4_stream_t_internal LZ4_stream_t_internal; -struct LZ4_stream_t_internal { - unsigned int hashTable[LZ4_HASH_SIZE_U32]; - unsigned int currentOffset; - unsigned short initCheck; - unsigned short tableType; - const unsigned char* dictionary; - const LZ4_stream_t_internal* dictCtx; - unsigned int dictSize; -}; - -typedef struct { - const unsigned char* externalDict; - size_t extDictSize; - const unsigned char* prefixEnd; - size_t prefixSize; -} LZ4_streamDecode_t_internal; - -#endif - -/*! - * LZ4_stream_t : - * information structure to track an LZ4 stream. - * init this structure before first use. - * note : only use in association with static linking ! - * this definition is not API/ABI safe, - * it may change in a future version ! - */ -#define LZ4_STREAMSIZE_U64 ((1 << (LZ4_MEMORY_USAGE-3)) + 4) -#define LZ4_STREAMSIZE (LZ4_STREAMSIZE_U64 * sizeof(unsigned long long)) -union LZ4_stream_u { - unsigned long long table[LZ4_STREAMSIZE_U64]; - LZ4_stream_t_internal internal_donotuse; -} ; /* previously typedef'd to LZ4_stream_t */ - - -/*! - * LZ4_streamDecode_t : - * information structure to track an LZ4 stream during decompression. - * init this structure using LZ4_setStreamDecode (or memset()) before first use - * note : only use in association with static linking ! - * this definition is not API/ABI safe, - * and may change in a future version ! - */ -#define LZ4_STREAMDECODESIZE_U64 4 -#define LZ4_STREAMDECODESIZE (LZ4_STREAMDECODESIZE_U64 * sizeof(unsigned long long)) -union LZ4_streamDecode_u { - unsigned long long table[LZ4_STREAMDECODESIZE_U64]; - LZ4_streamDecode_t_internal internal_donotuse; -} ; /* previously typedef'd to LZ4_streamDecode_t */ - - -/*-************************************ -* Obsolete Functions -**************************************/ - -/*! Deprecation warnings - Should deprecation warnings be a problem, - it is generally possible to disable them, - typically with -Wno-deprecated-declarations for gcc - or _CRT_SECURE_NO_WARNINGS in Visual. - Otherwise, it's also possible to define LZ4_DISABLE_DEPRECATE_WARNINGS */ -#ifdef LZ4_DISABLE_DEPRECATE_WARNINGS -# define LZ4_DEPRECATED(message) /* disable deprecation warnings */ -#else -# define LZ4_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) -# if defined (__cplusplus) && (__cplusplus >= 201402) /* C++14 or greater */ -# define LZ4_DEPRECATED(message) [[deprecated(message)]] -# elif (LZ4_GCC_VERSION >= 405) || defined(__clang__) -# define LZ4_DEPRECATED(message) __attribute__((deprecated(message))) -# elif (LZ4_GCC_VERSION >= 301) -# define LZ4_DEPRECATED(message) __attribute__((deprecated)) -# elif defined(_MSC_VER) -# define LZ4_DEPRECATED(message) __declspec(deprecated(message)) -# else -# pragma message("WARNING: You need to implement LZ4_DEPRECATED for this compiler") -# define LZ4_DEPRECATED(message) -# endif -#endif /* LZ4_DISABLE_DEPRECATE_WARNINGS */ - -/* Obsolete compression functions */ -LZ4_DEPRECATED("use LZ4_compress_default() instead") LZ4LIB_API int LZ4_compress (const char* source, char* dest, int sourceSize); -LZ4_DEPRECATED("use LZ4_compress_default() instead") LZ4LIB_API int LZ4_compress_limitedOutput (const char* source, char* dest, int sourceSize, int maxOutputSize); -LZ4_DEPRECATED("use LZ4_compress_fast_extState() instead") LZ4LIB_API int LZ4_compress_withState (void* state, const char* source, char* dest, int inputSize); -LZ4_DEPRECATED("use LZ4_compress_fast_extState() instead") LZ4LIB_API int LZ4_compress_limitedOutput_withState (void* state, const char* source, char* dest, int inputSize, int maxOutputSize); -LZ4_DEPRECATED("use LZ4_compress_fast_continue() instead") LZ4LIB_API int LZ4_compress_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize); -LZ4_DEPRECATED("use LZ4_compress_fast_continue() instead") LZ4LIB_API int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize, int maxOutputSize); - -/* Obsolete decompression functions */ -LZ4_DEPRECATED("use LZ4_decompress_fast() instead") LZ4LIB_API int LZ4_uncompress (const char* source, char* dest, int outputSize); -LZ4_DEPRECATED("use LZ4_decompress_safe() instead") LZ4LIB_API int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize); - -/* Obsolete streaming functions; degraded functionality; do not use! - * - * In order to perform streaming compression, these functions depended on data - * that is no longer tracked in the state. They have been preserved as well as - * possible: using them will still produce a correct output. However, they don't - * actually retain any history between compression calls. The compression ratio - * achieved will therefore be no better than compressing each chunk - * independently. - */ -LZ4_DEPRECATED("Use LZ4_createStream() instead") LZ4LIB_API void* LZ4_create (char* inputBuffer); -LZ4_DEPRECATED("Use LZ4_createStream() instead") LZ4LIB_API int LZ4_sizeofStreamState(void); -LZ4_DEPRECATED("Use LZ4_resetStream() instead") LZ4LIB_API int LZ4_resetStreamState(void* state, char* inputBuffer); -LZ4_DEPRECATED("Use LZ4_saveDict() instead") LZ4LIB_API char* LZ4_slideInputBuffer (void* state); - -/* Obsolete streaming decoding functions */ -LZ4_DEPRECATED("use LZ4_decompress_safe_usingDict() instead") LZ4LIB_API int LZ4_decompress_safe_withPrefix64k (const char* src, char* dst, int compressedSize, int maxDstSize); -LZ4_DEPRECATED("use LZ4_decompress_fast_usingDict() instead") LZ4LIB_API int LZ4_decompress_fast_withPrefix64k (const char* src, char* dst, int originalSize); - -#endif /* LZ4_H_2983827168210 */ - - -#if defined (__cplusplus) -} -#endif diff --git a/server/2015Remote/lz4/lz4.lib b/server/2015Remote/lz4/lz4.lib deleted file mode 100644 index fd83a47f1ffc2f99b638205231a30ce31c63a6d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314172 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 b{Hzf}hL0GMGa{p)ARoP%qob29&I= 199901L -# ifndef STDC99 -# define STDC99 -# endif -# endif -#endif -#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) -# define STDC -#endif -#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) -# define STDC -#endif -#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) -# define STDC -#endif -#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) -# define STDC -#endif - -#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ -# define STDC -#endif - -#ifndef STDC -# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ -# define const /* note: need a more gentle solution here */ -# endif -#endif - -#if defined(ZLIB_CONST) && !defined(z_const) -# define z_const const -#else -# define z_const -#endif - -#ifdef Z_SOLO -# ifdef _WIN64 - typedef unsigned long long z_size_t; -# else - typedef unsigned long z_size_t; -# endif -#else -# define z_longlong long long -# if defined(NO_SIZE_T) - typedef unsigned NO_SIZE_T z_size_t; -# elif defined(STDC) -# include - typedef size_t z_size_t; -# else - typedef unsigned long z_size_t; -# endif -# undef z_longlong -#endif - -/* Maximum value for memLevel in deflateInit2 */ -#ifndef MAX_MEM_LEVEL -# ifdef MAXSEG_64K -# define MAX_MEM_LEVEL 8 -# else -# define MAX_MEM_LEVEL 9 -# endif -#endif - -/* Maximum value for windowBits in deflateInit2 and inflateInit2. - * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files - * created by gzip. (Files created by minigzip can still be extracted by - * gzip.) - */ -#ifndef MAX_WBITS -# define MAX_WBITS 15 /* 32K LZ77 window */ -#endif - -/* The memory requirements for deflate are (in bytes): - (1 << (windowBits+2)) + (1 << (memLevel+9)) - that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) - plus a few kilobytes for small objects. For example, if you want to reduce - the default memory requirements from 256K to 128K, compile with - make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" - Of course this will generally degrade compression (there's no free lunch). - - The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus about 7 kilobytes - for small objects. -*/ - - /* Type declarations */ - -#ifndef OF /* function prototypes */ -# ifdef STDC -# define OF(args) args -# else -# define OF(args) () -# endif -#endif - -/* The following definitions for FAR are needed only for MSDOS mixed - * model programming (small or medium model with some far allocations). - * This was tested only with MSC; for other MSDOS compilers you may have - * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, - * just define FAR to be empty. - */ -#ifdef SYS16BIT -# if defined(M_I86SM) || defined(M_I86MM) - /* MSC small or medium model */ -# define SMALL_MEDIUM -# ifdef _MSC_VER -# define FAR _far -# else -# define FAR far -# endif -# endif -# if (defined(__SMALL__) || defined(__MEDIUM__)) - /* Turbo C small or medium model */ -# define SMALL_MEDIUM -# ifdef __BORLANDC__ -# define FAR _far -# else -# define FAR far -# endif -# endif -#endif - -#if defined(WINDOWS) || defined(WIN32) - /* If building or using zlib as a DLL, define ZLIB_DLL. - * This is not mandatory, but it offers a little performance increase. - */ -# ifdef ZLIB_DLL -# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) -# ifdef ZLIB_INTERNAL -# define ZEXTERN extern __declspec(dllexport) -# else -# define ZEXTERN extern __declspec(dllimport) -# endif -# endif -# endif /* ZLIB_DLL */ - /* If building or using zlib with the WINAPI/WINAPIV calling convention, - * define ZLIB_WINAPI. - * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. - */ -# ifdef ZLIB_WINAPI -# ifdef FAR -# undef FAR -# endif -# ifndef WIN32_LEAN_AND_MEAN -# define WIN32_LEAN_AND_MEAN -# endif -# include - /* No need for _export, use ZLIB.DEF instead. */ - /* For complete Windows compatibility, use WINAPI, not __stdcall. */ -# define ZEXPORT WINAPI -# ifdef WIN32 -# define ZEXPORTVA WINAPIV -# else -# define ZEXPORTVA FAR CDECL -# endif -# endif -#endif - -#if defined (__BEOS__) -# ifdef ZLIB_DLL -# ifdef ZLIB_INTERNAL -# define ZEXPORT __declspec(dllexport) -# define ZEXPORTVA __declspec(dllexport) -# else -# define ZEXPORT __declspec(dllimport) -# define ZEXPORTVA __declspec(dllimport) -# endif -# endif -#endif - -#ifndef ZEXTERN -# define ZEXTERN extern -#endif -#ifndef ZEXPORT -# define ZEXPORT -#endif -#ifndef ZEXPORTVA -# define ZEXPORTVA -#endif - -#ifndef FAR -# define FAR -#endif - -#if !defined(__MACTYPES__) -typedef unsigned char Byte; /* 8 bits */ -#endif -typedef unsigned int uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ - -#ifdef SMALL_MEDIUM - /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ -# define Bytef Byte FAR -#else - typedef Byte FAR Bytef; -#endif -typedef char FAR charf; -typedef int FAR intf; -typedef uInt FAR uIntf; -typedef uLong FAR uLongf; - -#ifdef STDC - typedef void const *voidpc; - typedef void FAR *voidpf; - typedef void *voidp; -#else - typedef Byte const *voidpc; - typedef Byte FAR *voidpf; - typedef Byte *voidp; -#endif - -#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) -# include -# if (UINT_MAX == 0xffffffffUL) -# define Z_U4 unsigned -# elif (ULONG_MAX == 0xffffffffUL) -# define Z_U4 unsigned long -# elif (USHRT_MAX == 0xffffffffUL) -# define Z_U4 unsigned short -# endif -#endif - -#ifdef Z_U4 - typedef Z_U4 z_crc_t; -#else - typedef unsigned long z_crc_t; -#endif - -#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_UNISTD_H -#endif - -#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_STDARG_H -#endif - -#ifdef STDC -# ifndef Z_SOLO -# include /* for off_t */ -# endif -#endif - -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -# include /* for va_list */ -# endif -#endif - -#ifdef _WIN32 -# ifndef Z_SOLO -# include /* for wchar_t */ -# endif -#endif - -/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and - * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even - * though the former does not conform to the LFS document), but considering - * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as - * equivalently requesting no 64-bit operations - */ -#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 -# undef _LARGEFILE64_SOURCE -#endif - -#ifndef Z_HAVE_UNISTD_H -# ifdef __WATCOMC__ -# define Z_HAVE_UNISTD_H -# endif -#endif -#ifndef Z_HAVE_UNISTD_H -# if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32) -# define Z_HAVE_UNISTD_H -# endif -#endif -#ifndef Z_SOLO -# if defined(Z_HAVE_UNISTD_H) -# include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ -# ifdef VMS -# include /* for off_t */ -# endif -# ifndef z_off_t -# define z_off_t off_t -# endif -# endif -#endif - -#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 -# define Z_LFS64 -#endif - -#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) -# define Z_LARGE64 -#endif - -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) -# define Z_WANT64 -#endif - -#if !defined(SEEK_SET) && !defined(Z_SOLO) -# define SEEK_SET 0 /* Seek from beginning of file. */ -# define SEEK_CUR 1 /* Seek from current position. */ -# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ -#endif - -#ifndef z_off_t -# define z_off_t long -#endif - -#if !defined(_WIN32) && defined(Z_LARGE64) -# define z_off64_t off64_t -#else -# if defined(_WIN32) && !defined(__GNUC__) -# define z_off64_t __int64 -# else -# define z_off64_t z_off_t -# endif -#endif - -/* MVS linker does not support external names larger than 8 bytes */ -#if defined(__MVS__) - #pragma map(deflateInit_,"DEIN") - #pragma map(deflateInit2_,"DEIN2") - #pragma map(deflateEnd,"DEEND") - #pragma map(deflateBound,"DEBND") - #pragma map(inflateInit_,"ININ") - #pragma map(inflateInit2_,"ININ2") - #pragma map(inflateEnd,"INEND") - #pragma map(inflateSync,"INSY") - #pragma map(inflateSetDictionary,"INSEDI") - #pragma map(compressBound,"CMBND") - #pragma map(inflate_table,"INTABL") - #pragma map(inflate_fast,"INFA") - #pragma map(inflate_copyright,"INCOPY") -#endif - -#endif /* ZCONF_H */ diff --git a/server/2015Remote/zlib.h b/server/2015Remote/zlib.h deleted file mode 100644 index 8d4b932..0000000 --- a/server/2015Remote/zlib.h +++ /dev/null @@ -1,1938 +0,0 @@ -/* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.3.1, January 22nd, 2024 - - Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - - - The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 - (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). -*/ - -#ifndef ZLIB_H -#define ZLIB_H - -#include "zconf.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define ZLIB_VERSION "1.3.1" -#define ZLIB_VERNUM 0x1310 -#define ZLIB_VER_MAJOR 1 -#define ZLIB_VER_MINOR 3 -#define ZLIB_VER_REVISION 1 -#define ZLIB_VER_SUBREVISION 0 - -/* - The 'zlib' compression library provides in-memory compression and - decompression functions, including integrity checks of the uncompressed data. - This version of the library supports only one compression method (deflation) - but other algorithms will be added later and will have the same stream - interface. - - Compression can be done in a single step if the buffers are large enough, - or can be done by repeated calls of the compression function. In the latter - case, the application must provide more input and/or consume the output - (providing more output space) before each call. - - The compressed data format used by default by the in-memory functions is - the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped - around a deflate stream, which is itself documented in RFC 1951. - - The library also supports reading and writing files in gzip (.gz) format - with an interface similar to that of stdio using the functions that start - with "gz". The gzip format is different from the zlib format. gzip is a - gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. - - This library can optionally read and write gzip and raw deflate streams in - memory as well. - - The zlib format was designed to be compact and fast for use in memory - and on communications channels. The gzip format was designed for single- - file compression on file systems, has a larger header than zlib to maintain - directory information, and uses a different, slower check method than zlib. - - The library does not install any signal handler. The decoder checks - the consistency of the compressed data, so the library should never crash - even in the case of corrupted input. -*/ - -typedef voidpf (*alloc_func)(voidpf opaque, uInt items, uInt size); -typedef void (*free_func)(voidpf opaque, voidpf address); - -struct internal_state; - -typedef struct z_stream_s { - z_const Bytef *next_in; /* next input byte */ - uInt avail_in; /* number of bytes available at next_in */ - uLong total_in; /* total number of input bytes read so far */ - - Bytef *next_out; /* next output byte will go here */ - uInt avail_out; /* remaining free space at next_out */ - uLong total_out; /* total number of bytes output so far */ - - z_const char *msg; /* last error message, NULL if no error */ - struct internal_state FAR *state; /* not visible by applications */ - - alloc_func zalloc; /* used to allocate the internal state */ - free_func zfree; /* used to free the internal state */ - voidpf opaque; /* private data object passed to zalloc and zfree */ - - int data_type; /* best guess about the data type: binary or text - for deflate, or the decoding state for inflate */ - uLong adler; /* Adler-32 or CRC-32 value of the uncompressed data */ - uLong reserved; /* reserved for future use */ -} z_stream; - -typedef z_stream FAR *z_streamp; - -/* - gzip header information passed to and from zlib routines. See RFC 1952 - for more details on the meanings of these fields. -*/ -typedef struct gz_header_s { - int text; /* true if compressed data believed to be text */ - uLong time; /* modification time */ - int xflags; /* extra flags (not used when writing a gzip file) */ - int os; /* operating system */ - Bytef *extra; /* pointer to extra field or Z_NULL if none */ - uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ - uInt extra_max; /* space at extra (only when reading header) */ - Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ - uInt name_max; /* space at name (only when reading header) */ - Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ - uInt comm_max; /* space at comment (only when reading header) */ - int hcrc; /* true if there was or will be a header crc */ - int done; /* true when done reading gzip header (not used - when writing a gzip file) */ -} gz_header; - -typedef gz_header FAR *gz_headerp; - -/* - The application must update next_in and avail_in when avail_in has dropped - to zero. It must update next_out and avail_out when avail_out has dropped - to zero. The application must initialize zalloc, zfree and opaque before - calling the init function. All other fields are set by the compression - library and must not be updated by the application. - - The opaque value provided by the application will be passed as the first - parameter for calls of zalloc and zfree. This can be useful for custom - memory management. The compression library attaches no meaning to the - opaque value. - - zalloc must return Z_NULL if there is not enough memory for the object. - If zlib is used in a multi-threaded application, zalloc and zfree must be - thread safe. In that case, zlib is thread-safe. When zalloc and zfree are - Z_NULL on entry to the initialization function, they are set to internal - routines that use the standard library functions malloc() and free(). - - On 16-bit systems, the functions zalloc and zfree must be able to allocate - exactly 65536 bytes, but will not be required to allocate more than this if - the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers - returned by zalloc for objects of exactly 65536 bytes *must* have their - offset normalized to zero. The default allocation function provided by this - library ensures this (see zutil.c). To reduce memory requirements and avoid - any allocation of 64K objects, at the expense of compression ratio, compile - the library with -DMAX_WBITS=14 (see zconf.h). - - The fields total_in and total_out can be used for statistics or progress - reports. After compression, total_in holds the total size of the - uncompressed data and may be saved for use by the decompressor (particularly - if the decompressor wants to decompress everything in a single step). -*/ - - /* constants */ - -#define Z_NO_FLUSH 0 -#define Z_PARTIAL_FLUSH 1 -#define Z_SYNC_FLUSH 2 -#define Z_FULL_FLUSH 3 -#define Z_FINISH 4 -#define Z_BLOCK 5 -#define Z_TREES 6 -/* Allowed flush values; see deflate() and inflate() below for details */ - -#define Z_OK 0 -#define Z_STREAM_END 1 -#define Z_NEED_DICT 2 -#define Z_ERRNO (-1) -#define Z_STREAM_ERROR (-2) -#define Z_DATA_ERROR (-3) -#define Z_MEM_ERROR (-4) -#define Z_BUF_ERROR (-5) -#define Z_VERSION_ERROR (-6) -/* Return codes for the compression/decompression functions. Negative values - * are errors, positive values are used for special but normal events. - */ - -#define Z_NO_COMPRESSION 0 -#define Z_BEST_SPEED 1 -#define Z_BEST_COMPRESSION 9 -#define Z_DEFAULT_COMPRESSION (-1) -/* compression levels */ - -#define Z_FILTERED 1 -#define Z_HUFFMAN_ONLY 2 -#define Z_RLE 3 -#define Z_FIXED 4 -#define Z_DEFAULT_STRATEGY 0 -/* compression strategy; see deflateInit2() below for details */ - -#define Z_BINARY 0 -#define Z_TEXT 1 -#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ -#define Z_UNKNOWN 2 -/* Possible values of the data_type field for deflate() */ - -#define Z_DEFLATED 8 -/* The deflate compression method (the only one supported in this version) */ - -#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ - -#define zlib_version zlibVersion() -/* for compatibility with versions < 1.0.2 */ - - - /* basic functions */ - -ZEXTERN const char * ZEXPORT zlibVersion(void); -/* The application can compare zlibVersion and ZLIB_VERSION for consistency. - If the first character differs, the library code actually used is not - compatible with the zlib.h header file used by the application. This check - is automatically made by deflateInit and inflateInit. - */ - -/* -ZEXTERN int ZEXPORT deflateInit(z_streamp strm, int level); - - Initializes the internal stream state for compression. The fields - zalloc, zfree and opaque must be initialized before by the caller. If - zalloc and zfree are set to Z_NULL, deflateInit updates them to use default - allocation functions. total_in, total_out, adler, and msg are initialized. - - The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: - 1 gives best speed, 9 gives best compression, 0 gives no compression at all - (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION - requests a default compromise between speed and compression (currently - equivalent to level 6). - - deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if level is not a valid compression level, or - Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible - with the version assumed by the caller (ZLIB_VERSION). msg is set to null - if there is no error message. deflateInit does not perform any compression: - this will be done by deflate(). -*/ - - -ZEXTERN int ZEXPORT deflate(z_streamp strm, int flush); -/* - deflate compresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce - some output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. deflate performs one or both of the - following actions: - - - Compress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in and avail_in are updated and - processing will resume at this point for the next call of deflate(). - - - Generate more output starting at next_out and update next_out and avail_out - accordingly. This action is forced if the parameter flush is non zero. - Forcing flush frequently degrades the compression ratio, so this parameter - should be set only when necessary. Some output may be provided even if - flush is zero. - - Before the call of deflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming more - output, and updating avail_in or avail_out accordingly; avail_out should - never be zero before the call. The application can consume the compressed - output when it wants, for example when the output buffer is full (avail_out - == 0), or after each call of deflate(). If deflate returns Z_OK and with - zero avail_out, it must be called again after making room in the output - buffer because there might be more output pending. See deflatePending(), - which can be used if desired to determine whether or not there is more output - in that case. - - Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to - decide how much data to accumulate before producing output, in order to - maximize compression. - - If the parameter flush is set to Z_SYNC_FLUSH, all pending output is - flushed to the output buffer and the output is aligned on a byte boundary, so - that the decompressor can get all input data available so far. (In - particular avail_in is zero after the call if enough output space has been - provided before the call.) Flushing may degrade compression for some - compression algorithms and so it should be used only when necessary. This - completes the current deflate block and follows it with an empty stored block - that is three bits plus filler bits to the next byte, followed by four bytes - (00 00 ff ff). - - If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the - output buffer, but the output is not aligned to a byte boundary. All of the - input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. - This completes the current deflate block and follows it with an empty fixed - codes block that is 10 bits long. This assures that enough bytes are output - in order for the decompressor to finish the block before the empty fixed - codes block. - - If flush is set to Z_BLOCK, a deflate block is completed and emitted, as - for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to - seven bits of the current block are held to be written as the next byte after - the next deflate block is completed. In this case, the decompressor may not - be provided enough bits at this point in order to complete decompression of - the data provided so far to the compressor. It may need to wait for the next - block to be emitted. This is for advanced applications that need to control - the emission of deflate blocks. - - If flush is set to Z_FULL_FLUSH, all output is flushed as with - Z_SYNC_FLUSH, and the compression state is reset so that decompression can - restart from this point if previous compressed data has been damaged or if - random access is desired. Using Z_FULL_FLUSH too often can seriously degrade - compression. - - If deflate returns with avail_out == 0, this function must be called again - with the same value of the flush parameter and more output space (updated - avail_out), until the flush is complete (deflate returns with non-zero - avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that - avail_out is greater than six when the flush marker begins, in order to avoid - repeated flush markers upon calling deflate() again when avail_out == 0. - - If the parameter flush is set to Z_FINISH, pending input is processed, - pending output is flushed and deflate returns with Z_STREAM_END if there was - enough output space. If deflate returns with Z_OK or Z_BUF_ERROR, this - function must be called again with Z_FINISH and more output space (updated - avail_out) but no more input data, until it returns with Z_STREAM_END or an - error. After deflate has returned Z_STREAM_END, the only possible operations - on the stream are deflateReset or deflateEnd. - - Z_FINISH can be used in the first deflate call after deflateInit if all the - compression is to be done in a single step. In order to complete in one - call, avail_out must be at least the value returned by deflateBound (see - below). Then deflate is guaranteed to return Z_STREAM_END. If not enough - output space is provided, deflate will not return Z_STREAM_END, and it must - be called again as described above. - - deflate() sets strm->adler to the Adler-32 checksum of all input read - so far (that is, total_in bytes). If a gzip stream is being generated, then - strm->adler will be the CRC-32 checksum of the input read so far. (See - deflateInit2 below.) - - deflate() may update strm->data_type if it can make a good guess about - the input data type (Z_BINARY or Z_TEXT). If in doubt, the data is - considered binary. This field is only for information purposes and does not - affect the compression algorithm in any manner. - - deflate() returns Z_OK if some progress has been made (more input - processed or more output produced), Z_STREAM_END if all input has been - consumed and all output has been produced (only when flush is set to - Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example - if next_in or next_out was Z_NULL or the state was inadvertently written over - by the application), or Z_BUF_ERROR if no progress is possible (for example - avail_in or avail_out was zero). Note that Z_BUF_ERROR is not fatal, and - deflate() can be called again with more input and more output space to - continue compressing. -*/ - - -ZEXTERN int ZEXPORT deflateEnd(z_streamp strm); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any pending - output. - - deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the - stream state was inconsistent, Z_DATA_ERROR if the stream was freed - prematurely (some input or output was discarded). In the error case, msg - may be set but then points to a static string (which must not be - deallocated). -*/ - - -/* -ZEXTERN int ZEXPORT inflateInit(z_streamp strm); - - Initializes the internal stream state for decompression. The fields - next_in, avail_in, zalloc, zfree and opaque must be initialized before by - the caller. In the current version of inflate, the provided input is not - read or consumed. The allocation of a sliding window will be deferred to - the first call of inflate (if the decompression does not complete on the - first call). If zalloc and zfree are set to Z_NULL, inflateInit updates - them to use default allocation functions. total_in, total_out, adler, and - msg are initialized. - - inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller, or Z_STREAM_ERROR if the parameters are - invalid, such as a null pointer to the structure. msg is set to null if - there is no error message. inflateInit does not perform any decompression. - Actual decompression will be done by inflate(). So next_in, and avail_in, - next_out, and avail_out are unused and unchanged. The current - implementation of inflateInit() does not process any header information -- - that is deferred until inflate() is called. -*/ - - -ZEXTERN int ZEXPORT inflate(z_streamp strm, int flush); -/* - inflate decompresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce - some output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. inflate performs one or both of the - following actions: - - - Decompress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), then next_in and avail_in are updated - accordingly, and processing will resume at this point for the next call of - inflate(). - - - Generate more output starting at next_out and update next_out and avail_out - accordingly. inflate() provides as much output as possible, until there is - no more input data or no more space in the output buffer (see below about - the flush parameter). - - Before the call of inflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming more - output, and updating the next_* and avail_* values accordingly. If the - caller of inflate() does not provide both available input and available - output space, it is possible that there will be no progress made. The - application can consume the uncompressed output when it wants, for example - when the output buffer is full (avail_out == 0), or after each call of - inflate(). If inflate returns Z_OK and with zero avail_out, it must be - called again after making room in the output buffer because there might be - more output pending. - - The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, - Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much - output as possible to the output buffer. Z_BLOCK requests that inflate() - stop if and when it gets to the next deflate block boundary. When decoding - the zlib or gzip format, this will cause inflate() to return immediately - after the header and before the first block. When doing a raw inflate, - inflate() will go ahead and process the first block, and will return when it - gets to the end of that block, or when it runs out of data. - - The Z_BLOCK option assists in appending to or combining deflate streams. - To assist in this, on return inflate() always sets strm->data_type to the - number of unused bits in the last byte taken from strm->next_in, plus 64 if - inflate() is currently decoding the last block in the deflate stream, plus - 128 if inflate() returned immediately after decoding an end-of-block code or - decoding the complete header up to just before the first byte of the deflate - stream. The end-of-block will not be indicated until all of the uncompressed - data from that block has been written to strm->next_out. The number of - unused bits may in general be greater than seven, except when bit 7 of - data_type is set, in which case the number of unused bits will be less than - eight. data_type is set as noted here every time inflate() returns for all - flush options, and so can be used to determine the amount of currently - consumed input in bits. - - The Z_TREES option behaves as Z_BLOCK does, but it also returns when the - end of each deflate block header is reached, before any actual data in that - block is decoded. This allows the caller to determine the length of the - deflate block header for later use in random access within a deflate block. - 256 is added to the value of strm->data_type when inflate() returns - immediately after reaching the end of the deflate block header. - - inflate() should normally be called until it returns Z_STREAM_END or an - error. However if all decompression is to be performed in a single step (a - single call of inflate), the parameter flush should be set to Z_FINISH. In - this case all pending input is processed and all pending output is flushed; - avail_out must be large enough to hold all of the uncompressed data for the - operation to complete. (The size of the uncompressed data may have been - saved by the compressor for this purpose.) The use of Z_FINISH is not - required to perform an inflation in one step. However it may be used to - inform inflate that a faster approach can be used for the single inflate() - call. Z_FINISH also informs inflate to not maintain a sliding window if the - stream completes, which reduces inflate's memory footprint. If the stream - does not complete, either because not all of the stream is provided or not - enough output space is provided, then a sliding window will be allocated and - inflate() can be called again to continue the operation as if Z_NO_FLUSH had - been used. - - In this implementation, inflate() always flushes as much output as - possible to the output buffer, and always uses the faster approach on the - first call. So the effects of the flush parameter in this implementation are - on the return value of inflate() as noted below, when inflate() returns early - when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of - memory for a sliding window when Z_FINISH is used. - - If a preset dictionary is needed after this call (see inflateSetDictionary - below), inflate sets strm->adler to the Adler-32 checksum of the dictionary - chosen by the compressor and returns Z_NEED_DICT; otherwise it sets - strm->adler to the Adler-32 checksum of all output produced so far (that is, - total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described - below. At the end of the stream, inflate() checks that its computed Adler-32 - checksum is equal to that saved by the compressor and returns Z_STREAM_END - only if the checksum is correct. - - inflate() can decompress and check either zlib-wrapped or gzip-wrapped - deflate data. The header type is detected automatically, if requested when - initializing with inflateInit2(). Any information contained in the gzip - header is not retained unless inflateGetHeader() is used. When processing - gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output - produced so far. The CRC-32 is checked against the gzip trailer, as is the - uncompressed length, modulo 2^32. - - inflate() returns Z_OK if some progress has been made (more input processed - or more output produced), Z_STREAM_END if the end of the compressed data has - been reached and all uncompressed output has been produced, Z_NEED_DICT if a - preset dictionary is needed at this point, Z_DATA_ERROR if the input data was - corrupted (input stream not conforming to the zlib format or incorrect check - value, in which case strm->msg points to a string with a more specific - error), Z_STREAM_ERROR if the stream structure was inconsistent (for example - next_in or next_out was Z_NULL, or the state was inadvertently written over - by the application), Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR - if no progress was possible or if there was not enough room in the output - buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and - inflate() can be called again with more input and more output space to - continue decompressing. If Z_DATA_ERROR is returned, the application may - then call inflateSync() to look for a good compression block if a partial - recovery of the data is to be attempted. -*/ - - -ZEXTERN int ZEXPORT inflateEnd(z_streamp strm); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any pending - output. - - inflateEnd returns Z_OK if success, or Z_STREAM_ERROR if the stream state - was inconsistent. -*/ - - - /* Advanced functions */ - -/* - The following functions are needed only in some special applications. -*/ - -/* -ZEXTERN int ZEXPORT deflateInit2(z_streamp strm, - int level, - int method, - int windowBits, - int memLevel, - int strategy); - - This is another version of deflateInit with more compression options. The - fields zalloc, zfree and opaque must be initialized before by the caller. - - The method parameter is the compression method. It must be Z_DEFLATED in - this version of the library. - - The windowBits parameter is the base two logarithm of the window size - (the size of the history buffer). It should be in the range 8..15 for this - version of the library. Larger values of this parameter result in better - compression at the expense of memory usage. The default value is 15 if - deflateInit is used instead. - - For the current implementation of deflate(), a windowBits value of 8 (a - window size of 256 bytes) is not supported. As a result, a request for 8 - will result in 9 (a 512-byte window). In that case, providing 8 to - inflateInit2() will result in an error when the zlib header with 9 is - checked against the initialization of inflate(). The remedy is to not use 8 - with deflateInit2() with this initialization, or at least in that case use 9 - with inflateInit2(). - - windowBits can also be -8..-15 for raw deflate. In this case, -windowBits - determines the window size. deflate() will then generate raw deflate data - with no zlib header or trailer, and will not compute a check value. - - windowBits can also be greater than 15 for optional gzip encoding. Add - 16 to windowBits to write a simple gzip header and trailer around the - compressed data instead of a zlib wrapper. The gzip header will have no - file name, no extra data, no comment, no modification time (set to zero), no - header crc, and the operating system will be set to the appropriate value, - if the operating system was determined at compile time. If a gzip stream is - being written, strm->adler is a CRC-32 instead of an Adler-32. - - For raw deflate or gzip encoding, a request for a 256-byte window is - rejected as invalid, since only the zlib header provides a means of - transmitting the window size to the decompressor. - - The memLevel parameter specifies how much memory should be allocated - for the internal compression state. memLevel=1 uses minimum memory but is - slow and reduces compression ratio; memLevel=9 uses maximum memory for - optimal speed. The default value is 8. See zconf.h for total memory usage - as a function of windowBits and memLevel. - - The strategy parameter is used to tune the compression algorithm. Use the - value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a - filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no - string match), or Z_RLE to limit match distances to one (run-length - encoding). Filtered data consists mostly of small values with a somewhat - random distribution. In this case, the compression algorithm is tuned to - compress them better. The effect of Z_FILTERED is to force more Huffman - coding and less string matching; it is somewhat intermediate between - Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as - fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The - strategy parameter only affects the compression ratio but not the - correctness of the compressed output even if it is not set appropriately. - Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler - decoder for special applications. - - deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid - method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is - incompatible with the version assumed by the caller (ZLIB_VERSION). msg is - set to null if there is no error message. deflateInit2 does not perform any - compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateSetDictionary(z_streamp strm, - const Bytef *dictionary, - uInt dictLength); -/* - Initializes the compression dictionary from the given byte sequence - without producing any compressed output. When using the zlib format, this - function must be called immediately after deflateInit, deflateInit2 or - deflateReset, and before any call of deflate. When doing raw deflate, this - function must be called either before any call of deflate, or immediately - after the completion of a deflate block, i.e. after all input has been - consumed and all output has been delivered when using any of the flush - options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The - compressor and decompressor must use exactly the same dictionary (see - inflateSetDictionary). - - The dictionary should consist of strings (byte sequences) that are likely - to be encountered later in the data to be compressed, with the most commonly - used strings preferably put towards the end of the dictionary. Using a - dictionary is most useful when the data to be compressed is short and can be - predicted with good accuracy; the data can then be compressed better than - with the default empty dictionary. - - Depending on the size of the compression data structures selected by - deflateInit or deflateInit2, a part of the dictionary may in effect be - discarded, for example if the dictionary is larger than the window size - provided in deflateInit or deflateInit2. Thus the strings most likely to be - useful should be put at the end of the dictionary, not at the front. In - addition, the current implementation of deflate will use at most the window - size minus 262 bytes of the provided dictionary. - - Upon return of this function, strm->adler is set to the Adler-32 value - of the dictionary; the decompressor may later use this value to determine - which dictionary has been used by the compressor. (The Adler-32 value - applies to the whole dictionary even if only a subset of the dictionary is - actually used by the compressor.) If a raw deflate was requested, then the - Adler-32 value is not computed and strm->adler is not set. - - deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a - parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is - inconsistent (for example if deflate has already been called for this stream - or if not at a block boundary for raw deflate). deflateSetDictionary does - not perform any compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateGetDictionary(z_streamp strm, - Bytef *dictionary, - uInt *dictLength); -/* - Returns the sliding dictionary being maintained by deflate. dictLength is - set to the number of bytes in the dictionary, and that many bytes are copied - to dictionary. dictionary must have enough space, where 32768 bytes is - always enough. If deflateGetDictionary() is called with dictionary equal to - Z_NULL, then only the dictionary length is returned, and nothing is copied. - Similarly, if dictLength is Z_NULL, then it is not set. - - deflateGetDictionary() may return a length less than the window size, even - when more than the window size in input has been provided. It may return up - to 258 bytes less in that case, due to how zlib's implementation of deflate - manages the sliding window and lookahead for matches, where matches can be - up to 258 bytes long. If the application needs the last window-size bytes of - input, then that would need to be saved by the application outside of zlib. - - deflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the - stream state is inconsistent. -*/ - -ZEXTERN int ZEXPORT deflateCopy(z_streamp dest, - z_streamp source); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when several compression strategies will be - tried, for example when there are several ways of pre-processing the input - data with a filter. The streams that will be discarded should then be freed - by calling deflateEnd. Note that deflateCopy duplicates the internal - compression state which can be quite large, so this strategy is slow and can - consume lots of memory. - - deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being Z_NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT deflateReset(z_streamp strm); -/* - This function is equivalent to deflateEnd followed by deflateInit, but - does not free and reallocate the internal compression state. The stream - will leave the compression level and any other attributes that may have been - set unchanged. total_in, total_out, adler, and msg are initialized. - - deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL). -*/ - -ZEXTERN int ZEXPORT deflateParams(z_streamp strm, - int level, - int strategy); -/* - Dynamically update the compression level and compression strategy. The - interpretation of level and strategy is as in deflateInit2(). This can be - used to switch between compression and straight copy of the input data, or - to switch to a different kind of input data requiring a different strategy. - If the compression approach (which is a function of the level) or the - strategy is changed, and if there have been any deflate() calls since the - state was initialized or reset, then the input available so far is - compressed with the old level and strategy using deflate(strm, Z_BLOCK). - There are three approaches for the compression levels 0, 1..3, and 4..9 - respectively. The new level and strategy will take effect at the next call - of deflate(). - - If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does - not have enough output space to complete, then the parameter change will not - take effect. In this case, deflateParams() can be called again with the - same parameters and more output space to try again. - - In order to assure a change in the parameters on the first try, the - deflate stream should be flushed using deflate() with Z_BLOCK or other flush - request until strm.avail_out is not zero, before calling deflateParams(). - Then no more input data should be provided before the deflateParams() call. - If this is done, the old level and strategy will be applied to the data - compressed before deflateParams(), and the new level and strategy will be - applied to the data compressed after deflateParams(). - - deflateParams returns Z_OK on success, Z_STREAM_ERROR if the source stream - state was inconsistent or if a parameter was invalid, or Z_BUF_ERROR if - there was not enough output space to complete the compression of the - available input data before a change in the strategy or approach. Note that - in the case of a Z_BUF_ERROR, the parameters are not changed. A return - value of Z_BUF_ERROR is not fatal, in which case deflateParams() can be - retried with more output space. -*/ - -ZEXTERN int ZEXPORT deflateTune(z_streamp strm, - int good_length, - int max_lazy, - int nice_length, - int max_chain); -/* - Fine tune deflate's internal compression parameters. This should only be - used by someone who understands the algorithm used by zlib's deflate for - searching for the best matching string, and even then only by the most - fanatic optimizer trying to squeeze out the last compressed bit for their - specific input data. Read the deflate.c source code for the meaning of the - max_lazy, good_length, nice_length, and max_chain parameters. - - deflateTune() can be called after deflateInit() or deflateInit2(), and - returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. - */ - -ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm, - uLong sourceLen); -/* - deflateBound() returns an upper bound on the compressed size after - deflation of sourceLen bytes. It must be called after deflateInit() or - deflateInit2(), and after deflateSetHeader(), if used. This would be used - to allocate an output buffer for deflation in a single pass, and so would be - called before deflate(). If that first deflate() call is provided the - sourceLen input bytes, an output buffer allocated to the size returned by - deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed - to return Z_STREAM_END. Note that it is possible for the compressed size to - be larger than the value returned by deflateBound() if flush options other - than Z_FINISH or Z_NO_FLUSH are used. -*/ - -ZEXTERN int ZEXPORT deflatePending(z_streamp strm, - unsigned *pending, - int *bits); -/* - deflatePending() returns the number of bytes and bits of output that have - been generated, but not yet provided in the available output. The bytes not - provided would be due to the available output space having being consumed. - The number of bits of output not provided are between 0 and 7, where they - await more bits to join them in order to fill out a full byte. If pending - or bits are Z_NULL, then those values are not set. - - deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. - */ - -ZEXTERN int ZEXPORT deflatePrime(z_streamp strm, - int bits, - int value); -/* - deflatePrime() inserts bits in the deflate output stream. The intent - is that this function is used to start off the deflate output with the bits - leftover from a previous deflate stream when appending to it. As such, this - function can only be used for raw deflate, and must be used before the first - deflate() call after a deflateInit2() or deflateReset(). bits must be less - than or equal to 16, and that many of the least significant bits of value - will be inserted in the output. - - deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough - room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the - source stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT deflateSetHeader(z_streamp strm, - gz_headerp head); -/* - deflateSetHeader() provides gzip header information for when a gzip - stream is requested by deflateInit2(). deflateSetHeader() may be called - after deflateInit2() or deflateReset() and before the first call of - deflate(). The text, time, os, extra field, name, and comment information - in the provided gz_header structure are written to the gzip header (xflag is - ignored -- the extra flags are set according to the compression level). The - caller must assure that, if not Z_NULL, name and comment are terminated with - a zero byte, and that if extra is not Z_NULL, that extra_len bytes are - available there. If hcrc is true, a gzip header crc is included. Note that - the current versions of the command-line version of gzip (up through version - 1.3.x) do not support header crc's, and will report that it is a "multi-part - gzip file" and give up. - - If deflateSetHeader is not used, the default gzip header has text false, - the time set to zero, and os set to the current operating system, with no - extra, name, or comment fields. The gzip header is returned to the default - state by deflateReset(). - - deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateInit2(z_streamp strm, - int windowBits); - - This is another version of inflateInit with an extra parameter. The - fields next_in, avail_in, zalloc, zfree and opaque must be initialized - before by the caller. - - The windowBits parameter is the base two logarithm of the maximum window - size (the size of the history buffer). It should be in the range 8..15 for - this version of the library. The default value is 15 if inflateInit is used - instead. windowBits must be greater than or equal to the windowBits value - provided to deflateInit2() while compressing, or it must be equal to 15 if - deflateInit2() was not used. If a compressed stream with a larger window - size is given as input, inflate() will return with the error code - Z_DATA_ERROR instead of trying to allocate a larger window. - - windowBits can also be zero to request that inflate use the window size in - the zlib header of the compressed stream. - - windowBits can also be -8..-15 for raw inflate. In this case, -windowBits - determines the window size. inflate() will then process raw deflate data, - not looking for a zlib or gzip header, not generating a check value, and not - looking for any check values for comparison at the end of the stream. This - is for use with other formats that use the deflate compressed data format - such as zip. Those formats provide their own check values. If a custom - format is developed using the raw deflate format for compressed data, it is - recommended that a check value such as an Adler-32 or a CRC-32 be applied to - the uncompressed data as is done in the zlib, gzip, and zip formats. For - most applications, the zlib format should be used as is. Note that comments - above on the use in deflateInit2() applies to the magnitude of windowBits. - - windowBits can also be greater than 15 for optional gzip decoding. Add - 32 to windowBits to enable zlib and gzip decoding with automatic header - detection, or add 16 to decode only the gzip format (the zlib format will - return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a - CRC-32 instead of an Adler-32. Unlike the gunzip utility and gzread() (see - below), inflate() will *not* automatically decode concatenated gzip members. - inflate() will return Z_STREAM_END at the end of the gzip member. The state - would need to be reset to continue decoding a subsequent gzip member. This - *must* be done if there is more data after a gzip member, in order for the - decompression to be compliant with the gzip standard (RFC 1952). - - inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller, or Z_STREAM_ERROR if the parameters are - invalid, such as a null pointer to the structure. msg is set to null if - there is no error message. inflateInit2 does not perform any decompression - apart from possibly reading the zlib header if present: actual decompression - will be done by inflate(). (So next_in and avail_in may be modified, but - next_out and avail_out are unused and unchanged.) The current implementation - of inflateInit2() does not process any header information -- that is - deferred until inflate() is called. -*/ - -ZEXTERN int ZEXPORT inflateSetDictionary(z_streamp strm, - const Bytef *dictionary, - uInt dictLength); -/* - Initializes the decompression dictionary from the given uncompressed byte - sequence. This function must be called immediately after a call of inflate, - if that call returned Z_NEED_DICT. The dictionary chosen by the compressor - can be determined from the Adler-32 value returned by that call of inflate. - The compressor and decompressor must use exactly the same dictionary (see - deflateSetDictionary). For raw inflate, this function can be called at any - time to set the dictionary. If the provided dictionary is smaller than the - window and there is already data in the window, then the provided dictionary - will amend what's there. The application must insure that the dictionary - that was used for compression is provided. - - inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a - parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is - inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the - expected one (incorrect Adler-32 value). inflateSetDictionary does not - perform any decompression: this will be done by subsequent calls of - inflate(). -*/ - -ZEXTERN int ZEXPORT inflateGetDictionary(z_streamp strm, - Bytef *dictionary, - uInt *dictLength); -/* - Returns the sliding dictionary being maintained by inflate. dictLength is - set to the number of bytes in the dictionary, and that many bytes are copied - to dictionary. dictionary must have enough space, where 32768 bytes is - always enough. If inflateGetDictionary() is called with dictionary equal to - Z_NULL, then only the dictionary length is returned, and nothing is copied. - Similarly, if dictLength is Z_NULL, then it is not set. - - inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the - stream state is inconsistent. -*/ - -ZEXTERN int ZEXPORT inflateSync(z_streamp strm); -/* - Skips invalid compressed data until a possible full flush point (see above - for the description of deflate with Z_FULL_FLUSH) can be found, or until all - available input is skipped. No output is provided. - - inflateSync searches for a 00 00 FF FF pattern in the compressed data. - All full flush points have this pattern, but not all occurrences of this - pattern are full flush points. - - inflateSync returns Z_OK if a possible full flush point has been found, - Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point - has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. - In the success case, the application may save the current value of total_in - which indicates where valid compressed data was found. In the error case, - the application may repeatedly call inflateSync, providing more input each - time, until success or end of the input data. -*/ - -ZEXTERN int ZEXPORT inflateCopy(z_streamp dest, - z_streamp source); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when randomly accessing a large stream. The - first pass through the stream can periodically record the inflate state, - allowing restarting inflate at those points when randomly accessing the - stream. - - inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being Z_NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT inflateReset(z_streamp strm); -/* - This function is equivalent to inflateEnd followed by inflateInit, - but does not free and reallocate the internal decompression state. The - stream will keep attributes that may have been set by inflateInit2. - total_in, total_out, adler, and msg are initialized. - - inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL). -*/ - -ZEXTERN int ZEXPORT inflateReset2(z_streamp strm, - int windowBits); -/* - This function is the same as inflateReset, but it also permits changing - the wrap and window size requests. The windowBits parameter is interpreted - the same as it is for inflateInit2. If the window size is changed, then the - memory allocated for the window is freed, and the window will be reallocated - by inflate() if needed. - - inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL), or if - the windowBits parameter is invalid. -*/ - -ZEXTERN int ZEXPORT inflatePrime(z_streamp strm, - int bits, - int value); -/* - This function inserts bits in the inflate input stream. The intent is - that this function is used to start inflating at a bit position in the - middle of a byte. The provided bits will be used before any bytes are used - from next_in. This function should only be used with raw inflate, and - should be used before the first inflate() call after inflateInit2() or - inflateReset(). bits must be less than or equal to 16, and that many of the - least significant bits of value will be inserted in the input. - - If bits is negative, then the input stream bit buffer is emptied. Then - inflatePrime() can be called again to put bits in the buffer. This is used - to clear out bits leftover after feeding inflate a block description prior - to feeding inflate codes. - - inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -ZEXTERN long ZEXPORT inflateMark(z_streamp strm); -/* - This function returns two values, one in the lower 16 bits of the return - value, and the other in the remaining upper bits, obtained by shifting the - return value down 16 bits. If the upper value is -1 and the lower value is - zero, then inflate() is currently decoding information outside of a block. - If the upper value is -1 and the lower value is non-zero, then inflate is in - the middle of a stored block, with the lower value equaling the number of - bytes from the input remaining to copy. If the upper value is not -1, then - it is the number of bits back from the current bit position in the input of - the code (literal or length/distance pair) currently being processed. In - that case the lower value is the number of bytes already emitted for that - code. - - A code is being processed if inflate is waiting for more input to complete - decoding of the code, or if it has completed decoding but is waiting for - more output space to write the literal or match data. - - inflateMark() is used to mark locations in the input data for random - access, which may be at bit positions, and to note those cases where the - output of a code may span boundaries of random access blocks. The current - location in the input stream can be determined from avail_in and data_type - as noted in the description for the Z_BLOCK flush parameter for inflate. - - inflateMark returns the value noted above, or -65536 if the provided - source stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT inflateGetHeader(z_streamp strm, - gz_headerp head); -/* - inflateGetHeader() requests that gzip header information be stored in the - provided gz_header structure. inflateGetHeader() may be called after - inflateInit2() or inflateReset(), and before the first call of inflate(). - As inflate() processes the gzip stream, head->done is zero until the header - is completed, at which time head->done is set to one. If a zlib stream is - being decoded, then head->done is set to -1 to indicate that there will be - no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be - used to force inflate() to return immediately after header processing is - complete and before any actual data is decompressed. - - The text, time, xflags, and os fields are filled in with the gzip header - contents. hcrc is set to true if there is a header CRC. (The header CRC - was valid if done is set to one.) If extra is not Z_NULL, then extra_max - contains the maximum number of bytes to write to extra. Once done is true, - extra_len contains the actual extra field length, and extra contains the - extra field, or that field truncated if extra_max is less than extra_len. - If name is not Z_NULL, then up to name_max characters are written there, - terminated with a zero unless the length is greater than name_max. If - comment is not Z_NULL, then up to comm_max characters are written there, - terminated with a zero unless the length is greater than comm_max. When any - of extra, name, or comment are not Z_NULL and the respective field is not - present in the header, then that field is set to Z_NULL to signal its - absence. This allows the use of deflateSetHeader() with the returned - structure to duplicate the header. However if those fields are set to - allocated memory, then the application will need to save those pointers - elsewhere so that they can be eventually freed. - - If inflateGetHeader is not used, then the header information is simply - discarded. The header is always checked for validity, including the header - CRC if present. inflateReset() will reset the process to discard the header - information. The application would need to call inflateGetHeader() again to - retrieve the header from the next gzip stream. - - inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateBackInit(z_streamp strm, int windowBits, - unsigned char FAR *window); - - Initialize the internal stream state for decompression using inflateBack() - calls. The fields zalloc, zfree and opaque in strm must be initialized - before the call. If zalloc and zfree are Z_NULL, then the default library- - derived memory allocation routines are used. windowBits is the base two - logarithm of the window size, in the range 8..15. window is a caller - supplied buffer of that size. Except for special applications where it is - assured that deflate was used with small window sizes, windowBits must be 15 - and a 32K byte window must be supplied to be able to decompress general - deflate streams. - - See inflateBack() for the usage of these routines. - - inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of - the parameters are invalid, Z_MEM_ERROR if the internal state could not be - allocated, or Z_VERSION_ERROR if the version of the library does not match - the version of the header file. -*/ - -typedef unsigned (*in_func)(void FAR *, - z_const unsigned char FAR * FAR *); -typedef int (*out_func)(void FAR *, unsigned char FAR *, unsigned); - -ZEXTERN int ZEXPORT inflateBack(z_streamp strm, - in_func in, void FAR *in_desc, - out_func out, void FAR *out_desc); -/* - inflateBack() does a raw inflate with a single call using a call-back - interface for input and output. This is potentially more efficient than - inflate() for file i/o applications, in that it avoids copying between the - output and the sliding window by simply making the window itself the output - buffer. inflate() can be faster on modern CPUs when used with large - buffers. inflateBack() trusts the application to not change the output - buffer passed by the output function, at least until inflateBack() returns. - - inflateBackInit() must be called first to allocate the internal state - and to initialize the state with the user-provided window buffer. - inflateBack() may then be used multiple times to inflate a complete, raw - deflate stream with each call. inflateBackEnd() is then called to free the - allocated state. - - A raw deflate stream is one with no zlib or gzip header or trailer. - This routine would normally be used in a utility that reads zip or gzip - files and writes out uncompressed files. The utility would decode the - header and process the trailer on its own, hence this routine expects only - the raw deflate stream to decompress. This is different from the default - behavior of inflate(), which expects a zlib header and trailer around the - deflate stream. - - inflateBack() uses two subroutines supplied by the caller that are then - called by inflateBack() for input and output. inflateBack() calls those - routines until it reads a complete deflate stream and writes out all of the - uncompressed data, or until it encounters an error. The function's - parameters and return types are defined above in the in_func and out_func - typedefs. inflateBack() will call in(in_desc, &buf) which should return the - number of bytes of provided input, and a pointer to that input in buf. If - there is no input available, in() must return zero -- buf is ignored in that - case -- and inflateBack() will return a buffer error. inflateBack() will - call out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. - out() should return zero on success, or non-zero on failure. If out() - returns non-zero, inflateBack() will return with an error. Neither in() nor - out() are permitted to change the contents of the window provided to - inflateBackInit(), which is also the buffer that out() uses to write from. - The length written by out() will be at most the window size. Any non-zero - amount of input may be provided by in(). - - For convenience, inflateBack() can be provided input on the first call by - setting strm->next_in and strm->avail_in. If that input is exhausted, then - in() will be called. Therefore strm->next_in must be initialized before - calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called - immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in - must also be initialized, and then if strm->avail_in is not zero, input will - initially be taken from strm->next_in[0 .. strm->avail_in - 1]. - - The in_desc and out_desc parameters of inflateBack() is passed as the - first parameter of in() and out() respectively when they are called. These - descriptors can be optionally used to pass any information that the caller- - supplied in() and out() functions need to do their job. - - On return, inflateBack() will set strm->next_in and strm->avail_in to - pass back any unused input that was provided by the last in() call. The - return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR - if in() or out() returned an error, Z_DATA_ERROR if there was a format error - in the deflate stream (in which case strm->msg is set to indicate the nature - of the error), or Z_STREAM_ERROR if the stream was not properly initialized. - In the case of Z_BUF_ERROR, an input or output error can be distinguished - using strm->next_in which will be Z_NULL only if in() returned an error. If - strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning - non-zero. (in() will always be called before out(), so strm->next_in is - assured to be defined if out() returns non-zero.) Note that inflateBack() - cannot return Z_OK. -*/ - -ZEXTERN int ZEXPORT inflateBackEnd(z_streamp strm); -/* - All memory allocated by inflateBackInit() is freed. - - inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream - state was inconsistent. -*/ - -ZEXTERN uLong ZEXPORT zlibCompileFlags(void); -/* Return flags indicating compile-time options. - - Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: - 1.0: size of uInt - 3.2: size of uLong - 5.4: size of voidpf (pointer) - 7.6: size of z_off_t - - Compiler, assembler, and debug options: - 8: ZLIB_DEBUG - 9: ASMV or ASMINF -- use ASM code - 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention - 11: 0 (reserved) - - One-time table building (smaller code, but not thread-safe if true): - 12: BUILDFIXED -- build static block decoding tables when needed - 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed - 14,15: 0 (reserved) - - Library content (indicates missing functionality): - 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking - deflate code when not needed) - 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect - and decode gzip streams (to avoid linking crc code) - 18-19: 0 (reserved) - - Operation variations (changes in library functionality): - 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate - 21: FASTEST -- deflate algorithm with only one, lowest compression level - 22,23: 0 (reserved) - - The sprintf variant used by gzprintf (zero is best): - 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format - 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! - 26: 0 = returns value, 1 = void -- 1 means inferred string length returned - - Remainder: - 27-31: 0 (reserved) - */ - -#ifndef Z_SOLO - - /* utility functions */ - -/* - The following utility functions are implemented on top of the basic - stream-oriented functions. To simplify the interface, some default options - are assumed (compression level and memory usage, standard memory allocation - functions). The source code of these utility functions can be modified if - you need special options. -*/ - -ZEXTERN int ZEXPORT compress(Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen); -/* - Compresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total size - of the destination buffer, which must be at least the value returned by - compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed data. compress() is equivalent to compress2() with a level - parameter of Z_DEFAULT_COMPRESSION. - - compress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer. -*/ - -ZEXTERN int ZEXPORT compress2(Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen, - int level); -/* - Compresses the source buffer into the destination buffer. The level - parameter has the same meaning as in deflateInit. sourceLen is the byte - length of the source buffer. Upon entry, destLen is the total size of the - destination buffer, which must be at least the value returned by - compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed data. - - compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_BUF_ERROR if there was not enough room in the output buffer, - Z_STREAM_ERROR if the level parameter is invalid. -*/ - -ZEXTERN uLong ZEXPORT compressBound(uLong sourceLen); -/* - compressBound() returns an upper bound on the compressed size after - compress() or compress2() on sourceLen bytes. It would be used before a - compress() or compress2() call to allocate the destination buffer. -*/ - -ZEXTERN int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen); -/* - Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total size - of the destination buffer, which must be large enough to hold the entire - uncompressed data. (The size of the uncompressed data must have been saved - previously by the compressor and transmitted to the decompressor by some - mechanism outside the scope of this compression library.) Upon exit, destLen - is the actual size of the uncompressed data. - - uncompress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In - the case where there is not enough room, uncompress() will fill the output - buffer with the uncompressed data up to that point. -*/ - -ZEXTERN int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, - const Bytef *source, uLong *sourceLen); -/* - Same as uncompress, except that sourceLen is a pointer, where the - length of the source is *sourceLen. On return, *sourceLen is the number of - source bytes consumed. -*/ - - /* gzip file access functions */ - -/* - This library supports reading and writing files in gzip (.gz) format with - an interface similar to that of stdio, using the functions that start with - "gz". The gzip format is different from the zlib format. gzip is a gzip - wrapper, documented in RFC 1952, wrapped around a deflate stream. -*/ - -typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ - -/* -ZEXTERN gzFile ZEXPORT gzopen(const char *path, const char *mode); - - Open the gzip (.gz) file at path for reading and decompressing, or - compressing and writing. The mode parameter is as in fopen ("rb" or "wb") - but can also include a compression level ("wb9") or a strategy: 'f' for - filtered data as in "wb6f", 'h' for Huffman-only compression as in "wb1h", - 'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression - as in "wb9F". (See the description of deflateInit2 for more information - about the strategy parameter.) 'T' will request transparent writing or - appending with no compression and not using the gzip format. - - "a" can be used instead of "w" to request that the gzip stream that will - be written be appended to the file. "+" will result in an error, since - reading and writing to the same gzip file is not supported. The addition of - "x" when writing will create the file exclusively, which fails if the file - already exists. On systems that support it, the addition of "e" when - reading or writing will set the flag to close the file on an execve() call. - - These functions, as well as gzip, will read and decode a sequence of gzip - streams in a file. The append function of gzopen() can be used to create - such a file. (Also see gzflush() for another way to do this.) When - appending, gzopen does not test whether the file begins with a gzip stream, - nor does it look for the end of the gzip streams to begin appending. gzopen - will simply append a gzip stream to the existing file. - - gzopen can be used to read a file which is not in gzip format; in this - case gzread will directly read from the file without decompression. When - reading, this will be detected automatically by looking for the magic two- - byte gzip header. - - gzopen returns NULL if the file could not be opened, if there was - insufficient memory to allocate the gzFile state, or if an invalid mode was - specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). - errno can be checked to determine if the reason gzopen failed was that the - file could not be opened. -*/ - -ZEXTERN gzFile ZEXPORT gzdopen(int fd, const char *mode); -/* - Associate a gzFile with the file descriptor fd. File descriptors are - obtained from calls like open, dup, creat, pipe or fileno (if the file has - been previously opened with fopen). The mode parameter is as in gzopen. - - The next call of gzclose on the returned gzFile will also close the file - descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor - fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, - mode);. The duplicated descriptor should be saved to avoid a leak, since - gzdopen does not close fd if it fails. If you are using fileno() to get the - file descriptor from a FILE *, then you will have to use dup() to avoid - double-close()ing the file descriptor. Both gzclose() and fclose() will - close the associated file descriptor, so they need to have different file - descriptors. - - gzdopen returns NULL if there was insufficient memory to allocate the - gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not - provided, or '+' was provided), or if fd is -1. The file descriptor is not - used until the next gz* read, write, seek, or close operation, so gzdopen - will not detect if fd is invalid (unless fd is -1). -*/ - -ZEXTERN int ZEXPORT gzbuffer(gzFile file, unsigned size); -/* - Set the internal buffer size used by this library's functions for file to - size. The default buffer size is 8192 bytes. This function must be called - after gzopen() or gzdopen(), and before any other calls that read or write - the file. The buffer memory allocation is always deferred to the first read - or write. Three times that size in buffer space is allocated. A larger - buffer size of, for example, 64K or 128K bytes will noticeably increase the - speed of decompression (reading). - - The new buffer size also affects the maximum length for gzprintf(). - - gzbuffer() returns 0 on success, or -1 on failure, such as being called - too late. -*/ - -ZEXTERN int ZEXPORT gzsetparams(gzFile file, int level, int strategy); -/* - Dynamically update the compression level and strategy for file. See the - description of deflateInit2 for the meaning of these parameters. Previously - provided data is flushed before applying the parameter changes. - - gzsetparams returns Z_OK if success, Z_STREAM_ERROR if the file was not - opened for writing, Z_ERRNO if there is an error writing the flushed data, - or Z_MEM_ERROR if there is a memory allocation error. -*/ - -ZEXTERN int ZEXPORT gzread(gzFile file, voidp buf, unsigned len); -/* - Read and decompress up to len uncompressed bytes from file into buf. If - the input file is not in gzip format, gzread copies the given number of - bytes into the buffer directly from the file. - - After reaching the end of a gzip stream in the input, gzread will continue - to read, looking for another gzip stream. Any number of gzip streams may be - concatenated in the input file, and will all be decompressed by gzread(). - If something other than a gzip stream is encountered after a gzip stream, - that remaining trailing garbage is ignored (and no error is returned). - - gzread can be used to read a gzip file that is being concurrently written. - Upon reaching the end of the input, gzread will return with the available - data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then - gzclearerr can be used to clear the end of file indicator in order to permit - gzread to be tried again. Z_OK indicates that a gzip stream was completed - on the last gzread. Z_BUF_ERROR indicates that the input file ended in the - middle of a gzip stream. Note that gzread does not return -1 in the event - of an incomplete gzip stream. This error is deferred until gzclose(), which - will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip - stream. Alternatively, gzerror can be used before gzclose to detect this - case. - - gzread returns the number of uncompressed bytes actually read, less than - len for end of file, or -1 for error. If len is too large to fit in an int, - then nothing is read, -1 is returned, and the error state is set to - Z_STREAM_ERROR. -*/ - -ZEXTERN z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, - gzFile file); -/* - Read and decompress up to nitems items of size size from file into buf, - otherwise operating as gzread() does. This duplicates the interface of - stdio's fread(), with size_t request and return types. If the library - defines size_t, then z_size_t is identical to size_t. If not, then z_size_t - is an unsigned integer type that can contain a pointer. - - gzfread() returns the number of full items read of size size, or zero if - the end of the file was reached and a full item could not be read, or if - there was an error. gzerror() must be consulted if zero is returned in - order to determine if there was an error. If the multiplication of size and - nitems overflows, i.e. the product does not fit in a z_size_t, then nothing - is read, zero is returned, and the error state is set to Z_STREAM_ERROR. - - In the event that the end of file is reached and only a partial item is - available at the end, i.e. the remaining uncompressed data length is not a - multiple of size, then the final partial item is nevertheless read into buf - and the end-of-file flag is set. The length of the partial item read is not - provided, but could be inferred from the result of gztell(). This behavior - is the same as the behavior of fread() implementations in common libraries, - but it prevents the direct use of gzfread() to read a concurrently written - file, resetting and retrying on end-of-file, when size is not 1. -*/ - -ZEXTERN int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len); -/* - Compress and write the len uncompressed bytes at buf to file. gzwrite - returns the number of uncompressed bytes written or 0 in case of error. -*/ - -ZEXTERN z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, - z_size_t nitems, gzFile file); -/* - Compress and write nitems items of size size from buf to file, duplicating - the interface of stdio's fwrite(), with size_t request and return types. If - the library defines size_t, then z_size_t is identical to size_t. If not, - then z_size_t is an unsigned integer type that can contain a pointer. - - gzfwrite() returns the number of full items written of size size, or zero - if there was an error. If the multiplication of size and nitems overflows, - i.e. the product does not fit in a z_size_t, then nothing is written, zero - is returned, and the error state is set to Z_STREAM_ERROR. -*/ - -ZEXTERN int ZEXPORTVA gzprintf(gzFile file, const char *format, ...); -/* - Convert, format, compress, and write the arguments (...) to file under - control of the string format, as in fprintf. gzprintf returns the number of - uncompressed bytes actually written, or a negative zlib error code in case - of error. The number of uncompressed bytes written is limited to 8191, or - one less than the buffer size given to gzbuffer(). The caller should assure - that this limit is not exceeded. If it is exceeded, then gzprintf() will - return an error (0) with nothing written. In this case, there may also be a - buffer overflow with unpredictable consequences, which is possible only if - zlib was compiled with the insecure functions sprintf() or vsprintf(), - because the secure snprintf() or vsnprintf() functions were not available. - This can be determined using zlibCompileFlags(). -*/ - -ZEXTERN int ZEXPORT gzputs(gzFile file, const char *s); -/* - Compress and write the given null-terminated string s to file, excluding - the terminating null character. - - gzputs returns the number of characters written, or -1 in case of error. -*/ - -ZEXTERN char * ZEXPORT gzgets(gzFile file, char *buf, int len); -/* - Read and decompress bytes from file into buf, until len-1 characters are - read, or until a newline character is read and transferred to buf, or an - end-of-file condition is encountered. If any characters are read or if len - is one, the string is terminated with a null character. If no characters - are read due to an end-of-file or len is less than one, then the buffer is - left untouched. - - gzgets returns buf which is a null-terminated string, or it returns NULL - for end-of-file or in case of error. If there was an error, the contents at - buf are indeterminate. -*/ - -ZEXTERN int ZEXPORT gzputc(gzFile file, int c); -/* - Compress and write c, converted to an unsigned char, into file. gzputc - returns the value that was written, or -1 in case of error. -*/ - -ZEXTERN int ZEXPORT gzgetc(gzFile file); -/* - Read and decompress one byte from file. gzgetc returns this byte or -1 - in case of end of file or error. This is implemented as a macro for speed. - As such, it does not do all of the checking the other functions do. I.e. - it does not check to see if file is NULL, nor whether the structure file - points to has been clobbered or not. -*/ - -ZEXTERN int ZEXPORT gzungetc(int c, gzFile file); -/* - Push c back onto the stream for file to be read as the first character on - the next read. At least one character of push-back is always allowed. - gzungetc() returns the character pushed, or -1 on failure. gzungetc() will - fail if c is -1, and may fail if a character has been pushed but not read - yet. If gzungetc is used immediately after gzopen or gzdopen, at least the - output buffer size of pushed characters is allowed. (See gzbuffer above.) - The pushed character will be discarded if the stream is repositioned with - gzseek() or gzrewind(). -*/ - -ZEXTERN int ZEXPORT gzflush(gzFile file, int flush); -/* - Flush all pending output to file. The parameter flush is as in the - deflate() function. The return value is the zlib error number (see function - gzerror below). gzflush is only permitted when writing. - - If the flush parameter is Z_FINISH, the remaining data is written and the - gzip stream is completed in the output. If gzwrite() is called again, a new - gzip stream will be started in the output. gzread() is able to read such - concatenated gzip streams. - - gzflush should be called only when strictly necessary because it will - degrade compression if called too often. -*/ - -/* -ZEXTERN z_off_t ZEXPORT gzseek(gzFile file, - z_off_t offset, int whence); - - Set the starting position to offset relative to whence for the next gzread - or gzwrite on file. The offset represents a number of bytes in the - uncompressed data stream. The whence parameter is defined as in lseek(2); - the value SEEK_END is not supported. - - If the file is opened for reading, this function is emulated but can be - extremely slow. If the file is opened for writing, only forward seeks are - supported; gzseek then compresses a sequence of zeroes up to the new - starting position. - - gzseek returns the resulting offset location as measured in bytes from - the beginning of the uncompressed stream, or -1 in case of error, in - particular if the file is opened for writing and the new starting position - would be before the current position. -*/ - -ZEXTERN int ZEXPORT gzrewind(gzFile file); -/* - Rewind file. This function is supported only for reading. - - gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET). -*/ - -/* -ZEXTERN z_off_t ZEXPORT gztell(gzFile file); - - Return the starting position for the next gzread or gzwrite on file. - This position represents a number of bytes in the uncompressed data stream, - and is zero when starting, even if appending or reading a gzip stream from - the middle of a file using gzdopen(). - - gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) -*/ - -/* -ZEXTERN z_off_t ZEXPORT gzoffset(gzFile file); - - Return the current compressed (actual) read or write offset of file. This - offset includes the count of bytes that precede the gzip stream, for example - when appending or when using gzdopen() for reading. When reading, the - offset does not include as yet unused buffered input. This information can - be used for a progress indicator. On error, gzoffset() returns -1. -*/ - -ZEXTERN int ZEXPORT gzeof(gzFile file); -/* - Return true (1) if the end-of-file indicator for file has been set while - reading, false (0) otherwise. Note that the end-of-file indicator is set - only if the read tried to go past the end of the input, but came up short. - Therefore, just like feof(), gzeof() may return false even if there is no - more data to read, in the event that the last read request was for the exact - number of bytes remaining in the input file. This will happen if the input - file size is an exact multiple of the buffer size. - - If gzeof() returns true, then the read functions will return no more data, - unless the end-of-file indicator is reset by gzclearerr() and the input file - has grown since the previous end of file was detected. -*/ - -ZEXTERN int ZEXPORT gzdirect(gzFile file); -/* - Return true (1) if file is being copied directly while reading, or false - (0) if file is a gzip stream being decompressed. - - If the input file is empty, gzdirect() will return true, since the input - does not contain a gzip stream. - - If gzdirect() is used immediately after gzopen() or gzdopen() it will - cause buffers to be allocated to allow reading the file to determine if it - is a gzip file. Therefore if gzbuffer() is used, it should be called before - gzdirect(). - - When writing, gzdirect() returns true (1) if transparent writing was - requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: - gzdirect() is not needed when writing. Transparent writing must be - explicitly requested, so the application already knows the answer. When - linking statically, using gzdirect() will include all of the zlib code for - gzip file reading and decompression, which may not be desired.) -*/ - -ZEXTERN int ZEXPORT gzclose(gzFile file); -/* - Flush all pending output for file, if necessary, close file and - deallocate the (de)compression state. Note that once file is closed, you - cannot call gzerror with file, since its structures have been deallocated. - gzclose must not be called more than once on the same file, just as free - must not be called more than once on the same allocation. - - gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a - file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the - last read ended in the middle of a gzip stream, or Z_OK on success. -*/ - -ZEXTERN int ZEXPORT gzclose_r(gzFile file); -ZEXTERN int ZEXPORT gzclose_w(gzFile file); -/* - Same as gzclose(), but gzclose_r() is only for use when reading, and - gzclose_w() is only for use when writing or appending. The advantage to - using these instead of gzclose() is that they avoid linking in zlib - compression or decompression code that is not used when only reading or only - writing respectively. If gzclose() is used, then both compression and - decompression code will be included the application when linking to a static - zlib library. -*/ - -ZEXTERN const char * ZEXPORT gzerror(gzFile file, int *errnum); -/* - Return the error message for the last error which occurred on file. - errnum is set to zlib error number. If an error occurred in the file system - and not in the compression library, errnum is set to Z_ERRNO and the - application may consult errno to get the exact error code. - - The application must not modify the returned string. Future calls to - this function may invalidate the previously returned string. If file is - closed, then the string previously returned by gzerror will no longer be - available. - - gzerror() should be used to distinguish errors from end-of-file for those - functions above that do not distinguish those cases in their return values. -*/ - -ZEXTERN void ZEXPORT gzclearerr(gzFile file); -/* - Clear the error and end-of-file flags for file. This is analogous to the - clearerr() function in stdio. This is useful for continuing to read a gzip - file that is being written concurrently. -*/ - -#endif /* !Z_SOLO */ - - /* checksum functions */ - -/* - These functions are not related to compression but are exported - anyway because they might be useful in applications using the compression - library. -*/ - -ZEXTERN uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len); -/* - Update a running Adler-32 checksum with the bytes buf[0..len-1] and - return the updated checksum. An Adler-32 value is in the range of a 32-bit - unsigned integer. If buf is Z_NULL, this function returns the required - initial value for the checksum. - - An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed - much faster. - - Usage example: - - uLong adler = adler32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - adler = adler32(adler, buffer, length); - } - if (adler != original_adler) error(); -*/ - -ZEXTERN uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, - z_size_t len); -/* - Same as adler32(), but with a size_t length. -*/ - -/* -ZEXTERN uLong ZEXPORT adler32_combine(uLong adler1, uLong adler2, - z_off_t len2); - - Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 - and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for - each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of - seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note - that the z_off_t type (like off_t) is a signed integer. If len2 is - negative, the result has no meaning or utility. -*/ - -ZEXTERN uLong ZEXPORT crc32(uLong crc, const Bytef *buf, uInt len); -/* - Update a running CRC-32 with the bytes buf[0..len-1] and return the - updated CRC-32. A CRC-32 value is in the range of a 32-bit unsigned integer. - If buf is Z_NULL, this function returns the required initial value for the - crc. Pre- and post-conditioning (one's complement) is performed within this - function so it shouldn't be done by the application. - - Usage example: - - uLong crc = crc32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - crc = crc32(crc, buffer, length); - } - if (crc != original_crc) error(); -*/ - -ZEXTERN uLong ZEXPORT crc32_z(uLong crc, const Bytef *buf, - z_size_t len); -/* - Same as crc32(), but with a size_t length. -*/ - -/* -ZEXTERN uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2); - - Combine two CRC-32 check values into one. For two sequences of bytes, - seq1 and seq2 with lengths len1 and len2, CRC-32 check values were - calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 - check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and - len2. len2 must be non-negative. -*/ - -/* -ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t len2); - - Return the operator corresponding to length len2, to be used with - crc32_combine_op(). len2 must be non-negative. -*/ - -ZEXTERN uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op); -/* - Give the same result as crc32_combine(), using op in place of len2. op is - is generated from len2 by crc32_combine_gen(). This will be faster than - crc32_combine() if the generated op is used more than once. -*/ - - - /* various hacks, don't look :) */ - -/* deflateInit and inflateInit are macros to allow checking the zlib version - * and the compiler's view of z_stream: - */ -ZEXTERN int ZEXPORT deflateInit_(z_streamp strm, int level, - const char *version, int stream_size); -ZEXTERN int ZEXPORT inflateInit_(z_streamp strm, - const char *version, int stream_size); -ZEXTERN int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, - int windowBits, int memLevel, - int strategy, const char *version, - int stream_size); -ZEXTERN int ZEXPORT inflateInit2_(z_streamp strm, int windowBits, - const char *version, int stream_size); -ZEXTERN int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits, - unsigned char FAR *window, - const char *version, - int stream_size); -#ifdef Z_PREFIX_SET -# define z_deflateInit(strm, level) \ - deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) -# define z_inflateInit(strm) \ - inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) -# define z_deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ - deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ - (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) -# define z_inflateInit2(strm, windowBits) \ - inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ - (int)sizeof(z_stream)) -# define z_inflateBackInit(strm, windowBits, window) \ - inflateBackInit_((strm), (windowBits), (window), \ - ZLIB_VERSION, (int)sizeof(z_stream)) -#else -# define deflateInit(strm, level) \ - deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) -# define inflateInit(strm) \ - inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) -# define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ - deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ - (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) -# define inflateInit2(strm, windowBits) \ - inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ - (int)sizeof(z_stream)) -# define inflateBackInit(strm, windowBits, window) \ - inflateBackInit_((strm), (windowBits), (window), \ - ZLIB_VERSION, (int)sizeof(z_stream)) -#endif - -#ifndef Z_SOLO - -/* gzgetc() macro and its supporting function and exposed data structure. Note - * that the real internal state is much larger than the exposed structure. - * This abbreviated structure exposes just enough for the gzgetc() macro. The - * user should not mess with these exposed elements, since their names or - * behavior could change in the future, perhaps even capriciously. They can - * only be used by the gzgetc() macro. You have been warned. - */ -struct gzFile_s { - unsigned have; - unsigned char *next; - z_off64_t pos; -}; -ZEXTERN int ZEXPORT gzgetc_(gzFile file); /* backward compatibility */ -#ifdef Z_PREFIX_SET -# undef z_gzgetc -# define z_gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) -#else -# define gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) -#endif - -/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or - * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if - * both are true, the application gets the *64 functions, and the regular - * functions are changed to 64 bits) -- in case these are set on systems - * without large file support, _LFS64_LARGEFILE must also be true - */ -#ifdef Z_LARGE64 - ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *); - ZEXTERN z_off64_t ZEXPORT gzseek64(gzFile, z_off64_t, int); - ZEXTERN z_off64_t ZEXPORT gztell64(gzFile); - ZEXTERN z_off64_t ZEXPORT gzoffset64(gzFile); - ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off64_t); - ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off64_t); - ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off64_t); -#endif - -#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) -# ifdef Z_PREFIX_SET -# define z_gzopen z_gzopen64 -# define z_gzseek z_gzseek64 -# define z_gztell z_gztell64 -# define z_gzoffset z_gzoffset64 -# define z_adler32_combine z_adler32_combine64 -# define z_crc32_combine z_crc32_combine64 -# define z_crc32_combine_gen z_crc32_combine_gen64 -# else -# define gzopen gzopen64 -# define gzseek gzseek64 -# define gztell gztell64 -# define gzoffset gzoffset64 -# define adler32_combine adler32_combine64 -# define crc32_combine crc32_combine64 -# define crc32_combine_gen crc32_combine_gen64 -# endif -# ifndef Z_LARGE64 - ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *); - ZEXTERN z_off_t ZEXPORT gzseek64(gzFile, z_off_t, int); - ZEXTERN z_off_t ZEXPORT gztell64(gzFile); - ZEXTERN z_off_t ZEXPORT gzoffset64(gzFile); - ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off_t); - ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t); - ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t); -# endif -#else - ZEXTERN gzFile ZEXPORT gzopen(const char *, const char *); - ZEXTERN z_off_t ZEXPORT gzseek(gzFile, z_off_t, int); - ZEXTERN z_off_t ZEXPORT gztell(gzFile); - ZEXTERN z_off_t ZEXPORT gzoffset(gzFile); - ZEXTERN uLong ZEXPORT adler32_combine(uLong, uLong, z_off_t); - ZEXTERN uLong ZEXPORT crc32_combine(uLong, uLong, z_off_t); - ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t); -#endif - -#else /* Z_SOLO */ - - ZEXTERN uLong ZEXPORT adler32_combine(uLong, uLong, z_off_t); - ZEXTERN uLong ZEXPORT crc32_combine(uLong, uLong, z_off_t); - ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t); - -#endif /* !Z_SOLO */ - -/* undocumented functions */ -ZEXTERN const char * ZEXPORT zError(int); -ZEXTERN int ZEXPORT inflateSyncPoint(z_streamp); -ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table(void); -ZEXTERN int ZEXPORT inflateUndermine(z_streamp, int); -ZEXTERN int ZEXPORT inflateValidate(z_streamp, int); -ZEXTERN unsigned long ZEXPORT inflateCodesUsed(z_streamp); -ZEXTERN int ZEXPORT inflateResetKeep(z_streamp); -ZEXTERN int ZEXPORT deflateResetKeep(z_streamp); -#if defined(_WIN32) && !defined(Z_SOLO) -ZEXTERN gzFile ZEXPORT gzopen_w(const wchar_t *path, - const char *mode); -#endif -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -ZEXTERN int ZEXPORTVA gzvprintf(gzFile file, - const char *format, - va_list va); -# endif -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* ZLIB_H */ diff --git a/server/2015Remote/zlib.lib b/server/2015Remote/zlib.lib deleted file mode 100644 index 019c89fc2e798856ec288c29794fe64367f6737b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116514 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 /* INT_MAX */ -#include /* size_t */ - - -/* ===== ZSTDLIB_API : control library symbols visibility ===== */ -#ifndef ZSTDLIB_VISIBLE - /* Backwards compatibility with old macro name */ -# ifdef ZSTDLIB_VISIBILITY -# define ZSTDLIB_VISIBLE ZSTDLIB_VISIBILITY -# elif defined(__GNUC__) && (__GNUC__ >= 4) && !defined(__MINGW32__) -# define ZSTDLIB_VISIBLE __attribute__ ((visibility ("default"))) -# else -# define ZSTDLIB_VISIBLE -# endif -#endif - -#ifndef ZSTDLIB_HIDDEN -# if defined(__GNUC__) && (__GNUC__ >= 4) && !defined(__MINGW32__) -# define ZSTDLIB_HIDDEN __attribute__ ((visibility ("hidden"))) -# else -# define ZSTDLIB_HIDDEN -# endif -#endif - -#if defined(ZSTD_DLL_EXPORT) && (ZSTD_DLL_EXPORT==1) -# define ZSTDLIB_API __declspec(dllexport) ZSTDLIB_VISIBLE -#elif defined(ZSTD_DLL_IMPORT) && (ZSTD_DLL_IMPORT==1) -# define ZSTDLIB_API __declspec(dllimport) ZSTDLIB_VISIBLE /* It isn't required but allows to generate better code, saving a function pointer load from the IAT and an indirect jump.*/ -#else -# define ZSTDLIB_API ZSTDLIB_VISIBLE -#endif - -/* Deprecation warnings : - * Should these warnings be a problem, it is generally possible to disable them, - * typically with -Wno-deprecated-declarations for gcc or _CRT_SECURE_NO_WARNINGS in Visual. - * Otherwise, it's also possible to define ZSTD_DISABLE_DEPRECATE_WARNINGS. - */ -#ifdef ZSTD_DISABLE_DEPRECATE_WARNINGS -# define ZSTD_DEPRECATED(message) /* disable deprecation warnings */ -#else -# if defined (__cplusplus) && (__cplusplus >= 201402) /* C++14 or greater */ -# define ZSTD_DEPRECATED(message) [[deprecated(message)]] -# elif (defined(GNUC) && (GNUC > 4 || (GNUC == 4 && GNUC_MINOR >= 5))) || defined(__clang__) -# define ZSTD_DEPRECATED(message) __attribute__((deprecated(message))) -# elif defined(__GNUC__) && (__GNUC__ >= 3) -# define ZSTD_DEPRECATED(message) __attribute__((deprecated)) -# elif defined(_MSC_VER) -# define ZSTD_DEPRECATED(message) __declspec(deprecated(message)) -# else -# pragma message("WARNING: You need to implement ZSTD_DEPRECATED for this compiler") -# define ZSTD_DEPRECATED(message) -# endif -#endif /* ZSTD_DISABLE_DEPRECATE_WARNINGS */ - - -/******************************************************************************* - Introduction - - zstd, short for Zstandard, is a fast lossless compression algorithm, targeting - real-time compression scenarios at zlib-level and better compression ratios. - The zstd compression library provides in-memory compression and decompression - functions. - - The library supports regular compression levels from 1 up to ZSTD_maxCLevel(), - which is currently 22. Levels >= 20, labeled `--ultra`, should be used with - caution, as they require more memory. The library also offers negative - compression levels, which extend the range of speed vs. ratio preferences. - The lower the level, the faster the speed (at the cost of compression). - - Compression can be done in: - - a single step (described as Simple API) - - a single step, reusing a context (described as Explicit context) - - unbounded multiple steps (described as Streaming compression) - - The compression ratio achievable on small data can be highly improved using - a dictionary. Dictionary compression can be performed in: - - a single step (described as Simple dictionary API) - - a single step, reusing a dictionary (described as Bulk-processing - dictionary API) - - Advanced experimental functions can be accessed using - `#define ZSTD_STATIC_LINKING_ONLY` before including zstd.h. - - Advanced experimental APIs should never be used with a dynamically-linked - library. They are not "stable"; their definitions or signatures may change in - the future. Only static linking is allowed. -*******************************************************************************/ - -/*------ Version ------*/ -#define ZSTD_VERSION_MAJOR 1 -#define ZSTD_VERSION_MINOR 5 -#define ZSTD_VERSION_RELEASE 6 -#define ZSTD_VERSION_NUMBER (ZSTD_VERSION_MAJOR *100*100 + ZSTD_VERSION_MINOR *100 + ZSTD_VERSION_RELEASE) - -/*! ZSTD_versionNumber() : - * Return runtime library version, the value is (MAJOR*100*100 + MINOR*100 + RELEASE). */ -ZSTDLIB_API unsigned ZSTD_versionNumber(void); - -#define ZSTD_LIB_VERSION ZSTD_VERSION_MAJOR.ZSTD_VERSION_MINOR.ZSTD_VERSION_RELEASE -#define ZSTD_QUOTE(str) #str -#define ZSTD_EXPAND_AND_QUOTE(str) ZSTD_QUOTE(str) -#define ZSTD_VERSION_STRING ZSTD_EXPAND_AND_QUOTE(ZSTD_LIB_VERSION) - -/*! ZSTD_versionString() : - * Return runtime library version, like "1.4.5". Requires v1.3.0+. */ -ZSTDLIB_API const char* ZSTD_versionString(void); - -/* ************************************* - * Default constant - ***************************************/ -#ifndef ZSTD_CLEVEL_DEFAULT -# define ZSTD_CLEVEL_DEFAULT 3 -#endif - -/* ************************************* - * Constants - ***************************************/ - -/* All magic numbers are supposed read/written to/from files/memory using little-endian convention */ -#define ZSTD_MAGICNUMBER 0xFD2FB528 /* valid since v0.8.0 */ -#define ZSTD_MAGIC_DICTIONARY 0xEC30A437 /* valid since v0.7.0 */ -#define ZSTD_MAGIC_SKIPPABLE_START 0x184D2A50 /* all 16 values, from 0x184D2A50 to 0x184D2A5F, signal the beginning of a skippable frame */ -#define ZSTD_MAGIC_SKIPPABLE_MASK 0xFFFFFFF0 - -#define ZSTD_BLOCKSIZELOG_MAX 17 -#define ZSTD_BLOCKSIZE_MAX (1<= ZSTD_compressBound(srcSize)` guarantees that zstd will have - * enough space to successfully compress the data. - * @return : compressed size written into `dst` (<= `dstCapacity), - * or an error code if it fails (which can be tested using ZSTD_isError()). */ -ZSTDLIB_API size_t ZSTD_compress( void* dst, size_t dstCapacity, - const void* src, size_t srcSize, - int compressionLevel); - -/*! ZSTD_decompress() : - * `compressedSize` : must be the _exact_ size of some number of compressed and/or skippable frames. - * `dstCapacity` is an upper bound of originalSize to regenerate. - * If user cannot imply a maximum upper bound, it's better to use streaming mode to decompress data. - * @return : the number of bytes decompressed into `dst` (<= `dstCapacity`), - * or an errorCode if it fails (which can be tested using ZSTD_isError()). */ -ZSTDLIB_API size_t ZSTD_decompress( void* dst, size_t dstCapacity, - const void* src, size_t compressedSize); - -/*! ZSTD_getFrameContentSize() : requires v1.3.0+ - * `src` should point to the start of a ZSTD encoded frame. - * `srcSize` must be at least as large as the frame header. - * hint : any size >= `ZSTD_frameHeaderSize_max` is large enough. - * @return : - decompressed size of `src` frame content, if known - * - ZSTD_CONTENTSIZE_UNKNOWN if the size cannot be determined - * - ZSTD_CONTENTSIZE_ERROR if an error occurred (e.g. invalid magic number, srcSize too small) - * note 1 : a 0 return value means the frame is valid but "empty". - * note 2 : decompressed size is an optional field, it may not be present, typically in streaming mode. - * When `return==ZSTD_CONTENTSIZE_UNKNOWN`, data to decompress could be any size. - * In which case, it's necessary to use streaming mode to decompress data. - * Optionally, application can rely on some implicit limit, - * as ZSTD_decompress() only needs an upper bound of decompressed size. - * (For example, data could be necessarily cut into blocks <= 16 KB). - * note 3 : decompressed size is always present when compression is completed using single-pass functions, - * such as ZSTD_compress(), ZSTD_compressCCtx() ZSTD_compress_usingDict() or ZSTD_compress_usingCDict(). - * note 4 : decompressed size can be very large (64-bits value), - * potentially larger than what local system can handle as a single memory segment. - * In which case, it's necessary to use streaming mode to decompress data. - * note 5 : If source is untrusted, decompressed size could be wrong or intentionally modified. - * Always ensure return value fits within application's authorized limits. - * Each application can set its own limits. - * note 6 : This function replaces ZSTD_getDecompressedSize() */ -#define ZSTD_CONTENTSIZE_UNKNOWN (0ULL - 1) -#define ZSTD_CONTENTSIZE_ERROR (0ULL - 2) -ZSTDLIB_API unsigned long long ZSTD_getFrameContentSize(const void *src, size_t srcSize); - -/*! ZSTD_getDecompressedSize() : - * NOTE: This function is now obsolete, in favor of ZSTD_getFrameContentSize(). - * Both functions work the same way, but ZSTD_getDecompressedSize() blends - * "empty", "unknown" and "error" results to the same return value (0), - * while ZSTD_getFrameContentSize() gives them separate return values. - * @return : decompressed size of `src` frame content _if known and not empty_, 0 otherwise. */ -ZSTD_DEPRECATED("Replaced by ZSTD_getFrameContentSize") -ZSTDLIB_API -unsigned long long ZSTD_getDecompressedSize(const void* src, size_t srcSize); - -/*! ZSTD_findFrameCompressedSize() : Requires v1.4.0+ - * `src` should point to the start of a ZSTD frame or skippable frame. - * `srcSize` must be >= first frame size - * @return : the compressed size of the first frame starting at `src`, - * suitable to pass as `srcSize` to `ZSTD_decompress` or similar, - * or an error code if input is invalid */ -ZSTDLIB_API size_t ZSTD_findFrameCompressedSize(const void* src, size_t srcSize); - - -/*====== Helper functions ======*/ -/* ZSTD_compressBound() : - * maximum compressed size in worst case single-pass scenario. - * When invoking `ZSTD_compress()` or any other one-pass compression function, - * it's recommended to provide @dstCapacity >= ZSTD_compressBound(srcSize) - * as it eliminates one potential failure scenario, - * aka not enough room in dst buffer to write the compressed frame. - * Note : ZSTD_compressBound() itself can fail, if @srcSize > ZSTD_MAX_INPUT_SIZE . - * In which case, ZSTD_compressBound() will return an error code - * which can be tested using ZSTD_isError(). - * - * ZSTD_COMPRESSBOUND() : - * same as ZSTD_compressBound(), but as a macro. - * It can be used to produce constants, which can be useful for static allocation, - * for example to size a static array on stack. - * Will produce constant value 0 if srcSize too large. - */ -#define ZSTD_MAX_INPUT_SIZE ((sizeof(size_t)==8) ? 0xFF00FF00FF00FF00ULL : 0xFF00FF00U) -#define ZSTD_COMPRESSBOUND(srcSize) (((size_t)(srcSize) >= ZSTD_MAX_INPUT_SIZE) ? 0 : (srcSize) + ((srcSize)>>8) + (((srcSize) < (128<<10)) ? (((128<<10) - (srcSize)) >> 11) /* margin, from 64 to 0 */ : 0)) /* this formula ensures that bound(A) + bound(B) <= bound(A+B) as long as A and B >= 128 KB */ -ZSTDLIB_API size_t ZSTD_compressBound(size_t srcSize); /*!< maximum compressed size in worst case single-pass scenario */ -/* ZSTD_isError() : - * Most ZSTD_* functions returning a size_t value can be tested for error, - * using ZSTD_isError(). - * @return 1 if error, 0 otherwise - */ -ZSTDLIB_API unsigned ZSTD_isError(size_t code); /*!< tells if a `size_t` function result is an error code */ -ZSTDLIB_API const char* ZSTD_getErrorName(size_t code); /*!< provides readable string from an error code */ -ZSTDLIB_API int ZSTD_minCLevel(void); /*!< minimum negative compression level allowed, requires v1.4.0+ */ -ZSTDLIB_API int ZSTD_maxCLevel(void); /*!< maximum compression level available */ -ZSTDLIB_API int ZSTD_defaultCLevel(void); /*!< default compression level, specified by ZSTD_CLEVEL_DEFAULT, requires v1.5.0+ */ - - -/*************************************** -* Explicit context -***************************************/ -/*= Compression context - * When compressing many times, - * it is recommended to allocate a context just once, - * and reuse it for each successive compression operation. - * This will make workload friendlier for system's memory. - * Note : re-using context is just a speed / resource optimization. - * It doesn't change the compression ratio, which remains identical. - * Note 2 : In multi-threaded environments, - * use one different context per thread for parallel execution. - */ -typedef struct ZSTD_CCtx_s ZSTD_CCtx; -ZSTDLIB_API ZSTD_CCtx* ZSTD_createCCtx(void); -ZSTDLIB_API size_t ZSTD_freeCCtx(ZSTD_CCtx* cctx); /* accept NULL pointer */ - -/*! ZSTD_compressCCtx() : - * Same as ZSTD_compress(), using an explicit ZSTD_CCtx. - * Important : in order to mirror `ZSTD_compress()` behavior, - * this function compresses at the requested compression level, - * __ignoring any other advanced parameter__ . - * If any advanced parameter was set using the advanced API, - * they will all be reset. Only `compressionLevel` remains. - */ -ZSTDLIB_API size_t ZSTD_compressCCtx(ZSTD_CCtx* cctx, - void* dst, size_t dstCapacity, - const void* src, size_t srcSize, - int compressionLevel); - -/*= Decompression context - * When decompressing many times, - * it is recommended to allocate a context only once, - * and reuse it for each successive compression operation. - * This will make workload friendlier for system's memory. - * Use one context per thread for parallel execution. */ -typedef struct ZSTD_DCtx_s ZSTD_DCtx; -ZSTDLIB_API ZSTD_DCtx* ZSTD_createDCtx(void); -ZSTDLIB_API size_t ZSTD_freeDCtx(ZSTD_DCtx* dctx); /* accept NULL pointer */ - -/*! ZSTD_decompressDCtx() : - * Same as ZSTD_decompress(), - * requires an allocated ZSTD_DCtx. - * Compatible with sticky parameters (see below). - */ -ZSTDLIB_API size_t ZSTD_decompressDCtx(ZSTD_DCtx* dctx, - void* dst, size_t dstCapacity, - const void* src, size_t srcSize); - - -/********************************************* -* Advanced compression API (Requires v1.4.0+) -**********************************************/ - -/* API design : - * Parameters are pushed one by one into an existing context, - * using ZSTD_CCtx_set*() functions. - * Pushed parameters are sticky : they are valid for next compressed frame, and any subsequent frame. - * "sticky" parameters are applicable to `ZSTD_compress2()` and `ZSTD_compressStream*()` ! - * __They do not apply to one-shot variants such as ZSTD_compressCCtx()__ . - * - * It's possible to reset all parameters to "default" using ZSTD_CCtx_reset(). - * - * This API supersedes all other "advanced" API entry points in the experimental section. - * In the future, we expect to remove API entry points from experimental which are redundant with this API. - */ - - -/* Compression strategies, listed from fastest to strongest */ -typedef enum { ZSTD_fast=1, - ZSTD_dfast=2, - ZSTD_greedy=3, - ZSTD_lazy=4, - ZSTD_lazy2=5, - ZSTD_btlazy2=6, - ZSTD_btopt=7, - ZSTD_btultra=8, - ZSTD_btultra2=9 - /* note : new strategies _might_ be added in the future. - Only the order (from fast to strong) is guaranteed */ -} ZSTD_strategy; - -typedef enum { - - /* compression parameters - * Note: When compressing with a ZSTD_CDict these parameters are superseded - * by the parameters used to construct the ZSTD_CDict. - * See ZSTD_CCtx_refCDict() for more info (superseded-by-cdict). */ - ZSTD_c_compressionLevel=100, /* Set compression parameters according to pre-defined cLevel table. - * Note that exact compression parameters are dynamically determined, - * depending on both compression level and srcSize (when known). - * Default level is ZSTD_CLEVEL_DEFAULT==3. - * Special: value 0 means default, which is controlled by ZSTD_CLEVEL_DEFAULT. - * Note 1 : it's possible to pass a negative compression level. - * Note 2 : setting a level does not automatically set all other compression parameters - * to default. Setting this will however eventually dynamically impact the compression - * parameters which have not been manually set. The manually set - * ones will 'stick'. */ - /* Advanced compression parameters : - * It's possible to pin down compression parameters to some specific values. - * In which case, these values are no longer dynamically selected by the compressor */ - ZSTD_c_windowLog=101, /* Maximum allowed back-reference distance, expressed as power of 2. - * This will set a memory budget for streaming decompression, - * with larger values requiring more memory - * and typically compressing more. - * Must be clamped between ZSTD_WINDOWLOG_MIN and ZSTD_WINDOWLOG_MAX. - * Special: value 0 means "use default windowLog". - * Note: Using a windowLog greater than ZSTD_WINDOWLOG_LIMIT_DEFAULT - * requires explicitly allowing such size at streaming decompression stage. */ - ZSTD_c_hashLog=102, /* Size of the initial probe table, as a power of 2. - * Resulting memory usage is (1 << (hashLog+2)). - * Must be clamped between ZSTD_HASHLOG_MIN and ZSTD_HASHLOG_MAX. - * Larger tables improve compression ratio of strategies <= dFast, - * and improve speed of strategies > dFast. - * Special: value 0 means "use default hashLog". */ - ZSTD_c_chainLog=103, /* Size of the multi-probe search table, as a power of 2. - * Resulting memory usage is (1 << (chainLog+2)). - * Must be clamped between ZSTD_CHAINLOG_MIN and ZSTD_CHAINLOG_MAX. - * Larger tables result in better and slower compression. - * This parameter is useless for "fast" strategy. - * It's still useful when using "dfast" strategy, - * in which case it defines a secondary probe table. - * Special: value 0 means "use default chainLog". */ - ZSTD_c_searchLog=104, /* Number of search attempts, as a power of 2. - * More attempts result in better and slower compression. - * This parameter is useless for "fast" and "dFast" strategies. - * Special: value 0 means "use default searchLog". */ - ZSTD_c_minMatch=105, /* Minimum size of searched matches. - * Note that Zstandard can still find matches of smaller size, - * it just tweaks its search algorithm to look for this size and larger. - * Larger values increase compression and decompression speed, but decrease ratio. - * Must be clamped between ZSTD_MINMATCH_MIN and ZSTD_MINMATCH_MAX. - * Note that currently, for all strategies < btopt, effective minimum is 4. - * , for all strategies > fast, effective maximum is 6. - * Special: value 0 means "use default minMatchLength". */ - ZSTD_c_targetLength=106, /* Impact of this field depends on strategy. - * For strategies btopt, btultra & btultra2: - * Length of Match considered "good enough" to stop search. - * Larger values make compression stronger, and slower. - * For strategy fast: - * Distance between match sampling. - * Larger values make compression faster, and weaker. - * Special: value 0 means "use default targetLength". */ - ZSTD_c_strategy=107, /* See ZSTD_strategy enum definition. - * The higher the value of selected strategy, the more complex it is, - * resulting in stronger and slower compression. - * Special: value 0 means "use default strategy". */ - - ZSTD_c_targetCBlockSize=130, /* v1.5.6+ - * Attempts to fit compressed block size into approximatively targetCBlockSize. - * Bound by ZSTD_TARGETCBLOCKSIZE_MIN and ZSTD_TARGETCBLOCKSIZE_MAX. - * Note that it's not a guarantee, just a convergence target (default:0). - * No target when targetCBlockSize == 0. - * This is helpful in low bandwidth streaming environments to improve end-to-end latency, - * when a client can make use of partial documents (a prominent example being Chrome). - * Note: this parameter is stable since v1.5.6. - * It was present as an experimental parameter in earlier versions, - * but it's not recommended using it with earlier library versions - * due to massive performance regressions. - */ - /* LDM mode parameters */ - ZSTD_c_enableLongDistanceMatching=160, /* Enable long distance matching. - * This parameter is designed to improve compression ratio - * for large inputs, by finding large matches at long distance. - * It increases memory usage and window size. - * Note: enabling this parameter increases default ZSTD_c_windowLog to 128 MB - * except when expressly set to a different value. - * Note: will be enabled by default if ZSTD_c_windowLog >= 128 MB and - * compression strategy >= ZSTD_btopt (== compression level 16+) */ - ZSTD_c_ldmHashLog=161, /* Size of the table for long distance matching, as a power of 2. - * Larger values increase memory usage and compression ratio, - * but decrease compression speed. - * Must be clamped between ZSTD_HASHLOG_MIN and ZSTD_HASHLOG_MAX - * default: windowlog - 7. - * Special: value 0 means "automatically determine hashlog". */ - ZSTD_c_ldmMinMatch=162, /* Minimum match size for long distance matcher. - * Larger/too small values usually decrease compression ratio. - * Must be clamped between ZSTD_LDM_MINMATCH_MIN and ZSTD_LDM_MINMATCH_MAX. - * Special: value 0 means "use default value" (default: 64). */ - ZSTD_c_ldmBucketSizeLog=163, /* Log size of each bucket in the LDM hash table for collision resolution. - * Larger values improve collision resolution but decrease compression speed. - * The maximum value is ZSTD_LDM_BUCKETSIZELOG_MAX. - * Special: value 0 means "use default value" (default: 3). */ - ZSTD_c_ldmHashRateLog=164, /* Frequency of inserting/looking up entries into the LDM hash table. - * Must be clamped between 0 and (ZSTD_WINDOWLOG_MAX - ZSTD_HASHLOG_MIN). - * Default is MAX(0, (windowLog - ldmHashLog)), optimizing hash table usage. - * Larger values improve compression speed. - * Deviating far from default value will likely result in a compression ratio decrease. - * Special: value 0 means "automatically determine hashRateLog". */ - - /* frame parameters */ - ZSTD_c_contentSizeFlag=200, /* Content size will be written into frame header _whenever known_ (default:1) - * Content size must be known at the beginning of compression. - * This is automatically the case when using ZSTD_compress2(), - * For streaming scenarios, content size must be provided with ZSTD_CCtx_setPledgedSrcSize() */ - ZSTD_c_checksumFlag=201, /* A 32-bits checksum of content is written at end of frame (default:0) */ - ZSTD_c_dictIDFlag=202, /* When applicable, dictionary's ID is written into frame header (default:1) */ - - /* multi-threading parameters */ - /* These parameters are only active if multi-threading is enabled (compiled with build macro ZSTD_MULTITHREAD). - * Otherwise, trying to set any other value than default (0) will be a no-op and return an error. - * In a situation where it's unknown if the linked library supports multi-threading or not, - * setting ZSTD_c_nbWorkers to any value >= 1 and consulting the return value provides a quick way to check this property. - */ - ZSTD_c_nbWorkers=400, /* Select how many threads will be spawned to compress in parallel. - * When nbWorkers >= 1, triggers asynchronous mode when invoking ZSTD_compressStream*() : - * ZSTD_compressStream*() consumes input and flush output if possible, but immediately gives back control to caller, - * while compression is performed in parallel, within worker thread(s). - * (note : a strong exception to this rule is when first invocation of ZSTD_compressStream2() sets ZSTD_e_end : - * in which case, ZSTD_compressStream2() delegates to ZSTD_compress2(), which is always a blocking call). - * More workers improve speed, but also increase memory usage. - * Default value is `0`, aka "single-threaded mode" : no worker is spawned, - * compression is performed inside Caller's thread, and all invocations are blocking */ - ZSTD_c_jobSize=401, /* Size of a compression job. This value is enforced only when nbWorkers >= 1. - * Each compression job is completed in parallel, so this value can indirectly impact the nb of active threads. - * 0 means default, which is dynamically determined based on compression parameters. - * Job size must be a minimum of overlap size, or ZSTDMT_JOBSIZE_MIN (= 512 KB), whichever is largest. - * The minimum size is automatically and transparently enforced. */ - ZSTD_c_overlapLog=402, /* Control the overlap size, as a fraction of window size. - * The overlap size is an amount of data reloaded from previous job at the beginning of a new job. - * It helps preserve compression ratio, while each job is compressed in parallel. - * This value is enforced only when nbWorkers >= 1. - * Larger values increase compression ratio, but decrease speed. - * Possible values range from 0 to 9 : - * - 0 means "default" : value will be determined by the library, depending on strategy - * - 1 means "no overlap" - * - 9 means "full overlap", using a full window size. - * Each intermediate rank increases/decreases load size by a factor 2 : - * 9: full window; 8: w/2; 7: w/4; 6: w/8; 5:w/16; 4: w/32; 3:w/64; 2:w/128; 1:no overlap; 0:default - * default value varies between 6 and 9, depending on strategy */ - - /* note : additional experimental parameters are also available - * within the experimental section of the API. - * At the time of this writing, they include : - * ZSTD_c_rsyncable - * ZSTD_c_format - * ZSTD_c_forceMaxWindow - * ZSTD_c_forceAttachDict - * ZSTD_c_literalCompressionMode - * ZSTD_c_srcSizeHint - * ZSTD_c_enableDedicatedDictSearch - * ZSTD_c_stableInBuffer - * ZSTD_c_stableOutBuffer - * ZSTD_c_blockDelimiters - * ZSTD_c_validateSequences - * ZSTD_c_useBlockSplitter - * ZSTD_c_useRowMatchFinder - * ZSTD_c_prefetchCDictTables - * ZSTD_c_enableSeqProducerFallback - * ZSTD_c_maxBlockSize - * Because they are not stable, it's necessary to define ZSTD_STATIC_LINKING_ONLY to access them. - * note : never ever use experimentalParam? names directly; - * also, the enums values themselves are unstable and can still change. - */ - ZSTD_c_experimentalParam1=500, - ZSTD_c_experimentalParam2=10, - ZSTD_c_experimentalParam3=1000, - ZSTD_c_experimentalParam4=1001, - ZSTD_c_experimentalParam5=1002, - /* was ZSTD_c_experimentalParam6=1003; is now ZSTD_c_targetCBlockSize */ - ZSTD_c_experimentalParam7=1004, - ZSTD_c_experimentalParam8=1005, - ZSTD_c_experimentalParam9=1006, - ZSTD_c_experimentalParam10=1007, - ZSTD_c_experimentalParam11=1008, - ZSTD_c_experimentalParam12=1009, - ZSTD_c_experimentalParam13=1010, - ZSTD_c_experimentalParam14=1011, - ZSTD_c_experimentalParam15=1012, - ZSTD_c_experimentalParam16=1013, - ZSTD_c_experimentalParam17=1014, - ZSTD_c_experimentalParam18=1015, - ZSTD_c_experimentalParam19=1016 -} ZSTD_cParameter; - -typedef struct { - size_t error; - int lowerBound; - int upperBound; -} ZSTD_bounds; - -/*! ZSTD_cParam_getBounds() : - * All parameters must belong to an interval with lower and upper bounds, - * otherwise they will either trigger an error or be automatically clamped. - * @return : a structure, ZSTD_bounds, which contains - * - an error status field, which must be tested using ZSTD_isError() - * - lower and upper bounds, both inclusive - */ -ZSTDLIB_API ZSTD_bounds ZSTD_cParam_getBounds(ZSTD_cParameter cParam); - -/*! ZSTD_CCtx_setParameter() : - * Set one compression parameter, selected by enum ZSTD_cParameter. - * All parameters have valid bounds. Bounds can be queried using ZSTD_cParam_getBounds(). - * Providing a value beyond bound will either clamp it, or trigger an error (depending on parameter). - * Setting a parameter is generally only possible during frame initialization (before starting compression). - * Exception : when using multi-threading mode (nbWorkers >= 1), - * the following parameters can be updated _during_ compression (within same frame): - * => compressionLevel, hashLog, chainLog, searchLog, minMatch, targetLength and strategy. - * new parameters will be active for next job only (after a flush()). - * @return : an error code (which can be tested using ZSTD_isError()). - */ -ZSTDLIB_API size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, int value); - -/*! ZSTD_CCtx_setPledgedSrcSize() : - * Total input data size to be compressed as a single frame. - * Value will be written in frame header, unless if explicitly forbidden using ZSTD_c_contentSizeFlag. - * This value will also be controlled at end of frame, and trigger an error if not respected. - * @result : 0, or an error code (which can be tested with ZSTD_isError()). - * Note 1 : pledgedSrcSize==0 actually means zero, aka an empty frame. - * In order to mean "unknown content size", pass constant ZSTD_CONTENTSIZE_UNKNOWN. - * ZSTD_CONTENTSIZE_UNKNOWN is default value for any new frame. - * Note 2 : pledgedSrcSize is only valid once, for the next frame. - * It's discarded at the end of the frame, and replaced by ZSTD_CONTENTSIZE_UNKNOWN. - * Note 3 : Whenever all input data is provided and consumed in a single round, - * for example with ZSTD_compress2(), - * or invoking immediately ZSTD_compressStream2(,,,ZSTD_e_end), - * this value is automatically overridden by srcSize instead. - */ -ZSTDLIB_API size_t ZSTD_CCtx_setPledgedSrcSize(ZSTD_CCtx* cctx, unsigned long long pledgedSrcSize); - -typedef enum { - ZSTD_reset_session_only = 1, - ZSTD_reset_parameters = 2, - ZSTD_reset_session_and_parameters = 3 -} ZSTD_ResetDirective; - -/*! ZSTD_CCtx_reset() : - * There are 2 different things that can be reset, independently or jointly : - * - The session : will stop compressing current frame, and make CCtx ready to start a new one. - * Useful after an error, or to interrupt any ongoing compression. - * Any internal data not yet flushed is cancelled. - * Compression parameters and dictionary remain unchanged. - * They will be used to compress next frame. - * Resetting session never fails. - * - The parameters : changes all parameters back to "default". - * This also removes any reference to any dictionary or external sequence producer. - * Parameters can only be changed between 2 sessions (i.e. no compression is currently ongoing) - * otherwise the reset fails, and function returns an error value (which can be tested using ZSTD_isError()) - * - Both : similar to resetting the session, followed by resetting parameters. - */ -ZSTDLIB_API size_t ZSTD_CCtx_reset(ZSTD_CCtx* cctx, ZSTD_ResetDirective reset); - -/*! ZSTD_compress2() : - * Behave the same as ZSTD_compressCCtx(), but compression parameters are set using the advanced API. - * (note that this entry point doesn't even expose a compression level parameter). - * ZSTD_compress2() always starts a new frame. - * Should cctx hold data from a previously unfinished frame, everything about it is forgotten. - * - Compression parameters are pushed into CCtx before starting compression, using ZSTD_CCtx_set*() - * - The function is always blocking, returns when compression is completed. - * NOTE: Providing `dstCapacity >= ZSTD_compressBound(srcSize)` guarantees that zstd will have - * enough space to successfully compress the data, though it is possible it fails for other reasons. - * @return : compressed size written into `dst` (<= `dstCapacity), - * or an error code if it fails (which can be tested using ZSTD_isError()). - */ -ZSTDLIB_API size_t ZSTD_compress2( ZSTD_CCtx* cctx, - void* dst, size_t dstCapacity, - const void* src, size_t srcSize); - - -/*********************************************** -* Advanced decompression API (Requires v1.4.0+) -************************************************/ - -/* The advanced API pushes parameters one by one into an existing DCtx context. - * Parameters are sticky, and remain valid for all following frames - * using the same DCtx context. - * It's possible to reset parameters to default values using ZSTD_DCtx_reset(). - * Note : This API is compatible with existing ZSTD_decompressDCtx() and ZSTD_decompressStream(). - * Therefore, no new decompression function is necessary. - */ - -typedef enum { - - ZSTD_d_windowLogMax=100, /* Select a size limit (in power of 2) beyond which - * the streaming API will refuse to allocate memory buffer - * in order to protect the host from unreasonable memory requirements. - * This parameter is only useful in streaming mode, since no internal buffer is allocated in single-pass mode. - * By default, a decompression context accepts window sizes <= (1 << ZSTD_WINDOWLOG_LIMIT_DEFAULT). - * Special: value 0 means "use default maximum windowLog". */ - - /* note : additional experimental parameters are also available - * within the experimental section of the API. - * At the time of this writing, they include : - * ZSTD_d_format - * ZSTD_d_stableOutBuffer - * ZSTD_d_forceIgnoreChecksum - * ZSTD_d_refMultipleDDicts - * ZSTD_d_disableHuffmanAssembly - * ZSTD_d_maxBlockSize - * Because they are not stable, it's necessary to define ZSTD_STATIC_LINKING_ONLY to access them. - * note : never ever use experimentalParam? names directly - */ - ZSTD_d_experimentalParam1=1000, - ZSTD_d_experimentalParam2=1001, - ZSTD_d_experimentalParam3=1002, - ZSTD_d_experimentalParam4=1003, - ZSTD_d_experimentalParam5=1004, - ZSTD_d_experimentalParam6=1005 - -} ZSTD_dParameter; - -/*! ZSTD_dParam_getBounds() : - * All parameters must belong to an interval with lower and upper bounds, - * otherwise they will either trigger an error or be automatically clamped. - * @return : a structure, ZSTD_bounds, which contains - * - an error status field, which must be tested using ZSTD_isError() - * - both lower and upper bounds, inclusive - */ -ZSTDLIB_API ZSTD_bounds ZSTD_dParam_getBounds(ZSTD_dParameter dParam); - -/*! ZSTD_DCtx_setParameter() : - * Set one compression parameter, selected by enum ZSTD_dParameter. - * All parameters have valid bounds. Bounds can be queried using ZSTD_dParam_getBounds(). - * Providing a value beyond bound will either clamp it, or trigger an error (depending on parameter). - * Setting a parameter is only possible during frame initialization (before starting decompression). - * @return : 0, or an error code (which can be tested using ZSTD_isError()). - */ -ZSTDLIB_API size_t ZSTD_DCtx_setParameter(ZSTD_DCtx* dctx, ZSTD_dParameter param, int value); - -/*! ZSTD_DCtx_reset() : - * Return a DCtx to clean state. - * Session and parameters can be reset jointly or separately. - * Parameters can only be reset when no active frame is being decompressed. - * @return : 0, or an error code, which can be tested with ZSTD_isError() - */ -ZSTDLIB_API size_t ZSTD_DCtx_reset(ZSTD_DCtx* dctx, ZSTD_ResetDirective reset); - - -/**************************** -* Streaming -****************************/ - -typedef struct ZSTD_inBuffer_s { - const void* src; /**< start of input buffer */ - size_t size; /**< size of input buffer */ - size_t pos; /**< position where reading stopped. Will be updated. Necessarily 0 <= pos <= size */ -} ZSTD_inBuffer; - -typedef struct ZSTD_outBuffer_s { - void* dst; /**< start of output buffer */ - size_t size; /**< size of output buffer */ - size_t pos; /**< position where writing stopped. Will be updated. Necessarily 0 <= pos <= size */ -} ZSTD_outBuffer; - - - -/*-*********************************************************************** -* Streaming compression - HowTo -* -* A ZSTD_CStream object is required to track streaming operation. -* Use ZSTD_createCStream() and ZSTD_freeCStream() to create/release resources. -* ZSTD_CStream objects can be reused multiple times on consecutive compression operations. -* It is recommended to reuse ZSTD_CStream since it will play nicer with system's memory, by re-using already allocated memory. -* -* For parallel execution, use one separate ZSTD_CStream per thread. -* -* note : since v1.3.0, ZSTD_CStream and ZSTD_CCtx are the same thing. -* -* Parameters are sticky : when starting a new compression on the same context, -* it will reuse the same sticky parameters as previous compression session. -* When in doubt, it's recommended to fully initialize the context before usage. -* Use ZSTD_CCtx_reset() to reset the context and ZSTD_CCtx_setParameter(), -* ZSTD_CCtx_setPledgedSrcSize(), or ZSTD_CCtx_loadDictionary() and friends to -* set more specific parameters, the pledged source size, or load a dictionary. -* -* Use ZSTD_compressStream2() with ZSTD_e_continue as many times as necessary to -* consume input stream. The function will automatically update both `pos` -* fields within `input` and `output`. -* Note that the function may not consume the entire input, for example, because -* the output buffer is already full, in which case `input.pos < input.size`. -* The caller must check if input has been entirely consumed. -* If not, the caller must make some room to receive more compressed data, -* and then present again remaining input data. -* note: ZSTD_e_continue is guaranteed to make some forward progress when called, -* but doesn't guarantee maximal forward progress. This is especially relevant -* when compressing with multiple threads. The call won't block if it can -* consume some input, but if it can't it will wait for some, but not all, -* output to be flushed. -* @return : provides a minimum amount of data remaining to be flushed from internal buffers -* or an error code, which can be tested using ZSTD_isError(). -* -* At any moment, it's possible to flush whatever data might remain stuck within internal buffer, -* using ZSTD_compressStream2() with ZSTD_e_flush. `output->pos` will be updated. -* Note that, if `output->size` is too small, a single invocation with ZSTD_e_flush might not be enough (return code > 0). -* In which case, make some room to receive more compressed data, and call again ZSTD_compressStream2() with ZSTD_e_flush. -* You must continue calling ZSTD_compressStream2() with ZSTD_e_flush until it returns 0, at which point you can change the -* operation. -* note: ZSTD_e_flush will flush as much output as possible, meaning when compressing with multiple threads, it will -* block until the flush is complete or the output buffer is full. -* @return : 0 if internal buffers are entirely flushed, -* >0 if some data still present within internal buffer (the value is minimal estimation of remaining size), -* or an error code, which can be tested using ZSTD_isError(). -* -* Calling ZSTD_compressStream2() with ZSTD_e_end instructs to finish a frame. -* It will perform a flush and write frame epilogue. -* The epilogue is required for decoders to consider a frame completed. -* flush operation is the same, and follows same rules as calling ZSTD_compressStream2() with ZSTD_e_flush. -* You must continue calling ZSTD_compressStream2() with ZSTD_e_end until it returns 0, at which point you are free to -* start a new frame. -* note: ZSTD_e_end will flush as much output as possible, meaning when compressing with multiple threads, it will -* block until the flush is complete or the output buffer is full. -* @return : 0 if frame fully completed and fully flushed, -* >0 if some data still present within internal buffer (the value is minimal estimation of remaining size), -* or an error code, which can be tested using ZSTD_isError(). -* -* *******************************************************************/ - -typedef ZSTD_CCtx ZSTD_CStream; /**< CCtx and CStream are now effectively same object (>= v1.3.0) */ - /* Continue to distinguish them for compatibility with older versions <= v1.2.0 */ -/*===== ZSTD_CStream management functions =====*/ -ZSTDLIB_API ZSTD_CStream* ZSTD_createCStream(void); -ZSTDLIB_API size_t ZSTD_freeCStream(ZSTD_CStream* zcs); /* accept NULL pointer */ - -/*===== Streaming compression functions =====*/ -typedef enum { - ZSTD_e_continue=0, /* collect more data, encoder decides when to output compressed result, for optimal compression ratio */ - ZSTD_e_flush=1, /* flush any data provided so far, - * it creates (at least) one new block, that can be decoded immediately on reception; - * frame will continue: any future data can still reference previously compressed data, improving compression. - * note : multithreaded compression will block to flush as much output as possible. */ - ZSTD_e_end=2 /* flush any remaining data _and_ close current frame. - * note that frame is only closed after compressed data is fully flushed (return value == 0). - * After that point, any additional data starts a new frame. - * note : each frame is independent (does not reference any content from previous frame). - : note : multithreaded compression will block to flush as much output as possible. */ -} ZSTD_EndDirective; - -/*! ZSTD_compressStream2() : Requires v1.4.0+ - * Behaves about the same as ZSTD_compressStream, with additional control on end directive. - * - Compression parameters are pushed into CCtx before starting compression, using ZSTD_CCtx_set*() - * - Compression parameters cannot be changed once compression is started (save a list of exceptions in multi-threading mode) - * - output->pos must be <= dstCapacity, input->pos must be <= srcSize - * - output->pos and input->pos will be updated. They are guaranteed to remain below their respective limit. - * - endOp must be a valid directive - * - When nbWorkers==0 (default), function is blocking : it completes its job before returning to caller. - * - When nbWorkers>=1, function is non-blocking : it copies a portion of input, distributes jobs to internal worker threads, flush to output whatever is available, - * and then immediately returns, just indicating that there is some data remaining to be flushed. - * The function nonetheless guarantees forward progress : it will return only after it reads or write at least 1+ byte. - * - Exception : if the first call requests a ZSTD_e_end directive and provides enough dstCapacity, the function delegates to ZSTD_compress2() which is always blocking. - * - @return provides a minimum amount of data remaining to be flushed from internal buffers - * or an error code, which can be tested using ZSTD_isError(). - * if @return != 0, flush is not fully completed, there is still some data left within internal buffers. - * This is useful for ZSTD_e_flush, since in this case more flushes are necessary to empty all buffers. - * For ZSTD_e_end, @return == 0 when internal buffers are fully flushed and frame is completed. - * - after a ZSTD_e_end directive, if internal buffer is not fully flushed (@return != 0), - * only ZSTD_e_end or ZSTD_e_flush operations are allowed. - * Before starting a new compression job, or changing compression parameters, - * it is required to fully flush internal buffers. - * - note: if an operation ends with an error, it may leave @cctx in an undefined state. - * Therefore, it's UB to invoke ZSTD_compressStream2() of ZSTD_compressStream() on such a state. - * In order to be re-employed after an error, a state must be reset, - * which can be done explicitly (ZSTD_CCtx_reset()), - * or is sometimes implied by methods starting a new compression job (ZSTD_initCStream(), ZSTD_compressCCtx()) - */ -ZSTDLIB_API size_t ZSTD_compressStream2( ZSTD_CCtx* cctx, - ZSTD_outBuffer* output, - ZSTD_inBuffer* input, - ZSTD_EndDirective endOp); - - -/* These buffer sizes are softly recommended. - * They are not required : ZSTD_compressStream*() happily accepts any buffer size, for both input and output. - * Respecting the recommended size just makes it a bit easier for ZSTD_compressStream*(), - * reducing the amount of memory shuffling and buffering, resulting in minor performance savings. - * - * However, note that these recommendations are from the perspective of a C caller program. - * If the streaming interface is invoked from some other language, - * especially managed ones such as Java or Go, through a foreign function interface such as jni or cgo, - * a major performance rule is to reduce crossing such interface to an absolute minimum. - * It's not rare that performance ends being spent more into the interface, rather than compression itself. - * In which cases, prefer using large buffers, as large as practical, - * for both input and output, to reduce the nb of roundtrips. - */ -ZSTDLIB_API size_t ZSTD_CStreamInSize(void); /**< recommended size for input buffer */ -ZSTDLIB_API size_t ZSTD_CStreamOutSize(void); /**< recommended size for output buffer. Guarantee to successfully flush at least one complete compressed block. */ - - -/* ***************************************************************************** - * This following is a legacy streaming API, available since v1.0+ . - * It can be replaced by ZSTD_CCtx_reset() and ZSTD_compressStream2(). - * It is redundant, but remains fully supported. - ******************************************************************************/ - -/*! - * Equivalent to: - * - * ZSTD_CCtx_reset(zcs, ZSTD_reset_session_only); - * ZSTD_CCtx_refCDict(zcs, NULL); // clear the dictionary (if any) - * ZSTD_CCtx_setParameter(zcs, ZSTD_c_compressionLevel, compressionLevel); - * - * Note that ZSTD_initCStream() clears any previously set dictionary. Use the new API - * to compress with a dictionary. - */ -ZSTDLIB_API size_t ZSTD_initCStream(ZSTD_CStream* zcs, int compressionLevel); -/*! - * Alternative for ZSTD_compressStream2(zcs, output, input, ZSTD_e_continue). - * NOTE: The return value is different. ZSTD_compressStream() returns a hint for - * the next read size (if non-zero and not an error). ZSTD_compressStream2() - * returns the minimum nb of bytes left to flush (if non-zero and not an error). - */ -ZSTDLIB_API size_t ZSTD_compressStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output, ZSTD_inBuffer* input); -/*! Equivalent to ZSTD_compressStream2(zcs, output, &emptyInput, ZSTD_e_flush). */ -ZSTDLIB_API size_t ZSTD_flushStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output); -/*! Equivalent to ZSTD_compressStream2(zcs, output, &emptyInput, ZSTD_e_end). */ -ZSTDLIB_API size_t ZSTD_endStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output); - - -/*-*************************************************************************** -* Streaming decompression - HowTo -* -* A ZSTD_DStream object is required to track streaming operations. -* Use ZSTD_createDStream() and ZSTD_freeDStream() to create/release resources. -* ZSTD_DStream objects can be reused multiple times. -* -* Use ZSTD_initDStream() to start a new decompression operation. -* @return : recommended first input size -* Alternatively, use advanced API to set specific properties. -* -* Use ZSTD_decompressStream() repetitively to consume your input. -* The function will update both `pos` fields. -* If `input.pos < input.size`, some input has not been consumed. -* It's up to the caller to present again remaining data. -* The function tries to flush all data decoded immediately, respecting output buffer size. -* If `output.pos < output.size`, decoder has flushed everything it could. -* But if `output.pos == output.size`, there might be some data left within internal buffers., -* In which case, call ZSTD_decompressStream() again to flush whatever remains in the buffer. -* Note : with no additional input provided, amount of data flushed is necessarily <= ZSTD_BLOCKSIZE_MAX. -* @return : 0 when a frame is completely decoded and fully flushed, -* or an error code, which can be tested using ZSTD_isError(), -* or any other value > 0, which means there is still some decoding or flushing to do to complete current frame : -* the return value is a suggested next input size (just a hint for better latency) -* that will never request more than the remaining frame size. -* *******************************************************************************/ - -typedef ZSTD_DCtx ZSTD_DStream; /**< DCtx and DStream are now effectively same object (>= v1.3.0) */ - /* For compatibility with versions <= v1.2.0, prefer differentiating them. */ -/*===== ZSTD_DStream management functions =====*/ -ZSTDLIB_API ZSTD_DStream* ZSTD_createDStream(void); -ZSTDLIB_API size_t ZSTD_freeDStream(ZSTD_DStream* zds); /* accept NULL pointer */ - -/*===== Streaming decompression functions =====*/ - -/*! ZSTD_initDStream() : - * Initialize/reset DStream state for new decompression operation. - * Call before new decompression operation using same DStream. - * - * Note : This function is redundant with the advanced API and equivalent to: - * ZSTD_DCtx_reset(zds, ZSTD_reset_session_only); - * ZSTD_DCtx_refDDict(zds, NULL); - */ -ZSTDLIB_API size_t ZSTD_initDStream(ZSTD_DStream* zds); - -/*! ZSTD_decompressStream() : - * Streaming decompression function. - * Call repetitively to consume full input updating it as necessary. - * Function will update both input and output `pos` fields exposing current state via these fields: - * - `input.pos < input.size`, some input remaining and caller should provide remaining input - * on the next call. - * - `output.pos < output.size`, decoder finished and flushed all remaining buffers. - * - `output.pos == output.size`, potentially uncflushed data present in the internal buffers, - * call ZSTD_decompressStream() again to flush remaining data to output. - * Note : with no additional input, amount of data flushed <= ZSTD_BLOCKSIZE_MAX. - * - * @return : 0 when a frame is completely decoded and fully flushed, - * or an error code, which can be tested using ZSTD_isError(), - * or any other value > 0, which means there is some decoding or flushing to do to complete current frame. - * - * Note: when an operation returns with an error code, the @zds state may be left in undefined state. - * It's UB to invoke `ZSTD_decompressStream()` on such a state. - * In order to re-use such a state, it must be first reset, - * which can be done explicitly (`ZSTD_DCtx_reset()`), - * or is implied for operations starting some new decompression job (`ZSTD_initDStream`, `ZSTD_decompressDCtx()`, `ZSTD_decompress_usingDict()`) - */ -ZSTDLIB_API size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inBuffer* input); - -ZSTDLIB_API size_t ZSTD_DStreamInSize(void); /*!< recommended size for input buffer */ -ZSTDLIB_API size_t ZSTD_DStreamOutSize(void); /*!< recommended size for output buffer. Guarantee to successfully flush at least one complete block in all circumstances. */ - - -/************************** -* Simple dictionary API -***************************/ -/*! ZSTD_compress_usingDict() : - * Compression at an explicit compression level using a Dictionary. - * A dictionary can be any arbitrary data segment (also called a prefix), - * or a buffer with specified information (see zdict.h). - * Note : This function loads the dictionary, resulting in significant startup delay. - * It's intended for a dictionary used only once. - * Note 2 : When `dict == NULL || dictSize < 8` no dictionary is used. */ -ZSTDLIB_API size_t ZSTD_compress_usingDict(ZSTD_CCtx* ctx, - void* dst, size_t dstCapacity, - const void* src, size_t srcSize, - const void* dict,size_t dictSize, - int compressionLevel); - -/*! ZSTD_decompress_usingDict() : - * Decompression using a known Dictionary. - * Dictionary must be identical to the one used during compression. - * Note : This function loads the dictionary, resulting in significant startup delay. - * It's intended for a dictionary used only once. - * Note : When `dict == NULL || dictSize < 8` no dictionary is used. */ -ZSTDLIB_API size_t ZSTD_decompress_usingDict(ZSTD_DCtx* dctx, - void* dst, size_t dstCapacity, - const void* src, size_t srcSize, - const void* dict,size_t dictSize); - - -/*********************************** - * Bulk processing dictionary API - **********************************/ -typedef struct ZSTD_CDict_s ZSTD_CDict; - -/*! ZSTD_createCDict() : - * When compressing multiple messages or blocks using the same dictionary, - * it's recommended to digest the dictionary only once, since it's a costly operation. - * ZSTD_createCDict() will create a state from digesting a dictionary. - * The resulting state can be used for future compression operations with very limited startup cost. - * ZSTD_CDict can be created once and shared by multiple threads concurrently, since its usage is read-only. - * @dictBuffer can be released after ZSTD_CDict creation, because its content is copied within CDict. - * Note 1 : Consider experimental function `ZSTD_createCDict_byReference()` if you prefer to not duplicate @dictBuffer content. - * Note 2 : A ZSTD_CDict can be created from an empty @dictBuffer, - * in which case the only thing that it transports is the @compressionLevel. - * This can be useful in a pipeline featuring ZSTD_compress_usingCDict() exclusively, - * expecting a ZSTD_CDict parameter with any data, including those without a known dictionary. */ -ZSTDLIB_API ZSTD_CDict* ZSTD_createCDict(const void* dictBuffer, size_t dictSize, - int compressionLevel); - -/*! ZSTD_freeCDict() : - * Function frees memory allocated by ZSTD_createCDict(). - * If a NULL pointer is passed, no operation is performed. */ -ZSTDLIB_API size_t ZSTD_freeCDict(ZSTD_CDict* CDict); - -/*! ZSTD_compress_usingCDict() : - * Compression using a digested Dictionary. - * Recommended when same dictionary is used multiple times. - * Note : compression level is _decided at dictionary creation time_, - * and frame parameters are hardcoded (dictID=yes, contentSize=yes, checksum=no) */ -ZSTDLIB_API size_t ZSTD_compress_usingCDict(ZSTD_CCtx* cctx, - void* dst, size_t dstCapacity, - const void* src, size_t srcSize, - const ZSTD_CDict* cdict); - - -typedef struct ZSTD_DDict_s ZSTD_DDict; - -/*! ZSTD_createDDict() : - * Create a digested dictionary, ready to start decompression operation without startup delay. - * dictBuffer can be released after DDict creation, as its content is copied inside DDict. */ -ZSTDLIB_API ZSTD_DDict* ZSTD_createDDict(const void* dictBuffer, size_t dictSize); - -/*! ZSTD_freeDDict() : - * Function frees memory allocated with ZSTD_createDDict() - * If a NULL pointer is passed, no operation is performed. */ -ZSTDLIB_API size_t ZSTD_freeDDict(ZSTD_DDict* ddict); - -/*! ZSTD_decompress_usingDDict() : - * Decompression using a digested Dictionary. - * Recommended when same dictionary is used multiple times. */ -ZSTDLIB_API size_t ZSTD_decompress_usingDDict(ZSTD_DCtx* dctx, - void* dst, size_t dstCapacity, - const void* src, size_t srcSize, - const ZSTD_DDict* ddict); - - -/******************************** - * Dictionary helper functions - *******************************/ - -/*! ZSTD_getDictID_fromDict() : Requires v1.4.0+ - * Provides the dictID stored within dictionary. - * if @return == 0, the dictionary is not conformant with Zstandard specification. - * It can still be loaded, but as a content-only dictionary. */ -ZSTDLIB_API unsigned ZSTD_getDictID_fromDict(const void* dict, size_t dictSize); - -/*! ZSTD_getDictID_fromCDict() : Requires v1.5.0+ - * Provides the dictID of the dictionary loaded into `cdict`. - * If @return == 0, the dictionary is not conformant to Zstandard specification, or empty. - * Non-conformant dictionaries can still be loaded, but as content-only dictionaries. */ -ZSTDLIB_API unsigned ZSTD_getDictID_fromCDict(const ZSTD_CDict* cdict); - -/*! ZSTD_getDictID_fromDDict() : Requires v1.4.0+ - * Provides the dictID of the dictionary loaded into `ddict`. - * If @return == 0, the dictionary is not conformant to Zstandard specification, or empty. - * Non-conformant dictionaries can still be loaded, but as content-only dictionaries. */ -ZSTDLIB_API unsigned ZSTD_getDictID_fromDDict(const ZSTD_DDict* ddict); - -/*! ZSTD_getDictID_fromFrame() : Requires v1.4.0+ - * Provides the dictID required to decompressed the frame stored within `src`. - * If @return == 0, the dictID could not be decoded. - * This could for one of the following reasons : - * - The frame does not require a dictionary to be decoded (most common case). - * - The frame was built with dictID intentionally removed. Whatever dictionary is necessary is a hidden piece of information. - * Note : this use case also happens when using a non-conformant dictionary. - * - `srcSize` is too small, and as a result, the frame header could not be decoded (only possible if `srcSize < ZSTD_FRAMEHEADERSIZE_MAX`). - * - This is not a Zstandard frame. - * When identifying the exact failure cause, it's possible to use ZSTD_getFrameHeader(), which will provide a more precise error code. */ -ZSTDLIB_API unsigned ZSTD_getDictID_fromFrame(const void* src, size_t srcSize); - - -/******************************************************************************* - * Advanced dictionary and prefix API (Requires v1.4.0+) - * - * This API allows dictionaries to be used with ZSTD_compress2(), - * ZSTD_compressStream2(), and ZSTD_decompressDCtx(). - * Dictionaries are sticky, they remain valid when same context is reused, - * they only reset when the context is reset - * with ZSTD_reset_parameters or ZSTD_reset_session_and_parameters. - * In contrast, Prefixes are single-use. - ******************************************************************************/ - - -/*! ZSTD_CCtx_loadDictionary() : Requires v1.4.0+ - * Create an internal CDict from `dict` buffer. - * Decompression will have to use same dictionary. - * @result : 0, or an error code (which can be tested with ZSTD_isError()). - * Special: Loading a NULL (or 0-size) dictionary invalidates previous dictionary, - * meaning "return to no-dictionary mode". - * Note 1 : Dictionary is sticky, it will be used for all future compressed frames, - * until parameters are reset, a new dictionary is loaded, or the dictionary - * is explicitly invalidated by loading a NULL dictionary. - * Note 2 : Loading a dictionary involves building tables. - * It's also a CPU consuming operation, with non-negligible impact on latency. - * Tables are dependent on compression parameters, and for this reason, - * compression parameters can no longer be changed after loading a dictionary. - * Note 3 :`dict` content will be copied internally. - * Use experimental ZSTD_CCtx_loadDictionary_byReference() to reference content instead. - * In such a case, dictionary buffer must outlive its users. - * Note 4 : Use ZSTD_CCtx_loadDictionary_advanced() - * to precisely select how dictionary content must be interpreted. - * Note 5 : This method does not benefit from LDM (long distance mode). - * If you want to employ LDM on some large dictionary content, - * prefer employing ZSTD_CCtx_refPrefix() described below. - */ -ZSTDLIB_API size_t ZSTD_CCtx_loadDictionary(ZSTD_CCtx* cctx, const void* dict, size_t dictSize); - -/*! ZSTD_CCtx_refCDict() : Requires v1.4.0+ - * Reference a prepared dictionary, to be used for all future compressed frames. - * Note that compression parameters are enforced from within CDict, - * and supersede any compression parameter previously set within CCtx. - * The parameters ignored are labelled as "superseded-by-cdict" in the ZSTD_cParameter enum docs. - * The ignored parameters will be used again if the CCtx is returned to no-dictionary mode. - * The dictionary will remain valid for future compressed frames using same CCtx. - * @result : 0, or an error code (which can be tested with ZSTD_isError()). - * Special : Referencing a NULL CDict means "return to no-dictionary mode". - * Note 1 : Currently, only one dictionary can be managed. - * Referencing a new dictionary effectively "discards" any previous one. - * Note 2 : CDict is just referenced, its lifetime must outlive its usage within CCtx. */ -ZSTDLIB_API size_t ZSTD_CCtx_refCDict(ZSTD_CCtx* cctx, const ZSTD_CDict* cdict); - -/*! ZSTD_CCtx_refPrefix() : Requires v1.4.0+ - * Reference a prefix (single-usage dictionary) for next compressed frame. - * A prefix is **only used once**. Tables are discarded at end of frame (ZSTD_e_end). - * Decompression will need same prefix to properly regenerate data. - * Compressing with a prefix is similar in outcome as performing a diff and compressing it, - * but performs much faster, especially during decompression (compression speed is tunable with compression level). - * This method is compatible with LDM (long distance mode). - * @result : 0, or an error code (which can be tested with ZSTD_isError()). - * Special: Adding any prefix (including NULL) invalidates any previous prefix or dictionary - * Note 1 : Prefix buffer is referenced. It **must** outlive compression. - * Its content must remain unmodified during compression. - * Note 2 : If the intention is to diff some large src data blob with some prior version of itself, - * ensure that the window size is large enough to contain the entire source. - * See ZSTD_c_windowLog. - * Note 3 : Referencing a prefix involves building tables, which are dependent on compression parameters. - * It's a CPU consuming operation, with non-negligible impact on latency. - * If there is a need to use the same prefix multiple times, consider loadDictionary instead. - * Note 4 : By default, the prefix is interpreted as raw content (ZSTD_dct_rawContent). - * Use experimental ZSTD_CCtx_refPrefix_advanced() to alter dictionary interpretation. */ -ZSTDLIB_API size_t ZSTD_CCtx_refPrefix(ZSTD_CCtx* cctx, - const void* prefix, size_t prefixSize); - -/*! ZSTD_DCtx_loadDictionary() : Requires v1.4.0+ - * Create an internal DDict from dict buffer, to be used to decompress all future frames. - * The dictionary remains valid for all future frames, until explicitly invalidated, or - * a new dictionary is loaded. - * @result : 0, or an error code (which can be tested with ZSTD_isError()). - * Special : Adding a NULL (or 0-size) dictionary invalidates any previous dictionary, - * meaning "return to no-dictionary mode". - * Note 1 : Loading a dictionary involves building tables, - * which has a non-negligible impact on CPU usage and latency. - * It's recommended to "load once, use many times", to amortize the cost - * Note 2 :`dict` content will be copied internally, so `dict` can be released after loading. - * Use ZSTD_DCtx_loadDictionary_byReference() to reference dictionary content instead. - * Note 3 : Use ZSTD_DCtx_loadDictionary_advanced() to take control of - * how dictionary content is loaded and interpreted. - */ -ZSTDLIB_API size_t ZSTD_DCtx_loadDictionary(ZSTD_DCtx* dctx, const void* dict, size_t dictSize); - -/*! ZSTD_DCtx_refDDict() : Requires v1.4.0+ - * Reference a prepared dictionary, to be used to decompress next frames. - * The dictionary remains active for decompression of future frames using same DCtx. - * - * If called with ZSTD_d_refMultipleDDicts enabled, repeated calls of this function - * will store the DDict references in a table, and the DDict used for decompression - * will be determined at decompression time, as per the dict ID in the frame. - * The memory for the table is allocated on the first call to refDDict, and can be - * freed with ZSTD_freeDCtx(). - * - * If called with ZSTD_d_refMultipleDDicts disabled (the default), only one dictionary - * will be managed, and referencing a dictionary effectively "discards" any previous one. - * - * @result : 0, or an error code (which can be tested with ZSTD_isError()). - * Special: referencing a NULL DDict means "return to no-dictionary mode". - * Note 2 : DDict is just referenced, its lifetime must outlive its usage from DCtx. - */ -ZSTDLIB_API size_t ZSTD_DCtx_refDDict(ZSTD_DCtx* dctx, const ZSTD_DDict* ddict); - -/*! ZSTD_DCtx_refPrefix() : Requires v1.4.0+ - * Reference a prefix (single-usage dictionary) to decompress next frame. - * This is the reverse operation of ZSTD_CCtx_refPrefix(), - * and must use the same prefix as the one used during compression. - * Prefix is **only used once**. Reference is discarded at end of frame. - * End of frame is reached when ZSTD_decompressStream() returns 0. - * @result : 0, or an error code (which can be tested with ZSTD_isError()). - * Note 1 : Adding any prefix (including NULL) invalidates any previously set prefix or dictionary - * Note 2 : Prefix buffer is referenced. It **must** outlive decompression. - * Prefix buffer must remain unmodified up to the end of frame, - * reached when ZSTD_decompressStream() returns 0. - * Note 3 : By default, the prefix is treated as raw content (ZSTD_dct_rawContent). - * Use ZSTD_CCtx_refPrefix_advanced() to alter dictMode (Experimental section) - * Note 4 : Referencing a raw content prefix has almost no cpu nor memory cost. - * A full dictionary is more costly, as it requires building tables. - */ -ZSTDLIB_API size_t ZSTD_DCtx_refPrefix(ZSTD_DCtx* dctx, - const void* prefix, size_t prefixSize); - -/* === Memory management === */ - -/*! ZSTD_sizeof_*() : Requires v1.4.0+ - * These functions give the _current_ memory usage of selected object. - * Note that object memory usage can evolve (increase or decrease) over time. */ -ZSTDLIB_API size_t ZSTD_sizeof_CCtx(const ZSTD_CCtx* cctx); -ZSTDLIB_API size_t ZSTD_sizeof_DCtx(const ZSTD_DCtx* dctx); -ZSTDLIB_API size_t ZSTD_sizeof_CStream(const ZSTD_CStream* zcs); -ZSTDLIB_API size_t ZSTD_sizeof_DStream(const ZSTD_DStream* zds); -ZSTDLIB_API size_t ZSTD_sizeof_CDict(const ZSTD_CDict* cdict); -ZSTDLIB_API size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict); - -#endif /* ZSTD_H_235446 */ - - -/* ************************************************************************************** - * ADVANCED AND EXPERIMENTAL FUNCTIONS - **************************************************************************************** - * The definitions in the following section are considered experimental. - * They are provided for advanced scenarios. - * They should never be used with a dynamic library, as prototypes may change in the future. - * Use them only in association with static linking. - * ***************************************************************************************/ - -#if defined(ZSTD_STATIC_LINKING_ONLY) && !defined(ZSTD_H_ZSTD_STATIC_LINKING_ONLY) -#define ZSTD_H_ZSTD_STATIC_LINKING_ONLY - -/* This can be overridden externally to hide static symbols. */ -#ifndef ZSTDLIB_STATIC_API -# if defined(ZSTD_DLL_EXPORT) && (ZSTD_DLL_EXPORT==1) -# define ZSTDLIB_STATIC_API __declspec(dllexport) ZSTDLIB_VISIBLE -# elif defined(ZSTD_DLL_IMPORT) && (ZSTD_DLL_IMPORT==1) -# define ZSTDLIB_STATIC_API __declspec(dllimport) ZSTDLIB_VISIBLE -# else -# define ZSTDLIB_STATIC_API ZSTDLIB_VISIBLE -# endif -#endif - -/**************************************************************************************** - * experimental API (static linking only) - **************************************************************************************** - * The following symbols and constants - * are not planned to join "stable API" status in the near future. - * They can still change in future versions. - * Some of them are planned to remain in the static_only section indefinitely. - * Some of them might be removed in the future (especially when redundant with existing stable functions) - * ***************************************************************************************/ - -#define ZSTD_FRAMEHEADERSIZE_PREFIX(format) ((format) == ZSTD_f_zstd1 ? 5 : 1) /* minimum input size required to query frame header size */ -#define ZSTD_FRAMEHEADERSIZE_MIN(format) ((format) == ZSTD_f_zstd1 ? 6 : 2) -#define ZSTD_FRAMEHEADERSIZE_MAX 18 /* can be useful for static allocation */ -#define ZSTD_SKIPPABLEHEADERSIZE 8 - -/* compression parameter bounds */ -#define ZSTD_WINDOWLOG_MAX_32 30 -#define ZSTD_WINDOWLOG_MAX_64 31 -#define ZSTD_WINDOWLOG_MAX ((int)(sizeof(size_t) == 4 ? ZSTD_WINDOWLOG_MAX_32 : ZSTD_WINDOWLOG_MAX_64)) -#define ZSTD_WINDOWLOG_MIN 10 -#define ZSTD_HASHLOG_MAX ((ZSTD_WINDOWLOG_MAX < 30) ? ZSTD_WINDOWLOG_MAX : 30) -#define ZSTD_HASHLOG_MIN 6 -#define ZSTD_CHAINLOG_MAX_32 29 -#define ZSTD_CHAINLOG_MAX_64 30 -#define ZSTD_CHAINLOG_MAX ((int)(sizeof(size_t) == 4 ? ZSTD_CHAINLOG_MAX_32 : ZSTD_CHAINLOG_MAX_64)) -#define ZSTD_CHAINLOG_MIN ZSTD_HASHLOG_MIN -#define ZSTD_SEARCHLOG_MAX (ZSTD_WINDOWLOG_MAX-1) -#define ZSTD_SEARCHLOG_MIN 1 -#define ZSTD_MINMATCH_MAX 7 /* only for ZSTD_fast, other strategies are limited to 6 */ -#define ZSTD_MINMATCH_MIN 3 /* only for ZSTD_btopt+, faster strategies are limited to 4 */ -#define ZSTD_TARGETLENGTH_MAX ZSTD_BLOCKSIZE_MAX -#define ZSTD_TARGETLENGTH_MIN 0 /* note : comparing this constant to an unsigned results in a tautological test */ -#define ZSTD_STRATEGY_MIN ZSTD_fast -#define ZSTD_STRATEGY_MAX ZSTD_btultra2 -#define ZSTD_BLOCKSIZE_MAX_MIN (1 << 10) /* The minimum valid max blocksize. Maximum blocksizes smaller than this make compressBound() inaccurate. */ - - -#define ZSTD_OVERLAPLOG_MIN 0 -#define ZSTD_OVERLAPLOG_MAX 9 - -#define ZSTD_WINDOWLOG_LIMIT_DEFAULT 27 /* by default, the streaming decoder will refuse any frame - * requiring larger than (1< 0: - * If litLength != 0: - * rep == 1 --> offset == repeat_offset_1 - * rep == 2 --> offset == repeat_offset_2 - * rep == 3 --> offset == repeat_offset_3 - * If litLength == 0: - * rep == 1 --> offset == repeat_offset_2 - * rep == 2 --> offset == repeat_offset_3 - * rep == 3 --> offset == repeat_offset_1 - 1 - * - * Note: This field is optional. ZSTD_generateSequences() will calculate the value of - * 'rep', but repeat offsets do not necessarily need to be calculated from an external - * sequence provider's perspective. For example, ZSTD_compressSequences() does not - * use this 'rep' field at all (as of now). - */ -} ZSTD_Sequence; - -typedef struct { - unsigned windowLog; /**< largest match distance : larger == more compression, more memory needed during decompression */ - unsigned chainLog; /**< fully searched segment : larger == more compression, slower, more memory (useless for fast) */ - unsigned hashLog; /**< dispatch table : larger == faster, more memory */ - unsigned searchLog; /**< nb of searches : larger == more compression, slower */ - unsigned minMatch; /**< match length searched : larger == faster decompression, sometimes less compression */ - unsigned targetLength; /**< acceptable match size for optimal parser (only) : larger == more compression, slower */ - ZSTD_strategy strategy; /**< see ZSTD_strategy definition above */ -} ZSTD_compressionParameters; - -typedef struct { - int contentSizeFlag; /**< 1: content size will be in frame header (when known) */ - int checksumFlag; /**< 1: generate a 32-bits checksum using XXH64 algorithm at end of frame, for error detection */ - int noDictIDFlag; /**< 1: no dictID will be saved into frame header (dictID is only useful for dictionary compression) */ -} ZSTD_frameParameters; - -typedef struct { - ZSTD_compressionParameters cParams; - ZSTD_frameParameters fParams; -} ZSTD_parameters; - -typedef enum { - ZSTD_dct_auto = 0, /* dictionary is "full" when starting with ZSTD_MAGIC_DICTIONARY, otherwise it is "rawContent" */ - ZSTD_dct_rawContent = 1, /* ensures dictionary is always loaded as rawContent, even if it starts with ZSTD_MAGIC_DICTIONARY */ - ZSTD_dct_fullDict = 2 /* refuses to load a dictionary if it does not respect Zstandard's specification, starting with ZSTD_MAGIC_DICTIONARY */ -} ZSTD_dictContentType_e; - -typedef enum { - ZSTD_dlm_byCopy = 0, /**< Copy dictionary content internally */ - ZSTD_dlm_byRef = 1 /**< Reference dictionary content -- the dictionary buffer must outlive its users. */ -} ZSTD_dictLoadMethod_e; - -typedef enum { - ZSTD_f_zstd1 = 0, /* zstd frame format, specified in zstd_compression_format.md (default) */ - ZSTD_f_zstd1_magicless = 1 /* Variant of zstd frame format, without initial 4-bytes magic number. - * Useful to save 4 bytes per generated frame. - * Decoder cannot recognise automatically this format, requiring this instruction. */ -} ZSTD_format_e; - -typedef enum { - /* Note: this enum controls ZSTD_d_forceIgnoreChecksum */ - ZSTD_d_validateChecksum = 0, - ZSTD_d_ignoreChecksum = 1 -} ZSTD_forceIgnoreChecksum_e; - -typedef enum { - /* Note: this enum controls ZSTD_d_refMultipleDDicts */ - ZSTD_rmd_refSingleDDict = 0, - ZSTD_rmd_refMultipleDDicts = 1 -} ZSTD_refMultipleDDicts_e; - -typedef enum { - /* Note: this enum and the behavior it controls are effectively internal - * implementation details of the compressor. They are expected to continue - * to evolve and should be considered only in the context of extremely - * advanced performance tuning. - * - * Zstd currently supports the use of a CDict in three ways: - * - * - The contents of the CDict can be copied into the working context. This - * means that the compression can search both the dictionary and input - * while operating on a single set of internal tables. This makes - * the compression faster per-byte of input. However, the initial copy of - * the CDict's tables incurs a fixed cost at the beginning of the - * compression. For small compressions (< 8 KB), that copy can dominate - * the cost of the compression. - * - * - The CDict's tables can be used in-place. In this model, compression is - * slower per input byte, because the compressor has to search two sets of - * tables. However, this model incurs no start-up cost (as long as the - * working context's tables can be reused). For small inputs, this can be - * faster than copying the CDict's tables. - * - * - The CDict's tables are not used at all, and instead we use the working - * context alone to reload the dictionary and use params based on the source - * size. See ZSTD_compress_insertDictionary() and ZSTD_compress_usingDict(). - * This method is effective when the dictionary sizes are very small relative - * to the input size, and the input size is fairly large to begin with. - * - * Zstd has a simple internal heuristic that selects which strategy to use - * at the beginning of a compression. However, if experimentation shows that - * Zstd is making poor choices, it is possible to override that choice with - * this enum. - */ - ZSTD_dictDefaultAttach = 0, /* Use the default heuristic. */ - ZSTD_dictForceAttach = 1, /* Never copy the dictionary. */ - ZSTD_dictForceCopy = 2, /* Always copy the dictionary. */ - ZSTD_dictForceLoad = 3 /* Always reload the dictionary */ -} ZSTD_dictAttachPref_e; - -typedef enum { - ZSTD_lcm_auto = 0, /**< Automatically determine the compression mode based on the compression level. - * Negative compression levels will be uncompressed, and positive compression - * levels will be compressed. */ - ZSTD_lcm_huffman = 1, /**< Always attempt Huffman compression. Uncompressed literals will still be - * emitted if Huffman compression is not profitable. */ - ZSTD_lcm_uncompressed = 2 /**< Always emit uncompressed literals. */ -} ZSTD_literalCompressionMode_e; - -typedef enum { - /* Note: This enum controls features which are conditionally beneficial. Zstd typically will make a final - * decision on whether or not to enable the feature (ZSTD_ps_auto), but setting the switch to ZSTD_ps_enable - * or ZSTD_ps_disable allow for a force enable/disable the feature. - */ - ZSTD_ps_auto = 0, /* Let the library automatically determine whether the feature shall be enabled */ - ZSTD_ps_enable = 1, /* Force-enable the feature */ - ZSTD_ps_disable = 2 /* Do not use the feature */ -} ZSTD_paramSwitch_e; - -/*************************************** -* Frame header and size functions -***************************************/ - -/*! ZSTD_findDecompressedSize() : - * `src` should point to the start of a series of ZSTD encoded and/or skippable frames - * `srcSize` must be the _exact_ size of this series - * (i.e. there should be a frame boundary at `src + srcSize`) - * @return : - decompressed size of all data in all successive frames - * - if the decompressed size cannot be determined: ZSTD_CONTENTSIZE_UNKNOWN - * - if an error occurred: ZSTD_CONTENTSIZE_ERROR - * - * note 1 : decompressed size is an optional field, that may not be present, especially in streaming mode. - * When `return==ZSTD_CONTENTSIZE_UNKNOWN`, data to decompress could be any size. - * In which case, it's necessary to use streaming mode to decompress data. - * note 2 : decompressed size is always present when compression is done with ZSTD_compress() - * note 3 : decompressed size can be very large (64-bits value), - * potentially larger than what local system can handle as a single memory segment. - * In which case, it's necessary to use streaming mode to decompress data. - * note 4 : If source is untrusted, decompressed size could be wrong or intentionally modified. - * Always ensure result fits within application's authorized limits. - * Each application can set its own limits. - * note 5 : ZSTD_findDecompressedSize handles multiple frames, and so it must traverse the input to - * read each contained frame header. This is fast as most of the data is skipped, - * however it does mean that all frame data must be present and valid. */ -ZSTDLIB_STATIC_API unsigned long long ZSTD_findDecompressedSize(const void* src, size_t srcSize); - -/*! ZSTD_decompressBound() : - * `src` should point to the start of a series of ZSTD encoded and/or skippable frames - * `srcSize` must be the _exact_ size of this series - * (i.e. there should be a frame boundary at `src + srcSize`) - * @return : - upper-bound for the decompressed size of all data in all successive frames - * - if an error occurred: ZSTD_CONTENTSIZE_ERROR - * - * note 1 : an error can occur if `src` contains an invalid or incorrectly formatted frame. - * note 2 : the upper-bound is exact when the decompressed size field is available in every ZSTD encoded frame of `src`. - * in this case, `ZSTD_findDecompressedSize` and `ZSTD_decompressBound` return the same value. - * note 3 : when the decompressed size field isn't available, the upper-bound for that frame is calculated by: - * upper-bound = # blocks * min(128 KB, Window_Size) - */ -ZSTDLIB_STATIC_API unsigned long long ZSTD_decompressBound(const void* src, size_t srcSize); - -/*! ZSTD_frameHeaderSize() : - * srcSize must be >= ZSTD_FRAMEHEADERSIZE_PREFIX. - * @return : size of the Frame Header, - * or an error code (if srcSize is too small) */ -ZSTDLIB_STATIC_API size_t ZSTD_frameHeaderSize(const void* src, size_t srcSize); - -typedef enum { ZSTD_frame, ZSTD_skippableFrame } ZSTD_frameType_e; -typedef struct { - unsigned long long frameContentSize; /* if == ZSTD_CONTENTSIZE_UNKNOWN, it means this field is not available. 0 means "empty" */ - unsigned long long windowSize; /* can be very large, up to <= frameContentSize */ - unsigned blockSizeMax; - ZSTD_frameType_e frameType; /* if == ZSTD_skippableFrame, frameContentSize is the size of skippable content */ - unsigned headerSize; - unsigned dictID; - unsigned checksumFlag; - unsigned _reserved1; - unsigned _reserved2; -} ZSTD_frameHeader; - -/*! ZSTD_getFrameHeader() : - * decode Frame Header, or requires larger `srcSize`. - * @return : 0, `zfhPtr` is correctly filled, - * >0, `srcSize` is too small, value is wanted `srcSize` amount, - * or an error code, which can be tested using ZSTD_isError() */ -ZSTDLIB_STATIC_API size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize); /**< doesn't consume input */ -/*! ZSTD_getFrameHeader_advanced() : - * same as ZSTD_getFrameHeader(), - * with added capability to select a format (like ZSTD_f_zstd1_magicless) */ -ZSTDLIB_STATIC_API size_t ZSTD_getFrameHeader_advanced(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize, ZSTD_format_e format); - -/*! ZSTD_decompressionMargin() : - * Zstd supports in-place decompression, where the input and output buffers overlap. - * In this case, the output buffer must be at least (Margin + Output_Size) bytes large, - * and the input buffer must be at the end of the output buffer. - * - * _______________________ Output Buffer ________________________ - * | | - * | ____ Input Buffer ____| - * | | | - * v v v - * |---------------------------------------|-----------|----------| - * ^ ^ ^ - * |___________________ Output_Size ___________________|_ Margin _| - * - * NOTE: See also ZSTD_DECOMPRESSION_MARGIN(). - * NOTE: This applies only to single-pass decompression through ZSTD_decompress() or - * ZSTD_decompressDCtx(). - * NOTE: This function supports multi-frame input. - * - * @param src The compressed frame(s) - * @param srcSize The size of the compressed frame(s) - * @returns The decompression margin or an error that can be checked with ZSTD_isError(). - */ -ZSTDLIB_STATIC_API size_t ZSTD_decompressionMargin(const void* src, size_t srcSize); - -/*! ZSTD_DECOMPRESS_MARGIN() : - * Similar to ZSTD_decompressionMargin(), but instead of computing the margin from - * the compressed frame, compute it from the original size and the blockSizeLog. - * See ZSTD_decompressionMargin() for details. - * - * WARNING: This macro does not support multi-frame input, the input must be a single - * zstd frame. If you need that support use the function, or implement it yourself. - * - * @param originalSize The original uncompressed size of the data. - * @param blockSize The block size == MIN(windowSize, ZSTD_BLOCKSIZE_MAX). - * Unless you explicitly set the windowLog smaller than - * ZSTD_BLOCKSIZELOG_MAX you can just use ZSTD_BLOCKSIZE_MAX. - */ -#define ZSTD_DECOMPRESSION_MARGIN(originalSize, blockSize) ((size_t)( \ - ZSTD_FRAMEHEADERSIZE_MAX /* Frame header */ + \ - 4 /* checksum */ + \ - ((originalSize) == 0 ? 0 : 3 * (((originalSize) + (blockSize) - 1) / blockSize)) /* 3 bytes per block */ + \ - (blockSize) /* One block of margin */ \ - )) - -typedef enum { - ZSTD_sf_noBlockDelimiters = 0, /* Representation of ZSTD_Sequence has no block delimiters, sequences only */ - ZSTD_sf_explicitBlockDelimiters = 1 /* Representation of ZSTD_Sequence contains explicit block delimiters */ -} ZSTD_sequenceFormat_e; - -/*! ZSTD_sequenceBound() : - * `srcSize` : size of the input buffer - * @return : upper-bound for the number of sequences that can be generated - * from a buffer of srcSize bytes - * - * note : returns number of sequences - to get bytes, multiply by sizeof(ZSTD_Sequence). - */ -ZSTDLIB_STATIC_API size_t ZSTD_sequenceBound(size_t srcSize); - -/*! ZSTD_generateSequences() : - * WARNING: This function is meant for debugging and informational purposes ONLY! - * Its implementation is flawed, and it will be deleted in a future version. - * It is not guaranteed to succeed, as there are several cases where it will give - * up and fail. You should NOT use this function in production code. - * - * This function is deprecated, and will be removed in a future version. - * - * Generate sequences using ZSTD_compress2(), given a source buffer. - * - * @param zc The compression context to be used for ZSTD_compress2(). Set any - * compression parameters you need on this context. - * @param outSeqs The output sequences buffer of size @p outSeqsSize - * @param outSeqsSize The size of the output sequences buffer. - * ZSTD_sequenceBound(srcSize) is an upper bound on the number - * of sequences that can be generated. - * @param src The source buffer to generate sequences from of size @p srcSize. - * @param srcSize The size of the source buffer. - * - * Each block will end with a dummy sequence - * with offset == 0, matchLength == 0, and litLength == length of last literals. - * litLength may be == 0, and if so, then the sequence of (of: 0 ml: 0 ll: 0) - * simply acts as a block delimiter. - * - * @returns The number of sequences generated, necessarily less than - * ZSTD_sequenceBound(srcSize), or an error code that can be checked - * with ZSTD_isError(). - */ -ZSTD_DEPRECATED("For debugging only, will be replaced by ZSTD_extractSequences()") -ZSTDLIB_STATIC_API size_t -ZSTD_generateSequences(ZSTD_CCtx* zc, - ZSTD_Sequence* outSeqs, size_t outSeqsSize, - const void* src, size_t srcSize); - -/*! ZSTD_mergeBlockDelimiters() : - * Given an array of ZSTD_Sequence, remove all sequences that represent block delimiters/last literals - * by merging them into the literals of the next sequence. - * - * As such, the final generated result has no explicit representation of block boundaries, - * and the final last literals segment is not represented in the sequences. - * - * The output of this function can be fed into ZSTD_compressSequences() with CCtx - * setting of ZSTD_c_blockDelimiters as ZSTD_sf_noBlockDelimiters - * @return : number of sequences left after merging - */ -ZSTDLIB_STATIC_API size_t ZSTD_mergeBlockDelimiters(ZSTD_Sequence* sequences, size_t seqsSize); - -/*! ZSTD_compressSequences() : - * Compress an array of ZSTD_Sequence, associated with @src buffer, into dst. - * @src contains the entire input (not just the literals). - * If @srcSize > sum(sequence.length), the remaining bytes are considered all literals - * If a dictionary is included, then the cctx should reference the dict. (see: ZSTD_CCtx_refCDict(), ZSTD_CCtx_loadDictionary(), etc.) - * The entire source is compressed into a single frame. - * - * The compression behavior changes based on cctx params. In particular: - * If ZSTD_c_blockDelimiters == ZSTD_sf_noBlockDelimiters, the array of ZSTD_Sequence is expected to contain - * no block delimiters (defined in ZSTD_Sequence). Block boundaries are roughly determined based on - * the block size derived from the cctx, and sequences may be split. This is the default setting. - * - * If ZSTD_c_blockDelimiters == ZSTD_sf_explicitBlockDelimiters, the array of ZSTD_Sequence is expected to contain - * block delimiters (defined in ZSTD_Sequence). Behavior is undefined if no block delimiters are provided. - * - * If ZSTD_c_validateSequences == 0, this function will blindly accept the sequences provided. Invalid sequences cause undefined - * behavior. If ZSTD_c_validateSequences == 1, then if sequence is invalid (see doc/zstd_compression_format.md for - * specifics regarding offset/matchlength requirements) then the function will bail out and return an error. - * - * In addition to the two adjustable experimental params, there are other important cctx params. - * - ZSTD_c_minMatch MUST be set as less than or equal to the smallest match generated by the match finder. It has a minimum value of ZSTD_MINMATCH_MIN. - * - ZSTD_c_compressionLevel accordingly adjusts the strength of the entropy coder, as it would in typical compression. - * - ZSTD_c_windowLog affects offset validation: this function will return an error at higher debug levels if a provided offset - * is larger than what the spec allows for a given window log and dictionary (if present). See: doc/zstd_compression_format.md - * - * Note: Repcodes are, as of now, always re-calculated within this function, so ZSTD_Sequence::rep is unused. - * Note 2: Once we integrate ability to ingest repcodes, the explicit block delims mode must respect those repcodes exactly, - * and cannot emit an RLE block that disagrees with the repcode history - * @return : final compressed size, or a ZSTD error code. - */ -ZSTDLIB_STATIC_API size_t -ZSTD_compressSequences( ZSTD_CCtx* cctx, void* dst, size_t dstSize, - const ZSTD_Sequence* inSeqs, size_t inSeqsSize, - const void* src, size_t srcSize); - - -/*! ZSTD_writeSkippableFrame() : - * Generates a zstd skippable frame containing data given by src, and writes it to dst buffer. - * - * Skippable frames begin with a 4-byte magic number. There are 16 possible choices of magic number, - * ranging from ZSTD_MAGIC_SKIPPABLE_START to ZSTD_MAGIC_SKIPPABLE_START+15. - * As such, the parameter magicVariant controls the exact skippable frame magic number variant used, so - * the magic number used will be ZSTD_MAGIC_SKIPPABLE_START + magicVariant. - * - * Returns an error if destination buffer is not large enough, if the source size is not representable - * with a 4-byte unsigned int, or if the parameter magicVariant is greater than 15 (and therefore invalid). - * - * @return : number of bytes written or a ZSTD error. - */ -ZSTDLIB_STATIC_API size_t ZSTD_writeSkippableFrame(void* dst, size_t dstCapacity, - const void* src, size_t srcSize, unsigned magicVariant); - -/*! ZSTD_readSkippableFrame() : - * Retrieves a zstd skippable frame containing data given by src, and writes it to dst buffer. - * - * The parameter magicVariant will receive the magicVariant that was supplied when the frame was written, - * i.e. magicNumber - ZSTD_MAGIC_SKIPPABLE_START. This can be NULL if the caller is not interested - * in the magicVariant. - * - * Returns an error if destination buffer is not large enough, or if the frame is not skippable. - * - * @return : number of bytes written or a ZSTD error. - */ -ZSTDLIB_API size_t ZSTD_readSkippableFrame(void* dst, size_t dstCapacity, unsigned* magicVariant, - const void* src, size_t srcSize); - -/*! ZSTD_isSkippableFrame() : - * Tells if the content of `buffer` starts with a valid Frame Identifier for a skippable frame. - */ -ZSTDLIB_API unsigned ZSTD_isSkippableFrame(const void* buffer, size_t size); - - - -/*************************************** -* Memory management -***************************************/ - -/*! ZSTD_estimate*() : - * These functions make it possible to estimate memory usage - * of a future {D,C}Ctx, before its creation. - * This is useful in combination with ZSTD_initStatic(), - * which makes it possible to employ a static buffer for ZSTD_CCtx* state. - * - * ZSTD_estimateCCtxSize() will provide a memory budget large enough - * to compress data of any size using one-shot compression ZSTD_compressCCtx() or ZSTD_compress2() - * associated with any compression level up to max specified one. - * The estimate will assume the input may be arbitrarily large, - * which is the worst case. - * - * Note that the size estimation is specific for one-shot compression, - * it is not valid for streaming (see ZSTD_estimateCStreamSize*()) - * nor other potential ways of using a ZSTD_CCtx* state. - * - * When srcSize can be bound by a known and rather "small" value, - * this knowledge can be used to provide a tighter budget estimation - * because the ZSTD_CCtx* state will need less memory for small inputs. - * This tighter estimation can be provided by employing more advanced functions - * ZSTD_estimateCCtxSize_usingCParams(), which can be used in tandem with ZSTD_getCParams(), - * and ZSTD_estimateCCtxSize_usingCCtxParams(), which can be used in tandem with ZSTD_CCtxParams_setParameter(). - * Both can be used to estimate memory using custom compression parameters and arbitrary srcSize limits. - * - * Note : only single-threaded compression is supported. - * ZSTD_estimateCCtxSize_usingCCtxParams() will return an error code if ZSTD_c_nbWorkers is >= 1. - */ -ZSTDLIB_STATIC_API size_t ZSTD_estimateCCtxSize(int maxCompressionLevel); -ZSTDLIB_STATIC_API size_t ZSTD_estimateCCtxSize_usingCParams(ZSTD_compressionParameters cParams); -ZSTDLIB_STATIC_API size_t ZSTD_estimateCCtxSize_usingCCtxParams(const ZSTD_CCtx_params* params); -ZSTDLIB_STATIC_API size_t ZSTD_estimateDCtxSize(void); - -/*! ZSTD_estimateCStreamSize() : - * ZSTD_estimateCStreamSize() will provide a memory budget large enough for streaming compression - * using any compression level up to the max specified one. - * It will also consider src size to be arbitrarily "large", which is a worst case scenario. - * If srcSize is known to always be small, ZSTD_estimateCStreamSize_usingCParams() can provide a tighter estimation. - * ZSTD_estimateCStreamSize_usingCParams() can be used in tandem with ZSTD_getCParams() to create cParams from compressionLevel. - * ZSTD_estimateCStreamSize_usingCCtxParams() can be used in tandem with ZSTD_CCtxParams_setParameter(). Only single-threaded compression is supported. This function will return an error code if ZSTD_c_nbWorkers is >= 1. - * Note : CStream size estimation is only correct for single-threaded compression. - * ZSTD_estimateCStreamSize_usingCCtxParams() will return an error code if ZSTD_c_nbWorkers is >= 1. - * Note 2 : ZSTD_estimateCStreamSize* functions are not compatible with the Block-Level Sequence Producer API at this time. - * Size estimates assume that no external sequence producer is registered. - * - * ZSTD_DStream memory budget depends on frame's window Size. - * This information can be passed manually, using ZSTD_estimateDStreamSize, - * or deducted from a valid frame Header, using ZSTD_estimateDStreamSize_fromFrame(); - * Any frame requesting a window size larger than max specified one will be rejected. - * Note : if streaming is init with function ZSTD_init?Stream_usingDict(), - * an internal ?Dict will be created, which additional size is not estimated here. - * In this case, get total size by adding ZSTD_estimate?DictSize - */ -ZSTDLIB_STATIC_API size_t ZSTD_estimateCStreamSize(int maxCompressionLevel); -ZSTDLIB_STATIC_API size_t ZSTD_estimateCStreamSize_usingCParams(ZSTD_compressionParameters cParams); -ZSTDLIB_STATIC_API size_t ZSTD_estimateCStreamSize_usingCCtxParams(const ZSTD_CCtx_params* params); -ZSTDLIB_STATIC_API size_t ZSTD_estimateDStreamSize(size_t maxWindowSize); -ZSTDLIB_STATIC_API size_t ZSTD_estimateDStreamSize_fromFrame(const void* src, size_t srcSize); - -/*! ZSTD_estimate?DictSize() : - * ZSTD_estimateCDictSize() will bet that src size is relatively "small", and content is copied, like ZSTD_createCDict(). - * ZSTD_estimateCDictSize_advanced() makes it possible to control compression parameters precisely, like ZSTD_createCDict_advanced(). - * Note : dictionaries created by reference (`ZSTD_dlm_byRef`) are logically smaller. - */ -ZSTDLIB_STATIC_API size_t ZSTD_estimateCDictSize(size_t dictSize, int compressionLevel); -ZSTDLIB_STATIC_API size_t ZSTD_estimateCDictSize_advanced(size_t dictSize, ZSTD_compressionParameters cParams, ZSTD_dictLoadMethod_e dictLoadMethod); -ZSTDLIB_STATIC_API size_t ZSTD_estimateDDictSize(size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMethod); - -/*! ZSTD_initStatic*() : - * Initialize an object using a pre-allocated fixed-size buffer. - * workspace: The memory area to emplace the object into. - * Provided pointer *must be 8-bytes aligned*. - * Buffer must outlive object. - * workspaceSize: Use ZSTD_estimate*Size() to determine - * how large workspace must be to support target scenario. - * @return : pointer to object (same address as workspace, just different type), - * or NULL if error (size too small, incorrect alignment, etc.) - * Note : zstd will never resize nor malloc() when using a static buffer. - * If the object requires more memory than available, - * zstd will just error out (typically ZSTD_error_memory_allocation). - * Note 2 : there is no corresponding "free" function. - * Since workspace is allocated externally, it must be freed externally too. - * Note 3 : cParams : use ZSTD_getCParams() to convert a compression level - * into its associated cParams. - * Limitation 1 : currently not compatible with internal dictionary creation, triggered by - * ZSTD_CCtx_loadDictionary(), ZSTD_initCStream_usingDict() or ZSTD_initDStream_usingDict(). - * Limitation 2 : static cctx currently not compatible with multi-threading. - * Limitation 3 : static dctx is incompatible with legacy support. - */ -ZSTDLIB_STATIC_API ZSTD_CCtx* ZSTD_initStaticCCtx(void* workspace, size_t workspaceSize); -ZSTDLIB_STATIC_API ZSTD_CStream* ZSTD_initStaticCStream(void* workspace, size_t workspaceSize); /**< same as ZSTD_initStaticCCtx() */ - -ZSTDLIB_STATIC_API ZSTD_DCtx* ZSTD_initStaticDCtx(void* workspace, size_t workspaceSize); -ZSTDLIB_STATIC_API ZSTD_DStream* ZSTD_initStaticDStream(void* workspace, size_t workspaceSize); /**< same as ZSTD_initStaticDCtx() */ - -ZSTDLIB_STATIC_API const ZSTD_CDict* ZSTD_initStaticCDict( - void* workspace, size_t workspaceSize, - const void* dict, size_t dictSize, - ZSTD_dictLoadMethod_e dictLoadMethod, - ZSTD_dictContentType_e dictContentType, - ZSTD_compressionParameters cParams); - -ZSTDLIB_STATIC_API const ZSTD_DDict* ZSTD_initStaticDDict( - void* workspace, size_t workspaceSize, - const void* dict, size_t dictSize, - ZSTD_dictLoadMethod_e dictLoadMethod, - ZSTD_dictContentType_e dictContentType); - - -/*! Custom memory allocation : - * These prototypes make it possible to pass your own allocation/free functions. - * ZSTD_customMem is provided at creation time, using ZSTD_create*_advanced() variants listed below. - * All allocation/free operations will be completed using these custom variants instead of regular ones. - */ -typedef void* (*ZSTD_allocFunction) (void* opaque, size_t size); -typedef void (*ZSTD_freeFunction) (void* opaque, void* address); -typedef struct { ZSTD_allocFunction customAlloc; ZSTD_freeFunction customFree; void* opaque; } ZSTD_customMem; -static -#ifdef __GNUC__ -__attribute__((__unused__)) -#endif -ZSTD_customMem const ZSTD_defaultCMem = { NULL, NULL, NULL }; /**< this constant defers to stdlib's functions */ - -ZSTDLIB_STATIC_API ZSTD_CCtx* ZSTD_createCCtx_advanced(ZSTD_customMem customMem); -ZSTDLIB_STATIC_API ZSTD_CStream* ZSTD_createCStream_advanced(ZSTD_customMem customMem); -ZSTDLIB_STATIC_API ZSTD_DCtx* ZSTD_createDCtx_advanced(ZSTD_customMem customMem); -ZSTDLIB_STATIC_API ZSTD_DStream* ZSTD_createDStream_advanced(ZSTD_customMem customMem); - -ZSTDLIB_STATIC_API ZSTD_CDict* ZSTD_createCDict_advanced(const void* dict, size_t dictSize, - ZSTD_dictLoadMethod_e dictLoadMethod, - ZSTD_dictContentType_e dictContentType, - ZSTD_compressionParameters cParams, - ZSTD_customMem customMem); - -/*! Thread pool : - * These prototypes make it possible to share a thread pool among multiple compression contexts. - * This can limit resources for applications with multiple threads where each one uses - * a threaded compression mode (via ZSTD_c_nbWorkers parameter). - * ZSTD_createThreadPool creates a new thread pool with a given number of threads. - * Note that the lifetime of such pool must exist while being used. - * ZSTD_CCtx_refThreadPool assigns a thread pool to a context (use NULL argument value - * to use an internal thread pool). - * ZSTD_freeThreadPool frees a thread pool, accepts NULL pointer. - */ -typedef struct POOL_ctx_s ZSTD_threadPool; -ZSTDLIB_STATIC_API ZSTD_threadPool* ZSTD_createThreadPool(size_t numThreads); -ZSTDLIB_STATIC_API void ZSTD_freeThreadPool (ZSTD_threadPool* pool); /* accept NULL pointer */ -ZSTDLIB_STATIC_API size_t ZSTD_CCtx_refThreadPool(ZSTD_CCtx* cctx, ZSTD_threadPool* pool); - - -/* - * This API is temporary and is expected to change or disappear in the future! - */ -ZSTDLIB_STATIC_API ZSTD_CDict* ZSTD_createCDict_advanced2( - const void* dict, size_t dictSize, - ZSTD_dictLoadMethod_e dictLoadMethod, - ZSTD_dictContentType_e dictContentType, - const ZSTD_CCtx_params* cctxParams, - ZSTD_customMem customMem); - -ZSTDLIB_STATIC_API ZSTD_DDict* ZSTD_createDDict_advanced( - const void* dict, size_t dictSize, - ZSTD_dictLoadMethod_e dictLoadMethod, - ZSTD_dictContentType_e dictContentType, - ZSTD_customMem customMem); - - -/*************************************** -* Advanced compression functions -***************************************/ - -/*! ZSTD_createCDict_byReference() : - * Create a digested dictionary for compression - * Dictionary content is just referenced, not duplicated. - * As a consequence, `dictBuffer` **must** outlive CDict, - * and its content must remain unmodified throughout the lifetime of CDict. - * note: equivalent to ZSTD_createCDict_advanced(), with dictLoadMethod==ZSTD_dlm_byRef */ -ZSTDLIB_STATIC_API ZSTD_CDict* ZSTD_createCDict_byReference(const void* dictBuffer, size_t dictSize, int compressionLevel); - -/*! ZSTD_getCParams() : - * @return ZSTD_compressionParameters structure for a selected compression level and estimated srcSize. - * `estimatedSrcSize` value is optional, select 0 if not known */ -ZSTDLIB_STATIC_API ZSTD_compressionParameters ZSTD_getCParams(int compressionLevel, unsigned long long estimatedSrcSize, size_t dictSize); - -/*! ZSTD_getParams() : - * same as ZSTD_getCParams(), but @return a full `ZSTD_parameters` object instead of sub-component `ZSTD_compressionParameters`. - * All fields of `ZSTD_frameParameters` are set to default : contentSize=1, checksum=0, noDictID=0 */ -ZSTDLIB_STATIC_API ZSTD_parameters ZSTD_getParams(int compressionLevel, unsigned long long estimatedSrcSize, size_t dictSize); - -/*! ZSTD_checkCParams() : - * Ensure param values remain within authorized range. - * @return 0 on success, or an error code (can be checked with ZSTD_isError()) */ -ZSTDLIB_STATIC_API size_t ZSTD_checkCParams(ZSTD_compressionParameters params); - -/*! ZSTD_adjustCParams() : - * optimize params for a given `srcSize` and `dictSize`. - * `srcSize` can be unknown, in which case use ZSTD_CONTENTSIZE_UNKNOWN. - * `dictSize` must be `0` when there is no dictionary. - * cPar can be invalid : all parameters will be clamped within valid range in the @return struct. - * This function never fails (wide contract) */ -ZSTDLIB_STATIC_API ZSTD_compressionParameters ZSTD_adjustCParams(ZSTD_compressionParameters cPar, unsigned long long srcSize, size_t dictSize); - -/*! ZSTD_CCtx_setCParams() : - * Set all parameters provided within @p cparams into the working @p cctx. - * Note : if modifying parameters during compression (MT mode only), - * note that changes to the .windowLog parameter will be ignored. - * @return 0 on success, or an error code (can be checked with ZSTD_isError()). - * On failure, no parameters are updated. - */ -ZSTDLIB_STATIC_API size_t ZSTD_CCtx_setCParams(ZSTD_CCtx* cctx, ZSTD_compressionParameters cparams); - -/*! ZSTD_CCtx_setFParams() : - * Set all parameters provided within @p fparams into the working @p cctx. - * @return 0 on success, or an error code (can be checked with ZSTD_isError()). - */ -ZSTDLIB_STATIC_API size_t ZSTD_CCtx_setFParams(ZSTD_CCtx* cctx, ZSTD_frameParameters fparams); - -/*! ZSTD_CCtx_setParams() : - * Set all parameters provided within @p params into the working @p cctx. - * @return 0 on success, or an error code (can be checked with ZSTD_isError()). - */ -ZSTDLIB_STATIC_API size_t ZSTD_CCtx_setParams(ZSTD_CCtx* cctx, ZSTD_parameters params); - -/*! ZSTD_compress_advanced() : - * Note : this function is now DEPRECATED. - * It can be replaced by ZSTD_compress2(), in combination with ZSTD_CCtx_setParameter() and other parameter setters. - * This prototype will generate compilation warnings. */ -ZSTD_DEPRECATED("use ZSTD_compress2") -ZSTDLIB_STATIC_API -size_t ZSTD_compress_advanced(ZSTD_CCtx* cctx, - void* dst, size_t dstCapacity, - const void* src, size_t srcSize, - const void* dict,size_t dictSize, - ZSTD_parameters params); - -/*! ZSTD_compress_usingCDict_advanced() : - * Note : this function is now DEPRECATED. - * It can be replaced by ZSTD_compress2(), in combination with ZSTD_CCtx_loadDictionary() and other parameter setters. - * This prototype will generate compilation warnings. */ -ZSTD_DEPRECATED("use ZSTD_compress2 with ZSTD_CCtx_loadDictionary") -ZSTDLIB_STATIC_API -size_t ZSTD_compress_usingCDict_advanced(ZSTD_CCtx* cctx, - void* dst, size_t dstCapacity, - const void* src, size_t srcSize, - const ZSTD_CDict* cdict, - ZSTD_frameParameters fParams); - - -/*! ZSTD_CCtx_loadDictionary_byReference() : - * Same as ZSTD_CCtx_loadDictionary(), but dictionary content is referenced, instead of being copied into CCtx. - * It saves some memory, but also requires that `dict` outlives its usage within `cctx` */ -ZSTDLIB_STATIC_API size_t ZSTD_CCtx_loadDictionary_byReference(ZSTD_CCtx* cctx, const void* dict, size_t dictSize); - -/*! ZSTD_CCtx_loadDictionary_advanced() : - * Same as ZSTD_CCtx_loadDictionary(), but gives finer control over - * how to load the dictionary (by copy ? by reference ?) - * and how to interpret it (automatic ? force raw mode ? full mode only ?) */ -ZSTDLIB_STATIC_API size_t ZSTD_CCtx_loadDictionary_advanced(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_dictContentType_e dictContentType); - -/*! ZSTD_CCtx_refPrefix_advanced() : - * Same as ZSTD_CCtx_refPrefix(), but gives finer control over - * how to interpret prefix content (automatic ? force raw mode (default) ? full mode only ?) */ -ZSTDLIB_STATIC_API size_t ZSTD_CCtx_refPrefix_advanced(ZSTD_CCtx* cctx, const void* prefix, size_t prefixSize, ZSTD_dictContentType_e dictContentType); - -/* === experimental parameters === */ -/* these parameters can be used with ZSTD_setParameter() - * they are not guaranteed to remain supported in the future */ - - /* Enables rsyncable mode, - * which makes compressed files more rsync friendly - * by adding periodic synchronization points to the compressed data. - * The target average block size is ZSTD_c_jobSize / 2. - * It's possible to modify the job size to increase or decrease - * the granularity of the synchronization point. - * Once the jobSize is smaller than the window size, - * it will result in compression ratio degradation. - * NOTE 1: rsyncable mode only works when multithreading is enabled. - * NOTE 2: rsyncable performs poorly in combination with long range mode, - * since it will decrease the effectiveness of synchronization points, - * though mileage may vary. - * NOTE 3: Rsyncable mode limits maximum compression speed to ~400 MB/s. - * If the selected compression level is already running significantly slower, - * the overall speed won't be significantly impacted. - */ - #define ZSTD_c_rsyncable ZSTD_c_experimentalParam1 - -/* Select a compression format. - * The value must be of type ZSTD_format_e. - * See ZSTD_format_e enum definition for details */ -#define ZSTD_c_format ZSTD_c_experimentalParam2 - -/* Force back-reference distances to remain < windowSize, - * even when referencing into Dictionary content (default:0) */ -#define ZSTD_c_forceMaxWindow ZSTD_c_experimentalParam3 - -/* Controls whether the contents of a CDict - * are used in place, or copied into the working context. - * Accepts values from the ZSTD_dictAttachPref_e enum. - * See the comments on that enum for an explanation of the feature. */ -#define ZSTD_c_forceAttachDict ZSTD_c_experimentalParam4 - -/* Controlled with ZSTD_paramSwitch_e enum. - * Default is ZSTD_ps_auto. - * Set to ZSTD_ps_disable to never compress literals. - * Set to ZSTD_ps_enable to always compress literals. (Note: uncompressed literals - * may still be emitted if huffman is not beneficial to use.) - * - * By default, in ZSTD_ps_auto, the library will decide at runtime whether to use - * literals compression based on the compression parameters - specifically, - * negative compression levels do not use literal compression. - */ -#define ZSTD_c_literalCompressionMode ZSTD_c_experimentalParam5 - -/* User's best guess of source size. - * Hint is not valid when srcSizeHint == 0. - * There is no guarantee that hint is close to actual source size, - * but compression ratio may regress significantly if guess considerably underestimates */ -#define ZSTD_c_srcSizeHint ZSTD_c_experimentalParam7 - -/* Controls whether the new and experimental "dedicated dictionary search - * structure" can be used. This feature is still rough around the edges, be - * prepared for surprising behavior! - * - * How to use it: - * - * When using a CDict, whether to use this feature or not is controlled at - * CDict creation, and it must be set in a CCtxParams set passed into that - * construction (via ZSTD_createCDict_advanced2()). A compression will then - * use the feature or not based on how the CDict was constructed; the value of - * this param, set in the CCtx, will have no effect. - * - * However, when a dictionary buffer is passed into a CCtx, such as via - * ZSTD_CCtx_loadDictionary(), this param can be set on the CCtx to control - * whether the CDict that is created internally can use the feature or not. - * - * What it does: - * - * Normally, the internal data structures of the CDict are analogous to what - * would be stored in a CCtx after compressing the contents of a dictionary. - * To an approximation, a compression using a dictionary can then use those - * data structures to simply continue what is effectively a streaming - * compression where the simulated compression of the dictionary left off. - * Which is to say, the search structures in the CDict are normally the same - * format as in the CCtx. - * - * It is possible to do better, since the CDict is not like a CCtx: the search - * structures are written once during CDict creation, and then are only read - * after that, while the search structures in the CCtx are both read and - * written as the compression goes along. This means we can choose a search - * structure for the dictionary that is read-optimized. - * - * This feature enables the use of that different structure. - * - * Note that some of the members of the ZSTD_compressionParameters struct have - * different semantics and constraints in the dedicated search structure. It is - * highly recommended that you simply set a compression level in the CCtxParams - * you pass into the CDict creation call, and avoid messing with the cParams - * directly. - * - * Effects: - * - * This will only have any effect when the selected ZSTD_strategy - * implementation supports this feature. Currently, that's limited to - * ZSTD_greedy, ZSTD_lazy, and ZSTD_lazy2. - * - * Note that this means that the CDict tables can no longer be copied into the - * CCtx, so the dict attachment mode ZSTD_dictForceCopy will no longer be - * usable. The dictionary can only be attached or reloaded. - * - * In general, you should expect compression to be faster--sometimes very much - * so--and CDict creation to be slightly slower. Eventually, we will probably - * make this mode the default. - */ -#define ZSTD_c_enableDedicatedDictSearch ZSTD_c_experimentalParam8 - -/* ZSTD_c_stableInBuffer - * Experimental parameter. - * Default is 0 == disabled. Set to 1 to enable. - * - * Tells the compressor that input data presented with ZSTD_inBuffer - * will ALWAYS be the same between calls. - * Technically, the @src pointer must never be changed, - * and the @pos field can only be updated by zstd. - * However, it's possible to increase the @size field, - * allowing scenarios where more data can be appended after compressions starts. - * These conditions are checked by the compressor, - * and compression will fail if they are not respected. - * Also, data in the ZSTD_inBuffer within the range [src, src + pos) - * MUST not be modified during compression or it will result in data corruption. - * - * When this flag is enabled zstd won't allocate an input window buffer, - * because the user guarantees it can reference the ZSTD_inBuffer until - * the frame is complete. But, it will still allocate an output buffer - * large enough to fit a block (see ZSTD_c_stableOutBuffer). This will also - * avoid the memcpy() from the input buffer to the input window buffer. - * - * NOTE: So long as the ZSTD_inBuffer always points to valid memory, using - * this flag is ALWAYS memory safe, and will never access out-of-bounds - * memory. However, compression WILL fail if conditions are not respected. - * - * WARNING: The data in the ZSTD_inBuffer in the range [src, src + pos) MUST - * not be modified during compression or it will result in data corruption. - * This is because zstd needs to reference data in the ZSTD_inBuffer to find - * matches. Normally zstd maintains its own window buffer for this purpose, - * but passing this flag tells zstd to rely on user provided buffer instead. - */ -#define ZSTD_c_stableInBuffer ZSTD_c_experimentalParam9 - -/* ZSTD_c_stableOutBuffer - * Experimental parameter. - * Default is 0 == disabled. Set to 1 to enable. - * - * Tells he compressor that the ZSTD_outBuffer will not be resized between - * calls. Specifically: (out.size - out.pos) will never grow. This gives the - * compressor the freedom to say: If the compressed data doesn't fit in the - * output buffer then return ZSTD_error_dstSizeTooSmall. This allows us to - * always decompress directly into the output buffer, instead of decompressing - * into an internal buffer and copying to the output buffer. - * - * When this flag is enabled zstd won't allocate an output buffer, because - * it can write directly to the ZSTD_outBuffer. It will still allocate the - * input window buffer (see ZSTD_c_stableInBuffer). - * - * Zstd will check that (out.size - out.pos) never grows and return an error - * if it does. While not strictly necessary, this should prevent surprises. - */ -#define ZSTD_c_stableOutBuffer ZSTD_c_experimentalParam10 - -/* ZSTD_c_blockDelimiters - * Default is 0 == ZSTD_sf_noBlockDelimiters. - * - * For use with sequence compression API: ZSTD_compressSequences(). - * - * Designates whether or not the given array of ZSTD_Sequence contains block delimiters - * and last literals, which are defined as sequences with offset == 0 and matchLength == 0. - * See the definition of ZSTD_Sequence for more specifics. - */ -#define ZSTD_c_blockDelimiters ZSTD_c_experimentalParam11 - -/* ZSTD_c_validateSequences - * Default is 0 == disabled. Set to 1 to enable sequence validation. - * - * For use with sequence compression API: ZSTD_compressSequences(). - * Designates whether or not we validate sequences provided to ZSTD_compressSequences() - * during function execution. - * - * Without validation, providing a sequence that does not conform to the zstd spec will cause - * undefined behavior, and may produce a corrupted block. - * - * With validation enabled, if sequence is invalid (see doc/zstd_compression_format.md for - * specifics regarding offset/matchlength requirements) then the function will bail out and - * return an error. - * - */ -#define ZSTD_c_validateSequences ZSTD_c_experimentalParam12 - -/* ZSTD_c_useBlockSplitter - * Controlled with ZSTD_paramSwitch_e enum. - * Default is ZSTD_ps_auto. - * Set to ZSTD_ps_disable to never use block splitter. - * Set to ZSTD_ps_enable to always use block splitter. - * - * By default, in ZSTD_ps_auto, the library will decide at runtime whether to use - * block splitting based on the compression parameters. - */ -#define ZSTD_c_useBlockSplitter ZSTD_c_experimentalParam13 - -/* ZSTD_c_useRowMatchFinder - * Controlled with ZSTD_paramSwitch_e enum. - * Default is ZSTD_ps_auto. - * Set to ZSTD_ps_disable to never use row-based matchfinder. - * Set to ZSTD_ps_enable to force usage of row-based matchfinder. - * - * By default, in ZSTD_ps_auto, the library will decide at runtime whether to use - * the row-based matchfinder based on support for SIMD instructions and the window log. - * Note that this only pertains to compression strategies: greedy, lazy, and lazy2 - */ -#define ZSTD_c_useRowMatchFinder ZSTD_c_experimentalParam14 - -/* ZSTD_c_deterministicRefPrefix - * Default is 0 == disabled. Set to 1 to enable. - * - * Zstd produces different results for prefix compression when the prefix is - * directly adjacent to the data about to be compressed vs. when it isn't. - * This is because zstd detects that the two buffers are contiguous and it can - * use a more efficient match finding algorithm. However, this produces different - * results than when the two buffers are non-contiguous. This flag forces zstd - * to always load the prefix in non-contiguous mode, even if it happens to be - * adjacent to the data, to guarantee determinism. - * - * If you really care about determinism when using a dictionary or prefix, - * like when doing delta compression, you should select this option. It comes - * at a speed penalty of about ~2.5% if the dictionary and data happened to be - * contiguous, and is free if they weren't contiguous. We don't expect that - * intentionally making the dictionary and data contiguous will be worth the - * cost to memcpy() the data. - */ -#define ZSTD_c_deterministicRefPrefix ZSTD_c_experimentalParam15 - -/* ZSTD_c_prefetchCDictTables - * Controlled with ZSTD_paramSwitch_e enum. Default is ZSTD_ps_auto. - * - * In some situations, zstd uses CDict tables in-place rather than copying them - * into the working context. (See docs on ZSTD_dictAttachPref_e above for details). - * In such situations, compression speed is seriously impacted when CDict tables are - * "cold" (outside CPU cache). This parameter instructs zstd to prefetch CDict tables - * when they are used in-place. - * - * For sufficiently small inputs, the cost of the prefetch will outweigh the benefit. - * For sufficiently large inputs, zstd will by default memcpy() CDict tables - * into the working context, so there is no need to prefetch. This parameter is - * targeted at a middle range of input sizes, where a prefetch is cheap enough to be - * useful but memcpy() is too expensive. The exact range of input sizes where this - * makes sense is best determined by careful experimentation. - * - * Note: for this parameter, ZSTD_ps_auto is currently equivalent to ZSTD_ps_disable, - * but in the future zstd may conditionally enable this feature via an auto-detection - * heuristic for cold CDicts. - * Use ZSTD_ps_disable to opt out of prefetching under any circumstances. - */ -#define ZSTD_c_prefetchCDictTables ZSTD_c_experimentalParam16 - -/* ZSTD_c_enableSeqProducerFallback - * Allowed values are 0 (disable) and 1 (enable). The default setting is 0. - * - * Controls whether zstd will fall back to an internal sequence producer if an - * external sequence producer is registered and returns an error code. This fallback - * is block-by-block: the internal sequence producer will only be called for blocks - * where the external sequence producer returns an error code. Fallback parsing will - * follow any other cParam settings, such as compression level, the same as in a - * normal (fully-internal) compression operation. - * - * The user is strongly encouraged to read the full Block-Level Sequence Producer API - * documentation (below) before setting this parameter. */ -#define ZSTD_c_enableSeqProducerFallback ZSTD_c_experimentalParam17 - -/* ZSTD_c_maxBlockSize - * Allowed values are between 1KB and ZSTD_BLOCKSIZE_MAX (128KB). - * The default is ZSTD_BLOCKSIZE_MAX, and setting to 0 will set to the default. - * - * This parameter can be used to set an upper bound on the blocksize - * that overrides the default ZSTD_BLOCKSIZE_MAX. It cannot be used to set upper - * bounds greater than ZSTD_BLOCKSIZE_MAX or bounds lower than 1KB (will make - * compressBound() inaccurate). Only currently meant to be used for testing. - * - */ -#define ZSTD_c_maxBlockSize ZSTD_c_experimentalParam18 - -/* ZSTD_c_searchForExternalRepcodes - * This parameter affects how zstd parses external sequences, such as sequences - * provided through the compressSequences() API or from an external block-level - * sequence producer. - * - * If set to ZSTD_ps_enable, the library will check for repeated offsets in - * external sequences, even if those repcodes are not explicitly indicated in - * the "rep" field. Note that this is the only way to exploit repcode matches - * while using compressSequences() or an external sequence producer, since zstd - * currently ignores the "rep" field of external sequences. - * - * If set to ZSTD_ps_disable, the library will not exploit repeated offsets in - * external sequences, regardless of whether the "rep" field has been set. This - * reduces sequence compression overhead by about 25% while sacrificing some - * compression ratio. - * - * The default value is ZSTD_ps_auto, for which the library will enable/disable - * based on compression level. - * - * Note: for now, this param only has an effect if ZSTD_c_blockDelimiters is - * set to ZSTD_sf_explicitBlockDelimiters. That may change in the future. - */ -#define ZSTD_c_searchForExternalRepcodes ZSTD_c_experimentalParam19 - -/*! ZSTD_CCtx_getParameter() : - * Get the requested compression parameter value, selected by enum ZSTD_cParameter, - * and store it into int* value. - * @return : 0, or an error code (which can be tested with ZSTD_isError()). - */ -ZSTDLIB_STATIC_API size_t ZSTD_CCtx_getParameter(const ZSTD_CCtx* cctx, ZSTD_cParameter param, int* value); - - -/*! ZSTD_CCtx_params : - * Quick howto : - * - ZSTD_createCCtxParams() : Create a ZSTD_CCtx_params structure - * - ZSTD_CCtxParams_setParameter() : Push parameters one by one into - * an existing ZSTD_CCtx_params structure. - * This is similar to - * ZSTD_CCtx_setParameter(). - * - ZSTD_CCtx_setParametersUsingCCtxParams() : Apply parameters to - * an existing CCtx. - * These parameters will be applied to - * all subsequent frames. - * - ZSTD_compressStream2() : Do compression using the CCtx. - * - ZSTD_freeCCtxParams() : Free the memory, accept NULL pointer. - * - * This can be used with ZSTD_estimateCCtxSize_advanced_usingCCtxParams() - * for static allocation of CCtx for single-threaded compression. - */ -ZSTDLIB_STATIC_API ZSTD_CCtx_params* ZSTD_createCCtxParams(void); -ZSTDLIB_STATIC_API size_t ZSTD_freeCCtxParams(ZSTD_CCtx_params* params); /* accept NULL pointer */ - -/*! ZSTD_CCtxParams_reset() : - * Reset params to default values. - */ -ZSTDLIB_STATIC_API size_t ZSTD_CCtxParams_reset(ZSTD_CCtx_params* params); - -/*! ZSTD_CCtxParams_init() : - * Initializes the compression parameters of cctxParams according to - * compression level. All other parameters are reset to their default values. - */ -ZSTDLIB_STATIC_API size_t ZSTD_CCtxParams_init(ZSTD_CCtx_params* cctxParams, int compressionLevel); - -/*! ZSTD_CCtxParams_init_advanced() : - * Initializes the compression and frame parameters of cctxParams according to - * params. All other parameters are reset to their default values. - */ -ZSTDLIB_STATIC_API size_t ZSTD_CCtxParams_init_advanced(ZSTD_CCtx_params* cctxParams, ZSTD_parameters params); - -/*! ZSTD_CCtxParams_setParameter() : Requires v1.4.0+ - * Similar to ZSTD_CCtx_setParameter. - * Set one compression parameter, selected by enum ZSTD_cParameter. - * Parameters must be applied to a ZSTD_CCtx using - * ZSTD_CCtx_setParametersUsingCCtxParams(). - * @result : a code representing success or failure (which can be tested with - * ZSTD_isError()). - */ -ZSTDLIB_STATIC_API size_t ZSTD_CCtxParams_setParameter(ZSTD_CCtx_params* params, ZSTD_cParameter param, int value); - -/*! ZSTD_CCtxParams_getParameter() : - * Similar to ZSTD_CCtx_getParameter. - * Get the requested value of one compression parameter, selected by enum ZSTD_cParameter. - * @result : 0, or an error code (which can be tested with ZSTD_isError()). - */ -ZSTDLIB_STATIC_API size_t ZSTD_CCtxParams_getParameter(const ZSTD_CCtx_params* params, ZSTD_cParameter param, int* value); - -/*! ZSTD_CCtx_setParametersUsingCCtxParams() : - * Apply a set of ZSTD_CCtx_params to the compression context. - * This can be done even after compression is started, - * if nbWorkers==0, this will have no impact until a new compression is started. - * if nbWorkers>=1, new parameters will be picked up at next job, - * with a few restrictions (windowLog, pledgedSrcSize, nbWorkers, jobSize, and overlapLog are not updated). - */ -ZSTDLIB_STATIC_API size_t ZSTD_CCtx_setParametersUsingCCtxParams( - ZSTD_CCtx* cctx, const ZSTD_CCtx_params* params); - -/*! ZSTD_compressStream2_simpleArgs() : - * Same as ZSTD_compressStream2(), - * but using only integral types as arguments. - * This variant might be helpful for binders from dynamic languages - * which have troubles handling structures containing memory pointers. - */ -ZSTDLIB_STATIC_API size_t ZSTD_compressStream2_simpleArgs ( - ZSTD_CCtx* cctx, - void* dst, size_t dstCapacity, size_t* dstPos, - const void* src, size_t srcSize, size_t* srcPos, - ZSTD_EndDirective endOp); - - -/*************************************** -* Advanced decompression functions -***************************************/ - -/*! ZSTD_isFrame() : - * Tells if the content of `buffer` starts with a valid Frame Identifier. - * Note : Frame Identifier is 4 bytes. If `size < 4`, @return will always be 0. - * Note 2 : Legacy Frame Identifiers are considered valid only if Legacy Support is enabled. - * Note 3 : Skippable Frame Identifiers are considered valid. */ -ZSTDLIB_STATIC_API unsigned ZSTD_isFrame(const void* buffer, size_t size); - -/*! ZSTD_createDDict_byReference() : - * Create a digested dictionary, ready to start decompression operation without startup delay. - * Dictionary content is referenced, and therefore stays in dictBuffer. - * It is important that dictBuffer outlives DDict, - * it must remain read accessible throughout the lifetime of DDict */ -ZSTDLIB_STATIC_API ZSTD_DDict* ZSTD_createDDict_byReference(const void* dictBuffer, size_t dictSize); - -/*! ZSTD_DCtx_loadDictionary_byReference() : - * Same as ZSTD_DCtx_loadDictionary(), - * but references `dict` content instead of copying it into `dctx`. - * This saves memory if `dict` remains around., - * However, it's imperative that `dict` remains accessible (and unmodified) while being used, so it must outlive decompression. */ -ZSTDLIB_STATIC_API size_t ZSTD_DCtx_loadDictionary_byReference(ZSTD_DCtx* dctx, const void* dict, size_t dictSize); - -/*! ZSTD_DCtx_loadDictionary_advanced() : - * Same as ZSTD_DCtx_loadDictionary(), - * but gives direct control over - * how to load the dictionary (by copy ? by reference ?) - * and how to interpret it (automatic ? force raw mode ? full mode only ?). */ -ZSTDLIB_STATIC_API size_t ZSTD_DCtx_loadDictionary_advanced(ZSTD_DCtx* dctx, const void* dict, size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_dictContentType_e dictContentType); - -/*! ZSTD_DCtx_refPrefix_advanced() : - * Same as ZSTD_DCtx_refPrefix(), but gives finer control over - * how to interpret prefix content (automatic ? force raw mode (default) ? full mode only ?) */ -ZSTDLIB_STATIC_API size_t ZSTD_DCtx_refPrefix_advanced(ZSTD_DCtx* dctx, const void* prefix, size_t prefixSize, ZSTD_dictContentType_e dictContentType); - -/*! ZSTD_DCtx_setMaxWindowSize() : - * Refuses allocating internal buffers for frames requiring a window size larger than provided limit. - * This protects a decoder context from reserving too much memory for itself (potential attack scenario). - * This parameter is only useful in streaming mode, since no internal buffer is allocated in single-pass mode. - * By default, a decompression context accepts all window sizes <= (1 << ZSTD_WINDOWLOG_LIMIT_DEFAULT) - * @return : 0, or an error code (which can be tested using ZSTD_isError()). - */ -ZSTDLIB_STATIC_API size_t ZSTD_DCtx_setMaxWindowSize(ZSTD_DCtx* dctx, size_t maxWindowSize); - -/*! ZSTD_DCtx_getParameter() : - * Get the requested decompression parameter value, selected by enum ZSTD_dParameter, - * and store it into int* value. - * @return : 0, or an error code (which can be tested with ZSTD_isError()). - */ -ZSTDLIB_STATIC_API size_t ZSTD_DCtx_getParameter(ZSTD_DCtx* dctx, ZSTD_dParameter param, int* value); - -/* ZSTD_d_format - * experimental parameter, - * allowing selection between ZSTD_format_e input compression formats - */ -#define ZSTD_d_format ZSTD_d_experimentalParam1 -/* ZSTD_d_stableOutBuffer - * Experimental parameter. - * Default is 0 == disabled. Set to 1 to enable. - * - * Tells the decompressor that the ZSTD_outBuffer will ALWAYS be the same - * between calls, except for the modifications that zstd makes to pos (the - * caller must not modify pos). This is checked by the decompressor, and - * decompression will fail if it ever changes. Therefore the ZSTD_outBuffer - * MUST be large enough to fit the entire decompressed frame. This will be - * checked when the frame content size is known. The data in the ZSTD_outBuffer - * in the range [dst, dst + pos) MUST not be modified during decompression - * or you will get data corruption. - * - * When this flag is enabled zstd won't allocate an output buffer, because - * it can write directly to the ZSTD_outBuffer, but it will still allocate - * an input buffer large enough to fit any compressed block. This will also - * avoid the memcpy() from the internal output buffer to the ZSTD_outBuffer. - * If you need to avoid the input buffer allocation use the buffer-less - * streaming API. - * - * NOTE: So long as the ZSTD_outBuffer always points to valid memory, using - * this flag is ALWAYS memory safe, and will never access out-of-bounds - * memory. However, decompression WILL fail if you violate the preconditions. - * - * WARNING: The data in the ZSTD_outBuffer in the range [dst, dst + pos) MUST - * not be modified during decompression or you will get data corruption. This - * is because zstd needs to reference data in the ZSTD_outBuffer to regenerate - * matches. Normally zstd maintains its own buffer for this purpose, but passing - * this flag tells zstd to use the user provided buffer. - */ -#define ZSTD_d_stableOutBuffer ZSTD_d_experimentalParam2 - -/* ZSTD_d_forceIgnoreChecksum - * Experimental parameter. - * Default is 0 == disabled. Set to 1 to enable - * - * Tells the decompressor to skip checksum validation during decompression, regardless - * of whether checksumming was specified during compression. This offers some - * slight performance benefits, and may be useful for debugging. - * Param has values of type ZSTD_forceIgnoreChecksum_e - */ -#define ZSTD_d_forceIgnoreChecksum ZSTD_d_experimentalParam3 - -/* ZSTD_d_refMultipleDDicts - * Experimental parameter. - * Default is 0 == disabled. Set to 1 to enable - * - * If enabled and dctx is allocated on the heap, then additional memory will be allocated - * to store references to multiple ZSTD_DDict. That is, multiple calls of ZSTD_refDDict() - * using a given ZSTD_DCtx, rather than overwriting the previous DDict reference, will instead - * store all references. At decompression time, the appropriate dictID is selected - * from the set of DDicts based on the dictID in the frame. - * - * Usage is simply calling ZSTD_refDDict() on multiple dict buffers. - * - * Param has values of byte ZSTD_refMultipleDDicts_e - * - * WARNING: Enabling this parameter and calling ZSTD_DCtx_refDDict(), will trigger memory - * allocation for the hash table. ZSTD_freeDCtx() also frees this memory. - * Memory is allocated as per ZSTD_DCtx::customMem. - * - * Although this function allocates memory for the table, the user is still responsible for - * memory management of the underlying ZSTD_DDict* themselves. - */ -#define ZSTD_d_refMultipleDDicts ZSTD_d_experimentalParam4 - -/* ZSTD_d_disableHuffmanAssembly - * Set to 1 to disable the Huffman assembly implementation. - * The default value is 0, which allows zstd to use the Huffman assembly - * implementation if available. - * - * This parameter can be used to disable Huffman assembly at runtime. - * If you want to disable it at compile time you can define the macro - * ZSTD_DISABLE_ASM. - */ -#define ZSTD_d_disableHuffmanAssembly ZSTD_d_experimentalParam5 - -/* ZSTD_d_maxBlockSize - * Allowed values are between 1KB and ZSTD_BLOCKSIZE_MAX (128KB). - * The default is ZSTD_BLOCKSIZE_MAX, and setting to 0 will set to the default. - * - * Forces the decompressor to reject blocks whose content size is - * larger than the configured maxBlockSize. When maxBlockSize is - * larger than the windowSize, the windowSize is used instead. - * This saves memory on the decoder when you know all blocks are small. - * - * This option is typically used in conjunction with ZSTD_c_maxBlockSize. - * - * WARNING: This causes the decoder to reject otherwise valid frames - * that have block sizes larger than the configured maxBlockSize. - */ -#define ZSTD_d_maxBlockSize ZSTD_d_experimentalParam6 - - -/*! ZSTD_DCtx_setFormat() : - * This function is REDUNDANT. Prefer ZSTD_DCtx_setParameter(). - * Instruct the decoder context about what kind of data to decode next. - * This instruction is mandatory to decode data without a fully-formed header, - * such ZSTD_f_zstd1_magicless for example. - * @return : 0, or an error code (which can be tested using ZSTD_isError()). */ -ZSTD_DEPRECATED("use ZSTD_DCtx_setParameter() instead") -ZSTDLIB_STATIC_API -size_t ZSTD_DCtx_setFormat(ZSTD_DCtx* dctx, ZSTD_format_e format); - -/*! ZSTD_decompressStream_simpleArgs() : - * Same as ZSTD_decompressStream(), - * but using only integral types as arguments. - * This can be helpful for binders from dynamic languages - * which have troubles handling structures containing memory pointers. - */ -ZSTDLIB_STATIC_API size_t ZSTD_decompressStream_simpleArgs ( - ZSTD_DCtx* dctx, - void* dst, size_t dstCapacity, size_t* dstPos, - const void* src, size_t srcSize, size_t* srcPos); - - -/******************************************************************** -* Advanced streaming functions -* Warning : most of these functions are now redundant with the Advanced API. -* Once Advanced API reaches "stable" status, -* redundant functions will be deprecated, and then at some point removed. -********************************************************************/ - -/*===== Advanced Streaming compression functions =====*/ - -/*! ZSTD_initCStream_srcSize() : - * This function is DEPRECATED, and equivalent to: - * ZSTD_CCtx_reset(zcs, ZSTD_reset_session_only); - * ZSTD_CCtx_refCDict(zcs, NULL); // clear the dictionary (if any) - * ZSTD_CCtx_setParameter(zcs, ZSTD_c_compressionLevel, compressionLevel); - * ZSTD_CCtx_setPledgedSrcSize(zcs, pledgedSrcSize); - * - * pledgedSrcSize must be correct. If it is not known at init time, use - * ZSTD_CONTENTSIZE_UNKNOWN. Note that, for compatibility with older programs, - * "0" also disables frame content size field. It may be enabled in the future. - * This prototype will generate compilation warnings. - */ -ZSTD_DEPRECATED("use ZSTD_CCtx_reset, see zstd.h for detailed instructions") -ZSTDLIB_STATIC_API -size_t ZSTD_initCStream_srcSize(ZSTD_CStream* zcs, - int compressionLevel, - unsigned long long pledgedSrcSize); - -/*! ZSTD_initCStream_usingDict() : - * This function is DEPRECATED, and is equivalent to: - * ZSTD_CCtx_reset(zcs, ZSTD_reset_session_only); - * ZSTD_CCtx_setParameter(zcs, ZSTD_c_compressionLevel, compressionLevel); - * ZSTD_CCtx_loadDictionary(zcs, dict, dictSize); - * - * Creates of an internal CDict (incompatible with static CCtx), except if - * dict == NULL or dictSize < 8, in which case no dict is used. - * Note: dict is loaded with ZSTD_dct_auto (treated as a full zstd dictionary if - * it begins with ZSTD_MAGIC_DICTIONARY, else as raw content) and ZSTD_dlm_byCopy. - * This prototype will generate compilation warnings. - */ -ZSTD_DEPRECATED("use ZSTD_CCtx_reset, see zstd.h for detailed instructions") -ZSTDLIB_STATIC_API -size_t ZSTD_initCStream_usingDict(ZSTD_CStream* zcs, - const void* dict, size_t dictSize, - int compressionLevel); - -/*! ZSTD_initCStream_advanced() : - * This function is DEPRECATED, and is equivalent to: - * ZSTD_CCtx_reset(zcs, ZSTD_reset_session_only); - * ZSTD_CCtx_setParams(zcs, params); - * ZSTD_CCtx_setPledgedSrcSize(zcs, pledgedSrcSize); - * ZSTD_CCtx_loadDictionary(zcs, dict, dictSize); - * - * dict is loaded with ZSTD_dct_auto and ZSTD_dlm_byCopy. - * pledgedSrcSize must be correct. - * If srcSize is not known at init time, use value ZSTD_CONTENTSIZE_UNKNOWN. - * This prototype will generate compilation warnings. - */ -ZSTD_DEPRECATED("use ZSTD_CCtx_reset, see zstd.h for detailed instructions") -ZSTDLIB_STATIC_API -size_t ZSTD_initCStream_advanced(ZSTD_CStream* zcs, - const void* dict, size_t dictSize, - ZSTD_parameters params, - unsigned long long pledgedSrcSize); - -/*! ZSTD_initCStream_usingCDict() : - * This function is DEPRECATED, and equivalent to: - * ZSTD_CCtx_reset(zcs, ZSTD_reset_session_only); - * ZSTD_CCtx_refCDict(zcs, cdict); - * - * note : cdict will just be referenced, and must outlive compression session - * This prototype will generate compilation warnings. - */ -ZSTD_DEPRECATED("use ZSTD_CCtx_reset and ZSTD_CCtx_refCDict, see zstd.h for detailed instructions") -ZSTDLIB_STATIC_API -size_t ZSTD_initCStream_usingCDict(ZSTD_CStream* zcs, const ZSTD_CDict* cdict); - -/*! ZSTD_initCStream_usingCDict_advanced() : - * This function is DEPRECATED, and is equivalent to: - * ZSTD_CCtx_reset(zcs, ZSTD_reset_session_only); - * ZSTD_CCtx_setFParams(zcs, fParams); - * ZSTD_CCtx_setPledgedSrcSize(zcs, pledgedSrcSize); - * ZSTD_CCtx_refCDict(zcs, cdict); - * - * same as ZSTD_initCStream_usingCDict(), with control over frame parameters. - * pledgedSrcSize must be correct. If srcSize is not known at init time, use - * value ZSTD_CONTENTSIZE_UNKNOWN. - * This prototype will generate compilation warnings. - */ -ZSTD_DEPRECATED("use ZSTD_CCtx_reset and ZSTD_CCtx_refCDict, see zstd.h for detailed instructions") -ZSTDLIB_STATIC_API -size_t ZSTD_initCStream_usingCDict_advanced(ZSTD_CStream* zcs, - const ZSTD_CDict* cdict, - ZSTD_frameParameters fParams, - unsigned long long pledgedSrcSize); - -/*! ZSTD_resetCStream() : - * This function is DEPRECATED, and is equivalent to: - * ZSTD_CCtx_reset(zcs, ZSTD_reset_session_only); - * ZSTD_CCtx_setPledgedSrcSize(zcs, pledgedSrcSize); - * Note: ZSTD_resetCStream() interprets pledgedSrcSize == 0 as ZSTD_CONTENTSIZE_UNKNOWN, but - * ZSTD_CCtx_setPledgedSrcSize() does not do the same, so ZSTD_CONTENTSIZE_UNKNOWN must be - * explicitly specified. - * - * start a new frame, using same parameters from previous frame. - * This is typically useful to skip dictionary loading stage, since it will reuse it in-place. - * Note that zcs must be init at least once before using ZSTD_resetCStream(). - * If pledgedSrcSize is not known at reset time, use macro ZSTD_CONTENTSIZE_UNKNOWN. - * If pledgedSrcSize > 0, its value must be correct, as it will be written in header, and controlled at the end. - * For the time being, pledgedSrcSize==0 is interpreted as "srcSize unknown" for compatibility with older programs, - * but it will change to mean "empty" in future version, so use macro ZSTD_CONTENTSIZE_UNKNOWN instead. - * @return : 0, or an error code (which can be tested using ZSTD_isError()) - * This prototype will generate compilation warnings. - */ -ZSTD_DEPRECATED("use ZSTD_CCtx_reset, see zstd.h for detailed instructions") -ZSTDLIB_STATIC_API -size_t ZSTD_resetCStream(ZSTD_CStream* zcs, unsigned long long pledgedSrcSize); - - -typedef struct { - unsigned long long ingested; /* nb input bytes read and buffered */ - unsigned long long consumed; /* nb input bytes actually compressed */ - unsigned long long produced; /* nb of compressed bytes generated and buffered */ - unsigned long long flushed; /* nb of compressed bytes flushed : not provided; can be tracked from caller side */ - unsigned currentJobID; /* MT only : latest started job nb */ - unsigned nbActiveWorkers; /* MT only : nb of workers actively compressing at probe time */ -} ZSTD_frameProgression; - -/* ZSTD_getFrameProgression() : - * tells how much data has been ingested (read from input) - * consumed (input actually compressed) and produced (output) for current frame. - * Note : (ingested - consumed) is amount of input data buffered internally, not yet compressed. - * Aggregates progression inside active worker threads. - */ -ZSTDLIB_STATIC_API ZSTD_frameProgression ZSTD_getFrameProgression(const ZSTD_CCtx* cctx); - -/*! ZSTD_toFlushNow() : - * Tell how many bytes are ready to be flushed immediately. - * Useful for multithreading scenarios (nbWorkers >= 1). - * Probe the oldest active job, defined as oldest job not yet entirely flushed, - * and check its output buffer. - * @return : amount of data stored in oldest job and ready to be flushed immediately. - * if @return == 0, it means either : - * + there is no active job (could be checked with ZSTD_frameProgression()), or - * + oldest job is still actively compressing data, - * but everything it has produced has also been flushed so far, - * therefore flush speed is limited by production speed of oldest job - * irrespective of the speed of concurrent (and newer) jobs. - */ -ZSTDLIB_STATIC_API size_t ZSTD_toFlushNow(ZSTD_CCtx* cctx); - - -/*===== Advanced Streaming decompression functions =====*/ - -/*! - * This function is deprecated, and is equivalent to: - * - * ZSTD_DCtx_reset(zds, ZSTD_reset_session_only); - * ZSTD_DCtx_loadDictionary(zds, dict, dictSize); - * - * note: no dictionary will be used if dict == NULL or dictSize < 8 - */ -ZSTD_DEPRECATED("use ZSTD_DCtx_reset + ZSTD_DCtx_loadDictionary, see zstd.h for detailed instructions") -ZSTDLIB_STATIC_API size_t ZSTD_initDStream_usingDict(ZSTD_DStream* zds, const void* dict, size_t dictSize); - -/*! - * This function is deprecated, and is equivalent to: - * - * ZSTD_DCtx_reset(zds, ZSTD_reset_session_only); - * ZSTD_DCtx_refDDict(zds, ddict); - * - * note : ddict is referenced, it must outlive decompression session - */ -ZSTD_DEPRECATED("use ZSTD_DCtx_reset + ZSTD_DCtx_refDDict, see zstd.h for detailed instructions") -ZSTDLIB_STATIC_API size_t ZSTD_initDStream_usingDDict(ZSTD_DStream* zds, const ZSTD_DDict* ddict); - -/*! - * This function is deprecated, and is equivalent to: - * - * ZSTD_DCtx_reset(zds, ZSTD_reset_session_only); - * - * reuse decompression parameters from previous init; saves dictionary loading - */ -ZSTD_DEPRECATED("use ZSTD_DCtx_reset, see zstd.h for detailed instructions") -ZSTDLIB_STATIC_API size_t ZSTD_resetDStream(ZSTD_DStream* zds); - - -/* ********************* BLOCK-LEVEL SEQUENCE PRODUCER API ********************* - * - * *** OVERVIEW *** - * The Block-Level Sequence Producer API allows users to provide their own custom - * sequence producer which libzstd invokes to process each block. The produced list - * of sequences (literals and matches) is then post-processed by libzstd to produce - * valid compressed blocks. - * - * This block-level offload API is a more granular complement of the existing - * frame-level offload API compressSequences() (introduced in v1.5.1). It offers - * an easier migration story for applications already integrated with libzstd: the - * user application continues to invoke the same compression functions - * ZSTD_compress2() or ZSTD_compressStream2() as usual, and transparently benefits - * from the specific advantages of the external sequence producer. For example, - * the sequence producer could be tuned to take advantage of known characteristics - * of the input, to offer better speed / ratio, or could leverage hardware - * acceleration not available within libzstd itself. - * - * See contrib/externalSequenceProducer for an example program employing the - * Block-Level Sequence Producer API. - * - * *** USAGE *** - * The user is responsible for implementing a function of type - * ZSTD_sequenceProducer_F. For each block, zstd will pass the following - * arguments to the user-provided function: - * - * - sequenceProducerState: a pointer to a user-managed state for the sequence - * producer. - * - * - outSeqs, outSeqsCapacity: an output buffer for the sequence producer. - * outSeqsCapacity is guaranteed >= ZSTD_sequenceBound(srcSize). The memory - * backing outSeqs is managed by the CCtx. - * - * - src, srcSize: an input buffer for the sequence producer to parse. - * srcSize is guaranteed to be <= ZSTD_BLOCKSIZE_MAX. - * - * - dict, dictSize: a history buffer, which may be empty, which the sequence - * producer may reference as it parses the src buffer. Currently, zstd will - * always pass dictSize == 0 into external sequence producers, but this will - * change in the future. - * - * - compressionLevel: a signed integer representing the zstd compression level - * set by the user for the current operation. The sequence producer may choose - * to use this information to change its compression strategy and speed/ratio - * tradeoff. Note: the compression level does not reflect zstd parameters set - * through the advanced API. - * - * - windowSize: a size_t representing the maximum allowed offset for external - * sequences. Note that sequence offsets are sometimes allowed to exceed the - * windowSize if a dictionary is present, see doc/zstd_compression_format.md - * for details. - * - * The user-provided function shall return a size_t representing the number of - * sequences written to outSeqs. This return value will be treated as an error - * code if it is greater than outSeqsCapacity. The return value must be non-zero - * if srcSize is non-zero. The ZSTD_SEQUENCE_PRODUCER_ERROR macro is provided - * for convenience, but any value greater than outSeqsCapacity will be treated as - * an error code. - * - * If the user-provided function does not return an error code, the sequences - * written to outSeqs must be a valid parse of the src buffer. Data corruption may - * occur if the parse is not valid. A parse is defined to be valid if the - * following conditions hold: - * - The sum of matchLengths and literalLengths must equal srcSize. - * - All sequences in the parse, except for the final sequence, must have - * matchLength >= ZSTD_MINMATCH_MIN. The final sequence must have - * matchLength >= ZSTD_MINMATCH_MIN or matchLength == 0. - * - All offsets must respect the windowSize parameter as specified in - * doc/zstd_compression_format.md. - * - If the final sequence has matchLength == 0, it must also have offset == 0. - * - * zstd will only validate these conditions (and fail compression if they do not - * hold) if the ZSTD_c_validateSequences cParam is enabled. Note that sequence - * validation has a performance cost. - * - * If the user-provided function returns an error, zstd will either fall back - * to an internal sequence producer or fail the compression operation. The user can - * choose between the two behaviors by setting the ZSTD_c_enableSeqProducerFallback - * cParam. Fallback compression will follow any other cParam settings, such as - * compression level, the same as in a normal compression operation. - * - * The user shall instruct zstd to use a particular ZSTD_sequenceProducer_F - * function by calling - * ZSTD_registerSequenceProducer(cctx, - * sequenceProducerState, - * sequenceProducer) - * This setting will persist until the next parameter reset of the CCtx. - * - * The sequenceProducerState must be initialized by the user before calling - * ZSTD_registerSequenceProducer(). The user is responsible for destroying the - * sequenceProducerState. - * - * *** LIMITATIONS *** - * This API is compatible with all zstd compression APIs which respect advanced parameters. - * However, there are three limitations: - * - * First, the ZSTD_c_enableLongDistanceMatching cParam is not currently supported. - * COMPRESSION WILL FAIL if it is enabled and the user tries to compress with a block-level - * external sequence producer. - * - Note that ZSTD_c_enableLongDistanceMatching is auto-enabled by default in some - * cases (see its documentation for details). Users must explicitly set - * ZSTD_c_enableLongDistanceMatching to ZSTD_ps_disable in such cases if an external - * sequence producer is registered. - * - As of this writing, ZSTD_c_enableLongDistanceMatching is disabled by default - * whenever ZSTD_c_windowLog < 128MB, but that's subject to change. Users should - * check the docs on ZSTD_c_enableLongDistanceMatching whenever the Block-Level Sequence - * Producer API is used in conjunction with advanced settings (like ZSTD_c_windowLog). - * - * Second, history buffers are not currently supported. Concretely, zstd will always pass - * dictSize == 0 to the external sequence producer (for now). This has two implications: - * - Dictionaries are not currently supported. Compression will *not* fail if the user - * references a dictionary, but the dictionary won't have any effect. - * - Stream history is not currently supported. All advanced compression APIs, including - * streaming APIs, work with external sequence producers, but each block is treated as - * an independent chunk without history from previous blocks. - * - * Third, multi-threading within a single compression is not currently supported. In other words, - * COMPRESSION WILL FAIL if ZSTD_c_nbWorkers > 0 and an external sequence producer is registered. - * Multi-threading across compressions is fine: simply create one CCtx per thread. - * - * Long-term, we plan to overcome all three limitations. There is no technical blocker to - * overcoming them. It is purely a question of engineering effort. - */ - -#define ZSTD_SEQUENCE_PRODUCER_ERROR ((size_t)(-1)) - -typedef size_t (*ZSTD_sequenceProducer_F) ( - void* sequenceProducerState, - ZSTD_Sequence* outSeqs, size_t outSeqsCapacity, - const void* src, size_t srcSize, - const void* dict, size_t dictSize, - int compressionLevel, - size_t windowSize -); - -/*! ZSTD_registerSequenceProducer() : - * Instruct zstd to use a block-level external sequence producer function. - * - * The sequenceProducerState must be initialized by the caller, and the caller is - * responsible for managing its lifetime. This parameter is sticky across - * compressions. It will remain set until the user explicitly resets compression - * parameters. - * - * Sequence producer registration is considered to be an "advanced parameter", - * part of the "advanced API". This means it will only have an effect on compression - * APIs which respect advanced parameters, such as compress2() and compressStream2(). - * Older compression APIs such as compressCCtx(), which predate the introduction of - * "advanced parameters", will ignore any external sequence producer setting. - * - * The sequence producer can be "cleared" by registering a NULL function pointer. This - * removes all limitations described above in the "LIMITATIONS" section of the API docs. - * - * The user is strongly encouraged to read the full API documentation (above) before - * calling this function. */ -ZSTDLIB_STATIC_API void -ZSTD_registerSequenceProducer( - ZSTD_CCtx* cctx, - void* sequenceProducerState, - ZSTD_sequenceProducer_F sequenceProducer -); - -/*! ZSTD_CCtxParams_registerSequenceProducer() : - * Same as ZSTD_registerSequenceProducer(), but operates on ZSTD_CCtx_params. - * This is used for accurate size estimation with ZSTD_estimateCCtxSize_usingCCtxParams(), - * which is needed when creating a ZSTD_CCtx with ZSTD_initStaticCCtx(). - * - * If you are using the external sequence producer API in a scenario where ZSTD_initStaticCCtx() - * is required, then this function is for you. Otherwise, you probably don't need it. - * - * See tests/zstreamtest.c for example usage. */ -ZSTDLIB_STATIC_API void -ZSTD_CCtxParams_registerSequenceProducer( - ZSTD_CCtx_params* params, - void* sequenceProducerState, - ZSTD_sequenceProducer_F sequenceProducer -); - - -/********************************************************************* -* Buffer-less and synchronous inner streaming functions (DEPRECATED) -* -* This API is deprecated, and will be removed in a future version. -* It allows streaming (de)compression with user allocated buffers. -* However, it is hard to use, and not as well tested as the rest of -* our API. -* -* Please use the normal streaming API instead: ZSTD_compressStream2, -* and ZSTD_decompressStream. -* If there is functionality that you need, but it doesn't provide, -* please open an issue on our GitHub. -********************************************************************* */ - -/** - Buffer-less streaming compression (synchronous mode) - - A ZSTD_CCtx object is required to track streaming operations. - Use ZSTD_createCCtx() / ZSTD_freeCCtx() to manage resource. - ZSTD_CCtx object can be reused multiple times within successive compression operations. - - Start by initializing a context. - Use ZSTD_compressBegin(), or ZSTD_compressBegin_usingDict() for dictionary compression. - - Then, consume your input using ZSTD_compressContinue(). - There are some important considerations to keep in mind when using this advanced function : - - ZSTD_compressContinue() has no internal buffer. It uses externally provided buffers only. - - Interface is synchronous : input is consumed entirely and produces 1+ compressed blocks. - - Caller must ensure there is enough space in `dst` to store compressed data under worst case scenario. - Worst case evaluation is provided by ZSTD_compressBound(). - ZSTD_compressContinue() doesn't guarantee recover after a failed compression. - - ZSTD_compressContinue() presumes prior input ***is still accessible and unmodified*** (up to maximum distance size, see WindowLog). - It remembers all previous contiguous blocks, plus one separated memory segment (which can itself consists of multiple contiguous blocks) - - ZSTD_compressContinue() detects that prior input has been overwritten when `src` buffer overlaps. - In which case, it will "discard" the relevant memory section from its history. - - Finish a frame with ZSTD_compressEnd(), which will write the last block(s) and optional checksum. - It's possible to use srcSize==0, in which case, it will write a final empty block to end the frame. - Without last block mark, frames are considered unfinished (hence corrupted) by compliant decoders. - - `ZSTD_CCtx` object can be reused (ZSTD_compressBegin()) to compress again. -*/ - -/*===== Buffer-less streaming compression functions =====*/ -ZSTD_DEPRECATED("The buffer-less API is deprecated in favor of the normal streaming API. See docs.") -ZSTDLIB_STATIC_API size_t ZSTD_compressBegin(ZSTD_CCtx* cctx, int compressionLevel); -ZSTD_DEPRECATED("The buffer-less API is deprecated in favor of the normal streaming API. See docs.") -ZSTDLIB_STATIC_API size_t ZSTD_compressBegin_usingDict(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, int compressionLevel); -ZSTD_DEPRECATED("The buffer-less API is deprecated in favor of the normal streaming API. See docs.") -ZSTDLIB_STATIC_API size_t ZSTD_compressBegin_usingCDict(ZSTD_CCtx* cctx, const ZSTD_CDict* cdict); /**< note: fails if cdict==NULL */ - -ZSTD_DEPRECATED("This function will likely be removed in a future release. It is misleading and has very limited utility.") -ZSTDLIB_STATIC_API -size_t ZSTD_copyCCtx(ZSTD_CCtx* cctx, const ZSTD_CCtx* preparedCCtx, unsigned long long pledgedSrcSize); /**< note: if pledgedSrcSize is not known, use ZSTD_CONTENTSIZE_UNKNOWN */ - -ZSTD_DEPRECATED("The buffer-less API is deprecated in favor of the normal streaming API. See docs.") -ZSTDLIB_STATIC_API size_t ZSTD_compressContinue(ZSTD_CCtx* cctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize); -ZSTD_DEPRECATED("The buffer-less API is deprecated in favor of the normal streaming API. See docs.") -ZSTDLIB_STATIC_API size_t ZSTD_compressEnd(ZSTD_CCtx* cctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize); - -/* The ZSTD_compressBegin_advanced() and ZSTD_compressBegin_usingCDict_advanced() are now DEPRECATED and will generate a compiler warning */ -ZSTD_DEPRECATED("use advanced API to access custom parameters") -ZSTDLIB_STATIC_API -size_t ZSTD_compressBegin_advanced(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, ZSTD_parameters params, unsigned long long pledgedSrcSize); /**< pledgedSrcSize : If srcSize is not known at init time, use ZSTD_CONTENTSIZE_UNKNOWN */ -ZSTD_DEPRECATED("use advanced API to access custom parameters") -ZSTDLIB_STATIC_API -size_t ZSTD_compressBegin_usingCDict_advanced(ZSTD_CCtx* const cctx, const ZSTD_CDict* const cdict, ZSTD_frameParameters const fParams, unsigned long long const pledgedSrcSize); /* compression parameters are already set within cdict. pledgedSrcSize must be correct. If srcSize is not known, use macro ZSTD_CONTENTSIZE_UNKNOWN */ -/** - Buffer-less streaming decompression (synchronous mode) - - A ZSTD_DCtx object is required to track streaming operations. - Use ZSTD_createDCtx() / ZSTD_freeDCtx() to manage it. - A ZSTD_DCtx object can be reused multiple times. - - First typical operation is to retrieve frame parameters, using ZSTD_getFrameHeader(). - Frame header is extracted from the beginning of compressed frame, so providing only the frame's beginning is enough. - Data fragment must be large enough to ensure successful decoding. - `ZSTD_frameHeaderSize_max` bytes is guaranteed to always be large enough. - result : 0 : successful decoding, the `ZSTD_frameHeader` structure is correctly filled. - >0 : `srcSize` is too small, please provide at least result bytes on next attempt. - errorCode, which can be tested using ZSTD_isError(). - - It fills a ZSTD_frameHeader structure with important information to correctly decode the frame, - such as the dictionary ID, content size, or maximum back-reference distance (`windowSize`). - Note that these values could be wrong, either because of data corruption, or because a 3rd party deliberately spoofs false information. - As a consequence, check that values remain within valid application range. - For example, do not allocate memory blindly, check that `windowSize` is within expectation. - Each application can set its own limits, depending on local restrictions. - For extended interoperability, it is recommended to support `windowSize` of at least 8 MB. - - ZSTD_decompressContinue() needs previous data blocks during decompression, up to `windowSize` bytes. - ZSTD_decompressContinue() is very sensitive to contiguity, - if 2 blocks don't follow each other, make sure that either the compressor breaks contiguity at the same place, - or that previous contiguous segment is large enough to properly handle maximum back-reference distance. - There are multiple ways to guarantee this condition. - - The most memory efficient way is to use a round buffer of sufficient size. - Sufficient size is determined by invoking ZSTD_decodingBufferSize_min(), - which can return an error code if required value is too large for current system (in 32-bits mode). - In a round buffer methodology, ZSTD_decompressContinue() decompresses each block next to previous one, - up to the moment there is not enough room left in the buffer to guarantee decoding another full block, - which maximum size is provided in `ZSTD_frameHeader` structure, field `blockSizeMax`. - At which point, decoding can resume from the beginning of the buffer. - Note that already decoded data stored in the buffer should be flushed before being overwritten. - - There are alternatives possible, for example using two or more buffers of size `windowSize` each, though they consume more memory. - - Finally, if you control the compression process, you can also ignore all buffer size rules, - as long as the encoder and decoder progress in "lock-step", - aka use exactly the same buffer sizes, break contiguity at the same place, etc. - - Once buffers are setup, start decompression, with ZSTD_decompressBegin(). - If decompression requires a dictionary, use ZSTD_decompressBegin_usingDict() or ZSTD_decompressBegin_usingDDict(). - - Then use ZSTD_nextSrcSizeToDecompress() and ZSTD_decompressContinue() alternatively. - ZSTD_nextSrcSizeToDecompress() tells how many bytes to provide as 'srcSize' to ZSTD_decompressContinue(). - ZSTD_decompressContinue() requires this _exact_ amount of bytes, or it will fail. - - result of ZSTD_decompressContinue() is the number of bytes regenerated within 'dst' (necessarily <= dstCapacity). - It can be zero : it just means ZSTD_decompressContinue() has decoded some metadata item. - It can also be an error code, which can be tested with ZSTD_isError(). - - A frame is fully decoded when ZSTD_nextSrcSizeToDecompress() returns zero. - Context can then be reset to start a new decompression. - - Note : it's possible to know if next input to present is a header or a block, using ZSTD_nextInputType(). - This information is not required to properly decode a frame. - - == Special case : skippable frames == - - Skippable frames allow integration of user-defined data into a flow of concatenated frames. - Skippable frames will be ignored (skipped) by decompressor. - The format of skippable frames is as follows : - a) Skippable frame ID - 4 Bytes, Little endian format, any value from 0x184D2A50 to 0x184D2A5F - b) Frame Size - 4 Bytes, Little endian format, unsigned 32-bits - c) Frame Content - any content (User Data) of length equal to Frame Size - For skippable frames ZSTD_getFrameHeader() returns zfhPtr->frameType==ZSTD_skippableFrame. - For skippable frames ZSTD_decompressContinue() always returns 0 : it only skips the content. -*/ - -/*===== Buffer-less streaming decompression functions =====*/ - -ZSTDLIB_STATIC_API size_t ZSTD_decodingBufferSize_min(unsigned long long windowSize, unsigned long long frameContentSize); /**< when frame content size is not known, pass in frameContentSize == ZSTD_CONTENTSIZE_UNKNOWN */ - -ZSTDLIB_STATIC_API size_t ZSTD_decompressBegin(ZSTD_DCtx* dctx); -ZSTDLIB_STATIC_API size_t ZSTD_decompressBegin_usingDict(ZSTD_DCtx* dctx, const void* dict, size_t dictSize); -ZSTDLIB_STATIC_API size_t ZSTD_decompressBegin_usingDDict(ZSTD_DCtx* dctx, const ZSTD_DDict* ddict); - -ZSTDLIB_STATIC_API size_t ZSTD_nextSrcSizeToDecompress(ZSTD_DCtx* dctx); -ZSTDLIB_STATIC_API size_t ZSTD_decompressContinue(ZSTD_DCtx* dctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize); - -/* misc */ -ZSTD_DEPRECATED("This function will likely be removed in the next minor release. It is misleading and has very limited utility.") -ZSTDLIB_STATIC_API void ZSTD_copyDCtx(ZSTD_DCtx* dctx, const ZSTD_DCtx* preparedDCtx); -typedef enum { ZSTDnit_frameHeader, ZSTDnit_blockHeader, ZSTDnit_block, ZSTDnit_lastBlock, ZSTDnit_checksum, ZSTDnit_skippableFrame } ZSTD_nextInputType_e; -ZSTDLIB_STATIC_API ZSTD_nextInputType_e ZSTD_nextInputType(ZSTD_DCtx* dctx); - - - - -/* ========================================= */ -/** Block level API (DEPRECATED) */ -/* ========================================= */ - -/*! - - This API is deprecated in favor of the regular compression API. - You can get the frame header down to 2 bytes by setting: - - ZSTD_c_format = ZSTD_f_zstd1_magicless - - ZSTD_c_contentSizeFlag = 0 - - ZSTD_c_checksumFlag = 0 - - ZSTD_c_dictIDFlag = 0 - - This API is not as well tested as our normal API, so we recommend not using it. - We will be removing it in a future version. If the normal API doesn't provide - the functionality you need, please open a GitHub issue. - - Block functions produce and decode raw zstd blocks, without frame metadata. - Frame metadata cost is typically ~12 bytes, which can be non-negligible for very small blocks (< 100 bytes). - But users will have to take in charge needed metadata to regenerate data, such as compressed and content sizes. - - A few rules to respect : - - Compressing and decompressing require a context structure - + Use ZSTD_createCCtx() and ZSTD_createDCtx() - - It is necessary to init context before starting - + compression : any ZSTD_compressBegin*() variant, including with dictionary - + decompression : any ZSTD_decompressBegin*() variant, including with dictionary - - Block size is limited, it must be <= ZSTD_getBlockSize() <= ZSTD_BLOCKSIZE_MAX == 128 KB - + If input is larger than a block size, it's necessary to split input data into multiple blocks - + For inputs larger than a single block, consider using regular ZSTD_compress() instead. - Frame metadata is not that costly, and quickly becomes negligible as source size grows larger than a block. - - When a block is considered not compressible enough, ZSTD_compressBlock() result will be 0 (zero) ! - ===> In which case, nothing is produced into `dst` ! - + User __must__ test for such outcome and deal directly with uncompressed data - + A block cannot be declared incompressible if ZSTD_compressBlock() return value was != 0. - Doing so would mess up with statistics history, leading to potential data corruption. - + ZSTD_decompressBlock() _doesn't accept uncompressed data as input_ !! - + In case of multiple successive blocks, should some of them be uncompressed, - decoder must be informed of their existence in order to follow proper history. - Use ZSTD_insertBlock() for such a case. -*/ - -/*===== Raw zstd block functions =====*/ -ZSTD_DEPRECATED("The block API is deprecated in favor of the normal compression API. See docs.") -ZSTDLIB_STATIC_API size_t ZSTD_getBlockSize (const ZSTD_CCtx* cctx); -ZSTD_DEPRECATED("The block API is deprecated in favor of the normal compression API. See docs.") -ZSTDLIB_STATIC_API size_t ZSTD_compressBlock (ZSTD_CCtx* cctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize); -ZSTD_DEPRECATED("The block API is deprecated in favor of the normal compression API. See docs.") -ZSTDLIB_STATIC_API size_t ZSTD_decompressBlock(ZSTD_DCtx* dctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize); -ZSTD_DEPRECATED("The block API is deprecated in favor of the normal compression API. See docs.") -ZSTDLIB_STATIC_API size_t ZSTD_insertBlock (ZSTD_DCtx* dctx, const void* blockStart, size_t blockSize); /**< insert uncompressed block into `dctx` history. Useful for multi-blocks decompression. */ - -#endif /* ZSTD_H_ZSTD_STATIC_LINKING_ONLY */ - -#if defined (__cplusplus) -} -#endif diff --git a/server/2015Remote/zstd/zstd.lib b/server/2015Remote/zstd/zstd.lib deleted file mode 100644 index d3631e0964201f1a2a8409463d260d5391750497..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 919358 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 wY~= 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

Fi-m+ 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

  • alHiom2(e$A={vSBf2h~EQpzk}I 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