diff options
author | albert-github <albert.tests@gmail.com> | 2018-06-11 17:47:37 (GMT) |
---|---|---|
committer | albert-github <albert.tests@gmail.com> | 2018-06-11 17:47:37 (GMT) |
commit | 5d89de25fa5aa146ab65a88f09a7cc729dea3e51 (patch) | |
tree | d85a6daafac6bc1472090835bce09eca85ea08ec /src | |
parent | 4536982bdebc0056d0c5d64a12881f20b5801c06 (diff) | |
download | Doxygen-5d89de25fa5aa146ab65a88f09a7cc729dea3e51.zip Doxygen-5d89de25fa5aa146ab65a88f09a7cc729dea3e51.tar.gz Doxygen-5d89de25fa5aa146ab65a88f09a7cc729dea3e51.tar.bz2 |
Resolve inconsistency in formula repositories.
HTML and RTF have their own directory with formula repository files. These can get out of sync when HTML and RTF versions are not always build together (and both are required again).
Diffstat (limited to 'src')
-rw-r--r-- | src/doxygen.cpp | 52 | ||||
-rw-r--r-- | src/doxygen.h | 2 |
2 files changed, 45 insertions, 9 deletions
diff --git a/src/doxygen.cpp b/src/doxygen.cpp index bc244b7..1fb9a1c 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -9752,14 +9752,17 @@ int readFileOrDirectory(const char *s, //---------------------------------------------------------------------------- -void readFormulaRepository() +void readFormulaRepository(QCString dir, bool cmp) { - QFile f(Config_getString(HTML_OUTPUT)+"/formula.repository"); + static int current_repository = 0; + int new_repository = 0; + QFile f(dir+"/formula.repository"); if (f.open(IO_ReadOnly)) // open repository { msg("Reading formula repository...\n"); QTextStream t(&f); QCString line; + Formula *f; while (!t.eof()) { line=t.readLine().utf8(); @@ -9773,14 +9776,42 @@ void readFormulaRepository() { QCString formName = line.left(se); QCString formText = line.right(line.length()-se-1); - Formula *f=new Formula(formText); - Doxygen::formulaList->setAutoDelete(TRUE); - Doxygen::formulaList->append(f); - Doxygen::formulaDict->insert(formText,f); - Doxygen::formulaNameDict->insert(formName,f); + if (cmp) + { + if ((f=Doxygen::formulaDict->find(formText))==0) + { + err("discrepancy between formula repositories! Remove " + "formula.repository and from_* files from output directories."); + exit(1); + } + QCString formLabel; + formLabel.sprintf("\\form#%d",f->getId()); + if (formLabel != formName) + { + err("discrepancy between formula repositories! Remove " + "formula.repository and from_* files from output directories."); + exit(1); + } + new_repository++; + } + else + { + f=new Formula(formText); + Doxygen::formulaList->setAutoDelete(TRUE); + Doxygen::formulaList->append(f); + Doxygen::formulaDict->insert(formText,f); + Doxygen::formulaNameDict->insert(formName,f); + current_repository++; + } } } } + if (cmp && (current_repository != new_repository)) + { + err("size discrepancy between formula repositories! Remove " + "formula.repository and from_* files from output directories."); + exit(1); + } } //---------------------------------------------------------------------------- @@ -11070,7 +11101,12 @@ void parseInput() if (Config_getBool(GENERATE_HTML)) { - readFormulaRepository(); + readFormulaRepository(Config_getString(HTML_OUTPUT)); + } + if (Config_getBool(GENERATE_RTF)) + { + // in case GENERRATE_HTML is set we just have to compare, both repositories should be identical + readFormulaRepository(Config_getString(RTF_OUTPUT),Config_getBool(GENERATE_HTML)); } /************************************************************************** diff --git a/src/doxygen.h b/src/doxygen.h index b3467c1..7bd05a4 100644 --- a/src/doxygen.h +++ b/src/doxygen.h @@ -159,7 +159,7 @@ void searchInputFiles(StringList &inputFiles); void parseInput(); void generateOutput(); void readAliases(); -void readFormulaRepository(); +void readFormulaRepository(QCString dir, bool cmp = FALSE); void cleanUpDoxygen(); int readFileOrDirectory(const char *s, FileNameList *fnList, |