eolian-cxx: Handle C++ keywords in function names.

When function names are C++ keywords append '_' to it.
This commit is contained in:
Savio Sena 2014-07-21 20:17:44 -03:00
parent 82af4fb19d
commit 07b75b9997
2 changed files with 35 additions and 1 deletions

View File

@ -159,7 +159,7 @@ class_list_all()
inline std::string
function_name(Eolian_Function const& func)
{
return safe_str(::eolian_function_name_get(&func));
return keyword_avoid(::eolian_function_name_get(&func));
}
inline std::string

View File

@ -122,4 +122,38 @@ find_replace(std::string const& s_,
return s;
}
/// @brief Append '_' if @p key is a C++ keyword.
///
inline std::string
keyword_avoid(std::string const& name)
{
if (name == "delete" ||
name == "throw" ||
name == "break" ||
name == "friend" ||
name == "goto" ||
name == "default" ||
name == "new" ||
name == "auto" ||
name == "do" ||
name == "sizeof" ||
name == "try" ||
name == "this" ||
name == "virtual" ||
name == "typename" ||
name == "template")
{
return name + "_"; // XXX Warn?
}
return name;
}
/// @brief Append '_' if @p key is a C++ keyword.
///
inline std::string
keyword_avoid(const char* name)
{
return keyword_avoid(safe_str(name));
}
#endif // EOLIAN_CXX_BIN_SAFE_STRINGS_HH