aboutsummaryrefslogtreecommitdiff
path: root/src/blocks/group.c
blob: eeac132e352b437b1ecad5ae152f3a2a26b67a71 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "../block.h"
#include "../any_log.h"

static void block_group_init(block_t *block)
{
    block->type = BLOCK_GROUP;
}

static void block_group_clean(block_t *block)
{
    block_group_t *group = (block_group_t *)block;
    free(group->children);
}

static config_status_t block_group_change(block_t *block, config_t *config, const char *key, const char *value)
{
    if (!strcmp(key, "blocks")) {
        log_error("Block '%s' option '%s' cannot be changed", block->label, "blocks");
        return CONFIG_INVALID;
    }

    extern const config_entry_t block_group_entries[];
    return config_read_entry(block_group_entries, block, NULL, "block", block->label, key, value);
}

const block_scheme_t block_group_scheme = {
    .name = "group",
    .entries = NULL,
    .size = sizeof(block_group_t),
    .init_fn = block_group_init,
    .clean_fn = block_group_clean,
    .validate_fn = NULL,
    .change_fn = block_group_change,
};