Listing 2: Build configuration class interface

// The BuildConfiguration class

class BuildConfiguration
{
  private:
    typedef std::set<const VersionStamp*, 
                     VersionStampPtrLess> VersionInfo;
  
  public:
    typedef VersionInfo::const_iterator const_iterator;  

  public:
    static BuildConfiguration& Instance();

    void Output(std::ostream& out) const;
    void AddFile(const VersionStamp* fileStamp);

    const_iterator begin() const;
    const_iterator end() const;

  private:
    // Private for Singleton
    BuildConfiguration();

    // Unimplemented
    BuildConfiguration(const BuildConfiguration&);
    BuildConfiguration& operator=(const BuildConfiguration&);

  private:
   VersionInfo mConfig;
};
— End of Listing —