diff --git a/src/bin/eolian_mono/eolian/mono/alias_definition.hh b/src/bin/eolian_mono/eolian/mono/alias_definition.hh
index a6cfadbca5..12d9ce78f9 100644
--- a/src/bin/eolian_mono/eolian/mono/alias_definition.hh
+++ b/src/bin/eolian_mono/eolian/mono/alias_definition.hh
@@ -37,6 +37,10 @@ struct alias_definition_generator
if (!as_generator(eolian_mono::type).generate(std::back_inserter(alias_type), alias.base_type, context))
return false;
+ std::string alias_type_doc;
+ alias_type_doc = utils::replace_all(alias_type, "<", "<");
+ alias_type_doc = utils::replace_all(alias_type_doc, ">", ">");
+
std::string const alias_name = utils::remove_all(alias.eolian_name, '_');
if (!as_generator(
documentation
@@ -44,7 +48,7 @@ struct alias_definition_generator
<< "{\n"
<< scope_tab << "private " << alias_type << " payload;\n\n"
- << scope_tab << "/// Converts an instance of " << alias_type << " to this struct.\n"
+ << scope_tab << "/// Converts an instance of " << alias_type_doc << " to this struct.\n"
<< scope_tab << "/// The value to be converted.\n"
<< scope_tab << "/// A struct with the given value.\n"
<< scope_tab << "public static implicit operator " << alias_name << "(" << alias_type << " value)\n"
@@ -52,7 +56,7 @@ struct alias_definition_generator
<< scope_tab << scope_tab << "return new " << alias_name << "{payload=value};\n"
<< scope_tab << "}\n\n"
- << scope_tab << "/// Converts an instance of this struct to " << alias_type << ".\n"
+ << scope_tab << "/// Converts an instance of this struct to " << alias_type_doc << ".\n"
<< scope_tab << "/// The value to be converted packed in this struct.\n"
<< scope_tab << "/// The actual value the alias is wrapping.\n"
<< scope_tab << "public static implicit operator " << alias_type << "(" << alias_name << " value)\n"
diff --git a/src/bin/eolian_mono/eolian/mono/utils.hh b/src/bin/eolian_mono/eolian/mono/utils.hh
index 392cb00f11..9e583df4f9 100644
--- a/src/bin/eolian_mono/eolian/mono/utils.hh
+++ b/src/bin/eolian_mono/eolian/mono/utils.hh
@@ -88,6 +88,20 @@ namespace eolian_mono { namespace utils {
else
return false;
}
+
+ inline std::string replace_all(std::string s, std::string target, std::string replace)
+ {
+ size_t pos = s.find(target);
+
+ while (pos != std::string::npos)
+ {
+ s.replace(pos, target.length(), replace);
+ pos += replace.length();
+ pos = s.find(target, pos);
+ }
+
+ return s;
+ }
} }
#endif