1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lsylovews-CM-Server

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
tool.h 1.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
lsylovews Отправлено 22.02.2019 15:22 e234e9a
#ifndef TOOL_H
#define TOOL_H
#include<string>
#include<sstream>
#include<atomic>
#include<mutex>
#define CLASS_ESSENTAIL(__TYPE__) \
private: \
__TYPE__(){} \
public: \
virtual ~__TYPE__(){}
#define Inherit(__TYPE__) :public __TYPE__
//单实例设计模式基本参数
#define SINGLE_ATTRIBUTES(__TYPE__) \
private: \
static __TYPE__* m_instance; \
static std::atomic<__TYPE__*> m_load; \
static std::mutex m_mutex
//定义单实例设计模式的基本参数
#define DEFINE_SINGLE_ATTRIBUTES(__TYPE__) \
std::atomic<__TYPE__*> __TYPE__::m_load; \
std::mutex __TYPE__::m_mutex; \
__TYPE__* __TYPE__::m_instance = nullptr
//获取单实例设计模式的实例对象
#define GET_SINGLE_OBJECT(__TYPE__) \
public: \
static __TYPE__* getInstance() \
{ \
m_instance = m_load.load(std::memory_order_relaxed); \
std::atomic_thread_fence(std::memory_order_acquire); \
if (m_instance == nullptr) \
{ \
std::lock_guard<std::mutex> lock(m_mutex); \
m_instance = m_load.load(std::memory_order_relaxed); \
if (m_instance == nullptr) \
{ \
m_instance = new __TYPE__; \
std::atomic_thread_fence(std::memory_order_release); \
m_load.store(m_instance, std::memory_order_release); \
} \
} \
return m_instance; \
}
#define GettingAndSetting(varType,varName,funName) \
protected: varType varName; \
public: virtual varType get##funName(void){return varName;} \
public: virtual void set##funName(varType var) {varName=var;}
#define PROPERTY__REF(varType, varName, funName) \
protected: varType varName; \
public: virtual varType& get##funName(void){return varName;} \
public: virtual void set##funName(const varType& var){varName=var;}
#define NTS numberToString
std::string numberToString(float number);
bool isNum(const std::string & number);
#endif // TOOL_H

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/lsylovews-CM-Server.git
git@api.gitlife.ru:oschina-mirror/lsylovews-CM-Server.git
oschina-mirror
lsylovews-CM-Server
lsylovews-CM-Server
master