function gen_codes(tree, max_code, bl_count)
	//    ct_data *tree;             /* the tree to decorate */
	//    int max_code;              /* largest code with non zero frequency */
	//    ushf *bl_count;            /* number of codes at each bit length */
	{
	  var next_code = new Array(MAX_BITS+1); /* next code value for each bit length */
	  var code = 0;              /* running code value */
	  var bits;                  /* bit index */
	  var n;                     /* code index */
	
	  /* The distribution counts are first used to generate the code values
	   * without bit reversal.
	   */
	  for (bits = 1; bits <= MAX_BITS; bits++) {
	    next_code[bits] = code = (code + bl_count[bits-1]) << 1;
	  }
	  /* Check that the bit counts in bl_count are consistent. The last code
	   * must be all ones.
	   */
	  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
	  //        "inconsistent bit counts");
	  //Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
	
	  for (n = 0;  n <= max_code; n++) {
	    var len = tree[n*2 + 1]/*.Len*/;
	    if (len === 0) { continue; }
	    /* Now reverse the bits */
	    tree[n*2]/*.Code*/ = bi_reverse(next_code[len]++, len);
	
	    //Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
	    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
	  }
	}
/* ===========================================================================
	 * Generate the codes for a given tree and bit counts (which need not be
	 * optimal).
	 * IN assertion: the array bl_count contains the bit length statistics for
	 * the given tree and the field len is set for all tree elements.
	 * OUT assertion: the field code is set for all tree elements of non
	 *     zero code length.
	 */
Generate the codes for a given tree and bit counts (which need not be
optimal).
IN assertion: the array bl_count contains the bit length statistics for
the given tree and the field len is set for all tree elements.
OUT assertion: the field code is set for all tree elements of non
zero code length.
Generate the codes for a given tree and bit counts ( which need not be optimal ) . IN assertion : the array bl_count contains the bit length statistics for the given tree and the field len is set for all tree elements . OUT assertion : the field code is set for all tree elements of non zero code length .
function gen_codes(tree, max_code, bl_count)
	{
	  var next_code = new Array(MAX_BITS+1); 
	  var code = 0;              
	  var bits;                  
	  var n;                     
	  for (bits = 1; bits <= MAX_BITS; bits++) {
	    next_code[bits] = code = (code + bl_count[bits-1]) << 1;
	  }
	  for (n = 0;  n <= max_code; n++) {
	    var len = tree[n*2 + 1];
	    if (len === 0) { continue; }
	    tree[n*2] = bi_reverse(next_code[len]++, len);
	  }
	}
function gen_codes ( tree , max_code , bl_count ) { var next_code = new Array ( MAX_BITS + 1 ) ; var code = 0 ; var bits ; var n ; for ( bits = 1 ; bits <= MAX_BITS ; bits ++ ) { next_code [ bits ] = code = ( code + bl_count [ bits - 1 ] ) << 1 ; } for ( n = 0 ; n <= max_code ; n ++ ) { var len = tree [ n * 2 + 1 ] ; if ( len === 0 ) { continue ; } tree [ n * 2 ] = bi_reverse ( next_code [ len ] ++ , len ) ; } }
Generate the codes for a given tree and bit counts (which need not be
 optimal).
Generate the codes for a given tree and bit counts ( which need not be optimal ) .
//    ct_data *tree;             /* the tree to decorate */ //    int max_code;              /* largest code with non zero frequency */ //    ushf *bl_count;            /* number of codes at each bit length */ /* next code value for each bit length */ /* running code value */ /* bit index */ /* code index */ /* The distribution counts are first used to generate the code values
	   * without bit reversal.
	   */ /* Check that the bit counts in bl_count are consistent. The last code
	   * must be all ones.
	   */ //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1, //        "inconsistent bit counts"); //Tracev((stderr,"\ngen_codes: max_code %d ", max_code)); /*.Len*/ /* Now reverse the bits */ /*.Code*/ //Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ", //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));