51 if (!
p->docFile.is_open())
53 term(
"Could not open file {} for writing\n", fileName);
55 p->doc.setStream(&
p->docFile);
57 p->doc <<
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
58 p->doc <<
"<urlset\n";
59 p->doc <<
" xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"\n";
60 p->doc <<
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
61 p->doc <<
" xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9\n";
62 p->doc <<
" http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd\">\n";
67 p->doc <<
"</urlset>\n";
78 p->doc <<
" <loc>" <<
convertToXML(sitemapUrl + fn) <<
"</loc>\n";
79 p->doc <<
" </url>\n";
100 if (!
p->crawlFile.is_open())
102 term(
"Could not open file {} for writing\n",fileName);
104 p->crawl.setStream(&
p->crawlFile);
105 p->crawl <<
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
107 p->crawl <<
"<head>\n";
108 p->crawl <<
"<title>Validator / crawler helper</title>\n";
109 p->crawl <<
"<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n";
110 p->crawl <<
"<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n";
112 p->crawl <<
"<meta name=\"generator\" content=\"Doxygen " + getDoxygenVersion() +
"\"/>\n";
113 p->crawl <<
"<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n";
114 p->crawl <<
"</head>\n";
115 p->crawl <<
"<body>\n";
120 std::sort(
p->crawlLinks.begin(),
p->crawlLinks.end());
121 p->crawlLinks.erase(std::unique(
p->crawlLinks.begin(),
p->crawlLinks.end()),
p->crawlLinks.end());
122 for (
auto &s :
p->crawlLinks)
124 p->crawl <<
"<a href=\"" << s <<
"\"/>\n";
127 p->crawl <<
"</body>\n";
128 p->crawl <<
"</html>\n";
130 p->crawlFile.close();
137 p->crawlLinks.push_back(fn.
str());
150 if (file[0]==
'!' || file[0]==
'^')
159 link += currFile.
data();
160 if (!currAnc.
empty())
163 link += currAnc.
str();
166 p->crawlLinks.push_back(link);
172 DString result=withoutExtension;
175 if (result.
at(0)==
'!')
177 result=result.
mid(1);
191 if (anchor.
empty())
return result;
192 return result+
"#"+anchor;
204 p->crawlLinks.push_back(ref.
str());
210 p->crawlLinks.push_back(ref.
str());
void addContentsItem(bool isDir, const DString &name, const DString &ref, const DString &file, const DString &anchor, bool separateIndex, bool addToNavIndex, const Definition *def, const DString &nameAsHtml)
static const DString crawlFileName
std::unique_ptr< Private > p
void addIndexItem(const Definition *context, const MemberDef *md, const DString §ionAnchor, const DString &title)
void addIndexFile(const DString &name)
A String class for use with Doxygen wrapping std::string and adding some additional functionality off...
DString mid(size_t index, size_t len=npos) const
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
char & at(size_t i)
Returns a reference to the character at index i.
const std::string & str() const
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
The common base class of all entity definitions found in the sources.
virtual bool hasDocumentation() const =0
virtual DString anchor() const =0
virtual DString getOutputFileBase() const =0
A model of a class/file/namespace member symbol.
void addIndexFile(const DString &name)
std::unique_ptr< Private > p
static const DString sitemapFileName
Text streaming class that buffers data.
virtual DString trISOLang()=0
#define Config_getString(name)
std::vector< std::string > StringVector
Translator * theTranslator
std::ofstream openOutputStream(const DString &name, bool append=false)
Portable versions of functions that are platform dependent.
static DString makeFileName(const DString &withoutExtension)
static DString makeRef(const DString &withoutExtension, const DString &anchor)
void addHtmlExtensionIfMissing(DString &fName)
DString convertToXML(const DString &s, bool keepEntities, const bool citeEntry)
A bunch of utility functions.