/*! ZSTD_estimateDDictSize() : * Estimate amount of memory that will be needed to create a dictionary for decompression. * Note : dictionary created by reference using ZSTD_dlm_byRef are smaller */ public static nuint ZSTD_estimateDDictSize(nuint dictSize, ZSTD_dictLoadMethod_e dictLoadMethod) { return((nuint)(sizeof(ZSTD_DDict_s)) + (dictLoadMethod == ZSTD_dictLoadMethod_e.ZSTD_dlm_byRef ? 0 : dictSize)); }
public static ZSTD_DDict_s *ZSTD_createDDict_advanced(void *dict, nuint dictSize, ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_dictContentType_e dictContentType, ZSTD_customMem customMem) { if (((customMem.customAlloc == null ? 1 : 0) ^ (customMem.customFree == null ? 1 : 0)) != 0) { return((ZSTD_DDict_s *)null); } { ZSTD_DDict_s *ddict = (ZSTD_DDict_s *)(ZSTD_customMalloc((nuint)(sizeof(ZSTD_DDict_s)), customMem)); if (ddict == null) { return((ZSTD_DDict_s *)null); } ddict->cMem = customMem; { nuint initResult = ZSTD_initDDict_internal(ddict, dict, dictSize, dictLoadMethod, dictContentType); if ((ERR_isError(initResult)) != 0) { ZSTD_freeDDict(ddict); return((ZSTD_DDict_s *)null); } } return(ddict); } }
public static ZSTD_DDict_s *ZSTD_initStaticDDict(void *sBuffer, nuint sBufferSize, void *dict, nuint dictSize, ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_dictContentType_e dictContentType) { nuint neededSpace = (nuint)(sizeof(ZSTD_DDict_s)) + (dictLoadMethod == ZSTD_dictLoadMethod_e.ZSTD_dlm_byRef ? 0 : dictSize); ZSTD_DDict_s *ddict = (ZSTD_DDict_s *)(sBuffer); assert(sBuffer != null); assert(dict != null); if (((nuint)(sBuffer) & 7) != 0) { return((ZSTD_DDict_s *)null); } if (sBufferSize < neededSpace) { return((ZSTD_DDict_s *)null); } if (dictLoadMethod == ZSTD_dictLoadMethod_e.ZSTD_dlm_byCopy) { memcpy((void *)((ddict + 1)), (dict), (dictSize)); dict = ddict + 1; } if ((ERR_isError(ZSTD_initDDict_internal(ddict, dict, dictSize, ZSTD_dictLoadMethod_e.ZSTD_dlm_byRef, dictContentType))) != 0) { return((ZSTD_DDict_s *)null); } return(ddict); }
private static nuint ZSTD_initDDict_internal(ZSTD_DDict_s *ddict, void *dict, nuint dictSize, ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_dictContentType_e dictContentType) { if ((dictLoadMethod == ZSTD_dictLoadMethod_e.ZSTD_dlm_byRef) || dict == null || dictSize == 0) { ddict->dictBuffer = null; ddict->dictContent = dict; if (dict == null) { dictSize = 0; } } else { void *internalBuffer = ZSTD_customMalloc(dictSize, ddict->cMem); ddict->dictBuffer = internalBuffer; ddict->dictContent = internalBuffer; if (internalBuffer == null) { return(unchecked ((nuint)(-(int)ZSTD_ErrorCode.ZSTD_error_memory_allocation))); } memcpy((internalBuffer), (dict), (dictSize)); } ddict->dictSize = dictSize; ddict->entropy.hufTable[0] = (uint)((12) * 0x1000001); { nuint err_code = (ZSTD_loadEntropy_intoDDict(ddict, dictContentType)); if ((ERR_isError(err_code)) != 0) { return(err_code); } } return(0); }