diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2008-01-17 18:56:38 (GMT) |
---|---|---|
committer | Dimitri van Heesch <dimitri@stack.nl> | 2008-01-17 18:56:38 (GMT) |
commit | f1103ed882b5739e7f16cfd69527bde6d6d96dfa (patch) | |
tree | 05e55417a750c1275c9139b7952de6941db168dd /src/vhdldocgen.h | |
parent | c9fcb1845bd7c5080abfee1be4070130bbdd38c2 (diff) | |
download | Doxygen-f1103ed882b5739e7f16cfd69527bde6d6d96dfa.zip Doxygen-f1103ed882b5739e7f16cfd69527bde6d6d96dfa.tar.gz Doxygen-f1103ed882b5739e7f16cfd69527bde6d6d96dfa.tar.bz2 |
Release-1.5.4-20080101
Diffstat (limited to 'src/vhdldocgen.h')
-rw-r--r-- | src/vhdldocgen.h | 256 |
1 files changed, 256 insertions, 0 deletions
diff --git a/src/vhdldocgen.h b/src/vhdldocgen.h new file mode 100644 index 0000000..e33f01c --- /dev/null +++ b/src/vhdldocgen.h @@ -0,0 +1,256 @@ +/****************************************************************************** + * + * + * + * Copyright (C) 1997-2008 by Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * Documents produced by Doxygen are derivative works derived from the + * input used in their production; they are not affected by this license. + * + */ + +#ifndef VHDLDOCGEN_H +#define VHDLDOCGEN_H + +/** + * This class implements functions for parsing and generating + * vhdl documents + */ + +#include <qdict.h> +#include <qcstring.h> + +#include "memberlist.h" + +class QStringList; +class Entry; +class ClassSDict; +class FileStorage; +class EntryNav; +class ClassDef; +class MemberDef; + +class VhdlDocGen +{ + public: + + enum VhdlClasses // Overlays: Protection + { + ENTITYCLASS, // Overlays: Public + PACKBODYCLASS, // Overlays: Protected + ARCHITECTURECLASS, // Overlays: Private + PACKAGECLASS // Overlays: Package + }; + enum VhdlKeyWords + { + LIBRARY=1, + ENTITY, + PACKAGE_BODY, + ARCHITECTURE, + PACKAGE, + ATTRIBUTE, + SIGNAL, + COMPONENT, + CONSTANT, + TYPE, + SUBTYPE, + FUNCTION, + RECORD, + PROCEDURE, + USE, + PROCESS, + PORT, + DOCUMENT, //18 0x12 + UNITS, + GENERIC, + PORTMAP + }; + + VhdlDocGen(); + virtual ~VhdlDocGen(); + static void init(); + + // --- used by vhdlscanner.l ----------- + static Entry* getEntryAtLine(const Entry* e,int line); + static QCString getIndexWord(const char* ,int index); + static bool foundInsertedComponent(const QCString& name,Entry* root); + static bool deleteCharRev(QCString &s,char c); + static bool isFunctionProto(QCString& ss); + static Entry* findFunction(Entry* func); + static void deleteAllChars(QCString &s,char c); + static bool getSigName(QList<QCString>& ql, + const char* str, + QCString& buffer); + static bool getSigTypeName(QList<QCString>& ql, + const char* str, + QCString& buffer); + static void parseFuncProto(const char* text, + QList<Argument>& , + QCString& name, + QCString& ret, + bool doc=false); + // ----------------------------------- + + static void debugClassName(ClassSDict*); + //static void MergeFuncDoc(Entry* p,Entry* root); + + static void computeVhdlComponentRelations(const QDict<EntryNav>&,FileStorage*); + + //static void addVariableToComponents(EntryNav *rootNav,ClassDef *cd, MemberDef::MemberType mtype, const QCString &name, bool fromAnnScope,MemberDef *fromAnnMemb,Protection prot,bool related); + + static QCString* findKeyWord(const QCString& word); + static void addFuncDoc(EntryNav* root); + + //static void MapArchitecturesToEntity(Entry* cur_root); + + //static void MapComponentToEntity(const ClassSDict*); + + static ClassDef* findComponent(int type); + static ClassDef* getPackageName(const QCString& name); + static MemberDef* findMember(const QCString& className, + const QCString& memName); + static void findAllPackages(const QCString& className, + QDict<QCString>&); + static MemberDef* findMemberDef(ClassDef* cd, + const QCString& key, + MemberList::ListType type); + static ClassDef *getClass(const char *name); + static Entry* findFunction(Entry* root,Entry* func); + static MemberDef* findFunction(const QList<Argument> &ql, + const QCString& name, + const QCString& package, bool type); + static bool compareString(const QCString& s1, + const QCString& s2); + static QCString getClassTitle(const ClassDef*); + static void writeInlineClassLink(const ClassDef*, + OutputList &ol); + + //static void writeVhdlComponentList(OutputList &ol,int type); + + static bool isLibrary(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::LIBRARY; } + static bool isGeneric(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::GENERIC; } + static bool isPort(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::PORT; } + static bool isComponent(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::COMPONENT; } + static bool isPackage(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::USE; } + static bool isEntity(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::ENTITY; } + static bool isConstant(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::CONSTANT; } + static bool isVType(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::TYPE; } + static bool isSubType(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::SUBTYPE; } + static bool isVhdlFunction(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::FUNCTION; } + static bool isProcess(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::PROCESS; } + static bool isSignal(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::SIGNAL; } + static bool isAttribute(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::ATTRIBUTE; } + static bool isSignals(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::SIGNAL; } + static bool isProcedure(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::PROCEDURE; } + static bool isRecord(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::RECORD; } + static bool isArchitecture(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::ARCHITECTURE; } + static bool isUnit(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::UNITS; } + static bool isPackageBody(const MemberDef *mdef) + { return mdef->getMemberSpecifiers()==VhdlDocGen::PACKAGE_BODY; } + + //----------------------------------------------------- + // translatable items + + static QCString trTypeString(int type); + static QCString trVhdlType(int type,bool sing=true); + + // trClassHierarchy. + static QCString trDesignUnitHierarchy(); + + // trCompoundList + static QCString trDesignUnitList(); + + // trCompoundMembers. + static QCString trDesignUnitMembers(); + + // trCompoundListDescription + static QCString trDesignUnitListDescription(); + + // trCompounds + static QCString trDesignUnits(); + + // trCompoundIndex + static QCString trDesignUnitIndex(); + + // trFunctions + static QCString trFunctionAndProc(); + + + //----------------------------------------------------- + + static void prepareComment(QCString&); + static QCString getpackname(const char* text, + const char* word, + const char* patter); + static void parseProcessProto(const char* text, + QCString&, + QStringList&); + static void formatString(QCString&,OutputList& ol,const MemberDef*); + + static void writeFormatString(QCString&,OutputList& ol,const MemberDef*); + static void writeFunctionProto(OutputList& ol,const ArgumentList *al,const MemberDef*); + static void writeProcessProto(OutputList& ol,const ArgumentList *al,const MemberDef*); + static void writeProcedureProto(OutputList& ol, const ArgumentList *al,const MemberDef*); + static void writeFuncProcDocu(const MemberDef *mdef, OutputList& ol,const ArgumentList* al,bool type=false); + static void writeRecordProto(const MemberDef *mdef, OutputList& ol,const ArgumentList *al); + + static QCString convertArgumentListToString(const ArgumentList* al,bool f); + static QCString getProcessNumber(); + static QCString getRecordNumber(); + + static void writeVHDLTypeDocumentation(const MemberDef* mdef, const Definition* d, OutputList &ol); + + static void writeVhdlDeclarations(MemberList*,OutputList&,GroupDef*,ClassDef*); + + static void writeVHDLDeclaration(MemberDef* mdef,OutputList &ol, + ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd, + bool inGroup); + + static void writePlainVHDLDeclarations(MemberList* ml,OutputList &ol, + ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,int specifier); + + static void writeVHDLDeclarations(MemberList* ml,OutputList &ol, + ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd, + const char *title,const char *subtitle,bool showEnumValues,int type); + + static QCString getClassName(const ClassDef*); + static bool writeClassType(ClassDef *&,OutputList &ol ,QCString & cname); + static void adjustRecordMember(MemberDef *mdef); + static bool writeDoc(EntryNav* rootNav); + + private: + static void getFuncParams(QList<Argument>&, const char* str); + static bool isNumber(const QCString& s); + static void startFonts(const QCString& q, char *keyword,OutputList& ol); + static bool compareArgList(ArgumentList*,ArgumentList*); + static void writeVhdlLink(const ClassDef* cdd ,OutputList& ol,QCString& type,QCString& name,QCString& beh); + static void findAllArchitectures(QList<QCString>& ql,const ClassDef *cd); + static void writeLink(const MemberDef* mdef,OutputList &ol); + static void writeStringLink(const MemberDef *mdef,QCString mem,OutputList& ol); +}; + +#endif |