Skip to content

Commit

Permalink
Added Different Binary Compression Schemes
Browse files Browse the repository at this point in the history
  • Loading branch information
netfabb committed Oct 1, 2024
1 parent e4f485c commit 8e5278e
Show file tree
Hide file tree
Showing 130 changed files with 59,357 additions and 323 deletions.
6 changes: 6 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,9 @@
[submodule "submodules/googletest"]
path = submodules/googletest
url = https://github.com/google/googletest.git
[submodule "submodules/zstd"]
path = submodules/zstd
url = https://github.com/facebook/zstd.git
[submodule "submodules/lz4"]
path = submodules/lz4
url = https://github.com/lz4/lz4.git
20 changes: 15 additions & 5 deletions Autogenerated/Bindings/C/lib3mf.h
Original file line number Diff line number Diff line change
Expand Up @@ -122,21 +122,31 @@ LIB3MF_DECLSPEC Lib3MFResult lib3mf_binarystream_disablediscretizedarraycompress
LIB3MF_DECLSPEC Lib3MFResult lib3mf_binarystream_enablediscretizedarraycompression(Lib3MF_BinaryStream pBinaryStream, Lib3MF_double dUnits, eLib3MFBinaryStreamPredictionType ePredictionType);

/**
* Enables LZMA mode.
* Switches to fast LZ4 compression mode.
*
* @param[in] pBinaryStream - BinaryStream instance.
* @param[in] nLZMALevel - LZMA Level (0-9)
* @param[in] nCompressionLevel - Compression level (0-9).
* @return error code or 0 (success)
*/
LIB3MF_DECLSPEC Lib3MFResult lib3mf_binarystream_enablelzma(Lib3MF_BinaryStream pBinaryStream, Lib3MF_uint32 nLZMALevel);
LIB3MF_DECLSPEC Lib3MFResult lib3mf_binarystream_enablelz4(Lib3MF_BinaryStream pBinaryStream, Lib3MF_uint32 nCompressionLevel);

/**
* Disables LZMA mode.
* Switches to ZLib compression mode.
*
* @param[in] pBinaryStream - BinaryStream instance.
* @param[in] nCompressionLevel - Compression level (0-9).
* @return error code or 0 (success)
*/
LIB3MF_DECLSPEC Lib3MFResult lib3mf_binarystream_disablelzma(Lib3MF_BinaryStream pBinaryStream);
LIB3MF_DECLSPEC Lib3MFResult lib3mf_binarystream_enablezlib(Lib3MF_BinaryStream pBinaryStream, Lib3MF_uint32 nCompressionLevel);

/**
* Switches to ZStd compression mode.
*
* @param[in] pBinaryStream - BinaryStream instance.
* @param[in] nCompressionLevel - Compression level.
* @return error code or 0 (success)
*/
LIB3MF_DECLSPEC Lib3MFResult lib3mf_binarystream_enablezstd(Lib3MF_BinaryStream pBinaryStream, Lib3MF_uint32 nCompressionLevel);

