33 std::string SourceFileFullPath;
42 std::string RecordedResult =
RawSymbol->getSourceFileName();
44 if (RecordedResult.empty()) {
46 std::string EnvWorkingDir, EnvSrc;
48 while (
auto Env = Envs->getNext()) {
49 std::string Var = Env->getName();
51 EnvWorkingDir = Env->getValue();
55 EnvSrc = Env->getValue();
58 RecordedResult = EnvSrc;
62 if (!EnvWorkingDir.empty() && !EnvSrc.empty()) {
63 auto Len = EnvWorkingDir.length();
64 if (EnvWorkingDir[Len - 1] !=
'/' && EnvWorkingDir[Len - 1] !=
'\\') {
65 std::string
Path = EnvWorkingDir +
"\\" + EnvSrc;
69 SourceFileFullPath =
Path;
75 if (!RecordedResult.empty()) {
77 return RecordedResult;
80 auto OneSrcFile =
Session.findOneSourceFile(
83 return OneSrcFile->getFileName();
90 PDB_Lang Lang = Details ? Details->getLanguage() : PDB_Lang::Cpp;
91 auto SrcFiles =
Session.getSourceFilesForCompiland(*
this);
93 while (
auto File = SrcFiles->getNext()) {
94 std::string FileName = File->getFileName();
97 .
Case(
".cpp", Lang == PDB_Lang::Cpp)
98 .
Case(
".cc", Lang == PDB_Lang::Cpp)
99 .
Case(
".cxx", Lang == PDB_Lang::Cpp)
100 .
Case(
".c", Lang == PDB_Lang::C)
101 .
Case(
".asm", Lang == PDB_Lang::Masm)
102 .
Case(
".swift", Lang == PDB_Lang::Swift)
103 .
Case(
".rs", Lang == PDB_Lang::Rust)
104 .
Case(
".m", Lang == PDB_Lang::ObjC)
105 .
Case(
".mm", Lang == PDB_Lang::ObjCpp)
107 return File->getFileName();
111 return SourceFileFullPath;
void replace(R &&Range, const T &OldValue, const T &NewValue)
Provide wrappers to std::replace which take ranges instead of having to pass begin/end explicitly.