Listing 1: VersionStamp class interface
// The VersionStamp Class & FILE_VERSION MACRO
class VersionStamp
{
public:
VersionStamp(const char* file, const char* date,
const char* time, const char* ver);
const char* FileName() const;
std::string Version() const;
const char* BuildDate() const;
const char* BuildTime() const;
bool operator<(const VersionStamp& rhs) const;
private:
const char* mFileName;
const char* mBuildDate;
const char* mBuildTime;
const char* mVersion;
};
struct VersionStampPtrLess
{
bool operator()(const VersionStamp* lhs,
const VersionStamp* rhs);
};
#define FILEVERHELP(VER, NM) \
static VersionStamp vs##NM(__FILE__, __DATE__, __TIME__, VER)
#define FILE_VERSION(VER, NAME) FILEVERHELP(VER, NAME)
End of Listing