Coverage Report

Created: 2026-02-26 06:02

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/readstat/src/readstat_bits.c
Line
Count
Source
1
//
2
//  readstat_bits.c - Bit-twiddling utility functions
3
//
4
5
#include <sys/types.h>
6
#include <stdint.h>
7
#include <string.h>
8
9
#include "readstat_bits.h"
10
11
0
int machine_is_little_endian(void) {
12
0
    int test_byte_order = 1;
13
0
    return ((char *)&test_byte_order)[0];
14
0
}
15
16
0
char ones_to_twos_complement1(char num) {
17
0
    return num < 0 ? num+1 : num;
18
0
}
19
20
0
int16_t ones_to_twos_complement2(int16_t num) {
21
0
    return num < 0 ? num+1 : num;
22
0
}
23
24
0
int32_t ones_to_twos_complement4(int32_t num) {
25
0
    return num < 0 ? num+1 : num;
26
0
}
27
28
0
char twos_to_ones_complement1(char num) {
29
0
    return num < 0 ? num-1 : num;
30
0
}
31
32
0
int16_t twos_to_ones_complement2(int16_t num) {
33
0
    return num < 0 ? num-1 : num;
34
0
}
35
36
0
int32_t twos_to_ones_complement4(int32_t num) {
37
0
    return num < 0 ? num-1 : num;
38
0
}
39
40
0
uint16_t byteswap2(uint16_t num) {
41
0
    return ((num & 0xFF00) >> 8) | ((num & 0x00FF) << 8);
42
0
}
43
44
0
uint32_t byteswap4(uint32_t num) {
45
0
    num = ((num & 0xFFFF0000) >> 16) | ((num & 0x0000FFFF) << 16);
46
0
    return ((num & 0xFF00FF00) >> 8) | ((num & 0x00FF00FF) << 8);
47
0
}
48
49
0
uint64_t byteswap8(uint64_t num) {
50
0
    num = ((num & 0xFFFFFFFF00000000) >> 32) | ((num & 0x00000000FFFFFFFF) << 32);
51
0
    num = ((num & 0xFFFF0000FFFF0000) >> 16) | ((num & 0x0000FFFF0000FFFF) << 16);
52
0
    return ((num & 0xFF00FF00FF00FF00) >> 8) | ((num & 0x00FF00FF00FF00FF) << 8);
53
0
}
54
55
0
float byteswap_float(float num) {
56
0
    uint32_t answer = 0;
57
0
    memcpy(&answer, &num, 4);
58
0
    answer = byteswap4(answer);
59
0
    memcpy(&num, &answer, 4);
60
0
    return num;
61
0
}
62
63
0
double byteswap_double(double num) {
64
0
    uint64_t answer = 0;
65
0
    memcpy(&answer, &num, 8);
66
0
    answer = byteswap8(answer);
67
0
    memcpy(&num, &answer, 8);
68
0
    return num;
69
0
}