Line data Source code
1 : /**
2 : * @file
3 : *
4 : * @brief
5 : *
6 : * @copyright BSD License (see LICENSE.md or https://www.libelektra.org)
7 : */
8 :
9 : #ifndef ELEKTRA_KDB_GEN_HIGHLEVEL_HPP
10 : #define ELEKTRA_KDB_GEN_HIGHLEVEL_HPP
11 :
12 : #include <gen/template.hpp>
13 :
14 9 : class HighlevelGenTemplate : public GenTemplate
15 : {
16 : struct Params
17 : {
18 : static const char * InitFunctionName;
19 : static const char * HelpFunctionName;
20 : static const char * SpecloadFunctionName;
21 : static const char * TagPrefix;
22 : static const char * EnumConversion;
23 : static const char * AdditionalHeaders;
24 : static const char * GenerateSetters;
25 : static const char * EmbeddedSpec;
26 : static const char * SpecValidation;
27 : static const char * InstallPrefix;
28 : };
29 :
30 : public:
31 9 : HighlevelGenTemplate ()
32 9 : : GenTemplate ("highlevel", { ".c", ".h", ".spec.eqd", ".mount.sh" },
33 : { "enum.c", "union.c", "struct.c", "struct.alloc.fields.c", "enum.decl.h", "struct.decl.h", "union.decl.h",
34 : "keys.fun.h", "keys.fun.struct.h", "keys.fun.structref.h", "keys.tags.h", "context.fun.h", "context.tags.h" },
35 : {
36 : { Params::InitFunctionName, false },
37 : { Params::HelpFunctionName, false },
38 : { Params::SpecloadFunctionName, false },
39 : { Params::TagPrefix, false },
40 : { Params::EnumConversion, false },
41 : { Params::GenerateSetters, false },
42 : { Params::AdditionalHeaders, false },
43 : { Params::EmbeddedSpec, false },
44 : { Params::SpecValidation, false },
45 522 : })
46 : {
47 9 : }
48 :
49 : protected:
50 : kainjow::mustache::data getTemplateData (const std::string & outputName, const std::string & part, const kdb::KeySet & ks,
51 : const std::string & parentKey) const override;
52 :
53 : std::string escapeFunction (const std::string & str) const override;
54 : std::vector<std::string> getActualParts () const override;
55 : };
56 :
57 : #endif // ELEKTRA_KDB_GEN_HIGHLEVEL_HPP
|