cByte

Overview

Module with functions and types to work with byte values.

Types and Definitions

cByte

typedef uint8_t cByte;

cByte is an alias for uint8 and is equivalent to uint8 in all ways. It is used, by convention, to distinguish byte values from 8-bit unsigned integer values.

c_check_byte

typedef bool ( *c_check_byte )( cByte b );

c_check_byte is the signature of a function to check a byte value.

Functions

overall

byte_c_

#define byte_c_( Value )

Macro function that casts the Value as cByte.

cmp_byte_c

int cmp_byte_c( cByte a, cByte b );

Compares two cByte values and returns the three possible results:

<0

means that a is less compared to b

0

means that a and be are equal

>0

means that a is greater compared to b

Example

bit

byte_as_bit_c

cByte byte_as_bit_c( cByte byte );

Trims the byte to the least significant bit.

Example
#include "clingo/lang/expect.h"
#include "clingo/type/cByte.h"

int main( void )
{
   init_tap_c_();

   expect_c_( byte_as_bit_c( 0 ) == 0 );
   expect_c_( byte_as_bit_c( 1 ) == 1 );

   expect_c_( byte_as_bit_c( '0' ) == 0 ); // ascii 30
   expect_c_( byte_as_bit_c( '1' ) == 1 ); // ascii 31

   expect_c_( byte_as_bit_c( 2 ) == 0 );
   expect_c_( byte_as_bit_c( 3 ) == 1 );

   return finish_tap_c_();
}

get_byte_bit_c

cByte get_byte_bit_c( cByte byte int64_t pos );

Returns the bit at pos in a byte.

Example
#include "clingo/lang/expect.h"
#include "clingo/type/cByte.h"

int main( void )
{
   init_tap_c_();

   cByte byte = 0xaa; // 1010 1010
   expect_c_( get_byte_bit_c( byte, 0 ) == 1 );
   expect_c_( get_byte_bit_c( byte, 1 ) == 0 );
   expect_c_( get_byte_bit_c( byte, 4 ) == 1 );
   expect_c_( get_byte_bit_c( byte, 7 ) == 0 );

   return finish_tap_c_();
}

set_byte_bit_c

cByte set_byte_bit_c( cByte byte, int64_t pos, cByte bit );

Sets the bit at pos in a byte.

Example
#include "clingo/lang/expect.h"
#include "clingo/type/cByte.h"

int main( void )
{
   init_tap_c_();

   cByte byte = 0xaa; // 1010 1010

   expect_c_( set_byte_bit_c( byte, 0, 0 ) == 0x2a ); // 0010 1010
   expect_c_( set_byte_bit_c( byte, 1, 1 ) == 0xea ); // 1110 1010
   expect_c_( set_byte_bit_c( byte, 7, 0 ) == 0xaa ); // 1010 1010
   expect_c_( set_byte_bit_c( byte, 7, 1 ) == 0xab ); // 1010 1011

   return finish_tap_c_();
}

toggle_byte_bit_c

cByte toggle_byte_bit_c( cByte byte, int64_t pos );

Toggles the bit at pos in a byte.

Example
#include "clingo/lang/expect.h"
#include "clingo/type/cByte.h"

int main( void )
{
   init_tap_c_();

   cByte byte = 0xaa; // 1010 1010

   expect_c_( toggle_byte_bit_c( byte, 0 ) == 0x2a ); // 0010 1010
   expect_c_( toggle_byte_bit_c( byte, 1 ) == 0xea ); // 1110 1010
   expect_c_( toggle_byte_bit_c( byte, 4 ) == 0xa2 ); // 1010 0010
   expect_c_( toggle_byte_bit_c( byte, 7 ) == 0xab ); // 1010 1011

   return finish_tap_c_();
}