Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/zlib/src/adler32.c

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /externals/zlib/src/adler32.c (Version 11.3.0) and /externals/zlib/src/adler32.c (Version 6.0.p1)


  1 /* adler32.c -- compute the Adler-32 checksum       1 
  2  * Copyright (C) 1995-2011, 2016 Mark Adler       
  3  * For conditions of distribution and use, see    
  4  */                                               
  5                                                   
  6 /* @(#) $Id$ */                                   
  7                                                   
  8 #include "zutil.h"                                
  9                                                   
 10 local uLong adler32_combine_ OF((uLong adler1,    
 11                                                   
 12 #define BASE 65521U     /* largest prime small    
 13 #define NMAX 5552                                 
 14 /* NMAX is the largest n such that 255n(n+1)/2    
 15                                                   
 16 #define DO1(buf,i)  {adler += (buf)[i]; sum2 +    
 17 #define DO2(buf,i)  DO1(buf,i); DO1(buf,i+1);     
 18 #define DO4(buf,i)  DO2(buf,i); DO2(buf,i+2);     
 19 #define DO8(buf,i)  DO4(buf,i); DO4(buf,i+4);     
 20 #define DO16(buf)   DO8(buf,0); DO8(buf,8);       
 21                                                   
 22 /* use NO_DIVIDE if your processor does not do    
 23    try it both ways to see which is faster */     
 24 #ifdef NO_DIVIDE                                  
 25 /* note that this assumes BASE is 65521, where    
 26    (thank you to John Reiser for pointing this    
 27 #  define CHOP(a) \                               
 28     do { \                                        
 29         unsigned long tmp = a >> 16; \            
 30         a &= 0xffffUL; \                          
 31         a += (tmp << 4) - tmp; \                  
 32     } while (0)                                   
 33 #  define MOD28(a) \                              
 34     do { \                                        
 35         CHOP(a); \                                
 36         if (a >= BASE) a -= BASE; \               
 37     } while (0)                                   
 38 #  define MOD(a) \                                
 39     do { \                                        
 40         CHOP(a); \                                
 41         MOD28(a); \                               
 42     } while (0)                                   
 43 #  define MOD63(a) \                              
 44     do { /* this assumes a is not negative */     
 45         z_off64_t tmp = a >> 32; \                
 46         a &= 0xffffffffL; \                       
 47         a += (tmp << 8) - (tmp << 5) + tmp; \     
 48         tmp = a >> 16; \                          
 49         a &= 0xffffL; \                           
 50         a += (tmp << 4) - tmp; \                  
 51         tmp = a >> 16; \                          
 52         a &= 0xffffL; \                           
 53         a += (tmp << 4) - tmp; \                  
 54         if (a >= BASE) a -= BASE; \               
 55     } while (0)                                   
 56 #else                                             
 57 #  define MOD(a) a %= BASE                        
 58 #  define MOD28(a) a %= BASE                      
 59 #  define MOD63(a) a %= BASE                      
 60 #endif                                            
 61                                                   
 62 /* ===========================================    
 63 uLong ZEXPORT adler32_z(adler, buf, len)          
 64     uLong adler;                                  
 65     const Bytef *buf;                             
 66     z_size_t len;                                 
 67 {                                                 
 68     unsigned long sum2;                           
 69     unsigned n;                                   
 70                                                   
 71     /* split Adler-32 into component sums */      
 72     sum2 = (adler >> 16) & 0xffff;                
 73     adler &= 0xffff;                              
 74                                                   
 75     /* in case user likes doing a byte at a ti    
 76     if (len == 1) {                               
 77         adler += buf[0];                          
 78         if (adler >= BASE)                        
 79             adler -= BASE;                        
 80         sum2 += adler;                            
 81         if (sum2 >= BASE)                         
 82             sum2 -= BASE;                         
 83         return adler | (sum2 << 16);              
 84     }                                             
 85                                                   
 86     /* initial Adler-32 value (deferred check     
 87     if (buf == Z_NULL)                            
 88         return 1L;                                
 89                                                   
 90     /* in case short lengths are provided, kee    
 91     if (len < 16) {                               
 92         while (len--) {                           
 93             adler += *buf++;                      
 94             sum2 += adler;                        
 95         }                                         
 96         if (adler >= BASE)                        
 97             adler -= BASE;                        
 98         MOD28(sum2);            /* only added     
 99         return adler | (sum2 << 16);              
100     }                                             
101                                                   
102     /* do length NMAX blocks -- requires just     
103     while (len >= NMAX) {                         
104         len -= NMAX;                              
105         n = NMAX / 16;          /* NMAX is div    
106         do {                                      
107             DO16(buf);          /* 16 sums unr    
108             buf += 16;                            
109         } while (--n);                            
110         MOD(adler);                               
111         MOD(sum2);                                
112     }                                             
113                                                   
114     /* do remaining bytes (less than NMAX, sti    
115     if (len) {                  /* avoid modul    
116         while (len >= 16) {                       
117             len -= 16;                            
118             DO16(buf);                            
119             buf += 16;                            
120         }                                         
121         while (len--) {                           
122             adler += *buf++;                      
123             sum2 += adler;                        
124         }                                         
125         MOD(adler);                               
126         MOD(sum2);                                
127     }                                             
128                                                   
129     /* return recombined sums */                  
130     return adler | (sum2 << 16);                  
131 }                                                 
132                                                   
133 /* ===========================================    
134 uLong ZEXPORT adler32(adler, buf, len)            
135     uLong adler;                                  
136     const Bytef *buf;                             
137     uInt len;                                     
138 {                                                 
139     return adler32_z(adler, buf, len);            
140 }                                                 
141                                                   
142 /* ===========================================    
143 local uLong adler32_combine_(adler1, adler2, l    
144     uLong adler1;                                 
145     uLong adler2;                                 
146     z_off64_t len2;                               
147 {                                                 
148     unsigned long sum1;                           
149     unsigned long sum2;                           
150     unsigned rem;                                 
151                                                   
152     /* for negative len, return invalid adler3    
153     if (len2 < 0)                                 
154         return 0xffffffffUL;                      
155                                                   
156     /* the derivation of this formula is left     
157     MOD63(len2);                /* assumes len    
158     rem = (unsigned)len2;                         
159     sum1 = adler1 & 0xffff;                       
160     sum2 = rem * sum1;                            
161     MOD(sum2);                                    
162     sum1 += (adler2 & 0xffff) + BASE - 1;         
163     sum2 += ((adler1 >> 16) & 0xffff) + ((adle    
164     if (sum1 >= BASE) sum1 -= BASE;               
165     if (sum1 >= BASE) sum1 -= BASE;               
166     if (sum2 >= ((unsigned long)BASE << 1)) su    
167     if (sum2 >= BASE) sum2 -= BASE;               
168     return sum1 | (sum2 << 16);                   
169 }                                                 
170                                                   
171 /* ===========================================    
172 uLong ZEXPORT adler32_combine(adler1, adler2,     
173     uLong adler1;                                 
174     uLong adler2;                                 
175     z_off_t len2;                                 
176 {                                                 
177     return adler32_combine_(adler1, adler2, le    
178 }                                                 
179                                                   
180 uLong ZEXPORT adler32_combine64(adler1, adler2    
181     uLong adler1;                                 
182     uLong adler2;                                 
183     z_off64_t len2;                               
184 {                                                 
185     return adler32_combine_(adler1, adler2, le    
186 }                                                 
187