summaryrefslogtreecommitdiffstats
path: root/src/docsets.cpp
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2021-03-14 14:47:59 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2021-03-18 20:57:40 (GMT)
commitfa1897b1889f7bf74de68f1ac99cf3be343a7551 (patch)
treeea14c45937cb6fef237c0fcafbd5b0923abd8f0a /src/docsets.cpp
parent0d05e79d67b5b808918541f429b06805207e8bdb (diff)
downloadDoxygen-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.cpp247
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)