Skip to main content

The xmlgen.h File Reference

Included Headers

#include "outputgen.h"

Classes Index

classXMLCodeGenerator

Functions Index

voidgenerateXML ()

Functions

generateXML()

void generateXML ()

Declaration at line 70 of file xmlgen.h, definition at line 2196 of file xmlgen.cpp.

2197{
2198 // + classes
2199 // + concepts
2200 // + namespaces
2201 // + files
2202 // + groups
2203 // + related pages
2204 // - examples
2205
2206 QCString outputDirectory = Config_getString(XML_OUTPUT);
2207 Dir xmlDir(outputDirectory.str());
2208 createSubDirs(xmlDir);
2209
2210 ResourceMgr::instance().copyResource("xml.xsd",outputDirectory);
2211 ResourceMgr::instance().copyResource("index.xsd",outputDirectory);
2212
2213 QCString fileName=outputDirectory+"/compound.xsd";
2214 std::ofstream f = Portable::openOutputStream(fileName);
2215 if (!f.is_open())
2216 {
2217 err("Cannot open file {} for writing!\n",fileName);
2218 return;
2219 }
2220 {
2221 TextStream t(&f);
2222
2223 // write compound.xsd, but replace special marker with the entities
2224 QCString compound_xsd = ResourceMgr::instance().getAsString("compound.xsd");
2225 const char *startLine = compound_xsd.data();
2226 while (*startLine)
2227 {
2228 // find end of the line
2229 const char *endLine = startLine+1;
2230 while (*endLine && *(endLine-1)!='\n') endLine++; // skip to end of the line including \n
2231 int len=static_cast<int>(endLine-startLine);
2232 if (len>0)
2233 {
2234 QCString s(startLine,len);
2235 if (s.find("<!-- Automatically insert here the HTML entities -->")!=-1)
2236 {
2238 }
2239 else
2240 {
2241 t.write(startLine,len);
2242 }
2243 }
2244 startLine=endLine;
2245 }
2246 }
2247 f.close();
2248
2249 fileName=outputDirectory+"/doxyfile.xsd";
2250 f = Portable::openOutputStream(fileName);
2251 if (!f.is_open())
2252 {
2253 err("Cannot open file {} for writing!\n",fileName);
2254 return;
2255 }
2256 {
2257 TextStream t(&f);
2258
2259 // write doxyfile.xsd, but replace special marker with the entities
2260 QCString doxyfile_xsd = ResourceMgr::instance().getAsString("doxyfile.xsd");
2261 const char *startLine = doxyfile_xsd.data();
2262 while (*startLine)
2263 {
2264 // find end of the line
2265 const char *endLine = startLine+1;
2266 while (*endLine && *(endLine-1)!='\n') endLine++; // skip to end of the line including \n
2267 int len=static_cast<int>(endLine-startLine);
2268 if (len>0)
2269 {
2270 QCString s(startLine,len);
2271 if (s.find("<!-- Automatically insert here the configuration settings -->")!=-1)
2272 {
2274 }
2275 else
2276 {
2277 t.write(startLine,len);
2278 }
2279 }
2280 startLine=endLine;
2281 }
2282 }
2283 f.close();
2284
2285 fileName=outputDirectory+"/Doxyfile.xml";
2286 f = Portable::openOutputStream(fileName);
2287 if (!f.is_open())
2288 {
2289 err("Cannot open file {} for writing\n",fileName);
2290 return;
2291 }
2292 else
2293 {
2294 TextStream t(&f);
2296 }
2297 f.close();
2298
2299 fileName=outputDirectory+"/index.xml";
2300 f = Portable::openOutputStream(fileName);
2301 if (!f.is_open())
2302 {
2303 err("Cannot open file {} for writing!\n",fileName);
2304 return;
2305 }
2306 else
2307 {
2308 TextStream t(&f);
2309
2310 // write index header
2311 t << "<?xml version='1.0' encoding='UTF-8' standalone='no'?>\n";
2312 t << "<doxygenindex xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";
2313 t << "xsi:noNamespaceSchemaLocation=\"index.xsd\" ";
2314 t << "version=\"" << getDoxygenVersion() << "\" ";
2315 t << "xml:lang=\"" << theTranslator->trISOLang() << "\"";
2316 t << ">\n";
2317
2318 for (const auto &cd : *Doxygen::classLinkedMap)
2319 {
2320 generateXMLForClass(cd.get(),t);
2321 }
2322 for (const auto &cd : *Doxygen::conceptLinkedMap)
2323 {
2324 msg("Generating XML output for concept {}\n",cd->displayName());
2325 generateXMLForConcept(cd.get(),t);
2326 }
2327 for (const auto &nd : *Doxygen::namespaceLinkedMap)
2328 {
2329 msg("Generating XML output for namespace {}\n",nd->displayName());
2330 generateXMLForNamespace(nd.get(),t);
2331 }
2332 for (const auto &fn : *Doxygen::inputNameLinkedMap)
2333 {
2334 for (const auto &fd : *fn)
2335 {
2336 msg("Generating XML output for file {}\n",fd->name());
2337 generateXMLForFile(fd.get(),t);
2338 }
2339 }
2340 for (const auto &gd : *Doxygen::groupLinkedMap)
2341 {
2342 msg("Generating XML output for group {}\n",gd->name());
2343 generateXMLForGroup(gd.get(),t);
2344 }
2345 for (const auto &pd : *Doxygen::pageLinkedMap)
2346 {
2347 msg("Generating XML output for page {}\n",pd->name());
2348 generateXMLForPage(pd.get(),t,FALSE);
2349 }
2350 for (const auto &dd : *Doxygen::dirLinkedMap)
2351 {
2352 msg("Generate XML output for dir {}\n",dd->name());
2353 generateXMLForDir(dd.get(),t);
2354 }
2355 for (const auto &mod : ModuleManager::instance().modules())
2356 {
2357 msg("Generating XML output for module {}\n",mod->name());
2358 generateXMLForModule(mod.get(),t);
2359 }
2360 for (const auto &pd : *Doxygen::exampleLinkedMap)
2361 {
2362 msg("Generating XML output for example {}\n",pd->name());
2363 generateXMLForPage(pd.get(),t,TRUE);
2364 }
2366 {
2367 msg("Generating XML output for the main page\n");
2369 }
2370
2371 //t << " </compoundlist>\n";
2372 t << "</doxygenindex>\n";
2373 }
2374
2376 clearSubDirs(xmlDir);
2377}

References Doxygen::classLinkedMap, clearSubDirs, Doxygen::conceptLinkedMap, Config_getString, ResourceMgr::copyResource, createSubDirs, QCString::data, Doxygen::dirLinkedMap, err, Doxygen::exampleLinkedMap, FALSE, QCString::find, generateXMLForClass, generateXMLForConcept, generateXMLForDir, generateXMLForFile, generateXMLForGroup, generateXMLForModule, generateXMLForNamespace, generateXMLForPage, ResourceMgr::getAsString, Doxygen::groupLinkedMap, Doxygen::inputNameLinkedMap, HtmlEntityMapper::instance, ModuleManager::instance, ResourceMgr::instance, Doxygen::mainPage, msg, Doxygen::namespaceLinkedMap, Portable::openOutputStream, Doxygen::pageLinkedMap, QCString::str, theTranslator, TRUE, TextStream::write, writeCombineScript, Config::writeXMLDoxyfile, HtmlEntityMapper::writeXMLSchema and Config::writeXSDDoxyfile.

Referenced by generateOutput.


Generated via doxygen2docusaurus by Doxygen 1.14.0.