Commit 31198c21 authored by Dimitri van Heesch's avatar Dimitri van Heesch
Browse files

More template and context updates

parent 7cda115a
Loading
Loading
Loading
Loading
+470 −455
Original line number Diff line number Diff line
@@ -94,7 +94,7 @@ class ClassDefImpl
    ArgumentList *typeConstraints;

    /*! Files that were used for generating the class documentation. */
    QStrList files;
    FileList files;

    /*! Examples that use this class */
    ExampleSDict *exampleSDict;
@@ -764,16 +764,17 @@ void ClassDef::findSectionsInDocumentation()


// add a file name to the used files set
void ClassDef::insertUsedFile(const char *f)
void ClassDef::insertUsedFile(FileDef *fd)
{
  if (m_impl->files.find(f)==-1) m_impl->files.append(f);
  if (fd==0) return;
  if (m_impl->files.find(fd)==-1) m_impl->files.append(fd);
  if (m_impl->templateInstances)
  {
    QDictIterator<ClassDef> qdi(*m_impl->templateInstances);
    ClassDef *cd;
    for (qdi.toFirst();(cd=qdi.current());++qdi)
    {
      cd->insertUsedFile(f);
      cd->insertUsedFile(fd);
    }
  }
}
@@ -916,12 +917,6 @@ static void writeTemplateSpec(OutputList &ol,Definition *d,
  }
}

bool ClassDef::hasBriefDescription() const
{
  static bool briefMemberDesc = Config_getBool("BRIEF_MEMBER_DESC");
  return !briefDescription().isEmpty() && briefMemberDesc;
}

