BVB Source Codes

mars Show tss_dll.cpp Source code

Return Download mars: download tss_dll.cpp Source code - Download mars Source code - Type:.cpp
  1. // (C) Copyright Michael Glassford 2004.
  2. // Use, modification and distribution are subject to the
  3. // Boost Software License, Version 1.0. (See accompanying file
  4. // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  5.  
  6. #include <boost/thread/detail/config.hpp>
  7.  
  8.  
  9. #if defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_DLL)
  10.  
  11.     #include <boost/thread/detail/tss_hooks.hpp>
  12.  
  13.     #define WIN32_LEAN_AND_MEAN
  14.     #include <windows.h>
  15.  
  16.     #if defined(__BORLANDC__)
  17.         extern "C" BOOL WINAPI DllEntryPoint(HINSTANCE /*hInstance*/, DWORD dwReason, LPVOID /*lpReserved*/)
  18.     #elif defined(_WIN32_WCE)
  19.         extern "C" BOOL WINAPI DllMain(HANDLE /*hInstance*/, DWORD dwReason, LPVOID /*lpReserved*/)
  20.     #else
  21.         extern "C" BOOL WINAPI DllMain(HINSTANCE /*hInstance*/, DWORD dwReason, LPVOID /*lpReserved*/)
  22.     #endif
  23.     {
  24.         switch(dwReason)
  25.         {
  26.             case DLL_PROCESS_ATTACH:
  27.             {
  28.                 mars_boost::on_process_enter();
  29.                 mars_boost::on_thread_enter();
  30.                 break;
  31.             }
  32.  
  33.             case DLL_THREAD_ATTACH:
  34.             {
  35.                 mars_boost::on_thread_enter();
  36.                 break;
  37.             }
  38.  
  39.             case DLL_THREAD_DETACH:
  40.             {
  41.                 mars_boost::on_thread_exit();
  42.                 break;
  43.             }
  44.  
  45.             case DLL_PROCESS_DETACH:
  46.             {
  47.                 mars_boost::on_thread_exit();
  48.                 mars_boost::on_process_exit();
  49.                 break;
  50.             }
  51.         }
  52.  
  53.         return TRUE;
  54.     }
  55.  
  56. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost
  57. {
  58.     void tss_cleanup_implemented()
  59.     {
  60.         /*
  61.         This function's sole purpose is to cause a link error in cases where
  62.         automatic tss cleanup is not implemented by Boost.Threads as a
  63.         reminder that user code is responsible for calling the necessary
  64.         functions at the appropriate times (and for implementing an a
  65.         tss_cleanup_implemented() function to eliminate the linker's
  66.         missing symbol error).
  67.  
  68.         If Boost.Threads later implements automatic tss cleanup in cases
  69.         where it currently doesn't (which is the plan), the duplicate
  70.         symbol error will warn the user that their custom solution is no
  71.         longer needed and can be removed.
  72.         */
  73.     }
  74. }
  75.  
  76. #else //defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_DLL)
  77.  
  78. #ifdef _MSC_VER
  79. // Prevent LNK4221 warning with link=static
  80. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost { namespace link_static_warning_inhibit {
  81.     extern __declspec(dllexport) void foo() { }
  82. } }
  83. #endif
  84.  
  85. #endif //defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_DLL)
  86.  
downloadtss_dll.cpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top