text: #pragma once
  
  #include <QHash>
  #include <QString>
  #include <functional>
  
  #define QStringAlias(name)                                 \
      namespace chatterino {                                 \
      struct name {                                          \
          QString string;                                    \
          bool operator==(const name &other) const           \
          {                                                  \
              return this->string == other.string;           \
          }                                                  \
          bool operator!=(const name &other) const           \
          {                                                  \
              return this->string != other.string;           \
          }                                                  \
      };                                                     \
      } /* namespace chatterino */                           \
      namespace std {                                        \
      template <>                                            \
      struct hash<chatterino::name> {                        \
          size_t operator()(const chatterino::name &s) const \
          {                                                  \
              return qHash(s.string);                        \
          }                                                  \
      };                                                     \
      } /* namespace std */
  
  QStringAlias(UserName);
  QStringAlias(UserId);
  QStringAlias(Url);
  QStringAlias(Tooltip);
  QStringAlias(EmoteId);
  QStringAlias(EmoteName);
  