bool

Overview

Module with functions and types to work with bool values.

Types and Definitions

Generated

cBoolSlice

struct cBoolSlice
{
   int64_t s;
   bool const* v;
};
typedef struct cBoolSlice cBoolSlice;

Via the macro SLICES_C_ generated struct.

cVarBoolSlice

struct cVarBoolSlice
{
   int64_t s;
   bool* v;
};
typedef struct cVarBoolSlice cVarBoolSlice;

Via the macro SLICES_C_ generated struct.

Functions

overall

bool_c_

#define bool_c_( Value )

Macro function that casts the Value as bool.

cmp_bool_c

int cmp_bool_c( bool a, bool b );

Compares two bool values and returns the three possible results:

<0

means that a is less compared to b

0

means that a and b are equal

>0

means that a is greater compared to b

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

int main( void )
{
   init_tap_c_();

   expect_lt_c_( cmp_bool_c( false,  true ) );
   expect_eq_c_( cmp_bool_c( false, false ) );
   expect_eq_c_( cmp_bool_c(  true,  true ) );
   expect_gt_c_( cmp_bool_c(  true, false ) );

   return finish_tap_c_();
}

algo

and_bool_slice_values_c

bool and_bool_slice_values_c( cBoolSlice slice );

Combines all values in the slice with a logical and operation.

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

int main( void )
{
   init_tap_c_();

   cBoolSlice s000 = slice_c_( bool, false, false, false );
   cBoolSlice s001 = slice_c_( bool, false, false,  true );
   cBoolSlice s010 = slice_c_( bool, false,  true, false );
   cBoolSlice s011 = slice_c_( bool, false,  true,  true );
   cBoolSlice s100 = slice_c_( bool,  true, false, false );
   cBoolSlice s101 = slice_c_( bool,  true, false,  true );
   cBoolSlice s110 = slice_c_( bool,  true,  true, false );
   cBoolSlice s111 = slice_c_( bool,  true,  true,  true );

   expect_c_( not and_bool_slice_values_c( s000 ) );
   expect_c_( not and_bool_slice_values_c( s001 ) );
   expect_c_( not and_bool_slice_values_c( s010 ) );
   expect_c_( not and_bool_slice_values_c( s011 ) );
   expect_c_( not and_bool_slice_values_c( s100 ) );
   expect_c_( not and_bool_slice_values_c( s101 ) );
   expect_c_( not and_bool_slice_values_c( s110 ) );
   expect_c_(     and_bool_slice_values_c( s111 ) );

   return finish_tap_c_();
}

count_eq_bool_c

int64_t count_eq_bool_c( cBoolSlice slice, bool val );

Via the macro COUNT_EQ_C_ implemented function.

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

int main( void )
{
   init_tap_c_();

   cBoolSlice s01010 = slice_c_( bool, false, true, false, true, false );

   expect_c_( count_eq_bool_c( s01010, true  ) == 2 );
   expect_c_( count_eq_bool_c( s01010, false ) == 3 );

   return finish_tap_c_();
}

or_bool_slice_values_c

bool or_bool_slice_values_c( cBoolSlice slice );

Combines all values in the slice with a logical or operation.

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

int main( void )
{
   init_tap_c_();

   cBoolSlice s000 = slice_c_( bool, false, false, false );
   cBoolSlice s001 = slice_c_( bool, false, false,  true );
   cBoolSlice s010 = slice_c_( bool, false,  true, false );
   cBoolSlice s011 = slice_c_( bool, false,  true,  true );
   cBoolSlice s100 = slice_c_( bool,  true, false, false );
   cBoolSlice s101 = slice_c_( bool,  true, false,  true );
   cBoolSlice s110 = slice_c_( bool,  true,  true, false );
   cBoolSlice s111 = slice_c_( bool,  true,  true,  true );

   expect_c_( not or_bool_slice_values_c( s000 ) );
   expect_c_( or_bool_slice_values_c( s001 ) );
   expect_c_( or_bool_slice_values_c( s010 ) );
   expect_c_( or_bool_slice_values_c( s011 ) );
   expect_c_( or_bool_slice_values_c( s100 ) );
   expect_c_( or_bool_slice_values_c( s101 ) );
   expect_c_( or_bool_slice_values_c( s110 ) );
   expect_c_( or_bool_slice_values_c( s111 ) );

   return finish_tap_c_();
}