noobs 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/COPYING +339 -0
  2. package/README.md +46 -0
  3. package/bin/64bit/obs.lib +0 -0
  4. package/binding.gyp +23 -0
  5. package/dist/bin/Qt6Core.dll +0 -0
  6. package/dist/bin/Qt6Gui.dll +0 -0
  7. package/dist/bin/Qt6Network.dll +0 -0
  8. package/dist/bin/Qt6Svg.dll +0 -0
  9. package/dist/bin/Qt6Widgets.dll +0 -0
  10. package/dist/bin/Qt6Xml.dll +0 -0
  11. package/dist/bin/avcodec-61.dll +0 -0
  12. package/dist/bin/avdevice-61.dll +0 -0
  13. package/dist/bin/avfilter-10.dll +0 -0
  14. package/dist/bin/avformat-61.dll +0 -0
  15. package/dist/bin/avutil-59.dll +0 -0
  16. package/dist/bin/datachannel.dll +0 -0
  17. package/dist/bin/libcurl.dll +0 -0
  18. package/dist/bin/libobs-d3d11.dll +0 -0
  19. package/dist/bin/libobs-opengl.dll +0 -0
  20. package/dist/bin/libobs-winrt.dll +0 -0
  21. package/dist/bin/librist.dll +0 -0
  22. package/dist/bin/libx264-164.dll +0 -0
  23. package/dist/bin/lua51.dll +0 -0
  24. package/dist/bin/obs-amf-test.exe +0 -0
  25. package/dist/bin/obs-ffmpeg-mux.exe +0 -0
  26. package/dist/bin/obs-frontend-api.dll +0 -0
  27. package/dist/bin/obs-scripting.dll +0 -0
  28. package/dist/bin/obs.dll +0 -0
  29. package/dist/bin/srt.dll +0 -0
  30. package/dist/bin/swresample-5.dll +0 -0
  31. package/dist/bin/swscale-8.dll +0 -0
  32. package/dist/bin/w32-pthreads.dll +0 -0
  33. package/dist/bin/zlib.dll +0 -0
  34. package/dist/effects/area.effect +250 -0
  35. package/dist/effects/bicubic_scale.effect +236 -0
  36. package/dist/effects/bilinear_lowres_scale.effect +123 -0
  37. package/dist/effects/color.effect +172 -0
  38. package/dist/effects/default.effect +254 -0
  39. package/dist/effects/default_rect.effect +84 -0
  40. package/dist/effects/deinterlace_base.effect +325 -0
  41. package/dist/effects/deinterlace_blend.effect +21 -0
  42. package/dist/effects/deinterlace_blend_2x.effect +21 -0
  43. package/dist/effects/deinterlace_discard.effect +21 -0
  44. package/dist/effects/deinterlace_discard_2x.effect +21 -0
  45. package/dist/effects/deinterlace_linear.effect +21 -0
  46. package/dist/effects/deinterlace_linear_2x.effect +21 -0
  47. package/dist/effects/deinterlace_yadif.effect +21 -0
  48. package/dist/effects/deinterlace_yadif_2x.effect +21 -0
  49. package/dist/effects/format_conversion.effect +1823 -0
  50. package/dist/effects/lanczos_scale.effect +292 -0
  51. package/dist/effects/opaque.effect +159 -0
  52. package/dist/effects/premultiplied_alpha.effect +38 -0
  53. package/dist/effects/repeat.effect +36 -0
  54. package/dist/effects/solid.effect +80 -0
  55. package/dist/noobs.node +0 -0
  56. package/dist/plugins/obs-ffmpeg.dll +0 -0
  57. package/dist/plugins/obs-x264.dll +0 -0
  58. package/dist/plugins/win-capture.dll +0 -0
  59. package/include/audio-monitoring/osx/mac-helpers.h +13 -0
  60. package/include/audio-monitoring/pulse/pulseaudio-wrapper.h +212 -0
  61. package/include/audio-monitoring/win32/wasapi-output.h +22 -0
  62. package/include/callback/calldata.h +195 -0
  63. package/include/callback/decl.h +61 -0
  64. package/include/callback/proc.h +52 -0
  65. package/include/callback/signal.h +73 -0
  66. package/include/graphics/axisang.h +65 -0
  67. package/include/graphics/bounds.h +108 -0
  68. package/include/graphics/device-exports.h +177 -0
  69. package/include/graphics/effect-parser.h +290 -0
  70. package/include/graphics/effect.h +190 -0
  71. package/include/graphics/graphics-internal.h +335 -0
  72. package/include/graphics/graphics.h +1024 -0
  73. package/include/graphics/half.h +100 -0
  74. package/include/graphics/image-file.h +124 -0
  75. package/include/graphics/input.h +34 -0
  76. package/include/graphics/libnsgif/libnsgif.h +142 -0
  77. package/include/graphics/math-defs.h +45 -0
  78. package/include/graphics/math-extra.h +61 -0
  79. package/include/graphics/matrix3.h +98 -0
  80. package/include/graphics/matrix4.h +102 -0
  81. package/include/graphics/plane.h +85 -0
  82. package/include/graphics/quat.h +170 -0
  83. package/include/graphics/shader-parser.h +273 -0
  84. package/include/graphics/srgb.h +177 -0
  85. package/include/graphics/vec2.h +148 -0
  86. package/include/graphics/vec3.h +224 -0
  87. package/include/graphics/vec4.h +241 -0
  88. package/include/media-io/audio-io.h +228 -0
  89. package/include/media-io/audio-math.h +43 -0
  90. package/include/media-io/audio-resampler.h +44 -0
  91. package/include/media-io/format-conversion.h +50 -0
  92. package/include/media-io/frame-rate.h +29 -0
  93. package/include/media-io/media-io-defs.h +20 -0
  94. package/include/media-io/media-remux.h +37 -0
  95. package/include/media-io/video-frame.h +64 -0
  96. package/include/media-io/video-io.h +338 -0
  97. package/include/media-io/video-scaler.h +43 -0
  98. package/include/obs-audio-controls.h +250 -0
  99. package/include/obs-av1.h +47 -0
  100. package/include/obs-avc.h +55 -0
  101. package/include/obs-config.h +52 -0
  102. package/include/obs-data.h +311 -0
  103. package/include/obs-defs.h +52 -0
  104. package/include/obs-encoder.h +361 -0
  105. package/include/obs-ffmpeg-compat.h +13 -0
  106. package/include/obs-hevc.h +81 -0
  107. package/include/obs-hotkey.h +271 -0
  108. package/include/obs-hotkeys.h +653 -0
  109. package/include/obs-interaction.h +56 -0
  110. package/include/obs-internal.h +1459 -0
  111. package/include/obs-missing-files.h +53 -0
  112. package/include/obs-module.h +181 -0
  113. package/include/obs-nal.h +37 -0
  114. package/include/obs-nix-platform.h +53 -0
  115. package/include/obs-nix-wayland.h +24 -0
  116. package/include/obs-nix-x11.h +22 -0
  117. package/include/obs-nix.h +42 -0
  118. package/include/obs-output.h +96 -0
  119. package/include/obs-properties.h +364 -0
  120. package/include/obs-scene.h +127 -0
  121. package/include/obs-service.h +115 -0
  122. package/include/obs-source.h +568 -0
  123. package/include/obs.h +2608 -0
  124. package/include/obsconfig.h +13 -0
  125. package/include/obsversion.h +5 -0
  126. package/include/util/apple/cfstring-utils.h +16 -0
  127. package/include/util/array-serializer.h +37 -0
  128. package/include/util/base.h +97 -0
  129. package/include/util/bitstream.h +28 -0
  130. package/include/util/bmem.h +94 -0
  131. package/include/util/buffered-file-serializer.h +32 -0
  132. package/include/util/c99defs.h +75 -0
  133. package/include/util/cf-lexer.h +199 -0
  134. package/include/util/cf-parser.h +281 -0
  135. package/include/util/circlebuf.h +319 -0
  136. package/include/util/config-file.h +103 -0
  137. package/include/util/crc32.h +29 -0
  138. package/include/util/curl/curl-helper.h +35 -0
  139. package/include/util/darray.h +606 -0
  140. package/include/util/deque.h +319 -0
  141. package/include/util/dstr.h +320 -0
  142. package/include/util/file-serializer.h +34 -0
  143. package/include/util/lexer.h +273 -0
  144. package/include/util/pipe.h +52 -0
  145. package/include/util/platform.h +223 -0
  146. package/include/util/profiler.h +97 -0
  147. package/include/util/serializer.h +158 -0
  148. package/include/util/simde/check.h +285 -0
  149. package/include/util/simde/debug-trap.h +117 -0
  150. package/include/util/simde/hedley.h +2123 -0
  151. package/include/util/simde/simde-align.h +481 -0
  152. package/include/util/simde/simde-arch.h +537 -0
  153. package/include/util/simde/simde-common.h +918 -0
  154. package/include/util/simde/simde-constify.h +925 -0
  155. package/include/util/simde/simde-detect-clang.h +114 -0
  156. package/include/util/simde/simde-diagnostic.h +447 -0
  157. package/include/util/simde/simde-features.h +550 -0
  158. package/include/util/simde/simde-math.h +1858 -0
  159. package/include/util/simde/x86/mmx.h +2456 -0
  160. package/include/util/simde/x86/sse.h +4479 -0
  161. package/include/util/simde/x86/sse2.h +7549 -0
  162. package/include/util/source-profiler.h +66 -0
  163. package/include/util/sse-intrin.h +32 -0
  164. package/include/util/task.h +22 -0
  165. package/include/util/text-lookup.h +45 -0
  166. package/include/util/threading-posix.h +77 -0
  167. package/include/util/threading-windows.h +142 -0
  168. package/include/util/threading.h +103 -0
  169. package/include/util/utf8.h +35 -0
  170. package/include/util/uthash.h +34 -0
  171. package/include/util/util_uint128.h +108 -0
  172. package/include/util/util_uint64.h +34 -0
  173. package/include/util/windows/device-enum.h +14 -0
  174. package/include/util/windows/obfuscate.h +16 -0
  175. package/include/util/windows/win-registry.h +37 -0
  176. package/include/util/windows/win-version.h +57 -0
  177. package/include/util/windows/window-helpers.h +47 -0
  178. package/index.d.ts +38 -0
  179. package/index.js +8 -0
  180. package/package.json +31 -0
  181. package/src/main.cpp +321 -0
  182. package/src/obs_interface.cpp +605 -0
  183. package/src/obs_interface.h +74 -0
  184. package/src/utils.cpp +80 -0
  185. package/src/utils.h +3 -0