/*************************************************************************************************************************
Class definition for Writer
Expand Down
26 changes: 18 additions & 8 deletions Autogenerated/Bindings/CDynamic/lib3mf_dynamic.cc
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,9 @@ Lib3MFResult InitLib3MFWrapperTable(sLib3MFDynamicWrapperTable * pWrapperTable)
pWrapperTable->m_BinaryStream_GetUUID = NULL;
pWrapperTable->m_BinaryStream_DisableDiscretizedArrayCompression = NULL;
pWrapperTable->m_BinaryStream_EnableDiscretizedArrayCompression = NULL;
pWrapperTable->m_BinaryStream_EnableLZMA = NULL;
pWrapperTable->m_BinaryStream_DisableLZMA = NULL;
pWrapperTable->m_BinaryStream_EnableLZ4 = NULL;
pWrapperTable->m_BinaryStream_EnableZLib = NULL;
pWrapperTable->m_BinaryStream_EnableZstd = NULL;
pWrapperTable->m_Writer_WriteToFile = NULL;
pWrapperTable->m_Writer_GetStreamSize = NULL;
pWrapperTable->m_Writer_WriteToBuffer = NULL;
Expand Down Expand Up @@ -684,21 +685,30 @@ Lib3MFResult LoadLib3MFWrapperTable(sLib3MFDynamicWrapperTable * pWrapperTable,
return LIB3MF_ERROR_COULDNOTFINDLIBRARYEXPORT;

#ifdef _WIN32
pWrapperTable->m_BinaryStream_EnableLZMA = (PLib3MFBinaryStream_EnableLZMAPtr) GetProcAddress(hLibrary, "lib3mf_binarystream_enablelzma");
pWrapperTable->m_BinaryStream_EnableLZ4 = (PLib3MFBinaryStream_EnableLZ4Ptr) GetProcAddress(hLibrary, "lib3mf_binarystream_enablelz4");
#else // _WIN32
pWrapperTable->m_BinaryStream_EnableLZMA = (PLib3MFBinaryStream_EnableLZMAPtr) dlsym(hLibrary, "lib3mf_binarystream_enablelzma");
pWrapperTable->m_BinaryStream_EnableLZ4 = (PLib3MFBinaryStream_EnableLZ4Ptr) dlsym(hLibrary, "lib3mf_binarystream_enablelz4");
dlerror();
#endif // _WIN32
if (pWrapperTable->m_BinaryStream_EnableLZMA == NULL)
if (pWrapperTable->m_BinaryStream_EnableLZ4 == NULL)
return LIB3MF_ERROR_COULDNOTFINDLIBRARYEXPORT;

#ifdef _WIN32
pWrapperTable->m_BinaryStream_DisableLZMA = (PLib3MFBinaryStream_DisableLZMAPtr) GetProcAddress(hLibrary, "lib3mf_binarystream_disablelzma");
pWrapperTable->m_BinaryStream_EnableZLib = (PLib3MFBinaryStream_EnableZLibPtr) GetProcAddress(hLibrary, "lib3mf_binarystream_enablezlib");
#else // _WIN32
pWrapperTable->m_BinaryStream_DisableLZMA = (PLib3MFBinaryStream_DisableLZMAPtr) dlsym(hLibrary, "lib3mf_binarystream_disablelzma");
pWrapperTable->m_BinaryStream_EnableZLib = (PLib3MFBinaryStream_EnableZLibPtr) dlsym(hLibrary, "lib3mf_binarystream_enablezlib");
dlerror();
#endif // _WIN32
if (pWrapperTable->m_BinaryStream_DisableLZMA == NULL)
if (pWrapperTable->m_BinaryStream_EnableZLib == NULL)
return LIB3MF_ERROR_COULDNOTFINDLIBRARYEXPORT;

#ifdef _WIN32
pWrapperTable->m_BinaryStream_EnableZstd = (PLib3MFBinaryStream_EnableZstdPtr) GetProcAddress(hLibrary, "lib3mf_binarystream_enablezstd");
#else // _WIN32
pWrapperTable->m_BinaryStream_EnableZstd = (PLib3MFBinaryStream_EnableZstdPtr) dlsym(hLibrary, "lib3mf_binarystream_enablezstd");
dlerror();
#endif // _WIN32
if (pWrapperTable->m_BinaryStream_EnableZstd == NULL)
return LIB3MF_ERROR_COULDNOTFINDLIBRARYEXPORT;

#ifdef _WIN32
Expand Down
25 changes: 18 additions & 7 deletions Autogenerated/Bindings/CDynamic/lib3mf_dynamic.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,21 +109,31 @@ typedef Lib3MFResult (*PLib3MFBinaryStream_DisableDiscretizedArrayCompressionPtr
typedef Lib3MFResult (*PLib3MFBinaryStream_EnableDiscretizedArrayCompressionPtr) (Lib3MF_BinaryStream pBinaryStream, Lib3MF_double dUnits, eLib3MFBinaryStreamPredictionType ePredictionType);

/**
* Enables LZMA mode.
* Switches to fast LZ4 compression mode.
*
* @param[in] pBinaryStream - BinaryStream instance.
* @param[in] nLZMALevel - LZMA Level (0-9)
* @param[in] nCompressionLevel - Compression level (0-9).
* @return error code or 0 (success)
*/
typedef Lib3MFResult (*PLib3MFBinaryStream_EnableLZMAPtr) (Lib3MF_BinaryStream pBinaryStream, Lib3MF_uint32 nLZMALevel);
typedef Lib3MFResult (*PLib3MFBinaryStream_EnableLZ4Ptr) (Lib3MF_BinaryStream pBinaryStream, Lib3MF_uint32 nCompressionLevel);

/**
* Disables LZMA mode.
* Switches to ZLib compression mode.
*
* @param[in] pBinaryStream - BinaryStream instance.
* @param[in] nCompressionLevel - Compression level (0-9).
* @return error code or 0 (success)
*/
typedef Lib3MFResult (*PLib3MFBinaryStream_DisableLZMAPtr) (Lib3MF_BinaryStream pBinaryStream);
typedef Lib3MFResult (*PLib3MFBinaryStream_EnableZLibPtr) (Lib3MF_BinaryStream pBinaryStream, Lib3MF_uint32 nCompressionLevel);

