summaryrefslogtreecommitdiffstats
path: root/src/vhdldocgen.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vhdldocgen.h')
-rw-r--r--src/vhdldocgen.h298
1 files changed, 114 insertions, 184 deletions
diff --git a/src/vhdldocgen.h b/src/vhdldocgen.h
index 45ceb06..5b09bae 100644
--- a/src/vhdldocgen.h
+++ b/src/vhdldocgen.h
@@ -1,10 +1,12 @@
/******************************************************************************
*
+ *
+ *
* Copyright (C) 1997-2014 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
+ * 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.
*
@@ -16,31 +18,27 @@
#ifndef VHDLDOCGEN_H
#define VHDLDOCGEN_H
-/**
- * This class implements functions for parsing and generating
+/**
+ * This class implements functions for parsing and generating
* vhdl documents
*/
#include <qdict.h>
+#include <qlist.h>
#include <qcstring.h>
-#include "layout.h"
-#include "arguments.h"
-#include "entry.h"
+#include "memberlist.h"
+
+class QStringList;
class Entry;
+class ClassSDict;
+class FileStorage;
+class EntryNav;
class ClassDef;
-class MemberList;
class MemberDef;
-class FTextStream;
-class OutputList;
-class Definition;
-class GroupDef;
-class FileDef;
-class NamespaceDef;
struct Argument;
-/** Class for generating documentation specific for VHDL */
-class VhdlDocGen
+class VhdlDocGen
{
public:
@@ -51,7 +49,6 @@ class VhdlDocGen
ARCHITECTURECLASS, // Overlays: Private
PACKAGECLASS // Overlays: Package
};
-
enum VhdlKeyWords
{
LIBRARY=1,
@@ -71,11 +68,12 @@ class VhdlDocGen
USE,
PROCESS,
PORT,
- UNITS,
+ DOCUMENT, //18 0x12
+ UNITS,
GENERIC,
- INSTANTIATION,
+ COMPONENT_INST,
GROUP,
- VFILE,
+ VFILE,
SHAREDVARIABLE,
CONFIG,
ALIAS,
@@ -86,16 +84,18 @@ class VhdlDocGen
VhdlDocGen();
virtual ~VhdlDocGen();
static void init();
- static QCString convertFileNameToClassName(QCString name);
- // --- used by vhdlscanner.l -----------
-
- static bool isSubClass(ClassDef* cd,ClassDef *scd, bool followInstances,int level);
+ // --- used by vhdlscanner.l -----------
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>& ,
+ QList<Argument>& ,
QCString& name,
QCString& ret,
bool doc=false);
@@ -104,9 +104,15 @@ class VhdlDocGen
static void computeVhdlComponentRelations();
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,
+ static MemberDef* findMember(const QCString& className,
const QCString& memName);
static void findAllPackages(const QCString& className,
QDict<QCString>&);
@@ -114,44 +120,73 @@ class VhdlDocGen
const QCString& key,
MemberListType 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 bool isConstraint(const MemberDef *mdef);
- static bool isConfig(const MemberDef *mdef);
- static bool isAlias(const MemberDef *mdef);
- static bool isLibrary(const MemberDef *mdef);
- static bool isGeneric(const MemberDef *mdef);
- static bool isPort(const MemberDef *mdef);
- static bool isComponent(const MemberDef *mdef);
- static bool isPackage(const MemberDef *mdef);
- static bool isEntity(const MemberDef *mdef);
- static bool isConstant(const MemberDef *mdef);
- static bool isVType(const MemberDef *mdef);
- static bool isSubType(const MemberDef *mdef);
- static bool isVhdlFunction(const MemberDef *mdef);
- static bool isProcess(const MemberDef *mdef);
- static bool isSignal(const MemberDef *mdef);
- static bool isAttribute(const MemberDef *mdef);
- static bool isSignals(const MemberDef *mdef);
- static bool isProcedure(const MemberDef *mdef);
- static bool isRecord(const MemberDef *mdef);
- static bool isArchitecture(const MemberDef *mdef);
- static bool isUnit(const MemberDef *mdef);
- static bool isPackageBody(const MemberDef *mdef);
- static bool isVariable(const MemberDef *mdef);
- static bool isFile(const MemberDef *mdef);
- static bool isGroup(const MemberDef *mdef);
- static bool isCompInst(const MemberDef *mdef);
- static bool isMisc(const MemberDef *mdef);
+ //static void writeVhdlComponentList(OutputList &ol,int type);
+ static bool isMisc(const MemberDef *mdef)
+ { return mdef->getMemberSpecifiers()==VhdlDocGen::MISCELLANEOUS; }
+ static bool isConfig(const MemberDef *mdef)
+ { return mdef->getMemberSpecifiers()==VhdlDocGen::CONFIG; }
+ static bool isAlias(const MemberDef *mdef)
+ { return mdef->getMemberSpecifiers()==VhdlDocGen::ALIAS; }
+ 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; }
+ static bool isVariable(const MemberDef *mdef)
+ { return mdef->getMemberSpecifiers()==VhdlDocGen::SHAREDVARIABLE; }
+ static bool isFile(const MemberDef *mdef)
+ { return mdef->getMemberSpecifiers()==VhdlDocGen::VFILE; }
+ static bool isGroup(const MemberDef *mdef)
+ { return mdef->getMemberSpecifiers()==VhdlDocGen::GROUP; }
+ static bool isCompInst(const MemberDef *mdef)
+ { return mdef->getMemberSpecifiers()==VhdlDocGen::COMPONENT_INST; }
//-----------------------------------------------------
// translatable items
-
+
static QCString trTypeString(uint64 type);
static QCString trVhdlType(uint64 type,bool sing=true);
@@ -176,10 +211,17 @@ class VhdlDocGen
// trFunctions
static QCString trFunctionAndProc();
+
//-----------------------------------------------------
static void prepareComment(QCString&);
- static void formatString(const QCString&,OutputList& ol,const MemberDef*);
+ 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(const QCString&,OutputList& ol,const MemberDef*);
static void writeFunctionProto(OutputList& ol,const ArgumentList *al,const MemberDef*);
@@ -188,6 +230,10 @@ class VhdlDocGen
static bool 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 bool writeVHDLTypeDocumentation(const MemberDef* mdef, const Definition* d, OutputList &ol);
static void writeVhdlDeclarations(MemberList*,OutputList&,GroupDef*,ClassDef*,FileDef*,NamespaceDef*);
@@ -203,144 +249,28 @@ class VhdlDocGen
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
const char *title,const char *subtitle,bool showEnumValues,int type);
- static bool writeClassType(ClassDef *&,OutputList &ol ,QCString & cname);
-
- static QCString convertArgumentListToString(const ArgumentList* al,bool f);
- static QCString getProcessNumber();
- static QCString getRecordNumber();
-
static QCString getClassName(const ClassDef*);
+ static bool writeClassType(ClassDef *,OutputList &ol ,QCString & cname);
+ static void adjustRecordMember(MemberDef *mdef);
+ static bool writeDoc(EntryNav* rootNav);
+
+ static void writeLink(const MemberDef* mdef,OutputList &ol);
+ static void adjustMemberName(QCString& nn);
+ static bool membersHaveSpecificType(MemberList *ml,uint64 type);
+ static void startFonts(const QCString& q, const char *keyword,OutputList& ol);
static bool isNumber(const QCString& s);
static QCString getProtectionName(int prot);
-
- static void parseUCF(const char* input,Entry* entity,QCString f,bool vendor);
- static bool findConstraintFile( LayoutNavEntry *lne);
-
- static ClassDef* findArchitecture(const ClassDef *cd);
- static ClassDef* findArchitecture(QCString identifier, QCString entity_name);
-
-
- static void writeSource(MemberDef *mdef,OutputList& ol,QCString & cname);
- static void writeAlphbeticalClass(OutputList& ol,const ClassDef* cd,const QCString &);
-
- static QCString parseForConfig(QCString & entity,QCString & arch);
- static QCString parseForBinding(QCString & entity,QCString & arch);
- static void addBaseClass(ClassDef* cd,ClassDef *ent);
- static ClassDef* findVhdlClass(const char *className );
-
- static void writeOverview(OutputList &ol);
- static void writeOverview();
-
- // flowcharts
- static void createFlowChart(const MemberDef*);
- //static void addFlowImage(const FTextStream &,const QCString &);
-
- static void setFlowMember( const MemberDef *flowMember);
- static const MemberDef *getFlowMember();
-
- static bool isVhdlClass (const Entry *cu)
- {
- return cu->spec==VhdlDocGen::ENTITY ||
- cu->spec==VhdlDocGen::PACKAGE ||
- cu->spec==VhdlDocGen::ARCHITECTURE ||
- cu->spec==VhdlDocGen::PACKAGE_BODY;
- }
-
-
+ static void writeSource(MemberDef *mdef,OutputList& ol,QCString &);
+ static void writeRecorUnit(QCString & largs,OutputList& ol ,const MemberDef *mdef);
private:
- static void findAllArchitectures(QList<QCString>& ql,const ClassDef *cd);
+ static void getFuncParams(QList<Argument>&, const char* str);
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 writeStringLink(const MemberDef *mdef,QCString mem,OutputList& ol);
- static void writeRecUnitDocu( const MemberDef *md, OutputList& ol,QCString largs);
- static void writeRecorUnit(QCString & largs,OutputList& ol ,const MemberDef *mdef);
-};
-
-//-------------------------------------------------------------------------------------------------------------------
-//-------------- VHDL Flowcharts -------------------------------------------------------------------------------
-//-------------------------------------------------------------------------------------------------------------------
-
-
-//#define DEBUGFLOW
-
-class FlowChart
-{
- public:
- enum nodeTypes {
- IF_NO = 1<<1,
- ELSIF_NO = 1<<2,
- ELSE_NO = 1<<3,
- CASE_NO = 1<<4,
- WHEN_NO = 1<<5,
- EXIT_NO = 1<<6,
- END_NO = 1<<7,
- TEXT_NO = 1<<8,
- START_NO = 1<<9,
- ENDIF_NO = 1<<10,
- FOR_NO = 1<<11,
- WHILE_NO = 1<<12,
- END_LOOP = 1<<13,
- END_CASE = 1<<14,
- VARIABLE_NO = 1<<15,
- RETURN_NO = 1<<16,
- LOOP_NO = 1<<17,
- NEXT_NO = 1<<18,
- EMPTY_NO = 1<<19,
- COMMENT_NO = 1<<20,
- BEGIN_NO = 1<<21
- };
+ static void writeCodeFragment(MemberDef *mdef,OutputList& ol);
- //---------- create svg -------------------------------------------------------------
- static void createSVG();
- static void startDot(FTextStream &t);
- static void endDot(FTextStream &t);
- static void codify(FTextStream &t,const char *str);
- static void writeShape(FTextStream &t,const FlowChart* fl);
- static void writeEdge(FTextStream &t,int fl_from,int fl_to,int i,bool bFrom=FALSE,bool bTo=FALSE);
- static void writeEdge(FTextStream &t,const FlowChart* fl_from,const FlowChart* fl_to,int i);
- static void writeFlowLinks(FTextStream &t);
-
- static QCString getNodeName(int n);
- static void colTextNodes();
-
- static int getNextTextLink(const FlowChart* fl,uint index);
- static int getNextIfLink(const FlowChart*,uint);
- static int getNextNode(int,int);
- static int findNode(int index,int stamp,int type);
- static int findNode(int index,int type);
- static int findNextLoop(int j,int stamp);
- static int findPrevLoop(int j,int stamp,bool endif=FALSE);
- static int findLabel(int j,QCString &);
- static void delFlowList();
- static const char* getNodeType(int c);
-
- static void addFlowChart(int type,const char* text,const char* exp,const char * label=NULL);
- static void moveToPrevLevel();
- static int getTimeStamp();
- static void writeFlowChart();
- static void alignFuncProc(QCString & q,const ArgumentList* al,bool isFunc);
- static QCString convertNameToFileName();
- static void printNode(const FlowChart* n);
- static void printFlowTree();
- static void buildCommentNodes(FTextStream &t);
- static void alignCommentNode(FTextStream &t,QCString com);
-
- static QList<FlowChart> flowList;
-
- FlowChart(int typ,const char* t,const char* ex,const char* label=0);
- ~FlowChart();
-
-private:
- int id;
- int stamp;
- int type;
-
- int line;
-
- QCString label;
- QCString text;
- QCString exp;
};
#endif