libyang  4.0.0
libyang is YANG data modelling language parser and toolkit written (and providing API) in C.
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
bits.c File Reference

Built-in bits type plugin. More...

#include "plugins_types.h"
#include <ctype.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "libyang.h"
#include "compat.h"
#include "ly_common.h"
#include "plugins_internal.h"
Include dependency graph for bits.c:

Go to the source code of this file.

Macros

#define _GNU_SOURCE   /* strdup */
 
#define BITS_BITMAP_BYTE(bitmap, size, idx)   (bitmap + idx)
 Get a specific byte in a bitmap. More...
 
#define BITS_LAST_BIT_POSITION(type_bits)   ((type_bits)->bits[LY_ARRAY_COUNT((type_bits)->bits) - 1].position)
 Get the position of the last bit. More...
 

Functions

 if (memcmp(v1->bitmap, v2->bitmap, bitmap_size))
 
 LYD_VALUE_GET (val1, v1)
 
 LYD_VALUE_GET (val2, v2)
 
LIBYANG_API_DEF ly_bool lyplg_type_bits_is_bit_set (const char *bitmap, uint32_t size_bits, uint32_t bit_position)
 Check whether a particular bit of a bitmap is set. More...
 
return memcmp (v1->data, v2->data, bitmap_size)
 

Variables

uint32_t bitmap_size = LYPLG_BITS2BYTES((( (struct lysc_type_bits *)val1->realtype )->bits[LY_ARRAY_COUNT(( (struct lysc_type_bits *)val1->realtype )->bits) - 1].position) + 1)
 
return LY_SUCCESS
 
struct lyplg_type_record plugins_bits []
 Plugin information for bits type implementation. More...
 

Detailed Description

Built-in bits type plugin.

Author
Radek Krejci rkrej.nosp@m.ci@c.nosp@m.esnet.nosp@m..cz
Michal Vasko mvask.nosp@m.o@ce.nosp@m.snet..nosp@m.cz Copyright (c) 2019 - 2025 CESNET, z.s.p.o.

This source code is licensed under BSD 3-Clause License (the "License"). You may not use this file except in compliance with the License. You may obtain a copy of the License at

https://opensource.org/licenses/BSD-3-Clause

Definition in file bits.c.

Macro Definition Documentation

#define _GNU_SOURCE   /* strdup */

Definition at line 16 of file bits.c.

#define BITS_BITMAP_BYTE (   bitmap,
  size,
  idx 
)    (bitmap + idx)

Get a specific byte in a bitmap.

Definition at line 54 of file bits.c.

#define BITS_LAST_BIT_POSITION (   type_bits)    ((type_bits)->bits[LY_ARRAY_COUNT((type_bits)->bits) - 1].position)

Get the position of the last bit.

Definition at line 46 of file bits.c.

Function Documentation

if ( memcmp(v1->bitmap, v2->bitmap, bitmap_size )

Definition at line 373 of file bits.c.

LYD_VALUE_GET ( val1  ,
v1   
)
LYD_VALUE_GET ( val2  ,
v2   
)
return memcmp ( v1->  data,
v2->  data,
bitmap_size   
)

Variable Documentation

uint32_t bitmap_size = LYPLG_BITS2BYTES((( (struct lysc_type_bits *)val1->realtype )->bits[LY_ARRAY_COUNT(( (struct lysc_type_bits *)val1->realtype )->bits) - 1].position) + 1)

Definition at line 366 of file bits.c.

return LY_SUCCESS

Definition at line 376 of file bits.c.

struct lyplg_type_record plugins_bits[]
Initial value:
= {
{
.module = "",
.revision = NULL,
.name = LY_TYPE_BITS_STR,
.plugin.id = "ly2 bits",
.plugin.lyb_size = lyplg_type_lyb_size_bits,
.plugin.store = lyplg_type_store_bits,
.plugin.validate_value = NULL,
.plugin.validate_tree = NULL,
.plugin.compare = lyplg_type_compare_bits,
.plugin.sort = lyplg_type_sort_bits,
.plugin.print = lyplg_type_print_bits,
.plugin.duplicate = lyplg_type_dup_bits,
.plugin.free = lyplg_type_free_bits,
},
{0}
}

Plugin information for bits type implementation.

Note that external plugins are supposed to use:

LYPLG_TYPES = {

Definition at line 498 of file bits.c.