Doxygen STL支持使用点图

时间:2012-06-07 16:18:08

标签: c++ stl fortran doxygen

我正在使用doxygen(xubuntu 12.04机器上的1.8.0版本)记录遗留的c ++ / fortran混合代码。除了使用stl std :: vector类之外,我的dot_graphs,调用图和调用图都正常工作。

我有一些类foo需要包含另一个类bar的向量。

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了。我知道我的代码在上面并不完美。我希望你能抓住漂移。我的代码非常庞大,所以我试着简化它。

2 个答案:

答案 0 :(得分:1)

您应该启用BUILTIN_STL_SUPPORT选项。

答案 1 :(得分: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/')更改了它(我使用&#34; ^&#34;因为我在Windows上,这是适用于&#34;&gt;&#34的转义字符;),获得:

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 =是

SOURCE_BROWSER =是

VERBATIM_HEADERS = no

乏味?是的,当然......但它对我有用,这是我能做到这一点的唯一方法!

希望有所帮助