The open source OpenXR runtime
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

u/bitwise: Add bitwise manipulator functions

authored by

Pete Black and committed by
Ryan Pavlik
8597ad5e 0b63cb2d

+72 -4
+3 -1
src/xrt/auxiliary/CMakeLists.txt
··· 1 - # Copyright 2019, Collabora, Ltd. 1 + # Copyright 2019-2020, Collabora, Ltd. 2 2 # SPDX-License-Identifier: BSL-1.0 3 3 4 4 set(MATH_SOURCE_FILES ··· 55 55 endif() 56 56 57 57 set(UTIL_SOURCE_FILES 58 + util/u_bitwise.c 59 + util/u_bitwise.h 58 60 util/u_misc.c 59 61 util/u_misc.h 60 62 util/u_debug.c
+5 -3
src/xrt/auxiliary/meson.build
··· 1 - # Copyright 2019, Collabora, Ltd. 1 + # Copyright 2019-2020, Collabora, Ltd. 2 2 # SPDX-License-Identifier: BSL-1.0 3 3 4 4 aux_include = include_directories('.') ··· 6 6 lib_aux_util = static_library( 7 7 'aux_util', 8 8 files( 9 - 'util/u_misc.c', 10 - 'util/u_misc.h', 9 + 'util/u_bitwise.c', 10 + 'util/u_bitwise.h', 11 11 'util/u_debug.c', 12 12 'util/u_debug.h', 13 13 'util/u_device.c', ··· 25 25 'util/u_hashset.h', 26 26 'util/u_json.c', 27 27 'util/u_json.h', 28 + 'util/u_misc.c', 29 + 'util/u_misc.h', 28 30 'util/u_sink.h', 29 31 'util/u_sink_converter.c', 30 32 'util/u_sink_deinterleaver.c',
+35
src/xrt/auxiliary/util/u_bitwise.c
··· 1 + // Copyright 2019-2020, Collabora, Ltd. 2 + // SPDX-License-Identifier: BSL-1.0 3 + /*! 4 + * @file 5 + * @brief Functions for manipulating tightly packed data as bits. 6 + * @author Jakob Bornecrantz <jakob@collabora.com> 7 + * @author Pete Black <pete.black@collabora.com> 8 + * @ingroup aux_util 9 + */ 10 + #include <stdio.h> 11 + #include "util/u_bitwise.h" 12 + 13 + int 14 + get_bit(unsigned char *b, int num) 15 + { 16 + int index = num / 8; 17 + return (b[index] >> (7 - (num % 8))) & 1; 18 + } 19 + 20 + int 21 + get_bits(unsigned char *b, int start, int num) 22 + { 23 + int ret = 0; 24 + for (int i = 0; i < num; i++) { 25 + ret <<= 1; 26 + ret |= get_bit(b, start + i); 27 + } 28 + return ret; 29 + } 30 + 31 + int 32 + sign_extend_13(unsigned int i) 33 + { 34 + return ((int)(i << 19)) >> 19; 35 + }
+29
src/xrt/auxiliary/util/u_bitwise.h
··· 1 + // Copyright 2019-2020, Collabora, Ltd. 2 + // SPDX-License-Identifier: BSL-1.0 3 + /*! 4 + * @file 5 + * @brief Functions for manipulating tightly packed data as bits. 6 + * @author Jakob Bornecrantz <jakob@collabora.com> 7 + * @author Pete Black <pete.black@collabora.com> 8 + * @ingroup aux_util 9 + */ 10 + 11 + #pragma once 12 + 13 + #ifdef __cplusplus 14 + extern "C" { 15 + #endif 16 + 17 + int 18 + get_bit(unsigned char *b, int num); 19 + 20 + int 21 + get_bits(unsigned char *b, int start, int num); 22 + 23 + int 24 + sign_extend_13(unsigned int i); 25 + 26 + 27 + #ifdef __cplusplus 28 + } 29 + #endif