如何在 doxygen 中重新生成 class url?
How can I regenerate a class url in doxygen?
我正在使用 doxygen 为程序生成文档。现在我想 link 在另一个 website/program 中生成文档(完全独立)。
我的想法是生成一个 URL 与生成的 doxygen 一样,例如我的 class 名字是 Models.PMF.Phen.GenericPhase
,生成的 doxygen url 是 class_models_1_1_p_m_f_1_1_phen_1_1_generic_phase.html
。我不明白为什么url里有那么多underscore
和1
。
我的问题是
- 是否可以更改生成的 doxygen 的样式 URL,即
class/Models/PMF/Phen/GenericPhase.html
?
- doxygen 生成 URL.
时是否有任何模式
感谢您的任何建议。如果我的问题不清楚,请告诉我。
简而言之:我认为 Doxygen 生成的 URL 可以安全使用。
回答问题:
不,你不能让 Doxygen 来创建你想要的路径(但我同意这可能很好)
下划线是 Doxygen 使原始名称可移植到任何文件系统的方式。 _1
是 .
字符的替代品。所有大写字母都被替换为前面带有 _
的小写字母。这种处理非常一致,所以我认为您应该能够安全地使用它。
util.cpp 中有一个名为 escapeCharsInString(...)
的例程可以执行此转换。正如我所说,所有大写字母都变为小写字母并在前面加上下划线。其他各种字符被转换为 _? (其中 ? 是从 1 到 9 或 00 到 0C 的数字)。最后,如果遇到下划线本身会加倍。 ("my_Function" 最终得到 3 个下划线:my___function
)。
下面是各种角色的源代码片段。老实说,我很困惑为什么 .
会得到 _1
,因为对于我来说它会转换为 _8
。我在 C,而不是 C++;但即使知道我已经搜索了源代码,仍然没有找到解释。因此,我只说我 "think" URL 可以安全使用 :)
case '_': if (allowUnderscore) growBuf.addChar('_'); else growBuf.addStr("__"); break;
case '-': growBuf.addChar('-'); break;
case ':': growBuf.addStr("_1"); break;
case '/': growBuf.addStr("_2"); break;
case '<': growBuf.addStr("_3"); break;
case '>': growBuf.addStr("_4"); break;
case '*': growBuf.addStr("_5"); break;
case '&': growBuf.addStr("_6"); break;
case '|': growBuf.addStr("_7"); break;
case '.': if (allowDots) growBuf.addChar('.'); else growBuf.addStr("_8"); break;
case '!': growBuf.addStr("_9"); break;
case ',': growBuf.addStr("_00"); break;
case ' ': growBuf.addStr("_01"); break;
case '{': growBuf.addStr("_02"); break;
case '}': growBuf.addStr("_03"); break;
case '?': growBuf.addStr("_04"); break;
case '^': growBuf.addStr("_05"); break;
case '%': growBuf.addStr("_06"); break;
case '(': growBuf.addStr("_07"); break;
case ')': growBuf.addStr("_08"); break;
case '+': growBuf.addStr("_09"); break;
case '=': growBuf.addStr("_0A"); break;
case '$': growBuf.addStr("_0B"); break;
case '\': growBuf.addStr("_0C"); break;
现在更进一步,如果结果名称大于 128 个字符,则会使用 MD5 编码方案,这会导致文件名看起来像垃圾。它基本上是原始名称的加密,因此只要您的原始名称始终完全相同(包括参数!),就可以安全使用。另见 util.cpp.
中的 convertNameToFile(...)
我正在使用 doxygen 为程序生成文档。现在我想 link 在另一个 website/program 中生成文档(完全独立)。
我的想法是生成一个 URL 与生成的 doxygen 一样,例如我的 class 名字是 Models.PMF.Phen.GenericPhase
,生成的 doxygen url 是 class_models_1_1_p_m_f_1_1_phen_1_1_generic_phase.html
。我不明白为什么url里有那么多underscore
和1
。
我的问题是
- 是否可以更改生成的 doxygen 的样式 URL,即
class/Models/PMF/Phen/GenericPhase.html
? - doxygen 生成 URL. 时是否有任何模式
感谢您的任何建议。如果我的问题不清楚,请告诉我。
简而言之:我认为 Doxygen 生成的 URL 可以安全使用。
回答问题: 不,你不能让 Doxygen 来创建你想要的路径(但我同意这可能很好)
下划线是 Doxygen 使原始名称可移植到任何文件系统的方式。 _1
是 .
字符的替代品。所有大写字母都被替换为前面带有 _
的小写字母。这种处理非常一致,所以我认为您应该能够安全地使用它。
util.cpp 中有一个名为 escapeCharsInString(...)
的例程可以执行此转换。正如我所说,所有大写字母都变为小写字母并在前面加上下划线。其他各种字符被转换为 _? (其中 ? 是从 1 到 9 或 00 到 0C 的数字)。最后,如果遇到下划线本身会加倍。 ("my_Function" 最终得到 3 个下划线:my___function
)。
下面是各种角色的源代码片段。老实说,我很困惑为什么 .
会得到 _1
,因为对于我来说它会转换为 _8
。我在 C,而不是 C++;但即使知道我已经搜索了源代码,仍然没有找到解释。因此,我只说我 "think" URL 可以安全使用 :)
case '_': if (allowUnderscore) growBuf.addChar('_'); else growBuf.addStr("__"); break;
case '-': growBuf.addChar('-'); break;
case ':': growBuf.addStr("_1"); break;
case '/': growBuf.addStr("_2"); break;
case '<': growBuf.addStr("_3"); break;
case '>': growBuf.addStr("_4"); break;
case '*': growBuf.addStr("_5"); break;
case '&': growBuf.addStr("_6"); break;
case '|': growBuf.addStr("_7"); break;
case '.': if (allowDots) growBuf.addChar('.'); else growBuf.addStr("_8"); break;
case '!': growBuf.addStr("_9"); break;
case ',': growBuf.addStr("_00"); break;
case ' ': growBuf.addStr("_01"); break;
case '{': growBuf.addStr("_02"); break;
case '}': growBuf.addStr("_03"); break;
case '?': growBuf.addStr("_04"); break;
case '^': growBuf.addStr("_05"); break;
case '%': growBuf.addStr("_06"); break;
case '(': growBuf.addStr("_07"); break;
case ')': growBuf.addStr("_08"); break;
case '+': growBuf.addStr("_09"); break;
case '=': growBuf.addStr("_0A"); break;
case '$': growBuf.addStr("_0B"); break;
case '\': growBuf.addStr("_0C"); break;
现在更进一步,如果结果名称大于 128 个字符,则会使用 MD5 编码方案,这会导致文件名看起来像垃圾。它基本上是原始名称的加密,因此只要您的原始名称始终完全相同(包括参数!),就可以安全使用。另见 util.cpp.
中的convertNameToFile(...)