/**
* Switches to ZStd compression mode.
*
* @param[in] pBinaryStream - BinaryStream instance.
* @param[in] nCompressionLevel - Compression level.
* @return error code or 0 (success)
*/
typedef Lib3MFResult (*PLib3MFBinaryStream_EnableZstdPtr) (Lib3MF_BinaryStream pBinaryStream, Lib3MF_uint32 nCompressionLevel);

/*************************************************************************************************************************
Class definition for Writer
Expand Down Expand Up @@ -5609,8 +5619,9 @@ typedef struct {
PLib3MFBinaryStream_GetUUIDPtr m_BinaryStream_GetUUID;
PLib3MFBinaryStream_DisableDiscretizedArrayCompressionPtr m_BinaryStream_DisableDiscretizedArrayCompression;
PLib3MFBinaryStream_EnableDiscretizedArrayCompressionPtr m_BinaryStream_EnableDiscretizedArrayCompression;
PLib3MFBinaryStream_EnableLZMAPtr m_BinaryStream_EnableLZMA;
PLib3MFBinaryStream_DisableLZMAPtr m_BinaryStream_DisableLZMA;
PLib3MFBinaryStream_EnableLZ4Ptr m_BinaryStream_EnableLZ4;
PLib3MFBinaryStream_EnableZLibPtr m_BinaryStream_EnableZLib;
PLib3MFBinaryStream_EnableZstdPtr m_BinaryStream_EnableZstd;
PLib3MFWriter_WriteToFilePtr m_Writer_WriteToFile;
PLib3MFWriter_GetStreamSizePtr m_Writer_GetStreamSize;
PLib3MFWriter_WriteToBufferPtr m_Writer_WriteToBuffer;
Expand Down
25 changes: 17 additions & 8 deletions Autogenerated/Bindings/CSharp/Lib3MF.cs
Original file line number Diff line number Diff line change
Expand Up @@ -417,11 +417,14 @@ public class Lib3MFWrapper
[DllImport("lib3mf.dll", EntryPoint = "lib3mf_binarystream_enablediscretizedarraycompression", CallingConvention=CallingConvention.Cdecl)]
public unsafe extern static Int32 BinaryStream_EnableDiscretizedArrayCompression (IntPtr Handle, Double AUnits, Int32 APredictionType);

[DllImport("lib3mf.dll", EntryPoint = "lib3mf_binarystream_enablelzma", CallingConvention=CallingConvention.Cdecl)]
public unsafe extern static Int32 BinaryStream_EnableLZMA (IntPtr Handle, UInt32 ALZMALevel);
[DllImport("lib3mf.dll", EntryPoint = "lib3mf_binarystream_enablelz4", CallingConvention=CallingConvention.Cdecl)]
public unsafe extern static Int32 BinaryStream_EnableLZ4 (IntPtr Handle, UInt32 ACompressionLevel);

[DllImport("lib3mf.dll", EntryPoint = "lib3mf_binarystream_disablelzma", CallingConvention=CallingConvention.Cdecl)]
public unsafe extern static Int32 BinaryStream_DisableLZMA (IntPtr Handle);
[DllImport("lib3mf.dll", EntryPoint = "lib3mf_binarystream_enablezlib", CallingConvention=CallingConvention.Cdecl)]
public unsafe extern static Int32 BinaryStream_EnableZLib (IntPtr Handle, UInt32 ACompressionLevel);

[DllImport("lib3mf.dll", EntryPoint = "lib3mf_binarystream_enablezstd", CallingConvention=CallingConvention.Cdecl)]
public unsafe extern static Int32 BinaryStream_EnableZstd (IntPtr Handle, UInt32 ACompressionLevel);

[DllImport("lib3mf.dll", EntryPoint = "lib3mf_writer_writetofile", CallingConvention=CallingConvention.Cdecl)]
public unsafe extern static Int32 Writer_WriteToFile (IntPtr Handle, byte[] AFilename);
Expand Down Expand Up @@ -2553,16 +2556,22 @@ public void EnableDiscretizedArrayCompression (Double AUnits, eBinaryStreamPredi
CheckError(Internal.Lib3MFWrapper.BinaryStream_EnableDiscretizedArrayCompression (Handle, AUnits, enumPredictionType));
}

public void EnableLZMA (UInt32 ALZMALevel)
public void EnableLZ4 (UInt32 ACompressionLevel)
{

CheckError(Internal.Lib3MFWrapper.BinaryStream_EnableLZ4 (Handle, ACompressionLevel));
}

public void EnableZLib (UInt32 ACompressionLevel)
{

CheckError(Internal.Lib3MFWrapper.BinaryStream_EnableLZMA (Handle, ALZMALevel));
CheckError(Internal.Lib3MFWrapper.BinaryStream_EnableZLib (Handle, ACompressionLevel));
}

public void DisableLZMA ()
public void EnableZstd (UInt32 ACompressionLevel)
{

CheckError(Internal.Lib3MFWrapper.BinaryStream_DisableLZMA (Handle));
CheckError(Internal.Lib3MFWrapper.BinaryStream_EnableZstd (Handle, ACompressionLevel));
}

}
Expand Down
20 changes: 15 additions & 5 deletions Autogenerated/Bindings/Cpp/lib3mf_abi.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -122,21 +122,31 @@ LIB3MF_DECLSPEC Lib3MFResult lib3mf_binarystream_disablediscretizedarraycompress
LIB3MF_DECLSPEC Lib3MFResult lib3mf_binarystream_enablediscretizedarraycompression(Lib3MF_BinaryStream pBinaryStream, Lib3MF_double dUnits, Lib3MF::eBinaryStreamPredictionType ePredictionType);

/**
* Enables LZMA mode.
* Switches to fast LZ4 compression mode.
*
* @param[in] pBinaryStream - BinaryStream instance.
* @param[in] nLZMALevel - LZMA Level (0-9)
* @param[in] nCompressionLevel - Compression level (0-9).
* @return error code or 0 (success)
*/
LIB3MF_DECLSPEC Lib3MFResult lib3mf_binarystream_enablelzma(Lib3MF_BinaryStream pBinaryStream, Lib3MF_uint32 nLZMALevel);
LIB3MF_DECLSPEC Lib3MFResult lib3mf_binarystream_enablelz4(Lib3MF_BinaryStream pBinaryStream, Lib3MF_uint32 nCompressionLevel);

