CInt64Vec
Overview
Module that defines the CInt64Vec type and the associated functions.
Example
#include "clingo/container/CInt64Vec.h"
#include "clingo/io/cRecorder.h"
#include "clingo/io/write_type.h"
#include "clingo/lang/expect.h"
int main( void )
{
init_tap_c_();
CInt64Vec* vec = retain_c( make_int64_vec_c( 1 ) );
cVecInfo const* info = info_of_int64_vec_c( vec );
expect_c_( vec_is_empty_c( info ) );
expect_c_( info->cap == 1 );
expect_c_( info->count == 0 );
add_to_int64_vec_c( vec, 100 );
add_to_int64_vec_c( vec, 200 );
expect_c_( not vec_is_empty_c( info ) );
expect_c_( info->cap > 1 );
expect_c_( info->count == 2 );
add_many_to_int64_vec_c_( vec, 300, 400, 500 );
expect_c_( *get_from_int64_vec_c( vec, 0 ) == 100 );
expect_c_( *get_from_int64_vec_c( vec, 2 ) == 300 );
expect_c_( *get_from_int64_vec_c( vec, 4 ) == 500 );
set_on_int64_vec_c( vec, 4, 555 );
expect_c_( *get_from_int64_vec_c( vec, 4 ) == 555 );
insert_into_int64_vec_c( vec, 3, 350 );
expect_c_( info->count == 6 );
cRecorder* rec = &recorder_c_( 128 );
{
cInt64Slice slice = slice_of_int64_vec_c( vec );
for_each_c_( int64_t const*, i, slice )
{
write_int64_c_( rec, *i );
if ( i != rbegin_c_( slice ) )
{
record_char_c( rec, ' ' );
}
}
}
expect_c_( recorded_is_c( rec, "100 200 300 350 400 555" ) );
resize_int64_vec_c( vec, info->count );
expect_c_( info->cap == info->count );
release_all_c_( vec );
return finish_tap_c_();
}
Types and Definitions
Generated
CInt64Vec
struct CInt64Vec;
typedef struct CInt64Vec CInt64Vec;
Via the macros VAL_VEC_DEF_C_ and VAL_VEC_IMPL_C_ declared and implemented struct. The macros declare and implement also the following globals and functions.
/* create */
CInt64Vec* make_int64_vec_c( int64_t cap );
CInt64Vec* new_int64_vec_c( void );
/* manage */
int64_t const* data_of_int64_vec_c( CInt64Vec const* vec );
int64_t* var_data_of_int64_vec_c( CInt64Vec* vec );
/* resize */
bool resize_int64_vec_c( CInt64Vec* vec, int64_t cap );
/* info */
cVecInfo const* info_of_int64_vec_c( CInt64Vec const* vec );
/* use */
bool add_to_int64_vec_c( CInt64Vec* vec, int64_t val );
bool add_array_to_int64_vec_c( CInt64Vec* vec, int64_t n, int64_t const* arr );
int64_t const* get_from_int64_vec_c( CInt64Vec const* vec, int64_t pos );
int64_t* get_var_from_int64_vec_c( CInt64Vec* vec, int64_t pos );
bool insert_into_int64_vec_c( CInt64Vec* vec, int64_t pos, int64_t val );
bool remove_from_int64_vec_c( CInt64Vec* vec, int64_t pos );
void set_on_int64_vec_c( CInt64Vec* vec, int64_t pos, int64_t val );
overall
add_many_to_byte_vec_
#define add_many_to_int64_vec_c_( Vec, ... ) \
add_many_to_int64_vec_c( \
(Vec), (cInt64Slice)slice_c_( int64_t, __VA_ARGS__ ) \
)
bool add_many_to_int64_vec_c( CInt64Vec* vec, cInt64Slice many );
Adds all int64_t values from the slice to the int64_t vector.
slice_of_int64_vec_c
cInt64Slice slice_of_int64_vec_c( CInt64Vec const* vec );
Via the macro SLICE_OF_VEC_C_ implemented function.
var_slice_of_int64_vec_c
cVarInt64Slice var_slice_of_int64_vec_c( CInt64Vec* vec );
Via the macro VAR_SLICE_OF_VEC_C_ implemented function.