DoxygenでObjective-CのNS_ENUMを出力する

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で出力すると、以下のようなドキュメントになります。

Doxygenの出力例

著書紹介

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Akira Hayashi (林 晃)のアバター Akira Hayashi (林 晃) Representative(代表), Software Engineer(ソフトウェアエンジニア)

アールケー開発代表。Appleプラットフォーム向けの開発を専門としているソフトウェアエンジニア。ソフトウェアの受託開発、技術書執筆、技術指導・セミナー講師。note, Medium, LinkedIn
-
Representative of RK Kaihatsu. Software Engineer Specializing in Development for the Apple Platform. Specializing in contract software development, technical writing, and serving as a tech workshop lecturer. note, Medium, LinkedIn

目次