/* Web Polygraph http://www.web-polygraph.org/
* (C) 2003-2006 The Measurement Factory
* Licensed under the Apache License, Version 2.0 */
#ifndef POLYGRAPH__XSTD_SRCLOC_H
#define POLYGRAPH__XSTD_SRCLOC_H
#include "xstd/h/iosfwd.h"
#include "xstd/String.h"
#define Here SrcLoc(__FILE__, __LINE__)
// source location holder
class SrcLoc {
public:
SrcLoc(const String &aFname = 0, int aLineNo = 1);
int lineno() const { return theLineNo; }
const String &fname() const { return theFName; }
operator void*() const { return theFName.len() ? (void*)-1 : 0; }
SrcLoc &operator ++() { ++theLineNo; return *this; }
bool sameLine(const SrcLoc &t) const;
ostream &print(ostream &os) const;
protected:
String theFName;
int theLineNo;
};
inline ostream &operator <<(ostream &os, const SrcLoc &l) { return l.print(os); }
#endif
syntax highlighted by Code2HTML, v. 0.9.1