From cc429b68fadc502b981fd0acd64a5ff6e2ae1d15 Mon Sep 17 00:00:00 2001 From: psychocrypt Date: Fri, 29 Sep 2017 20:32:31 +0200 Subject: group files - move source code to `src` - categorize files and move to group folder - change upper case class files to lower case - change C++ header to `*.hpp` --- xmrstak/misc/console.hpp | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 xmrstak/misc/console.hpp (limited to 'xmrstak/misc/console.hpp') diff --git a/xmrstak/misc/console.hpp b/xmrstak/misc/console.hpp new file mode 100644 index 0000000..ac2ed3c --- /dev/null +++ b/xmrstak/misc/console.hpp @@ -0,0 +1,47 @@ +#pragma once +#include +#include "Environment.hpp" + +enum out_colours { K_RED, K_GREEN, K_BLUE, K_YELLOW, K_CYAN, K_MAGENTA, K_WHITE, K_NONE }; + +// Warning - on Linux get_key will detect control keys, but not on Windows. +// We will only use it for alphanum keys anyway. +int get_key(); + +void set_colour(out_colours cl); +void reset_colour(); + +// on MSVC sizeof(long int) = 4, gcc sizeof(long int) = 8, this is the workaround +// now we can use %llu on both compilers +inline long long unsigned int int_port(size_t i) +{ + return i; +} + +enum verbosity : size_t { L0 = 0, L1 = 1, L2 = 2, L3 = 3, L4 = 4, LINF = 100}; + +class printer +{ +public: + static inline printer* inst() + { + auto& env = xmrstak::Environment::inst(); + if(env.pPrinter == nullptr) + env.pPrinter = new printer; + return env.pPrinter; + }; + + inline void set_verbose_level(size_t level) { verbose_level = (verbosity)level; } + void print_msg(verbosity verbose, const char* fmt, ...); + void print_str(const char* str); + bool open_logfile(const char* file); + +private: + printer(); + + std::mutex print_mutex; + verbosity verbose_level; + FILE* logfile; +}; + +void win_exit(); -- cgit v1.1