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 —