Loading src/CMakeLists.txt +24 −4 Original line number Original line Diff line number Diff line Loading @@ -36,6 +36,21 @@ file(GENERATE OUTPUT ${GENERATED_SRC}/version.cpp ) ) set_source_files_properties(${GENERATED_SRC}/version.cpp PROPERTIES GENERATED 1) set_source_files_properties(${GENERATED_SRC}/version.cpp PROPERTIES GENERATED 1) # configvalues.h add_custom_command( COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -maph ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configvalues.h DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py OUTPUT ${GENERATED_SRC}/configvalues.h ) set_source_files_properties(${GENERATED_SRC}/configvalues.h PROPERTIES GENERATED 1) # configvalues.cpp add_custom_command( COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -maps ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configvalues.cpp DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py OUTPUT ${GENERATED_SRC}/configvalues.cpp ) set_source_files_properties(${GENERATED_SRC}/configvalues.cpp PROPERTIES GENERATED 1) # configoptions.cpp # configoptions.cpp add_custom_command( add_custom_command( Loading Loading @@ -102,29 +117,34 @@ FLEX_TARGET(commentcnv commentcnv.l ${GENERATED_SRC}/commentcnv.cpp FLEX_TARGET(commentscan commentscan.l ${GENERATED_SRC}/commentscan.cpp COMPILE_FLAGS "-PcommentscanYY") FLEX_TARGET(commentscan commentscan.l ${GENERATED_SRC}/commentscan.cpp COMPILE_FLAGS "-PcommentscanYY") FLEX_TARGET(constexp constexp.l ${GENERATED_SRC}/constexp.cpp COMPILE_FLAGS "-PconstexpYY") FLEX_TARGET(constexp constexp.l ${GENERATED_SRC}/constexp.cpp COMPILE_FLAGS "-PconstexpYY") FLEX_TARGET(xmlcode xmlcode.l ${GENERATED_SRC}/xmlcode.cpp COMPILE_FLAGS "-PxmlcodeYY") FLEX_TARGET(xmlcode xmlcode.l ${GENERATED_SRC}/xmlcode.cpp COMPILE_FLAGS "-PxmlcodeYY") FLEX_TARGET(config config.l ${GENERATED_SRC}/config.cpp COMPILE_FLAGS "-PconfigYY") FLEX_TARGET(configimpl configimpl.l ${GENERATED_SRC}/configimpl.cpp COMPILE_FLAGS "-PconfigimplYY") FLEX_TARGET(VPreLex VPreLex.l ${GENERATED_SRC}/VPreLex.cpp COMPILE_FLAGS "-PVPreLex") FLEX_TARGET(VPreLex VPreLex.l ${GENERATED_SRC}/VPreLex.cpp COMPILE_FLAGS "-PVPreLex") #BISON_TARGET(vhdlparser vhdlparser.y ${GENERATED_SRC}/vhdlparser.cpp COMPILE_FLAGS "${YACC_FLAGS} -l -p vhdlscannerYY") #BISON_TARGET(constexp constexp.y ${GENERATED_SRC}/ce_parse.cpp COMPILE_FLAGS "${YACC_FLAGS} -l -p constexpYY") BISON_TARGET(vhdlparser vhdlparser.y ${GENERATED_SRC}/vhdlparser.cpp COMPILE_FLAGS "-l -p vhdlscannerYY") BISON_TARGET(vhdlparser vhdlparser.y ${GENERATED_SRC}/vhdlparser.cpp COMPILE_FLAGS "-l -p vhdlscannerYY") BISON_TARGET(verilogparser verilogparser.y ${GENERATED_SRC}/verilogparser.cpp COMPILE_FLAGS "-l ") BISON_TARGET(verilogparser verilogparser.y ${GENERATED_SRC}/verilogparser.cpp COMPILE_FLAGS "-l ") BISON_TARGET(constexp constexp.y ${GENERATED_SRC}/ce_parse.cpp COMPILE_FLAGS "-l -p constexpYY") BISON_TARGET(constexp constexp.y ${GENERATED_SRC}/ce_parse.cpp COMPILE_FLAGS "-l -p constexpYY") add_library(doxycfg add_library(doxycfg STATIC ${GENERATED_SRC}/lang_cfg.h ${GENERATED_SRC}/lang_cfg.h ${GENERATED_SRC}/config.cpp ${GENERATED_SRC}/configvalues.h ${GENERATED_SRC}/configimpl.cpp ${GENERATED_SRC}/configoptions.cpp ${GENERATED_SRC}/configoptions.cpp ${GENERATED_SRC}/configvalues.cpp portable.cpp portable.cpp portable_c.c portable_c.c ) ) add_library(_doxygen add_library(_doxygen STATIC # custom generated files # custom generated files ${GENERATED_SRC}/lang_cfg.h ${GENERATED_SRC}/lang_cfg.h ${GENERATED_SRC}/settings.h ${GENERATED_SRC}/settings.h ${GENERATED_SRC}/layout_default.xml.h ${GENERATED_SRC}/layout_default.xml.h ${GENERATED_SRC}/version.cpp ${GENERATED_SRC}/version.cpp ${GENERATED_SRC}/ce_parse.h ${GENERATED_SRC}/ce_parse.h ${GENERATED_SRC}/configvalues.h ${GENERATED_SRC}/resources.cpp ${GENERATED_SRC}/resources.cpp # generated by flex/bison # generated by flex/bison ${GENERATED_SRC}/scanner.cpp ${GENERATED_SRC}/scanner.cpp Loading src/VPreProc.cpp +77 −15 Original line number Original line Diff line number Diff line Loading @@ -122,7 +122,11 @@ public: //************************************************************************* //************************************************************************* /// Data for a preprocessor instantiation. /// Data for a preprocessor instantiation. struct VPreProcImp : public VPreProcOpaque { struct VPreProcImp : public VPreProcOpaque { public: typedef list<string> StrList; typedef list<string> StrList; int getNextStateToken(string & buf); int getNextStateToken(string & buf); VPreProc* m_preprocp; ///< Object we're holding data for VPreProc* m_preprocp; ///< Object we're holding data for Loading Loading @@ -168,6 +172,7 @@ struct VPreProcImp : public VPreProcOpaque { // For defines // For defines stack<VPreDefRef> m_defRefs; // Pending definine substitution stack<VPreDefRef> m_defRefs; // Pending definine substitution stack<VPreIfEntry> m_ifdefStack; ///< Stack of true/false emitting evaluations stack<VPreIfEntry> m_ifdefStack; ///< Stack of true/false emitting evaluations unsigned m_defDepth; ///< How many `defines deep unsigned m_defDepth; ///< How many `defines deep bool m_defPutJoin; ///< Insert `` after substitution bool m_defPutJoin; ///< Insert `` after substitution Loading @@ -177,7 +182,7 @@ struct VPreProcImp : public VPreProcOpaque { // For getline() // For getline() string m_lineChars; ///< Characters left for next line string m_lineChars; ///< Characters left for next line QCString m_QC; string m_QC; string relString; string relString; Loading Loading @@ -1097,7 +1102,21 @@ int VPreProcImp::getStateToken(string& buf) { // printf("\n###################77###################################"); // printf("\n###################77###################################"); sbuffer.insert(0,"`include "); sbuffer.insert(0,"`include "); this->m_QC.append(sbuffer.data()); this->m_QC.append(sbuffer.data()); m_preprocp->include(m_lastSym); string val=m_preprocp->include(m_lastSym); int ll=this->m_finFilelinep->lineno(); //fprintf(stderr,"\n found include in line %d",ll); // string klk= m_finFilelinep->filename(); string ff= m_finFilelinep->filebasename(); struct IncDef vInc; vInc.ss=m_lastSym; vInc.incLine=ll; vInc.incText=val; vInc.incFile=ff; m_preprocp->m_include.push(vInc); sbuffer.clear(); sbuffer.clear(); goto next_tok; goto next_tok; } } Loading Loading @@ -1642,7 +1661,7 @@ string VerilogPreProc::performPreprocessing(const QFileInfo & fi,bool include) return res; return res; } } //------------------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------------------ void VerilogPreProc::include(string filename) string VerilogPreProc::include(string filename) { { QCString qcs; QCString qcs; QCString fn=filename.data(); QCString fn=filename.data(); Loading @@ -1655,7 +1674,7 @@ string VerilogPreProc::performPreprocessing(const QFileInfo & fi,bool include) if(file.isEmpty()) if(file.isEmpty()) { { cerr<<"could not open file: "<<filename.data()<<endl; cerr<<"could not open file: "<<filename.data()<<endl; return; return ""; } } else else { { Loading @@ -1668,14 +1687,16 @@ string VerilogPreProc::performPreprocessing(const QFileInfo & fi,bool include) VPreLex* pre=idatap->m_lexp; VPreLex* pre=idatap->m_lexp; struct yy_buffer_state * buz = pre->currentBuffer(); struct yy_buffer_state * buz = pre->currentBuffer(); VerilogPreProc defProc; VerilogPreProc defProc; defProc.performPreprocessing(fi,false); string result = defProc.performPreprocessing(fi,false); yy_switch_to_buffer(buz); yy_switch_to_buffer(buz); // cerr << result; return result; } ///< Request a include file be processed } ///< Request a include file be processed string VerilogPreProc::defSubstitute(string substitute) string VerilogPreProc::defSubstitute(string substitute) { { // cout<<"SUBSTITUDE:"<<substitute<<endl; cout<<"SUBSTITUDE:"<<substitute<<endl; sbuffer.clear(); sbuffer.clear(); return substitute; return substitute; } ///< Return value to substitute for given post-parameter value } ///< Return value to substitute for given post-parameter value Loading Loading @@ -1785,6 +1806,7 @@ void VerilogPreProc::printDict() } } ////// ////// void VerilogPreProc::getPredefs() void VerilogPreProc::getPredefs() { { static bool firstTime=TRUE; static bool firstTime=TRUE; Loading @@ -1794,7 +1816,7 @@ void VerilogPreProc::getPredefs() // add predefined macros // add predefined macros DefineDict* preDict=VerilogPreProc::getPreDefineDict(); DefineDict* preDict=VerilogPreProc::getPreDefineDict(); char *defStr; char *defStr; QStrList &predefList = Config_getList("PREDEFINED"); QStrList &predefList = Config_getList(PREDEFINED); QStrListIterator sli(predefList); QStrListIterator sli(predefList); for (sli.toFirst();(defStr=sli.current());++sli) for (sli.toFirst();(defStr=sli.current());++sli) { { Loading Loading @@ -1907,4 +1929,44 @@ void VerilogPreProc::getPredefs() } } } } void VerilogPreProc:: insertIncludeText( string & s){ stack<IncDef> inc = this->m_include; while(!inc.empty()){ IncDef iDef=inc.top(); inc.pop(); const char * ch=s.data(); int count=0; int index=0; int nextIndex; char cc; while(count!=iDef.incLine) { cc=*ch; if(cc=='\n') { count++; if(count==(iDef.incLine-1)) break; } *ch++; index++; } *ch++; cc=*ch; nextIndex=index+1; while(cc!='\n') { *ch++; cc=*ch; nextIndex++; } s.erase(index,nextIndex-index); s.insert(index,iDef.incText); } } ////// ////// src/VPreProc.h +28 −11 Original line number Original line Diff line number Diff line Loading @@ -47,11 +47,21 @@ class VDefine; /// This defines a preprocessor. Functions are virtual so users can override them. /// This defines a preprocessor. Functions are virtual so users can override them. /// After creating, call openFile(), then getline() in a loop. The class will to the rest... /// After creating, call openFile(), then getline() in a loop. The class will to the rest... struct IncDef { string ss; string incFile; string incText; int incLine; }; class VPreProc { class VPreProc { public: public: VPreProc(); VPreProc(); void configure(VFileLine* filelinep); void configure(VFileLine* filelinep); virtual ~VPreProc(); virtual ~VPreProc(); stack<IncDef> m_include; // STATE // STATE private: private: Loading Loading @@ -102,7 +112,7 @@ public: // CALLBACK METHODS // CALLBACK METHODS // This probably will want to be overridden for given child users of this class. // This probably will want to be overridden for given child users of this class. virtual void comment(string cmt) = 0; ///< Comment detected (if keepComments==2) virtual void comment(string cmt) = 0; ///< Comment detected (if keepComments==2) virtual void include(string filename) = 0; ///< Request a include file be processed virtual string include(string filename) = 0; ///< Request a include file be processed virtual void define(string name, string value, string params) = 0; ///< `define without any parameters virtual void define(string name, string value, string params) = 0; ///< `define without any parameters virtual void undef(string name) = 0; ///< Remove a definition virtual void undef(string name) = 0; ///< Remove a definition virtual void undefineall() = 0; ///< Remove all non-command-line definitions virtual void undefineall() = 0; ///< Remove all non-command-line definitions Loading @@ -121,16 +131,16 @@ private: #include "qfileinfo.h" #include "qfileinfo.h" struct VPreProcImp; class VerilogPreProc: public VPreProc class VerilogPreProc: public VPreProc { { private: private: string getIndexString(const string& x,bool upper); string getIndexString(const string& x,bool upper); static DefineDict *g_fileDefineDict; static DefineDict *g_fileDefineDict; static DefineDict *g_preDefineDict; static DefineDict *g_preDefineDict; public: public: VerilogPreProc():VPreProc(){} VerilogPreProc():VPreProc(){} ~VerilogPreProc(){} ~VerilogPreProc(){} Loading @@ -154,17 +164,21 @@ class VerilogPreProc: public VPreProc g_preDefineDict=new DefineDict(); g_preDefineDict=new DefineDict(); g_preDefineDict->setAutoDelete(true); g_preDefineDict->setAutoDelete(true); } } return g_preDefineDict; return g_preDefineDict; } } VPreProcImp* getImpll() { VPreProcImp* idatap = (VPreProcImp*)(this->getImp()); return idatap; } void getPredefs(); void getPredefs(); string performPreprocessing(const QFileInfo & qf,bool include=false); string performPreprocessing(const QFileInfo & qf,bool include=false); void comment(string cmt) {} ///< Comment detected (if keepComments==2) void comment(string cmt) {} ///< Comment detected (if keepComments==2) void include(string filename) ; string include(string filename) ; void define(string name, string value, string params) ; void define(string name, string value, string params) ; Loading @@ -182,6 +196,9 @@ class VerilogPreProc: public VPreProc string defSubstitute(string substitute); string defSubstitute(string substitute); void printDict(); void printDict(); void insertIncludeText( string & text ); }; }; #endif // Guard #endif // Guard src/cite.cpp +12 −12 Original line number Original line Diff line number Diff line Loading @@ -43,18 +43,18 @@ void CiteDict::writeLatexBibliography(FTextStream &t) if (m_entries.isEmpty()) if (m_entries.isEmpty()) return; return; QCString style = Config_getString("LATEX_BIB_STYLE"); QCString style = Config_getString(LATEX_BIB_STYLE); if (style.isEmpty()) if (style.isEmpty()) style="plain"; style="plain"; QCString unit; QCString unit; if (Config_getBool("COMPACT_LATEX")) if (Config_getBool(COMPACT_LATEX)) unit = "section"; unit = "section"; else else unit = "chapter"; unit = "chapter"; t << "% Bibliography\n" t << "% Bibliography\n" "\\newpage\n" "\\newpage\n" "\\phantomsection\n"; "\\phantomsection\n"; bool pdfHyperlinks = Config_getBool("PDF_HYPERLINKS"); bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS); if (!pdfHyperlinks) if (!pdfHyperlinks) { { t << "\\clearemptydoublepage\n"; t << "\\clearemptydoublepage\n"; Loading @@ -62,7 +62,7 @@ void CiteDict::writeLatexBibliography(FTextStream &t) } } t << "\\bibliographystyle{" << style << "}\n" t << "\\bibliographystyle{" << style << "}\n" "\\bibliography{"; "\\bibliography{"; QStrList &citeDataList = Config_getList("CITE_BIB_FILES"); QStrList &citeDataList = Config_getList(CITE_BIB_FILES); int i = 0; int i = 0; const char *bibdata = citeDataList.first(); const char *bibdata = citeDataList.first(); while (bibdata) while (bibdata) Loading Loading @@ -107,7 +107,7 @@ void CiteDict::clear() bool CiteDict::isEmpty() const bool CiteDict::isEmpty() const { { QStrList &citeBibFiles = Config_getList("CITE_BIB_FILES"); QStrList &citeBibFiles = Config_getList(CITE_BIB_FILES); return (citeBibFiles.count()==0 || m_entries.isEmpty()); return (citeBibFiles.count()==0 || m_entries.isEmpty()); } } Loading @@ -120,7 +120,7 @@ void CiteDict::generatePage() const // 1. generate file with markers and citations to OUTPUT_DIRECTORY // 1. generate file with markers and citations to OUTPUT_DIRECTORY QFile f; QFile f; QCString outputDir = Config_getString("OUTPUT_DIRECTORY"); QCString outputDir = Config_getString(OUTPUT_DIRECTORY); QCString citeListFile = outputDir+"/citelist.doc"; QCString citeListFile = outputDir+"/citelist.doc"; f.setName(citeListFile); f.setName(citeListFile); if (!f.open(IO_WriteOnly)) if (!f.open(IO_WriteOnly)) Loading Loading @@ -154,7 +154,7 @@ void CiteDict::generatePage() const // so bibtex can find them without path (bibtex doesn't support paths or // so bibtex can find them without path (bibtex doesn't support paths or // filenames with spaces!) // filenames with spaces!) // Strictly not required when only latex is generated // Strictly not required when only latex is generated QStrList &citeDataList = Config_getList("CITE_BIB_FILES"); QStrList &citeDataList = Config_getList(CITE_BIB_FILES); QCString bibOutputDir = outputDir+"/"+bibTmpDir; QCString bibOutputDir = outputDir+"/"+bibTmpDir; QCString bibOutputFiles = ""; QCString bibOutputFiles = ""; QDir thisDir; QDir thisDir; Loading Loading @@ -226,13 +226,13 @@ void CiteDict::generatePage() const else if (insideBib) doc+=line+"\n"; else if (insideBib) doc+=line+"\n"; int i; int i; // determine text to use at the location of the @cite command // determine text to use at the location of the @cite command if (insideBib && (i=line.find("<a name=\"CITEREF_"))!=-1) if (insideBib && (i=line.find("name=\"CITEREF_"))!=-1) { { int j=line.find("\">["); int j=line.find("\">["); int k=line.find("]</a>"); int k=line.find("]</a>"); if (j!=-1 && k!=-1) if (j!=-1 && k!=-1) { { QCString label = line.mid(i+17,j-i-17); QCString label = line.mid(i+14,j-i-14); QCString number = line.mid(j+2,k-j-1); QCString number = line.mid(j+2,k-j-1); CiteInfo *ci = m_entries.find(label); CiteInfo *ci = m_entries.find(label); //printf("label='%s' number='%s' => %p\n",label.data(),number.data(),ci); //printf("label='%s' number='%s' => %p\n",label.data(),number.data(),ci); Loading @@ -251,11 +251,11 @@ void CiteDict::generatePage() const // 8. for latex we just copy the bib files to the output and let // 8. for latex we just copy the bib files to the output and let // latex do this work. // latex do this work. if (Config_getBool("GENERATE_LATEX")) if (Config_getBool(GENERATE_LATEX)) { { // copy bib files to the latex output dir // copy bib files to the latex output dir QStrList &citeDataList = Config_getList("CITE_BIB_FILES"); QStrList &citeDataList = Config_getList(CITE_BIB_FILES); QCString latexOutputDir = Config_getString("LATEX_OUTPUT")+"/"; QCString latexOutputDir = Config_getString(LATEX_OUTPUT)+"/"; int i = 0; int i = 0; const char *bibdata = citeDataList.first(); const char *bibdata = citeDataList.first(); while (bibdata) while (bibdata) Loading src/clangparser.cpp +8 −8 Original line number Original line Diff line number Diff line Loading @@ -64,7 +64,7 @@ class ClangParser::Private static QCString detab(const QCString &s) static QCString detab(const QCString &s) { { static int tabSize = Config_getInt("TAB_SIZE"); static int tabSize = Config_getInt(TAB_SIZE); GrowBuf out; GrowBuf out; int size = s.length(); int size = s.length(); const char *data = s.data(); const char *data = s.data(); Loading Loading @@ -157,9 +157,9 @@ void ClangParser::determineInputFilesInSameTu(QStrList &files) void ClangParser::start(const char *fileName,QStrList &filesInTranslationUnit) void ClangParser::start(const char *fileName,QStrList &filesInTranslationUnit) { { static bool clangAssistedParsing = Config_getBool("CLANG_ASSISTED_PARSING"); static bool clangAssistedParsing = Config_getBool(CLANG_ASSISTED_PARSING); static QStrList &includePath = Config_getList("INCLUDE_PATH"); static QStrList &includePath = Config_getList(INCLUDE_PATH); static QStrList clangOptions = Config_getList("CLANG_OPTIONS"); static QStrList clangOptions = Config_getList(CLANG_OPTIONS); if (!clangAssistedParsing) return; if (!clangAssistedParsing) return; //printf("ClangParser::start(%s)\n",fileName); //printf("ClangParser::start(%s)\n",fileName); p->fileName = fileName; p->fileName = fileName; Loading Loading @@ -230,7 +230,7 @@ void ClangParser::start(const char *fileName,QStrList &filesInTranslationUnit) // provide the input and and its dependencies as unsaved files so we can // provide the input and and its dependencies as unsaved files so we can // pass the filtered versions // pass the filtered versions argv[argc++]=strdup(fileName); argv[argc++]=strdup(fileName); static bool filterSourceFiles = Config_getBool("FILTER_SOURCE_FILES"); static bool filterSourceFiles = Config_getBool(FILTER_SOURCE_FILES); //printf("source %s ----------\n%s\n-------------\n\n", //printf("source %s ----------\n%s\n-------------\n\n", // fileName,p->source.data()); // fileName,p->source.data()); uint numUnsavedFiles = filesInTranslationUnit.count()+1; uint numUnsavedFiles = filesInTranslationUnit.count()+1; Loading Loading @@ -339,7 +339,7 @@ void ClangParser::switchToFile(const char *fileName) void ClangParser::finish() void ClangParser::finish() { { static bool clangAssistedParsing = Config_getBool("CLANG_ASSISTED_PARSING"); static bool clangAssistedParsing = Config_getBool(CLANG_ASSISTED_PARSING); if (!clangAssistedParsing) return; if (!clangAssistedParsing) return; if (p->tu) if (p->tu) { { Loading Loading @@ -381,7 +381,7 @@ QCString ClangParser::lookup(uint line,const char *symbol) //printf("ClangParser::lookup(%d,%s)\n",line,symbol); //printf("ClangParser::lookup(%d,%s)\n",line,symbol); QCString result; QCString result; if (symbol==0) return result; if (symbol==0) return result; static bool clangAssistedParsing = Config_getBool("CLANG_ASSISTED_PARSING"); static bool clangAssistedParsing = Config_getBool(CLANG_ASSISTED_PARSING); if (!clangAssistedParsing) return result; if (!clangAssistedParsing) return result; int sl = strlen(symbol); int sl = strlen(symbol); Loading Loading @@ -615,7 +615,7 @@ static void writeMultiLineCodeLink(CodeOutputInterface &ol, Definition *d, Definition *d, const char *text) const char *text) { { static bool sourceTooltips = Config_getBool("SOURCE_TOOLTIPS"); static bool sourceTooltips = Config_getBool(SOURCE_TOOLTIPS); TooltipManager::instance()->addTooltip(d); TooltipManager::instance()->addTooltip(d); QCString ref = d->getReference(); QCString ref = d->getReference(); QCString file = d->getOutputFileBase(); QCString file = d->getOutputFileBase(); Loading Loading
src/CMakeLists.txt +24 −4 Original line number Original line Diff line number Diff line Loading @@ -36,6 +36,21 @@ file(GENERATE OUTPUT ${GENERATED_SRC}/version.cpp ) ) set_source_files_properties(${GENERATED_SRC}/version.cpp PROPERTIES GENERATED 1) set_source_files_properties(${GENERATED_SRC}/version.cpp PROPERTIES GENERATED 1) # configvalues.h add_custom_command( COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -maph ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configvalues.h DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py OUTPUT ${GENERATED_SRC}/configvalues.h ) set_source_files_properties(${GENERATED_SRC}/configvalues.h PROPERTIES GENERATED 1) # configvalues.cpp add_custom_command( COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -maps ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configvalues.cpp DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py OUTPUT ${GENERATED_SRC}/configvalues.cpp ) set_source_files_properties(${GENERATED_SRC}/configvalues.cpp PROPERTIES GENERATED 1) # configoptions.cpp # configoptions.cpp add_custom_command( add_custom_command( Loading Loading @@ -102,29 +117,34 @@ FLEX_TARGET(commentcnv commentcnv.l ${GENERATED_SRC}/commentcnv.cpp FLEX_TARGET(commentscan commentscan.l ${GENERATED_SRC}/commentscan.cpp COMPILE_FLAGS "-PcommentscanYY") FLEX_TARGET(commentscan commentscan.l ${GENERATED_SRC}/commentscan.cpp COMPILE_FLAGS "-PcommentscanYY") FLEX_TARGET(constexp constexp.l ${GENERATED_SRC}/constexp.cpp COMPILE_FLAGS "-PconstexpYY") FLEX_TARGET(constexp constexp.l ${GENERATED_SRC}/constexp.cpp COMPILE_FLAGS "-PconstexpYY") FLEX_TARGET(xmlcode xmlcode.l ${GENERATED_SRC}/xmlcode.cpp COMPILE_FLAGS "-PxmlcodeYY") FLEX_TARGET(xmlcode xmlcode.l ${GENERATED_SRC}/xmlcode.cpp COMPILE_FLAGS "-PxmlcodeYY") FLEX_TARGET(config config.l ${GENERATED_SRC}/config.cpp COMPILE_FLAGS "-PconfigYY") FLEX_TARGET(configimpl configimpl.l ${GENERATED_SRC}/configimpl.cpp COMPILE_FLAGS "-PconfigimplYY") FLEX_TARGET(VPreLex VPreLex.l ${GENERATED_SRC}/VPreLex.cpp COMPILE_FLAGS "-PVPreLex") FLEX_TARGET(VPreLex VPreLex.l ${GENERATED_SRC}/VPreLex.cpp COMPILE_FLAGS "-PVPreLex") #BISON_TARGET(vhdlparser vhdlparser.y ${GENERATED_SRC}/vhdlparser.cpp COMPILE_FLAGS "${YACC_FLAGS} -l -p vhdlscannerYY") #BISON_TARGET(constexp constexp.y ${GENERATED_SRC}/ce_parse.cpp COMPILE_FLAGS "${YACC_FLAGS} -l -p constexpYY") BISON_TARGET(vhdlparser vhdlparser.y ${GENERATED_SRC}/vhdlparser.cpp COMPILE_FLAGS "-l -p vhdlscannerYY") BISON_TARGET(vhdlparser vhdlparser.y ${GENERATED_SRC}/vhdlparser.cpp COMPILE_FLAGS "-l -p vhdlscannerYY") BISON_TARGET(verilogparser verilogparser.y ${GENERATED_SRC}/verilogparser.cpp COMPILE_FLAGS "-l ") BISON_TARGET(verilogparser verilogparser.y ${GENERATED_SRC}/verilogparser.cpp COMPILE_FLAGS "-l ") BISON_TARGET(constexp constexp.y ${GENERATED_SRC}/ce_parse.cpp COMPILE_FLAGS "-l -p constexpYY") BISON_TARGET(constexp constexp.y ${GENERATED_SRC}/ce_parse.cpp COMPILE_FLAGS "-l -p constexpYY") add_library(doxycfg add_library(doxycfg STATIC ${GENERATED_SRC}/lang_cfg.h ${GENERATED_SRC}/lang_cfg.h ${GENERATED_SRC}/config.cpp ${GENERATED_SRC}/configvalues.h ${GENERATED_SRC}/configimpl.cpp ${GENERATED_SRC}/configoptions.cpp ${GENERATED_SRC}/configoptions.cpp ${GENERATED_SRC}/configvalues.cpp portable.cpp portable.cpp portable_c.c portable_c.c ) ) add_library(_doxygen add_library(_doxygen STATIC # custom generated files # custom generated files ${GENERATED_SRC}/lang_cfg.h ${GENERATED_SRC}/lang_cfg.h ${GENERATED_SRC}/settings.h ${GENERATED_SRC}/settings.h ${GENERATED_SRC}/layout_default.xml.h ${GENERATED_SRC}/layout_default.xml.h ${GENERATED_SRC}/version.cpp ${GENERATED_SRC}/version.cpp ${GENERATED_SRC}/ce_parse.h ${GENERATED_SRC}/ce_parse.h ${GENERATED_SRC}/configvalues.h ${GENERATED_SRC}/resources.cpp ${GENERATED_SRC}/resources.cpp # generated by flex/bison # generated by flex/bison ${GENERATED_SRC}/scanner.cpp ${GENERATED_SRC}/scanner.cpp Loading
src/VPreProc.cpp +77 −15 Original line number Original line Diff line number Diff line Loading @@ -122,7 +122,11 @@ public: //************************************************************************* //************************************************************************* /// Data for a preprocessor instantiation. /// Data for a preprocessor instantiation. struct VPreProcImp : public VPreProcOpaque { struct VPreProcImp : public VPreProcOpaque { public: typedef list<string> StrList; typedef list<string> StrList; int getNextStateToken(string & buf); int getNextStateToken(string & buf); VPreProc* m_preprocp; ///< Object we're holding data for VPreProc* m_preprocp; ///< Object we're holding data for Loading Loading @@ -168,6 +172,7 @@ struct VPreProcImp : public VPreProcOpaque { // For defines // For defines stack<VPreDefRef> m_defRefs; // Pending definine substitution stack<VPreDefRef> m_defRefs; // Pending definine substitution stack<VPreIfEntry> m_ifdefStack; ///< Stack of true/false emitting evaluations stack<VPreIfEntry> m_ifdefStack; ///< Stack of true/false emitting evaluations unsigned m_defDepth; ///< How many `defines deep unsigned m_defDepth; ///< How many `defines deep bool m_defPutJoin; ///< Insert `` after substitution bool m_defPutJoin; ///< Insert `` after substitution Loading @@ -177,7 +182,7 @@ struct VPreProcImp : public VPreProcOpaque { // For getline() // For getline() string m_lineChars; ///< Characters left for next line string m_lineChars; ///< Characters left for next line QCString m_QC; string m_QC; string relString; string relString; Loading Loading @@ -1097,7 +1102,21 @@ int VPreProcImp::getStateToken(string& buf) { // printf("\n###################77###################################"); // printf("\n###################77###################################"); sbuffer.insert(0,"`include "); sbuffer.insert(0,"`include "); this->m_QC.append(sbuffer.data()); this->m_QC.append(sbuffer.data()); m_preprocp->include(m_lastSym); string val=m_preprocp->include(m_lastSym); int ll=this->m_finFilelinep->lineno(); //fprintf(stderr,"\n found include in line %d",ll); // string klk= m_finFilelinep->filename(); string ff= m_finFilelinep->filebasename(); struct IncDef vInc; vInc.ss=m_lastSym; vInc.incLine=ll; vInc.incText=val; vInc.incFile=ff; m_preprocp->m_include.push(vInc); sbuffer.clear(); sbuffer.clear(); goto next_tok; goto next_tok; } } Loading Loading @@ -1642,7 +1661,7 @@ string VerilogPreProc::performPreprocessing(const QFileInfo & fi,bool include) return res; return res; } } //------------------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------------------ void VerilogPreProc::include(string filename) string VerilogPreProc::include(string filename) { { QCString qcs; QCString qcs; QCString fn=filename.data(); QCString fn=filename.data(); Loading @@ -1655,7 +1674,7 @@ string VerilogPreProc::performPreprocessing(const QFileInfo & fi,bool include) if(file.isEmpty()) if(file.isEmpty()) { { cerr<<"could not open file: "<<filename.data()<<endl; cerr<<"could not open file: "<<filename.data()<<endl; return; return ""; } } else else { { Loading @@ -1668,14 +1687,16 @@ string VerilogPreProc::performPreprocessing(const QFileInfo & fi,bool include) VPreLex* pre=idatap->m_lexp; VPreLex* pre=idatap->m_lexp; struct yy_buffer_state * buz = pre->currentBuffer(); struct yy_buffer_state * buz = pre->currentBuffer(); VerilogPreProc defProc; VerilogPreProc defProc; defProc.performPreprocessing(fi,false); string result = defProc.performPreprocessing(fi,false); yy_switch_to_buffer(buz); yy_switch_to_buffer(buz); // cerr << result; return result; } ///< Request a include file be processed } ///< Request a include file be processed string VerilogPreProc::defSubstitute(string substitute) string VerilogPreProc::defSubstitute(string substitute) { { // cout<<"SUBSTITUDE:"<<substitute<<endl; cout<<"SUBSTITUDE:"<<substitute<<endl; sbuffer.clear(); sbuffer.clear(); return substitute; return substitute; } ///< Return value to substitute for given post-parameter value } ///< Return value to substitute for given post-parameter value Loading Loading @@ -1785,6 +1806,7 @@ void VerilogPreProc::printDict() } } ////// ////// void VerilogPreProc::getPredefs() void VerilogPreProc::getPredefs() { { static bool firstTime=TRUE; static bool firstTime=TRUE; Loading @@ -1794,7 +1816,7 @@ void VerilogPreProc::getPredefs() // add predefined macros // add predefined macros DefineDict* preDict=VerilogPreProc::getPreDefineDict(); DefineDict* preDict=VerilogPreProc::getPreDefineDict(); char *defStr; char *defStr; QStrList &predefList = Config_getList("PREDEFINED"); QStrList &predefList = Config_getList(PREDEFINED); QStrListIterator sli(predefList); QStrListIterator sli(predefList); for (sli.toFirst();(defStr=sli.current());++sli) for (sli.toFirst();(defStr=sli.current());++sli) { { Loading Loading @@ -1907,4 +1929,44 @@ void VerilogPreProc::getPredefs() } } } } void VerilogPreProc:: insertIncludeText( string & s){ stack<IncDef> inc = this->m_include; while(!inc.empty()){ IncDef iDef=inc.top(); inc.pop(); const char * ch=s.data(); int count=0; int index=0; int nextIndex; char cc; while(count!=iDef.incLine) { cc=*ch; if(cc=='\n') { count++; if(count==(iDef.incLine-1)) break; } *ch++; index++; } *ch++; cc=*ch; nextIndex=index+1; while(cc!='\n') { *ch++; cc=*ch; nextIndex++; } s.erase(index,nextIndex-index); s.insert(index,iDef.incText); } } ////// //////
src/VPreProc.h +28 −11 Original line number Original line Diff line number Diff line Loading @@ -47,11 +47,21 @@ class VDefine; /// This defines a preprocessor. Functions are virtual so users can override them. /// This defines a preprocessor. Functions are virtual so users can override them. /// After creating, call openFile(), then getline() in a loop. The class will to the rest... /// After creating, call openFile(), then getline() in a loop. The class will to the rest... struct IncDef { string ss; string incFile; string incText; int incLine; }; class VPreProc { class VPreProc { public: public: VPreProc(); VPreProc(); void configure(VFileLine* filelinep); void configure(VFileLine* filelinep); virtual ~VPreProc(); virtual ~VPreProc(); stack<IncDef> m_include; // STATE // STATE private: private: Loading Loading @@ -102,7 +112,7 @@ public: // CALLBACK METHODS // CALLBACK METHODS // This probably will want to be overridden for given child users of this class. // This probably will want to be overridden for given child users of this class. virtual void comment(string cmt) = 0; ///< Comment detected (if keepComments==2) virtual void comment(string cmt) = 0; ///< Comment detected (if keepComments==2) virtual void include(string filename) = 0; ///< Request a include file be processed virtual string include(string filename) = 0; ///< Request a include file be processed virtual void define(string name, string value, string params) = 0; ///< `define without any parameters virtual void define(string name, string value, string params) = 0; ///< `define without any parameters virtual void undef(string name) = 0; ///< Remove a definition virtual void undef(string name) = 0; ///< Remove a definition virtual void undefineall() = 0; ///< Remove all non-command-line definitions virtual void undefineall() = 0; ///< Remove all non-command-line definitions Loading @@ -121,16 +131,16 @@ private: #include "qfileinfo.h" #include "qfileinfo.h" struct VPreProcImp; class VerilogPreProc: public VPreProc class VerilogPreProc: public VPreProc { { private: private: string getIndexString(const string& x,bool upper); string getIndexString(const string& x,bool upper); static DefineDict *g_fileDefineDict; static DefineDict *g_fileDefineDict; static DefineDict *g_preDefineDict; static DefineDict *g_preDefineDict; public: public: VerilogPreProc():VPreProc(){} VerilogPreProc():VPreProc(){} ~VerilogPreProc(){} ~VerilogPreProc(){} Loading @@ -154,17 +164,21 @@ class VerilogPreProc: public VPreProc g_preDefineDict=new DefineDict(); g_preDefineDict=new DefineDict(); g_preDefineDict->setAutoDelete(true); g_preDefineDict->setAutoDelete(true); } } return g_preDefineDict; return g_preDefineDict; } } VPreProcImp* getImpll() { VPreProcImp* idatap = (VPreProcImp*)(this->getImp()); return idatap; } void getPredefs(); void getPredefs(); string performPreprocessing(const QFileInfo & qf,bool include=false); string performPreprocessing(const QFileInfo & qf,bool include=false); void comment(string cmt) {} ///< Comment detected (if keepComments==2) void comment(string cmt) {} ///< Comment detected (if keepComments==2) void include(string filename) ; string include(string filename) ; void define(string name, string value, string params) ; void define(string name, string value, string params) ; Loading @@ -182,6 +196,9 @@ class VerilogPreProc: public VPreProc string defSubstitute(string substitute); string defSubstitute(string substitute); void printDict(); void printDict(); void insertIncludeText( string & text ); }; }; #endif // Guard #endif // Guard
src/cite.cpp +12 −12 Original line number Original line Diff line number Diff line Loading @@ -43,18 +43,18 @@ void CiteDict::writeLatexBibliography(FTextStream &t) if (m_entries.isEmpty()) if (m_entries.isEmpty()) return; return; QCString style = Config_getString("LATEX_BIB_STYLE"); QCString style = Config_getString(LATEX_BIB_STYLE); if (style.isEmpty()) if (style.isEmpty()) style="plain"; style="plain"; QCString unit; QCString unit; if (Config_getBool("COMPACT_LATEX")) if (Config_getBool(COMPACT_LATEX)) unit = "section"; unit = "section"; else else unit = "chapter"; unit = "chapter"; t << "% Bibliography\n" t << "% Bibliography\n" "\\newpage\n" "\\newpage\n" "\\phantomsection\n"; "\\phantomsection\n"; bool pdfHyperlinks = Config_getBool("PDF_HYPERLINKS"); bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS); if (!pdfHyperlinks) if (!pdfHyperlinks) { { t << "\\clearemptydoublepage\n"; t << "\\clearemptydoublepage\n"; Loading @@ -62,7 +62,7 @@ void CiteDict::writeLatexBibliography(FTextStream &t) } } t << "\\bibliographystyle{" << style << "}\n" t << "\\bibliographystyle{" << style << "}\n" "\\bibliography{"; "\\bibliography{"; QStrList &citeDataList = Config_getList("CITE_BIB_FILES"); QStrList &citeDataList = Config_getList(CITE_BIB_FILES); int i = 0; int i = 0; const char *bibdata = citeDataList.first(); const char *bibdata = citeDataList.first(); while (bibdata) while (bibdata) Loading Loading @@ -107,7 +107,7 @@ void CiteDict::clear() bool CiteDict::isEmpty() const bool CiteDict::isEmpty() const { { QStrList &citeBibFiles = Config_getList("CITE_BIB_FILES"); QStrList &citeBibFiles = Config_getList(CITE_BIB_FILES); return (citeBibFiles.count()==0 || m_entries.isEmpty()); return (citeBibFiles.count()==0 || m_entries.isEmpty()); } } Loading @@ -120,7 +120,7 @@ void CiteDict::generatePage() const // 1. generate file with markers and citations to OUTPUT_DIRECTORY // 1. generate file with markers and citations to OUTPUT_DIRECTORY QFile f; QFile f; QCString outputDir = Config_getString("OUTPUT_DIRECTORY"); QCString outputDir = Config_getString(OUTPUT_DIRECTORY); QCString citeListFile = outputDir+"/citelist.doc"; QCString citeListFile = outputDir+"/citelist.doc"; f.setName(citeListFile); f.setName(citeListFile); if (!f.open(IO_WriteOnly)) if (!f.open(IO_WriteOnly)) Loading Loading @@ -154,7 +154,7 @@ void CiteDict::generatePage() const // so bibtex can find them without path (bibtex doesn't support paths or // so bibtex can find them without path (bibtex doesn't support paths or // filenames with spaces!) // filenames with spaces!) // Strictly not required when only latex is generated // Strictly not required when only latex is generated QStrList &citeDataList = Config_getList("CITE_BIB_FILES"); QStrList &citeDataList = Config_getList(CITE_BIB_FILES); QCString bibOutputDir = outputDir+"/"+bibTmpDir; QCString bibOutputDir = outputDir+"/"+bibTmpDir; QCString bibOutputFiles = ""; QCString bibOutputFiles = ""; QDir thisDir; QDir thisDir; Loading Loading @@ -226,13 +226,13 @@ void CiteDict::generatePage() const else if (insideBib) doc+=line+"\n"; else if (insideBib) doc+=line+"\n"; int i; int i; // determine text to use at the location of the @cite command // determine text to use at the location of the @cite command if (insideBib && (i=line.find("<a name=\"CITEREF_"))!=-1) if (insideBib && (i=line.find("name=\"CITEREF_"))!=-1) { { int j=line.find("\">["); int j=line.find("\">["); int k=line.find("]</a>"); int k=line.find("]</a>"); if (j!=-1 && k!=-1) if (j!=-1 && k!=-1) { { QCString label = line.mid(i+17,j-i-17); QCString label = line.mid(i+14,j-i-14); QCString number = line.mid(j+2,k-j-1); QCString number = line.mid(j+2,k-j-1); CiteInfo *ci = m_entries.find(label); CiteInfo *ci = m_entries.find(label); //printf("label='%s' number='%s' => %p\n",label.data(),number.data(),ci); //printf("label='%s' number='%s' => %p\n",label.data(),number.data(),ci); Loading @@ -251,11 +251,11 @@ void CiteDict::generatePage() const // 8. for latex we just copy the bib files to the output and let // 8. for latex we just copy the bib files to the output and let // latex do this work. // latex do this work. if (Config_getBool("GENERATE_LATEX")) if (Config_getBool(GENERATE_LATEX)) { { // copy bib files to the latex output dir // copy bib files to the latex output dir QStrList &citeDataList = Config_getList("CITE_BIB_FILES"); QStrList &citeDataList = Config_getList(CITE_BIB_FILES); QCString latexOutputDir = Config_getString("LATEX_OUTPUT")+"/"; QCString latexOutputDir = Config_getString(LATEX_OUTPUT)+"/"; int i = 0; int i = 0; const char *bibdata = citeDataList.first(); const char *bibdata = citeDataList.first(); while (bibdata) while (bibdata) Loading
src/clangparser.cpp +8 −8 Original line number Original line Diff line number Diff line Loading @@ -64,7 +64,7 @@ class ClangParser::Private static QCString detab(const QCString &s) static QCString detab(const QCString &s) { { static int tabSize = Config_getInt("TAB_SIZE"); static int tabSize = Config_getInt(TAB_SIZE); GrowBuf out; GrowBuf out; int size = s.length(); int size = s.length(); const char *data = s.data(); const char *data = s.data(); Loading Loading @@ -157,9 +157,9 @@ void ClangParser::determineInputFilesInSameTu(QStrList &files) void ClangParser::start(const char *fileName,QStrList &filesInTranslationUnit) void ClangParser::start(const char *fileName,QStrList &filesInTranslationUnit) { { static bool clangAssistedParsing = Config_getBool("CLANG_ASSISTED_PARSING"); static bool clangAssistedParsing = Config_getBool(CLANG_ASSISTED_PARSING); static QStrList &includePath = Config_getList("INCLUDE_PATH"); static QStrList &includePath = Config_getList(INCLUDE_PATH); static QStrList clangOptions = Config_getList("CLANG_OPTIONS"); static QStrList clangOptions = Config_getList(CLANG_OPTIONS); if (!clangAssistedParsing) return; if (!clangAssistedParsing) return; //printf("ClangParser::start(%s)\n",fileName); //printf("ClangParser::start(%s)\n",fileName); p->fileName = fileName; p->fileName = fileName; Loading Loading @@ -230,7 +230,7 @@ void ClangParser::start(const char *fileName,QStrList &filesInTranslationUnit) // provide the input and and its dependencies as unsaved files so we can // provide the input and and its dependencies as unsaved files so we can // pass the filtered versions // pass the filtered versions argv[argc++]=strdup(fileName); argv[argc++]=strdup(fileName); static bool filterSourceFiles = Config_getBool("FILTER_SOURCE_FILES"); static bool filterSourceFiles = Config_getBool(FILTER_SOURCE_FILES); //printf("source %s ----------\n%s\n-------------\n\n", //printf("source %s ----------\n%s\n-------------\n\n", // fileName,p->source.data()); // fileName,p->source.data()); uint numUnsavedFiles = filesInTranslationUnit.count()+1; uint numUnsavedFiles = filesInTranslationUnit.count()+1; Loading Loading @@ -339,7 +339,7 @@ void ClangParser::switchToFile(const char *fileName) void ClangParser::finish() void ClangParser::finish() { { static bool clangAssistedParsing = Config_getBool("CLANG_ASSISTED_PARSING"); static bool clangAssistedParsing = Config_getBool(CLANG_ASSISTED_PARSING); if (!clangAssistedParsing) return; if (!clangAssistedParsing) return; if (p->tu) if (p->tu) { { Loading Loading @@ -381,7 +381,7 @@ QCString ClangParser::lookup(uint line,const char *symbol) //printf("ClangParser::lookup(%d,%s)\n",line,symbol); //printf("ClangParser::lookup(%d,%s)\n",line,symbol); QCString result; QCString result; if (symbol==0) return result; if (symbol==0) return result; static bool clangAssistedParsing = Config_getBool("CLANG_ASSISTED_PARSING"); static bool clangAssistedParsing = Config_getBool(CLANG_ASSISTED_PARSING); if (!clangAssistedParsing) return result; if (!clangAssistedParsing) return result; int sl = strlen(symbol); int sl = strlen(symbol); Loading Loading @@ -615,7 +615,7 @@ static void writeMultiLineCodeLink(CodeOutputInterface &ol, Definition *d, Definition *d, const char *text) const char *text) { { static bool sourceTooltips = Config_getBool("SOURCE_TOOLTIPS"); static bool sourceTooltips = Config_getBool(SOURCE_TOOLTIPS); TooltipManager::instance()->addTooltip(d); TooltipManager::instance()->addTooltip(d); QCString ref = d->getReference(); QCString ref = d->getReference(); QCString file = d->getOutputFileBase(); QCString file = d->getOutputFileBase(); Loading