2014-04-10 11 views
9

Mam klasy, która ma funkcje i chcę ukryć określoną funkcję. Na przykład:Jak mogę ukryć określoną funkcję (w C++) w doxygen?

class Test 
{ 

    /** 
    * About Function1 
    * 
    * @param[in] arg1 About arg1 
    * @param[in] arg2 About arg2 
    */   
    public void Function1(int arg1,char arg2); 

    // Presume same documentation for this function also 
    public void Function2(int,char); 

    // Presume same documentation for this function also 
    public void Function3(int,char); 

    // Presume same documentation for this function also 
    public void Function4(int,char); 
} 

Załóżmy, że chcę się ukryć, powiedz Funkcji2, w jaki sposób to zrobię.

Teraz w bieżącym scenariuszu wyświetla wszystkie cztery funkcje wraz z dokumentacją.

Teraz mam ustawić następujące atrybut w moim pliku reguł .doxygen:

EXTRACT_ALL = YES

Czy możesz zaproponować mi coś o których mogę powiedzieć Function2 ukrycia?

Dzięki z góry.

Odpowiedz

6

zrobić coś takiego:

#ifndef DOXYGEN_SHOULD_SKIP_THIS 

/* code that must be skipped by Doxygen */ 
/* in your case a method/function */ 

#endif /* DOXYGEN_SHOULD_SKIP_THIS */ 

A w pliku konfiguracyjnym, umieścić PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS Upewnij się, że ustawiony jest ENABLE_PREPROCESSINGYES.

Krótko mówiąc, po prostu wykorzystujesz koncepcję preprocesora, aby pracować dla Ciebie!

+0

myślę pisząc to będzie mój – Rana

+0

oczek w górę i dokładnie dlaczego tak myślisz? @Rana – CinCout

+0

bardzo dziękuję za szybką odpowiedź. W moim projekcie mam około 2000 nieparzystych plików i jest to całkiem niemożliwe, aby zrobić tę zmianę, chociaż wygląda bardzo dobrze.Jeśli możesz zasugerować coś, przez co wstawię coś do dokumentacji, a następnie z pewnym ustawieniem w pliku konfiguracyjnym, będę mógł pominąć tę funkcję. Dzięki – Rana

0

Myślę, że kiedyś użyłem EXTRACT_SYMBOLS, aby osiągnąć coś takiego.

Znacznik EXCLUDE_SYMBOLS mogą być użyte do określenia jednej lub więcej nazw symboli (Przestrzenie nazw, klas, funkcji, etc.), które powinny być wyłączone z produkcji . Nazwa symbolu może być w pełni kwalifikowaną nazwą, słowem lub jeśli użyto wieloznacznika *, podłańcuchem. Przykłady: ANamespace, AClass, AClass :: ANamespace, ANamespace :: * test

Niestety nie mogę całkowicie przypomnieć ani znaleźć wpisu konfiguracyjnego.

EXCLUDE_SYMBOLS = Test::Function2* 
+0

Próbowałem dodać następujący kod, taki jak EXCLUDE_SYMBOLS = Agent :: Label (int) const, aby pominąć tę funkcję z wyjścia, ale nie zadziałał tam, gdzie Lebel jest funkcją z następującą sygnaturą void Label (int) const – Rana

7

Jeśli masz EXTRACT_PRIVATE = NO w pliku konfiguracyjnym, to można zaznaczyć dowolny element jako prywatny do Doxygen i nie będzie generować dokumentację dla tego użytkownika:

/// @private 
public void Function2(int, char); 

Bonusowe pytanie: jeśli chcesz użyć tej samej dokumentacji dla wszystkich czterech członków można zrobić przy użyciu jednej z następujących metod:

/** 
* About Function1,2,3,4... 
*/ 
/// @{ 
public void Function1(int arg1, char arg2); 
public void Function2(int arg1, char arg2); 
public void Function3(int arg1, char arg2); 
public void Function4(int arg1, char arg2); 
/// @} 

/** 
* About Function1,2,3,4... 
*/ 
public void Function1(int arg1, char arg2); 
/// @copydoc Function1 
public void Function2(int arg1, char arg2); 
/// @copydoc Function1 
public void Function3(int arg1, char arg2); 
/// @copydoc Function1 
public void Function4(int arg1, char arg2); 

jedno stosując @{ ... @} wymaga użycia pliku DISTRIBUTE_GROUP_DOC = YES w pliku konfiguracyjnym.

6

Zastosowanie dyr lub wewnętrzny

/*! \cond PRIVATE */ 
//only documented if cond is enabled 
// ... 
/*! \endcond */ 
Powiązane problemy