blob: 2e4a085f7c45767b25216dab2fff76e74d8f0e7f [file] [log] [blame]
Michal Vasko7b1ad1a2020-11-02 15:41:27 +01001/**
2 * @file schema_features.h
3 * @author Michal Vasko <mvasko@cesnet.cz>
4 * @brief Header for schema features.
5 *
6 * Copyright (c) 2015 - 2020 CESNET, z.s.p.o.
7 *
8 * This source code is licensed under BSD 3-Clause License (the "License").
9 * You may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
11 *
12 * https://opensource.org/licenses/BSD-3-Clause
13 */
14
15#ifndef LY_SCHEMA_FEATURES_H_
16#define LY_SCHEMA_FEATURES_H_
17
18#include "log.h"
19
Radek Krejci47fab892020-11-05 17:02:41 +010020struct ly_ctx;
Michal Vasko7b1ad1a2020-11-02 15:41:27 +010021struct lysp_module;
Michal Vasko7b1ad1a2020-11-02 15:41:27 +010022struct lysp_qname;
23
24/**
25 * @brief Evaluate if-features array.
26 *
27 * @param[in] ctx libyang context.
28 * @param[in] iffeatures Sized array of if-features to evaluate.
29 * @param[out] enabled Whether if-features evaluated to true or false.
30 * @return LY_SUCCESS on success.
31 * @return LY_ERR on error.
32 */
33LY_ERR lys_eval_iffeatures(const struct ly_ctx *ctx, struct lysp_qname *iffeatures, ly_bool *enabled);
34
35/**
Michal Vasko08c8b272020-11-24 18:11:30 +010036 * @brief Set the specified features of a parsed module, with all the checks.
37 *
38 * @param[in] pmod Parsed module to modify.
Radek Krejci2415f882021-01-20 16:27:09 +010039 * @param[in] features Array of features ended with NULL to be enabled if the module is being implemented.
40 * The feature string '*' enables all and array of length 1 with only the terminating NULL explicitly disables all
41 * the features. In case the parameter is NULL, the features are untouched - left disabled in newly loaded module or
42 * with the current features settings in case the module is already present in the context.
Michal Vasko08c8b272020-11-24 18:11:30 +010043 * @return LY_SUCCESS on success.
44 * @return LY_EEXIST if the specified features were already set.
45 * @return LY_ERR on error.
46 */
47LY_ERR lys_set_features(struct lysp_module *pmod, const char **features);
48
49/**
Radek Krejci84d7fd72021-07-14 18:32:21 +020050 * @brief Compile if-features of features in the provided module and all its submodules.
Michal Vasko7b1ad1a2020-11-02 15:41:27 +010051 *
Radek Krejci84d7fd72021-07-14 18:32:21 +020052 * @param[in] pmod Parsed module to process.
Michal Vasko7b1ad1a2020-11-02 15:41:27 +010053 * @return LY_ERR value.
54 */
55LY_ERR lys_compile_feature_iffeatures(struct lysp_module *pmod);
56
Michal Vasko7b1ad1a2020-11-02 15:41:27 +010057#endif /* LY_SCHEMA_FEATURES_H_ */