/**
* Disables LZMA mode.
* Switches to ZLib compression mode.
*
* @param[in] pBinaryStream - BinaryStream instance.
* @param[in] nCompressionLevel - Compression level (0-9).
* @return error code or 0 (success)
*/
LIB3MF_DECLSPEC Lib3MFResult lib3mf_binarystream_disablelzma(Lib3MF_BinaryStream pBinaryStream);
LIB3MF_DECLSPEC Lib3MFResult lib3mf_binarystream_enablezlib(Lib3MF_BinaryStream pBinaryStream, Lib3MF_uint32 nCompressionLevel);

/**
* Switches to ZStd compression mode.
*
* @param[in] pBinaryStream - BinaryStream instance.
* @param[in] nCompressionLevel - Compression level.
* @return error code or 0 (success)
*/
LIB3MF_DECLSPEC Lib3MFResult lib3mf_binarystream_enablezstd(Lib3MF_BinaryStream pBinaryStream, Lib3MF_uint32 nCompressionLevel);

/*************************************************************************************************************************
Class definition for Writer
Expand Down
29 changes: 20 additions & 9 deletions Autogenerated/Bindings/Cpp/lib3mf_implicit.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -736,8 +736,9 @@ class CBinaryStream : public CBase {
inline std::string GetUUID();
inline void DisableDiscretizedArrayCompression();
inline void EnableDiscretizedArrayCompression(const Lib3MF_double dUnits, const eBinaryStreamPredictionType ePredictionType);
inline void EnableLZMA(const Lib3MF_uint32 nLZMALevel);
inline void DisableLZMA();
inline void EnableLZ4(const Lib3MF_uint32 nCompressionLevel);
inline void EnableZLib(const Lib3MF_uint32 nCompressionLevel);
inline void EnableZstd(const Lib3MF_uint32 nCompressionLevel);
};

/*************************************************************************************************************************
Expand Down Expand Up @@ -2490,20 +2491,30 @@ inline CBase* CWrapper::polymorphicFactory(Lib3MFHandle pHandle)
}

/**
* CBinaryStream::EnableLZMA - Enables LZMA mode.
* @param[in] nLZMALevel - LZMA Level (0-9)
* CBinaryStream::EnableLZ4 - Switches to fast LZ4 compression mode.
* @param[in] nCompressionLevel - Compression level (0-9).
*/
void CBinaryStream::EnableLZMA(const Lib3MF_uint32 nLZMALevel)
void CBinaryStream::EnableLZ4(const Lib3MF_uint32 nCompressionLevel)
{
CheckError(lib3mf_binarystream_enablelzma(m_pHandle, nLZMALevel));
CheckError(lib3mf_binarystream_enablelz4(m_pHandle, nCompressionLevel));
}