void ClassDef::writeBriefDescription(OutputList &ol,bool exampleFlag)
{
  if (hasBriefDescription())
@@ -1039,45 +1034,49 @@ void ClassDef::writeDetailedDescription(OutputList &ol, const QCString &/*pageTy
  }
}

void ClassDef::showUsedFiles(OutputList &ol)
QCString ClassDef::generatedFromFiles() const
{
  ol.pushGeneratorState();
  ol.disable(OutputGenerator::Man);

  QCString result;
  SrcLangExt lang = getLanguage();
  ol.writeRuler();
  if (lang==SrcLangExt_Fortran)
  {
    ol.parseText(theTranslator->trGeneratedFromFilesFortran(
    result = theTranslator->trGeneratedFromFilesFortran(
          getLanguage()==SrcLangExt_ObjC && m_impl->compType==Interface ? Class : m_impl->compType,
          m_impl->files.count()==1));
          m_impl->files.count()==1);
  }
  else if (isJavaEnum())
  {
    ol.parseText(theTranslator->trEnumGeneratedFromFiles(m_impl->files.count()==1));
    result = theTranslator->trEnumGeneratedFromFiles(m_impl->files.count()==1);
  }
  else if (m_impl->compType==Service)
  {
    ol.parseText(theTranslator->trServiceGeneratedFromFiles(m_impl->files.count()==1));
    result = theTranslator->trServiceGeneratedFromFiles(m_impl->files.count()==1);
  }
  else if (m_impl->compType==Singleton)
  {
    ol.parseText(theTranslator->trSingletonGeneratedFromFiles(m_impl->files.count()==1));
    result = theTranslator->trSingletonGeneratedFromFiles(m_impl->files.count()==1);
  }
  else
  {
    ol.parseText(theTranslator->trGeneratedFromFiles(
    result = theTranslator->trGeneratedFromFiles(
          getLanguage()==SrcLangExt_ObjC && m_impl->compType==Interface ? Class : m_impl->compType,
          m_impl->files.count()==1));  
          m_impl->files.count()==1);
  }
  return result;
}

  bool first=TRUE;
  const char *file = m_impl->files.first();
  while (file)
void ClassDef::showUsedFiles(OutputList &ol)
{
    bool ambig;
    FileDef *fd=findFileDef(Doxygen::inputNameDict,file,ambig);
    if (fd)
  ol.pushGeneratorState();
  ol.disable(OutputGenerator::Man);


  ol.writeRuler();
  ol.parseText(generatedFromFiles());

  bool first=TRUE;
  FileDef *fd = m_impl->files.first();
  while (fd)
  {
    if (first)
    {
@@ -1131,18 +1130,16 @@ void ClassDef::showUsedFiles(OutputList &ol)
    ol.popGeneratorState();

    ol.endItemListItem();
    }
    file=m_impl->files.next();

    fd=m_impl->files.next();
  }
  if (!first) ol.endItemList();

  ol.popGeneratorState();
}


void ClassDef::writeInheritanceGraph(OutputList &ol)
int ClassDef::countInheritanceNodes()
{
  // count direct inheritance relations
  int count=0;
  BaseClassDef *ibcd;
  if (m_impl->inheritedBy)
@@ -1165,7 +1162,13 @@ void ClassDef::writeInheritanceGraph(OutputList &ol)
      ibcd=m_impl->inherits->next();
    }
  }
  return count;
}

void ClassDef::writeInheritanceGraph(OutputList &ol)
{
  // count direct inheritance relations
  int count=countInheritanceNodes();

  bool renderDiagram = FALSE;
  if (Config_getBool("HAVE_DOT") &&
@@ -1322,6 +1325,24 @@ void ClassDef::writeCollaborationGraph(OutputList &ol)
  }
}

QCString ClassDef::includeStatement() const
{
  SrcLangExt lang = getLanguage();
  bool isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
  if (isIDLorJava)
  {
    return "import";
  }
  else if (isObjectiveC())
  {
    return "#import ";
  }
  else
  {
    return "#include ";
  }
}

void ClassDef::writeIncludeFiles(OutputList &ol)
{
  if (m_impl->incInfo /*&& Config_getBool("SHOW_INCLUDE_FILES")*/)
@@ -1335,20 +1356,9 @@ void ClassDef::writeIncludeFiles(OutputList &ol)
    {
      ol.startParagraph();
      ol.startTypewriter();
      ol.docify(includeStatement());
      SrcLangExt lang = getLanguage();
      bool isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
      if (isIDLorJava)
      {
        ol.docify("import ");
      }
      else if (isObjectiveC())
      {
        ol.docify("#import ");
      }
      else
      {
        ol.docify("#include ");
      }
      if (m_impl->incInfo->local || isIDLorJava)
        ol.docify("\"");
      else
@@ -4743,3 +4753,8 @@ const ClassSDict *ClassDef::innerClasses() const
  return m_impl->innerClasses;
}

const FileList &ClassDef::usedFiles() const
{
  return m_impl->files;
}
+8 −4
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ class ClassList;
class ClassSDict;
class OutputList;
class FileDef;
class FileList;
class BaseClassList;
class NamespaceDef;
class MemberDef;
@@ -125,9 +126,6 @@ class ClassDef : public Definition
    /** returns TRUE if this class has documentation */
    bool hasDocumentation() const;

    /** returns TRUE if this class has a brief description */
    bool hasBriefDescription() const;

    /** returns TRUE if this class has a non-empty detailed description */
    bool hasDetailedDescription() const;

@@ -310,6 +308,11 @@ class ClassDef : public Definition
    const ClassSDict *innerClasses() const;
    QCString title() const;

    QCString generatedFromFiles() const;
    const FileList &usedFiles() const;

    QCString includeStatement() const;

    //-----------------------------------------------------------------------------------
    // --- setters ----
    //-----------------------------------------------------------------------------------
@@ -318,7 +321,7 @@ class ClassDef : public Definition
    void insertSubClass(ClassDef *,Protection p,Specifier s,const char *t=0);
    void setIncludeFile(FileDef *fd,const char *incName,bool local,bool force); 
    void insertMember(MemberDef *);
    void insertUsedFile(const char *);
    void insertUsedFile(FileDef *);
    bool addExample(const char *anchor,const char *name, const char *file);
    void mergeCategory(ClassDef *category);
    void setNamespace(NamespaceDef *nd);
@@ -375,6 +378,7 @@ class ClassDef : public Definition
    void addGroupedInheritedMembers(OutputList &ol,MemberListType lt,
                              ClassDef *inheritedFrom,const QCString &inheritId);
    int countMembersIncludingGrouped(MemberListType lt,ClassDef *inheritedFrom,bool additional);
    int countInheritanceNodes();
    
    bool visited;

+1679 −224

File changed.

Preview size limit exceeded, changes collapsed.

+183 −0
Original line number Diff line number Diff line
#ifndef CONTEXT_H
#define CONTEXT_H

#include "types.h"
#include "template.h"

class Definition;
class ClassDef;
class ClassSDict;
class BaseClassList;
class PageDef;
class GroupDef;
class NamespaceDef;
@@ -21,6 +23,11 @@ class PageSDict;
class GroupSDict;
class GroupDef;
class GroupList;
struct IncludeInfo;
class MemberList;
class MemberDef;
struct Argument;
class ArgumentList;

//----------------------------------------------------

@@ -72,6 +79,42 @@ class TranslateContext : public TemplateStructIntf

//----------------------------------------------------

class UsedFilesContext : public TemplateListIntf
{
  public:
    UsedFilesContext(ClassDef *cd);
   ~UsedFilesContext();

    // TemplateListIntf
    virtual int count() const;
    virtual TemplateVariant at(int index) const;
    virtual TemplateListIntf::ConstIterator *createIterator() const;

    void addFile(FileDef *fd);

  private:
    class Private;
    Private *p;
};

//----------------------------------------------------

class IncludeInfoContext : public TemplateStructIntf
{
  public:
    IncludeInfoContext(IncludeInfo *,SrcLangExt lang);
   ~IncludeInfoContext();

    // TemplateStructIntf methods
    virtual TemplateVariant get(const char *name) const;

  private:
    class Private;
    Private *p;
};

//----------------------------------------------------

class ClassContext : public TemplateStructIntf
{
  public:
@@ -150,6 +193,23 @@ class PageContext : public TemplateStructIntf
    Private *p;
};

//----------------------------------------------------

class MemberContext : public TemplateStructIntf
{
  public:
    MemberContext(MemberDef *);
   ~MemberContext();

    // TemplateStructIntf methods
    virtual TemplateVariant get(const char *name) const;

  private:
    class Private;
    Private *p;
};


//----------------------------------------------------

class ModuleContext : public TemplateStructIntf
@@ -168,6 +228,26 @@ class ModuleContext : public TemplateStructIntf

//----------------------------------------------------

class NestedClassListContext : public TemplateListIntf
{
  public:
    NestedClassListContext();
   ~NestedClassListContext();

    // TemplateListIntf
    virtual int  count() const;
    virtual TemplateVariant at(int index) const;
    virtual TemplateListIntf::ConstIterator *createIterator() const;

    void append(ClassDef *cd);

  private:
    class Private;
    Private *p;
};

//----------------------------------------------------

class ClassListContext : public TemplateListIntf
{
  public:
@@ -530,6 +610,109 @@ class ExampleListContext : public TemplateStructIntf

//----------------------------------------------------

class InheritanceNodeContext : public TemplateStructIntf
{
  public:
    InheritanceNodeContext(ClassDef *cd,const QCString &name);
   ~InheritanceNodeContext();

    // TemplateStructIntf methods
    virtual TemplateVariant get(const char *name) const;

  private:
    class Private;
    Private *p;
};

//----------------------------------------------------

class InheritanceListContext : public TemplateListIntf
{
  public:
    InheritanceListContext(const BaseClassList *list,bool baseClasses);
   ~InheritanceListContext();

    // TemplateListIntf
    virtual int  count() const;
    virtual TemplateVariant at(int index) const;
    virtual TemplateListIntf::ConstIterator *createIterator() const;

  private:
    class Private;
    Private *p;
};

//----------------------------------------------------

class MemberListContext : public TemplateListIntf
{
  public:
    MemberListContext(const MemberList *ml);
   ~MemberListContext();

    // TemplateListIntf
    virtual int  count() const;
    virtual TemplateVariant at(int index) const;
    virtual TemplateListIntf::ConstIterator *createIterator() const;

  private:
    class Private;
    Private *p;
};

//----------------------------------------------------

class MemberListInfoContext : public TemplateStructIntf
{
  public:
    MemberListInfoContext(const MemberList *ml,const QCString &title,
                          const QCString &subtitle=QCString());
   ~MemberListInfoContext();

    // TemplateStructIntf methods
    virtual TemplateVariant get(const char *name) const;

  private:
    class Private;
    Private *p;
};

//----------------------------------------------------

class ArgumentContext : public TemplateStructIntf
{
  public:
    ArgumentContext(const Argument *arg);
   ~ArgumentContext();

    // TemplateStructIntf methods
    virtual TemplateVariant get(const char *name) const;

  private:
    class Private;
    Private *p;
};

//----------------------------------------------------

class ArgumentListContext : public TemplateListIntf
{
  public:
    ArgumentListContext(const ArgumentList *al);
   ~ArgumentListContext();

    // TemplateListIntf
    virtual int  count() const;
    virtual TemplateVariant at(int index) const;
    virtual TemplateListIntf::ConstIterator *createIterator() const;

  private:
    class Private;
    Private *p;
};

//----------------------------------------------------

void generateOutputViaTemplate();

#endif
+6 −0
Original line number Diff line number Diff line
@@ -1876,4 +1876,10 @@ void Definition::_setSymbolName(const QCString &name)
  m_symbolName=name; 
}

bool Definition::hasBriefDescription() const
{
  static bool briefMemberDesc = Config_getBool("BRIEF_MEMBER_DESC");
  return !briefDescription().isEmpty() && briefMemberDesc;
}

Loading