]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
updated DEBUG_STATIC_ASSERT()
authorYann Collet <cyan@fb.com>
Tue, 26 Jun 2018 19:04:59 +0000 (12:04 -0700)
committerYann Collet <cyan@fb.com>
Tue, 26 Jun 2018 19:04:59 +0000 (12:04 -0700)
following suggestion from #1209

doc/zstd_manual.html
lib/common/debug.h

index 6bf731dd991fb306df2034641af7438907ff13e9..bd792008bd274cc7caac92d1232909331cda2989 100644 (file)
@@ -872,6 +872,28 @@ size_t ZSTD_decodingBufferSize_min(unsigned long long windowSize, unsigned long
 
     ZSTD_p_forceMaxWindow=1100, </b>/* Force back-reference distances to remain < windowSize,<b>
                               * even when referencing into Dictionary content (default:0) */
+    ZSTD_p_forceAttachDict,  </b>/* ZSTD supports usage of a CDict in-place<b>
+                              * (avoiding having to copy the compression tables
+                              * from the CDict into the working context). Using
+                              * a CDict in this way saves an initial setup step,
+                              * but comes at the cost of more work per byte of
+                              * input. ZSTD has a simple internal heuristic that
+                              * guesses which strategy will be faster. You can
+                              * use this flag to override that guess.
+                              *
+                              * Note that the by-reference, in-place strategy is
+                              * only used when reusing a compression context
+                              * with compatible compression parameters. (If
+                              * incompatible / uninitialized, the working
+                              * context needs to be cleared anyways, which is
+                              * about as expensive as overwriting it with the
+                              * dictionary context, so there's no savings in
+                              * using the CDict by-ref.)
+                              *
+                              * Values greater than 0 force attaching the dict.
+                              * Values less than 0 force copying the dict.
+                              * 0 selects the default heuristic-guided behavior.
+                              */
 
 } ZSTD_cParameter;
 </b></pre><BR>
index 95a3fcabea2a6b3aec3501a6cf0f7057de9a08b1..9b5878cfcd36321a58b65a33204e80e9b1d50c01 100644 (file)
 
 /*
  * The purpose of this header is to enable debug functions.
- * They regroup assert(), DEBUGLOG() and RAWLOG().
+ * They regroup assert(), DEBUGLOG() and RAWLOG() for run-time,
+ * and DEBUG_STATIC_ASSERT() for compile-time.
  *
- * By default, DEBUGLEVEL==0, which means debug is disabled.
+ * By default, DEBUGLEVEL==0, which means run-time debug is disabled.
  *
  * Level 1 enables assert() only.
  * Starting level 2, traces can be generated and pushed to stderr.
@@ -58,7 +59,7 @@ extern "C" {
 
 /* static assert is triggered at compile time, leaving no runtime artefact,
  * but can only work with compile-time constants */
-#define DEBUG_STATIC_ASSERT(c) { enum { DEBUG_static_assert = 1/(int)(!!(c)) }; }
+#define DEBUG_STATIC_ASSERT(c) { extern char DEBUG_static_assert[(c) ? 1 : -1]; }
 
 
 /* DEBUGLEVEL is expected to be defined externally,
@@ -69,7 +70,7 @@ extern "C" {
 #endif
 
 /* recommended values for DEBUGLEVEL :
- * 0 : no debug, all functions disabled (except DEBUG_STATIC_ASSERT)
+ * 0 : no debug, all run-time functions disabled
  * 1 : no display, enables assert() only
  * 2 : reserved, for currently active debug path
  * 3 : events once per object lifetime (CCtx, CDict, etc.)