OpenShot Audio Library | OpenShotAudio  0.3.2
juce_core.h
1 /*
2  ==============================================================================
3 
4  This file is part of the JUCE library.
5  Copyright (c) 2017 - ROLI Ltd.
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.txt file.
29 
30 
31  BEGIN_JUCE_MODULE_DECLARATION
32 
33  ID: juce_core
34  vendor: juce
35  version: 5.4.7
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 
41  dependencies:
42  OSXFrameworks: Cocoa IOKit
43  iOSFrameworks: Foundation
44  linuxLibs: rt dl pthread
45  mingwLibs: uuid wsock32 wininet version ole32 ws2_32 oleaut32 imm32 comdlg32 shlwapi rpcrt4 winmm
46 
47  END_JUCE_MODULE_DECLARATION
48 
49 *******************************************************************************/
50 
51 
52 #pragma once
53 #define JUCE_CORE_H_INCLUDED
54 
55 //==============================================================================
56 #ifdef _MSC_VER
57  #pragma warning (push)
58  // Disable warnings for long class names, padding, and undefined preprocessor definitions.
59  #pragma warning (disable: 4251 4786 4668 4820)
60  #ifdef __INTEL_COMPILER
61  #pragma warning (disable: 1125)
62  #endif
63 #endif
64 
65 #include "system/juce_TargetPlatform.h"
66 
67 //==============================================================================
73 #ifndef JUCE_FORCE_DEBUG
74  //#define JUCE_FORCE_DEBUG 0
75 #endif
76 
77 //==============================================================================
89 #ifndef JUCE_LOG_ASSERTIONS
90  #if JUCE_ANDROID
91  #define JUCE_LOG_ASSERTIONS 1
92  #else
93  #define JUCE_LOG_ASSERTIONS 0
94  #endif
95 #endif
96 
97 //==============================================================================
103 #if JUCE_DEBUG && ! defined (JUCE_CHECK_MEMORY_LEAKS)
104  #define JUCE_CHECK_MEMORY_LEAKS 1
105 #endif
106 
107 //==============================================================================
113 #ifndef JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
114  #define JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES 0
115 #endif
116 
125 #ifndef JUCE_INCLUDE_ZLIB_CODE
126  #define JUCE_INCLUDE_ZLIB_CODE 1
127 #endif
128 
129 #ifndef JUCE_ZLIB_INCLUDE_PATH
130  #define JUCE_ZLIB_INCLUDE_PATH <zlib.h>
131 #endif
132 
139 #ifndef JUCE_USE_CURL
140  #define JUCE_USE_CURL 1
141 #endif
142 
150 #ifndef JUCE_LOAD_CURL_SYMBOLS_LAZILY
151  #define JUCE_LOAD_CURL_SYMBOLS_LAZILY 0
152 #endif
153 
158 #ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS
159  #define JUCE_CATCH_UNHANDLED_EXCEPTIONS 0
160 #endif
161 
167 #ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES
168  #define JUCE_ALLOW_STATIC_NULL_VARIABLES 0
169 #endif
170 
176 #ifndef JUCE_STRICT_REFCOUNTEDPOINTER
177  #define JUCE_STRICT_REFCOUNTEDPOINTER 0
178 #endif
179 
180 
181 #ifndef JUCE_STRING_UTF_TYPE
182  #define JUCE_STRING_UTF_TYPE 8
183 #endif
184 
185 //==============================================================================
186 //==============================================================================
187 
188 #if JUCE_CORE_INCLUDE_NATIVE_HEADERS
189  #include "native/juce_BasicNativeHeaders.h"
190 #endif
191 
192 #if JUCE_WINDOWS
193  #undef small
194 #endif
195 
196 #include "system/juce_StandardHeader.h"
197 
198 namespace juce
199 {
200  class StringRef;
201  class MemoryBlock;
202  class File;
203  class InputStream;
204  class OutputStream;
205  class DynamicObject;
206  class FileInputStream;
207  class FileOutputStream;
208  class XmlElement;
209 
210  extern JUCE_API bool JUCE_CALLTYPE juce_isRunningUnderDebugger() noexcept;
211  extern JUCE_API void JUCE_CALLTYPE logAssertion (const char* file, int line) noexcept;
212 }
213 
214 #include "memory/juce_Memory.h"
215 #include "maths/juce_MathsFunctions.h"
216 #include "memory/juce_ByteOrder.h"
217 #include "memory/juce_Atomic.h"
218 #include "text/juce_CharacterFunctions.h"
219 
220 #if JUCE_MSVC
221  #pragma warning (push)
222  #pragma warning (disable: 4514 4996)
223 #endif
224 
225 #include "text/juce_CharPointer_UTF8.h"
226 #include "text/juce_CharPointer_UTF16.h"
227 #include "text/juce_CharPointer_UTF32.h"
228 #include "text/juce_CharPointer_ASCII.h"
229 
230 #if JUCE_MSVC
231  #pragma warning (pop)
232 #endif
233 
234 #include "text/juce_String.h"
235 #include "text/juce_StringRef.h"
236 #include "logging/juce_Logger.h"
237 #include "memory/juce_LeakedObjectDetector.h"
238 #include "memory/juce_ContainerDeletePolicy.h"
239 #include "memory/juce_HeapBlock.h"
240 #include "memory/juce_MemoryBlock.h"
241 #include "memory/juce_ReferenceCountedObject.h"
242 #include "memory/juce_ScopedPointer.h"
243 #include "memory/juce_OptionalScopedPointer.h"
244 #include "memory/juce_Singleton.h"
245 #include "memory/juce_WeakReference.h"
246 #include "threads/juce_ScopedLock.h"
247 #include "threads/juce_CriticalSection.h"
248 #include "maths/juce_Range.h"
249 #include "maths/juce_NormalisableRange.h"
250 #include "maths/juce_StatisticsAccumulator.h"
251 #include "containers/juce_ElementComparator.h"
252 #include "containers/juce_ArrayAllocationBase.h"
253 #include "containers/juce_ArrayBase.h"
254 #include "containers/juce_Array.h"
255 #include "containers/juce_LinkedListPointer.h"
256 #include "containers/juce_ListenerList.h"
257 #include "containers/juce_OwnedArray.h"
258 #include "containers/juce_ReferenceCountedArray.h"
259 #include "containers/juce_ScopedValueSetter.h"
260 #include "containers/juce_SortedSet.h"
261 #include "containers/juce_SparseSet.h"
262 #include "containers/juce_AbstractFifo.h"
263 #include "text/juce_NewLine.h"
264 #include "text/juce_StringPool.h"
265 #include "text/juce_Identifier.h"
266 #include "text/juce_StringArray.h"
267 #include "system/juce_SystemStats.h"
268 #include "memory/juce_HeavyweightLeakedObjectDetector.h"
269 #include "text/juce_StringPairArray.h"
270 #include "text/juce_TextDiff.h"
271 #include "text/juce_LocalisedStrings.h"
272 #include "text/juce_Base64.h"
273 #include "misc/juce_Result.h"
274 #include "misc/juce_Uuid.h"
275 #include "misc/juce_ConsoleApplication.h"
276 #include "containers/juce_Variant.h"
277 #include "containers/juce_NamedValueSet.h"
278 #include "containers/juce_DynamicObject.h"
279 #include "containers/juce_HashMap.h"
280 #include "time/juce_RelativeTime.h"
281 #include "time/juce_Time.h"
282 #include "streams/juce_InputStream.h"
283 #include "streams/juce_OutputStream.h"
284 #include "streams/juce_BufferedInputStream.h"
285 #include "streams/juce_MemoryInputStream.h"
286 #include "streams/juce_MemoryOutputStream.h"
287 #include "streams/juce_SubregionStream.h"
288 #include "streams/juce_InputSource.h"
289 #include "files/juce_File.h"
290 #include "files/juce_DirectoryIterator.h"
291 #include "files/juce_FileInputStream.h"
292 #include "files/juce_FileOutputStream.h"
293 #include "files/juce_FileSearchPath.h"
294 #include "files/juce_MemoryMappedFile.h"
295 #include "files/juce_TemporaryFile.h"
296 #include "files/juce_FileFilter.h"
297 #include "files/juce_WildcardFileFilter.h"
298 #include "streams/juce_FileInputSource.h"
299 #include "logging/juce_FileLogger.h"
300 #include "javascript/juce_JSON.h"
301 #include "javascript/juce_Javascript.h"
302 #include "maths/juce_BigInteger.h"
303 #include "maths/juce_Expression.h"
304 #include "maths/juce_Random.h"
305 #include "misc/juce_RuntimePermissions.h"
306 #include "misc/juce_WindowsRegistry.h"
307 #include "threads/juce_ChildProcess.h"
308 #include "threads/juce_DynamicLibrary.h"
309 #include "threads/juce_HighResolutionTimer.h"
310 #include "threads/juce_InterProcessLock.h"
311 #include "threads/juce_Process.h"
312 #include "threads/juce_SpinLock.h"
313 #include "threads/juce_WaitableEvent.h"
314 #include "threads/juce_Thread.h"
315 #include "threads/juce_ThreadLocalValue.h"
316 #include "threads/juce_ThreadPool.h"
317 #include "threads/juce_TimeSliceThread.h"
318 #include "threads/juce_ReadWriteLock.h"
319 #include "threads/juce_ScopedReadLock.h"
320 #include "threads/juce_ScopedWriteLock.h"
321 #include "network/juce_IPAddress.h"
322 #include "network/juce_MACAddress.h"
323 #include "network/juce_NamedPipe.h"
324 #include "network/juce_Socket.h"
325 #include "network/juce_URL.h"
326 #include "network/juce_WebInputStream.h"
327 #include "streams/juce_URLInputSource.h"
328 #include "time/juce_PerformanceCounter.h"
329 #include "unit_tests/juce_UnitTest.h"
330 #include "xml/juce_XmlDocument.h"
331 #include "xml/juce_XmlElement.h"
332 #include "zip/juce_GZIPCompressorOutputStream.h"
333 #include "zip/juce_GZIPDecompressorInputStream.h"
334 #include "zip/juce_ZipFile.h"
335 #include "containers/juce_PropertySet.h"
336 #include "memory/juce_SharedResourcePointer.h"
337 
338 #if JUCE_CORE_INCLUDE_OBJC_HELPERS && (JUCE_MAC || JUCE_IOS)
339  #include "native/juce_osx_ObjCHelpers.h"
340 #endif
341 
342 #if JUCE_CORE_INCLUDE_COM_SMART_PTR && JUCE_WINDOWS
343  #include "native/juce_win32_ComSmartPtr.h"
344 #endif
345 
346 #if JUCE_CORE_INCLUDE_JNI_HELPERS && JUCE_ANDROID
347  #include <jni.h>
348  #include "native/juce_android_JNIHelpers.h"
349 #endif
350 
351 #if JUCE_UNIT_TESTS
352  #include "unit_tests/juce_UnitTestCategories.h"
353 #endif
354 
355 #ifndef DOXYGEN
356 namespace juce
357 {
358  /*
359  As the very long class names here try to explain, the purpose of this code is to cause
360  a linker error if not all of your compile units are consistent in the options that they
361  enable before including JUCE headers. The reason this is important is that if you have
362  two cpp files, and one includes the juce headers with debug enabled, and another does so
363  without that, then each will be generating code with different class layouts, and you'll
364  get subtle and hard-to-track-down memory corruption!
365  */
366  #if JUCE_DEBUG
367  struct JUCE_API this_will_fail_to_link_if_some_of_your_compile_units_are_built_in_debug_mode
368  { this_will_fail_to_link_if_some_of_your_compile_units_are_built_in_debug_mode() noexcept; };
369  static this_will_fail_to_link_if_some_of_your_compile_units_are_built_in_debug_mode compileUnitMismatchSentinel;
370  #else
371  struct JUCE_API this_will_fail_to_link_if_some_of_your_compile_units_are_built_in_release_mode
372  { this_will_fail_to_link_if_some_of_your_compile_units_are_built_in_release_mode() noexcept; };
373  static this_will_fail_to_link_if_some_of_your_compile_units_are_built_in_release_mode compileUnitMismatchSentinel;
374  #endif
375 }
376 #endif
377 
378 #if JUCE_MSVC
379  #pragma warning (pop)
380 
381  // In DLL builds, need to disable this warnings for other modules
382  #if defined (JUCE_DLL_BUILD) || defined (JUCE_DLL)
383  #pragma warning (disable: 4251)
384  #endif
385 #endif