9#ifndef SQUID_SRC_BASE_HERE_H
10#define SQUID_SRC_BASE_HERE_H
15#define Here() SourceLocation(__func__, __FILE__, __LINE__)
32 SourceLocation(
const char *aContext,
const char *aFileName,
const int aLineNo):
43 std::ostream &
print(std::ostream &os)
const;
57 return location.
print(os);
66 static const char *hashedFilename =
nullptr;
69 if (hashedFilename != fileName) {
70 hashedFilename = fileName;
71 cachedHash = hasher(fileName);
std::ostream & operator<<(std::ostream &os, const SourceLocation &location)
static FileNameHashCacher UnitFileNameHashCacher
SourceLocationId FileNameHashCacher(const char *fileName, FileNameHasher hasher)
a caching proxy for hasher results
SourceLocationId FileNameHasher(const char *fileName)
returns a hash of a file name
uint32_t SourceLocationId
semi-uniquely identifies a source code location; stable across Squid runs
a source code location that is cheap to create, copy, and store
const char * fileName
source file name, often relative to build path
SourceLocationId id() const
int lineNo
line number inside the source file name (if positive)
std::ostream & print(std::ostream &os) const
describes location using a compact but human-friendly format
const char * context
line-independent location description
SourceLocationId calculateId(FileNameHasher) const
SourceLocation(const char *aContext, const char *aFileName, const int aLineNo)
FileNameHashCacher * fileNameHashCacher