|  | /* Copyright (c) 2015 Google Inc | 
|  | * Davide Libenzi <dlibenzi@google.com> | 
|  | * See LICENSE for details. | 
|  | */ | 
|  |  | 
|  | #pragma once | 
|  |  | 
|  | #include <sys/types.h> | 
|  | #include <stdint.h> | 
|  |  | 
|  | static inline const void *get_le_u16(const void *ptr, uint16_t *pvalue) | 
|  | { | 
|  | const uint8_t *p = (const uint8_t *) ptr; | 
|  |  | 
|  | *pvalue = (uint16_t) p[0] | ((uint16_t) p[1] << 8); | 
|  | return p + sizeof(uint16_t); | 
|  | } | 
|  |  | 
|  | static inline const void *get_le_u32(const void *ptr, uint32_t *pvalue) | 
|  | { | 
|  | const uint8_t *p = (const uint8_t *) ptr; | 
|  |  | 
|  | *pvalue = (uint32_t) p[0] | ((uint32_t) p[1] << 8) | | 
|  | ((uint32_t) p[2] << 16) | ((uint32_t) p[3] << 24); | 
|  | return p + sizeof(uint32_t); | 
|  | } | 
|  |  | 
|  | static inline const void *get_le_u64(const void *ptr, uint64_t *pvalue) | 
|  | { | 
|  | const uint8_t *p = (const uint8_t *) ptr; | 
|  |  | 
|  | *pvalue = (uint64_t) p[0] | ((uint64_t) p[1] << 8) | | 
|  | ((uint64_t) p[2] << 16) | ((uint64_t) p[3] << 24) | | 
|  | ((uint64_t) p[4] << 32) | ((uint64_t) p[5] << 40) | | 
|  | ((uint64_t) p[6] << 48) | ((uint64_t) p[7] << 56); | 
|  | return p + sizeof(uint64_t); | 
|  | } | 
|  |  | 
|  | static inline void *put_le_u16(void *ptr, uint16_t v) | 
|  | { | 
|  | uint8_t *p = (uint8_t *) ptr; | 
|  |  | 
|  | p[0] = (uint8_t) v; | 
|  | p[1] = (uint8_t) (v >> 8); | 
|  | return p + sizeof(uint16_t); | 
|  | } | 
|  |  | 
|  | static inline void *put_le_u32(void *ptr, uint32_t v) | 
|  | { | 
|  | uint8_t *p = (uint8_t *) ptr; | 
|  |  | 
|  | p[0] = (uint8_t) v; | 
|  | p[1] = (uint8_t) (v >> 8); | 
|  | p[2] = (uint8_t) (v >> 16); | 
|  | p[3] = (uint8_t) (v >> 24); | 
|  | return p + sizeof(uint32_t); | 
|  | } | 
|  |  | 
|  | static inline void *put_le_u64(void *ptr, uint64_t v) | 
|  | { | 
|  | uint8_t *p = (uint8_t *) ptr; | 
|  |  | 
|  | p[0] = (uint8_t) v; | 
|  | p[1] = (uint8_t) (v >> 8); | 
|  | p[2] = (uint8_t) (v >> 16); | 
|  | p[3] = (uint8_t) (v >> 24); | 
|  | p[4] = (uint8_t) (v >> 32); | 
|  | p[5] = (uint8_t) (v >> 40); | 
|  | p[6] = (uint8_t) (v >> 48); | 
|  | p[7] = (uint8_t) (v >> 56); | 
|  | return p + sizeof(uint64_t); | 
|  | } |