mirror-chatterino2/src/messages/messagebuilder.hpp
2018-01-28 15:28:02 +01:00

40 lines
814 B
C++

#pragma once
#include "messages/message.hpp"
#include <QRegularExpression>
#include <ctime>
namespace chatterino {
namespace messages {
struct MessageBuilder {
public:
MessageBuilder();
MessagePtr getMessage();
void setHighlight(bool value);
void append(MessageElement *element);
void appendTimestamp();
void appendTimestamp(const QTime &time);
QString matchLink(const QString &string);
template <typename T, typename... Args>
T *emplace(Args &&... args)
{
static_assert(std::is_base_of<MessageElement, T>::value, "T must extend MessageElement");
T *element = new T(std::forward<Args>(args)...);
this->append(element);
return element;
}
protected:
MessagePtr message;
};
} // namespace messages
} // namespace chatterino