2012-06-07 37 views
5

我正在使用doxygen(xubuntu 12.04機器上的版本1.8.0)記錄傳統的C++/fortran混合代碼。我的dot_graphs,調用圖和調用者圖正在正常工作,除非使用stl std :: vector類。使用點圖的Doxygen STL支持

我有一些類foo需要包含另一個類欄的向量。

class foo 
{ 
    //What i'd like to do (1) 
    std::vector<bar> d_bars 
    //What works (2) 
    bar* d_bars 
}; 
class bar 
{ 
    SOME_FUNCTION(); 
} 

bar類包含各種函數,如「SOME_FUNCTION()」。當foo類中的函數調用SOME_FUNCTION:d_bars[i].SOME_FUNCTION();時,只有在第二種方式聲明d_bars時纔會生成調用者圖。這不適用於當前代碼,需要在使用stl向量類的第一個方法中聲明時工作。我已經有BUILTIN_STL_SUPPORT = YES。我知道我的代碼並不完美。我希望你能趕上漂移。我的代碼非常龐大,所以我試圖簡化它。

回答

0

您應該有選項BUILTIN_STL_SUPPORT開啓。

+0

忘了提及,我已經擁有了它。 –

1

我不知道這會有什麼幫助,但無論如何,誰知道。

我一直有和你一樣的問題:我有兩個類,其中一個有另一個類的向量。更糟糕的是,我正在生成shared_pointers,後來又創建了這個向量。

我不得不這樣做的唯一的解決方案,使用SED ..是的,真的......例如:

class A 
{ 
public: 
    A() {}; 
    ~A() {}; 
    DoSomeThingA(){ 
     AA_ = 0; 
    }; 
private: 
    int AA_; 
}; 

class B 
{ 
public: 
    B() {}; 
    ~B(){}; 
    DoSomeThingB(){ 
     for (size_t i = 0; i < VecA_.size(); i++) 
     { 
      VecA_[i]->DoSomeThingA(); 
     } 
    }; 
private: 
    std::vector<std::shared_ptr<A>> VecA_; 
}; 

我改變它使用SED(sed -e 's/VecA_\[i\]-^>/VecA_\./; s/std::vector^<std::shared_ptr^<A^>^>/A/')(我用「^」因爲我的窗口上的,那就是工作了 「>」),獲得轉義字符:

class A 
{ 
public: 
    A() {}; 
    ~A() {}; 
    DoSomeThingA(){ 
     AA_ = 0; 
    }; 
private: 
    int AA_; 
}; 

class B 
{ 
public: 
    B() {}; 
    ~B(){}; 
    DoSomeThingB(){ 
     for (size_t i = 0; i < VecA_.size(); i++) 
     { 
      VecA_.DoSomeThingA(); 
     } 
    }; 
private: 
    A VecA_; 
}; 

最後,我配置的doxygen用:

INPUT_FILTER = sed -e 's/VecA_\[i\]-^>/VecA_\./; s/std::vector^<std::shared_ptr^<A^>^>/A/'

FILTER_SOURCE_FILES = YES

SOURCE_BROWSER = YES

VERBATIM_HEADERS =沒有

乏味?是的,當然......但它適用於我,這是我能做到這一點的唯一方法!

希望它有幫助