Doxygenはソースファイル中のコメントから、リファレンスドキュメントを出力するツールです。Objective-Cにも対応しています。Objective-Cで実装したSDKのヘッダファイルからAPIリファレンスを作成したときのことです。
Objective-CのNS_ENUMの説明が出力されないという問題が起きました。C言語やC++言語でも使われている通常のenumにすれば出力されることは分かっていますが、それはできません。Objective-Cから使用するだけであれば構いませんが、Swiftから使用したときに、SwiftのenumとしてSwift側に読み込まれるためには、NS_ENUMを使用する必要があります。
Doxygenのマクロを使う
調べてみると、Stackoverflowで次のような書き込みを見つけました。
Doxygenのマクロを使って、NS_ENUMをenumに置き換えて処理するという方法です。この方法を試してみると成功しました。
マクロの定義
Doxygenの設定ファイルで以下のように定義します。
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
PREDEFINED = "NS_ENUM(enum_type, enum_name)=enum enum_name"
サンプル
以下のようなコードがあります。
/// @file Sample.h
/// @brief 値の種類
typedef NS_ENUM(NSInteger, ValueType)
{
/// @brief 整数
ValueTypeInteger,
/// @brief 浮動小数点数
ValueTypeFloatingValue,
/// @brief 文字列
ValueTypeString,
/// @brief 文字
ValueTypeCharacter,
};
このコードをDoxygenで出力すると、以下のようなドキュメントになります。