@@ -0,0 +1,114 @@
1
+ /* Detect Clang Version
2
+ * Created by Evan Nemerson <evan@nemerson.com>
3
+ *
4
+ * To the extent possible under law, the author(s) have dedicated all
5
+ * copyright and related and neighboring rights to this software to
6
+ * the public domain worldwide. This software is distributed without
7
+ * any warranty.
8
+ *
9
+ * For details, see <http://creativecommons.org/publicdomain/zero/1.0/>.
10
+ * SPDX-License-Identifier: CC0-1.0
11
+ */
12
+
13
+ /* This file was originally part of SIMDe
14
+ * (<https://github.com/simd-everywhere/simde>). You're free to do with it as
15
+ * you please, but I do have a few small requests:
16
+ *
17
+ * * If you make improvements, please submit them back to SIMDe
18
+ * (at <https://github.com/simd-everywhere/simde/issues>) so others can
19
+ * benefit from them.
20
+ * * Please keep a link to SIMDe intact so people know where to submit
21
+ * improvements.
22
+ * * If you expose it publicly, please change the SIMDE_ prefix to
23
+ * something specific to your project.
24
+ *
25
+ * The version numbers clang exposes (in the ___clang_major__,
26
+ * __clang_minor__, and __clang_patchlevel__ macros) are unreliable.
27
+ * Vendors such as Apple will define these values to their version
28
+ * numbers; for example, "Apple Clang 4.0" is really clang 3.1, but
29
+ * __clang_major__ and __clang_minor__ are defined to 4 and 0
30
+ * respectively, instead of 3 and 1.
31
+ *
32
+ * The solution is *usually* to use clang's feature detection macros
33
+ * (<https://clang.llvm.org/docs/LanguageExtensions.html#feature-checking-macros>)
34
+ * to determine if the feature you're interested in is available. This
35
+ * generally works well, and it should probably be the first thing you
36
+ * try. Unfortunately, it's not possible to check for everything. In
37
+ * particular, compiler bugs.
38
+ *
39
+ * This file just uses the feature checking macros to detect features
40
+ * added in specific versions of clang to identify which version of
41
+ * clang the compiler is based on.
42
+ *
43
+ * Right now it only goes back to 3.6, but I'm happy to accept patches
44
+ * to go back further. And, of course, newer versions are welcome if
45
+ * they're not already present, and if you find a way to detect a point
46
+ * release that would be great, too!
47
+ */
48
+
49
+ #if !defined(SIMDE_DETECT_CLANG_H)
50
+ #define SIMDE_DETECT_CLANG_H 1
51
+
52
+ /* Attempt to detect the upstream clang version number. I usually only
53
+ * worry about major version numbers (at least for 4.0+), but if you
54
+ * need more resolution I'm happy to accept patches that are able to
55
+ * detect minor versions as well. That said, you'll probably have a
56
+ * hard time with detection since AFAIK most minor releases don't add
57
+ * anything we can detect. */
58
+
59
+ #if defined(__clang__) && !defined(SIMDE_DETECT_CLANG_VERSION)
60
+ #if __has_warning("-Wformat-insufficient-args")
61
+ #define SIMDE_DETECT_CLANG_VERSION 120000
62
+ #elif __has_warning("-Wimplicit-const-int-float-conversion")
63
+ #define SIMDE_DETECT_CLANG_VERSION 110000
64
+ #elif __has_warning("-Wmisleading-indentation")
65
+ #define SIMDE_DETECT_CLANG_VERSION 100000
66
+ #elif defined(__FILE_NAME__)
67
+ #define SIMDE_DETECT_CLANG_VERSION 90000
68
+ #elif __has_warning("-Wextra-semi-stmt") || \
69
+ __has_builtin(__builtin_rotateleft32)
70
+ #define SIMDE_DETECT_CLANG_VERSION 80000
71
+ #elif __has_warning("-Wc++98-compat-extra-semi")
72
+ #define SIMDE_DETECT_CLANG_VERSION 70000
73
+ #elif __has_warning("-Wpragma-pack")
74
+ #define SIMDE_DETECT_CLANG_VERSION 60000
75
+ #elif __has_warning("-Wbitfield-enum-conversion")
76
+ #define SIMDE_DETECT_CLANG_VERSION 50000
77
+ #elif __has_attribute(diagnose_if)
78
+ #define SIMDE_DETECT_CLANG_VERSION 40000
79
+ #elif __has_warning("-Wcast-calling-convention")
80
+ #define SIMDE_DETECT_CLANG_VERSION 30900
81
+ #elif __has_warning("-WCL4")
82
+ #define SIMDE_DETECT_CLANG_VERSION 30800
83
+ #elif __has_warning("-WIndependentClass-attribute")
84
+ #define SIMDE_DETECT_CLANG_VERSION 30700
85
+ #elif __has_warning("-Wambiguous-ellipsis")
86
+ #define SIMDE_DETECT_CLANG_VERSION 30600
87
+ #else
88
+ #define SIMDE_DETECT_CLANG_VERSION 1
89
+ #endif
90
+ #endif /* defined(__clang__) && !defined(SIMDE_DETECT_CLANG_VERSION) */
91
+
92
+ /* The SIMDE_DETECT_CLANG_VERSION_CHECK macro is pretty
93
+ * straightforward; it returns true if the compiler is a derivative
94
+ * of clang >= the specified version.
95
+ *
96
+ * Since this file is often (primarily?) useful for working around bugs
97
+ * it is also helpful to have a macro which returns true if only if the
98
+ * compiler is a version of clang *older* than the specified version to
99
+ * make it a bit easier to ifdef regions to add code for older versions,
100
+ * such as pragmas to disable a specific warning. */
101
+
102
+ #if defined(SIMDE_DETECT_CLANG_VERSION)
103
+ #define SIMDE_DETECT_CLANG_VERSION_CHECK(major, minor, revision) \
104
+ (SIMDE_DETECT_CLANG_VERSION >= \
105
+ ((major * 10000) + (minor * 1000) + (revision)))
106
+ #define SIMDE_DETECT_CLANG_VERSION_NOT(major, minor, revision) \
107
+ (SIMDE_DETECT_CLANG_VERSION < \
108
+ ((major * 10000) + (minor * 1000) + (revision)))
109
+ #else
110
+ #define SIMDE_DETECT_CLANG_VERSION_CHECK(major, minor, revision) (0)
111
+ #define SIMDE_DETECT_CLANG_VERSION_NOT(major, minor, revision) (1)
112
+ #endif
113
+
114
+ #endif /* !defined(SIMDE_DETECT_CLANG_H) */
@@ -0,0 +1,447 @@
1
+ /* SPDX-License-Identifier: MIT
2
+ *
3
+ * Permission is hereby granted, free of charge, to any person
4
+ * obtaining a copy of this software and associated documentation
5
+ * files (the "Software"), to deal in the Software without
6
+ * restriction, including without limitation the rights to use, copy,
7
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
8
+ * of the Software, and to permit persons to whom the Software is
9
+ * furnished to do so, subject to the following conditions:
10
+ *
11
+ * The above copyright notice and this permission notice shall be
12
+ * included in all copies or substantial portions of the Software.
13
+ *
14
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
18
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ * SOFTWARE.
22
+ *
23
+ * Copyright:
24
+ * 2017-2020 Evan Nemerson <evan@nemerson.com>
25
+ */
26
+
27
+ /* SIMDe targets a very wide range of standards and compilers, and our
28
+ * goal is to compile cleanly even with extremely aggressive warnings
29
+ * (i.e., -Weverything in clang, -Wextra in GCC, /W4 for MSVC, etc.)
30
+ * treated as errors.
31
+ *
32
+ * While our preference is to resolve the underlying issue a given
33
+ * diagnostic is warning us about, sometimes that's not possible.
34
+ * Fixing a warning in one compiler may cause problems in another.
35
+ * Sometimes a warning doesn't really apply to us (false positives),
36
+ * and sometimes adhering to a warning would mean dropping a feature
37
+ * we *know* the compiler supports since we have tested specifically
38
+ * for the compiler or feature.
39
+ *
40
+ * When practical, warnings are only disabled for specific code. For
41
+ * a list of warnings which are enabled by default in all SIMDe code,
42
+ * see SIMDE_DISABLE_UNWANTED_DIAGNOSTICS. Note that we restore the
43
+ * warning stack when SIMDe is done parsing, so code which includes
44
+ * SIMDe is not deprived of these warnings.
45
+ */
46
+
47
+ #if !defined(SIMDE_DIAGNOSTIC_H)
48
+ #define SIMDE_DIAGNOSTIC_H
49
+
50
+ #include "hedley.h"
51
+ #include "simde-detect-clang.h"
52
+
53
+ /* This is only to help us implement functions like _mm_undefined_ps. */
54
+ #if defined(SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_)
55
+ #undef SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_
56
+ #endif
57
+ #if HEDLEY_HAS_WARNING("-Wuninitialized")
58
+ #define SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_ \
59
+ _Pragma("clang diagnostic ignored \"-Wuninitialized\"")
60
+ #elif HEDLEY_GCC_VERSION_CHECK(4, 2, 0)
61
+ #define SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_ \
62
+ _Pragma("GCC diagnostic ignored \"-Wuninitialized\"")
63
+ #elif HEDLEY_PGI_VERSION_CHECK(19, 10, 0)
64
+ #define SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_ _Pragma("diag_suppress 549")
65
+ #elif HEDLEY_SUNPRO_VERSION_CHECK(5, 14, 0) && defined(__cplusplus)
66
+ #define SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_ \
67
+ _Pragma("error_messages(off,SEC_UNINITIALIZED_MEM_READ,SEC_UNDEFINED_RETURN_VALUE,unassigned)")
68
+ #elif HEDLEY_SUNPRO_VERSION_CHECK(5, 14, 0)
69
+ #define SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_ \
70
+ _Pragma("error_messages(off,SEC_UNINITIALIZED_MEM_READ,SEC_UNDEFINED_RETURN_VALUE)")
71
+ #elif HEDLEY_SUNPRO_VERSION_CHECK(5, 12, 0) && defined(__cplusplus)
72
+ #define SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_ \
73
+ _Pragma("error_messages(off,unassigned)")
74
+ #elif HEDLEY_TI_VERSION_CHECK(16, 9, 9) || \
75
+ HEDLEY_TI_CL6X_VERSION_CHECK(8, 0, 0) || \
76
+ HEDLEY_TI_CL7X_VERSION_CHECK(1, 2, 0) || \
77
+ HEDLEY_TI_CLPRU_VERSION_CHECK(2, 3, 2)
78
+ #define SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_ _Pragma("diag_suppress 551")
79
+ #elif HEDLEY_INTEL_VERSION_CHECK(13, 0, 0)
80
+ #define SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_ _Pragma("warning(disable:592)")
81
+ #elif HEDLEY_MSVC_VERSION_CHECK(19, 0, 0) && !defined(__MSVC_RUNTIME_CHECKS)
82
+ #define SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_ \
83
+ __pragma(warning(disable : 4700))
84
+ #endif
85
+
86
+ /* GCC emits a lot of "notes" about the ABI being different for things
87
+ * in newer versions of GCC. We don't really care because all our
88
+ * functions are inlined and don't generate ABI. */
89
+ #if HEDLEY_GCC_VERSION_CHECK(7, 0, 0)
90
+ #define SIMDE_DIAGNOSTIC_DISABLE_PSABI_ \
91
+ _Pragma("GCC diagnostic ignored \"-Wpsabi\"")
92
+ #else
93
+ #define SIMDE_DIAGNOSTIC_DISABLE_PSABI_
94
+ #endif
95
+
96
+ /* Since MMX uses x87 FP registers, you're supposed to call _mm_empty()
97
+ * after each MMX function before any floating point instructions.
98
+ * Some compilers warn about functions which use MMX functions but
99
+ * don't call _mm_empty(). However, since SIMDe is implementyng the
100
+ * MMX API we shouldn't be calling _mm_empty(); we leave it to the
101
+ * caller to invoke simde_mm_empty(). */
102
+ #if HEDLEY_INTEL_VERSION_CHECK(19, 0, 0)
103
+ #define SIMDE_DIAGNOSTIC_DISABLE_NO_EMMS_INSTRUCTION_ \
104
+ _Pragma("warning(disable:13200 13203)")
105
+ #elif defined(HEDLEY_MSVC_VERSION)
106
+ #define SIMDE_DIAGNOSTIC_DISABLE_NO_EMMS_INSTRUCTION_ \
107
+ __pragma(warning(disable : 4799))
108
+ #else
109
+ #define SIMDE_DIAGNOSTIC_DISABLE_NO_EMMS_INSTRUCTION_
110
+ #endif
111
+
112
+ /* Intel is pushing people to use OpenMP SIMD instead of Cilk+, so they
113
+ * emit a diagnostic if you use #pragma simd instead of
114
+ * #pragma omp simd. SIMDe supports OpenMP SIMD, you just need to
115
+ * compile with -qopenmp or -qopenmp-simd and define
116
+ * SIMDE_ENABLE_OPENMP. Cilk+ is just a fallback. */
117
+ #if HEDLEY_INTEL_VERSION_CHECK(18, 0, 0)
118
+ #define SIMDE_DIAGNOSTIC_DISABLE_SIMD_PRAGMA_DEPRECATED_ \
119
+ _Pragma("warning(disable:3948)")
120
+ #else
121
+ #define SIMDE_DIAGNOSTIC_DISABLE_SIMD_PRAGMA_DEPRECATED_
122
+ #endif
123
+
124
+ /* MSVC emits a diagnostic when we call a function (like
125
+ * simde_mm_set_epi32) while initializing a struct. We currently do
126
+ * this a *lot* in the tests. */
127
+ #if defined(HEDLEY_MSVC_VERSION)
128
+ #define SIMDE_DIAGNOSTIC_DISABLE_NON_CONSTANT_AGGREGATE_INITIALIZER_ \
129
+ __pragma(warning(disable : 4204))
130
+ #else
131
+ #define SIMDE_DIAGNOSTIC_DISABLE_NON_CONSTANT_AGGREGATE_INITIALIZER_
132
+ #endif
133
+
134
+ /* This warning needs a lot of work. It is triggered if all you do is
135
+ * pass the value to memcpy/__builtin_memcpy, or if you initialize a
136
+ * member of the union, even if that member takes up the entire union.
137
+ * Last tested with clang-10, hopefully things will improve in the
138
+ * future; if clang fixes this I'd love to enable it. */
139
+ #if HEDLEY_HAS_WARNING("-Wconditional-uninitialized")
140
+ #define SIMDE_DIAGNOSTIC_DISABLE_CONDITIONAL_UNINITIALIZED_ \
141
+ _Pragma("clang diagnostic ignored \"-Wconditional-uninitialized\"")
142
+ #else
143
+ #define SIMDE_DIAGNOSTIC_DISABLE_CONDITIONAL_UNINITIALIZED_
144
+ #endif
145
+
146
+ /* This warning is meant to catch things like `0.3 + 0.4 == 0.7`, which
147
+ * will is false. However, SIMDe uses these operations exclusively
148
+ * for things like _mm_cmpeq_ps, for which we really do want to check
149
+ * for equality (or inequality).
150
+ *
151
+ * If someone wants to put together a SIMDE_FLOAT_EQUAL(a, op, b) macro
152
+ * which just wraps a check in some code do disable this diagnostic I'd
153
+ * be happy to accept it. */
154
+ #if HEDLEY_HAS_WARNING("-Wfloat-equal") || HEDLEY_GCC_VERSION_CHECK(3, 0, 0)
155
+ #define SIMDE_DIAGNOSTIC_DISABLE_FLOAT_EQUAL_ \
156
+ _Pragma("GCC diagnostic ignored \"-Wfloat-equal\"")
157
+ #else
158
+ #define SIMDE_DIAGNOSTIC_DISABLE_FLOAT_EQUAL_
159
+ #endif
160
+
161
+ /* This is because we use HEDLEY_STATIC_ASSERT for static assertions.
162
+ * If Hedley can't find an implementation it will preprocess to
163
+ * nothing, which means there will be a trailing semi-colon. */
164
+ #if HEDLEY_HAS_WARNING("-Wextra-semi")
165
+ #define SIMDE_DIAGNOSTIC_DISABLE_EXTRA_SEMI_ \
166
+ _Pragma("clang diagnostic ignored \"-Wextra-semi\"")
167
+ #elif HEDLEY_GCC_VERSION_CHECK(8, 1, 0) && defined(__cplusplus)
168
+ #define SIMDE_DIAGNOSTIC_DISABLE_EXTRA_SEMI_ \
169
+ _Pragma("GCC diagnostic ignored \"-Wextra-semi\"")
170
+ #else
171
+ #define SIMDE_DIAGNOSTIC_DISABLE_EXTRA_SEMI_
172
+ #endif
173
+
174
+ /* We do use a few variadic macros, which technically aren't available
175
+ * until C99 and C++11, but every compiler I'm aware of has supported
176
+ * them for much longer. That said, usage is isolated to the test
177
+ * suite and compilers known to support them. */
178
+ #if HEDLEY_HAS_WARNING("-Wvariadic-macros") || HEDLEY_GCC_VERSION_CHECK(4, 0, 0)
179
+ #if HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic")
180
+ #define SIMDE_DIAGNOSTIC_DISABLE_VARIADIC_MACROS_ \
181
+ _Pragma("clang diagnostic ignored \"-Wvariadic-macros\"") _Pragma( \
182
+ "clang diagnostic ignored \"-Wc++98-compat-pedantic\"")
183
+ #else
184
+ #define SIMDE_DIAGNOSTIC_DISABLE_VARIADIC_MACROS_ \
185
+ _Pragma("GCC diagnostic ignored \"-Wvariadic-macros\"")
186
+ #endif
187
+ #else
188
+ #define SIMDE_DIAGNOSTIC_DISABLE_VARIADIC_MACROS_
189
+ #endif
190
+
191
+ /* emscripten requires us to use a __wasm_unimplemented_simd128__ macro
192
+ * before we can access certain SIMD intrinsics, but this diagnostic
193
+ * warns about it being a reserved name. It is a reserved name, but
194
+ * it's reserved for the compiler and we are using it to convey
195
+ * information to the compiler.
196
+ *
197
+ * This is also used when enabling native aliases since we don't get to
198
+ * choose the macro names. */
199
+ #if HEDLEY_HAS_WARNING("-Wdouble-promotion")
200
+ #define SIMDE_DIAGNOSTIC_DISABLE_RESERVED_ID_MACRO_ \
201
+ _Pragma("clang diagnostic ignored \"-Wreserved-id-macro\"")
202
+ #else
203
+ #define SIMDE_DIAGNOSTIC_DISABLE_RESERVED_ID_MACRO_
204
+ #endif
205
+
206
+ /* clang 3.8 warns about the packed attribute being unnecessary when
207
+ * used in the _mm_loadu_* functions. That *may* be true for version
208
+ * 3.8, but for later versions it is crucial in order to make unaligned
209
+ * access safe. */
210
+ #if HEDLEY_HAS_WARNING("-Wpacked")
211
+ #define SIMDE_DIAGNOSTIC_DISABLE_PACKED_ \
212
+ _Pragma("clang diagnostic ignored \"-Wpacked\"")
213
+ #else
214
+ #define SIMDE_DIAGNOSTIC_DISABLE_PACKED_
215
+ #endif
216
+
217
+ /* Triggered when assigning a float to a double implicitly. We use
218
+ * explicit casts in SIMDe, this is only used in the test suite. */
219
+ #if HEDLEY_HAS_WARNING("-Wdouble-promotion")
220
+ #define SIMDE_DIAGNOSTIC_DISABLE_DOUBLE_PROMOTION_ \
221
+ _Pragma("clang diagnostic ignored \"-Wdouble-promotion\"")
222
+ #else
223
+ #define SIMDE_DIAGNOSTIC_DISABLE_DOUBLE_PROMOTION_
224
+ #endif
225
+
226
+ /* Several compilers treat conformant array parameters as VLAs. We
227
+ * test to make sure we're in C mode (C++ doesn't support CAPs), and
228
+ * that the version of the standard supports CAPs. We also reject
229
+ * some buggy compilers like MSVC (the logic is in Hedley if you want
230
+ * to take a look), but with certain warnings enabled some compilers
231
+ * still like to emit a diagnostic. */
232
+ #if HEDLEY_HAS_WARNING("-Wvla")
233
+ #define SIMDE_DIAGNOSTIC_DISABLE_VLA_ \
234
+ _Pragma("clang diagnostic ignored \"-Wvla\"")
235
+ #elif HEDLEY_GCC_VERSION_CHECK(4, 3, 0)
236
+ #define SIMDE_DIAGNOSTIC_DISABLE_VLA_ \
237
+ _Pragma("GCC diagnostic ignored \"-Wvla\"")
238
+ #else
239
+ #define SIMDE_DIAGNOSTIC_DISABLE_VLA_
240
+ #endif
241
+
242
+ #if HEDLEY_HAS_WARNING("-Wused-but-marked-unused")
243
+ #define SIMDE_DIAGNOSTIC_DISABLE_USED_BUT_MARKED_UNUSED_ \
244
+ _Pragma("clang diagnostic ignored \"-Wused-but-marked-unused\"")
245
+ #else
246
+ #define SIMDE_DIAGNOSTIC_DISABLE_USED_BUT_MARKED_UNUSED_
247
+ #endif
248
+
249
+ #if HEDLEY_HAS_WARNING("-Wunused-function")
250
+ #define SIMDE_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION_ \
251
+ _Pragma("clang diagnostic ignored \"-Wunused-function\"")
252
+ #elif HEDLEY_GCC_VERSION_CHECK(3, 4, 0)
253
+ #define SIMDE_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION_ \
254
+ _Pragma("GCC diagnostic ignored \"-Wunused-function\"")
255
+ #elif HEDLEY_MSVC_VERSION_CHECK(19, 0, 0) /* Likely goes back further */
256
+ #define SIMDE_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION_ \
257
+ __pragma(warning(disable : 4505))
258
+ #else
259
+ #define SIMDE_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION_
260
+ #endif
261
+
262
+ #if HEDLEY_HAS_WARNING("-Wpass-failed")
263
+ #define SIMDE_DIAGNOSTIC_DISABLE_PASS_FAILED_ \
264
+ _Pragma("clang diagnostic ignored \"-Wpass-failed\"")
265
+ #else
266
+ #define SIMDE_DIAGNOSTIC_DISABLE_PASS_FAILED_
267
+ #endif
268
+
269
+ #if HEDLEY_HAS_WARNING("-Wpadded")
270
+ #define SIMDE_DIAGNOSTIC_DISABLE_PADDED_ \
271
+ _Pragma("clang diagnostic ignored \"-Wpadded\"")
272
+ #elif HEDLEY_MSVC_VERSION_CHECK(19, 0, 0) /* Likely goes back further */
273
+ #define SIMDE_DIAGNOSTIC_DISABLE_PADDED_ __pragma(warning(disable : 4324))
274
+ #else
275
+ #define SIMDE_DIAGNOSTIC_DISABLE_PADDED_
276
+ #endif
277
+
278
+ #if HEDLEY_HAS_WARNING("-Wzero-as-null-pointer-constant")
279
+ #define SIMDE_DIAGNOSTIC_DISABLE_ZERO_AS_NULL_POINTER_CONSTANT_ \
280
+ _Pragma("clang diagnostic ignored \"-Wzero-as-null-pointer-constant\"")
281
+ #else
282
+ #define SIMDE_DIAGNOSTIC_DISABLE_ZERO_AS_NULL_POINTER_CONSTANT_
283
+ #endif
284
+
285
+ #if HEDLEY_HAS_WARNING("-Wold-style-cast")
286
+ #define SIMDE_DIAGNOSTIC_DISABLE_OLD_STYLE_CAST_ \
287
+ _Pragma("clang diagnostic ignored \"-Wold-style-cast\"")
288
+ #else
289
+ #define SIMDE_DIAGNOSTIC_DISABLE_OLD_STYLE_CAST_
290
+ #endif
291
+
292
+ #if HEDLEY_HAS_WARNING("-Wcast-function-type") || \
293
+ HEDLEY_GCC_VERSION_CHECK(8, 0, 0)
294
+ #define SIMDE_DIAGNOSTIC_DISABLE_CAST_FUNCTION_TYPE_ \
295
+ _Pragma("GCC diagnostic ignored \"-Wcast-function-type\"")
296
+ #else
297
+ #define SIMDE_DIAGNOSTIC_DISABLE_CAST_FUNCTION_TYPE_
298
+ #endif
299
+
300
+ /* clang will emit this warning when we use C99 extensions whan not in
301
+ * C99 mode, even though it does support this. In such cases we check
302
+ * the compiler and version first, so we know it's not a problem. */
303
+ #if HEDLEY_HAS_WARNING("-Wc99-extensions")
304
+ #define SIMDE_DIAGNOSTIC_DISABLE_C99_EXTENSIONS_ \
305
+ _Pragma("clang diagnostic ignored \"-Wc99-extensions\"")
306
+ #else
307
+ #define SIMDE_DIAGNOSTIC_DISABLE_C99_EXTENSIONS_
308
+ #endif
309
+
310
+ /* https://github.com/simd-everywhere/simde/issues/277 */
311
+ #if defined(HEDLEY_GCC_VERSION) && HEDLEY_GCC_VERSION_CHECK(4, 6, 0) && \
312
+ !HEDLEY_GCC_VERSION_CHECK(6, 4, 0) && defined(__cplusplus)
313
+ #define SIMDE_DIAGNOSTIC_DISABLE_BUGGY_UNUSED_BUT_SET_VARIBALE_ \
314
+ _Pragma("GCC diagnostic ignored \"-Wunused-but-set-variable\"")
315
+ #else
316
+ #define SIMDE_DIAGNOSTIC_DISABLE_BUGGY_UNUSED_BUT_SET_VARIBALE_
317
+ #endif
318
+
319
+ /* This is the warning that you normally define _CRT_SECURE_NO_WARNINGS
320
+ * to silence, but you have to do that before including anything and
321
+ * that would require reordering includes. */
322
+ #if defined(_MSC_VER)
323
+ #define SIMDE_DIAGNOSTIC_DISABLE_ANNEX_K_ __pragma(warning(disable : 4996))
324
+ #else
325
+ #define SIMDE_DIAGNOSTIC_DISABLE_ANNEX_K_
326
+ #endif
327
+
328
+ /* Some compilers, such as clang, may use `long long` for 64-bit
329
+ * integers, but `long long` triggers a diagnostic with
330
+ * -Wc++98-compat-pedantic which says 'long long' is incompatible with
331
+ * C++98. */
332
+ #if HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic")
333
+ #define SIMDE_DIAGNOSTIC_DISABLE_CPP98_COMPAT_PEDANTIC_ \
334
+ _Pragma("clang diagnostic ignored \"-Wc++98-compat-pedantic\"")
335
+ #else
336
+ #define SIMDE_DIAGNOSTIC_DISABLE_CPP98_COMPAT_PEDANTIC_
337
+ #endif
338
+
339
+ /* Some problem as above */
340
+ #if HEDLEY_HAS_WARNING("-Wc++11-long-long")
341
+ #define SIMDE_DIAGNOSTIC_DISABLE_CPP11_LONG_LONG_ \
342
+ _Pragma("clang diagnostic ignored \"-Wc++11-long-long\"")
343
+ #else
344
+ #define SIMDE_DIAGNOSTIC_DISABLE_CPP11_LONG_LONG_
345
+ #endif
346
+
347
+ /* emscripten emits this whenever stdin/stdout/stderr is used in a
348
+ * macro. */
349
+ #if HEDLEY_HAS_WARNING("-Wdisabled-macro-expansion")
350
+ #define SIMDE_DIAGNOSTIC_DISABLE_DISABLED_MACRO_EXPANSION_ \
351
+ _Pragma("clang diagnostic ignored \"-Wdisabled-macro-expansion\"")
352
+ #else
353
+ #define SIMDE_DIAGNOSTIC_DISABLE_DISABLED_MACRO_EXPANSION_
354
+ #endif
355
+
356
+ /* Clang uses C11 generic selections to implement some AltiVec
357
+ * functions, which triggers this diagnostic when not compiling
358
+ * in C11 mode */
359
+ #if HEDLEY_HAS_WARNING("-Wc11-extensions")
360
+ #define SIMDE_DIAGNOSTIC_DISABLE_C11_EXTENSIONS_ \
361
+ _Pragma("clang diagnostic ignored \"-Wc11-extensions\"")
362
+ #else
363
+ #define SIMDE_DIAGNOSTIC_DISABLE_C11_EXTENSIONS_
364
+ #endif
365
+
366
+ /* Clang sometimes triggers this warning in macros in the AltiVec and
367
+ * NEON headers, or due to missing functions. */
368
+ #if HEDLEY_HAS_WARNING("-Wvector-conversion")
369
+ #define SIMDE_DIAGNOSTIC_DISABLE_VECTOR_CONVERSION_ \
370
+ _Pragma("clang diagnostic ignored \"-Wvector-conversion\"")
371
+ /* For NEON, the situation with -Wvector-conversion in clang < 10 is
372
+ * bad enough that we just disable the warning altogether. */
373
+ #if defined(SIMDE_ARCH_ARM) && SIMDE_DETECT_CLANG_VERSION_NOT(10, 0, 0)
374
+ #define SIMDE_DIAGNOSTIC_DISABLE_BUGGY_VECTOR_CONVERSION_ \
375
+ SIMDE_DIAGNOSTIC_DISABLE_VECTOR_CONVERSION_
376
+ #endif
377
+ #else
378
+ #define SIMDE_DIAGNOSTIC_DISABLE_VECTOR_CONVERSION_
379
+ #endif
380
+ #if !defined(SIMDE_DIAGNOSTIC_DISABLE_BUGGY_VECTOR_CONVERSION_)
381
+ #define SIMDE_DIAGNOSTIC_DISABLE_BUGGY_VECTOR_CONVERSION_
382
+ #endif
383
+
384
+ /* SLEEF triggers this a *lot* in their headers */
385
+ #if HEDLEY_HAS_WARNING("-Wignored-qualifiers")
386
+ #define SIMDE_DIAGNOSTIC_DISABLE_IGNORED_QUALIFIERS_ \
387
+ _Pragma("clang diagnostic ignored \"-Wignored-qualifiers\"")
388
+ #elif HEDLEY_GCC_VERSION_CHECK(4, 3, 0)
389
+ #define SIMDE_DIAGNOSTIC_DISABLE_IGNORED_QUALIFIERS_ \
390
+ _Pragma("GCC diagnostic ignored \"-Wignored-qualifiers\"")
391
+ #else
392
+ #define SIMDE_DIAGNOSTIC_DISABLE_IGNORED_QUALIFIERS_
393
+ #endif
394
+
395
+ /* GCC emits this under some circumstances when using __int128 */
396
+ #if HEDLEY_GCC_VERSION_CHECK(4, 8, 0)
397
+ #define SIMDE_DIAGNOSTIC_DISABLE_PEDANTIC_ \
398
+ _Pragma("GCC diagnostic ignored \"-Wpedantic\"")
399
+ #else
400
+ #define SIMDE_DIAGNOSTIC_DISABLE_PEDANTIC_
401
+ #endif
402
+
403
+ /* MSVC doesn't like (__assume(0), code) and will warn about code being
404
+ * unreachable, but we want it there because not all compilers
405
+ * understand the unreachable macro and will complain if it is missing.
406
+ * I'm planning on adding a new macro to Hedley to handle this a bit
407
+ * more elegantly, but until then... */
408
+ #if defined(HEDLEY_MSVC_VERSION)
409
+ #define SIMDE_DIAGNOSTIC_DISABLE_UNREACHABLE_ __pragma(warning(disable : 4702))
410
+ #else
411
+ #define SIMDE_DIAGNOSTIC_DISABLE_UNREACHABLE_
412
+ #endif
413
+
414
+ /* This is a false positive from GCC in a few places. */
415
+ #if HEDLEY_GCC_VERSION_CHECK(4, 7, 0)
416
+ #define SIMDE_DIAGNOSTIC_DISABLE_MAYBE_UNINITIAZILED_ \
417
+ _Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
418
+ #else
419
+ #define SIMDE_DIAGNOSTIC_DISABLE_MAYBE_UNINITIAZILED_
420
+ #endif
421
+
422
+ #if defined(SIMDE_ENABLE_NATIVE_ALIASES)
423
+ #define SIMDE_DISABLE_UNWANTED_DIAGNOSTICS_NATIVE_ALIASES_ \
424
+ SIMDE_DIAGNOSTIC_DISABLE_RESERVED_ID_MACRO_
425
+ #else
426
+ #define SIMDE_DISABLE_UNWANTED_DIAGNOSTICS_NATIVE_ALIASES_
427
+ #endif
428
+
429
+ #define SIMDE_DISABLE_UNWANTED_DIAGNOSTICS \
430
+ SIMDE_DISABLE_UNWANTED_DIAGNOSTICS_NATIVE_ALIASES_ \
431
+ SIMDE_DIAGNOSTIC_DISABLE_PSABI_ \
432
+ SIMDE_DIAGNOSTIC_DISABLE_NO_EMMS_INSTRUCTION_ \
433
+ SIMDE_DIAGNOSTIC_DISABLE_SIMD_PRAGMA_DEPRECATED_ \
434
+ SIMDE_DIAGNOSTIC_DISABLE_CONDITIONAL_UNINITIALIZED_ \
435
+ SIMDE_DIAGNOSTIC_DISABLE_FLOAT_EQUAL_ \
436
+ SIMDE_DIAGNOSTIC_DISABLE_NON_CONSTANT_AGGREGATE_INITIALIZER_ \
437
+ SIMDE_DIAGNOSTIC_DISABLE_EXTRA_SEMI_ \
438
+ SIMDE_DIAGNOSTIC_DISABLE_VLA_ \
439
+ SIMDE_DIAGNOSTIC_DISABLE_USED_BUT_MARKED_UNUSED_ \
440
+ SIMDE_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION_ \
441
+ SIMDE_DIAGNOSTIC_DISABLE_PASS_FAILED_ \
442
+ SIMDE_DIAGNOSTIC_DISABLE_CPP98_COMPAT_PEDANTIC_ \
443
+ SIMDE_DIAGNOSTIC_DISABLE_CPP11_LONG_LONG_ \
444
+ SIMDE_DIAGNOSTIC_DISABLE_BUGGY_UNUSED_BUT_SET_VARIBALE_ \
445
+ SIMDE_DIAGNOSTIC_DISABLE_BUGGY_VECTOR_CONVERSION_
446
+
447
+ #endif /* !defined(SIMDE_DIAGNOSTIC_H) */