/**
* CBinaryStream::DisableLZMA - Disables LZMA mode.
* CBinaryStream::EnableZLib - Switches to ZLib compression mode.
* @param[in] nCompressionLevel - Compression level (0-9).
*/
void CBinaryStream::DisableLZMA()
void CBinaryStream::EnableZLib(const Lib3MF_uint32 nCompressionLevel)
{
CheckError(lib3mf_binarystream_disablelzma(m_pHandle));
CheckError(lib3mf_binarystream_enablezlib(m_pHandle, nCompressionLevel));
}

/**
* CBinaryStream::EnableZstd - Switches to ZStd compression mode.
* @param[in] nCompressionLevel - Compression level.
*/
void CBinaryStream::EnableZstd(const Lib3MF_uint32 nCompressionLevel)
{
CheckError(lib3mf_binarystream_enablezstd(m_pHandle, nCompressionLevel));
}

/**
Expand Down
25 changes: 18 additions & 7 deletions Autogenerated/Bindings/CppDynamic/lib3mf_dynamic.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,21 +109,31 @@ typedef Lib3MFResult (*PLib3MFBinaryStream_DisableDiscretizedArrayCompressionPtr
typedef Lib3MFResult (*PLib3MFBinaryStream_EnableDiscretizedArrayCompressionPtr) (Lib3MF_BinaryStream pBinaryStream, Lib3MF_double dUnits, Lib3MF::eBinaryStreamPredictionType ePredictionType);

/**
* Enables LZMA mode.
* Switches to fast LZ4 compression mode.
*
* @param[in] pBinaryStream - BinaryStream instance.
* @param[in] nLZMALevel - LZMA Level (0-9)
* @param[in] nCompressionLevel - Compression level (0-9).
* @return error code or 0 (success)
*/
typedef Lib3MFResult (*PLib3MFBinaryStream_EnableLZMAPtr) (Lib3MF_BinaryStream pBinaryStream, Lib3MF_uint32 nLZMALevel);
typedef Lib3MFResult (*PLib3MFBinaryStream_EnableLZ4Ptr) (Lib3MF_BinaryStream pBinaryStream, Lib3MF_uint32 nCompressionLevel);

/**
* Disables LZMA mode.
* Switches to ZLib compression mode.
*
* @param[in] pBinaryStream - BinaryStream instance.
* @param[in] nCompressionLevel - Compression level (0-9).
* @return error code or 0 (success)
*/
typedef Lib3MFResult (*PLib3MFBinaryStream_DisableLZMAPtr) (Lib3MF_BinaryStream pBinaryStream);
typedef Lib3MFResult (*PLib3MFBinaryStream_EnableZLibPtr) (Lib3MF_BinaryStream pBinaryStream, Lib3MF_uint32 nCompressionLevel);

/**
* Switches to ZStd compression mode.
*
* @param[in] pBinaryStream - BinaryStream instance.
* @param[in] nCompressionLevel - Compression level.
* @return error code or 0 (success)
*/
typedef Lib3MFResult (*PLib3MFBinaryStream_EnableZstdPtr) (Lib3MF_BinaryStream pBinaryStream, Lib3MF_uint32 nCompressionLevel);

/*************************************************************************************************************************
Class definition for Writer
Expand Down Expand Up @@ -5609,8 +5619,9 @@ typedef struct {
PLib3MFBinaryStream_GetUUIDPtr m_BinaryStream_GetUUID;
PLib3MFBinaryStream_DisableDiscretizedArrayCompressionPtr m_BinaryStream_DisableDiscretizedArrayCompression;
PLib3MFBinaryStream_EnableDiscretizedArrayCompressionPtr m_BinaryStream_EnableDiscretizedArrayCompression;
PLib3MFBinaryStream_EnableLZMAPtr m_BinaryStream_EnableLZMA;
PLib3MFBinaryStream_DisableLZMAPtr m_BinaryStream_DisableLZMA;
PLib3MFBinaryStream_EnableLZ4Ptr m_BinaryStream_EnableLZ4;
PLib3MFBinaryStream_EnableZLibPtr m_BinaryStream_EnableZLib;
PLib3MFBinaryStream_EnableZstdPtr m_BinaryStream_EnableZstd;
PLib3MFWriter_WriteToFilePtr m_Writer_WriteToFile;
PLib3MFWriter_GetStreamSizePtr m_Writer_GetStreamSize;
PLib3MFWriter_WriteToBufferPtr m_Writer_WriteToBuffer;
Expand Down
Loading

0 comments on commit 8e5278e

Please sign in to comment.