mercurial/util.h
changeset 19833 1935e8383a9e
parent 19753 2c9645c0a582
child 21809 e250b8300e6e
equal deleted inserted replaced
19832:0c02d8e7bbc4 19833:1935e8383a9e
   149 
   149 
   150 #ifdef __linux
   150 #ifdef __linux
   151 #define inline __inline
   151 #define inline __inline
   152 #endif
   152 #endif
   153 
   153 
   154 #if defined(_MSC_VER) && (_MSC_VER >= 1300)
       
   155 static inline uint32_t getbe32(const char *c)
       
   156 {
       
   157 	return _byteswap_ulong(*(uint32_t *)c);
       
   158 }
       
   159 #elif __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
       
   160 static inline uint32_t getbe32(const char *c)
       
   161 {
       
   162 	return __builtin_bswap32(*(uint32_t *)c);
       
   163 }
       
   164 #else
       
   165 static inline uint32_t getbe32(const char *c)
   154 static inline uint32_t getbe32(const char *c)
   166 {
   155 {
   167 	const unsigned char *d = (const unsigned char *)c;
   156 	const unsigned char *d = (const unsigned char *)c;
   168 
   157 
   169 	return ((d[0] << 24) |
   158 	return ((d[0] << 24) |
   170 		(d[1] << 16) |
   159 		(d[1] << 16) |
   171 		(d[2] << 8) |
   160 		(d[2] << 8) |
   172 		(d[3]));
   161 		(d[3]));
   173 }
   162 }
   174 #endif
       
   175 
   163 
   176 #if defined(_MSC_VER) && (_MSC_VER >= 1300)
       
   177 static inline void putbe32(uint32_t x, char *c)
       
   178 {
       
   179 	x = _byteswap_ulong(x);
       
   180 	*(uint32_t *)c = x;
       
   181 }
       
   182 #elif __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
       
   183 static inline void putbe32(uint32_t x, char *c)
       
   184 {
       
   185 	x = __builtin_bswap32(x);
       
   186 	*(uint32_t *)c = x;
       
   187 }
       
   188 #else
       
   189 static inline void putbe32(uint32_t x, char *c)
   164 static inline void putbe32(uint32_t x, char *c)
   190 {
   165 {
   191 	c[0] = (x >> 24) & 0xff;
   166 	c[0] = (x >> 24) & 0xff;
   192 	c[1] = (x >> 16) & 0xff;
   167 	c[1] = (x >> 16) & 0xff;
   193 	c[2] = (x >> 8) & 0xff;
   168 	c[2] = (x >> 8) & 0xff;
   194 	c[3] = (x) & 0xff;
   169 	c[3] = (x) & 0xff;
   195 }
   170 }
   196 #endif
       
   197 
   171 
   198 #endif /* _HG_UTIL_H_ */
   172 #endif /* _HG_UTIL_H_ */