~ubuntu-branches/ubuntu/wily/davix/wily

« back to all changes in this revision

Viewing changes to deps/boost_intern/src/thread/src/win32/tss_dll.cpp

  • Committer: Package Import Robot
  • Author(s): Mattias Ellert
  • Date: 2015-07-31 13:17:55 UTC
  • mfrom: (5.1.3 sid)
  • Revision ID: package-import@ubuntu.com-20150731131755-mizprbmn7ogv33te
Tags: 0.4.1-1
* Update to version 0.4.1
* Implement Multi-Arch support

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
 
                boost::on_process_enter();
29
 
                boost::on_thread_enter();
30
 
                break;
31
 
            }
32
 
 
33
 
            case DLL_THREAD_ATTACH:
34
 
            {
35
 
                boost::on_thread_enter();
36
 
                break;
37
 
            }
38
 
 
39
 
            case DLL_THREAD_DETACH:
40
 
            {
41
 
                boost::on_thread_exit();
42
 
                break;
43
 
            }
44
 
 
45
 
            case DLL_PROCESS_DETACH:
46
 
            {
47
 
                boost::on_thread_exit();
48
 
                boost::on_process_exit();
49
 
                break;
50
 
            }
51
 
        }
52
 
 
53
 
        return TRUE;
54
 
    }
55
 
 
56
 
namespace 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
 
 
77
 
#endif //defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_DLL)