2012-06-07 16 views
5

का उपयोग कर डॉक्सिजन एसटीएल समर्थन मैं डॉक्सिजन (xubuntu 12.04 मशीन पर संस्करण 1.8.0) का उपयोग कर विरासत सी ++/फोर्ट्रान मिश्रित कोड को दस्तावेज करने पर काम कर रहा हूं। मेरे dot_graphs, कॉल ग्राफ़, और कॉलर ग्राफ़ ठीक से काम कर रहे हैं सिवाय इसके कि जब stl std :: vector class का उपयोग किया जा रहा है।डॉट ग्राफ़

मेरे पास कुछ कक्षा 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(); 
} 

बार श्रेणी में "SOME_FUNCTION()" जैसे कई प्रकार के फ़ंक्शन शामिल हैं। जब foo क्लास के भीतर कोई फ़ंक्शन SOME_FUNCTION को कॉल करता है: d_bars[i].SOME_FUNCTION(); कॉलर ग्राफ़ केवल तभी उत्पन्न होता है जब d_bars को दूसरी तरफ घोषित किया जाता है। यह वर्तमान कोड के साथ काम नहीं करता है और एसएलएल वेक्टर वर्ग का उपयोग कर पहली विधि में घोषित होने पर काम करने की आवश्यकता है।

मेरे पास पहले से ही BUILTIN_STL_SUPPORT = YES है। मुझे पता है कि मेरा कोड ऊपर सही नहीं है। मुझे उम्मीद है कि आप बहाव पकड़ सकते हैं। मेरा कोड काफी बड़ा है, इसलिए मैंने इसे सरल बनाने की कोशिश की।

उत्तर

0

आपके पास विकल्प BUILTIN_STL_SUPPORT चालू होना चाहिए।

+0

का उल्लेख करना भूल गया कि मेरे पास पहले से ही यह है। –

1

मुझे नहीं पता कि इससे क्या मदद मिलेगी लेकिन वैसे भी, जो जानता है।

मुझे आपके जैसा ही समस्या है: मेरे पास दो वर्ग हैं और उनमें से एक के पास अन्य वर्ग का वेक्टर है। इससे भी बदतर, मैं साझा_पॉइंटर्स उत्पन्न कर रहा था और बाद में इसके वैक्टर बना रहा था।

एकमात्र समाधान मैं इस किया था, एसईडी उपयोग कर रहा था .. हाँ, वास्तव में ... उदाहरण के लिए:

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 -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 = हाँ

SOURCE_BROWSER = हाँ

VERBATIM_HEADERS = नहीं

थकाऊ? हाँ, ज़ाहिर है ... लेकिन यह मेरे लिए काम करता है और यह एकमात्र तरीका है कि मैं यह काम कर सकता हूं!

आशा है कि यह