/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
   file Copyright.txt or https://cmake.org/licensing for details.  */
#ifndef cmPathLabel_h
#define cmPathLabel_h

#include "cmConfigure.h" // IWYU pragma: keep

#include <string>

/** \class cmPathLabel
 * \brief Helper class for text based labels
 *
 * cmPathLabel is extended in different classes to act as an inheritable
 * enum.  Comparisons are done on a precomputed Jenkins hash of the string
 * label for indexing and searchig.
 */
class cmPathLabel
{
public:
  cmPathLabel(std::string label);

  // The comparison operators are only for quick sorting and searching and
  // in no way imply any lexicographical order of the label
  bool operator<(const cmPathLabel& l) const;
  bool operator==(const cmPathLabel& l) const;

  const std::string& GetLabel() const { return this->Label; }
  const unsigned int& GetHash() const { return this->Hash; }

protected:
  cmPathLabel();

  std::string Label;
  unsigned int Hash;
};

#endif
