封装了一些辅助类
来源:互联网 发布:淘宝卖家有什么好软件 编辑:程序博客网 时间:2024/05/16 09:35
RefClassHelper.h
/******************************************************************** author : Clark/陈泽丹 created : 2013-5-8 purpose : 反射辅助类*********************************************************************/#pragma once//反射类型struct RefClassType{//获取类型virtual long GetType() = 0;};//获得反射类型template< class Base, int TYPE_ID >struct GetClassTypeEx: public Base{//获取类型virtual long GetType(){ return TYPE_ID; }};//实例IDstruct RefClassID{//获取类型virtual long GetID() = 0;};//获得类型IDtemplate< class Base >struct GetClassIDEx: public Base{public:GetClassIDEx(const long _id):ID(_id){}//获取类型virtual long GetID(){ return ID; }private:const long ID;};
ServerDllHelper.h
/******************************************************************** author : Clark/陈泽丹 created : 2013-5-8 purpose : DLL辅助类*********************************************************************/#pragma once#include <Windows.h>template< class _Ret, class _IUserServer, class _IGlobalServer >class CServerDllHelper{private:typedef _Ret (*ProcDLLFun)(_IUserServer **_ppIUserServer, _IGlobalServer *_pIGlobalServer);public:CServerDllHelper():m_hDll(NULL),m_pUserServer(NULL){ m_szErrMsg[0] = 0; }~CServerDllHelper(){Close(); if ( NULL != m_hDll ){::FreeLibrary(m_hDll); m_hDll = NULL; }}//销毁接口对象void Close(){if ( NULL != m_pUserServer ){//m_pUserServer->Release();m_pUserServer = NULL;}}// 描 述:创建服务器// 返回值:BOOL - 创建成功则返回TRUE,否则返回FALSEBOOL Create(LPCSTR _dll_name, LPCSTR _create_fun_name, _IGlobalServer *_pServerGlobal){Close();try{if ( NULL == m_hDll ){//第一次调用时未加载dll,下面进行加载dllm_hDll = ::LoadLibrary(_dll_name);if (m_hDll == NULL){lstrcpy(m_szErrMsg,"Can't load ");lstrcat(m_szErrMsg, _dll_name);throw m_szErrMsg;}}//下面获得dll的输出函数,即接口对象的创建函数ProcDLLFun proc = NULL;proc = (ProcDLLFun)::GetProcAddress(m_hDll,_create_fun_name);if ( NULL == proc ){lstrcpy(m_szErrMsg,"Can't GetProcAddress(");lstrcat(m_szErrMsg, _create_fun_name);lstrcat(m_szErrMsg, ")");throw m_szErrMsg;}if (!proc( &m_pUserServer, _pServerGlobal )){lstrcpy(m_szErrMsg,_create_fun_name);lstrcat(m_szErrMsg, " error!");throw m_szErrMsg;}return TRUE;//接口对象创建成功}catch (LPCSTR szMsg) {throw szMsg;return FALSE;}catch(...){lstrcpyn(m_szErrMsg, "Unknown Error!", sizeof(m_szErrMsg));return FALSE;}}//重载->,将helper对象的引用直接转为接口的引用_IUserServer* operator ->(){ return m_pUserServer; }//获得相关服务_IUserServer* GetServer(){ return m_pUserServer; }//判断接口指针是否有效BOOL IsValid(){ return ( NULL != m_pUserServer ); }//获得错误信息char* GetErrMsg(){ return m_szErrMsg; }private:_IUserServer*m_pUserServer;//接口对象HINSTANCEm_hDll;//动态链接库加载与否标志charm_szErrMsg[128];//错误信息};
UtilHelper.h
/******************************************************************** author : Clark/陈泽丹 created : 2013-5-8 purpose : 应用工具类*********************************************************************/#pragma once#include <iostream>using namespace std;#define TRACELN( MSG )do{ cout<<MSG<<endl; } while(0)#define TRACEERR( MSG )do{ cout<<"Error "<<MSG<<endl; } while(0)#define UTIL_TRUE_NORETURN( CONDITION )do{ if( CONDITION ) return; } while(0)#define UTIL_TRUE_RETURN( CONDITION, RET_VAL )do{ if( CONDITION ) return RET_VAL; } while(0)#define UTIL_TRUE_TRACE_NORETURN( CONDITION, MSG )do{ if( CONDITION ) { cout<<MSG<<endl; return; } } while(0)#define UTIL_TRUE_TRACE_RETURN( CONDITION, MSG, RET_VAL )do{ if( CONDITION ) { cout<<MSG<<endl; return RET_VAL; } } while(0)
ITrace.h
#pragma once#include <Windows.h>// Trace接口struct ITrace{// 销毁Tracevirtual void Release(void) = 0;// Trace普通信息(带回车换行功能, 线程安全, 蓝色)virtual BOOL TraceLn(LPCSTR lpszFormat, ...) = 0;// Trace错误信息(带回车换行功能, 线程安全, 红色)virtual BOOL TraceErrorLn(LPCSTR lpszFormat, ...) = 0;// Trace信息(带回车换行功能, 线程安全, 颜色自定义)virtual BOOL TraceColorLn(COLORREF color, LPCSTR lpszFormat, ...) = 0;};
#include "ITrace.h"#include "UtilHelper.h"class ServerTrace : public ITrace{public:// 销毁Tracevirtual void Release(void){}// Trace普通信息(带回车换行功能, 线程安全, 蓝色)virtual BOOL TraceLn(LPCSTR lpszFormat, ...){va_listargs;va_start(args, lpszFormat);_vsnprintf_s(m_msg, sizeof(m_msg) - 1, lpszFormat, args);TRACELN(m_msg); va_end(args);return TRUE;}// Trace错误信息(带回车换行功能, 线程安全, 红色)virtual BOOL TraceErrorLn(LPCSTR lpszFormat, ...){va_listargs;va_start(args, lpszFormat);_vsnprintf_s(m_msg, sizeof(m_msg) - 1, lpszFormat, args);TRACELN(m_msg); va_end(args);return TRUE;}// Trace信息(带回车换行功能, 线程安全, 颜色自定义)virtual BOOL TraceColorLn(COLORREF color, LPCSTR lpszFormat, ...){va_listargs;va_start(args, lpszFormat);_vsnprintf_s(m_msg, sizeof(m_msg) - 1, lpszFormat, args);TRACELN(m_msg); va_end(args);return TRUE;}private:enum { BUF_MAX = 1024 };char m_msg[BUF_MAX];};struct IServerGlobal;extern "C" __declspec(dllexport) BOOL CreateServerTrace(ITrace **_ppServerTrace, IServerGlobal *_pServerGlobal){UTIL_TRUE_TRACE_RETURN( NULL == _pServerGlobal, "Error, _pServerGlobal is null!", FALSE );ITrace* p_trace = new ServerTrace();UTIL_TRUE_TRACE_RETURN( (NULL == p_trace), "Error, CreateServerTrace!", FALSE );*_ppServerTrace = p_trace;return TRUE;}
- 封装了一些辅助类
- 辅助类之Logger封装类
- 实用辅助类-gzip解压类封装
- 封装一个HTTP请求的辅助类
- jdbc 简单通用JDBC辅助类封装
- java辅助开发的两个封装类
- Javascript 库,封装了一些常用函数
- 辅助类之读取Properties文件封装类
- Android入门:封装一个HTTP请求的辅助类
- Android入门:封装一个HTTP请求的辅助类
- Android入门:封装一个HTTP请求的辅助类
- Android入门:封装一个HTTP请求的辅助类
- Android入门:封装一个HTTP请求的辅助类
- Android入门:封装一个HTTP请求的辅助类
- Android入门:封装一个HTTP请求的辅助类
- Android入门:封装一个HTTP请求的辅助类
- Android入门:封装一个HTTP请求的辅助类
- Java一些辅助知识
- static 数据成员必须在类定义的外部定义
- 在ubuntu12.04 virtualbox4.2中xp 安装增强功能工具
- php读取mysql结果集的函数
- DICOM开发工具总结
- 全排列算法原理和实现
- 封装了一些辅助类
- Cocos2d-x学习之创建Android工程和编译
- 【转】博弈论--取物品和Nim游戏
- uva 10603 Fill
- 整站源码测试之一
- web.py文件上传实例
- 5.View学习(Official Tutorials)
- Quantization
- 高效程序员的 7 个共同特征