ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
input_help.h
Go to the documentation of this file.
1#ifndef INPUT_HELP_H
2#define INPUT_HELP_H
3
4#include <iostream>
5#include <map>
6#include <mutex>
7#include <string>
8#include <vector>
9
10namespace ModuleIO {
11
16 std::string name;
17 std::string type;
18 std::string description;
19 std::string default_value;
20 std::string category;
21 std::string unit; // Empty string if no unit
22 std::string availability; // Empty string if always available
23 std::string name_lowercase; // Pre-computed lowercase for fast fuzzy matching
24};
25
34public:
41 static void initialize();
42
50 static bool show_parameter_help(const std::string& key, std::ostream& os = std::cout);
51
60 static std::vector<std::string> search_parameters(const std::string& query);
61
69 static void show_general_help(std::ostream& os = std::cout);
70
80 static void generate_yaml(std::ostream& os = std::cout);
81
97 static ParameterMetadata get_metadata(const std::string& key);
98
115 static std::vector<std::string> find_similar_parameters(const std::string& query,
116 int max_suggestions = 5,
117 int max_distance = 3);
118
119private:
120 static std::map<std::string, ParameterMetadata> registry_;
121 static std::map<std::string, std::string> lowercase_to_actual_;
122 static std::once_flag init_flag_;
123
130 static void build_registry();
131
140 static std::map<std::string, ParameterMetadata>::const_iterator
141 find_case_insensitive(const std::string& key);
142
146 static std::string to_lowercase(const std::string& str);
147
158 static int levenshtein_distance(const std::string& s1, const std::string& s2);
159};
160
161} // namespace ModuleIO
162
163#endif // INPUT_HELP_H
Help system for ABACUS INPUT parameters.
Definition input_help.h:33
static void generate_yaml(std::ostream &os=std::cout)
Generate YAML dump of all parameter metadata.
Definition input_help.cpp:475
static bool show_parameter_help(const std::string &key, std::ostream &os=std::cout)
Display detailed help for a specific parameter.
Definition input_help.cpp:385
static std::once_flag init_flag_
Definition input_help.h:122
static int levenshtein_distance(const std::string &s1, const std::string &s2)
Calculate Levenshtein distance between two strings.
Definition input_help.cpp:551
static std::map< std::string, std::string > lowercase_to_actual_
Definition input_help.h:121
static std::vector< std::string > search_parameters(const std::string &query)
Search for parameters matching a query string.
Definition input_help.cpp:426
static std::vector< std::string > find_similar_parameters(const std::string &query, int max_suggestions=5, int max_distance=3)
Find similar parameter names for fuzzy matching.
Definition input_help.cpp:583
static ParameterMetadata get_metadata(const std::string &key)
Get metadata for a specific parameter.
Definition input_help.cpp:512
static void show_general_help(std::ostream &os=std::cout)
Display general help message.
Definition input_help.cpp:446
static std::map< std::string, ParameterMetadata >::const_iterator find_case_insensitive(const std::string &key)
Find parameter with case-insensitive matching.
Definition input_help.cpp:534
static std::string to_lowercase(const std::string &str)
Convert string to lowercase for case-insensitive comparison.
Definition input_help.cpp:526
static std::map< std::string, ParameterMetadata > registry_
Definition input_help.h:120
static void initialize()
Initialize the help registry from generated data.
Definition input_help.cpp:352
static void build_registry()
Build the registry from generated PARAMETER_DATA.
Definition input_help.cpp:356
Definition input_help.cpp:10
Metadata for a single INPUT parameter.
Definition input_help.h:15
std::string category
Definition input_help.h:20
std::string type
Definition input_help.h:17
std::string availability
Definition input_help.h:22
std::string name_lowercase
Definition input_help.h:23
std::string description
Definition input_help.h:18
std::string unit
Definition input_help.h:21
std::string name
Definition input_help.h:16
std::string default_value
Definition input_help.h:19