@@ -31,6 +31,10 @@ struct language_entryt
3131typedef std::list<language_entryt> languagest;
3232languagest languages;
3333
34+ // / Register a language
35+ // / Note: registering a language is required for using the functions
36+ // / in language_util.h
37+ // / \param factory: a language factory, e.g. `new_ansi_c_language`
3438void register_language (language_factoryt factory)
3539{
3640 languages.push_back (language_entryt ());
@@ -40,6 +44,9 @@ void register_language(language_factoryt factory)
4044 languages.back ().mode =l->id ();
4145}
4246
47+ // / Get the language corresponding to the given mode
48+ // / \param mode: the mode, e.g. `ID_C`
49+ // / \return the language or `nullptr` if the language has not been registered
4350std::unique_ptr<languaget> get_language_from_mode (const irep_idt &mode)
4451{
4552 for (const auto &language : languages)
@@ -87,6 +94,10 @@ get_language_from_identifier(const namespacet &ns, const irep_idt &identifier)
8794 return language;
8895}
8996
97+ // / Get the language corresponding to the registered file name extensions
98+ // / \param filename: a filename
99+ // / \return the corresponding language or `nullptr` if the extension cannot
100+ // / be resolved to any registered language
90101std::unique_ptr<languaget> get_language_from_filename (
91102 const std::string &filename)
92103{
@@ -122,6 +133,8 @@ std::unique_ptr<languaget> get_language_from_filename(
122133 return nullptr ;
123134}
124135
136+ // / Returns the default language
137+ // / \return the first registered language
125138std::unique_ptr<languaget> get_default_language ()
126139{
127140 PRECONDITION (!languages.empty ());
0 commit comments