blob: a785bd7c150dc2c6cdb7a7baee4d05c1c6dc45f7 [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/**
36 * @brief Enable features in a parsed module with their consolidation and checking that they really
37 * can be enabled and have all their if-features true.
38 *
39 * @param[in] pmod Parsed module to modify.
40 * @param[in] features Array of features ended with NULL to enable. NULL for all features disabled, '*' for all enabled
41 * @return LY_SUCCESS on success.
42 * @return LY_ERR on error.
43 */
44LY_ERR lys_enable_features(struct lysp_module *pmod, const char **features);
45
46/**
47 * @brief Compile if-features of features in the current module and all its submodules.
48 *
49 * @param[in] ctx Compile context.
50 * @return LY_ERR value.
51 */
52LY_ERR lys_compile_feature_iffeatures(struct lysp_module *pmod);
53
54/**
55 * @brief Free all auxiliary if-feature structures in a parsed module used for compilation.
56 *
57 * @param[in] pmod Module to update.
58 */
59void lys_free_feature_iffeatures(struct lysp_module *pmod);
60
61#endif /* LY_SCHEMA_FEATURES_H_ */