From 5fcc55a7a74233b177e15db2ed1af10e25b25839 Mon Sep 17 00:00:00 2001 From: albert-github Date: Mon, 22 Apr 2019 11:28:05 +0200 Subject: issue #6939 Build fail in Windows with build_parse turn ON (unistd.h does not exist in Windows) Made doxyparse compilable on Windows. - removed printNumberOfConditionalPaths as it contained numberOfFlowKeywords() that was removed as dead code in 924cc02d8b7439551508a6301a3b9c762fd2d1bc or Jan 21, 2019. - corrected casts and prototypes - corrected include files - got correct "getpid" for windows. - corrected calls to OS remove functions by system independent Qt functions --- addon/doxyparse/doxyparse.cpp | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/addon/doxyparse/doxyparse.cpp b/addon/doxyparse/doxyparse.cpp index 584e8b0..26ecea9 100644 --- a/addon/doxyparse/doxyparse.cpp +++ b/addon/doxyparse/doxyparse.cpp @@ -19,7 +19,11 @@ */ #include -#include +#if !defined(_WIN32) || defined(__CYGWIN__) + #include +#else + #include +#endif #include "doxygen.h" #include "outputgen.h" #include "parserintf.h" @@ -35,6 +39,7 @@ #include #include #include +#include class Doxyparse : public CodeOutputInterface { @@ -58,7 +63,7 @@ class Doxyparse : public CodeOutputInterface const char *,const char *,const SourceLinkInfo &, const SourceLinkInfo &) {} void startCodeLine(bool) {} - void setCurrentDoc(Definition *,const char *,bool) {} + void setCurrentDoc(const Definition *,const char *,bool) {} void addWord(const char *,bool) {} void linkableSymbol(int l, const char *sym, Definition *symDef, Definition *context) @@ -159,9 +164,6 @@ static void printReferenceTo(std::string type, std::string signature, std::strin printf(" type: %s\n", type.c_str()); printf(" defined_in: %s\n", defined_in.c_str()); } -static void printNumberOfConditionalPaths(MemberDef* md) { - printf(" conditional_paths: %d\n", md->numberOfFlowKeyWords()); -} static int isPartOfCStruct(MemberDef * md) { return is_c_code && md->getClassDef() != NULL; @@ -242,7 +244,6 @@ void functionInformation(MemberDef* md) { printNumberOfLines(size); ArgumentList *argList = md->argumentList(); printNumberOfArguments(argList->count()); - printNumberOfConditionalPaths(md); MemberSDict *defDict = md->getReferencesMembers(); if (defDict) { MemberSDict::Iterator msdi(*defDict); @@ -258,7 +259,7 @@ void functionInformation(MemberDef* md) { static void lookupSymbol(Definition *d) { if (d->definitionType() == Definition::TypeMember) { - MemberDef *md = (MemberDef *)d; + MemberDef *md = dynamic_cast(d); std::string type = md->memberTypeName().data(); std::string signature = functionSignature(md); printDefinition(type, signature, md->getDefLine()); @@ -388,7 +389,12 @@ int main(int argc,char **argv) { // we need a place to put intermediate files std::ostringstream tmpdir; - tmpdir << "/tmp/doxyparse-" << getpid(); +#if !defined(_WIN32) || defined(__CYGWIN__) + unsigned int pid = (uint)getpid(); +#else + unsigned int pid = (uint)GetCurrentProcessId(); +#endif + tmpdir << "/tmp/doxyparse-" << pid; Config_getString(OUTPUT_DIRECTORY)= tmpdir.str().c_str(); // enable HTML (fake) output to omit warning about missing output format Config_getBool(GENERATE_HTML)=TRUE; @@ -449,11 +455,14 @@ int main(int argc,char **argv) { } } + QDir thisDir; // remove temporary files - if (!Doxygen::objDBFileName.isEmpty()) unlink(Doxygen::objDBFileName); - if (!Doxygen::entryDBFileName.isEmpty()) unlink(Doxygen::entryDBFileName); + if (!Doxygen::objDBFileName.isEmpty()) thisDir.remove(Doxygen::objDBFileName); + if (!Doxygen::entryDBFileName.isEmpty()) thisDir.remove(Doxygen::entryDBFileName); + if (!Doxygen::filterDBFileName.isEmpty()) thisDir.remove(Doxygen::filterDBFileName); + // clean up after us - rmdir(Config_getString(OUTPUT_DIRECTORY)); + thisDir.rmdir(Config_getString(OUTPUT_DIRECTORY)); listSymbols(); -- cgit v0.12