From df24addf48a6de2c4ef4e1723ae7d9c1d261dabe Mon Sep 17 00:00:00 2001 From: chai Date: Tue, 7 Aug 2018 11:52:27 +0800 Subject: *update --- libjin/Thread/Thread.cpp | 7 +++++++ libjin/Thread/Thread.h | 48 ++++++++++++++++++++++++++++++++---------------- libjin/Utils/Log.h | 10 +++++----- libjin/jin.h | 8 ++++---- 4 files changed, 48 insertions(+), 25 deletions(-) diff --git a/libjin/Thread/Thread.cpp b/libjin/Thread/Thread.cpp index 374778b..064d3db 100644 --- a/libjin/Thread/Thread.cpp +++ b/libjin/Thread/Thread.cpp @@ -296,6 +296,13 @@ namespace thread return v; } + void Thread::remove(int slot) + { + lock(); + common->remove(slot); + unlock(); + } + } // thread } // jin diff --git a/libjin/Thread/Thread.h b/libjin/Thread/Thread.h index aeb0d9e..37c978d 100644 --- a/libjin/Thread/Thread.h +++ b/libjin/Thread/Thread.h @@ -42,23 +42,36 @@ namespace thread class Thread { public: - - union Variant + struct Variant { - int integer; - bool boolean; - char character; - const char* cstring; - void* pointer; - float real; - - Variant() {}; - Variant(int i) : integer(i) {}; - Variant(float f) : real(f) {}; - Variant(bool b) : boolean(b) {}; - Variant(char c) : character(c) {}; - Variant(const char* s) : cstring(s) {}; - Variant(void* p) : pointer(p) {}; + enum Type + { + NONE = 0, + INTERGER, + BOOLEAN, + CHARACTER, + CSTRING, + POINTER, + REAL, + }; + Type type; + union + { + int integer; + bool boolean; + char character; + const char* cstring; + void* pointer; + float real; + }; + Variant() :type(NONE) {}; + Variant(const Variant& v){ memcpy(this, &v, sizeof(v)); } + Variant(int i) : integer(i), type(INTERGER) {}; + Variant(float f) : real(f), type(REAL) {}; + Variant(bool b) : boolean(b), type(BOOLEAN) {}; + Variant(char c) : character(c), type(CHARACTER) {}; + Variant(const char* s) : cstring(s), type(CSTRING) {}; + Variant(void* p) : pointer(p), type(POINTER) {}; }; private: @@ -76,6 +89,8 @@ namespace thread static const int SLOT_ERROR = -1; static const int SLOT_WARN = -2; + static const int SLOT_INFO = -3; + static const int SLOT_DEBUG = -4; private: std::map share; // threads shared value @@ -91,6 +106,7 @@ namespace thread bool receive(int slot); Variant fetch(int slot); Variant demand(int slot); + void remove(int slot); const char* getName(); bool isRunning(); void lock(); diff --git a/libjin/Utils/Log.h b/libjin/Utils/Log.h index b047402..50ec3c8 100644 --- a/libjin/Utils/Log.h +++ b/libjin/Utils/Log.h @@ -65,19 +65,19 @@ void Loghelper::log(Level _level, const char* _fmt, ...) switch (_level) { case LV_ERROR: - levelStr = "Error: "; + levelStr = "[Jin Error]:"; break; case LV_WARN: - levelStr = "Warn: "; + levelStr = "[Jin Warn]:"; break; case LV_INFO: - levelStr = "Info: "; + levelStr = "[Jin Info]:"; break; case LV_DEBUG: - levelStr = "Debug: "; + levelStr = "[Jin Debug]:"; break; default: - levelStr = "Unknown: "; + levelStr = "[Jin Unknown]:"; break; } char buffer[FORMAT_MSG_BUFFER_SIZE + 1] = { 0 }; diff --git a/libjin/jin.h b/libjin/jin.h index ad83fae..239fddd 100644 --- a/libjin/jin.h +++ b/libjin/jin.h @@ -15,9 +15,9 @@ #include "Time/Timer.h" #include "Thread/Thread.h" -const char* JIN_VERSION = "Jin 0.1"; -const char* JIN_AUTHOR = "Chai"; -const char* JIN_RELEASE = "Jin 0.1.1"; -const int JIN_VERSION_NUM = 101; +#define JIN_VERSION "Jin 0.1"; +#define JIN_AUTHOR "Chai"; +#define JIN_RELEASE "Jin 0.1.1"; +#define JIN_VERSION_NUM 101; #endif // __JIN_H \ No newline at end of file -- cgit v1.1-26-g67d0