2011-11-23 78 views
3

我在我的.h文件中,像這樣的枚舉:Doxygen的產生條目枚舉,而不是他們的成員

/** \memberof MyClass 
    Values for keypress bitmasks for #method and MyClassDelegate#otherMethod */ 
enum MY_KEYS { 
    MY_KEY_1_DOWN, /**< KEY 1 press */ 
    MY_KEY_1_UP,  /**< KEY 1 release */ 
    MY_KEY_2_DOWN, /**< KEY 2 press */ 
    MY_KEY_2_UP,  /**< KEY 2 release */ 
}; 

Doxygen的產生在「公共類型」此枚舉的條目,以及「會員枚舉文檔「的詳細說明顯示。但是,它不會爲枚舉的成員生成文檔。我想列舉枚舉的成員並對它們進行評論,以便我的用戶可以知道使用哪種值,其中它們的形式類型是此枚舉。

不知道它是否相關 - 這是在Objective-C中,因此\ memberof MyClass會顯示在這個類的頁面上。

回答

1

不知道爲什麼doxygen沒有看到由\memberof命令繼承的枚舉值。如果您手動將各個值設置爲枚舉或類的成員,則它不起作用。

無論如何,解決辦法是,如果要真正地出現在類中的枚舉,你需要在類接口中定義它:

@interface MyClass : NSobject 

/** 
    Values for keypress bitmasks for #method and MyClassDelegate#otherMethod 
*/ 
enum MY_KEYS { 
    MY_KEY_1_DOWN, /**< KEY 1 press */ 
    MY_KEY_1_UP,  /**< KEY 1 release */ 
    MY_KEY_2_DOWN, /**< KEY 2 press */ 
    MY_KEY_2_UP,  /**< KEY 2 release */ 
}; 

@end 

這實際上更有意義IMO,因爲沒有擔保該頭文件包含相關類型 - 它只是期望設計良好。

1

我偶然發現了同樣的問題(雖然對於純C文檔) - 不幸的是這似乎是Doxygen的問題,請參見相應的Bugzilla條目如果枚舉是枚舉

單個值沒有記錄一個 C級

https://bugzilla.gnome.org/show_bug.cgi?id=762320

的成員,或者上了年紀的相關Bug:

當使用@relatesalso時,Doxygen不會輸出枚舉的成員。

https://bugzilla.gnome.org/show_bug.cgi?id=609299

更新:

甲快速修復解決了這個問題(在Doxygen的1.8.11測試):

編輯的src/doxygen.cpp和刪除(或評論)函數addEnumValuesToEnums中的第7375行:

if (!e->name().isEmpty() && (fmn=(*emnsd)[e->name()])) 
    // get list of members with the same name as the field 
{ 
    MemberNameIterator fmni(*fmn); 
    MemberDef *fmd; 
    for (fmni.toFirst(); (fmd=fmni.current()) ; ++fmni) 
    { 
    /* REMOVED LINE 7375: if (fmd->isEnumValue() && fmd->getOuterScope()==md->getOuterScope()) // in same scope */ 
    { 
     //printf("found enum value with same name %s in scope %s\n", 
     // fmd->name().data(),fmd->getOuterScope()->name().data()); 
     if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@') 
     { 

C枚舉的「外部範圍」仍然設置爲全局,即尚未達到添加枚舉成員值的塊。

請注意,我做了一個簡短的檢查,並沒有徹底測試修復 - 它可能有副作用....