OpenShot Audio Library | OpenShotAudio  0.6.0
juce_core.h
1 /*
2  ==============================================================================
3 
4  This file is part of the JUCE library.
5  Copyright (c) 2022 - Raw Material Software Limited
6 
7  JUCE is an open source library subject to commercial or open-source
8  licensing.
9 
10  The code included in this file is provided under the terms of the ISC license
11  http://www.isc.org/downloads/software-support-policy/isc-license. Permission
12  To use, copy, modify, and/or distribute this software for any purpose with or
13  without fee is hereby granted provided that the above copyright notice and
14  this permission notice appear in all copies.
15 
16  JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
17  EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
18  DISCLAIMED.
19 
20  ==============================================================================
21 */
22 
23 
24 /*******************************************************************************
25  The block below describes the properties of this module, and is read by
26  the Projucer to automatically generate project code that uses it.
27  For details about the syntax and how to create or use a module, see the
28  JUCE Module Format.md file.
29 
30 
31  BEGIN_JUCE_MODULE_DECLARATION
32 
33  ID: juce_core
34  vendor: juce
35  version: 7.0.10
36  name: JUCE core classes
37  description: The essential set of basic JUCE classes, as required by all the other JUCE modules. Includes text, container, memory, threading and i/o functionality.
38  website: http://www.juce.com/juce
39  license: ISC
40  minimumCppStandard: 17
41 
42  dependencies:
43  OSXFrameworks: Cocoa Foundation IOKit Security
44  iOSFrameworks: Foundation
45  linuxLibs: rt dl pthread
46  mingwLibs: uuid wsock32 wininet version ole32 ws2_32 oleaut32 imm32 comdlg32 shlwapi rpcrt4 winmm
47 
48  END_JUCE_MODULE_DECLARATION
49 
50 *******************************************************************************/
51 
52 
53 #pragma once
54 #define JUCE_CORE_H_INCLUDED
55 
56 //==============================================================================
57 #ifdef _MSC_VER
58  #pragma warning (push)
59  // Disable warnings for long class names, padding, and undefined preprocessor definitions.
60  #pragma warning (disable: 4251 4786 4668 4820)
61  #ifdef __INTEL_COMPILER
62  #pragma warning (disable: 1125)
63  #endif
64 #endif
65 
66 #include "system/juce_TargetPlatform.h"
67 
68 //==============================================================================
74 #ifndef JUCE_FORCE_DEBUG
75  //#define JUCE_FORCE_DEBUG 0
76 #endif
77 
78 //==============================================================================
90 #ifndef JUCE_LOG_ASSERTIONS
91  #if JUCE_ANDROID
92  #define JUCE_LOG_ASSERTIONS 1
93  #else
94  #define JUCE_LOG_ASSERTIONS 0
95  #endif
96 #endif
97 
98 //==============================================================================
104 #if JUCE_DEBUG && ! defined (JUCE_CHECK_MEMORY_LEAKS)
105  #define JUCE_CHECK_MEMORY_LEAKS 1
106 #endif
107 
108 //==============================================================================
114 #ifndef JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
115  #define JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES 0
116 #endif
117 
126 #ifndef JUCE_INCLUDE_ZLIB_CODE
127  #define JUCE_INCLUDE_ZLIB_CODE 1
128 #endif
129 
130 #ifndef JUCE_ZLIB_INCLUDE_PATH
131  #define JUCE_ZLIB_INCLUDE_PATH <zlib.h>
132 #endif
133 
140 #ifndef JUCE_USE_CURL
141  #define JUCE_USE_CURL 1
142 #endif
143 
151 #ifndef JUCE_LOAD_CURL_SYMBOLS_LAZILY
152  #define JUCE_LOAD_CURL_SYMBOLS_LAZILY 0
153 #endif
154 
159 #ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS
160  #define JUCE_CATCH_UNHANDLED_EXCEPTIONS 0
161 #endif
162 
168 #ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES
169  #define JUCE_ALLOW_STATIC_NULL_VARIABLES 0
170 #endif
171 
177 #ifndef JUCE_STRICT_REFCOUNTEDPOINTER
178  #define JUCE_STRICT_REFCOUNTEDPOINTER 0
179 #endif
180 
185 #ifndef JUCE_ENABLE_ALLOCATION_HOOKS
186  #define JUCE_ENABLE_ALLOCATION_HOOKS 0
187 #endif
188 
189 #ifndef JUCE_STRING_UTF_TYPE
190  #define JUCE_STRING_UTF_TYPE 8
191 #endif
192 
193 //==============================================================================
194 //==============================================================================
195 
196 #if JUCE_CORE_INCLUDE_NATIVE_HEADERS
197  #include "native/juce_BasicNativeHeaders.h"
198 #endif
199 
200 #if JUCE_WINDOWS
201  #undef small
202 #endif
203 
204 #include "system/juce_StandardHeader.h"
205 
206 namespace juce
207 {
208  class StringRef;
209  class MemoryBlock;
210  class File;
211  class InputStream;
212  class OutputStream;
213  class DynamicObject;
214  class FileInputStream;
215  class FileOutputStream;
216  class XmlElement;
217 
218  extern JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger() noexcept;
219  extern JUCE_API void JUCE_CALLTYPE logAssertion (const char* file, int line) noexcept;
220 }
221 
222 #include "misc/juce_EnumHelpers.h"
223 #include "memory/juce_Memory.h"
224 #include "maths/juce_MathsFunctions.h"
225 #include "memory/juce_ByteOrder.h"
226 #include "memory/juce_Atomic.h"
227 #include "text/juce_CharacterFunctions.h"
228 
229 JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4514 4996)
230 
231 #include "text/juce_CharPointer_UTF8.h"
232 #include "text/juce_CharPointer_UTF16.h"
233 #include "text/juce_CharPointer_UTF32.h"
234 #include "text/juce_CharPointer_ASCII.h"
235 
236 JUCE_END_IGNORE_WARNINGS_MSVC
237 
238 #include "text/juce_String.h"
239 #include "text/juce_StringRef.h"
240 #include "logging/juce_Logger.h"
241 #include "memory/juce_LeakedObjectDetector.h"
242 #include "memory/juce_ContainerDeletePolicy.h"
243 #include "memory/juce_HeapBlock.h"
244 #include "memory/juce_MemoryBlock.h"
245 #include "memory/juce_ReferenceCountedObject.h"
246 #include "memory/juce_ScopedPointer.h"
247 #include "memory/juce_OptionalScopedPointer.h"
248 #include "containers/juce_Optional.h"
249 #include "containers/juce_Enumerate.h"
250 #include "containers/juce_ScopedValueSetter.h"
251 #include "memory/juce_Singleton.h"
252 #include "memory/juce_WeakReference.h"
253 #include "threads/juce_ScopedLock.h"
254 #include "threads/juce_CriticalSection.h"
255 #include "maths/juce_Range.h"
256 #include "maths/juce_NormalisableRange.h"
257 #include "maths/juce_StatisticsAccumulator.h"
258 #include "containers/juce_ElementComparator.h"
259 #include "containers/juce_ArrayAllocationBase.h"
260 #include "containers/juce_ArrayBase.h"
261 #include "containers/juce_Array.h"
262 #include "containers/juce_LinkedListPointer.h"
263 #include "misc/juce_ScopeGuard.h"
264 #include "containers/juce_ListenerList.h"
265 #include "containers/juce_OwnedArray.h"
266 #include "containers/juce_ReferenceCountedArray.h"
267 #include "containers/juce_SortedSet.h"
268 #include "containers/juce_SparseSet.h"
269 #include "containers/juce_AbstractFifo.h"
270 #include "containers/juce_SingleThreadedAbstractFifo.h"
271 #include "text/juce_NewLine.h"
272 #include "text/juce_StringPool.h"
273 #include "text/juce_Identifier.h"
274 #include "text/juce_StringArray.h"
275 #include "system/juce_SystemStats.h"
276 #include "memory/juce_HeavyweightLeakedObjectDetector.h"
277 #include "text/juce_StringPairArray.h"
278 #include "text/juce_TextDiff.h"
279 #include "text/juce_LocalisedStrings.h"
280 #include "text/juce_Base64.h"
281 #include "misc/juce_Functional.h"
282 #include "containers/juce_Span.h"
283 #include "misc/juce_Result.h"
284 #include "misc/juce_Uuid.h"
285 #include "misc/juce_ConsoleApplication.h"
286 #include "containers/juce_Variant.h"
287 #include "containers/juce_NamedValueSet.h"
288 #include "javascript/juce_JSON.h"
289 #include "containers/juce_DynamicObject.h"
290 #include "containers/juce_HashMap.h"
291 #include "containers/juce_FixedSizeFunction.h"
292 #include "time/juce_RelativeTime.h"
293 #include "time/juce_Time.h"
294 #include "streams/juce_InputStream.h"
295 #include "streams/juce_OutputStream.h"
296 #include "streams/juce_BufferedInputStream.h"
297 #include "streams/juce_MemoryInputStream.h"
298 #include "streams/juce_MemoryOutputStream.h"
299 #include "streams/juce_SubregionStream.h"
300 #include "streams/juce_InputSource.h"
301 #include "files/juce_File.h"
302 #include "files/juce_DirectoryIterator.h"
303 #include "files/juce_RangedDirectoryIterator.h"
304 #include "files/juce_FileInputStream.h"
305 #include "files/juce_FileOutputStream.h"
306 #include "files/juce_FileSearchPath.h"
307 #include "files/juce_MemoryMappedFile.h"
308 #include "files/juce_TemporaryFile.h"
309 #include "files/juce_FileFilter.h"
310 #include "files/juce_WildcardFileFilter.h"
311 #include "streams/juce_FileInputSource.h"
312 #include "logging/juce_FileLogger.h"
313 #include "javascript/juce_JSONUtils.h"
314 #include "serialisation/juce_Serialisation.h"
315 #include "javascript/juce_JSONSerialisation.h"
316 #include "javascript/juce_Javascript.h"
317 #include "maths/juce_BigInteger.h"
318 #include "maths/juce_Expression.h"
319 #include "maths/juce_Random.h"
320 #include "misc/juce_RuntimePermissions.h"
321 #include "misc/juce_WindowsRegistry.h"
322 #include "threads/juce_ChildProcess.h"
323 #include "threads/juce_DynamicLibrary.h"
324 #include "threads/juce_InterProcessLock.h"
325 #include "threads/juce_Process.h"
326 #include "threads/juce_SpinLock.h"
327 #include "threads/juce_WaitableEvent.h"
328 #include "threads/juce_Thread.h"
329 #include "threads/juce_HighResolutionTimer.h"
330 #include "threads/juce_ThreadLocalValue.h"
331 #include "threads/juce_ThreadPool.h"
332 #include "threads/juce_TimeSliceThread.h"
333 #include "threads/juce_ReadWriteLock.h"
334 #include "threads/juce_ScopedReadLock.h"
335 #include "threads/juce_ScopedWriteLock.h"
336 #include "network/juce_IPAddress.h"
337 #include "network/juce_MACAddress.h"
338 #include "network/juce_NamedPipe.h"
339 #include "network/juce_Socket.h"
340 #include "network/juce_URL.h"
341 #include "network/juce_WebInputStream.h"
342 #include "streams/juce_URLInputSource.h"
343 #include "time/juce_PerformanceCounter.h"
344 #include "unit_tests/juce_UnitTest.h"
345 #include "xml/juce_XmlDocument.h"
346 #include "xml/juce_XmlElement.h"
347 #include "zip/juce_GZIPCompressorOutputStream.h"
348 #include "zip/juce_GZIPDecompressorInputStream.h"
349 #include "zip/juce_ZipFile.h"
350 #include "containers/juce_PropertySet.h"
351 #include "memory/juce_SharedResourcePointer.h"
352 #include "memory/juce_AllocationHooks.h"
353 #include "memory/juce_Reservoir.h"
354 #include "files/juce_AndroidDocument.h"
355 #include "streams/juce_AndroidDocumentInputSource.h"
356 
357 #include "detail/juce_CallbackListenerList.h"
358 
359 #if JUCE_CORE_INCLUDE_OBJC_HELPERS && (JUCE_MAC || JUCE_IOS)
360  #include "native/juce_CFHelpers_mac.h"
361  #include "native/juce_ObjCHelpers_mac.h"
362 #endif
363 
364 #if JUCE_CORE_INCLUDE_COM_SMART_PTR && JUCE_WINDOWS
365  #include "native/juce_ComSmartPtr_windows.h"
366 #endif
367 
368 #if JUCE_CORE_INCLUDE_JNI_HELPERS && JUCE_ANDROID
369  #include <jni.h>
370  #include "native/juce_JNIHelpers_android.h"
371 #endif
372 
373 #if JUCE_UNIT_TESTS
374  #include "unit_tests/juce_UnitTestCategories.h"
375 #endif
376 
377 #ifndef DOXYGEN
378 namespace juce
379 {
380  /*
381  As the very long class names here try to explain, the purpose of this code is to cause
382  a linker error if not all of your compile units are consistent in the options that they
383  enable before including JUCE headers. The reason this is important is that if you have
384  two cpp files, and one includes the juce headers with debug enabled, and another does so
385  without that, then each will be generating code with different class layouts, and you'll
386  get subtle and hard-to-track-down memory corruption!
387  */
388  #if JUCE_DEBUG
389  struct JUCE_API this_will_fail_to_link_if_some_of_your_compile_units_are_built_in_debug_mode
390  { this_will_fail_to_link_if_some_of_your_compile_units_are_built_in_debug_mode() noexcept; };
391  static this_will_fail_to_link_if_some_of_your_compile_units_are_built_in_debug_mode compileUnitMismatchSentinel;
392  #else
393  struct JUCE_API this_will_fail_to_link_if_some_of_your_compile_units_are_built_in_release_mode
394  { this_will_fail_to_link_if_some_of_your_compile_units_are_built_in_release_mode() noexcept; };
395  static this_will_fail_to_link_if_some_of_your_compile_units_are_built_in_release_mode compileUnitMismatchSentinel;
396  #endif
397 }
398 #endif
399 
400 JUCE_END_IGNORE_WARNINGS_MSVC
401 
402 // In DLL builds, need to disable this warnings for other modules
403 #if defined (JUCE_DLL_BUILD) || defined (JUCE_DLL)
404  JUCE_IGNORE_MSVC (4251)
405 #endif