Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/ptl/include/PTL/Macros.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  1 //
  2 // MIT License
  3 // Copyright (c) 2020 Jonathan R. Madsen
  4 // Permission is hereby granted, free of charge, to any person obtaining a copy
  5 // of this software and associated documentation files (the "Software"), to deal
  6 // in the Software without restriction, including without limitation the rights
  7 // to use, copy, modify, merge, publish, distribute, sublicense, and
  8 // copies of the Software, and to permit persons to whom the Software is
  9 // furnished to do so, subject to the following conditions:
 10 // The above copyright notice and this permission notice shall be included in
 11 // all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED
 12 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 13 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 14 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 15 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 16 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 17 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 18 //
 19 
 20 #pragma once
 21 
 22 #if defined(__APPLE__) || defined(__MACH__)
 23 #    if !defined(PTL_MACOS)
 24 #        define PTL_MACOS 1
 25 #    endif
 26 #    if !defined(PTL_UNIX)
 27 #        define PTL_UNIX 1
 28 #    endif
 29 #endif
 30 
 31 #if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64)
 32 #    if !defined(PTL_WINDOWS)
 33 #        define PTL_WINDOWS 1
 34 #    endif
 35 #endif
 36 
 37 #if defined(__linux__) || defined(__linux) || defined(linux) || defined(__gnu_linux__)
 38 #    if !defined(PTL_LINUX)
 39 #        define PTL_LINUX 1
 40 #    endif
 41 #    if !defined(PTL_UNIX)
 42 #        define PTL_UNIX 1
 43 #    endif
 44 #endif
 45 
 46 #if defined(__unix__) || defined(__unix) || defined(unix)
 47 #    if !defined(PTL_UNIX)
 48 #        define PTL_UNIX 1
 49 #    endif
 50 #endif
 51 
 52 #if defined(PTL_WINDOWS)
 53 // Disable warning C4786 on WIN32 architectures:
 54 // identifier was truncated to '255' characters
 55 // in the debug information
 56 //
 57 #    pragma warning(disable : 4786)
 58 //
 59 // Define DLL export macro for WIN32 systems for
 60 // importing/exporting external symbols to DLLs
 61 //
 62 #    if defined PTL_BUILD_DLL
 63 #        define DLLEXPORT __declspec(dllexport)
 64 #        define DLLIMPORT __declspec(dllimport)
 65 #    else
 66 #        define DLLEXPORT
 67 #        define DLLIMPORT
 68 #    endif
 69 //
 70 // Unique identifier for global module
 71 //
 72 #    if defined PTL_ALLOC_EXPORT
 73 #        define PTL_DLL DLLEXPORT
 74 #    else
 75 #        define PTL_DLL DLLIMPORT
 76 #    endif
 77 #else
 78 #    define DLLEXPORT
 79 #    define DLLIMPORT
 80 #    define PTL_DLL
 81 #endif
 82 
 83 #if !defined(PTL_DEFAULT_OBJECT)
 84 #    define PTL_DEFAULT_OBJECT(NAME)                                                     \
 85         NAME()            = default;                                                     \
 86         ~NAME()           = default;                                                     \
 87         NAME(const NAME&) = default;                                                     \
 88         NAME(NAME&&)      = default;                                                     \
 89         NAME& operator=(const NAME&) = default;                                          \
 90         NAME& operator=(NAME&&) = default;
 91 #endif
 92 
 93 #if !defined(PTL_NO_SANITIZE_THREAD)
 94 // expect that sanitizer is from compiler which supports __has_attribute
 95 #    if defined(__has_attribute)
 96 #        if __has_attribute(no_sanitize)
 97 #            define PTL_NO_SANITIZE_THREAD __attribute__((no_sanitize("thread")))
 98 #        else
 99 #            define PTL_NO_SANITIZE_THREAD
100 #        endif
101 #    elif defined(__clang__) || defined(__GNUC__)
102 #        define PTL_NO_SANITIZE_THREAD __attribute__((no_sanitize("thread")))
103 #    else
104 // otherwise, make blank
105 #        define PTL_NO_SANITIZE_THREAD
106 #    endif
107 #endif
108