diff options
author | Dimitri van Heesch <doxygen@gmail.com> | 2021-03-14 14:47:59 (GMT) |
---|---|---|
committer | Dimitri van Heesch <doxygen@gmail.com> | 2021-03-18 20:57:40 (GMT) |
commit | fa1897b1889f7bf74de68f1ac99cf3be343a7551 (patch) | |
tree | ea14c45937cb6fef237c0fcafbd5b0923abd8f0a /src/docsets.cpp | |
parent | 0d05e79d67b5b808918541f429b06805207e8bdb (diff) | |
download | Doxygen-fa1897b1889f7bf74de68f1ac99cf3be343a7551.zip Doxygen-fa1897b1889f7bf74de68f1ac99cf3be343a7551.tar.gz Doxygen-fa1897b1889f7bf74de68f1ac99cf3be343a7551.tar.bz2 |
Refactoring: replace QFile/FTextStream with fstream/stringstream
Diffstat (limited to 'src/docsets.cpp')
-rw-r--r-- | src/docsets.cpp | 247 |
1 files changed, 120 insertions, 127 deletions
diff --git a/src/docsets.cpp b/src/docsets.cpp index f7c8c18..6040277 100644 --- a/src/docsets.cpp +++ b/src/docsets.cpp @@ -15,8 +15,8 @@ #include <set> #include <stack> +#include <fstream> -#include <qfile.h> #include "docsets.h" #include "config.h" #include "message.h" @@ -27,15 +27,12 @@ #include "memberdef.h" #include "namespacedef.h" #include "util.h" -#include "ftextstream.h" struct DocSets::Private { QCString indent(); - QFile nf; - QFile tf; - FTextStream nts; - FTextStream tts; + std::ofstream nts; + std::ofstream tts; std::stack<bool> indentStack; std::set<std::string> scopes; }; @@ -67,135 +64,131 @@ void DocSets::initialize() // -- write Makefile { - QCString mfName = Config_getString(HTML_OUTPUT) + "/Makefile"; - QFile makefile(mfName); - if (!makefile.open(IO_WriteOnly)) - { - term("Could not open file %s for writing\n",mfName.data()); - } - FTextStream ts(&makefile); + QCString mfName = Config_getString(HTML_OUTPUT) + "/Makefile"; + std::ofstream ts(mfName.str(),std::ofstream::out | std::ofstream::binary); + if (!ts.is_open()) + { + term("Could not open file %s for writing\n",mfName.data()); + } - ts << "DOCSET_NAME=" << bundleId << ".docset\n" - "DOCSET_CONTENTS=$(DOCSET_NAME)/Contents\n" - "DOCSET_RESOURCES=$(DOCSET_CONTENTS)/Resources\n" - "DOCSET_DOCUMENTS=$(DOCSET_RESOURCES)/Documents\n" - "DESTDIR=~/Library/Developer/Shared/Documentation/DocSets\n" - "XCODE_INSTALL=\"$(shell xcode-select -print-path)\"\n" - "\n" - "all: docset\n" - "\n" - "docset:\n" - "\tmkdir -p $(DOCSET_DOCUMENTS)\n" - "\tcp Nodes.xml $(DOCSET_RESOURCES)\n" - "\tcp Tokens.xml $(DOCSET_RESOURCES)\n" - "\tcp Info.plist $(DOCSET_CONTENTS)\n" - "\ttar --exclude $(DOCSET_NAME) \\\n" - "\t --exclude Nodes.xml \\\n" - "\t --exclude Tokens.xml \\\n" - "\t --exclude Info.plist \\\n" - "\t --exclude Makefile -c -f - . \\\n" - "\t | (cd $(DOCSET_DOCUMENTS); tar xvf -)\n" - "\t$(XCODE_INSTALL)/usr/bin/docsetutil index $(DOCSET_NAME)\n" - "\trm -f $(DOCSET_DOCUMENTS)/Nodes.xml\n" - "\trm -f $(DOCSET_DOCUMENTS)/Info.plist\n" - "\trm -f $(DOCSET_DOCUMENTS)/Makefile\n" - "\trm -f $(DOCSET_RESOURCES)/Nodes.xml\n" - "\trm -f $(DOCSET_RESOURCES)/Tokens.xml\n" - "\n" - "clean:\n" - "\trm -rf $(DOCSET_NAME)\n" - "\n" - "install: docset\n" - "\tmkdir -p $(DESTDIR)\n" - "\tcp -R $(DOCSET_NAME) $(DESTDIR)\n" - "\n" - "uninstall:\n" - "\trm -rf $(DESTDIR)/$(DOCSET_NAME)\n" - "\n" - "always:\n"; + ts << "DOCSET_NAME=" << bundleId << ".docset\n" + "DOCSET_CONTENTS=$(DOCSET_NAME)/Contents\n" + "DOCSET_RESOURCES=$(DOCSET_CONTENTS)/Resources\n" + "DOCSET_DOCUMENTS=$(DOCSET_RESOURCES)/Documents\n" + "DESTDIR=~/Library/Developer/Shared/Documentation/DocSets\n" + "XCODE_INSTALL=\"$(shell xcode-select -print-path)\"\n" + "\n" + "all: docset\n" + "\n" + "docset:\n" + "\tmkdir -p $(DOCSET_DOCUMENTS)\n" + "\tcp Nodes.xml $(DOCSET_RESOURCES)\n" + "\tcp Tokens.xml $(DOCSET_RESOURCES)\n" + "\tcp Info.plist $(DOCSET_CONTENTS)\n" + "\ttar --exclude $(DOCSET_NAME) \\\n" + "\t --exclude Nodes.xml \\\n" + "\t --exclude Tokens.xml \\\n" + "\t --exclude Info.plist \\\n" + "\t --exclude Makefile -c -f - . \\\n" + "\t | (cd $(DOCSET_DOCUMENTS); tar xvf -)\n" + "\t$(XCODE_INSTALL)/usr/bin/docsetutil index $(DOCSET_NAME)\n" + "\trm -f $(DOCSET_DOCUMENTS)/Nodes.xml\n" + "\trm -f $(DOCSET_DOCUMENTS)/Info.plist\n" + "\trm -f $(DOCSET_DOCUMENTS)/Makefile\n" + "\trm -f $(DOCSET_RESOURCES)/Nodes.xml\n" + "\trm -f $(DOCSET_RESOURCES)/Tokens.xml\n" + "\n" + "clean:\n" + "\trm -rf $(DOCSET_NAME)\n" + "\n" + "install: docset\n" + "\tmkdir -p $(DESTDIR)\n" + "\tcp -R $(DOCSET_NAME) $(DESTDIR)\n" + "\n" + "uninstall:\n" + "\trm -rf $(DESTDIR)/$(DOCSET_NAME)\n" + "\n" + "always:\n"; } // -- write Info.plist { - QCString plName = Config_getString(HTML_OUTPUT) + "/Info.plist"; - QFile plist(plName); - if (!plist.open(IO_WriteOnly)) - { - term("Could not open file %s for writing\n",plName.data()); - } - FTextStream ts(&plist); + QCString plName = Config_getString(HTML_OUTPUT) + "/Info.plist"; + std::ofstream ts(plName.str(),std::ofstream::out | std::ofstream::binary); + if (!ts.is_open()) + { + term("Could not open file %s for writing\n",plName.data()); + } - ts << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" - "<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\"\n" - "\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n" - "<plist version=\"1.0\">\n" - "<dict>\n" - " <key>CFBundleName</key>\n" - " <string>" << projectName << "</string>\n" - " <key>CFBundleIdentifier</key>\n" - " <string>" << bundleId << "</string>\n" - " <key>CFBundleVersion</key>\n" - " <string>" << projectNumber << "</string>\n" - " <key>DocSetFeedName</key>\n" - " <string>" << feedName << "</string>\n" - " <key>DocSetPublisherIdentifier</key>\n" - " <string>" << publisherId << "</string>\n" - " <key>DocSetPublisherName</key>\n" - " <string>" << publisherName << "</string>\n" - // markers for Dash - " <key>DashDocSetFamily</key>\n" - " <string>doxy</string>\n" - " <key>DocSetPlatformFamily</key>\n" - " <string>doxygen</string>\n" - "</dict>\n" - "</plist>\n"; + ts << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\"\n" + "\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n" + "<plist version=\"1.0\">\n" + "<dict>\n" + " <key>CFBundleName</key>\n" + " <string>" << projectName << "</string>\n" + " <key>CFBundleIdentifier</key>\n" + " <string>" << bundleId << "</string>\n" + " <key>CFBundleVersion</key>\n" + " <string>" << projectNumber << "</string>\n" + " <key>DocSetFeedName</key>\n" + " <string>" << feedName << "</string>\n" + " <key>DocSetPublisherIdentifier</key>\n" + " <string>" << publisherId << "</string>\n" + " <key>DocSetPublisherName</key>\n" + " <string>" << publisherName << "</string>\n" + // markers for Dash + " <key>DashDocSetFamily</key>\n" + " <string>doxy</string>\n" + " <key>DocSetPlatformFamily</key>\n" + " <string>doxygen</string>\n" + "</dict>\n" + "</plist>\n"; } // -- start Nodes.xml QCString notes = Config_getString(HTML_OUTPUT) + "/Nodes.xml"; - p->nf.setName(notes); - if (!p->nf.open(IO_WriteOnly)) + p->nts.open(notes.str(),std::ofstream::out | std::ofstream::binary); + if (!p->nts.is_open()) { term("Could not open file %s for writing\n",notes.data()); } //QCString indexName=Config_getBool(GENERATE_TREEVIEW)?"main":"index"; QCString indexName="index"; - p->nts.setDevice(&p->nf); - p->nts << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl; - p->nts << "<DocSetNodes version=\"1.0\">" << endl; - p->nts << " <TOC>" << endl; - p->nts << " <Node>" << endl; - p->nts << " <Name>Root</Name>" << endl; - p->nts << " <Path>" << indexName << Doxygen::htmlFileExtension << "</Path>" << endl; - p->nts << " <Subnodes>" << endl; + p->nts << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; + p->nts << "<DocSetNodes version=\"1.0\">\n"; + p->nts << " <TOC>\n"; + p->nts << " <Node>\n"; + p->nts << " <Name>Root</Name>\n"; + p->nts << " <Path>" << indexName << Doxygen::htmlFileExtension << "</Path>\n"; + p->nts << " <Subnodes>\n"; p->indentStack.push(true); QCString tokens = Config_getString(HTML_OUTPUT) + "/Tokens.xml"; - p->tf.setName(tokens); - if (!p->tf.open(IO_WriteOnly)) + p->tts.open(tokens.str(),std::ofstream::out | std::ofstream::binary); + if (!p->tts.is_open()) { term("Could not open file %s for writing\n",tokens.data()); } - p->tts.setDevice(&p->tf); - p->tts << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl; - p->tts << "<Tokens version=\"1.0\">" << endl; + p->tts << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; + p->tts << "<Tokens version=\"1.0\">\n"; } void DocSets::finalize() { if (!p->indentStack.top()) { - p->nts << p->indent() << " </Node>" << endl; + p->nts << p->indent() << " </Node>\n"; } p->indentStack.pop(); - p->nts << " </Subnodes>" << endl; - p->nts << " </Node>" << endl; - p->nts << " </TOC>" << endl; - p->nts << "</DocSetNodes>" << endl; - p->nf.close(); + p->nts << " </Subnodes>\n"; + p->nts << " </Node>\n"; + p->nts << " </TOC>\n"; + p->nts << "</DocSetNodes>\n"; + p->nts.close(); - p->tts << "</Tokens>" << endl; - p->tf.close(); + p->tts << "</Tokens>\n"; + p->tts.close(); } QCString DocSets::Private::indent() @@ -208,7 +201,7 @@ QCString DocSets::Private::indent() void DocSets::incContentsDepth() { //printf("DocSets::incContentsDepth() depth=%zu\n",p->indentStack.size()); - p->nts << p->indent() << "<Subnodes>" << endl; + p->nts << p->indent() << "<Subnodes>\n"; p->indentStack.push(true); } @@ -216,9 +209,9 @@ void DocSets::decContentsDepth() { if (!p->indentStack.top()) { - p->nts << p->indent() << " </Node>" << endl; + p->nts << p->indent() << " </Node>\n"; } - p->nts << p->indent() << "</Subnodes>" << endl; + p->nts << p->indent() << "</Subnodes>\n"; p->indentStack.pop(); //printf("DocSets::decContentsDepth() depth=%zu\n",p->indentStack.size()); } @@ -238,15 +231,15 @@ void DocSets::addContentsItem(bool isDir, { if (!p->indentStack.top()) { - p->nts << p->indent() << " </Node>" << endl; + p->nts << p->indent() << " </Node>\n"; } p->indentStack.top()=false; - p->nts << p->indent() << " <Node>" << endl; - p->nts << p->indent() << " <Name>" << convertToXML(name) << "</Name>" << endl; + p->nts << p->indent() << " <Node>\n"; + p->nts << p->indent() << " <Name>" << convertToXML(name) << "</Name>\n"; if (file && file[0]=='^') // URL marker { p->nts << p->indent() << " <URL>" << convertToXML(&file[1]) - << "</URL>" << endl; + << "</URL>\n"; } else // relative file { @@ -259,10 +252,10 @@ void DocSets::addContentsItem(bool isDir, { p->nts << file << Doxygen::htmlFileExtension; } - p->nts << "</Path>" << endl; + p->nts << "</Path>\n"; if (file && anchor) { - p->nts << p->indent() << " <Anchor>" << anchor << "</Anchor>" << endl; + p->nts << p->indent() << " <Anchor>" << anchor << "</Anchor>\n"; } } } @@ -483,7 +476,7 @@ void DocSets::addIndexItem(const Definition *context,const MemberDef *md, } } -void DocSets::writeToken(FTextStream &t, +void DocSets::writeToken(std::ostream &t, const Definition *d, const QCString &type, const QCString &lang, @@ -491,40 +484,40 @@ void DocSets::writeToken(FTextStream &t, const char *anchor, const char *decl) { - t << " <Token>" << endl; - t << " <TokenIdentifier>" << endl; + t << " <Token>\n"; + t << " <TokenIdentifier>\n"; QCString name = d->name(); if (name.right(2)=="-p") name=name.left(name.length()-2); - t << " <Name>" << convertToXML(name) << "</Name>" << endl; + t << " <Name>" << convertToXML(name) << "</Name>\n"; if (!lang.isEmpty()) { - t << " <APILanguage>" << lang << "</APILanguage>" << endl; + t << " <APILanguage>" << lang << "</APILanguage>\n"; } if (!type.isEmpty()) { - t << " <Type>" << type << "</Type>" << endl; + t << " <Type>" << type << "</Type>\n"; } if (scope) { - t << " <Scope>" << convertToXML(scope) << "</Scope>" << endl; + t << " <Scope>" << convertToXML(scope) << "</Scope>\n"; } - t << " </TokenIdentifier>" << endl; + t << " </TokenIdentifier>\n"; t << " <Path>" << d->getOutputFileBase() - << Doxygen::htmlFileExtension << "</Path>" << endl; + << Doxygen::htmlFileExtension << "</Path>\n"; if (anchor) { - t << " <Anchor>" << anchor << "</Anchor>" << endl; + t << " <Anchor>" << anchor << "</Anchor>\n"; } QCString tooltip = d->briefDescriptionAsTooltip(); if (!tooltip.isEmpty()) { - t << " <Abstract>" << convertToXML(tooltip) << "</Abstract>" << endl; + t << " <Abstract>" << convertToXML(tooltip) << "</Abstract>\n"; } if (decl) { - t << " <DeclaredIn>" << convertToXML(decl) << "</DeclaredIn>" << endl; + t << " <DeclaredIn>" << convertToXML(decl) << "</DeclaredIn>\n"; } - t << " </Token>" << endl; + t << " </Token>\n"; } void DocSets::addIndexFile(const char *name) |