StdAfx.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. // stdafx.h : include file for standard system include files,
  2. //  or project specific include files that are used frequently, but
  3. //      are changed infrequently
  4. //
  5. #if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
  6. #define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_
  7. #if _MSC_VER > 1000
  8. #pragma once
  9. #endif // _MSC_VER > 1000
  10. #pragma warning(disable: 4786)
  11. #pragma warning(disable: 4503)
  12. #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
  13. // Windows Header Files:
  14. #include <windows.h>
  15. // C RunTime Header Files
  16. #include <stdlib.h>
  17. #include <malloc.h>
  18. #include <memory.h>
  19. #include <tchar.h>
  20. // Local Header Files
  21. // TODO: reference additional headers your program requires here
  22. #include <assert.h>
  23. #include <tchar.h>
  24. #include <winsock2.h>
  25. #include "Lock.h"
  26. template <class T>
  27. static inline void _SafeAddRef(T*& rp)  { if (rp) {rp->AddRef();} }
  28. template <class T>
  29. static inline void _SafeRelease(T*& rp) { if (rp) {rp->Release(); rp = NULL;} }
  30. #include <string>
  31. namespace std { typedef basic_string< TCHAR, char_traits<TCHAR>, allocator<TCHAR> > _tstring; }
  32. struct _tstring_less
  33. {
  34. bool operator() (const std::_tstring& src1, const std::_tstring& src2) const
  35. {
  36. const size_t len1 = src1.size();
  37. const size_t len2 = src2.size();
  38. if (len1 < len2)
  39. return true;
  40. if (len1 > len2)
  41. return false;
  42. return _tcscmp(src1.c_str(), src2.c_str()) < 0;
  43. }
  44. };
  45. struct _tstring_iless
  46. {
  47. bool operator() (const std::_tstring& src1, const std::_tstring& src2) const
  48. {
  49. const size_t len1 = src1.size();
  50. const size_t len2 = src2.size();
  51. if (len1 < len2)
  52. return true;
  53. if (len1 > len2)
  54. return false;
  55. return _tcsicmp(src1.c_str(), src2.c_str()) < 0;
  56. }
  57. };
  58. struct _tstring_equal
  59. {
  60. bool operator() (const std::_tstring& src1, const std::_tstring& src2) const
  61. {
  62. const size_t len1 = src1.size();
  63. const size_t len2 = src2.size();
  64. if (len1 != len2)
  65. return false;
  66. return _tcscmp(src1.c_str(), src2.c_str()) == 0;
  67. }
  68. };
  69. struct _tstring_iequal
  70. {
  71. bool operator() (const std::_tstring& src1, const std::_tstring& src2) const
  72. {
  73. const size_t len1 = src1.size();
  74. const size_t len2 = src2.size();
  75. if (len1 != len2)
  76. return false;
  77. return _tcsicmp(src1.c_str(), src2.c_str()) == 0;
  78. }
  79. };
  80. //{{AFX_INSERT_LOCATION}}
  81. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  82. #endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)