aboutsummaryrefslogtreecommitdiffstats
path: root/yage/core/logsink.h
diff options
context:
space:
mode:
Diffstat (limited to 'yage/core/logsink.h')
-rw-r--r--yage/core/logsink.h95
1 files changed, 0 insertions, 95 deletions
diff --git a/yage/core/logsink.h b/yage/core/logsink.h
deleted file mode 100644
index 16812b16..00000000
--- a/yage/core/logsink.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/** ---------------------------------------------------------------------------
- * @file: logsink.h
- *
- * Copyright (c) 2017 Yann Herklotz Grave <ymherklotz@gmail.com>
- * MIT License, see LICENSE file for more details.
- * ----------------------------------------------------------------------------
- */
-
-/// @file
-
-#ifndef YAGE_CORE_LOGSINK_H
-#define YAGE_CORE_LOGSINK_H
-
-/// @todo remove the include to make compilation faster
-#include "logmessage.h"
-
-#include <memory>
-#include <string>
-
-namespace yage
-{
-
-class LogSink
-{
-public:
- template <typename T>
- LogSink(T impl);
-
- LogSink(const LogSink &sink);
- LogSink(LogSink &&sink);
-
- LogSink &operator=(const LogSink &sink);
- LogSink &operator=(LogSink &&sink);
- bool operator==(const LogSink &sink);
-
- void write(const LogMessage::Meta &meta, const std::string &msg) const;
-
-private:
- struct Concept {
- virtual ~Concept() = default;
-
- virtual Concept *clone() const = 0;
- virtual void write(const LogMessage::Meta &meta,
- const std::string &msg) const = 0;
- };
-
- template <typename T>
- struct Model : Concept {
- Model(T impl_i);
- virtual Concept *clone() const override;
- virtual void write(const LogMessage::Meta &meta,
- const std::string &msg) const override;
-
- T impl;
- };
-
- std::unique_ptr<Concept> wrapper_;
-};
-
-LogSink makeConsoleSink();
-
-LogSink makeFileSink(const std::string &filename);
-LogSink makeFileSink(std::string &&filename);
-
-/* -----------------------------------------------------------------------------
- * Template Implementation
- * -----------------------------------------------------------------------------
- */
-
-template <typename T>
-LogSink::LogSink(T impl) : wrapper_(new Model<T>(std::move(impl)))
-{
-}
-
-template <typename T>
-LogSink::Model<T>::Model(T impl_i) : impl(impl_i)
-{
-}
-
-template <typename T>
-LogSink::Concept *LogSink::Model<T>::clone() const
-{
- return new Model<T>(impl);
-}
-
-template <typename T>
-void LogSink::Model<T>::write(const LogMessage::Meta &meta,
- const std::string &msg) const
-{
- impl(meta, msg);
-}
-
-} // namespace yage
-
-#endif