Doxygen
Loading...
Searching...
No Matches
codefragment.cpp File Reference
#include <mutex>
#include <unordered_map>
#include <map>
#include "codefragment.h"
#include "util.h"
#include "doxygen.h"
#include "parserintf.h"
#include "outputlist.h"
#include "clangparser.h"
#include "trace.h"
#include "fileinfo.h"
#include "filedef.h"
#include "portable.h"
#include "message.h"
#include "filename.h"
Include dependency graph for codefragment.cpp:

Go to the source code of this file.

Classes

struct  CodeFragmentManager::Private
struct  CodeFragmentManager::Private::BlockMarker
struct  CodeFragmentManager::Private::FragmentInfo

Functions

static DString readTextFileByName (const DString &file)

Function Documentation

◆ readTextFileByName()

DString readTextFileByName ( const DString & file)
static

Definition at line 196 of file codefragment.cpp.

197{
198 AUTO_TRACE("file={}",file);
199 if (Portable::isAbsolutePath(file))
200 {
201 FileInfo fi(file.str());
202 if (fi.exists())
203 {
204 size_t indent=0;
205 return detab(fileToString(file,Config_getBool(FILTER_SOURCE_FILES)),indent);
206 }
207 }
208 StringVector examplePathList = Config_getList(EXAMPLE_PATH);
209 for (const auto &s : examplePathList)
210 {
211 std::string absFileName = s+(Portable::pathSeparator()+file).str();
212 FileInfo fi(absFileName);
213 if (fi.exists())
214 {
215 size_t indent=0;
216 return detab(fileToString(absFileName,Config_getBool(FILTER_SOURCE_FILES)),indent);
217 }
218 }
219
220 // as a fallback we also look in the exampleNameDict
221 bool ambig=false;
223 if (fd)
224 {
225 if (ambig)
226 {
227 err("included file name '{}' is ambiguous.\nPossible candidates:\n{}\n",file,
228 Doxygen::exampleNameLinkedMap->showFileDefMatches(file)
229 );
230 }
231 size_t indent = 0;
232 return detab(fileToString(fd->absFilePath(),Config_getBool(FILTER_SOURCE_FILES)),indent);
233 }
234 else
235 {
236 err("included file {} is not found. Check your EXAMPLE_PATH\n",file);
237 }
238 return DString();
239}
A String class for use with Doxygen wrapping std::string and adding some additional functionality off...
Definition dstring.h:88
const std::string & str() const
Definition dstring.h:649
static FileNameLinkedMap * exampleNameLinkedMap
Definition doxygen.h:95
A model of a file symbol.
Definition filedef.h:97
virtual DString absFilePath() const =0
Minimal replacement for QFileInfo.
Definition fileinfo.h:26
FileDef * findFileDef(const DString &n, bool &ambig) const
Returns the file definition in fnMap that matches the file name n.
Definition filename.cpp:36
#define Config_getList(name)
Definition config.h:38
#define Config_getBool(name)
Definition config.h:33
std::vector< std::string > StringVector
Definition containers.h:33
#define AUTO_TRACE(...)
Definition docnode.cpp:51
#define err(fmt,...)
Definition message.h:127
DString pathSeparator()
Definition portable.cpp:374
bool isAbsolutePath(const DString &fileName)
Definition portable.cpp:497
DString detab(const DString &s, size_t &refIndent)
Definition util.cpp:5181
DString fileToString(const DString &name, bool filter, bool isSourceCode)
Definition util.cpp:1055

References FileDef::absFilePath(), AUTO_TRACE, Config_getBool, Config_getList, detab(), err, Doxygen::exampleNameLinkedMap, FileInfo::exists(), fileToString(), FileNameLinkedMap::findFileDef(), Portable::isAbsolutePath(), Portable::pathSeparator(), and DString::str().

Referenced by CodeFragmentManager::parseCodeFragment().