expo-juce 0.3.0 → 0.3.2

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 (1611) hide show
  1. package/README.md +34 -0
  2. package/build/index.d.ts +21 -24
  3. package/build/index.d.ts.map +1 -1
  4. package/build/index.js +44 -48
  5. package/build/index.js.map +1 -1
  6. package/ios/BeeperAudioEngine.h +45 -0
  7. package/ios/BeeperAudioEngine.mm +352 -0
  8. package/ios/ExpoJuce.podspec +31 -8
  9. package/ios/ExpoJuceBridge.h +12 -12
  10. package/ios/ExpoJuceBridge.m +35 -100
  11. package/ios/ExpoJuceModule.swift +63 -85
  12. package/ios/JuceConfig.h +49 -14
  13. package/ios/JuceModule_audio_basics.mm +2 -0
  14. package/ios/JuceModule_audio_devices.mm +2 -0
  15. package/ios/JuceModule_audio_formats.mm +2 -0
  16. package/ios/JuceModule_audio_processors.mm +2 -0
  17. package/ios/JuceModule_core.mm +5 -0
  18. package/ios/JuceModule_data_structures.mm +2 -0
  19. package/ios/JuceModule_dsp.mm +2 -0
  20. package/ios/JuceModule_events.mm +2 -0
  21. package/ios/JuceModule_graphics.mm +2 -0
  22. package/ios/JuceModule_gui_basics.mm +2 -0
  23. package/ios/JuceModule_gui_extra.mm +2 -0
  24. package/ios/JuceModule_harfbuzz.mm +4 -0
  25. package/ios/PolySynthProcessor.h +83 -0
  26. package/ios/PolySynthProcessor.mm +164 -0
  27. package/ios/TransportEngine.h +35 -0
  28. package/ios/TransportEngine.mm +50 -0
  29. package/ios/Voice.h +59 -0
  30. package/ios/Voice.mm +157 -0
  31. package/ios/VoiceAllocator.h +22 -0
  32. package/ios/VoiceAllocator.mm +88 -0
  33. package/ios/juce_modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.cpp +1957 -0
  34. package/ios/juce_modules/juce_audio_devices/audio_io/juce_AudioDeviceManager.h +586 -0
  35. package/ios/juce_modules/juce_audio_devices/audio_io/juce_AudioIODevice.cpp +65 -0
  36. package/ios/juce_modules/juce_audio_devices/audio_io/juce_AudioIODevice.h +368 -0
  37. package/ios/juce_modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.cpp +152 -0
  38. package/ios/juce_modules/juce_audio_devices/audio_io/juce_AudioIODeviceType.h +200 -0
  39. package/ios/juce_modules/juce_audio_devices/audio_io/juce_SampleRateHelpers.cpp +57 -0
  40. package/ios/juce_modules/juce_audio_devices/audio_io/juce_SystemAudioVolume.h +71 -0
  41. package/ios/juce_modules/juce_audio_devices/juce_audio_devices.cpp +277 -0
  42. package/ios/juce_modules/juce_audio_devices/juce_audio_devices.h +201 -0
  43. package/ios/juce_modules/juce_audio_devices/juce_audio_devices.mm +35 -0
  44. package/ios/juce_modules/juce_audio_devices/midi_io/juce_MidiDevices.cpp +246 -0
  45. package/ios/juce_modules/juce_audio_devices/midi_io/juce_MidiDevices.h +482 -0
  46. package/ios/juce_modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.cpp +170 -0
  47. package/ios/juce_modules/juce_audio_devices/midi_io/juce_MidiMessageCollector.h +125 -0
  48. package/ios/juce_modules/juce_audio_devices/midi_io/ump/juce_UMPBytestreamInputHandler.h +153 -0
  49. package/ios/juce_modules/juce_audio_devices/midi_io/ump/juce_UMPU32InputHandler.h +165 -0
  50. package/ios/juce_modules/juce_audio_devices/native/java/app/com/rmsl/juce/JuceMidiSupport.java +1121 -0
  51. package/ios/juce_modules/juce_audio_devices/native/juce_ALSA_linux.cpp +1313 -0
  52. package/ios/juce_modules/juce_audio_devices/native/juce_ASIO_windows.cpp +1654 -0
  53. package/ios/juce_modules/juce_audio_devices/native/juce_Audio_android.cpp +482 -0
  54. package/ios/juce_modules/juce_audio_devices/native/juce_Audio_ios.cpp +1508 -0
  55. package/ios/juce_modules/juce_audio_devices/native/juce_Audio_ios.h +106 -0
  56. package/ios/juce_modules/juce_audio_devices/native/juce_Bela_linux.cpp +612 -0
  57. package/ios/juce_modules/juce_audio_devices/native/juce_CoreAudio_mac.cpp +2315 -0
  58. package/ios/juce_modules/juce_audio_devices/native/juce_CoreMidi_mac.mm +1280 -0
  59. package/ios/juce_modules/juce_audio_devices/native/juce_DirectSound_windows.cpp +1304 -0
  60. package/ios/juce_modules/juce_audio_devices/native/juce_HighPerformanceAudioHelpers_android.h +137 -0
  61. package/ios/juce_modules/juce_audio_devices/native/juce_JackAudio_linux.cpp +681 -0
  62. package/ios/juce_modules/juce_audio_devices/native/juce_Midi_android.cpp +1183 -0
  63. package/ios/juce_modules/juce_audio_devices/native/juce_Midi_linux.cpp +788 -0
  64. package/ios/juce_modules/juce_audio_devices/native/juce_Midi_windows.cpp +2038 -0
  65. package/ios/juce_modules/juce_audio_devices/native/juce_Oboe_android.cpp +1440 -0
  66. package/ios/juce_modules/juce_audio_devices/native/juce_OpenSL_android.cpp +1306 -0
  67. package/ios/juce_modules/juce_audio_devices/native/juce_WASAPI_windows.cpp +2032 -0
  68. package/ios/juce_modules/juce_audio_devices/native/oboe/.clang-tidy +3 -0
  69. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/AudioStream.h +706 -0
  70. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/AudioStreamBase.h +343 -0
  71. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/AudioStreamBuilder.h +670 -0
  72. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/AudioStreamCallback.h +193 -0
  73. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/Definitions.h +897 -0
  74. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/FifoBuffer.h +164 -0
  75. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/FifoControllerBase.h +112 -0
  76. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/FullDuplexStream.h +324 -0
  77. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/LatencyTuner.h +150 -0
  78. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/Oboe.h +40 -0
  79. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/OboeExtensions.h +64 -0
  80. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/ResultWithValue.h +155 -0
  81. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/StabilizedCallback.h +75 -0
  82. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/Utilities.h +99 -0
  83. package/ios/juce_modules/juce_audio_devices/native/oboe/include/oboe/Version.h +92 -0
  84. package/ios/juce_modules/juce_audio_devices/native/oboe/src/aaudio/AAudioExtensions.h +180 -0
  85. package/ios/juce_modules/juce_audio_devices/native/oboe/src/aaudio/AAudioLoader.cpp +506 -0
  86. package/ios/juce_modules/juce_audio_devices/native/oboe/src/aaudio/AAudioLoader.h +299 -0
  87. package/ios/juce_modules/juce_audio_devices/native/oboe/src/aaudio/AudioStreamAAudio.cpp +868 -0
  88. package/ios/juce_modules/juce_audio_devices/native/oboe/src/aaudio/AudioStreamAAudio.h +152 -0
  89. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/AdpfWrapper.cpp +124 -0
  90. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/AdpfWrapper.h +85 -0
  91. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/AudioClock.h +75 -0
  92. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/AudioSourceCaller.cpp +38 -0
  93. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/AudioSourceCaller.h +83 -0
  94. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/AudioStream.cpp +222 -0
  95. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/AudioStreamBuilder.cpp +224 -0
  96. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/DataConversionFlowGraph.cpp +266 -0
  97. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/DataConversionFlowGraph.h +86 -0
  98. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/FilterAudioStream.cpp +106 -0
  99. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/FilterAudioStream.h +227 -0
  100. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/FixedBlockAdapter.cpp +38 -0
  101. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/FixedBlockAdapter.h +67 -0
  102. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/FixedBlockReader.cpp +73 -0
  103. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/FixedBlockReader.h +60 -0
  104. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/FixedBlockWriter.cpp +73 -0
  105. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/FixedBlockWriter.h +54 -0
  106. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/LatencyTuner.cpp +108 -0
  107. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/MonotonicCounter.h +112 -0
  108. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/OboeDebug.h +41 -0
  109. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/OboeExtensions.cpp +36 -0
  110. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/QuirksManager.cpp +311 -0
  111. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/QuirksManager.h +134 -0
  112. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/SourceFloatCaller.cpp +30 -0
  113. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/SourceFloatCaller.h +44 -0
  114. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/SourceI16Caller.cpp +47 -0
  115. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/SourceI16Caller.h +49 -0
  116. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/SourceI24Caller.cpp +56 -0
  117. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/SourceI24Caller.h +53 -0
  118. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/SourceI32Caller.cpp +47 -0
  119. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/SourceI32Caller.h +53 -0
  120. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/StabilizedCallback.cpp +112 -0
  121. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/Trace.cpp +75 -0
  122. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/Trace.h +31 -0
  123. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/Utilities.cpp +333 -0
  124. package/ios/juce_modules/juce_audio_devices/native/oboe/src/common/Version.cpp +28 -0
  125. package/ios/juce_modules/juce_audio_devices/native/oboe/src/fifo/FifoBuffer.cpp +178 -0
  126. package/ios/juce_modules/juce_audio_devices/native/oboe/src/fifo/FifoController.cpp +30 -0
  127. package/ios/juce_modules/juce_audio_devices/native/oboe/src/fifo/FifoController.h +62 -0
  128. package/ios/juce_modules/juce_audio_devices/native/oboe/src/fifo/FifoControllerBase.cpp +68 -0
  129. package/ios/juce_modules/juce_audio_devices/native/oboe/src/fifo/FifoControllerIndirect.cpp +32 -0
  130. package/ios/juce_modules/juce_audio_devices/native/oboe/src/fifo/FifoControllerIndirect.h +66 -0
  131. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/ChannelCountConverter.cpp +52 -0
  132. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/ChannelCountConverter.h +52 -0
  133. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/ClipToRange.cpp +38 -0
  134. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/ClipToRange.h +68 -0
  135. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/FlowGraphNode.cpp +114 -0
  136. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/FlowGraphNode.h +450 -0
  137. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/FlowgraphUtilities.h +55 -0
  138. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/Limiter.cpp +67 -0
  139. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/Limiter.h +64 -0
  140. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/ManyToMultiConverter.cpp +47 -0
  141. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/ManyToMultiConverter.h +53 -0
  142. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/MonoBlend.cpp +46 -0
  143. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/MonoBlend.h +48 -0
  144. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/MonoToMultiConverter.cpp +41 -0
  145. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/MonoToMultiConverter.h +49 -0
  146. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/MultiToManyConverter.cpp +47 -0
  147. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/MultiToManyConverter.h +49 -0
  148. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/MultiToMonoConverter.cpp +41 -0
  149. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/MultiToMonoConverter.h +49 -0
  150. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/RampLinear.cpp +81 -0
  151. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/RampLinear.h +96 -0
  152. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SampleRateConverter.cpp +71 -0
  153. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SampleRateConverter.h +63 -0
  154. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.cpp +46 -0
  155. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.h +45 -0
  156. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.cpp +57 -0
  157. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.h +43 -0
  158. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI24.cpp +66 -0
  159. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI24.h +44 -0
  160. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI32.cpp +55 -0
  161. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI32.h +40 -0
  162. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.cpp +42 -0
  163. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.h +44 -0
  164. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.cpp +54 -0
  165. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.h +42 -0
  166. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI24.cpp +65 -0
  167. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI24.h +43 -0
  168. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI32.cpp +54 -0
  169. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI32.h +42 -0
  170. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/HyperbolicCosineWindow.h +71 -0
  171. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/IntegerRatio.cpp +50 -0
  172. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/IntegerRatio.h +54 -0
  173. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/KaiserWindow.h +90 -0
  174. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/LinearResampler.cpp +42 -0
  175. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/LinearResampler.h +47 -0
  176. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/MultiChannelResampler.cpp +171 -0
  177. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/MultiChannelResampler.h +281 -0
  178. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/PolyphaseResampler.cpp +61 -0
  179. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/PolyphaseResampler.h +53 -0
  180. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/PolyphaseResamplerMono.cpp +63 -0
  181. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/PolyphaseResamplerMono.h +41 -0
  182. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/PolyphaseResamplerStereo.cpp +79 -0
  183. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/PolyphaseResamplerStereo.h +41 -0
  184. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/ResamplerDefinitions.h +27 -0
  185. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/SincResampler.cpp +72 -0
  186. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/SincResampler.h +50 -0
  187. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/SincResamplerStereo.cpp +81 -0
  188. package/ios/juce_modules/juce_audio_devices/native/oboe/src/flowgraph/resampler/SincResamplerStereo.h +42 -0
  189. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/AudioInputStreamOpenSLES.cpp +360 -0
  190. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/AudioInputStreamOpenSLES.h +66 -0
  191. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/AudioOutputStreamOpenSLES.cpp +462 -0
  192. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/AudioOutputStreamOpenSLES.h +80 -0
  193. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/AudioStreamBuffered.cpp +285 -0
  194. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/AudioStreamBuffered.h +96 -0
  195. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/AudioStreamOpenSLES.cpp +499 -0
  196. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/AudioStreamOpenSLES.h +148 -0
  197. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/EngineOpenSLES.cpp +141 -0
  198. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/EngineOpenSLES.h +65 -0
  199. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/OpenSLESUtilities.cpp +96 -0
  200. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/OpenSLESUtilities.h +44 -0
  201. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/OutputMixerOpenSLES.cpp +74 -0
  202. package/ios/juce_modules/juce_audio_devices/native/oboe/src/opensles/OutputMixerOpenSLES.h +58 -0
  203. package/ios/juce_modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp +193 -0
  204. package/ios/juce_modules/juce_audio_devices/sources/juce_AudioSourcePlayer.h +127 -0
  205. package/ios/juce_modules/juce_audio_devices/sources/juce_AudioTransportSource.cpp +295 -0
  206. package/ios/juce_modules/juce_audio_devices/sources/juce_AudioTransportSource.h +192 -0
  207. package/ios/juce_modules/juce_audio_processors/format/juce_AudioPluginFormat.cpp +107 -0
  208. package/ios/juce_modules/juce_audio_processors/format/juce_AudioPluginFormat.h +183 -0
  209. package/ios/juce_modules/juce_audio_processors/format/juce_AudioPluginFormatManager.cpp +212 -0
  210. package/ios/juce_modules/juce_audio_processors/format/juce_AudioPluginFormatManager.h +151 -0
  211. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/generate_lv2_bundle_sources.py +175 -0
  212. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/juce_lv2_config.h +87 -0
  213. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/COPYING +13 -0
  214. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilv.h +2117 -0
  215. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/lilv/lilvmm.hpp +440 -0
  216. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/collections.c +240 -0
  217. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.c +564 -0
  218. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/filesystem.h +182 -0
  219. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/instance.c +115 -0
  220. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lib.c +127 -0
  221. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/lilv_internal.h +477 -0
  222. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/node.c +413 -0
  223. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/plugin.c +1140 -0
  224. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/pluginclass.c +91 -0
  225. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/port.c +272 -0
  226. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/query.c +144 -0
  227. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/scalepoint.c +53 -0
  228. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/state.c +1541 -0
  229. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/ui.c +115 -0
  230. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/util.c +291 -0
  231. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/world.c +1249 -0
  232. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/common.h +138 -0
  233. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.c +727 -0
  234. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv/src/zix/tree.h +164 -0
  235. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lilv_config.h +42 -0
  236. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/COPYING +16 -0
  237. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test-utils.c +73 -0
  238. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom-test.c +367 -0
  239. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.h +260 -0
  240. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.meta.ttl +542 -0
  241. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/atom.ttl +247 -0
  242. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge-overflow-test.c +235 -0
  243. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/forge.h +683 -0
  244. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/manifest.ttl +9 -0
  245. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/atom/util.h +523 -0
  246. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.h +51 -0
  247. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.meta.ttl +157 -0
  248. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/buf-size.ttl +67 -0
  249. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/buf-size/manifest.ttl +9 -0
  250. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/attributes.h +59 -0
  251. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2.h +484 -0
  252. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2_util.h +103 -0
  253. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2core.meta.ttl +905 -0
  254. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/lv2core.ttl +674 -0
  255. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/manifest.ttl +15 -0
  256. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/meta.ttl +199 -0
  257. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/core/people.ttl +51 -0
  258. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.h +73 -0
  259. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.meta.ttl +77 -0
  260. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/data-access.ttl +11 -0
  261. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/data-access/manifest.ttl +9 -0
  262. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.h +160 -0
  263. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.meta.ttl +131 -0
  264. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/dynmanifest.ttl +25 -0
  265. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/dynmanifest/manifest.ttl +9 -0
  266. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event-helpers.h +255 -0
  267. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.h +306 -0
  268. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.meta.ttl +246 -0
  269. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/event.ttl +86 -0
  270. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/event/manifest.ttl +9 -0
  271. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.h +41 -0
  272. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.meta.ttl +75 -0
  273. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/instance-access.ttl +11 -0
  274. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/instance-access/manifest.ttl +9 -0
  275. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.h +113 -0
  276. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.meta.ttl +126 -0
  277. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/log.ttl +48 -0
  278. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/logger.h +157 -0
  279. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/log/manifest.ttl +9 -0
  280. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/manifest.ttl +9 -0
  281. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.h +248 -0
  282. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.meta.ttl +153 -0
  283. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/midi/midi.ttl +366 -0
  284. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/manifest.ttl +9 -0
  285. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.h +48 -0
  286. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.meta.ttl +90 -0
  287. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/morph/morph.ttl +46 -0
  288. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/manifest.ttl +9 -0
  289. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.h +149 -0
  290. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.meta.ttl +129 -0
  291. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/options/options.ttl +44 -0
  292. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/manifest.ttl +9 -0
  293. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.h +68 -0
  294. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.meta.ttl +75 -0
  295. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/parameters/parameters.ttl +202 -0
  296. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/manifest.ttl +9 -0
  297. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.h +73 -0
  298. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.meta.ttl +374 -0
  299. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/patch/patch.ttl +251 -0
  300. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/manifest.ttl +9 -0
  301. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.h +77 -0
  302. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.meta.ttl +144 -0
  303. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-groups/port-groups.ttl +807 -0
  304. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/manifest.ttl +9 -0
  305. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.h +53 -0
  306. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.meta.ttl +202 -0
  307. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/port-props/port-props.ttl +79 -0
  308. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/manifest.ttl +9 -0
  309. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.h +48 -0
  310. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.meta.ttl +132 -0
  311. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/presets/presets.ttl +60 -0
  312. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/manifest.ttl +9 -0
  313. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.h +89 -0
  314. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.meta.ttl +74 -0
  315. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/resize-port/resize-port.ttl +36 -0
  316. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/manifest.ttl +9 -0
  317. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.h +392 -0
  318. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.meta.ttl +467 -0
  319. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/state/state.ttl +60 -0
  320. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/manifest.ttl +9 -0
  321. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.h +59 -0
  322. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.meta.ttl +112 -0
  323. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/time/time.ttl +122 -0
  324. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/manifest.ttl +9 -0
  325. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.h +543 -0
  326. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.meta.ttl +627 -0
  327. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/ui/ui.ttl +248 -0
  328. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/manifest.ttl +9 -0
  329. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.h +75 -0
  330. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.meta.ttl +154 -0
  331. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/units/units.ttl +379 -0
  332. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/manifest.ttl +9 -0
  333. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.h +121 -0
  334. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.meta.ttl +72 -0
  335. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/uri-map/uri-map.ttl +14 -0
  336. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/manifest.ttl +9 -0
  337. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.h +140 -0
  338. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.meta.ttl +84 -0
  339. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/urid/urid.ttl +22 -0
  340. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/manifest.ttl +9 -0
  341. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.h +183 -0
  342. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.meta.ttl +82 -0
  343. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/lv2/lv2/worker/worker.ttl +25 -0
  344. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/COPYING +13 -0
  345. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/serd/serd.h +1059 -0
  346. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/.clang-tidy +18 -0
  347. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/attributes.h +26 -0
  348. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.c +132 -0
  349. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/base64.h +48 -0
  350. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_sink.h +98 -0
  351. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.c +112 -0
  352. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/byte_source.h +120 -0
  353. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/env.c +256 -0
  354. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/n3.c +1720 -0
  355. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.c +393 -0
  356. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/node.h +48 -0
  357. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.c +425 -0
  358. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/reader.h +196 -0
  359. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_config.h +98 -0
  360. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serd_internal.h +46 -0
  361. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/serdi.c +377 -0
  362. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/stack.h +119 -0
  363. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string.c +179 -0
  364. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/string_utils.h +173 -0
  365. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.c +82 -0
  366. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/system.h +40 -0
  367. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri.c +506 -0
  368. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/uri_utils.h +110 -0
  369. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd/src/writer.c +1114 -0
  370. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/serd_config.h +42 -0
  371. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/COPYING +13 -0
  372. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sord.h +642 -0
  373. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/sord/sordmm.hpp +720 -0
  374. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord.c +1368 -0
  375. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_config.h +61 -0
  376. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_internal.h +53 -0
  377. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_test.c +767 -0
  378. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sord_validate.c +804 -0
  379. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordi.c +216 -0
  380. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/sordmm_test.cpp +25 -0
  381. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/syntax.c +203 -0
  382. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.c +936 -0
  383. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/btree.h +187 -0
  384. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/common.h +138 -0
  385. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.c +141 -0
  386. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/digest.h +67 -0
  387. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.c +230 -0
  388. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord/src/zix/hash.h +138 -0
  389. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sord_config.h +42 -0
  390. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sratom/COPYING +13 -0
  391. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sratom/sratom/sratom.h +220 -0
  392. package/ios/juce_modules/juce_audio_processors/format_types/LV2_SDK/sratom/src/sratom.c +919 -0
  393. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/VST3_License_Agreement.pdf +0 -0
  394. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/VST3_Usage_Guidelines.pdf +0 -0
  395. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/baseiids.cpp +52 -0
  396. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/classfactoryhelpers.h +87 -0
  397. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.cpp +641 -0
  398. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fbuffer.h +306 -0
  399. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fcommandline.h +392 -0
  400. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fdebug.cpp +340 -0
  401. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fdebug.h +246 -0
  402. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fobject.cpp +271 -0
  403. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fobject.h +577 -0
  404. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstreamer.cpp +756 -0
  405. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstreamer.h +242 -0
  406. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstring.cpp +3962 -0
  407. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/fstring.h +767 -0
  408. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/updatehandler.cpp +737 -0
  409. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/source/updatehandler.h +150 -0
  410. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/thread/include/flock.h +184 -0
  411. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/base/thread/source/flock.cpp +146 -0
  412. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/helper.manifest +10 -0
  413. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/conststringtable.cpp +106 -0
  414. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/conststringtable.h +44 -0
  415. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/coreiids.cpp +40 -0
  416. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/falignpop.h +25 -0
  417. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/falignpush.h +40 -0
  418. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/fplatform.h +333 -0
  419. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/fstrdefs.h +291 -0
  420. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/ftypes.h +176 -0
  421. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/funknown.cpp +502 -0
  422. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/funknown.h +564 -0
  423. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/futils.h +107 -0
  424. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/fvariant.h +297 -0
  425. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/ibstream.h +87 -0
  426. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/icloneable.h +41 -0
  427. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/ipersistent.h +160 -0
  428. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/ipluginbase.h +520 -0
  429. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/iplugincompatibility.h +122 -0
  430. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/istringresult.h +80 -0
  431. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/iupdatehandler.h +98 -0
  432. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/smartpointer.h +386 -0
  433. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/typesizecheck.h +55 -0
  434. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/ustring.cpp +275 -0
  435. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/base/ustring.h +116 -0
  436. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/gui/iplugview.h +287 -0
  437. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/gui/iplugviewcontentscalesupport.h +75 -0
  438. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstattributes.h +150 -0
  439. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstaudioprocessor.h +434 -0
  440. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstautomationstate.h +67 -0
  441. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstchannelcontextinfo.h +238 -0
  442. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstcomponent.h +205 -0
  443. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstcontextmenu.h +219 -0
  444. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstdataexchange.h +221 -0
  445. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivsteditcontroller.h +657 -0
  446. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstevents.h +221 -0
  447. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivsthostapplication.h +163 -0
  448. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstinterappaudio.h +142 -0
  449. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstmessage.h +97 -0
  450. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstmidicontrollers.h +118 -0
  451. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstmidilearn.h +106 -0
  452. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstnoteexpression.h +255 -0
  453. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstparameterchanges.h +145 -0
  454. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstparameterfunctionname.h +151 -0
  455. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstphysicalui.h +169 -0
  456. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstpluginterfacesupport.h +67 -0
  457. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstplugview.h +62 -0
  458. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstprefetchablesupport.h +99 -0
  459. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstprocesscontext.h +153 -0
  460. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstremapparamid.h +75 -0
  461. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstrepresentation.h +364 -0
  462. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivsttestplugprovider.h +109 -0
  463. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/ivstunits.h +271 -0
  464. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/vstpshpack4.h +30 -0
  465. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/vstspeaker.h +1318 -0
  466. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/pluginterfaces/vst/vsttypes.h +157 -0
  467. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/samples/vst-utilities/moduleinfotool/source/main.cpp +441 -0
  468. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/memorystream.cpp +319 -0
  469. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/memorystream.h +79 -0
  470. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/pluginview.cpp +100 -0
  471. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/pluginview.h +116 -0
  472. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/readfile.cpp +81 -0
  473. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/common/readfile.h +54 -0
  474. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/hostclasses.cpp +342 -0
  475. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/hostclasses.h +120 -0
  476. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/module.cpp +340 -0
  477. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/module.h +214 -0
  478. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/module_linux.cpp +369 -0
  479. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/module_mac.mm +395 -0
  480. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/module_win32.cpp +647 -0
  481. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/pluginterfacesupport.cpp +134 -0
  482. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/hosting/pluginterfacesupport.h +70 -0
  483. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/moduleinfo/json.h +3403 -0
  484. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/moduleinfo/jsoncxx.h +427 -0
  485. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/moduleinfo/moduleinfo.h +100 -0
  486. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/moduleinfo/moduleinfocreator.cpp +309 -0
  487. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/moduleinfo/moduleinfocreator.h +67 -0
  488. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/moduleinfo/moduleinfoparser.cpp +537 -0
  489. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/moduleinfo/moduleinfoparser.h +68 -0
  490. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/utility/optional.h +135 -0
  491. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/utility/stringconvert.cpp +148 -0
  492. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/utility/stringconvert.h +147 -0
  493. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/utility/uid.h +286 -0
  494. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstbus.cpp +99 -0
  495. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstbus.h +172 -0
  496. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponent.cpp +216 -0
  497. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponent.h +118 -0
  498. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponentbase.cpp +180 -0
  499. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstcomponentbase.h +110 -0
  500. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vsteditcontroller.cpp +701 -0
  501. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vsteditcontroller.h +374 -0
  502. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstinitiids.cpp +154 -0
  503. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstparameters.cpp +454 -0
  504. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstparameters.h +240 -0
  505. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstpresetfile.cpp +927 -0
  506. package/ios/juce_modules/juce_audio_processors/format_types/VST3_SDK/public.sdk/source/vst/vstpresetfile.h +306 -0
  507. package/ios/juce_modules/juce_audio_processors/format_types/juce_ARACommon.cpp +99 -0
  508. package/ios/juce_modules/juce_audio_processors/format_types/juce_ARACommon.h +98 -0
  509. package/ios/juce_modules/juce_audio_processors/format_types/juce_ARAHosting.cpp +490 -0
  510. package/ios/juce_modules/juce_audio_processors/format_types/juce_ARAHosting.h +786 -0
  511. package/ios/juce_modules/juce_audio_processors/format_types/juce_AU_Shared.h +588 -0
  512. package/ios/juce_modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h +79 -0
  513. package/ios/juce_modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm +2947 -0
  514. package/ios/juce_modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.cpp +728 -0
  515. package/ios/juce_modules/juce_audio_processors/format_types/juce_LADSPAPluginFormat.h +79 -0
  516. package/ios/juce_modules/juce_audio_processors/format_types/juce_LV2Common.h +676 -0
  517. package/ios/juce_modules/juce_audio_processors/format_types/juce_LV2PluginFormat.cpp +5654 -0
  518. package/ios/juce_modules/juce_audio_processors/format_types/juce_LV2PluginFormat.h +87 -0
  519. package/ios/juce_modules/juce_audio_processors/format_types/juce_LV2PluginFormat_test.cpp +281 -0
  520. package/ios/juce_modules/juce_audio_processors/format_types/juce_LV2Resources.h +10241 -0
  521. package/ios/juce_modules/juce_audio_processors/format_types/juce_LV2SupportLibs.cpp +117 -0
  522. package/ios/juce_modules/juce_audio_processors/format_types/juce_LegacyAudioParameter.cpp +225 -0
  523. package/ios/juce_modules/juce_audio_processors/format_types/juce_VST3Common.h +1851 -0
  524. package/ios/juce_modules/juce_audio_processors/format_types/juce_VST3Headers.h +280 -0
  525. package/ios/juce_modules/juce_audio_processors/format_types/juce_VST3PluginFormat.cpp +4086 -0
  526. package/ios/juce_modules/juce_audio_processors/format_types/juce_VST3PluginFormat.h +95 -0
  527. package/ios/juce_modules/juce_audio_processors/format_types/juce_VST3PluginFormat_test.cpp +740 -0
  528. package/ios/juce_modules/juce_audio_processors/format_types/juce_VSTCommon.h +315 -0
  529. package/ios/juce_modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h +229 -0
  530. package/ios/juce_modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp +3764 -0
  531. package/ios/juce_modules/juce_audio_processors/format_types/juce_VSTPluginFormat.h +141 -0
  532. package/ios/juce_modules/juce_audio_processors/format_types/pslextensions/ipslcontextinfo.h +190 -0
  533. package/ios/juce_modules/juce_audio_processors/format_types/pslextensions/ipsleditcontroller.h +108 -0
  534. package/ios/juce_modules/juce_audio_processors/format_types/pslextensions/ipslgainreduction.h +53 -0
  535. package/ios/juce_modules/juce_audio_processors/format_types/pslextensions/ipslhostcommands.h +121 -0
  536. package/ios/juce_modules/juce_audio_processors/format_types/pslextensions/ipslviewembedding.h +53 -0
  537. package/ios/juce_modules/juce_audio_processors/format_types/pslextensions/ipslviewscaling.h +67 -0
  538. package/ios/juce_modules/juce_audio_processors/format_types/pslextensions/pslauextensions.h +57 -0
  539. package/ios/juce_modules/juce_audio_processors/format_types/pslextensions/pslvst2extensions.h +111 -0
  540. package/ios/juce_modules/juce_audio_processors/juce_audio_processors.cpp +246 -0
  541. package/ios/juce_modules/juce_audio_processors/juce_audio_processors.h +195 -0
  542. package/ios/juce_modules/juce_audio_processors/juce_audio_processors.mm +35 -0
  543. package/ios/juce_modules/juce_audio_processors/juce_audio_processors_ara.cpp +51 -0
  544. package/ios/juce_modules/juce_audio_processors/juce_audio_processors_lv2_libs.cpp +44 -0
  545. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioPluginInstance.cpp +294 -0
  546. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioPluginInstance.h +191 -0
  547. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessor.cpp +1655 -0
  548. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessor.h +1587 -0
  549. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessorEditor.cpp +230 -0
  550. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessorEditor.h +272 -0
  551. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessorEditorHostContext.h +98 -0
  552. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessorGraph.cpp +2375 -0
  553. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessorGraph.h +453 -0
  554. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessorListener.h +198 -0
  555. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessorParameter.h +370 -0
  556. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessorParameterGroup.cpp +330 -0
  557. package/ios/juce_modules/juce_audio_processors/processors/juce_AudioProcessorParameterGroup.h +263 -0
  558. package/ios/juce_modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.cpp +633 -0
  559. package/ios/juce_modules/juce_audio_processors/processors/juce_GenericAudioProcessorEditor.h +74 -0
  560. package/ios/juce_modules/juce_audio_processors/processors/juce_HostedAudioProcessorParameter.h +61 -0
  561. package/ios/juce_modules/juce_audio_processors/processors/juce_PluginDescription.cpp +126 -0
  562. package/ios/juce_modules/juce_audio_processors/processors/juce_PluginDescription.h +189 -0
  563. package/ios/juce_modules/juce_audio_processors/scanning/juce_KnownPluginList.cpp +651 -0
  564. package/ios/juce_modules/juce_audio_processors/scanning/juce_KnownPluginList.h +249 -0
  565. package/ios/juce_modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.cpp +148 -0
  566. package/ios/juce_modules/juce_audio_processors/scanning/juce_PluginDirectoryScanner.h +147 -0
  567. package/ios/juce_modules/juce_audio_processors/scanning/juce_PluginListComponent.cpp +690 -0
  568. package/ios/juce_modules/juce_audio_processors/scanning/juce_PluginListComponent.h +156 -0
  569. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARADebug.h +76 -0
  570. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARADocumentController.cpp +985 -0
  571. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARADocumentController.h +538 -0
  572. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARADocumentControllerCommon.cpp +80 -0
  573. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARAModelObjects.cpp +302 -0
  574. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARAModelObjects.h +983 -0
  575. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.cpp +123 -0
  576. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARAPlugInInstanceRoles.h +263 -0
  577. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARA_utils.cpp +65 -0
  578. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_ARA_utils.h +95 -0
  579. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.cpp +163 -0
  580. package/ios/juce_modules/juce_audio_processors/utilities/ARA/juce_AudioProcessor_ARAExtensions.h +213 -0
  581. package/ios/juce_modules/juce_audio_processors/utilities/juce_AAXClientExtensions.cpp +308 -0
  582. package/ios/juce_modules/juce_audio_processors/utilities/juce_AAXClientExtensions.h +92 -0
  583. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioParameterBool.cpp +104 -0
  584. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioParameterBool.h +149 -0
  585. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioParameterChoice.cpp +145 -0
  586. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioParameterChoice.h +162 -0
  587. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioParameterFloat.cpp +113 -0
  588. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioParameterFloat.h +169 -0
  589. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioParameterInt.cpp +146 -0
  590. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioParameterInt.h +163 -0
  591. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.cpp +56 -0
  592. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioProcessorParameterWithID.h +200 -0
  593. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.cpp +997 -0
  594. package/ios/juce_modules/juce_audio_processors/utilities/juce_AudioProcessorValueTreeState.h +669 -0
  595. package/ios/juce_modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h +155 -0
  596. package/ios/juce_modules/juce_audio_processors/utilities/juce_FlagCache.h +191 -0
  597. package/ios/juce_modules/juce_audio_processors/utilities/juce_ParameterAttachments.cpp +442 -0
  598. package/ios/juce_modules/juce_audio_processors/utilities/juce_ParameterAttachments.h +400 -0
  599. package/ios/juce_modules/juce_audio_processors/utilities/juce_PluginHostType.cpp +328 -0
  600. package/ios/juce_modules/juce_audio_processors/utilities/juce_PluginHostType.h +265 -0
  601. package/ios/juce_modules/juce_audio_processors/utilities/juce_RangedAudioParameter.cpp +60 -0
  602. package/ios/juce_modules/juce_audio_processors/utilities/juce_RangedAudioParameter.h +129 -0
  603. package/ios/juce_modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.cpp +48 -0
  604. package/ios/juce_modules/juce_audio_processors/utilities/juce_VST2ClientExtensions.h +83 -0
  605. package/ios/juce_modules/juce_audio_processors/utilities/juce_VST3ClientExtensions.h +119 -0
  606. package/ios/juce_modules/juce_core/native/juce_BasicNativeHeaders.h +6 -1
  607. package/ios/juce_modules/juce_graphics/colour/juce_Colour.cpp +726 -0
  608. package/ios/juce_modules/juce_graphics/colour/juce_Colour.h +429 -0
  609. package/ios/juce_modules/juce_graphics/colour/juce_ColourGradient.cpp +294 -0
  610. package/ios/juce_modules/juce_graphics/colour/juce_ColourGradient.h +255 -0
  611. package/ios/juce_modules/juce_graphics/colour/juce_Colours.cpp +205 -0
  612. package/ios/juce_modules/juce_graphics/colour/juce_Colours.h +200 -0
  613. package/ios/juce_modules/juce_graphics/colour/juce_FillType.cpp +166 -0
  614. package/ios/juce_modules/juce_graphics/colour/juce_FillType.h +165 -0
  615. package/ios/juce_modules/juce_graphics/colour/juce_PixelFormats.h +749 -0
  616. package/ios/juce_modules/juce_graphics/contexts/juce_GraphicsContext.cpp +857 -0
  617. package/ios/juce_modules/juce_graphics/contexts/juce_GraphicsContext.h +758 -0
  618. package/ios/juce_modules/juce_graphics/contexts/juce_LowLevelGraphicsContext.h +186 -0
  619. package/ios/juce_modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.cpp +59 -0
  620. package/ios/juce_modules/juce_graphics/contexts/juce_LowLevelGraphicsSoftwareRenderer.h +66 -0
  621. package/ios/juce_modules/juce_graphics/detail/juce_Ranges.cpp +793 -0
  622. package/ios/juce_modules/juce_graphics/detail/juce_Ranges.h +1014 -0
  623. package/ios/juce_modules/juce_graphics/effects/juce_DropShadowEffect.cpp +152 -0
  624. package/ios/juce_modules/juce_graphics/effects/juce_DropShadowEffect.h +122 -0
  625. package/ios/juce_modules/juce_graphics/effects/juce_GlowEffect.cpp +59 -0
  626. package/ios/juce_modules/juce_graphics/effects/juce_GlowEffect.h +86 -0
  627. package/ios/juce_modules/juce_graphics/effects/juce_ImageEffectFilter.h +80 -0
  628. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Color/CBDT/CBDT.hh +1031 -0
  629. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Color/COLR/COLR.hh +2745 -0
  630. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Color/COLR/colrv1-closure.hh +137 -0
  631. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Color/CPAL/CPAL.hh +358 -0
  632. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Color/sbix/sbix.hh +448 -0
  633. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Color/svg/svg.hh +152 -0
  634. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/Common/Coverage.hh +352 -0
  635. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/Common/CoverageFormat1.hh +133 -0
  636. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/Common/CoverageFormat2.hh +239 -0
  637. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/Common/RangeRecord.hh +97 -0
  638. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GDEF/GDEF.hh +1044 -0
  639. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/Anchor.hh +84 -0
  640. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/AnchorFormat1.hh +46 -0
  641. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/AnchorFormat2.hh +58 -0
  642. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/AnchorFormat3.hh +120 -0
  643. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/AnchorMatrix.hh +87 -0
  644. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/ChainContextPos.hh +14 -0
  645. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/Common.hh +33 -0
  646. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/ContextPos.hh +14 -0
  647. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/CursivePos.hh +35 -0
  648. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/CursivePosFormat1.hh +311 -0
  649. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/ExtensionPos.hh +17 -0
  650. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/GPOS.hh +171 -0
  651. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/LigatureArray.hh +57 -0
  652. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/MarkArray.hh +128 -0
  653. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/MarkBasePos.hh +41 -0
  654. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/MarkBasePosFormat1.hh +243 -0
  655. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/MarkLigPos.hh +41 -0
  656. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/MarkLigPosFormat1.hh +224 -0
  657. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/MarkMarkPos.hh +42 -0
  658. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/MarkMarkPosFormat1.hh +231 -0
  659. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/MarkRecord.hh +51 -0
  660. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/PairPos.hh +46 -0
  661. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/PairPosFormat1.hh +233 -0
  662. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/PairPosFormat2.hh +365 -0
  663. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/PairSet.hh +210 -0
  664. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/PairValueRecord.hh +99 -0
  665. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/PosLookup.hh +79 -0
  666. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/PosLookupSubTable.hh +79 -0
  667. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/SinglePos.hh +98 -0
  668. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/SinglePosFormat1.hh +190 -0
  669. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/SinglePosFormat2.hh +213 -0
  670. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GPOS/ValueFormat.hh +441 -0
  671. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/AlternateSet.hh +126 -0
  672. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/AlternateSubst.hh +62 -0
  673. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/AlternateSubstFormat1.hh +128 -0
  674. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/ChainContextSubst.hh +18 -0
  675. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/Common.hh +19 -0
  676. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/ContextSubst.hh +18 -0
  677. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/ExtensionSubst.hh +22 -0
  678. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/GSUB.hh +61 -0
  679. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/Ligature.hh +203 -0
  680. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/LigatureSet.hh +188 -0
  681. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/LigatureSubst.hh +71 -0
  682. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/LigatureSubstFormat1.hh +166 -0
  683. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/MultipleSubst.hh +62 -0
  684. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/MultipleSubstFormat1.hh +130 -0
  685. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/ReverseChainSingleSubst.hh +36 -0
  686. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/ReverseChainSingleSubstFormat1.hh +245 -0
  687. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/Sequence.hh +165 -0
  688. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/SingleSubst.hh +103 -0
  689. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/SingleSubstFormat1.hh +204 -0
  690. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/SingleSubstFormat2.hh +176 -0
  691. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/SubstLookup.hh +220 -0
  692. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/GSUB/SubstLookupSubTable.hh +77 -0
  693. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Layout/types.hh +66 -0
  694. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Var/VARC/VARC.cc +346 -0
  695. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Var/VARC/VARC.hh +193 -0
  696. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/Var/VARC/coord-setter.hh +37 -0
  697. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/CompositeGlyph.hh +435 -0
  698. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/Glyph.hh +556 -0
  699. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/GlyphHeader.hh +52 -0
  700. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/SimpleGlyph.hh +348 -0
  701. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/SubsetGlyph.hh +141 -0
  702. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/composite-iter.hh +68 -0
  703. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/glyf-helpers.hh +127 -0
  704. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/glyf.hh +513 -0
  705. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/loca.hh +43 -0
  706. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/glyf/path-builder.hh +190 -0
  707. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/OT/name/name.hh +589 -0
  708. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/failing-alloc.c +65 -0
  709. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/harfbuzz-subset.cc +64 -0
  710. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/harfbuzz.cc +63 -0
  711. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout-ankr-table.hh +99 -0
  712. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout-bsln-table.hh +159 -0
  713. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout-common.hh +1076 -0
  714. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout-feat-table.hh +224 -0
  715. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout-just-table.hh +420 -0
  716. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout-kerx-table.hh +1191 -0
  717. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout-morx-table.hh +1443 -0
  718. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout-opbd-table.hh +174 -0
  719. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout-trak-table.hh +232 -0
  720. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout.cc +449 -0
  721. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout.h +795 -0
  722. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-layout.hh +77 -0
  723. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-ltag-table.hh +95 -0
  724. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-map.cc +172 -0
  725. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat-map.hh +123 -0
  726. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-aat.h +38 -0
  727. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-algs.hh +1558 -0
  728. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-array.hh +504 -0
  729. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-atomic.hh +228 -0
  730. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-bimap.hh +205 -0
  731. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-bit-page.hh +352 -0
  732. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-bit-set-invertible.hh +379 -0
  733. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-bit-set.hh +982 -0
  734. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-blob.cc +794 -0
  735. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-blob.h +160 -0
  736. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-blob.hh +98 -0
  737. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-buffer-deserialize-json.hh +795 -0
  738. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-buffer-deserialize-text-glyphs.hh +692 -0
  739. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-buffer-deserialize-text-unicode.hh +332 -0
  740. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-buffer-serialize.cc +872 -0
  741. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-buffer-verify.cc +423 -0
  742. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-buffer.cc +2266 -0
  743. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-buffer.h +805 -0
  744. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-buffer.hh +682 -0
  745. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-cache.hh +99 -0
  746. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-cff-interp-common.hh +642 -0
  747. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-cff-interp-cs-common.hh +905 -0
  748. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-cff-interp-dict-common.hh +201 -0
  749. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-cff1-interp-cs.hh +160 -0
  750. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-cff2-interp-cs.hh +278 -0
  751. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-common.cc +1220 -0
  752. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-common.h +935 -0
  753. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-config.hh +212 -0
  754. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-coretext.cc +1197 -0
  755. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-coretext.h +96 -0
  756. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-cplusplus.hh +220 -0
  757. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-debug.hh +491 -0
  758. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-deprecated.h +318 -0
  759. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-directwrite.cc +884 -0
  760. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-directwrite.h +40 -0
  761. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-dispatch.hh +60 -0
  762. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-draw.cc +458 -0
  763. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-draw.h +340 -0
  764. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-draw.hh +243 -0
  765. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-face-builder.cc +246 -0
  766. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-face.cc +664 -0
  767. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-face.h +187 -0
  768. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-face.hh +111 -0
  769. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-fallback-shape.cc +115 -0
  770. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-font.cc +3069 -0
  771. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-font.h +1153 -0
  772. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-font.hh +720 -0
  773. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ft-colr.hh +601 -0
  774. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ft.cc +1500 -0
  775. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ft.h +145 -0
  776. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-gdi.cc +85 -0
  777. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-gdi.h +39 -0
  778. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-geometry.hh +284 -0
  779. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-glib.cc +232 -0
  780. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-glib.h +56 -0
  781. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-gobject-structs.cc +116 -0
  782. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-gobject-structs.h +136 -0
  783. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-gobject.h +40 -0
  784. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-graphite2.cc +455 -0
  785. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-graphite2.h +61 -0
  786. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-icu.cc +291 -0
  787. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-icu.h +52 -0
  788. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-iter.hh +1037 -0
  789. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-kern.hh +145 -0
  790. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-limits.hh +112 -0
  791. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-machinery.hh +332 -0
  792. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-map.cc +419 -0
  793. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-map.h +143 -0
  794. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-map.hh +568 -0
  795. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-meta.hh +238 -0
  796. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ms-feature-ranges.hh +232 -0
  797. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-multimap.hh +96 -0
  798. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-mutex.hh +122 -0
  799. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-null.hh +226 -0
  800. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-number-parser.hh +237 -0
  801. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-number.cc +79 -0
  802. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-number.hh +41 -0
  803. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-object.hh +357 -0
  804. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-open-file.hh +543 -0
  805. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-open-type.hh +1886 -0
  806. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-cff-common.hh +374 -0
  807. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-cff1-std-str.hh +425 -0
  808. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-cff1-table.cc +620 -0
  809. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-cff1-table.hh +1539 -0
  810. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-cff2-table.cc +227 -0
  811. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-cff2-table.hh +564 -0
  812. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-cmap-table.hh +2154 -0
  813. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-color.cc +363 -0
  814. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-color.h +155 -0
  815. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-deprecated.h +147 -0
  816. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-face-table-list.hh +155 -0
  817. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-face.cc +60 -0
  818. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-face.hh +77 -0
  819. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-font.cc +662 -0
  820. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-font.h +45 -0
  821. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-gasp-table.hh +84 -0
  822. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-glyf-table.hh +35 -0
  823. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-hdmx-table.hh +177 -0
  824. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-head-table.hh +204 -0
  825. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-hhea-table.hh +106 -0
  826. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-hmtx-table.hh +502 -0
  827. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-kern-table.hh +425 -0
  828. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout-base-table.hh +849 -0
  829. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout-common.hh +4953 -0
  830. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout-gdef-table.hh +34 -0
  831. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout-gpos-table.hh +81 -0
  832. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout-gsub-table.hh +94 -0
  833. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout-gsubgpos.hh +4887 -0
  834. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout-jstf-table.hh +236 -0
  835. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout.cc +2705 -0
  836. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout.h +549 -0
  837. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-layout.hh +611 -0
  838. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-map.cc +394 -0
  839. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-map.hh +298 -0
  840. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-math-table.hh +1132 -0
  841. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-math.cc +338 -0
  842. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-math.h +333 -0
  843. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-maxp-table.hh +156 -0
  844. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-meta-table.hh +131 -0
  845. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-meta.cc +79 -0
  846. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-meta.h +72 -0
  847. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-metrics.cc +436 -0
  848. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-metrics.h +129 -0
  849. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-metrics.hh +35 -0
  850. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-name-language-static.hh +456 -0
  851. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-name-language.hh +40 -0
  852. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-name-table.hh +32 -0
  853. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-name.cc +184 -0
  854. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-name.h +164 -0
  855. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-os2-table.hh +405 -0
  856. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-os2-unicode-ranges.hh +231 -0
  857. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-post-macroman.hh +294 -0
  858. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-post-table-v2subset.hh +142 -0
  859. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-post-table.hh +352 -0
  860. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shape-fallback.cc +615 -0
  861. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shape-fallback.hh +54 -0
  862. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shape-normalize.cc +470 -0
  863. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shape-normalize.hh +104 -0
  864. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shape.cc +1319 -0
  865. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shape.h +53 -0
  866. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shape.hh +171 -0
  867. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-arabic-fallback.hh +383 -0
  868. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-arabic-joining-list.hh +47 -0
  869. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-arabic-pua.hh +118 -0
  870. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-arabic-table.hh +556 -0
  871. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-arabic-win1256.hh +349 -0
  872. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-arabic.cc +774 -0
  873. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-arabic.hh +50 -0
  874. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-default.cc +75 -0
  875. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-hangul.cc +436 -0
  876. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-hebrew.cc +211 -0
  877. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-indic-machine.hh +627 -0
  878. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-indic-table.cc +561 -0
  879. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-indic.cc +1578 -0
  880. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-indic.hh +66 -0
  881. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-khmer-machine.hh +428 -0
  882. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-khmer.cc +387 -0
  883. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-myanmar-machine.hh +553 -0
  884. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-myanmar.cc +390 -0
  885. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-syllabic.cc +112 -0
  886. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-syllabic.hh +47 -0
  887. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-thai.cc +393 -0
  888. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-use-machine.hh +1079 -0
  889. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-use-table.hh +690 -0
  890. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-use.cc +514 -0
  891. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-vowel-constraints.cc +477 -0
  892. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper-vowel-constraints.hh +39 -0
  893. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-shaper.hh +404 -0
  894. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-stat-table.hh +619 -0
  895. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-tag-table.hh +3009 -0
  896. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-tag.cc +658 -0
  897. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var-avar-table.hh +411 -0
  898. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var-common.hh +1985 -0
  899. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var-cvar-table.hh +220 -0
  900. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var-fvar-table.hh +505 -0
  901. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var-gvar-table.hh +890 -0
  902. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var-hvar-table.hh +478 -0
  903. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var-mvar-table.hh +184 -0
  904. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var-varc-table.hh +32 -0
  905. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var.cc +328 -0
  906. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-var.h +191 -0
  907. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot-vorg-table.hh +137 -0
  908. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ot.h +49 -0
  909. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-outline.cc +321 -0
  910. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-outline.hh +83 -0
  911. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-paint-extents.cc +330 -0
  912. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-paint-extents.hh +132 -0
  913. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-paint.cc +728 -0
  914. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-paint.h +1029 -0
  915. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-paint.hh +236 -0
  916. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-pool.hh +107 -0
  917. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-priority-queue.hh +174 -0
  918. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-repacker.hh +476 -0
  919. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-sanitize.hh +530 -0
  920. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-serialize.hh +832 -0
  921. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-set-digest.hh +227 -0
  922. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-set.cc +673 -0
  923. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-set.h +203 -0
  924. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-set.hh +186 -0
  925. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-shape-plan.cc +581 -0
  926. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-shape-plan.h +122 -0
  927. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-shape-plan.hh +77 -0
  928. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-shape.cc +445 -0
  929. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-shape.h +74 -0
  930. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-shaper-impl.hh +38 -0
  931. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-shaper-list.hh +65 -0
  932. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-shaper.cc +102 -0
  933. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-shaper.hh +134 -0
  934. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-static.cc +138 -0
  935. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-string-array.hh +85 -0
  936. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-style.cc +134 -0
  937. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-style.h +81 -0
  938. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-accelerator.hh +141 -0
  939. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-cff-common.cc +231 -0
  940. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-cff-common.hh +1228 -0
  941. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-cff1.cc +1001 -0
  942. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-cff2.cc +679 -0
  943. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-input.cc +748 -0
  944. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-input.hh +155 -0
  945. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-instancer-iup.cc +532 -0
  946. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-instancer-iup.hh +37 -0
  947. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-instancer-solver.cc +434 -0
  948. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-instancer-solver.hh +114 -0
  949. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-plan-member-list.hh +164 -0
  950. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-plan.cc +1570 -0
  951. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-plan.hh +302 -0
  952. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-repacker.cc +58 -0
  953. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset-repacker.h +81 -0
  954. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset.cc +704 -0
  955. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset.h +260 -0
  956. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-subset.hh +74 -0
  957. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ucd-table.hh +5637 -0
  958. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-ucd.cc +258 -0
  959. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-unicode-emoji-table.hh +79 -0
  960. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-unicode.cc +625 -0
  961. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-unicode.h +643 -0
  962. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-unicode.hh +403 -0
  963. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-uniscribe.cc +889 -0
  964. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-uniscribe.h +46 -0
  965. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-utf.hh +481 -0
  966. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-vector.hh +539 -0
  967. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-version.h +95 -0
  968. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api-blob.hh +50 -0
  969. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api-buffer.hh +217 -0
  970. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api-common.hh +44 -0
  971. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api-face.hh +109 -0
  972. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api-font.hh +263 -0
  973. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api-list.hh +109 -0
  974. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api-shape.hh +70 -0
  975. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api.cc +46 -0
  976. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api.h +322 -0
  977. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-api.hh +117 -0
  978. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb-wasm-shape.cc +470 -0
  979. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb.h +51 -0
  980. package/ios/juce_modules/juce_graphics/fonts/harfbuzz/hb.hh +555 -0
  981. package/ios/juce_modules/juce_graphics/fonts/juce_AttributedString.cpp +288 -0
  982. package/ios/juce_modules/juce_graphics/fonts/juce_AttributedString.h +219 -0
  983. package/ios/juce_modules/juce_graphics/fonts/juce_Font.cpp +1036 -0
  984. package/ios/juce_modules/juce_graphics/fonts/juce_Font.h +571 -0
  985. package/ios/juce_modules/juce_graphics/fonts/juce_FontOptions.cpp +111 -0
  986. package/ios/juce_modules/juce_graphics/fonts/juce_FontOptions.h +218 -0
  987. package/ios/juce_modules/juce_graphics/fonts/juce_FunctionPointerDestructor.h +53 -0
  988. package/ios/juce_modules/juce_graphics/fonts/juce_GlyphArrangement.cpp +657 -0
  989. package/ios/juce_modules/juce_graphics/fonts/juce_GlyphArrangement.h +324 -0
  990. package/ios/juce_modules/juce_graphics/fonts/juce_JustifiedText.cpp +580 -0
  991. package/ios/juce_modules/juce_graphics/fonts/juce_LruCache.h +88 -0
  992. package/ios/juce_modules/juce_graphics/fonts/juce_ShapedText.cpp +210 -0
  993. package/ios/juce_modules/juce_graphics/fonts/juce_SimpleShapedText.cpp +1279 -0
  994. package/ios/juce_modules/juce_graphics/fonts/juce_TextLayout.cpp +512 -0
  995. package/ios/juce_modules/juce_graphics/fonts/juce_TextLayout.h +278 -0
  996. package/ios/juce_modules/juce_graphics/fonts/juce_Typeface.cpp +983 -0
  997. package/ios/juce_modules/juce_graphics/fonts/juce_Typeface.h +396 -0
  998. package/ios/juce_modules/juce_graphics/fonts/juce_TypefaceFileCache.h +74 -0
  999. package/ios/juce_modules/juce_graphics/fonts/juce_TypefaceTestData.cpp +6051 -0
  1000. package/ios/juce_modules/juce_graphics/geometry/juce_AffineTransform.cpp +307 -0
  1001. package/ios/juce_modules/juce_graphics/geometry/juce_AffineTransform.h +314 -0
  1002. package/ios/juce_modules/juce_graphics/geometry/juce_BorderSize.h +176 -0
  1003. package/ios/juce_modules/juce_graphics/geometry/juce_EdgeTable.cpp +848 -0
  1004. package/ios/juce_modules/juce_graphics/geometry/juce_EdgeTable.h +225 -0
  1005. package/ios/juce_modules/juce_graphics/geometry/juce_Line.h +454 -0
  1006. package/ios/juce_modules/juce_graphics/geometry/juce_Parallelogram.h +194 -0
  1007. package/ios/juce_modules/juce_graphics/geometry/juce_Parallelogram_test.cpp +75 -0
  1008. package/ios/juce_modules/juce_graphics/geometry/juce_Path.cpp +1531 -0
  1009. package/ios/juce_modules/juce_graphics/geometry/juce_Path.h +846 -0
  1010. package/ios/juce_modules/juce_graphics/geometry/juce_PathIterator.cpp +304 -0
  1011. package/ios/juce_modules/juce_graphics/geometry/juce_PathIterator.h +120 -0
  1012. package/ios/juce_modules/juce_graphics/geometry/juce_PathStrokeType.cpp +756 -0
  1013. package/ios/juce_modules/juce_graphics/geometry/juce_PathStrokeType.h +215 -0
  1014. package/ios/juce_modules/juce_graphics/geometry/juce_Point.h +269 -0
  1015. package/ios/juce_modules/juce_graphics/geometry/juce_Rectangle.h +1032 -0
  1016. package/ios/juce_modules/juce_graphics/geometry/juce_RectangleList.h +694 -0
  1017. package/ios/juce_modules/juce_graphics/geometry/juce_Rectangle_test.cpp +60 -0
  1018. package/ios/juce_modules/juce_graphics/image_formats/jpglib/README +385 -0
  1019. package/ios/juce_modules/juce_graphics/image_formats/jpglib/cderror.h +132 -0
  1020. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcapimin.c +280 -0
  1021. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcapistd.c +161 -0
  1022. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jccoefct.c +449 -0
  1023. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jccolor.c +459 -0
  1024. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcdctmgr.c +387 -0
  1025. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jchuff.c +909 -0
  1026. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jchuff.h +52 -0
  1027. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcinit.c +72 -0
  1028. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcmainct.c +293 -0
  1029. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcmarker.c +597 -0
  1030. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcmaster.c +590 -0
  1031. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcomapi.c +106 -0
  1032. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jconfig.h +59 -0
  1033. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcparam.c +610 -0
  1034. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcphuff.c +833 -0
  1035. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcprepct.c +354 -0
  1036. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jcsample.c +519 -0
  1037. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jctrans.c +388 -0
  1038. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdapimin.c +395 -0
  1039. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdapistd.c +275 -0
  1040. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdatasrc.c +212 -0
  1041. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdcoefct.c +736 -0
  1042. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdcolor.c +396 -0
  1043. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdct.h +182 -0
  1044. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jddctmgr.c +269 -0
  1045. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdhuff.c +625 -0
  1046. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdhuff.h +206 -0
  1047. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdinput.c +381 -0
  1048. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdmainct.c +512 -0
  1049. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdmarker.c +1292 -0
  1050. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdmaster.c +557 -0
  1051. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdmerge.c +400 -0
  1052. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdphuff.c +642 -0
  1053. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdpostct.c +290 -0
  1054. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdsample.c +478 -0
  1055. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jdtrans.c +143 -0
  1056. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jerror.c +252 -0
  1057. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jerror.h +291 -0
  1058. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jfdctflt.c +168 -0
  1059. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jfdctfst.c +224 -0
  1060. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jfdctint.c +283 -0
  1061. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jidctflt.c +242 -0
  1062. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jidctfst.c +368 -0
  1063. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jidctint.c +389 -0
  1064. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jidctred.c +398 -0
  1065. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jinclude.h +197 -0
  1066. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jmemmgr.c +1118 -0
  1067. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jmemnobs.c +109 -0
  1068. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jmemsys.h +203 -0
  1069. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jmorecfg.h +363 -0
  1070. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jpegint.h +392 -0
  1071. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jpeglib.h +1096 -0
  1072. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jquant1.c +856 -0
  1073. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jquant2.c +1310 -0
  1074. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jutils.c +179 -0
  1075. package/ios/juce_modules/juce_graphics/image_formats/jpglib/jversion.h +14 -0
  1076. package/ios/juce_modules/juce_graphics/image_formats/jpglib/transupp.c +928 -0
  1077. package/ios/juce_modules/juce_graphics/image_formats/jpglib/transupp.h +135 -0
  1078. package/ios/juce_modules/juce_graphics/image_formats/juce_GIFLoader.cpp +464 -0
  1079. package/ios/juce_modules/juce_graphics/image_formats/juce_JPEGLoader.cpp +456 -0
  1080. package/ios/juce_modules/juce_graphics/image_formats/juce_PNGLoader.cpp +635 -0
  1081. package/ios/juce_modules/juce_graphics/image_formats/pnglib/png.c +4607 -0
  1082. package/ios/juce_modules/juce_graphics/image_formats/pnglib/png.h +3251 -0
  1083. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngconf.h +623 -0
  1084. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngdebug.h +153 -0
  1085. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngerror.c +963 -0
  1086. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngget.c +1249 -0
  1087. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pnginfo.h +267 -0
  1088. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngmem.c +284 -0
  1089. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngpread.c +1096 -0
  1090. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngpriv.h +2156 -0
  1091. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngread.c +4225 -0
  1092. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngrio.c +120 -0
  1093. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngrtran.c +5102 -0
  1094. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngrutil.c +4681 -0
  1095. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngset.c +1802 -0
  1096. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngstruct.h +491 -0
  1097. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngtrans.c +864 -0
  1098. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngwio.c +168 -0
  1099. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngwrite.c +2395 -0
  1100. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngwtran.c +587 -0
  1101. package/ios/juce_modules/juce_graphics/image_formats/pnglib/pngwutil.c +2781 -0
  1102. package/ios/juce_modules/juce_graphics/images/juce_Image.cpp +851 -0
  1103. package/ios/juce_modules/juce_graphics/images/juce_Image.h +630 -0
  1104. package/ios/juce_modules/juce_graphics/images/juce_ImageCache.cpp +183 -0
  1105. package/ios/juce_modules/juce_graphics/images/juce_ImageCache.h +136 -0
  1106. package/ios/juce_modules/juce_graphics/images/juce_ImageConvolutionKernel.cpp +209 -0
  1107. package/ios/juce_modules/juce_graphics/images/juce_ImageConvolutionKernel.h +121 -0
  1108. package/ios/juce_modules/juce_graphics/images/juce_ImageFileFormat.cpp +120 -0
  1109. package/ios/juce_modules/juce_graphics/images/juce_ImageFileFormat.h +232 -0
  1110. package/ios/juce_modules/juce_graphics/images/juce_ScaledImage.h +93 -0
  1111. package/ios/juce_modules/juce_graphics/juce_graphics.cpp +230 -0
  1112. package/ios/juce_modules/juce_graphics/juce_graphics.h +162 -0
  1113. package/ios/juce_modules/juce_graphics/juce_graphics.mm +35 -0
  1114. package/ios/juce_modules/juce_graphics/juce_graphics_Harfbuzz.cpp +100 -0
  1115. package/ios/juce_modules/juce_graphics/native/juce_CoreGraphicsContext_mac.h +153 -0
  1116. package/ios/juce_modules/juce_graphics/native/juce_CoreGraphicsContext_mac.mm +969 -0
  1117. package/ios/juce_modules/juce_graphics/native/juce_CoreGraphicsHelpers_mac.h +117 -0
  1118. package/ios/juce_modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.cpp +1807 -0
  1119. package/ios/juce_modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.h +174 -0
  1120. package/ios/juce_modules/juce_graphics/native/juce_Direct2DHelpers_windows.cpp +456 -0
  1121. package/ios/juce_modules/juce_graphics/native/juce_Direct2DHwndContext_windows.cpp +784 -0
  1122. package/ios/juce_modules/juce_graphics/native/juce_Direct2DHwndContext_windows.h +73 -0
  1123. package/ios/juce_modules/juce_graphics/native/juce_Direct2DImageContext_windows.cpp +124 -0
  1124. package/ios/juce_modules/juce_graphics/native/juce_Direct2DImageContext_windows.h +55 -0
  1125. package/ios/juce_modules/juce_graphics/native/juce_Direct2DImage_windows.cpp +732 -0
  1126. package/ios/juce_modules/juce_graphics/native/juce_Direct2DImage_windows.h +94 -0
  1127. package/ios/juce_modules/juce_graphics/native/juce_Direct2DMetrics_windows.cpp +132 -0
  1128. package/ios/juce_modules/juce_graphics/native/juce_Direct2DMetrics_windows.h +320 -0
  1129. package/ios/juce_modules/juce_graphics/native/juce_Direct2DResources_windows.cpp +661 -0
  1130. package/ios/juce_modules/juce_graphics/native/juce_DirectWriteTypeface_windows.cpp +920 -0
  1131. package/ios/juce_modules/juce_graphics/native/juce_DirectX_windows.h +330 -0
  1132. package/ios/juce_modules/juce_graphics/native/juce_EventTracing.h +310 -0
  1133. package/ios/juce_modules/juce_graphics/native/juce_Fonts_android.cpp +636 -0
  1134. package/ios/juce_modules/juce_graphics/native/juce_Fonts_freetype.cpp +589 -0
  1135. package/ios/juce_modules/juce_graphics/native/juce_Fonts_linux.cpp +208 -0
  1136. package/ios/juce_modules/juce_graphics/native/juce_Fonts_mac.mm +416 -0
  1137. package/ios/juce_modules/juce_graphics/native/juce_GraphicsContext_android.cpp +43 -0
  1138. package/ios/juce_modules/juce_graphics/native/juce_IconHelpers_android.cpp +39 -0
  1139. package/ios/juce_modules/juce_graphics/native/juce_IconHelpers_linux.cpp +39 -0
  1140. package/ios/juce_modules/juce_graphics/native/juce_IconHelpers_mac.cpp +150 -0
  1141. package/ios/juce_modules/juce_graphics/native/juce_IconHelpers_windows.cpp +39 -0
  1142. package/ios/juce_modules/juce_graphics/native/juce_RenderingHelpers.h +2696 -0
  1143. package/ios/juce_modules/juce_graphics/placement/juce_Justification.h +196 -0
  1144. package/ios/juce_modules/juce_graphics/placement/juce_RectanglePlacement.cpp +131 -0
  1145. package/ios/juce_modules/juce_graphics/placement/juce_RectanglePlacement.h +183 -0
  1146. package/ios/juce_modules/juce_graphics/unicode/juce_Unicode.cpp +331 -0
  1147. package/ios/juce_modules/juce_graphics/unicode/juce_UnicodeBidi.cpp +1139 -0
  1148. package/ios/juce_modules/juce_graphics/unicode/juce_UnicodeBrackets.cpp +142 -0
  1149. package/ios/juce_modules/juce_graphics/unicode/juce_UnicodeGenerated.cpp +1380 -0
  1150. package/ios/juce_modules/juce_graphics/unicode/juce_UnicodeLine.cpp +273 -0
  1151. package/ios/juce_modules/juce_graphics/unicode/juce_UnicodeScript.cpp +235 -0
  1152. package/ios/juce_modules/juce_graphics/unicode/juce_UnicodeUtils.cpp +104 -0
  1153. package/ios/juce_modules/juce_gui_basics/accessibility/enums/juce_AccessibilityActions.h +128 -0
  1154. package/ios/juce_modules/juce_gui_basics/accessibility/enums/juce_AccessibilityEvent.h +90 -0
  1155. package/ios/juce_modules/juce_gui_basics/accessibility/enums/juce_AccessibilityRole.h +80 -0
  1156. package/ios/juce_modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityCellInterface.h +61 -0
  1157. package/ios/juce_modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityTableInterface.h +106 -0
  1158. package/ios/juce_modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityTextInterface.h +93 -0
  1159. package/ios/juce_modules/juce_gui_basics/accessibility/interfaces/juce_AccessibilityValueInterface.h +231 -0
  1160. package/ios/juce_modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.cpp +412 -0
  1161. package/ios/juce_modules/juce_gui_basics/accessibility/juce_AccessibilityHandler.h +354 -0
  1162. package/ios/juce_modules/juce_gui_basics/accessibility/juce_AccessibilityState.h +236 -0
  1163. package/ios/juce_modules/juce_gui_basics/application/juce_Application.cpp +109 -0
  1164. package/ios/juce_modules/juce_gui_basics/application/juce_Application.h +202 -0
  1165. package/ios/juce_modules/juce_gui_basics/buttons/juce_ArrowButton.cpp +60 -0
  1166. package/ios/juce_modules/juce_gui_basics/buttons/juce_ArrowButton.h +74 -0
  1167. package/ios/juce_modules/juce_gui_basics/buttons/juce_Button.cpp +730 -0
  1168. package/ios/juce_modules/juce_gui_basics/buttons/juce_Button.h +559 -0
  1169. package/ios/juce_modules/juce_gui_basics/buttons/juce_DrawableButton.cpp +250 -0
  1170. package/ios/juce_modules/juce_gui_basics/buttons/juce_DrawableButton.h +206 -0
  1171. package/ios/juce_modules/juce_gui_basics/buttons/juce_HyperlinkButton.cpp +138 -0
  1172. package/ios/juce_modules/juce_gui_basics/buttons/juce_HyperlinkButton.h +139 -0
  1173. package/ios/juce_modules/juce_gui_basics/buttons/juce_ImageButton.cpp +207 -0
  1174. package/ios/juce_modules/juce_gui_basics/buttons/juce_ImageButton.h +170 -0
  1175. package/ios/juce_modules/juce_gui_basics/buttons/juce_ShapeButton.cpp +146 -0
  1176. package/ios/juce_modules/juce_gui_basics/buttons/juce_ShapeButton.h +135 -0
  1177. package/ios/juce_modules/juce_gui_basics/buttons/juce_TextButton.cpp +86 -0
  1178. package/ios/juce_modules/juce_gui_basics/buttons/juce_TextButton.h +118 -0
  1179. package/ios/juce_modules/juce_gui_basics/buttons/juce_ToggleButton.cpp +74 -0
  1180. package/ios/juce_modules/juce_gui_basics/buttons/juce_ToggleButton.h +102 -0
  1181. package/ios/juce_modules/juce_gui_basics/buttons/juce_ToolbarButton.cpp +122 -0
  1182. package/ios/juce_modules/juce_gui_basics/buttons/juce_ToolbarButton.h +107 -0
  1183. package/ios/juce_modules/juce_gui_basics/commands/juce_ApplicationCommandID.h +99 -0
  1184. package/ios/juce_modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp +75 -0
  1185. package/ios/juce_modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.h +199 -0
  1186. package/ios/juce_modules/juce_gui_basics/commands/juce_ApplicationCommandManager.cpp +331 -0
  1187. package/ios/juce_modules/juce_gui_basics/commands/juce_ApplicationCommandManager.h +358 -0
  1188. package/ios/juce_modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.cpp +195 -0
  1189. package/ios/juce_modules/juce_gui_basics/commands/juce_ApplicationCommandTarget.h +253 -0
  1190. package/ios/juce_modules/juce_gui_basics/commands/juce_KeyPressMappingSet.cpp +427 -0
  1191. package/ios/juce_modules/juce_gui_basics/commands/juce_KeyPressMappingSet.h +253 -0
  1192. package/ios/juce_modules/juce_gui_basics/components/juce_CachedComponentImage.h +81 -0
  1193. package/ios/juce_modules/juce_gui_basics/components/juce_Component.cpp +3013 -0
  1194. package/ios/juce_modules/juce_gui_basics/components/juce_Component.h +2716 -0
  1195. package/ios/juce_modules/juce_gui_basics/components/juce_ComponentListener.cpp +47 -0
  1196. package/ios/juce_modules/juce_gui_basics/components/juce_ComponentListener.h +131 -0
  1197. package/ios/juce_modules/juce_gui_basics/components/juce_ComponentTraverser.h +81 -0
  1198. package/ios/juce_modules/juce_gui_basics/components/juce_FocusTraverser.cpp +283 -0
  1199. package/ios/juce_modules/juce_gui_basics/components/juce_FocusTraverser.h +102 -0
  1200. package/ios/juce_modules/juce_gui_basics/components/juce_ModalComponentManager.cpp +295 -0
  1201. package/ios/juce_modules/juce_gui_basics/components/juce_ModalComponentManager.h +340 -0
  1202. package/ios/juce_modules/juce_gui_basics/desktop/juce_Desktop.cpp +386 -0
  1203. package/ios/juce_modules/juce_gui_basics/desktop/juce_Desktop.h +502 -0
  1204. package/ios/juce_modules/juce_gui_basics/desktop/juce_Displays.cpp +447 -0
  1205. package/ios/juce_modules/juce_gui_basics/desktop/juce_Displays.h +218 -0
  1206. package/ios/juce_modules/juce_gui_basics/detail/juce_AccessibilityHelpers.cpp +42 -0
  1207. package/ios/juce_modules/juce_gui_basics/detail/juce_AccessibilityHelpers.h +79 -0
  1208. package/ios/juce_modules/juce_gui_basics/detail/juce_AlertWindowHelpers.h +124 -0
  1209. package/ios/juce_modules/juce_gui_basics/detail/juce_ButtonAccessibilityHandler.h +134 -0
  1210. package/ios/juce_modules/juce_gui_basics/detail/juce_ComponentHelpers.h +291 -0
  1211. package/ios/juce_modules/juce_gui_basics/detail/juce_CustomMouseCursorInfo.h +44 -0
  1212. package/ios/juce_modules/juce_gui_basics/detail/juce_FocusHelpers.h +126 -0
  1213. package/ios/juce_modules/juce_gui_basics/detail/juce_FocusRestorer.h +55 -0
  1214. package/ios/juce_modules/juce_gui_basics/detail/juce_LookAndFeelHelpers.h +71 -0
  1215. package/ios/juce_modules/juce_gui_basics/detail/juce_MouseInputSourceImpl.h +597 -0
  1216. package/ios/juce_modules/juce_gui_basics/detail/juce_MouseInputSourceList.h +163 -0
  1217. package/ios/juce_modules/juce_gui_basics/detail/juce_PointerState.h +113 -0
  1218. package/ios/juce_modules/juce_gui_basics/detail/juce_ScalingHelpers.h +132 -0
  1219. package/ios/juce_modules/juce_gui_basics/detail/juce_ScopedContentSharerImpl.h +107 -0
  1220. package/ios/juce_modules/juce_gui_basics/detail/juce_ScopedContentSharerInterface.h +224 -0
  1221. package/ios/juce_modules/juce_gui_basics/detail/juce_ScopedMessageBoxImpl.h +141 -0
  1222. package/ios/juce_modules/juce_gui_basics/detail/juce_ScopedMessageBoxInterface.h +69 -0
  1223. package/ios/juce_modules/juce_gui_basics/detail/juce_StandardCachedComponentImage.h +102 -0
  1224. package/ios/juce_modules/juce_gui_basics/detail/juce_ToolbarItemDragAndDropOverlayComponent.h +127 -0
  1225. package/ios/juce_modules/juce_gui_basics/detail/juce_TopLevelWindowManager.h +145 -0
  1226. package/ios/juce_modules/juce_gui_basics/detail/juce_ViewportHelpers.h +58 -0
  1227. package/ios/juce_modules/juce_gui_basics/detail/juce_WindowingHelpers.h +70 -0
  1228. package/ios/juce_modules/juce_gui_basics/drawables/juce_Drawable.cpp +228 -0
  1229. package/ios/juce_modules/juce_gui_basics/drawables/juce_Drawable.h +271 -0
  1230. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableComposite.cpp +173 -0
  1231. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableComposite.h +126 -0
  1232. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableImage.cpp +165 -0
  1233. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableImage.h +126 -0
  1234. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawablePath.cpp +66 -0
  1235. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawablePath.h +86 -0
  1236. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableRectangle.cpp +96 -0
  1237. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableRectangle.h +85 -0
  1238. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableShape.cpp +190 -0
  1239. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableShape.h +135 -0
  1240. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableText.cpp +241 -0
  1241. package/ios/juce_modules/juce_gui_basics/drawables/juce_DrawableText.h +130 -0
  1242. package/ios/juce_modules/juce_gui_basics/drawables/juce_SVGParser.cpp +1903 -0
  1243. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_ContentSharer.cpp +83 -0
  1244. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_ContentSharer.h +154 -0
  1245. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.cpp +79 -0
  1246. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_DirectoryContentsDisplayComponent.h +125 -0
  1247. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.cpp +279 -0
  1248. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_DirectoryContentsList.h +235 -0
  1249. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp +633 -0
  1250. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.h +306 -0
  1251. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileBrowserListener.h +67 -0
  1252. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp +292 -0
  1253. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileChooser.h +358 -0
  1254. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.cpp +272 -0
  1255. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileChooserDialogBox.h +177 -0
  1256. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileListComponent.cpp +295 -0
  1257. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileListComponent.h +104 -0
  1258. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h +75 -0
  1259. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.cpp +280 -0
  1260. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileSearchPathListComponent.h +126 -0
  1261. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.cpp +690 -0
  1262. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FileTreeComponent.h +117 -0
  1263. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FilenameComponent.cpp +277 -0
  1264. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_FilenameComponent.h +245 -0
  1265. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.cpp +135 -0
  1266. package/ios/juce_modules/juce_gui_basics/filebrowser/juce_ImagePreviewComponent.h +77 -0
  1267. package/ios/juce_modules/juce_gui_basics/juce_gui_basics.cpp +370 -0
  1268. package/ios/juce_modules/juce_gui_basics/juce_gui_basics.h +403 -0
  1269. package/ios/juce_modules/juce_gui_basics/juce_gui_basics.mm +35 -0
  1270. package/ios/juce_modules/juce_gui_basics/keyboard/juce_CaretComponent.cpp +73 -0
  1271. package/ios/juce_modules/juce_gui_basics/keyboard/juce_CaretComponent.h +90 -0
  1272. package/ios/juce_modules/juce_gui_basics/keyboard/juce_KeyListener.cpp +43 -0
  1273. package/ios/juce_modules/juce_gui_basics/keyboard/juce_KeyListener.h +86 -0
  1274. package/ios/juce_modules/juce_gui_basics/keyboard/juce_KeyPress.cpp +298 -0
  1275. package/ios/juce_modules/juce_gui_basics/keyboard/juce_KeyPress.h +286 -0
  1276. package/ios/juce_modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.cpp +283 -0
  1277. package/ios/juce_modules/juce_gui_basics/keyboard/juce_KeyboardFocusTraverser.h +96 -0
  1278. package/ios/juce_modules/juce_gui_basics/keyboard/juce_ModifierKeys.cpp +58 -0
  1279. package/ios/juce_modules/juce_gui_basics/keyboard/juce_ModifierKeys.h +220 -0
  1280. package/ios/juce_modules/juce_gui_basics/keyboard/juce_SystemClipboard.h +58 -0
  1281. package/ios/juce_modules/juce_gui_basics/keyboard/juce_TextEditorKeyMapper.h +132 -0
  1282. package/ios/juce_modules/juce_gui_basics/keyboard/juce_TextInputTarget.h +129 -0
  1283. package/ios/juce_modules/juce_gui_basics/layout/juce_AnimatedPosition.h +216 -0
  1284. package/ios/juce_modules/juce_gui_basics/layout/juce_AnimatedPositionBehaviours.h +162 -0
  1285. package/ios/juce_modules/juce_gui_basics/layout/juce_BorderedComponentBoundsConstrainer.cpp +86 -0
  1286. package/ios/juce_modules/juce_gui_basics/layout/juce_BorderedComponentBoundsConstrainer.h +78 -0
  1287. package/ios/juce_modules/juce_gui_basics/layout/juce_ComponentAnimator.cpp +363 -0
  1288. package/ios/juce_modules/juce_gui_basics/layout/juce_ComponentAnimator.h +174 -0
  1289. package/ios/juce_modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.cpp +314 -0
  1290. package/ios/juce_modules/juce_gui_basics/layout/juce_ComponentBoundsConstrainer.h +206 -0
  1291. package/ios/juce_modules/juce_gui_basics/layout/juce_ComponentBuilder.cpp +295 -0
  1292. package/ios/juce_modules/juce_gui_basics/layout/juce_ComponentBuilder.h +256 -0
  1293. package/ios/juce_modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.cpp +151 -0
  1294. package/ios/juce_modules/juce_gui_basics/layout/juce_ComponentMovementWatcher.h +105 -0
  1295. package/ios/juce_modules/juce_gui_basics/layout/juce_ConcertinaPanel.cpp +512 -0
  1296. package/ios/juce_modules/juce_gui_basics/layout/juce_ConcertinaPanel.h +153 -0
  1297. package/ios/juce_modules/juce_gui_basics/layout/juce_FlexBox.cpp +1158 -0
  1298. package/ios/juce_modules/juce_gui_basics/layout/juce_FlexBox.h +152 -0
  1299. package/ios/juce_modules/juce_gui_basics/layout/juce_FlexItem.h +186 -0
  1300. package/ios/juce_modules/juce_gui_basics/layout/juce_Grid.cpp +1651 -0
  1301. package/ios/juce_modules/juce_gui_basics/layout/juce_Grid.h +232 -0
  1302. package/ios/juce_modules/juce_gui_basics/layout/juce_GridItem.cpp +188 -0
  1303. package/ios/juce_modules/juce_gui_basics/layout/juce_GridItem.h +249 -0
  1304. package/ios/juce_modules/juce_gui_basics/layout/juce_GroupComponent.cpp +87 -0
  1305. package/ios/juce_modules/juce_gui_basics/layout/juce_GroupComponent.h +120 -0
  1306. package/ios/juce_modules/juce_gui_basics/layout/juce_MultiDocumentPanel.cpp +641 -0
  1307. package/ios/juce_modules/juce_gui_basics/layout/juce_MultiDocumentPanel.h +390 -0
  1308. package/ios/juce_modules/juce_gui_basics/layout/juce_ResizableBorderComponent.cpp +208 -0
  1309. package/ios/juce_modules/juce_gui_basics/layout/juce_ResizableBorderComponent.h +205 -0
  1310. package/ios/juce_modules/juce_gui_basics/layout/juce_ResizableCornerComponent.cpp +112 -0
  1311. package/ios/juce_modules/juce_gui_basics/layout/juce_ResizableCornerComponent.h +101 -0
  1312. package/ios/juce_modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.cpp +139 -0
  1313. package/ios/juce_modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h +109 -0
  1314. package/ios/juce_modules/juce_gui_basics/layout/juce_ScrollBar.cpp +486 -0
  1315. package/ios/juce_modules/juce_gui_basics/layout/juce_ScrollBar.h +450 -0
  1316. package/ios/juce_modules/juce_gui_basics/layout/juce_SidePanel.cpp +309 -0
  1317. package/ios/juce_modules/juce_gui_basics/layout/juce_SidePanel.h +248 -0
  1318. package/ios/juce_modules/juce_gui_basics/layout/juce_StretchableLayoutManager.cpp +351 -0
  1319. package/ios/juce_modules/juce_gui_basics/layout/juce_StretchableLayoutManager.h +270 -0
  1320. package/ios/juce_modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.cpp +88 -0
  1321. package/ios/juce_modules/juce_gui_basics/layout/juce_StretchableLayoutResizerBar.h +114 -0
  1322. package/ios/juce_modules/juce_gui_basics/layout/juce_StretchableObjectResizer.cpp +131 -0
  1323. package/ios/juce_modules/juce_gui_basics/layout/juce_StretchableObjectResizer.h +111 -0
  1324. package/ios/juce_modules/juce_gui_basics/layout/juce_TabbedButtonBar.cpp +592 -0
  1325. package/ios/juce_modules/juce_gui_basics/layout/juce_TabbedButtonBar.h +382 -0
  1326. package/ios/juce_modules/juce_gui_basics/layout/juce_TabbedComponent.cpp +328 -0
  1327. package/ios/juce_modules/juce_gui_basics/layout/juce_TabbedComponent.h +236 -0
  1328. package/ios/juce_modules/juce_gui_basics/layout/juce_Viewport.cpp +649 -0
  1329. package/ios/juce_modules/juce_gui_basics/layout/juce_Viewport.h +383 -0
  1330. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.cpp +201 -0
  1331. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel.h +301 -0
  1332. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.cpp +599 -0
  1333. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V1.h +114 -0
  1334. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.cpp +3200 -0
  1335. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V2.h +443 -0
  1336. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.cpp +655 -0
  1337. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V3.h +107 -0
  1338. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.cpp +1516 -0
  1339. package/ios/juce_modules/juce_gui_basics/lookandfeel/juce_LookAndFeel_V4.h +269 -0
  1340. package/ios/juce_modules/juce_gui_basics/menus/juce_BurgerMenuComponent.cpp +311 -0
  1341. package/ios/juce_modules/juce_gui_basics/menus/juce_BurgerMenuComponent.h +120 -0
  1342. package/ios/juce_modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp +472 -0
  1343. package/ios/juce_modules/juce_gui_basics/menus/juce_MenuBarComponent.h +138 -0
  1344. package/ios/juce_modules/juce_gui_basics/menus/juce_MenuBarModel.cpp +108 -0
  1345. package/ios/juce_modules/juce_gui_basics/menus/juce_MenuBarModel.h +201 -0
  1346. package/ios/juce_modules/juce_gui_basics/menus/juce_PopupMenu.cpp +2401 -0
  1347. package/ios/juce_modules/juce_gui_basics/menus/juce_PopupMenu.h +1070 -0
  1348. package/ios/juce_modules/juce_gui_basics/misc/juce_BubbleComponent.cpp +162 -0
  1349. package/ios/juce_modules/juce_gui_basics/misc/juce_BubbleComponent.h +213 -0
  1350. package/ios/juce_modules/juce_gui_basics/misc/juce_DropShadower.cpp +408 -0
  1351. package/ios/juce_modules/juce_gui_basics/misc/juce_DropShadower.h +96 -0
  1352. package/ios/juce_modules/juce_gui_basics/misc/juce_FocusOutline.cpp +194 -0
  1353. package/ios/juce_modules/juce_gui_basics/misc/juce_FocusOutline.h +109 -0
  1354. package/ios/juce_modules/juce_gui_basics/mouse/juce_ComponentDragger.cpp +76 -0
  1355. package/ios/juce_modules/juce_gui_basics/mouse/juce_ComponentDragger.h +110 -0
  1356. package/ios/juce_modules/juce_gui_basics/mouse/juce_DragAndDropContainer.cpp +646 -0
  1357. package/ios/juce_modules/juce_gui_basics/mouse/juce_DragAndDropContainer.h +275 -0
  1358. package/ios/juce_modules/juce_gui_basics/mouse/juce_DragAndDropTarget.h +149 -0
  1359. package/ios/juce_modules/juce_gui_basics/mouse/juce_FileDragAndDropTarget.h +115 -0
  1360. package/ios/juce_modules/juce_gui_basics/mouse/juce_LassoComponent.h +233 -0
  1361. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseCursor.cpp +162 -0
  1362. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseCursor.h +199 -0
  1363. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseEvent.cpp +147 -0
  1364. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseEvent.h +463 -0
  1365. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.cpp +86 -0
  1366. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseInactivityDetector.h +121 -0
  1367. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp +114 -0
  1368. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseInputSource.h +315 -0
  1369. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseListener.cpp +48 -0
  1370. package/ios/juce_modules/juce_gui_basics/mouse/juce_MouseListener.h +180 -0
  1371. package/ios/juce_modules/juce_gui_basics/mouse/juce_SelectedItemSet.h +336 -0
  1372. package/ios/juce_modules/juce_gui_basics/mouse/juce_TextDragAndDropTarget.h +115 -0
  1373. package/ios/juce_modules/juce_gui_basics/mouse/juce_TooltipClient.h +98 -0
  1374. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_Accessibility.cpp +46 -0
  1375. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_AccessibilityElement_windows.cpp +660 -0
  1376. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_AccessibilityElement_windows.h +89 -0
  1377. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_AccessibilitySharedCode_mac.mm +283 -0
  1378. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers.h +311 -0
  1379. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers_test.cpp +164 -0
  1380. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_Accessibility_android.cpp +1058 -0
  1381. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_Accessibility_ios.mm +669 -0
  1382. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_Accessibility_mac.mm +942 -0
  1383. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_Accessibility_windows.cpp +336 -0
  1384. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAExpandCollapseProvider_windows.h +92 -0
  1385. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAGridItemProvider_windows.h +162 -0
  1386. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAGridProvider_windows.h +160 -0
  1387. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAHelpers_windows.h +128 -0
  1388. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAInvokeProvider_windows.h +68 -0
  1389. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAProviderBase_windows.h +67 -0
  1390. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAProviders_windows.h +52 -0
  1391. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIARangeValueProvider_windows.h +146 -0
  1392. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIASelectionProvider_windows.h +254 -0
  1393. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIATextProvider_windows.h +626 -0
  1394. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAToggleProvider_windows.h +87 -0
  1395. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIATransformProvider_windows.h +131 -0
  1396. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAValueProvider_windows.h +92 -0
  1397. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_UIAWindowProvider_windows.h +203 -0
  1398. package/ios/juce_modules/juce_gui_basics/native/accessibility/juce_WindowsUIAWrapper_windows.h +169 -0
  1399. package/ios/juce_modules/juce_gui_basics/native/java/app/com/rmsl/juce/ComponentPeerView.java +987 -0
  1400. package/ios/juce_modules/juce_gui_basics/native/java/app/com/rmsl/juce/JuceContentProviderCursor.java +62 -0
  1401. package/ios/juce_modules/juce_gui_basics/native/java/app/com/rmsl/juce/JuceContentProviderFileObserver.java +57 -0
  1402. package/ios/juce_modules/juce_gui_basics/native/javaopt/app/com/rmsl/juce/JuceActivity.java +63 -0
  1403. package/ios/juce_modules/juce_gui_basics/native/javaopt/app/com/rmsl/juce/JuceSharingContentProvider.java +128 -0
  1404. package/ios/juce_modules/juce_gui_basics/native/javaopt/app/com/rmsl/juce/Receiver.java +51 -0
  1405. package/ios/juce_modules/juce_gui_basics/native/juce_CGMetalLayerRenderer_mac.h +384 -0
  1406. package/ios/juce_modules/juce_gui_basics/native/juce_ContentSharer_android.cpp +963 -0
  1407. package/ios/juce_modules/juce_gui_basics/native/juce_ContentSharer_ios.cpp +134 -0
  1408. package/ios/juce_modules/juce_gui_basics/native/juce_DragAndDrop_linux.cpp +618 -0
  1409. package/ios/juce_modules/juce_gui_basics/native/juce_DragAndDrop_windows.cpp +377 -0
  1410. package/ios/juce_modules/juce_gui_basics/native/juce_FileChooser_android.cpp +276 -0
  1411. package/ios/juce_modules/juce_gui_basics/native/juce_FileChooser_ios.mm +379 -0
  1412. package/ios/juce_modules/juce_gui_basics/native/juce_FileChooser_linux.cpp +296 -0
  1413. package/ios/juce_modules/juce_gui_basics/native/juce_FileChooser_mac.mm +414 -0
  1414. package/ios/juce_modules/juce_gui_basics/native/juce_FileChooser_windows.cpp +908 -0
  1415. package/ios/juce_modules/juce_gui_basics/native/juce_MainMenu_mac.mm +848 -0
  1416. package/ios/juce_modules/juce_gui_basics/native/juce_MouseCursor_mac.mm +205 -0
  1417. package/ios/juce_modules/juce_gui_basics/native/juce_MultiTouchMapper.h +116 -0
  1418. package/ios/juce_modules/juce_gui_basics/native/juce_NSViewComponentPeer_mac.mm +3053 -0
  1419. package/ios/juce_modules/juce_gui_basics/native/juce_NativeMessageBox_android.cpp +124 -0
  1420. package/ios/juce_modules/juce_gui_basics/native/juce_NativeMessageBox_ios.mm +119 -0
  1421. package/ios/juce_modules/juce_gui_basics/native/juce_NativeMessageBox_linux.cpp +78 -0
  1422. package/ios/juce_modules/juce_gui_basics/native/juce_NativeMessageBox_mac.mm +140 -0
  1423. package/ios/juce_modules/juce_gui_basics/native/juce_NativeMessageBox_windows.cpp +354 -0
  1424. package/ios/juce_modules/juce_gui_basics/native/juce_NativeModalWrapperComponent_ios.h +141 -0
  1425. package/ios/juce_modules/juce_gui_basics/native/juce_PerScreenDisplayLinks_mac.h +313 -0
  1426. package/ios/juce_modules/juce_gui_basics/native/juce_ScopedDPIAwarenessDisabler.cpp +43 -0
  1427. package/ios/juce_modules/juce_gui_basics/native/juce_ScopedDPIAwarenessDisabler.h +63 -0
  1428. package/ios/juce_modules/juce_gui_basics/native/juce_ScopedThreadDPIAwarenessSetter_windows.h +52 -0
  1429. package/ios/juce_modules/juce_gui_basics/native/juce_ScopedWindowAssociation_linux.h +127 -0
  1430. package/ios/juce_modules/juce_gui_basics/native/juce_UIViewComponentPeer_ios.mm +2376 -0
  1431. package/ios/juce_modules/juce_gui_basics/native/juce_VBlank_windows.cpp +302 -0
  1432. package/ios/juce_modules/juce_gui_basics/native/juce_WindowUtils_android.cpp +43 -0
  1433. package/ios/juce_modules/juce_gui_basics/native/juce_WindowUtils_ios.mm +43 -0
  1434. package/ios/juce_modules/juce_gui_basics/native/juce_WindowUtils_linux.cpp +48 -0
  1435. package/ios/juce_modules/juce_gui_basics/native/juce_WindowUtils_mac.mm +47 -0
  1436. package/ios/juce_modules/juce_gui_basics/native/juce_WindowUtils_windows.cpp +68 -0
  1437. package/ios/juce_modules/juce_gui_basics/native/juce_Windowing_android.cpp +2903 -0
  1438. package/ios/juce_modules/juce_gui_basics/native/juce_Windowing_ios.mm +629 -0
  1439. package/ios/juce_modules/juce_gui_basics/native/juce_Windowing_linux.cpp +863 -0
  1440. package/ios/juce_modules/juce_gui_basics/native/juce_Windowing_mac.mm +588 -0
  1441. package/ios/juce_modules/juce_gui_basics/native/juce_Windowing_windows.cpp +5549 -0
  1442. package/ios/juce_modules/juce_gui_basics/native/juce_WindowsHooks_windows.cpp +118 -0
  1443. package/ios/juce_modules/juce_gui_basics/native/juce_WindowsHooks_windows.h +55 -0
  1444. package/ios/juce_modules/juce_gui_basics/native/juce_XSymbols_linux.cpp +249 -0
  1445. package/ios/juce_modules/juce_gui_basics/native/juce_XSymbols_linux.h +629 -0
  1446. package/ios/juce_modules/juce_gui_basics/native/juce_XWindowSystem_linux.cpp +4036 -0
  1447. package/ios/juce_modules/juce_gui_basics/native/juce_XWindowSystem_linux.h +364 -0
  1448. package/ios/juce_modules/juce_gui_basics/positioning/juce_MarkerList.cpp +293 -0
  1449. package/ios/juce_modules/juce_gui_basics/positioning/juce_MarkerList.h +204 -0
  1450. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativeCoordinate.cpp +162 -0
  1451. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativeCoordinate.h +190 -0
  1452. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.cpp +344 -0
  1453. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativeCoordinatePositioner.h +99 -0
  1454. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativeParallelogram.cpp +149 -0
  1455. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativeParallelogram.h +75 -0
  1456. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativePoint.cpp +110 -0
  1457. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativePoint.h +100 -0
  1458. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativePointPath.cpp +271 -0
  1459. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativePointPath.h +202 -0
  1460. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativeRectangle.cpp +286 -0
  1461. package/ios/juce_modules/juce_gui_basics/positioning/juce_RelativeRectangle.h +117 -0
  1462. package/ios/juce_modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.cpp +95 -0
  1463. package/ios/juce_modules/juce_gui_basics/properties/juce_BooleanPropertyComponent.h +118 -0
  1464. package/ios/juce_modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.cpp +55 -0
  1465. package/ios/juce_modules/juce_gui_basics/properties/juce_ButtonPropertyComponent.h +85 -0
  1466. package/ios/juce_modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.cpp +284 -0
  1467. package/ios/juce_modules/juce_gui_basics/properties/juce_ChoicePropertyComponent.h +162 -0
  1468. package/ios/juce_modules/juce_gui_basics/properties/juce_MultiChoicePropertyComponent.cpp +367 -0
  1469. package/ios/juce_modules/juce_gui_basics/properties/juce_MultiChoicePropertyComponent.h +150 -0
  1470. package/ios/juce_modules/juce_gui_basics/properties/juce_PropertyComponent.cpp +65 -0
  1471. package/ios/juce_modules/juce_gui_basics/properties/juce_PropertyComponent.h +154 -0
  1472. package/ios/juce_modules/juce_gui_basics/properties/juce_PropertyPanel.cpp +405 -0
  1473. package/ios/juce_modules/juce_gui_basics/properties/juce_PropertyPanel.h +186 -0
  1474. package/ios/juce_modules/juce_gui_basics/properties/juce_SliderPropertyComponent.cpp +95 -0
  1475. package/ios/juce_modules/juce_gui_basics/properties/juce_SliderPropertyComponent.h +116 -0
  1476. package/ios/juce_modules/juce_gui_basics/properties/juce_TextPropertyComponent.cpp +271 -0
  1477. package/ios/juce_modules/juce_gui_basics/properties/juce_TextPropertyComponent.h +196 -0
  1478. package/ios/juce_modules/juce_gui_basics/widgets/juce_ComboBox.cpp +721 -0
  1479. package/ios/juce_modules/juce_gui_basics/widgets/juce_ComboBox.h +473 -0
  1480. package/ios/juce_modules/juce_gui_basics/widgets/juce_ImageComponent.cpp +116 -0
  1481. package/ios/juce_modules/juce_gui_basics/widgets/juce_ImageComponent.h +90 -0
  1482. package/ios/juce_modules/juce_gui_basics/widgets/juce_Label.cpp +592 -0
  1483. package/ios/juce_modules/juce_gui_basics/widgets/juce_Label.h +377 -0
  1484. package/ios/juce_modules/juce_gui_basics/widgets/juce_ListBox.cpp +1263 -0
  1485. package/ios/juce_modules/juce_gui_basics/widgets/juce_ListBox.h +656 -0
  1486. package/ios/juce_modules/juce_gui_basics/widgets/juce_ProgressBar.cpp +189 -0
  1487. package/ios/juce_modules/juce_gui_basics/widgets/juce_ProgressBar.h +215 -0
  1488. package/ios/juce_modules/juce_gui_basics/widgets/juce_Slider.cpp +1839 -0
  1489. package/ios/juce_modules/juce_gui_basics/widgets/juce_Slider.h +1048 -0
  1490. package/ios/juce_modules/juce_gui_basics/widgets/juce_TableHeaderComponent.cpp +935 -0
  1491. package/ios/juce_modules/juce_gui_basics/widgets/juce_TableHeaderComponent.h +472 -0
  1492. package/ios/juce_modules/juce_gui_basics/widgets/juce_TableListBox.cpp +688 -0
  1493. package/ios/juce_modules/juce_gui_basics/widgets/juce_TableListBox.h +365 -0
  1494. package/ios/juce_modules/juce_gui_basics/widgets/juce_TextEditor.cpp +2786 -0
  1495. package/ios/juce_modules/juce_gui_basics/widgets/juce_TextEditor.h +888 -0
  1496. package/ios/juce_modules/juce_gui_basics/widgets/juce_Toolbar.cpp +838 -0
  1497. package/ios/juce_modules/juce_gui_basics/widgets/juce_Toolbar.h +347 -0
  1498. package/ios/juce_modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.cpp +173 -0
  1499. package/ios/juce_modules/juce_gui_basics/widgets/juce_ToolbarItemComponent.h +217 -0
  1500. package/ios/juce_modules/juce_gui_basics/widgets/juce_ToolbarItemFactory.h +118 -0
  1501. package/ios/juce_modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.cpp +125 -0
  1502. package/ios/juce_modules/juce_gui_basics/widgets/juce_ToolbarItemPalette.h +88 -0
  1503. package/ios/juce_modules/juce_gui_basics/widgets/juce_TreeView.cpp +2286 -0
  1504. package/ios/juce_modules/juce_gui_basics/widgets/juce_TreeView.h +969 -0
  1505. package/ios/juce_modules/juce_gui_basics/windows/juce_AlertWindow.cpp +712 -0
  1506. package/ios/juce_modules/juce_gui_basics/windows/juce_AlertWindow.h +600 -0
  1507. package/ios/juce_modules/juce_gui_basics/windows/juce_CallOutBox.cpp +279 -0
  1508. package/ios/juce_modules/juce_gui_basics/windows/juce_CallOutBox.h +197 -0
  1509. package/ios/juce_modules/juce_gui_basics/windows/juce_ComponentPeer.cpp +625 -0
  1510. package/ios/juce_modules/juce_gui_basics/windows/juce_ComponentPeer.h +623 -0
  1511. package/ios/juce_modules/juce_gui_basics/windows/juce_DialogWindow.cpp +190 -0
  1512. package/ios/juce_modules/juce_gui_basics/windows/juce_DialogWindow.h +286 -0
  1513. package/ios/juce_modules/juce_gui_basics/windows/juce_DocumentWindow.cpp +423 -0
  1514. package/ios/juce_modules/juce_gui_basics/windows/juce_DocumentWindow.h +316 -0
  1515. package/ios/juce_modules/juce_gui_basics/windows/juce_MessageBoxOptions.cpp +102 -0
  1516. package/ios/juce_modules/juce_gui_basics/windows/juce_MessageBoxOptions.h +202 -0
  1517. package/ios/juce_modules/juce_gui_basics/windows/juce_NativeMessageBox.cpp +167 -0
  1518. package/ios/juce_modules/juce_gui_basics/windows/juce_NativeMessageBox.h +311 -0
  1519. package/ios/juce_modules/juce_gui_basics/windows/juce_NativeScaleFactorNotifier.cpp +75 -0
  1520. package/ios/juce_modules/juce_gui_basics/windows/juce_NativeScaleFactorNotifier.h +78 -0
  1521. package/ios/juce_modules/juce_gui_basics/windows/juce_ResizableWindow.cpp +679 -0
  1522. package/ios/juce_modules/juce_gui_basics/windows/juce_ResizableWindow.h +427 -0
  1523. package/ios/juce_modules/juce_gui_basics/windows/juce_ScopedMessageBox.cpp +67 -0
  1524. package/ios/juce_modules/juce_gui_basics/windows/juce_ScopedMessageBox.h +78 -0
  1525. package/ios/juce_modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.cpp +128 -0
  1526. package/ios/juce_modules/juce_gui_basics/windows/juce_ThreadWithProgressWindow.h +184 -0
  1527. package/ios/juce_modules/juce_gui_basics/windows/juce_TooltipWindow.cpp +264 -0
  1528. package/ios/juce_modules/juce_gui_basics/windows/juce_TooltipWindow.h +169 -0
  1529. package/ios/juce_modules/juce_gui_basics/windows/juce_TopLevelWindow.cpp +264 -0
  1530. package/ios/juce_modules/juce_gui_basics/windows/juce_TopLevelWindow.h +176 -0
  1531. package/ios/juce_modules/juce_gui_basics/windows/juce_VBlankAttachment.cpp +122 -0
  1532. package/ios/juce_modules/juce_gui_basics/windows/juce_VBlankAttachment.h +85 -0
  1533. package/ios/juce_modules/juce_gui_basics/windows/juce_WindowUtils.h +51 -0
  1534. package/ios/juce_modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.cpp +83 -0
  1535. package/ios/juce_modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniser.h +81 -0
  1536. package/ios/juce_modules/juce_gui_extra/code_editor/juce_CPlusPlusCodeTokeniserFunctions.h +683 -0
  1537. package/ios/juce_modules/juce_gui_extra/code_editor/juce_CodeDocument.cpp +1306 -0
  1538. package/ios/juce_modules/juce_gui_extra/code_editor/juce_CodeDocument.h +459 -0
  1539. package/ios/juce_modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.cpp +1857 -0
  1540. package/ios/juce_modules/juce_gui_extra/code_editor/juce_CodeEditorComponent.h +486 -0
  1541. package/ios/juce_modules/juce_gui_extra/code_editor/juce_CodeTokeniser.h +68 -0
  1542. package/ios/juce_modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.cpp +248 -0
  1543. package/ios/juce_modules/juce_gui_extra/code_editor/juce_LuaCodeTokeniser.h +74 -0
  1544. package/ios/juce_modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.cpp +181 -0
  1545. package/ios/juce_modules/juce_gui_extra/code_editor/juce_XMLCodeTokeniser.h +72 -0
  1546. package/ios/juce_modules/juce_gui_extra/detail/juce_WebControlRelayEvents.h +255 -0
  1547. package/ios/juce_modules/juce_gui_extra/documents/juce_FileBasedDocument.cpp +1124 -0
  1548. package/ios/juce_modules/juce_gui_extra/documents/juce_FileBasedDocument.h +440 -0
  1549. package/ios/juce_modules/juce_gui_extra/embedding/juce_ActiveXControlComponent.h +142 -0
  1550. package/ios/juce_modules/juce_gui_extra/embedding/juce_AndroidViewComponent.h +91 -0
  1551. package/ios/juce_modules/juce_gui_extra/embedding/juce_HWNDComponent.h +98 -0
  1552. package/ios/juce_modules/juce_gui_extra/embedding/juce_NSViewComponent.h +107 -0
  1553. package/ios/juce_modules/juce_gui_extra/embedding/juce_UIViewComponent.h +99 -0
  1554. package/ios/juce_modules/juce_gui_extra/embedding/juce_XEmbedComponent.h +129 -0
  1555. package/ios/juce_modules/juce_gui_extra/juce_gui_extra.cpp +210 -0
  1556. package/ios/juce_modules/juce_gui_extra/juce_gui_extra.h +161 -0
  1557. package/ios/juce_modules/juce_gui_extra/juce_gui_extra.mm +35 -0
  1558. package/ios/juce_modules/juce_gui_extra/misc/juce_AnimatedAppComponent.cpp +89 -0
  1559. package/ios/juce_modules/juce_gui_extra/misc/juce_AnimatedAppComponent.h +96 -0
  1560. package/ios/juce_modules/juce_gui_extra/misc/juce_AppleRemote.h +126 -0
  1561. package/ios/juce_modules/juce_gui_extra/misc/juce_BubbleMessageComponent.cpp +133 -0
  1562. package/ios/juce_modules/juce_gui_extra/misc/juce_BubbleMessageComponent.h +134 -0
  1563. package/ios/juce_modules/juce_gui_extra/misc/juce_ColourSelector.cpp +656 -0
  1564. package/ios/juce_modules/juce_gui_extra/misc/juce_ColourSelector.h +173 -0
  1565. package/ios/juce_modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.cpp +486 -0
  1566. package/ios/juce_modules/juce_gui_extra/misc/juce_KeyMappingEditorComponent.h +142 -0
  1567. package/ios/juce_modules/juce_gui_extra/misc/juce_LiveConstantEditor.cpp +501 -0
  1568. package/ios/juce_modules/juce_gui_extra/misc/juce_LiveConstantEditor.h +310 -0
  1569. package/ios/juce_modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp +165 -0
  1570. package/ios/juce_modules/juce_gui_extra/misc/juce_PreferencesPanel.h +156 -0
  1571. package/ios/juce_modules/juce_gui_extra/misc/juce_PushNotifications.cpp +239 -0
  1572. package/ios/juce_modules/juce_gui_extra/misc/juce_PushNotifications.h +714 -0
  1573. package/ios/juce_modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.cpp +189 -0
  1574. package/ios/juce_modules/juce_gui_extra/misc/juce_RecentlyOpenedFilesList.h +186 -0
  1575. package/ios/juce_modules/juce_gui_extra/misc/juce_SplashScreen.cpp +110 -0
  1576. package/ios/juce_modules/juce_gui_extra/misc/juce_SplashScreen.h +165 -0
  1577. package/ios/juce_modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.cpp +51 -0
  1578. package/ios/juce_modules/juce_gui_extra/misc/juce_SystemTrayIconComponent.h +125 -0
  1579. package/ios/juce_modules/juce_gui_extra/misc/juce_WebBrowserComponent.cpp +722 -0
  1580. package/ios/juce_modules/juce_gui_extra/misc/juce_WebBrowserComponent.h +626 -0
  1581. package/ios/juce_modules/juce_gui_extra/misc/juce_WebControlParameterIndexReceiver.h +76 -0
  1582. package/ios/juce_modules/juce_gui_extra/misc/juce_WebControlRelays.cpp +256 -0
  1583. package/ios/juce_modules/juce_gui_extra/misc/juce_WebControlRelays.h +254 -0
  1584. package/ios/juce_modules/juce_gui_extra/native/java/app/com/rmsl/juce/JuceWebViewClasses.java +356 -0
  1585. package/ios/juce_modules/juce_gui_extra/native/javaopt/app/com/rmsl/juce/JuceFirebaseInstanceIdService.java +50 -0
  1586. package/ios/juce_modules/juce_gui_extra/native/javaopt/app/com/rmsl/juce/JuceFirebaseMessagingService.java +69 -0
  1587. package/ios/juce_modules/juce_gui_extra/native/javascript/check_native_interop.js +146 -0
  1588. package/ios/juce_modules/juce_gui_extra/native/javascript/index.js +577 -0
  1589. package/ios/juce_modules/juce_gui_extra/native/javascript/package.json +4 -0
  1590. package/ios/juce_modules/juce_gui_extra/native/juce_ActiveXComponent_windows.cpp +553 -0
  1591. package/ios/juce_modules/juce_gui_extra/native/juce_AndroidViewComponent.cpp +199 -0
  1592. package/ios/juce_modules/juce_gui_extra/native/juce_AppleRemote_mac.mm +285 -0
  1593. package/ios/juce_modules/juce_gui_extra/native/juce_HWNDComponent_windows.cpp +203 -0
  1594. package/ios/juce_modules/juce_gui_extra/native/juce_NSViewComponent_mac.mm +203 -0
  1595. package/ios/juce_modules/juce_gui_extra/native/juce_NSViewFrameWatcher_mac.h +120 -0
  1596. package/ios/juce_modules/juce_gui_extra/native/juce_PushNotifications_android.cpp +1607 -0
  1597. package/ios/juce_modules/juce_gui_extra/native/juce_PushNotifications_ios.cpp +620 -0
  1598. package/ios/juce_modules/juce_gui_extra/native/juce_PushNotifications_mac.cpp +535 -0
  1599. package/ios/juce_modules/juce_gui_extra/native/juce_SystemTrayIcon_linux.cpp +160 -0
  1600. package/ios/juce_modules/juce_gui_extra/native/juce_SystemTrayIcon_mac.cpp +451 -0
  1601. package/ios/juce_modules/juce_gui_extra/native/juce_SystemTrayIcon_windows.cpp +251 -0
  1602. package/ios/juce_modules/juce_gui_extra/native/juce_UIViewComponent_ios.mm +151 -0
  1603. package/ios/juce_modules/juce_gui_extra/native/juce_WebBrowserComponent_android.cpp +953 -0
  1604. package/ios/juce_modules/juce_gui_extra/native/juce_WebBrowserComponent_linux.cpp +1659 -0
  1605. package/ios/juce_modules/juce_gui_extra/native/juce_WebBrowserComponent_mac.mm +1113 -0
  1606. package/ios/juce_modules/juce_gui_extra/native/juce_WebBrowserComponent_windows.cpp +1298 -0
  1607. package/ios/juce_modules/juce_gui_extra/native/juce_XEmbedComponent_linux.cpp +739 -0
  1608. package/package.json +1 -1
  1609. package/ios/JuceModules.mm +0 -14
  1610. package/ios/JuceToneGenerator.h +0 -39
  1611. package/ios/JuceToneGenerator.mm +0 -613
@@ -0,0 +1,3962 @@
1
+ //------------------------------------------------------------------------
2
+ // Project : SDK Base
3
+ // Version : 1.0
4
+ //
5
+ // Category : Helpers
6
+ // Filename : base/source/fstring.cpp
7
+ // Created by : Steinberg, 2008
8
+ // Description : String class
9
+ //
10
+ //-----------------------------------------------------------------------------
11
+ // LICENSE
12
+ // (c) 2024, Steinberg Media Technologies GmbH, All Rights Reserved
13
+ //-----------------------------------------------------------------------------
14
+ // Redistribution and use in source and binary forms, with or without modification,
15
+ // are permitted provided that the following conditions are met:
16
+ //
17
+ // * Redistributions of source code must retain the above copyright notice,
18
+ // this list of conditions and the following disclaimer.
19
+ // * Redistributions in binary form must reproduce the above copyright notice,
20
+ // this list of conditions and the following disclaimer in the documentation
21
+ // and/or other materials provided with the distribution.
22
+ // * Neither the name of the Steinberg Media Technologies nor the names of its
23
+ // contributors may be used to endorse or promote products derived from this
24
+ // software without specific prior written permission.
25
+ //
26
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
27
+ // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
28
+ // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
29
+ // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
30
+ // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
31
+ // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33
+ // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
34
+ // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
35
+ // OF THE POSSIBILITY OF SUCH DAMAGE.
36
+ //-----------------------------------------------------------------------------
37
+
38
+ #include "base/source/fstring.h"
39
+ #include "base/source/fdebug.h"
40
+ #include "pluginterfaces/base/futils.h"
41
+ #include "pluginterfaces/base/fvariant.h"
42
+
43
+ #include <cstdlib>
44
+ #include <cctype>
45
+ #include <cstdio>
46
+ #include <cstdarg>
47
+ #include <utility>
48
+ #include <complex>
49
+ #include <cmath>
50
+ #include <algorithm>
51
+ #include <cassert>
52
+
53
+ #if SMTG_OS_WINDOWS
54
+ #ifndef NOMINMAX
55
+ #define NOMINMAX
56
+ #endif
57
+ #include <windows.h>
58
+ #ifdef _MSC_VER
59
+ #pragma warning (disable : 4244)
60
+ #pragma warning (disable : 4267)
61
+ #pragma warning (disable : 4996)
62
+
63
+ #if DEVELOPMENT
64
+ #include <crtdbg.h>
65
+
66
+ #define malloc(s) _malloc_dbg(s, _NORMAL_BLOCK, __FILE__, __LINE__)
67
+ #define realloc(p,s) _realloc_dbg(p,s, _NORMAL_BLOCK, __FILE__, __LINE__)
68
+ #define free(p) _free_dbg(p, _NORMAL_BLOCK)
69
+
70
+ #endif // DEVELOPMENT
71
+ #endif // _MSC_VER
72
+ #endif // SMTG_OS_WINDOWS
73
+
74
+ #ifndef kPrintfBufferSize
75
+ #define kPrintfBufferSize 4096
76
+ #endif
77
+
78
+ #if SMTG_OS_MACOS
79
+ #include <CoreFoundation/CoreFoundation.h>
80
+ #include <CoreFoundation/CFString.h>
81
+ #include <CoreFoundation/CFStringEncodingExt.h>
82
+ #include <wchar.h>
83
+
84
+ #if defined (__GNUC__) && (__GNUC__ >= 4) && !__LP64__
85
+ // on 32 bit Mac OS X we can safely ignore the format warnings as sizeof(int) == sizeof(long)
86
+ #pragma GCC diagnostic ignored "-Wformat"
87
+ #endif
88
+
89
+ #define SMTG_ENABLE_DEBUG_CFALLOCATOR 0
90
+ #define SMTG_DEBUG_CFALLOCATOR (DEVELOPMENT && SMTG_ENABLE_DEBUG_CFALLOCATOR)
91
+
92
+ #if SMTG_DEBUG_CFALLOCATOR
93
+ #include <libkern/OSAtomic.h>
94
+ #include <dlfcn.h>
95
+ #endif
96
+
97
+ namespace Steinberg {
98
+ #if SMTG_DEBUG_CFALLOCATOR
99
+ static CFAllocatorRef kCFAllocator = NULL;
100
+
101
+ struct CFStringDebugAllocator : CFAllocatorContext
102
+ {
103
+ CFStringDebugAllocator ()
104
+ {
105
+ version = 0;
106
+ info = this;
107
+ retain = nullptr;
108
+ release = nullptr;
109
+ copyDescription = nullptr;
110
+ allocate = allocateCallBack;
111
+ reallocate = reallocateCallBack;
112
+ deallocate = deallocateCallBack;
113
+ preferredSize = preferredSizeCallBack;
114
+
115
+ numAllocations = allocationSize = numDeallocations = 0;
116
+ cfAllocator = CFAllocatorCreate (kCFAllocatorUseContext, this);
117
+
118
+ Dl_info info;
119
+ if (dladdr ((const void*)CFStringDebugAllocator::allocateCallBack, &info))
120
+ {
121
+ moduleName = info.dli_fname;
122
+ }
123
+ kCFAllocator = cfAllocator;
124
+ }
125
+
126
+ ~CFStringDebugAllocator ()
127
+ {
128
+ kCFAllocator = kCFAllocatorDefault;
129
+ CFRelease (cfAllocator);
130
+ FDebugPrint ("CFStringDebugAllocator (%s):\n", moduleName.text8 ());
131
+ FDebugPrint ("\tNumber of allocations : %u\n", numAllocations);
132
+ FDebugPrint ("\tNumber of deallocations: %u\n", numDeallocations);
133
+ FDebugPrint ("\tAllocated Bytes : %u\n", allocationSize);
134
+ }
135
+
136
+ String moduleName;
137
+ CFAllocatorRef cfAllocator;
138
+ volatile int64_t numAllocations;
139
+ volatile int64_t numDeallocations;
140
+ volatile int64_t allocationSize;
141
+
142
+ void* doAllocate (CFIndex allocSize, CFOptionFlags hint)
143
+ {
144
+ void* ptr = CFAllocatorAllocate (kCFAllocatorDefault, allocSize, hint);
145
+ OSAtomicIncrement64 (&numAllocations);
146
+ OSAtomicAdd64 (allocSize, &allocationSize);
147
+ return ptr;
148
+ }
149
+ void* doReallocate (void* ptr, CFIndex newsize, CFOptionFlags hint)
150
+ {
151
+ void* newPtr = CFAllocatorReallocate (kCFAllocatorDefault, ptr, newsize, hint);
152
+ return newPtr;
153
+ }
154
+ void doDeallocate (void* ptr)
155
+ {
156
+ CFAllocatorDeallocate (kCFAllocatorDefault, ptr);
157
+ OSAtomicIncrement64 (&numDeallocations);
158
+ }
159
+ CFIndex getPreferredSize (CFIndex size, CFOptionFlags hint)
160
+ {
161
+ return CFAllocatorGetPreferredSizeForSize (kCFAllocatorDefault, size, hint);
162
+ }
163
+
164
+ static void* allocateCallBack (CFIndex allocSize, CFOptionFlags hint, void* info)
165
+ {
166
+ return static_cast<CFStringDebugAllocator*> (info)->doAllocate (allocSize, hint);
167
+ }
168
+ static void* reallocateCallBack (void* ptr, CFIndex newsize, CFOptionFlags hint, void* info)
169
+ {
170
+ return static_cast<CFStringDebugAllocator*> (info)->doReallocate (ptr, newsize, hint);
171
+ }
172
+
173
+ static void deallocateCallBack (void* ptr, void* info)
174
+ {
175
+ static_cast<CFStringDebugAllocator*> (info)->doDeallocate (ptr);
176
+ }
177
+ static CFIndex preferredSizeCallBack (CFIndex size, CFOptionFlags hint, void* info)
178
+ {
179
+ return static_cast<CFStringDebugAllocator*> (info)->getPreferredSize (size, hint);
180
+ }
181
+ };
182
+ static CFStringDebugAllocator gDebugAllocator;
183
+ #else
184
+
185
+ static const CFAllocatorRef kCFAllocator = ::kCFAllocatorDefault;
186
+ #endif // SMTG_DEBUG_CFALLOCATOR
187
+ }
188
+
189
+ //-----------------------------------------------------------------------------
190
+ static void* toCFStringRef (const Steinberg::char8* source, Steinberg::uint32 encoding)
191
+ {
192
+ if (encoding == 0xFFFF)
193
+ encoding = kCFStringEncodingASCII;
194
+ if (source)
195
+ return (void*)CFStringCreateWithCString (Steinberg::kCFAllocator, source, encoding);
196
+ else
197
+ return (void*)CFStringCreateWithCString (Steinberg::kCFAllocator, "", encoding);
198
+ }
199
+
200
+ //-----------------------------------------------------------------------------
201
+ static bool fromCFStringRef (Steinberg::char8* dest, Steinberg::int32 destSize, const void* cfStr, Steinberg::uint32 encoding)
202
+ {
203
+ CFIndex usedBytes;
204
+ CFRange range = {0, CFStringGetLength ((CFStringRef)cfStr)};
205
+ bool result = CFStringGetBytes ((CFStringRef)cfStr, range, encoding, '?', false, (UInt8*)dest, destSize, &usedBytes);
206
+ dest[usedBytes] = 0;
207
+ return result;
208
+ }
209
+ #endif // SMTG_OS_MACOS
210
+
211
+ #if SMTG_OS_WINDOWS
212
+ //-----------------------------------------------------------------------------
213
+ static inline int stricmp16 (const Steinberg::tchar* s1, const Steinberg::tchar* s2)
214
+ {
215
+ return wcsicmp (Steinberg::wscast (s1), Steinberg::wscast (s2));
216
+ }
217
+
218
+ //-----------------------------------------------------------------------------
219
+ static inline int strnicmp16 (const Steinberg::tchar* s1, const Steinberg::tchar* s2, size_t l)
220
+ {
221
+ return wcsnicmp (Steinberg::wscast (s1), Steinberg::wscast (s2), l);
222
+ }
223
+
224
+ //-----------------------------------------------------------------------------
225
+ static inline int vsnwprintf (Steinberg::char16* buffer, size_t bufferSize,
226
+ const Steinberg::char16* format, va_list args)
227
+ {
228
+ return _vsnwprintf (Steinberg::wscast (buffer), bufferSize, Steinberg::wscast (format), args);
229
+ }
230
+
231
+ //-----------------------------------------------------------------------------
232
+ static inline Steinberg::int32 sprintf16 (Steinberg::char16* str, const Steinberg::char16* format, ...)
233
+ {
234
+ va_list marker;
235
+ va_start (marker, format);
236
+ return vsnwprintf (str, -1, format, marker);
237
+ }
238
+
239
+ #elif SMTG_OS_LINUX
240
+ #include <codecvt>
241
+ #include <locale>
242
+ #include <cstring>
243
+ #include <string>
244
+ #include <limits>
245
+ #include <cassert>
246
+ #include <wchar.h>
247
+
248
+ using ConverterFacet = std::codecvt_utf8_utf16<char16_t>;
249
+ using Converter = std::wstring_convert<ConverterFacet, char16_t>;
250
+
251
+ //------------------------------------------------------------------------
252
+ static ConverterFacet& converterFacet ()
253
+ {
254
+ static ConverterFacet gFacet;
255
+ return gFacet;
256
+ }
257
+
258
+ //------------------------------------------------------------------------
259
+ static Converter& converter ()
260
+ {
261
+ static Converter gConverter;
262
+ return gConverter;
263
+ }
264
+
265
+ //-----------------------------------------------------------------------------
266
+ static inline int stricasecmp (const Steinberg::char8* s1, const Steinberg::char8* s2)
267
+ {
268
+ return ::strcasecmp (s1, s2);
269
+ }
270
+
271
+ //-----------------------------------------------------------------------------
272
+ static inline int strnicasecmp (const Steinberg::char8* s1, const Steinberg::char8* s2, size_t n)
273
+ {
274
+ return ::strncasecmp (s1, s2, n);
275
+ }
276
+
277
+ //-----------------------------------------------------------------------------
278
+ static inline int stricmp16 (const Steinberg::char16* s1, const Steinberg::char16* s2)
279
+ {
280
+ auto str1 = converter ().to_bytes (s1);
281
+ auto str2 = converter ().to_bytes (s2);
282
+ return stricasecmp (str1.data (), str2.data ());
283
+ }
284
+
285
+ //-----------------------------------------------------------------------------
286
+ static inline int strnicmp16 (const Steinberg::char16* s1, const Steinberg::char16* s2, int n)
287
+ {
288
+ auto str1 = converter ().to_bytes (s1);
289
+ auto str2 = converter ().to_bytes (s2);
290
+ return strnicasecmp (str1.data (), str2.data (), n);
291
+ }
292
+
293
+ //-----------------------------------------------------------------------------
294
+ static inline int sprintf16 (Steinberg::char16* wcs, const Steinberg::char16* format, ...)
295
+ {
296
+ assert (false && "DEPRECATED No Linux implementation");
297
+ return 0;
298
+ }
299
+
300
+ //-----------------------------------------------------------------------------
301
+ static inline int vsnwprintf (Steinberg::char16* wcs, size_t maxlen,
302
+ const Steinberg::char16* format, va_list args)
303
+ {
304
+ Steinberg::char8 str8[kPrintfBufferSize];
305
+ auto format_utf8 = converter ().to_bytes(format);
306
+ auto len = vsnprintf (str8, kPrintfBufferSize, format_utf8.data (), args);
307
+
308
+ auto tmp_str = converter ().from_bytes (str8, str8 + len);
309
+ auto target_len = std::min (tmp_str.size (), maxlen - 1);
310
+ tmp_str.copy (wcs, target_len);
311
+ wcs[target_len] = '\0';
312
+
313
+ return tmp_str.size ();
314
+ }
315
+
316
+ //-----------------------------------------------------------------------------
317
+ static inline Steinberg::char16* strrchr16 (const Steinberg::char16* str, Steinberg::char16 c)
318
+ {
319
+ assert (false && "DEPRECATED No Linux implementation");
320
+ return nullptr;
321
+ }
322
+
323
+ #elif SMTG_OS_MACOS
324
+ #define tstrtoi64 strtoll
325
+ #define stricmp strcasecmp
326
+ #define strnicmp strncasecmp
327
+
328
+ //-----------------------------------------------------------------------------
329
+ static inline Steinberg::int32 strnicmp16 (const Steinberg::char16* str1, const Steinberg::char16* str2, size_t size)
330
+ {
331
+ if (size == 0)
332
+ return 0;
333
+
334
+ CFIndex str1Len = Steinberg::strlen16 (str1);
335
+ CFIndex str2Len = Steinberg::strlen16 (str2);
336
+ if (static_cast<CFIndex> (size) < str2Len) // range is not applied to second string
337
+ str2Len = size;
338
+ CFStringRef cfStr1 = CFStringCreateWithCharactersNoCopy (Steinberg::kCFAllocator, (UniChar*)str1, str1Len, kCFAllocatorNull);
339
+ CFStringRef cfStr2 = CFStringCreateWithCharactersNoCopy (Steinberg::kCFAllocator, (UniChar*)str2, str2Len, kCFAllocatorNull);
340
+ CFComparisonResult result = CFStringCompareWithOptions (cfStr1, cfStr2, CFRangeMake (0, size), kCFCompareCaseInsensitive);
341
+ CFRelease (cfStr1);
342
+ CFRelease (cfStr2);
343
+ switch (result)
344
+ {
345
+ case kCFCompareEqualTo: return 0;
346
+ case kCFCompareLessThan: return -1;
347
+ case kCFCompareGreaterThan:
348
+ default: return 1;
349
+ };
350
+ }
351
+
352
+ //-----------------------------------------------------------------------------
353
+ static inline Steinberg::int32 stricmp16 (const Steinberg::char16* str1, CFIndex str1Len, const Steinberg::char16* str2, CFIndex str2Len)
354
+ {
355
+ CFStringRef cfStr1 = CFStringCreateWithCharactersNoCopy (Steinberg::kCFAllocator, (UniChar*)str1, str1Len, kCFAllocatorNull);
356
+ CFStringRef cfStr2 = CFStringCreateWithCharactersNoCopy (Steinberg::kCFAllocator, (UniChar*)str2, str2Len, kCFAllocatorNull);
357
+ CFComparisonResult result = CFStringCompare (cfStr1, cfStr2, kCFCompareCaseInsensitive);
358
+ CFRelease (cfStr1);
359
+ CFRelease (cfStr2);
360
+ switch (result)
361
+ {
362
+ case kCFCompareEqualTo: return 0;
363
+ case kCFCompareLessThan: return -1;
364
+ case kCFCompareGreaterThan:
365
+ default: return 1;
366
+ };
367
+ }
368
+
369
+ //-----------------------------------------------------------------------------
370
+ static inline Steinberg::int32 stricmp16 (const Steinberg::ConstString& str1, const Steinberg::ConstString& str2)
371
+ {
372
+ return stricmp16 (str1.text16 (), str1.length (), str2.text16 (), str2.length ());
373
+ }
374
+
375
+ //-----------------------------------------------------------------------------
376
+ static inline Steinberg::int32 stricmp16 (const Steinberg::char16* str1, const Steinberg::char16* str2)
377
+ {
378
+ CFIndex str1Len = Steinberg::strlen16 (str1);
379
+ CFIndex str2Len = Steinberg::strlen16 (str2);
380
+ return stricmp16 (str1, str1Len, str2, str2Len);
381
+ }
382
+
383
+ //-----------------------------------------------------------------------------
384
+ static inline Steinberg::char16* strrchr16 (const Steinberg::char16* str, Steinberg::char16 c)
385
+ {
386
+ Steinberg::int32 len = Steinberg::ConstString (str).length ();
387
+ while (len > 0)
388
+ {
389
+ if (str[len] == c)
390
+ return const_cast<Steinberg::char16*>(str + len);
391
+ len--;
392
+ }
393
+ return 0;
394
+ }
395
+
396
+ //-----------------------------------------------------------------------------
397
+ static inline Steinberg::int32 vsnwprintf (Steinberg::char16* str, Steinberg::int32 size, const Steinberg::char16* format, va_list ap)
398
+ {
399
+ // wrapped using CoreFoundation's CFString
400
+ CFMutableStringRef formatString = (CFMutableStringRef)Steinberg::ConstString (format).toCFStringRef (0xFFFF, true);
401
+ CFStringFindAndReplace (formatString, CFSTR("%s"), CFSTR("%S"), CFRangeMake (0, CFStringGetLength (formatString)), 0);
402
+ CFStringRef resultString = CFStringCreateWithFormatAndArguments (Steinberg::kCFAllocator, 0, formatString, ap);
403
+ CFRelease (formatString);
404
+ if (resultString)
405
+ {
406
+ Steinberg::String res;
407
+ res.fromCFStringRef (resultString);
408
+ res.copyTo16 (str, 0, size);
409
+ CFRelease (resultString);
410
+ return 0;
411
+ }
412
+ return 1;
413
+ }
414
+
415
+ //-----------------------------------------------------------------------------
416
+ static inline Steinberg::int32 sprintf16 (Steinberg::char16* str, const Steinberg::char16* format, ...)
417
+ {
418
+ va_list marker;
419
+ va_start (marker, format);
420
+ return vsnwprintf (str, -1, format, marker);
421
+ }
422
+
423
+ #endif // SMTG_OS_LINUX
424
+
425
+ /*
426
+ UTF-8 EF BB BF
427
+ UTF-16 Big Endian FE FF
428
+ UTF-16 Little Endian FF FE
429
+ UTF-32 Big Endian 00 00 FE FF
430
+ UTF-32 Little Endian FF FE 00 00
431
+ */
432
+
433
+ namespace Steinberg {
434
+
435
+ //-----------------------------------------------------------------------------
436
+ static inline bool isCaseSensitive (ConstString::CompareMode mode)
437
+ {
438
+ return mode == ConstString::kCaseSensitive;
439
+ }
440
+
441
+ //-----------------------------------------------------------------------------
442
+ // ConstString
443
+ //-----------------------------------------------------------------------------
444
+ ConstString::ConstString (const char8* str, int32 length)
445
+ : buffer8 ((char8*)str)
446
+ , len (length < 0 ? (str ? static_cast<uint32> (strlen (str)) : 0) : length)
447
+ , isWide (0)
448
+ {
449
+ }
450
+
451
+ //-----------------------------------------------------------------------------
452
+ ConstString::ConstString (const char16* str, int32 length)
453
+ : buffer16 ((char16*)str)
454
+ , len (length < 0 ? (str ? strlen16 (str) : 0) : length)
455
+ , isWide (1)
456
+ {
457
+ }
458
+
459
+ //-----------------------------------------------------------------------------
460
+ ConstString::ConstString (const ConstString& str, int32 offset, int32 length)
461
+ : buffer (str.buffer)
462
+ , len (length < 0 ? (str.len - (offset > 0 ? offset : 0)) : length)
463
+ , isWide (str.isWide)
464
+ {
465
+ if (offset > 0)
466
+ {
467
+ if (isWide)
468
+ buffer16 += offset;
469
+ else
470
+ buffer8 += offset;
471
+ }
472
+ }
473
+
474
+ //-----------------------------------------------------------------------------
475
+ ConstString::ConstString (const FVariant& var)
476
+ : buffer (nullptr)
477
+ , len (0)
478
+ , isWide (0)
479
+ {
480
+ switch (var.getType ())
481
+ {
482
+ case FVariant::kString8:
483
+ buffer8 = (char8*)var.getString8 ();
484
+ len = buffer8 ? strlen8 (buffer8) : 0;
485
+ isWide = false;
486
+ break;
487
+
488
+ case FVariant::kString16:
489
+ buffer16 = (char16*)var.getString16 ();
490
+ len = buffer16 ? strlen16 (buffer16) : 0;
491
+ isWide = true;
492
+ break;
493
+ }
494
+ }
495
+
496
+ //-----------------------------------------------------------------------------
497
+ ConstString::ConstString ()
498
+ : buffer (nullptr)
499
+ , len (0)
500
+ , isWide (0)
501
+ {
502
+ }
503
+
504
+ //-----------------------------------------------------------------------------
505
+ bool ConstString::testChar8 (uint32 index, char8 c) const
506
+ {
507
+ if (index >= len)
508
+ return c == 0;
509
+ if (isWide)
510
+ {
511
+ // make c wide
512
+ char8 src[] = {c, 0};
513
+ char16 dest[2] = {0};
514
+ if (multiByteToWideString (dest, src, 2) > 0)
515
+ return buffer16[index] == dest[0];
516
+ return false;
517
+ }
518
+ return buffer8[index] == c;
519
+ }
520
+
521
+ //-----------------------------------------------------------------------------
522
+ bool ConstString::testChar16 (uint32 index, char16 c) const
523
+ {
524
+ if (index >= len)
525
+ return c == 0;
526
+ if (!isWide)
527
+ {
528
+ // make c ansi
529
+ char16 src[] = {c, 0};
530
+ char8 dest[8] = {0};
531
+ if (wideStringToMultiByte (dest, src, 2) > 0 && dest[1] == 0)
532
+ return buffer8[index] == dest[0];
533
+ return false;
534
+ }
535
+ return buffer16[index] == c;
536
+ }
537
+
538
+ //-----------------------------------------------------------------------------
539
+ bool ConstString::extract (String& result, uint32 idx, int32 n) const
540
+ {
541
+ // AddressSanitizer : when extracting part of "this" on itself, it can lead to heap-use-after-free.
542
+ SMTG_ASSERT (this != static_cast<ConstString*> (&result))
543
+
544
+ if (len == 0|| idx >= len)
545
+ return false;
546
+
547
+ if ((idx + n > len) || n < 0)
548
+ n = len - idx;
549
+
550
+ if (isWide)
551
+ result.assign (buffer16 + idx, n);
552
+ else
553
+ result.assign (buffer8 + idx, n);
554
+
555
+ return true;
556
+ }
557
+
558
+ //-----------------------------------------------------------------------------
559
+ int32 ConstString::copyTo8 (char8* str, uint32 idx, int32 n) const
560
+ {
561
+ if (!str)
562
+ return 0;
563
+
564
+ if (isWide)
565
+ {
566
+ String tmp (text16 ());
567
+ if (tmp.toMultiByte () == false)
568
+ return 0;
569
+ return tmp.copyTo8 (str, idx, n);
570
+ }
571
+
572
+ if (isEmpty () || idx >= len || !buffer8)
573
+ {
574
+ str[0] = 0;
575
+ return 0;
576
+ }
577
+
578
+ if ((idx + n > len) || n < 0)
579
+ n = len - idx;
580
+
581
+ memcpy (str, &(buffer8[idx]), n * sizeof (char8));
582
+ str[n] = 0;
583
+ return n;
584
+ }
585
+
586
+ //-----------------------------------------------------------------------------
587
+ int32 ConstString::copyTo16 (char16* str, uint32 idx, int32 n) const
588
+ {
589
+ if (!str)
590
+ return 0;
591
+
592
+ if (!isWide)
593
+ {
594
+ String tmp (text8 ());
595
+ if (tmp.toWideString () == false)
596
+ return 0;
597
+ return tmp.copyTo16 (str, idx, n);
598
+ }
599
+
600
+ if (isEmpty () || idx >= len || !buffer16)
601
+ {
602
+ str[0] = 0;
603
+ return 0;
604
+ }
605
+
606
+ if ((idx + n > len) || n < 0)
607
+ n = len - idx;
608
+
609
+ memcpy (str, &(buffer16[idx]), n * sizeof (char16));
610
+ str[n] = 0;
611
+ return n;
612
+ }
613
+
614
+ //-----------------------------------------------------------------------------
615
+ int32 ConstString::copyTo (tchar* str, uint32 idx, int32 n) const
616
+ {
617
+ #ifdef UNICODE
618
+ return copyTo16 (str, idx, n);
619
+ #else
620
+ return copyTo8 (str, idx, n);
621
+ #endif
622
+ }
623
+
624
+ //-----------------------------------------------------------------------------
625
+ void ConstString::copyTo (IStringResult* result) const
626
+ {
627
+ if (isWideString () == false)
628
+ {
629
+ result->setText (text8 ());
630
+ }
631
+ else
632
+ {
633
+ FUnknownPtr<IString> iStr (result);
634
+ if (iStr)
635
+ {
636
+ iStr->setText16 (text16 ());
637
+ }
638
+ else
639
+ {
640
+ String tmp (*this);
641
+ tmp.toMultiByte ();
642
+ result->setText (tmp.text8 ());
643
+ }
644
+ }
645
+ }
646
+
647
+ //-----------------------------------------------------------------------------
648
+ void ConstString::copyTo (IString& string) const
649
+ {
650
+ if (isWideString ())
651
+ string.setText16 (text16 ());
652
+ else
653
+ string.setText8 (text8 ());
654
+ }
655
+
656
+
657
+
658
+ //-----------------------------------------------------------------------------
659
+ int32 ConstString::compare (const ConstString& str, int32 n, CompareMode mode) const
660
+ {
661
+ if (n == 0)
662
+ return 0;
663
+
664
+ if (str.isEmpty ())
665
+ {
666
+ if (isEmpty ())
667
+ return 0;
668
+ return 1;
669
+ }
670
+ if (isEmpty ())
671
+ return -1;
672
+
673
+ if (!isWide && !str.isWide)
674
+ {
675
+ if (n < 0)
676
+ {
677
+ if (isCaseSensitive (mode))
678
+ return strcmp (*this, str);
679
+ return stricmp (*this, str);
680
+ }
681
+ if (isCaseSensitive (mode))
682
+ return strncmp (*this, str, n);
683
+ return strnicmp (*this, str, n);
684
+ }
685
+ if (isWide && str.isWide)
686
+ {
687
+ if (n < 0)
688
+ {
689
+ if (isCaseSensitive (mode))
690
+ return strcmp16 (*this, str);
691
+ return stricmp16 (*this, str);
692
+ }
693
+ if (isCaseSensitive (mode))
694
+ return strncmp16 (*this, str, n);
695
+ return strnicmp16 (*this, str, n);
696
+ }
697
+ return compareAt (0, str, n, mode);
698
+ }
699
+
700
+ //-----------------------------------------------------------------------------
701
+ int32 ConstString::compare (const ConstString& str, CompareMode mode) const
702
+ {
703
+ return compare (str, -1, mode);
704
+ }
705
+
706
+ //-----------------------------------------------------------------------------
707
+ int32 ConstString::compareAt (uint32 index, const ConstString& str, int32 n, CompareMode mode) const
708
+ {
709
+ if (n == 0)
710
+ return 0;
711
+
712
+ if (str.isEmpty ())
713
+ {
714
+ if (isEmpty ())
715
+ return 0;
716
+ return 1;
717
+ }
718
+ if (isEmpty ())
719
+ return -1;
720
+
721
+ if (!isWide && !str.isWide)
722
+ {
723
+ char8* toCompare = buffer8;
724
+ if (index > 0)
725
+ {
726
+ if (index >= len)
727
+ {
728
+ if (str.isEmpty ())
729
+ return 0;
730
+ return -1;
731
+ }
732
+ toCompare += index;
733
+ }
734
+
735
+ if (n < 0)
736
+ {
737
+ if (isCaseSensitive (mode))
738
+ return strcmp (toCompare, str);
739
+ return stricmp (toCompare, str);
740
+ }
741
+ if (isCaseSensitive (mode))
742
+ return strncmp (toCompare, str, n);
743
+ return strnicmp (toCompare, str, n);
744
+ }
745
+ if (isWide && str.isWide)
746
+ {
747
+ char16* toCompare = buffer16;
748
+ if (index > 0)
749
+ {
750
+ if (index >= len)
751
+ {
752
+ if (str.isEmpty ())
753
+ return 0;
754
+ return -1;
755
+ }
756
+ toCompare += index;
757
+ }
758
+
759
+ if (n < 0)
760
+ {
761
+ if (isCaseSensitive (mode))
762
+ return strcmp16 (toCompare, str.text16 ());
763
+ return stricmp16 (toCompare, str.text16 ());
764
+ }
765
+ if (isCaseSensitive (mode))
766
+ return strncmp16 (toCompare, str.text16 (), n);
767
+ return strnicmp16 (toCompare, str.text16 (), n);
768
+ }
769
+
770
+ if (isWide)
771
+ {
772
+ String tmp (str.text8 ());
773
+ if (tmp.toWideString () == false)
774
+ return -1;
775
+ return compareAt (index, tmp, n, mode);
776
+ }
777
+
778
+ String tmp (text8 ());
779
+ if (tmp.toWideString () == false)
780
+ return 1;
781
+ return tmp.compareAt (index, str, n, mode);
782
+ }
783
+
784
+ //------------------------------------------------------------------------
785
+ Steinberg::int32 ConstString::naturalCompare (const ConstString& str, CompareMode mode /*= kCaseSensitive*/) const
786
+ {
787
+ if (str.isEmpty ())
788
+ {
789
+ if (isEmpty ())
790
+ return 0;
791
+ return 1;
792
+ }
793
+ if (isEmpty ())
794
+ return -1;
795
+
796
+ if (!isWide && !str.isWide)
797
+ return strnatcmp8 (buffer8, str.text8 (), isCaseSensitive (mode));
798
+ if (isWide && str.isWide)
799
+ return strnatcmp16 (buffer16, str.text16 (), isCaseSensitive (mode));
800
+
801
+ if (isWide)
802
+ {
803
+ String tmp (str.text8 ());
804
+ tmp.toWideString ();
805
+ return strnatcmp16 (buffer16, tmp.text16 (), isCaseSensitive (mode));
806
+ }
807
+ String tmp (text8 ());
808
+ tmp.toWideString ();
809
+ return strnatcmp16 (tmp.text16 (), str.text16 (), isCaseSensitive (mode));
810
+ }
811
+
812
+ //-----------------------------------------------------------------------------
813
+ bool ConstString::startsWith (const ConstString& str, CompareMode mode /*= kCaseSensitive*/) const
814
+ {
815
+ if (str.isEmpty ())
816
+ {
817
+ return isEmpty ();
818
+ }
819
+ if (isEmpty ())
820
+ {
821
+ return false;
822
+ }
823
+ if (length () < str.length ())
824
+ {
825
+ return false;
826
+ }
827
+ if (!isWide && !str.isWide)
828
+ {
829
+ if (isCaseSensitive (mode))
830
+ return strncmp (buffer8, str.buffer8, str.length ()) == 0;
831
+ return strnicmp (buffer8, str.buffer8, str.length ()) == 0;
832
+ }
833
+ if (isWide && str.isWide)
834
+ {
835
+ if (isCaseSensitive (mode))
836
+ return strncmp16 (buffer16, str.buffer16, str.length ()) == 0;
837
+ return strnicmp16 (buffer16, str.buffer16, str.length ()) == 0;
838
+ }
839
+ if (isWide)
840
+ {
841
+ String tmp (str.text8 ());
842
+ tmp.toWideString ();
843
+ if (tmp.length () > length ())
844
+ return false;
845
+ if (isCaseSensitive (mode))
846
+ return strncmp16 (buffer16, tmp.buffer16, tmp.length ()) == 0;
847
+ return strnicmp16 (buffer16, tmp.buffer16, tmp.length ()) == 0;
848
+ }
849
+ String tmp (text8 ());
850
+ tmp.toWideString ();
851
+ if (str.length () > tmp.length ())
852
+ return false;
853
+ if (isCaseSensitive (mode))
854
+ return strncmp16 (tmp.buffer16, str.buffer16, str.length ()) == 0;
855
+ return strnicmp16 (tmp.buffer16, str.buffer16, str.length ()) == 0;
856
+ }
857
+
858
+ //-----------------------------------------------------------------------------
859
+ bool ConstString::endsWith (const ConstString& str, CompareMode mode /*= kCaseSensitive*/) const
860
+ {
861
+ if (str.isEmpty ())
862
+ {
863
+ return isEmpty ();
864
+ }
865
+ if (isEmpty ())
866
+ {
867
+ return false;
868
+ }
869
+ if (length () < str.length ())
870
+ {
871
+ return false;
872
+ }
873
+ if (!isWide && !str.isWide)
874
+ {
875
+ if (isCaseSensitive (mode))
876
+ return strncmp (buffer8 + (length () - str.length ()), str.buffer8, str.length ()) == 0;
877
+ return strnicmp (buffer8 + (length () - str.length ()), str.buffer8, str.length ()) == 0;
878
+ }
879
+ if (isWide && str.isWide)
880
+ {
881
+ if (isCaseSensitive (mode))
882
+ return strncmp16 (buffer16 + (length () - str.length ()), str.buffer16, str.length ()) == 0;
883
+ return strnicmp16 (buffer16 + (length () - str.length ()), str.buffer16, str.length ()) == 0;
884
+ }
885
+ if (isWide)
886
+ {
887
+ String tmp (str.text8 ());
888
+ tmp.toWideString ();
889
+ if (tmp.length () > length ())
890
+ return false;
891
+ if (isCaseSensitive (mode))
892
+ return strncmp16 (buffer16 + (length () - tmp.length ()), tmp.buffer16, tmp.length ()) == 0;
893
+ return strnicmp16 (buffer16 + (length () - tmp.length ()), tmp.buffer16, tmp.length ()) == 0;
894
+ }
895
+ String tmp (text8 ());
896
+ tmp.toWideString ();
897
+ if (str.length () > tmp.length ())
898
+ return false;
899
+ if (isCaseSensitive (mode))
900
+ return strncmp16 (tmp.buffer16 + (tmp.length () - str.length ()), str.buffer16, str.length ()) == 0;
901
+ return strnicmp16 (tmp.buffer16 + (tmp.length () - str.length ()), str.buffer16, str.length ()) == 0;
902
+ }
903
+
904
+ //-----------------------------------------------------------------------------
905
+ bool ConstString::contains (const ConstString& str, CompareMode m) const
906
+ {
907
+ return findFirst (str, -1, m) != -1;
908
+ }
909
+
910
+ //-----------------------------------------------------------------------------
911
+ int32 ConstString::findNext (int32 startIndex, const ConstString& str, int32 n, CompareMode mode, int32 endIndex) const
912
+ {
913
+ uint32 endLength = len;
914
+ if (endIndex > -1 && (uint32)endIndex < len)
915
+ endLength = endIndex + 1;
916
+
917
+ if (isWide && str.isWide)
918
+ {
919
+ if (startIndex < 0)
920
+ startIndex = 0;
921
+
922
+ uint32 stringLength = str.length ();
923
+ n = n < 0 ? stringLength : Min<uint32> (n, stringLength);
924
+
925
+ if (n > 0)
926
+ {
927
+ uint32 i = 0;
928
+
929
+ if (isCaseSensitive (mode))
930
+ {
931
+ for (i = startIndex; i < endLength; i++)
932
+ if (strncmp16 (buffer16 + i, str, n) == 0)
933
+ return i;
934
+ }
935
+ else
936
+ {
937
+ for (i = startIndex; i < endLength; i++)
938
+ if (strnicmp16 (buffer16 + i, str, n) == 0)
939
+ return i;
940
+ }
941
+ }
942
+ return -1;
943
+ }
944
+ if (!isWide && !str.isWide)
945
+ {
946
+ uint32 stringLength = str.length ();
947
+ n = n < 0 ? stringLength : Min<uint32> (n, stringLength);
948
+
949
+ if (startIndex < 0)
950
+ startIndex = 0;
951
+
952
+ if (n > 0)
953
+ {
954
+ uint32 i = 0;
955
+
956
+ if (isCaseSensitive (mode))
957
+ {
958
+ for (i = startIndex; i < endLength; i++)
959
+ if (strncmp (buffer8 + i, str, n) == 0)
960
+ return i;
961
+ }
962
+ else
963
+ {
964
+ for (i = startIndex; i < endLength; i++)
965
+ if (strnicmp (buffer8 + i, str, n) == 0)
966
+ return i;
967
+ }
968
+ }
969
+ return -1;
970
+ }
971
+ String tmp;
972
+ if (isWide)
973
+ {
974
+ tmp = str.text8 ();
975
+ tmp.toWideString ();
976
+ return findNext (startIndex, tmp, n , mode, endIndex);
977
+ }
978
+ tmp = text8 ();
979
+ tmp.toWideString ();
980
+ return tmp.findNext (startIndex, str, n, mode, endIndex);
981
+ }
982
+
983
+ //------------------------------------------------------------------------------------------------
984
+ int32 ConstString::findNext (int32 startIndex, char8 c, CompareMode mode, int32 endIndex) const
985
+ {
986
+ uint32 endLength = len;
987
+ if (endIndex > -1 && (uint32)endIndex < len)
988
+ endLength = endIndex + 1;
989
+
990
+ if (isWide)
991
+ {
992
+ char8 src[] = {c, 0};
993
+ char16 dest[8] = {0};
994
+ if (multiByteToWideString (dest, src, 2) > 0)
995
+ return findNext (startIndex, dest[0], mode, endIndex);
996
+ return -1;
997
+ }
998
+
999
+ if (startIndex < 0)
1000
+ startIndex = 0;
1001
+ uint32 i;
1002
+
1003
+ if (isCaseSensitive (mode))
1004
+ {
1005
+ for (i = startIndex; i < endLength; i++)
1006
+ {
1007
+ if (buffer8[i] == c)
1008
+ return i;
1009
+ }
1010
+ }
1011
+ else
1012
+ {
1013
+ c = toLower (c);
1014
+ for (i = startIndex; i < endLength; i++)
1015
+ {
1016
+ if (toLower (buffer8[i]) == c)
1017
+ return i;
1018
+ }
1019
+ }
1020
+ return -1;
1021
+ }
1022
+
1023
+ //-----------------------------------------------------------------------------
1024
+ int32 ConstString::findNext (int32 startIndex, char16 c, CompareMode mode, int32 endIndex) const
1025
+ {
1026
+ uint32 endLength = len;
1027
+ if (endIndex > -1 && (uint32)endIndex < len)
1028
+ endLength = endIndex + 1;
1029
+
1030
+ if (!isWide)
1031
+ {
1032
+ char16 src[] = {c, 0};
1033
+ char8 dest[8] = {0};
1034
+ if (wideStringToMultiByte (dest, src, 2) > 0 && dest[1] == 0)
1035
+ return findNext (startIndex, dest[0], mode, endIndex);
1036
+
1037
+ return -1;
1038
+ }
1039
+
1040
+ uint32 i;
1041
+ if (startIndex < 0)
1042
+ startIndex = 0;
1043
+
1044
+ if (isCaseSensitive (mode))
1045
+ {
1046
+ for (i = startIndex; i < endLength; i++)
1047
+ {
1048
+ if (buffer16[i] == c)
1049
+ return i;
1050
+ }
1051
+ }
1052
+ else
1053
+ {
1054
+ c = toLower (c);
1055
+ for (i = startIndex; i < endLength; i++)
1056
+ {
1057
+ if (toLower (buffer16[i]) == c)
1058
+ return i;
1059
+ }
1060
+ }
1061
+ return -1;
1062
+ }
1063
+
1064
+ //-----------------------------------------------------------------------------
1065
+ int32 ConstString::findPrev (int32 startIndex, char8 c, CompareMode mode) const
1066
+ {
1067
+ if (len == 0)
1068
+ return -1;
1069
+
1070
+ if (isWide)
1071
+ {
1072
+ char8 src[] = {c, 0};
1073
+ char16 dest[8] = {0};
1074
+ if (multiByteToWideString (dest, src, 2) > 0)
1075
+ return findPrev (startIndex, dest[0], mode);
1076
+ return -1;
1077
+ }
1078
+
1079
+ if (startIndex < 0 || startIndex > (int32)len)
1080
+ startIndex = len;
1081
+
1082
+ int32 i;
1083
+
1084
+ if (isCaseSensitive (mode))
1085
+ {
1086
+ for (i = startIndex; i >= 0; i--)
1087
+ {
1088
+ if (buffer8[i] == c)
1089
+ return i;
1090
+ }
1091
+ }
1092
+ else
1093
+ {
1094
+ c = toLower (c);
1095
+ for (i = startIndex; i >= 0; i--)
1096
+ {
1097
+ if (toLower (buffer8[i]) == c)
1098
+ return i;
1099
+ }
1100
+ }
1101
+ return -1;
1102
+ }
1103
+
1104
+ //-----------------------------------------------------------------------------
1105
+ int32 ConstString::findPrev (int32 startIndex, char16 c, CompareMode mode) const
1106
+ {
1107
+ if (len == 0)
1108
+ return -1;
1109
+
1110
+ if (!isWide)
1111
+ {
1112
+ char16 src[] = {c, 0};
1113
+ char8 dest[8] = {0};
1114
+ if (wideStringToMultiByte (dest, src, 2) > 0 && dest[1] == 0)
1115
+ return findPrev (startIndex, dest[0], mode);
1116
+
1117
+ return -1;
1118
+ }
1119
+
1120
+ if (startIndex < 0 || startIndex > (int32)len)
1121
+ startIndex = len;
1122
+
1123
+ int32 i;
1124
+
1125
+ if (isCaseSensitive (mode))
1126
+ {
1127
+ for (i = startIndex; i >= 0; i--)
1128
+ {
1129
+ if (buffer16[i] == c)
1130
+ return i;
1131
+ }
1132
+ }
1133
+ else
1134
+ {
1135
+ c = toLower (c);
1136
+ for (i = startIndex; i >= 0; i--)
1137
+ {
1138
+ if (toLower (buffer16[i]) == c)
1139
+ return i;
1140
+ }
1141
+ }
1142
+ return -1;
1143
+ }
1144
+
1145
+ //-----------------------------------------------------------------------------
1146
+ int32 ConstString::findPrev (int32 startIndex, const ConstString& str, int32 n, CompareMode mode) const
1147
+ {
1148
+ if (isWide && str.isWide)
1149
+ {
1150
+ uint32 stringLength = str.length ();
1151
+ n = n < 0 ? stringLength : Min<uint32> (n, stringLength);
1152
+
1153
+ if (startIndex < 0 || startIndex >= (int32)len)
1154
+ startIndex = len - 1;
1155
+
1156
+ if (n > 0)
1157
+ {
1158
+ int32 i = 0;
1159
+
1160
+ if (isCaseSensitive (mode))
1161
+ {
1162
+ for (i = startIndex; i >= 0; i--)
1163
+ if (strncmp16 (buffer16 + i, str, n) == 0)
1164
+ return i;
1165
+ }
1166
+ else
1167
+ {
1168
+ for (i = startIndex; i >= 0; i--)
1169
+ if (strnicmp16 (buffer16 + i, str, n) == 0)
1170
+ return i;
1171
+ }
1172
+ }
1173
+ return -1;
1174
+ }
1175
+ if (!isWide && !str.isWide)
1176
+ {
1177
+ uint32 stringLength = str.length ();
1178
+ n = n < 0 ? stringLength : Min<uint32> (n, stringLength);
1179
+
1180
+ if (startIndex < 0 || startIndex >= (int32)len)
1181
+ startIndex = len - 1;
1182
+
1183
+ if (n > 0)
1184
+ {
1185
+ int32 i = 0;
1186
+
1187
+ if (isCaseSensitive (mode))
1188
+ {
1189
+ for (i = startIndex; i >= 0; i--)
1190
+ if (strncmp (buffer8 + i, str, n) == 0)
1191
+ return i;
1192
+ }
1193
+ else
1194
+ {
1195
+ for (i = startIndex; i >= 0; i--)
1196
+ if (strnicmp (buffer8 + i, str, n) == 0)
1197
+ return i;
1198
+ }
1199
+ }
1200
+ return -1;
1201
+ }
1202
+ if (isWide)
1203
+ {
1204
+ String tmp (str.text8 ());
1205
+ tmp.toWideString ();
1206
+ return findPrev (startIndex, tmp, n, mode);
1207
+ }
1208
+ String tmp (text8 ());
1209
+ tmp.toWideString ();
1210
+ return tmp.findPrev (startIndex, str, n, mode);
1211
+ }
1212
+
1213
+ //-----------------------------------------------------------------------------
1214
+ int32 ConstString::countOccurences (char8 c, uint32 startIndex, CompareMode mode) const
1215
+ {
1216
+ if (isWide)
1217
+ {
1218
+ char8 src[] = {c, 0};
1219
+ char16 dest[8] = {0};
1220
+ if (multiByteToWideString (dest, src, 2) > 0)
1221
+ return countOccurences (dest[0], startIndex, mode);
1222
+ return -1;
1223
+ }
1224
+
1225
+ int32 result = 0;
1226
+ int32 next = startIndex;
1227
+ while (true)
1228
+ {
1229
+ next = findNext (next, c, mode);
1230
+ if (next >= 0)
1231
+ {
1232
+ next++;
1233
+ result++;
1234
+ }
1235
+ else
1236
+ break;
1237
+ }
1238
+ return result;
1239
+ }
1240
+
1241
+ //-----------------------------------------------------------------------------
1242
+ int32 ConstString::countOccurences (char16 c, uint32 startIndex, CompareMode mode) const
1243
+ {
1244
+ if (!isWide)
1245
+ {
1246
+ char16 src[] = {c, 0};
1247
+ char8 dest[8] = {0};
1248
+ if (wideStringToMultiByte (dest, src, 2) > 0 && dest[1] == 0)
1249
+ return countOccurences (dest[0], startIndex, mode);
1250
+
1251
+ return -1;
1252
+ }
1253
+ int32 result = 0;
1254
+ int32 next = startIndex;
1255
+ while (true)
1256
+ {
1257
+ next = findNext (next, c, mode);
1258
+ if (next >= 0)
1259
+ {
1260
+ next++;
1261
+ result++;
1262
+ }
1263
+ else
1264
+ break;
1265
+ }
1266
+ return result;
1267
+ }
1268
+
1269
+ //-----------------------------------------------------------------------------
1270
+ int32 ConstString::getFirstDifferent (const ConstString& str, CompareMode mode) const
1271
+ {
1272
+ if (str.isWide != isWide)
1273
+ {
1274
+ if (isWide)
1275
+ {
1276
+ String tmp (str.text8 ());
1277
+ if (tmp.toWideString () == false)
1278
+ return -1;
1279
+ return getFirstDifferent (tmp, mode);
1280
+ }
1281
+
1282
+ String tmp (text8 ());
1283
+ if (tmp.toWideString () == false)
1284
+ return -1;
1285
+ return tmp.getFirstDifferent (str, mode);
1286
+ }
1287
+
1288
+ uint32 len1 = len;
1289
+ uint32 len2 = str.len;
1290
+ uint32 i;
1291
+
1292
+ if (isWide)
1293
+ {
1294
+ if (isCaseSensitive (mode))
1295
+ {
1296
+ for (i = 0; i <= len1 && i <= len2; i++)
1297
+ {
1298
+ if (buffer16[i] != str.buffer16[i])
1299
+ return i;
1300
+ }
1301
+ }
1302
+ else
1303
+ {
1304
+ for (i = 0; i <= len1 && i <= len2; i++)
1305
+ {
1306
+ if (toLower (buffer16[i]) != toLower (str.buffer16[i]))
1307
+ return i;
1308
+ }
1309
+ }
1310
+ }
1311
+ else
1312
+ {
1313
+ if (isCaseSensitive (mode))
1314
+ {
1315
+ for (i = 0; i <= len1 && i <= len2; i++)
1316
+ {
1317
+ if (buffer8[i] != str.buffer8[i])
1318
+ return i;
1319
+ }
1320
+ }
1321
+ else
1322
+ {
1323
+ for (i = 0; i <= len1 && i <= len2; i++)
1324
+ {
1325
+ if (toLower (buffer8[i]) != toLower (str.buffer8[i]))
1326
+ return i;
1327
+ }
1328
+ }
1329
+ }
1330
+ return -1;
1331
+ }
1332
+
1333
+ //-----------------------------------------------------------------------------
1334
+ bool ConstString::scanInt64 (int64& value, uint32 offset, bool scanToEnd) const
1335
+ {
1336
+ if (isEmpty () || offset >= len)
1337
+ return false;
1338
+
1339
+ if (isWide)
1340
+ return scanInt64_16 (buffer16 + offset, value, scanToEnd);
1341
+ return scanInt64_8 (buffer8 + offset, value, scanToEnd);
1342
+ }
1343
+
1344
+ //-----------------------------------------------------------------------------
1345
+ bool ConstString::scanUInt64 (uint64& value, uint32 offset, bool scanToEnd) const
1346
+ {
1347
+ if (isEmpty () || offset >= len)
1348
+ return false;
1349
+
1350
+ if (isWide)
1351
+ return scanUInt64_16 (buffer16 + offset, value, scanToEnd);
1352
+ return scanUInt64_8 (buffer8 + offset, value, scanToEnd);
1353
+ }
1354
+
1355
+ //-----------------------------------------------------------------------------
1356
+ bool ConstString::scanHex (uint8& value, uint32 offset, bool scanToEnd) const
1357
+ {
1358
+ if (isEmpty () || offset >= len)
1359
+ return false;
1360
+
1361
+ if (isWide)
1362
+ return scanHex_16 (buffer16 + offset, value, scanToEnd);
1363
+ return scanHex_8 (buffer8 + offset, value, scanToEnd);
1364
+ }
1365
+
1366
+ //-----------------------------------------------------------------------------
1367
+ bool ConstString::scanInt32 (int32& value, uint32 offset, bool scanToEnd) const
1368
+ {
1369
+ if (isEmpty () || offset >= len)
1370
+ return false;
1371
+
1372
+ if (isWide)
1373
+ return scanInt32_16 (buffer16 + offset, value, scanToEnd);
1374
+ return scanInt32_8 (buffer8 + offset, value, scanToEnd);
1375
+ }
1376
+
1377
+ //-----------------------------------------------------------------------------
1378
+ bool ConstString::scanUInt32 (uint32& value, uint32 offset, bool scanToEnd) const
1379
+ {
1380
+ if (isEmpty () || offset >= len)
1381
+ return false;
1382
+
1383
+ if (isWide)
1384
+ return scanUInt32_16 (buffer16 + offset, value, scanToEnd);
1385
+ return scanUInt32_8 (buffer8 + offset, value, scanToEnd);
1386
+ }
1387
+
1388
+ //-----------------------------------------------------------------------------
1389
+ bool ConstString::scanInt64_8 (const char8* text, int64& value, bool scanToEnd)
1390
+ {
1391
+ while (text && text[0])
1392
+ {
1393
+ if (sscanf (text, "%" FORMAT_INT64A, &value) == 1)
1394
+ return true;
1395
+ if (scanToEnd == false)
1396
+ return false;
1397
+ text++;
1398
+ }
1399
+ return false;
1400
+ }
1401
+
1402
+ //-----------------------------------------------------------------------------
1403
+ bool ConstString::scanInt64_16 (const char16* text, int64& value, bool scanToEnd)
1404
+ {
1405
+ if (text && text[0])
1406
+ {
1407
+ String str (text);
1408
+ str.toMultiByte (kCP_Default);
1409
+ return scanInt64_8 (str, value, scanToEnd);
1410
+ }
1411
+ return false;
1412
+ }
1413
+
1414
+ //-----------------------------------------------------------------------------
1415
+ bool ConstString::scanUInt64_8 (const char8* text, uint64& value, bool scanToEnd)
1416
+ {
1417
+ while (text && text[0])
1418
+ {
1419
+ if (sscanf (text, "%" FORMAT_UINT64A, &value) == 1)
1420
+ return true;
1421
+ if (scanToEnd == false)
1422
+ return false;
1423
+ text++;
1424
+ }
1425
+ return false;
1426
+ }
1427
+
1428
+ //-----------------------------------------------------------------------------
1429
+ bool ConstString::scanUInt64_16 (const char16* text, uint64& value, bool scanToEnd)
1430
+ {
1431
+ if (text && text[0])
1432
+ {
1433
+ String str (text);
1434
+ str.toMultiByte (kCP_Default);
1435
+ return scanUInt64_8 (str, value, scanToEnd);
1436
+ }
1437
+ return false;
1438
+ }
1439
+
1440
+ //-----------------------------------------------------------------------------
1441
+ bool ConstString::scanInt64 (const tchar* text, int64& value, bool scanToEnd)
1442
+ {
1443
+ #ifdef UNICODE
1444
+ return scanInt64_16 (text, value,scanToEnd);
1445
+ #else
1446
+ return scanInt64_8 (text, value, scanToEnd);
1447
+ #endif
1448
+ }
1449
+
1450
+ //-----------------------------------------------------------------------------
1451
+ bool ConstString::scanUInt64 (const tchar* text, uint64& value, bool scanToEnd)
1452
+ {
1453
+ #ifdef UNICODE
1454
+ return scanUInt64_16 (text, value, scanToEnd);
1455
+ #else
1456
+ return scanUInt64_8 (text, value, scanToEnd);
1457
+ #endif
1458
+ }
1459
+
1460
+ //-----------------------------------------------------------------------------
1461
+ bool ConstString::scanHex_8 (const char8* text, uint8& value, bool scanToEnd)
1462
+ {
1463
+ while (text && text[0])
1464
+ {
1465
+ unsigned int v; // scanf expects an unsigned int for %x
1466
+ if (sscanf (text, "%x", &v) == 1)
1467
+ {
1468
+ value = (uint8)v;
1469
+ return true;
1470
+ }
1471
+ if (scanToEnd == false)
1472
+ return false;
1473
+ text++;
1474
+ }
1475
+ return false;
1476
+ }
1477
+
1478
+ //-----------------------------------------------------------------------------
1479
+ bool ConstString::scanHex_16 (const char16* text, uint8& value, bool scanToEnd)
1480
+ {
1481
+ if (text && text[0])
1482
+ {
1483
+ String str (text);
1484
+ str.toMultiByte (kCP_Default); // scanf uses default codepage
1485
+ return scanHex_8 (str, value, scanToEnd);
1486
+ }
1487
+ return false;
1488
+ }
1489
+
1490
+ //-----------------------------------------------------------------------------
1491
+ bool ConstString::scanHex (const tchar* text, uint8& value, bool scanToEnd)
1492
+ {
1493
+ #ifdef UNICODE
1494
+ return scanHex_16 (text, value, scanToEnd);
1495
+ #else
1496
+ return scanHex_8 (text, value, scanToEnd);
1497
+ #endif
1498
+ }
1499
+
1500
+ //-----------------------------------------------------------------------------
1501
+ bool ConstString::scanFloat (double& value, uint32 offset, bool scanToEnd) const
1502
+ {
1503
+ if (isEmpty () || offset >= len)
1504
+ return false;
1505
+
1506
+ String str (*this);
1507
+ int32 pos = -1;
1508
+ if (isWide)
1509
+ {
1510
+ if ((pos = str.findNext (offset, STR(','))) >= 0 && ((uint32)pos) >= offset)
1511
+ str.setChar (pos, STR('.'));
1512
+
1513
+ str.toMultiByte (kCP_Default); // scanf uses default codepage
1514
+ }
1515
+ else
1516
+ {
1517
+ if ((pos = str.findNext (offset, ',')) >= 0 && ((uint32)pos) >= offset)
1518
+ str.setChar (pos, '.');
1519
+ }
1520
+
1521
+ const char8* txt = str.text8 () + offset;
1522
+ while (txt && txt[0])
1523
+ {
1524
+ if (sscanf (txt, "%lf", &value) == 1)
1525
+ return true;
1526
+ if (scanToEnd == false)
1527
+ return false;
1528
+ txt++;
1529
+ }
1530
+ return false;
1531
+ }
1532
+
1533
+ //-----------------------------------------------------------------------------
1534
+ char16 ConstString::toLower (char16 c)
1535
+ {
1536
+ #if SMTG_OS_WINDOWS
1537
+ WCHAR temp[2] = {c, 0};
1538
+ ::CharLowerW (temp);
1539
+ return temp[0];
1540
+ #elif SMTG_OS_MACOS
1541
+ // only convert characters which in lowercase are also single characters
1542
+ UniChar characters [2] = {0};
1543
+ characters[0] = c;
1544
+ CFMutableStringRef str = CFStringCreateMutableWithExternalCharactersNoCopy (kCFAllocator, characters, 1, 2, kCFAllocatorNull);
1545
+ if (str)
1546
+ {
1547
+ CFStringLowercase (str, NULL);
1548
+ CFRelease (str);
1549
+ if (characters[1] == 0)
1550
+ return characters[0];
1551
+ }
1552
+ return c;
1553
+ #elif SMTG_OS_LINUX
1554
+ assert (false && "DEPRECATED No Linux implementation");
1555
+ return c;
1556
+ #else
1557
+ return towlower (c);
1558
+ #endif
1559
+ }
1560
+
1561
+ //-----------------------------------------------------------------------------
1562
+ char16 ConstString::toUpper (char16 c)
1563
+ {
1564
+ #if SMTG_OS_WINDOWS
1565
+ WCHAR temp[2] = {c, 0};
1566
+ ::CharUpperW (temp);
1567
+ return temp[0];
1568
+ #elif SMTG_OS_MACOS
1569
+ // only convert characters which in uppercase are also single characters (don't translate a sharp-s which would result in SS)
1570
+ UniChar characters [2] = {0};
1571
+ characters[0] = c;
1572
+ CFMutableStringRef str = CFStringCreateMutableWithExternalCharactersNoCopy (kCFAllocator, characters, 1, 2, kCFAllocatorNull);
1573
+ if (str)
1574
+ {
1575
+ CFStringUppercase (str, NULL);
1576
+ CFRelease (str);
1577
+ if (characters[1] == 0)
1578
+ return characters[0];
1579
+ }
1580
+ return c;
1581
+ #elif SMTG_OS_LINUX
1582
+ assert (false && "DEPRECATED No Linux implementation");
1583
+ return c;
1584
+ #else
1585
+ return towupper (c);
1586
+ #endif
1587
+ }
1588
+
1589
+ //-----------------------------------------------------------------------------
1590
+ char8 ConstString::toLower (char8 c)
1591
+ {
1592
+ if ((c >= 'A') && (c <= 'Z'))
1593
+ return c + ('a' - 'A');
1594
+ #if SMTG_OS_WINDOWS
1595
+ CHAR temp[2] = {c, 0};
1596
+ ::CharLowerA (temp);
1597
+ return temp[0];
1598
+ #else
1599
+ return static_cast<char8> (tolower (c));
1600
+ #endif
1601
+ }
1602
+
1603
+ //-----------------------------------------------------------------------------
1604
+ char8 ConstString::toUpper (char8 c)
1605
+ {
1606
+ if ((c >= 'a') && (c <= 'z'))
1607
+ return c - ('a' - 'A');
1608
+ #if SMTG_OS_WINDOWS
1609
+ CHAR temp[2] = {c, 0};
1610
+ ::CharUpperA (temp);
1611
+ return temp[0];
1612
+ #else
1613
+ return static_cast<char8> (toupper (c));
1614
+ #endif
1615
+ }
1616
+
1617
+ //-----------------------------------------------------------------------------
1618
+ bool ConstString::isCharSpace (const char8 character)
1619
+ {
1620
+ return isspace (character) != 0;
1621
+ }
1622
+
1623
+ //-----------------------------------------------------------------------------
1624
+ bool ConstString::isCharSpace (const char16 character)
1625
+ {
1626
+ switch (character)
1627
+ {
1628
+ case 0x0020:
1629
+ case 0x00A0:
1630
+ case 0x2002:
1631
+ case 0x2003:
1632
+ case 0x2004:
1633
+ case 0x2005:
1634
+ case 0x2006:
1635
+ case 0x2007:
1636
+ case 0x2008:
1637
+ case 0x2009:
1638
+ case 0x200A:
1639
+ case 0x200B:
1640
+ case 0x202F:
1641
+ case 0x205F:
1642
+ case 0x3000:
1643
+ return true;
1644
+ }
1645
+ return false;
1646
+ }
1647
+
1648
+ //-----------------------------------------------------------------------------
1649
+ bool ConstString::isCharAlpha (const char8 character)
1650
+ {
1651
+ return isalpha (character) != 0;
1652
+ }
1653
+
1654
+ //-----------------------------------------------------------------------------
1655
+ bool ConstString::isCharAlpha (const char16 character)
1656
+ {
1657
+ return iswalpha (character) != 0;
1658
+ }
1659
+
1660
+ //-----------------------------------------------------------------------------
1661
+ bool ConstString::isCharAlphaNum (const char8 character)
1662
+ {
1663
+ return isalnum (character) != 0;
1664
+ }
1665
+
1666
+ //-----------------------------------------------------------------------------
1667
+ bool ConstString::isCharAlphaNum (const char16 character)
1668
+ {
1669
+ return iswalnum (character) != 0; // this may not work on macOSX when another locale is set inside the c-lib
1670
+ }
1671
+
1672
+ //-----------------------------------------------------------------------------
1673
+ bool ConstString::isCharDigit (const char8 character)
1674
+ {
1675
+ return isdigit (character) != 0;
1676
+ }
1677
+
1678
+ //-----------------------------------------------------------------------------
1679
+ bool ConstString::isCharDigit (const char16 character)
1680
+ {
1681
+ return iswdigit (character) != 0; // this may not work on macOSX when another locale is set inside the c-lib
1682
+ }
1683
+
1684
+ //-----------------------------------------------------------------------------
1685
+ bool ConstString::isCharAscii (char8 character)
1686
+ {
1687
+ return character >= 0;
1688
+ }
1689
+
1690
+ //-----------------------------------------------------------------------------
1691
+ bool ConstString::isCharAscii (char16 character)
1692
+ {
1693
+ return character < 128;
1694
+ }
1695
+
1696
+ //-----------------------------------------------------------------------------
1697
+ bool ConstString::isCharUpper (char8 character)
1698
+ {
1699
+ return toUpper (character) == character;
1700
+ }
1701
+
1702
+ //-----------------------------------------------------------------------------
1703
+ bool ConstString::isCharUpper (char16 character)
1704
+ {
1705
+ return toUpper (character) == character;
1706
+ }
1707
+
1708
+ //-----------------------------------------------------------------------------
1709
+ bool ConstString::isCharLower (char8 character)
1710
+ {
1711
+ return toLower (character) == character;
1712
+ }
1713
+
1714
+ //-----------------------------------------------------------------------------
1715
+ bool ConstString::isCharLower (char16 character)
1716
+ {
1717
+ return toLower (character) == character;
1718
+ }
1719
+
1720
+ //-----------------------------------------------------------------------------
1721
+ bool ConstString::isDigit (uint32 index) const
1722
+ {
1723
+ if (isEmpty () || index >= len)
1724
+ return false;
1725
+
1726
+ if (isWide)
1727
+ return ConstString::isCharDigit (buffer16[index]);
1728
+ return ConstString::isCharDigit (buffer8[index]);
1729
+ }
1730
+
1731
+ //-----------------------------------------------------------------------------
1732
+ int32 ConstString::getTrailingNumberIndex (uint32 width) const
1733
+ {
1734
+ if (isEmpty ())
1735
+ return -1;
1736
+
1737
+ int32 endIndex = len - 1;
1738
+ int32 i = endIndex;
1739
+ while (isDigit ((uint32) i) && i >= 0)
1740
+ i--;
1741
+
1742
+ // now either all are digits or i is on the first non digit
1743
+ if (i < endIndex)
1744
+ {
1745
+ if (width > 0 && (endIndex - i != static_cast<int32> (width)))
1746
+ return -1;
1747
+
1748
+ return i + 1;
1749
+ }
1750
+
1751
+ return -1;
1752
+ }
1753
+
1754
+ //-----------------------------------------------------------------------------
1755
+ int64 ConstString::getTrailingNumber (int64 fallback) const
1756
+ {
1757
+ int32 index = getTrailingNumberIndex ();
1758
+
1759
+ int64 number = 0;
1760
+
1761
+ if (index >= 0)
1762
+ if (scanInt64 (number, index))
1763
+ return number;
1764
+
1765
+ return fallback;
1766
+ }
1767
+
1768
+
1769
+
1770
+ //-----------------------------------------------------------------------------
1771
+ void ConstString::toVariant (FVariant& var) const
1772
+ {
1773
+ if (isWide)
1774
+ {
1775
+ var.setString16 (buffer16);
1776
+ }
1777
+ else
1778
+ {
1779
+ var.setString8 (buffer8);
1780
+ }
1781
+ }
1782
+
1783
+ //-----------------------------------------------------------------------------
1784
+ bool ConstString::isAsciiString () const
1785
+ {
1786
+ uint32 i;
1787
+ if (isWide)
1788
+ {
1789
+ for (i = 0; i < len; i++)
1790
+ if (ConstString::isCharAscii (buffer16 [i]) == false)
1791
+ return false;
1792
+ }
1793
+ else
1794
+ {
1795
+ for (i = 0; i < len; i++)
1796
+ if (ConstString::isCharAscii (buffer8 [i]) == false)
1797
+ return false;
1798
+ }
1799
+ return true;
1800
+ }
1801
+
1802
+
1803
+ #if SMTG_OS_MACOS
1804
+ uint32 kDefaultSystemEncoding = kCFStringEncodingMacRoman;
1805
+ //-----------------------------------------------------------------------------
1806
+ static CFStringEncoding MBCodePageToCFStringEncoding (uint32 codePage)
1807
+ {
1808
+ switch (codePage)
1809
+ {
1810
+ case kCP_ANSI: return kDefaultSystemEncoding; // MacRoman or JIS
1811
+ case kCP_MAC_ROMAN: return kCFStringEncodingMacRoman;
1812
+ case kCP_ANSI_WEL: return kCFStringEncodingWindowsLatin1;
1813
+ case kCP_MAC_CEE: return kCFStringEncodingMacCentralEurRoman;
1814
+ case kCP_Utf8: return kCFStringEncodingUTF8;
1815
+ case kCP_ShiftJIS: return kCFStringEncodingShiftJIS_X0213_00;
1816
+ case kCP_US_ASCII: return kCFStringEncodingASCII;
1817
+ }
1818
+ return kCFStringEncodingASCII;
1819
+ }
1820
+ #endif
1821
+
1822
+ //-----------------------------------------------------------------------------
1823
+ int32 ConstString::multiByteToWideString (char16* dest, const char8* source, int32 charCount, uint32 sourceCodePage)
1824
+ {
1825
+ if (source == nullptr || source[0] == 0)
1826
+ {
1827
+ if (dest && charCount > 0)
1828
+ {
1829
+ dest[0] = 0;
1830
+ }
1831
+ return 0;
1832
+ }
1833
+ int32 result = 0;
1834
+ #if SMTG_OS_WINDOWS
1835
+ result = MultiByteToWideChar (sourceCodePage, MB_ERR_INVALID_CHARS, source, -1, wscast (dest), charCount);
1836
+ #endif
1837
+
1838
+ #if SMTG_OS_MACOS
1839
+ CFStringRef cfStr =
1840
+ (CFStringRef)::toCFStringRef (source, MBCodePageToCFStringEncoding (sourceCodePage));
1841
+ if (cfStr)
1842
+ {
1843
+ CFRange range = {0, CFStringGetLength (cfStr)};
1844
+ CFIndex usedBytes;
1845
+ if (CFStringGetBytes (cfStr, range, kCFStringEncodingUnicode, ' ', false, (UInt8*)dest,
1846
+ charCount * 2, &usedBytes) > 0)
1847
+ {
1848
+ result = static_cast<int32> (usedBytes / 2 + 1);
1849
+ if (dest)
1850
+ dest[usedBytes / 2] = 0;
1851
+ }
1852
+
1853
+ CFRelease (cfStr);
1854
+ }
1855
+ #endif
1856
+
1857
+ #if SMTG_OS_LINUX
1858
+ if (sourceCodePage == kCP_ANSI || sourceCodePage == kCP_US_ASCII || sourceCodePage == kCP_Utf8)
1859
+ {
1860
+ if (dest == nullptr)
1861
+ {
1862
+ auto state = std::mbstate_t ();
1863
+ auto maxChars = charCount ? charCount : std::numeric_limits<int32>::max () - 1;
1864
+ result = converterFacet ().length (state, source, source + strlen (source), maxChars);
1865
+ }
1866
+ else
1867
+ {
1868
+ auto utf16Str = converter ().from_bytes (source);
1869
+ if (!utf16Str.empty ())
1870
+ {
1871
+ result = std::min<int32> (charCount, utf16Str.size ());
1872
+ memcpy (dest, utf16Str.data (), result * sizeof (char16));
1873
+ dest[result] = 0;
1874
+ }
1875
+ }
1876
+ }
1877
+ else
1878
+ {
1879
+ assert (false && "DEPRECATED No Linux implementation");
1880
+ }
1881
+
1882
+ #endif
1883
+
1884
+ SMTG_ASSERT (result > 0)
1885
+ return result;
1886
+ }
1887
+
1888
+ //-----------------------------------------------------------------------------
1889
+ int32 ConstString::wideStringToMultiByte (char8* dest, const char16* wideString, int32 charCount, uint32 destCodePage)
1890
+ {
1891
+ #if SMTG_OS_WINDOWS
1892
+ return WideCharToMultiByte (destCodePage, 0, wscast (wideString), -1, dest, charCount, nullptr, nullptr);
1893
+
1894
+ #elif SMTG_OS_MACOS
1895
+ int32 result = 0;
1896
+ if (wideString != 0)
1897
+ {
1898
+ if (dest)
1899
+ {
1900
+ CFStringRef cfStr = CFStringCreateWithCharactersNoCopy (kCFAllocator, (const UniChar*)wideString, strlen16 (wideString), kCFAllocatorNull);
1901
+ if (cfStr)
1902
+ {
1903
+ if (fromCFStringRef (dest, charCount, cfStr, MBCodePageToCFStringEncoding (destCodePage)))
1904
+ result = static_cast<int32> (strlen (dest) + 1);
1905
+ CFRelease (cfStr);
1906
+ }
1907
+ }
1908
+ else
1909
+ {
1910
+ return static_cast<int32> (CFStringGetMaximumSizeForEncoding (strlen16 (wideString), MBCodePageToCFStringEncoding (destCodePage)));
1911
+ }
1912
+ }
1913
+ return result;
1914
+
1915
+ #elif SMTG_OS_LINUX
1916
+ int32 result = 0;
1917
+ if (destCodePage == kCP_Utf8)
1918
+ {
1919
+ if (dest == nullptr)
1920
+ {
1921
+ auto maxChars = charCount ? charCount : tstrlen (wideString);
1922
+ result = converterFacet ().max_length () * maxChars;
1923
+ }
1924
+ else
1925
+ {
1926
+ auto utf8Str = converter ().to_bytes (wideString);
1927
+ if (!utf8Str.empty ())
1928
+ {
1929
+ result = std::min<int32> (charCount, utf8Str.size ());
1930
+ memcpy (dest, utf8Str.data (), result * sizeof (char8));
1931
+ dest[result] = 0;
1932
+ }
1933
+ }
1934
+ }
1935
+ else if (destCodePage == kCP_ANSI || destCodePage == kCP_US_ASCII)
1936
+ {
1937
+ if (dest == nullptr)
1938
+ {
1939
+ result = strlen16 (wideString) + 1;
1940
+ }
1941
+ else
1942
+ {
1943
+ int32 i = 0;
1944
+ for (; i < charCount; ++i)
1945
+ {
1946
+ if (wideString[i] == 0)
1947
+ break;
1948
+ if (wideString[i] <= 0x007F)
1949
+ dest[i] = wideString[i];
1950
+ else
1951
+ dest[i] = '_';
1952
+ }
1953
+ dest[i] = 0;
1954
+ result = i;
1955
+ }
1956
+ }
1957
+ else
1958
+ {
1959
+ assert (false && "DEPRECATED No Linux implementation");
1960
+ }
1961
+ return result;
1962
+
1963
+ #else
1964
+ assert (false && "DEPRECATED No Linux implementation");
1965
+ return 0;
1966
+ #endif
1967
+
1968
+ }
1969
+
1970
+ //-----------------------------------------------------------------------------
1971
+ bool ConstString::isNormalized (UnicodeNormalization n)
1972
+ {
1973
+ if (isWide == false)
1974
+ return false;
1975
+
1976
+ #if SMTG_OS_WINDOWS
1977
+ #ifdef UNICODE
1978
+ if (n != kUnicodeNormC)
1979
+ return false;
1980
+ uint32 normCharCount = static_cast<uint32> (FoldString (MAP_PRECOMPOSED, wscast (buffer16), len, nullptr, 0));
1981
+ return (normCharCount == len);
1982
+ #else
1983
+ return false;
1984
+ #endif
1985
+
1986
+ #elif SMTG_OS_MACOS
1987
+ if (n != kUnicodeNormC)
1988
+ return false;
1989
+
1990
+ CFStringRef cfStr = (CFStringRef)toCFStringRef ();
1991
+ CFIndex charCount = CFStringGetLength (cfStr);
1992
+ CFRelease (cfStr);
1993
+ return (charCount == len);
1994
+ #else
1995
+ return false;
1996
+ #endif
1997
+ }
1998
+
1999
+ //-----------------------------------------------------------------------------
2000
+ // String
2001
+ //-----------------------------------------------------------------------------
2002
+ String::String ()
2003
+ {
2004
+ isWide = kWideStringDefault ? 1 : 0;
2005
+ }
2006
+
2007
+ //-----------------------------------------------------------------------------
2008
+ String::String (const char8* str, MBCodePage codePage, int32 n, bool isTerminated)
2009
+ {
2010
+ isWide = false;
2011
+ if (str)
2012
+ {
2013
+ if (isTerminated && n >= 0 && str[n] != 0)
2014
+ {
2015
+ // isTerminated is not always set correctly
2016
+ isTerminated = false;
2017
+ }
2018
+
2019
+ if (!isTerminated)
2020
+ {
2021
+ assign (str, n, isTerminated);
2022
+ toWideString (codePage);
2023
+ }
2024
+ else
2025
+ {
2026
+ if (n < 0)
2027
+ n = static_cast<int32> (strlen (str));
2028
+ if (n > 0)
2029
+ _toWideString (str, n, codePage);
2030
+ }
2031
+ }
2032
+ }
2033
+
2034
+ //-----------------------------------------------------------------------------
2035
+ String::String (const char8* str, int32 n, bool isTerminated)
2036
+ {
2037
+ if (str)
2038
+ assign (str, n, isTerminated);
2039
+ }
2040
+
2041
+ //-----------------------------------------------------------------------------
2042
+ String::String (const char16* str, int32 n, bool isTerminated)
2043
+ {
2044
+ isWide = 1;
2045
+ if (str)
2046
+ assign (str, n, isTerminated);
2047
+ }
2048
+
2049
+ //-----------------------------------------------------------------------------
2050
+ String::String (const String& str, int32 n)
2051
+ {
2052
+ isWide = str.isWideString ();
2053
+ if (!str.isEmpty ())
2054
+ assign (str, n);
2055
+ }
2056
+
2057
+ //-----------------------------------------------------------------------------
2058
+ String::String (const ConstString& str, int32 n)
2059
+ {
2060
+ isWide = str.isWideString ();
2061
+ if (!str.isEmpty ())
2062
+ assign (str, n);
2063
+ }
2064
+
2065
+ //-----------------------------------------------------------------------------
2066
+ String::String (const FVariant& var)
2067
+ {
2068
+ isWide = kWideStringDefault ? 1 : 0;
2069
+ fromVariant (var);
2070
+ }
2071
+
2072
+ //-----------------------------------------------------------------------------
2073
+ String::String (IString* str)
2074
+ {
2075
+ isWide = str->isWideString ();
2076
+ if (isWide)
2077
+ assign (str->getText16 ());
2078
+ else
2079
+ assign (str->getText8 ());
2080
+ }
2081
+
2082
+ //-----------------------------------------------------------------------------
2083
+ String::~String ()
2084
+ {
2085
+ if (buffer)
2086
+ resize (0, false);
2087
+ }
2088
+
2089
+ #if SMTG_CPP11_STDLIBSUPPORT
2090
+ //-----------------------------------------------------------------------------
2091
+ String::String (String&& str)
2092
+ {
2093
+ *this = std::move (str);
2094
+ }
2095
+
2096
+ //-----------------------------------------------------------------------------
2097
+ String& String::operator= (String&& str)
2098
+ {
2099
+ SMTG_ASSERT (buffer == nullptr || buffer != str.buffer);
2100
+ tryFreeBuffer ();
2101
+
2102
+ isWide = str.isWide;
2103
+ buffer = str.buffer;
2104
+ len = str.len;
2105
+ str.buffer = nullptr;
2106
+ str.len = 0;
2107
+ return *this;
2108
+ }
2109
+ #endif
2110
+
2111
+ //-----------------------------------------------------------------------------
2112
+ void String::updateLength ()
2113
+ {
2114
+ if (isWide)
2115
+ len = strlen16 (text16 ());
2116
+ else
2117
+ len = strlen8 (text8 ());
2118
+ }
2119
+
2120
+ //-----------------------------------------------------------------------------
2121
+ bool String::toWideString (uint32 sourceCodePage)
2122
+ {
2123
+ if (!isWide && buffer8 && len > 0)
2124
+ return _toWideString (buffer8, len, sourceCodePage);
2125
+ isWide = true;
2126
+ return true;
2127
+ }
2128
+
2129
+ //-----------------------------------------------------------------------------
2130
+ bool String::_toWideString (const char8* src, int32 length, uint32 sourceCodePage)
2131
+ {
2132
+ if (!isWide)
2133
+ {
2134
+ if (src && length > 0)
2135
+ {
2136
+ int32 bytesNeeded = multiByteToWideString (nullptr, src, 0, sourceCodePage) * sizeof (char16);
2137
+ if (bytesNeeded)
2138
+ {
2139
+ bytesNeeded += sizeof (char16);
2140
+ char16* newStr = (char16*)malloc (bytesNeeded);
2141
+ if (multiByteToWideString (newStr, src, length + 1, sourceCodePage) < 0)
2142
+ {
2143
+ free (newStr);
2144
+ return false;
2145
+ }
2146
+ if (buffer8)
2147
+ free (buffer8);
2148
+
2149
+ buffer16 = newStr;
2150
+ isWide = true;
2151
+ updateLength ();
2152
+ }
2153
+ else
2154
+ {
2155
+ return false;
2156
+ }
2157
+ }
2158
+ isWide = true;
2159
+ }
2160
+ return true;
2161
+ }
2162
+
2163
+ #define SMTG_STRING_CHECK_CONVERSION 1
2164
+ #define SMTG_STRING_CHECK_CONVERSION_NO_BREAK 1
2165
+
2166
+ #if SMTG_STRING_CHECK_CONVERSION_NO_BREAK
2167
+ #define SMTG_STRING_CHECK_MSG FDebugPrint
2168
+ #else
2169
+ #define SMTG_STRING_CHECK_MSG FDebugBreak
2170
+ #endif
2171
+ //-----------------------------------------------------------------------------
2172
+ bool String::checkToMultiByte (uint32 destCodePage) const
2173
+ {
2174
+ if (!isWide || isEmpty ())
2175
+ return true;
2176
+
2177
+ #if DEVELOPMENT && SMTG_STRING_CHECK_CONVERSION
2178
+ int debugLen = length ();
2179
+ int debugNonASCII = 0;
2180
+ for (int32 i = 0; i < length (); i++)
2181
+ {
2182
+ if (buffer16[i] > 127)
2183
+ ++debugNonASCII;
2184
+ }
2185
+
2186
+ String* backUp = nullptr;
2187
+ if (debugNonASCII > 0)
2188
+ backUp = NEW String (*this);
2189
+ #endif
2190
+
2191
+ // this should be avoided, since it can lead to information loss
2192
+ bool result = const_cast <String&> (*this).toMultiByte (destCodePage);
2193
+
2194
+ #if DEVELOPMENT && SMTG_STRING_CHECK_CONVERSION
2195
+ if (backUp)
2196
+ {
2197
+ String temp (*this);
2198
+ temp.toWideString (destCodePage);
2199
+
2200
+ if (temp != *backUp)
2201
+ {
2202
+ backUp->toMultiByte (kCP_Utf8);
2203
+ SMTG_STRING_CHECK_MSG ("Indirect string conversion information loss ! %d/%d non ASCII chars: \"%s\" -> \"%s\"\n", debugNonASCII, debugLen, backUp->buffer8, buffer8);
2204
+ }
2205
+ else
2206
+ SMTG_STRING_CHECK_MSG ("Indirect string potential conversion information loss ! %d/%d non ASCII chars result: \"%s\"\n", debugNonASCII, debugLen, buffer8);
2207
+
2208
+ delete backUp;
2209
+ }
2210
+ #endif
2211
+
2212
+ return result;
2213
+ }
2214
+
2215
+ //-----------------------------------------------------------------------------
2216
+ bool String::toMultiByte (uint32 destCodePage)
2217
+ {
2218
+ if (isWide)
2219
+ {
2220
+ if (buffer16 && len > 0)
2221
+ {
2222
+ int32 numChars = wideStringToMultiByte (nullptr, buffer16, 0, destCodePage) + sizeof (char8);
2223
+ char8* newStr = (char8*) malloc (numChars * sizeof (char8));
2224
+ if (wideStringToMultiByte (newStr, buffer16, numChars, destCodePage) <= 0)
2225
+ {
2226
+ free (newStr);
2227
+ return false;
2228
+ }
2229
+ free (buffer16);
2230
+ buffer8 = newStr;
2231
+ isWide = false;
2232
+ updateLength ();
2233
+ }
2234
+ isWide = false;
2235
+ }
2236
+ else if (destCodePage != kCP_Default)
2237
+ {
2238
+ if (toWideString () == false)
2239
+ return false;
2240
+ return toMultiByte (destCodePage);
2241
+ }
2242
+ return true;
2243
+ }
2244
+
2245
+ //-----------------------------------------------------------------------------
2246
+ void String::fromUTF8 (const char8* utf8String)
2247
+ {
2248
+ if (buffer8 != utf8String)
2249
+ resize (0, false);
2250
+ _toWideString (utf8String, static_cast<int32> (strlen (utf8String)), kCP_Utf8);
2251
+ }
2252
+
2253
+ //-----------------------------------------------------------------------------
2254
+ bool String::normalize (UnicodeNormalization n)
2255
+ {
2256
+ if (isWide == false)
2257
+ return false;
2258
+
2259
+ if (buffer16 == nullptr)
2260
+ return true;
2261
+
2262
+ #if SMTG_OS_WINDOWS
2263
+ #ifdef UNICODE
2264
+ if (n != kUnicodeNormC)
2265
+ return false;
2266
+
2267
+ uint32 normCharCount = static_cast<uint32> (FoldString (MAP_PRECOMPOSED, wscast (buffer16), len, nullptr, 0));
2268
+ if (normCharCount == len)
2269
+ return true;
2270
+
2271
+ char16* newString = (char16*)malloc ((normCharCount + 1) * sizeof (char16));
2272
+ uint32 converterCount = static_cast<uint32> (FoldString (MAP_PRECOMPOSED, wscast (buffer16), len, wscast (newString), normCharCount + 1));
2273
+ if (converterCount != normCharCount)
2274
+ {
2275
+ free (newString);
2276
+ return false;
2277
+ }
2278
+ newString [converterCount] = 0;
2279
+ free (buffer16);
2280
+ buffer16 = newString;
2281
+ updateLength ();
2282
+ return true;
2283
+ #else
2284
+ return false;
2285
+ #endif
2286
+
2287
+ #elif SMTG_OS_MACOS
2288
+ CFMutableStringRef origStr = (CFMutableStringRef)toCFStringRef (0xFFFF, true);
2289
+ if (origStr)
2290
+ {
2291
+ CFStringNormalizationForm normForm = kCFStringNormalizationFormD;
2292
+ switch (n)
2293
+ {
2294
+ case kUnicodeNormC: normForm = kCFStringNormalizationFormC; break;
2295
+ case kUnicodeNormD: normForm = kCFStringNormalizationFormD; break;
2296
+ case kUnicodeNormKC: normForm = kCFStringNormalizationFormKC; break;
2297
+ case kUnicodeNormKD: normForm = kCFStringNormalizationFormKD; break;
2298
+ }
2299
+ CFStringNormalize (origStr, normForm);
2300
+ bool result = fromCFStringRef (origStr);
2301
+ CFRelease (origStr);
2302
+ return result;
2303
+ }
2304
+ return false;
2305
+ #else
2306
+ return false;
2307
+ #endif
2308
+ }
2309
+
2310
+ //-----------------------------------------------------------------------------
2311
+ void String::tryFreeBuffer ()
2312
+ {
2313
+ if (buffer)
2314
+ {
2315
+ free (buffer);
2316
+ buffer = nullptr;
2317
+ }
2318
+ }
2319
+
2320
+ //-----------------------------------------------------------------------------
2321
+ bool String::resize (uint32 newLength, bool wide, bool fill)
2322
+ {
2323
+ if (newLength == 0)
2324
+ {
2325
+ tryFreeBuffer ();
2326
+ len = 0;
2327
+ isWide = wide ? 1 : 0;
2328
+ }
2329
+ else
2330
+ {
2331
+ size_t newCharSize = wide ? sizeof (char16) : sizeof (char8);
2332
+ size_t oldCharSize = (isWide != 0) ? sizeof (char16) : sizeof (char8);
2333
+
2334
+ size_t newBufferSize = (newLength + 1) * newCharSize;
2335
+ size_t oldBufferSize = (len + 1) * oldCharSize;
2336
+
2337
+ isWide = wide ? 1 : 0;
2338
+
2339
+ if (buffer)
2340
+ {
2341
+ if (newBufferSize != oldBufferSize)
2342
+ {
2343
+ void* newstr = realloc (buffer, newBufferSize);
2344
+ if (newstr == nullptr)
2345
+ return false;
2346
+ buffer = newstr;
2347
+ if (isWide)
2348
+ buffer16[newLength] = 0;
2349
+ else
2350
+ buffer8[newLength] = 0;
2351
+ }
2352
+ else if (wide && newCharSize != oldCharSize)
2353
+ buffer16[newLength] = 0;
2354
+ }
2355
+ else
2356
+ {
2357
+ void* newstr = malloc (newBufferSize);
2358
+ if (newstr == nullptr)
2359
+ return false;
2360
+ buffer = newstr;
2361
+ if (isWide)
2362
+ {
2363
+ buffer16[0] = 0;
2364
+ buffer16[newLength] = 0;
2365
+ }
2366
+ else
2367
+ {
2368
+ buffer8[0] = 0;
2369
+ buffer8[newLength] = 0;
2370
+ }
2371
+ }
2372
+
2373
+ if (fill && len < newLength && buffer)
2374
+ {
2375
+ if (isWide)
2376
+ {
2377
+ char16 c = ' ';
2378
+ for (uint32 i = len; i < newLength; i++)
2379
+ buffer16 [i] = c;
2380
+ }
2381
+ else
2382
+ {
2383
+ memset (buffer8 + len, ' ', newLength - len);
2384
+ }
2385
+ }
2386
+ }
2387
+ return true;
2388
+ }
2389
+
2390
+ //-----------------------------------------------------------------------------
2391
+ bool String::setChar8 (uint32 index, char8 c)
2392
+ {
2393
+ if (index == len && c == 0)
2394
+ return true;
2395
+
2396
+ if (index >= len)
2397
+ {
2398
+ if (c == 0)
2399
+ {
2400
+ if (resize (index, isWide, true) == false)
2401
+ return false;
2402
+ len = index;
2403
+ return true;
2404
+ }
2405
+
2406
+ if (resize (index + 1, isWide, true) == false)
2407
+ return false;
2408
+ len = index + 1;
2409
+ }
2410
+
2411
+ if (index < len && buffer)
2412
+ {
2413
+ if (isWide)
2414
+ {
2415
+ if (c == 0)
2416
+ buffer16[index] = 0;
2417
+ else
2418
+ {
2419
+ char8 src[] = {c, 0};
2420
+ char16 dest[8] = {0};
2421
+ if (multiByteToWideString (dest, src, 2) > 0)
2422
+ buffer16[index] = dest[0];
2423
+ }
2424
+ SMTG_ASSERT (buffer16[len] == 0)
2425
+ }
2426
+ else
2427
+ {
2428
+ buffer8[index] = c;
2429
+ SMTG_ASSERT (buffer8[len] == 0)
2430
+ }
2431
+
2432
+ if (c == 0)
2433
+ updateLength ();
2434
+
2435
+ return true;
2436
+ }
2437
+ return false;
2438
+ }
2439
+
2440
+ //-----------------------------------------------------------------------------
2441
+ bool String::setChar16 (uint32 index, char16 c)
2442
+ {
2443
+ if (index == len && c == 0)
2444
+ return true;
2445
+
2446
+ if (index >= len)
2447
+ {
2448
+ if (c == 0)
2449
+ {
2450
+ if (resize (index, isWide, true) == false)
2451
+ return false;
2452
+ len = index;
2453
+ return true;
2454
+ }
2455
+ if (resize (index + 1, isWide, true) == false)
2456
+ return false;
2457
+ len = index + 1;
2458
+ }
2459
+
2460
+ if (index < len && buffer)
2461
+ {
2462
+ if (isWide)
2463
+ {
2464
+ buffer16[index] = c;
2465
+ SMTG_ASSERT (buffer16[len] == 0)
2466
+ }
2467
+ else
2468
+ {
2469
+ SMTG_ASSERT (buffer8[len] == 0)
2470
+ char16 src[] = {c, 0};
2471
+ char8 dest[8] = {0};
2472
+ if (wideStringToMultiByte (dest, src, 2) > 0 && dest[1] == 0)
2473
+ buffer8[index] = dest[0];
2474
+ else
2475
+ return false;
2476
+ }
2477
+
2478
+ if (c == 0)
2479
+ updateLength ();
2480
+
2481
+ return true;
2482
+ }
2483
+ return false;
2484
+ }
2485
+
2486
+ //-----------------------------------------------------------------------------
2487
+ String& String::assign (const ConstString& str, int32 n)
2488
+ {
2489
+ if (str.isWideString ())
2490
+ return assign (str.text16 (), n < 0 ? str.length () : n);
2491
+ return assign (str.text8 (), n < 0 ? str.length () : n);
2492
+ }
2493
+
2494
+ //-----------------------------------------------------------------------------
2495
+ String& String::assign (const char8* str, int32 n, bool isTerminated)
2496
+ {
2497
+ if (str == buffer8)
2498
+ return *this;
2499
+
2500
+ if (isTerminated)
2501
+ {
2502
+ uint32 stringLength = (uint32)((str) ? strlen (str) : 0);
2503
+ n = n < 0 ? stringLength : Min<uint32> (n, stringLength);
2504
+ }
2505
+ else if (n < 0)
2506
+ return *this;
2507
+
2508
+ if (resize (n, false))
2509
+ {
2510
+ if (buffer8 && n > 0 && str)
2511
+ {
2512
+ memcpy (buffer8, str, n * sizeof (char8));
2513
+ SMTG_ASSERT (buffer8[n] == 0)
2514
+ }
2515
+ isWide = 0;
2516
+ len = n;
2517
+ }
2518
+ return *this;
2519
+ }
2520
+
2521
+ //-----------------------------------------------------------------------------
2522
+ String& String::assign (const char16* str, int32 n, bool isTerminated)
2523
+ {
2524
+ if (str == buffer16)
2525
+ return *this;
2526
+
2527
+ if (isTerminated)
2528
+ {
2529
+ uint32 stringLength = (uint32)((str) ? strlen16 (str) : 0);
2530
+ n = n < 0 ? stringLength : Min<uint32> (n, stringLength);
2531
+ }
2532
+ else if (n < 0)
2533
+ return *this;
2534
+
2535
+ if (resize (n, true))
2536
+ {
2537
+ if (buffer16 && n > 0 && str)
2538
+ {
2539
+ memcpy (buffer16, str, n * sizeof (char16));
2540
+ SMTG_ASSERT (buffer16[n] == 0)
2541
+ }
2542
+ isWide = 1;
2543
+ len = n;
2544
+ }
2545
+ return *this;
2546
+ }
2547
+
2548
+ //-----------------------------------------------------------------------------
2549
+ String& String::assign (char8 c, int32 n)
2550
+ {
2551
+ if (resize (n, false))
2552
+ {
2553
+ if (buffer8 && n > 0)
2554
+ {
2555
+ memset (buffer8, c, n * sizeof (char8));
2556
+ SMTG_ASSERT (buffer8[n] == 0)
2557
+ }
2558
+ isWide = 0;
2559
+ len = n;
2560
+ }
2561
+ return *this;
2562
+
2563
+ }
2564
+
2565
+ //-----------------------------------------------------------------------------
2566
+ String& String::assign (char16 c, int32 n)
2567
+ {
2568
+ if (resize (n, true))
2569
+ {
2570
+ if (buffer && n > 0)
2571
+ {
2572
+ for (int32 i = 0; i < n; i++)
2573
+ buffer16[i] = c;
2574
+ SMTG_ASSERT (buffer16[n] == 0)
2575
+ }
2576
+ isWide = 1;
2577
+ len = n;
2578
+ }
2579
+ return *this;
2580
+ }
2581
+
2582
+ //-----------------------------------------------------------------------------
2583
+ String& String::append (const ConstString& str, int32 n)
2584
+ {
2585
+ if (str.isWideString ())
2586
+ return append (str.text16 (), n);
2587
+ return append (str.text8 (), n);
2588
+ }
2589
+
2590
+ //-----------------------------------------------------------------------------
2591
+ String& String::append (const char8* str, int32 n)
2592
+ {
2593
+ if (str == buffer8)
2594
+ return *this;
2595
+
2596
+ if (len == 0)
2597
+ return assign (str, n);
2598
+
2599
+ if (isWide)
2600
+ {
2601
+ String tmp (str);
2602
+ if (tmp.toWideString () == false)
2603
+ return *this;
2604
+
2605
+ return append (tmp.buffer16, n);
2606
+ }
2607
+
2608
+ uint32 stringLength = (uint32)((str) ? strlen (str) : 0);
2609
+ n = n < 0 ? stringLength : Min<uint32> (n, stringLength);
2610
+
2611
+ if (n > 0)
2612
+ {
2613
+ int32 newlen = n + len;
2614
+ if (!resize (newlen, false))
2615
+ return *this;
2616
+
2617
+ if (buffer && str)
2618
+ {
2619
+ memcpy (buffer8 + len, str, n * sizeof (char8));
2620
+ SMTG_ASSERT (buffer8[newlen] == 0)
2621
+ }
2622
+
2623
+ len += n;
2624
+ }
2625
+ return *this;
2626
+ }
2627
+
2628
+ //-----------------------------------------------------------------------------
2629
+ String& String::append (const char16* str, int32 n)
2630
+ {
2631
+ if (str == buffer16)
2632
+ return *this;
2633
+
2634
+ if (len == 0)
2635
+ return assign (str, n);
2636
+
2637
+ if (!isWide)
2638
+ {
2639
+ if (toWideString () == false)
2640
+ return *this;
2641
+ }
2642
+
2643
+ uint32 stringLength = (uint32)((str) ? strlen16 (str) : 0);
2644
+ n = n < 0 ? stringLength : Min<uint32> (n, stringLength);
2645
+
2646
+ if (n > 0)
2647
+ {
2648
+ int32 newlen = n + len;
2649
+ if (!resize (newlen, true))
2650
+ return *this;
2651
+
2652
+ if (buffer16 && str)
2653
+ {
2654
+ memcpy (buffer16 + len, str, n * sizeof (char16));
2655
+ SMTG_ASSERT (buffer16[newlen] == 0)
2656
+ }
2657
+
2658
+ len += n;
2659
+ }
2660
+ return *this;
2661
+ }
2662
+
2663
+ //-----------------------------------------------------------------------------
2664
+ String& String::append (const char8 c, int32 n)
2665
+ {
2666
+ char8 str[] = {c, 0};
2667
+ if (n == 1)
2668
+ {
2669
+ return append (str, 1);
2670
+ }
2671
+ if (n > 1)
2672
+ {
2673
+ if (isWide)
2674
+ {
2675
+ String tmp (str);
2676
+ if (tmp.toWideString () == false)
2677
+ return *this;
2678
+
2679
+ return append (tmp.buffer16[0], n);
2680
+ }
2681
+
2682
+ int32 newlen = n + len;
2683
+ if (!resize (newlen, false))
2684
+ return *this;
2685
+
2686
+ if (buffer)
2687
+ {
2688
+ memset (buffer8 + len, c, n * sizeof (char8));
2689
+ SMTG_ASSERT (buffer8[newlen] == 0)
2690
+ }
2691
+
2692
+ len += n;
2693
+ }
2694
+ return *this;
2695
+ }
2696
+
2697
+ //-----------------------------------------------------------------------------
2698
+ String& String::append (const char16 c, int32 n)
2699
+ {
2700
+ if (n == 1)
2701
+ {
2702
+ char16 str[] = {c, 0};
2703
+ return append (str, 1);
2704
+ }
2705
+ if (n > 1)
2706
+ {
2707
+ if (!isWide)
2708
+ {
2709
+ if (toWideString () == false)
2710
+ return *this;
2711
+ }
2712
+
2713
+ int32 newlen = n + len;
2714
+ if (!resize (newlen, true))
2715
+ return *this;
2716
+
2717
+ if (buffer16)
2718
+ {
2719
+ for (int32 i = len; i < newlen; i++)
2720
+ buffer16[i] = c;
2721
+ SMTG_ASSERT (buffer16[newlen] == 0)
2722
+ }
2723
+
2724
+ len += n;
2725
+ }
2726
+ return *this;
2727
+ }
2728
+
2729
+ //-----------------------------------------------------------------------------
2730
+ String& String::insertAt (uint32 idx, const ConstString& str, int32 n)
2731
+ {
2732
+ if (str.isWideString ())
2733
+ return insertAt (idx, str.text16 (), n);
2734
+ return insertAt (idx, str.text8 (), n);
2735
+ }
2736
+
2737
+ //-----------------------------------------------------------------------------
2738
+ String& String::insertAt (uint32 idx, const char8* str, int32 n)
2739
+ {
2740
+ if (idx > len)
2741
+ return *this;
2742
+
2743
+ if (isWide)
2744
+ {
2745
+ String tmp (str);
2746
+ if (tmp.toWideString () == false)
2747
+ return *this;
2748
+ return insertAt (idx, tmp.buffer16, n);
2749
+ }
2750
+
2751
+ uint32 stringLength = (uint32)((str) ? strlen (str) : 0);
2752
+ n = n < 0 ? stringLength : Min<uint32> (n, stringLength);
2753
+
2754
+ if (n > 0)
2755
+ {
2756
+ int32 newlen = len + n;
2757
+ if (!resize (newlen, false))
2758
+ return *this;
2759
+
2760
+ if (buffer && str)
2761
+ {
2762
+ if (idx < len)
2763
+ memmove (buffer8 + idx + n, buffer8 + idx, (len - idx) * sizeof (char8));
2764
+ memcpy (buffer8 + idx, str, n * sizeof (char8));
2765
+ SMTG_ASSERT (buffer8[newlen] == 0)
2766
+ }
2767
+
2768
+ len += n;
2769
+ }
2770
+ return *this;
2771
+ }
2772
+
2773
+ //-----------------------------------------------------------------------------
2774
+ String& String::insertAt (uint32 idx, const char16* str, int32 n)
2775
+ {
2776
+ if (idx > len)
2777
+ return *this;
2778
+
2779
+ if (!isWide)
2780
+ {
2781
+ if (toWideString () == false)
2782
+ return *this;
2783
+ }
2784
+
2785
+ uint32 stringLength = (uint32)((str) ? strlen16 (str) : 0);
2786
+ n = n < 0 ? stringLength : Min<uint32> (n, stringLength);
2787
+
2788
+ if (n > 0)
2789
+ {
2790
+ int32 newlen = len + n;
2791
+ if (!resize (newlen, true))
2792
+ return *this;
2793
+
2794
+ if (buffer && str)
2795
+ {
2796
+ if (idx < len)
2797
+ memmove (buffer16 + idx + n, buffer16 + idx, (len - idx) * sizeof (char16));
2798
+ memcpy (buffer16 + idx, str, n * sizeof (char16));
2799
+ SMTG_ASSERT (buffer16[newlen] == 0)
2800
+ }
2801
+
2802
+ len += n;
2803
+ }
2804
+ return *this;
2805
+ }
2806
+
2807
+ //-----------------------------------------------------------------------------
2808
+ String& String::replace (uint32 idx, int32 n1, const ConstString& str, int32 n2)
2809
+ {
2810
+ if (str.isWideString ())
2811
+ return replace (idx, n1, str.text16 (), n2);
2812
+ return replace (idx, n1, str.text8 (), n2);
2813
+ }
2814
+
2815
+ // "replace" replaces n1 number of characters at the specified index with
2816
+ // n2 characters from the specified string.
2817
+ //-----------------------------------------------------------------------------
2818
+ String& String::replace (uint32 idx, int32 n1, const char8* str, int32 n2)
2819
+ {
2820
+ if (idx > len || str == nullptr)
2821
+ return *this;
2822
+
2823
+ if (isWide)
2824
+ {
2825
+ String tmp (str);
2826
+ if (tmp.toWideString () == false)
2827
+ return *this;
2828
+ if (tmp.length () == 0 || n2 == 0)
2829
+ return remove (idx, n1);
2830
+ return replace (idx, n1, tmp.buffer16, n2);
2831
+ }
2832
+
2833
+ if (n1 < 0 || idx + n1 > len)
2834
+ n1 = len - idx;
2835
+ if (n1 == 0)
2836
+ return *this;
2837
+
2838
+ uint32 stringLength = (uint32)((str) ? strlen (str) : 0);
2839
+ n2 = n2 < 0 ? stringLength : Min<uint32> (n2, stringLength);
2840
+
2841
+ uint32 newlen = len - n1 + n2;
2842
+ if (newlen > len)
2843
+ if (!resize (newlen, false))
2844
+ return *this;
2845
+
2846
+ if (buffer)
2847
+ {
2848
+ memmove (buffer8 + idx + n2, buffer8 + idx + n1, (len - (idx + n1)) * sizeof (char8));
2849
+ memcpy (buffer8 + idx, str, n2 * sizeof (char8));
2850
+ buffer8[newlen] = 0; // cannot be removed because resize is not called called in all cases (newlen > len)
2851
+ }
2852
+
2853
+ len = newlen;
2854
+
2855
+ return *this;
2856
+ }
2857
+
2858
+ //-----------------------------------------------------------------------------
2859
+ String& String::replace (uint32 idx, int32 n1, const char16* str, int32 n2)
2860
+ {
2861
+ if (idx > len || str == nullptr)
2862
+ return *this;
2863
+
2864
+ if (!isWide)
2865
+ {
2866
+ if (toWideString () == false)
2867
+ return *this;
2868
+ }
2869
+
2870
+ if (n1 < 0 || idx + n1 > len)
2871
+ n1 = len - idx;
2872
+ if (n1 == 0)
2873
+ return *this;
2874
+
2875
+ uint32 stringLength = (uint32)((str) ? strlen16 (str) : 0);
2876
+ n2 = n2 < 0 ? stringLength : Min<uint32> (n2, stringLength);
2877
+
2878
+ uint32 newlen = len - n1 + n2;
2879
+ if (newlen > len)
2880
+ if (!resize (newlen, true))
2881
+ return *this;
2882
+
2883
+ if (buffer)
2884
+ {
2885
+ memmove (buffer16 + idx + n2, buffer16 + idx + n1, (len - (idx + n1)) * sizeof (char16));
2886
+ memcpy (buffer16 + idx, str, n2 * sizeof (char16));
2887
+ buffer16[newlen] = 0; // cannot be removed because resize is not called called in all cases (newlen > len)
2888
+ }
2889
+
2890
+ len = newlen;
2891
+
2892
+ return *this;
2893
+ }
2894
+
2895
+ //-----------------------------------------------------------------------------
2896
+ int32 String::replace (const char8* toReplace, const char8* toReplaceWith, bool all, CompareMode m)
2897
+ {
2898
+ if (toReplace == nullptr || toReplaceWith == nullptr)
2899
+ return 0;
2900
+
2901
+ int32 result = 0;
2902
+
2903
+ int32 idx = findFirst (toReplace, -1, m);
2904
+ if (idx > -1)
2905
+ {
2906
+ int32 toReplaceLen = static_cast<int32> (strlen (toReplace));
2907
+ int32 toReplaceWithLen = static_cast<int32> (strlen (toReplaceWith));
2908
+ while (idx > -1)
2909
+ {
2910
+ replace (idx, toReplaceLen, toReplaceWith, toReplaceWithLen);
2911
+ result++;
2912
+
2913
+ if (all)
2914
+ idx = findNext (idx + toReplaceWithLen , toReplace, -1, m);
2915
+ else
2916
+ break;
2917
+ }
2918
+ }
2919
+
2920
+ return result;
2921
+ }
2922
+
2923
+ //-----------------------------------------------------------------------------
2924
+ int32 String::replace (const char16* toReplace, const char16* toReplaceWith, bool all, CompareMode m)
2925
+ {
2926
+ if (toReplace == nullptr || toReplaceWith == nullptr)
2927
+ return 0;
2928
+
2929
+ int32 result = 0;
2930
+
2931
+ int32 idx = findFirst (toReplace, -1, m);
2932
+ if (idx > -1)
2933
+ {
2934
+ int32 toReplaceLen = strlen16 (toReplace);
2935
+ int32 toReplaceWithLen = strlen16 (toReplaceWith);
2936
+ while (idx > -1)
2937
+ {
2938
+ replace (idx, toReplaceLen, toReplaceWith, toReplaceWithLen);
2939
+ result++;
2940
+
2941
+ if (all)
2942
+ idx = findNext (idx + toReplaceWithLen, toReplace, -1, m);
2943
+ else
2944
+ break;
2945
+ }
2946
+ }
2947
+ return result;
2948
+ }
2949
+
2950
+ //-----------------------------------------------------------------------------
2951
+ template <class T>
2952
+ static bool performReplace (T* str, const T* toReplace, T toReplaceBy)
2953
+ {
2954
+ bool anyReplace = false;
2955
+ T* p = str;
2956
+ while (*p)
2957
+ {
2958
+ const T* rep = toReplace;
2959
+ while (*rep)
2960
+ {
2961
+ if (*p == *rep)
2962
+ {
2963
+ *p = toReplaceBy;
2964
+ anyReplace = true;
2965
+ break;
2966
+ }
2967
+ rep++;
2968
+ }
2969
+ p++;
2970
+ }
2971
+ return anyReplace;
2972
+ }
2973
+
2974
+ //-----------------------------------------------------------------------------
2975
+ bool String::replaceChars8 (const char8* toReplace, char8 toReplaceBy)
2976
+ {
2977
+ if (isEmpty ())
2978
+ return false;
2979
+
2980
+ if (isWide)
2981
+ {
2982
+ String toReplaceW (toReplace);
2983
+ if (toReplaceW.toWideString () == false)
2984
+ return false;
2985
+
2986
+ char8 src[] = {toReplaceBy, 0};
2987
+ char16 dest[2] = {0};
2988
+ if (multiByteToWideString (dest, src, 2) > 0)
2989
+ {
2990
+ return replaceChars16 (toReplaceW.text16 (), dest[0]);
2991
+ }
2992
+ return false;
2993
+ }
2994
+
2995
+ if (toReplaceBy == 0)
2996
+ toReplaceBy = ' ';
2997
+
2998
+ return performReplace<char8> (buffer8, toReplace, toReplaceBy);
2999
+ }
3000
+
3001
+ //-----------------------------------------------------------------------------
3002
+ bool String::replaceChars16 (const char16* toReplace, char16 toReplaceBy)
3003
+ {
3004
+ if (isEmpty ())
3005
+ return false;
3006
+
3007
+ if (!isWide)
3008
+ {
3009
+ String toReplaceA (toReplace);
3010
+ if (toReplaceA.toMultiByte () == false)
3011
+ return false;
3012
+
3013
+ if (toReplaceA.length () > 1)
3014
+ {
3015
+ SMTG_WARNING("cannot replace non ASCII chars on non Wide String")
3016
+ return false;
3017
+ }
3018
+
3019
+ char16 src[] = {toReplaceBy, 0};
3020
+ char8 dest[8] = {0};
3021
+ if (wideStringToMultiByte (dest, src, 2) > 0 && dest[1] == 0)
3022
+ return replaceChars8 (toReplaceA.text8 (), dest[0]);
3023
+
3024
+ return false;
3025
+ }
3026
+
3027
+ if (toReplaceBy == 0)
3028
+ toReplaceBy = STR16 (' ');
3029
+
3030
+ return performReplace<char16> (buffer16, toReplace, toReplaceBy);
3031
+ }
3032
+
3033
+ // "remove" removes the specified number of characters from the string
3034
+ // starting at the specified index.
3035
+ //-----------------------------------------------------------------------------
3036
+ String& String::remove (uint32 idx, int32 n)
3037
+ {
3038
+ if (isEmpty () || idx >= len || n == 0)
3039
+ return *this;
3040
+
3041
+ if ((idx + n > len) || n < 0)
3042
+ n = len - idx;
3043
+ else
3044
+ {
3045
+ int32 toMove = len - idx - n;
3046
+ if (buffer)
3047
+ {
3048
+ if (isWide)
3049
+ memmove (buffer16 + idx, buffer16 + idx + n, toMove * sizeof (char16));
3050
+ else
3051
+ memmove (buffer8 + idx, buffer8 + idx + n, toMove * sizeof (char8));
3052
+ }
3053
+ }
3054
+
3055
+ resize (len - n, isWide);
3056
+ updateLength ();
3057
+
3058
+ return *this;
3059
+ }
3060
+
3061
+ //-----------------------------------------------------------------------------
3062
+ bool String::removeSubString (const ConstString& subString, bool allOccurences)
3063
+ {
3064
+ bool removed = false;
3065
+ while (!removed || allOccurences)
3066
+ {
3067
+ int32 idx = findFirst (subString);
3068
+ if (idx < 0)
3069
+ break;
3070
+ remove (idx, subString.length ());
3071
+ removed = true;
3072
+ }
3073
+ return removed;
3074
+ }
3075
+
3076
+ //-----------------------------------------------------------------------------
3077
+ template <class T, class F>
3078
+ static uint32 performTrim (T* str, uint32 length, F func, bool funcResult)
3079
+ {
3080
+ uint32 toRemoveAtHead = 0;
3081
+ uint32 toRemoveAtTail = 0;
3082
+
3083
+ T* p = str;
3084
+
3085
+ while ((*p) && ((func (*p) != 0) == funcResult))
3086
+ p++;
3087
+
3088
+ toRemoveAtHead = static_cast<uint32> (p - str);
3089
+
3090
+ if (toRemoveAtHead < length)
3091
+ {
3092
+ p = str + length - 1;
3093
+
3094
+ while (((func (*p) != 0) == funcResult) && (p > str))
3095
+ {
3096
+ p--;
3097
+ toRemoveAtTail++;
3098
+ }
3099
+ }
3100
+
3101
+ uint32 newLength = length - (toRemoveAtHead + toRemoveAtTail);
3102
+ if (newLength != length)
3103
+ {
3104
+ if (toRemoveAtHead)
3105
+ memmove (str, str + toRemoveAtHead, newLength * sizeof (T));
3106
+ }
3107
+ return newLength;
3108
+ }
3109
+
3110
+ // "trim" trims the leading and trailing unwanted characters from the string.
3111
+ //-----------------------------------------------------------------------------
3112
+ bool String::trim (String::CharGroup group)
3113
+ {
3114
+ if (isEmpty ())
3115
+ return false;
3116
+
3117
+ uint32 newLength;
3118
+
3119
+ switch (group)
3120
+ {
3121
+ case kSpace:
3122
+ if (isWide)
3123
+ newLength = performTrim<char16> (buffer16, len, iswspace, true);
3124
+ else
3125
+ newLength = performTrim<char8> (buffer8, len, isspace, true);
3126
+ break;
3127
+
3128
+ case kNotAlphaNum:
3129
+ if (isWide)
3130
+ newLength = performTrim<char16> (buffer16, len, iswalnum, false);
3131
+ else
3132
+ newLength = performTrim<char8> (buffer8, len, isalnum, false);
3133
+ break;
3134
+
3135
+ case kNotAlpha:
3136
+ if (isWide)
3137
+ newLength = performTrim<char16> (buffer16, len, iswalpha, false);
3138
+ else
3139
+ newLength = performTrim<char8> (buffer8, len, isalpha, false);
3140
+ break;
3141
+
3142
+ default: // Undefined enum value
3143
+ return false;
3144
+ }
3145
+
3146
+ if (newLength != len)
3147
+ {
3148
+ resize (newLength, isWide);
3149
+ len = newLength;
3150
+ return true;
3151
+ }
3152
+ return false;
3153
+ }
3154
+
3155
+ //-----------------------------------------------------------------------------
3156
+ template <class T, class F>
3157
+ static uint32 performRemove (T* str, uint32 length, F func, bool funcResult)
3158
+ {
3159
+ T* p = str;
3160
+
3161
+ while (*p)
3162
+ {
3163
+ if ((func (*p) != 0) == funcResult)
3164
+ {
3165
+ size_t toMove = length - (p - str);
3166
+ memmove (p, p + 1, toMove * sizeof (T));
3167
+ length--;
3168
+ }
3169
+ else
3170
+ p++;
3171
+ }
3172
+ return length;
3173
+ }
3174
+ //-----------------------------------------------------------------------------
3175
+ void String::removeChars (CharGroup group)
3176
+ {
3177
+ if (isEmpty ())
3178
+ return;
3179
+
3180
+ uint32 newLength;
3181
+
3182
+ switch (group)
3183
+ {
3184
+ case kSpace:
3185
+ if (isWide)
3186
+ newLength = performRemove<char16> (buffer16, len, iswspace, true);
3187
+ else
3188
+ newLength = performRemove<char8> (buffer8, len, isspace, true);
3189
+ break;
3190
+
3191
+ case kNotAlphaNum:
3192
+ if (isWide)
3193
+ newLength = performRemove<char16> (buffer16, len, iswalnum, false);
3194
+ else
3195
+ newLength = performRemove<char8> (buffer8, len, isalnum, false);
3196
+ break;
3197
+
3198
+ case kNotAlpha:
3199
+ if (isWide)
3200
+ newLength = performRemove<char16> (buffer16, len, iswalpha, false);
3201
+ else
3202
+ newLength = performRemove<char8> (buffer8, len, isalpha, false);
3203
+ break;
3204
+
3205
+ default: // Undefined enum value
3206
+ return;
3207
+ }
3208
+
3209
+ if (newLength != len)
3210
+ {
3211
+ resize (newLength, isWide);
3212
+ len = newLength;
3213
+ }
3214
+ }
3215
+
3216
+ //-----------------------------------------------------------------------------
3217
+ template <class T>
3218
+ static uint32 performRemoveChars (T* str, uint32 length, const T* toRemove)
3219
+ {
3220
+ T* p = str;
3221
+
3222
+ while (*p)
3223
+ {
3224
+ bool found = false;
3225
+ const T* rem = toRemove;
3226
+ while (*rem)
3227
+ {
3228
+ if (*p == *rem)
3229
+ {
3230
+ found = true;
3231
+ break;
3232
+ }
3233
+ rem++;
3234
+ }
3235
+
3236
+ if (found)
3237
+ {
3238
+ size_t toMove = length - (p - str);
3239
+ memmove (p, p + 1, toMove * sizeof (T));
3240
+ length--;
3241
+ }
3242
+ else
3243
+ p++;
3244
+ }
3245
+ return length;
3246
+ }
3247
+
3248
+ //-----------------------------------------------------------------------------
3249
+ bool String::removeChars8 (const char8* toRemove)
3250
+ {
3251
+ if (isEmpty () || toRemove == nullptr)
3252
+ return true;
3253
+
3254
+ if (isWide)
3255
+ {
3256
+ String wStr (toRemove);
3257
+ if (wStr.toWideString () == false)
3258
+ return false;
3259
+ return removeChars16 (wStr.text16 ());
3260
+ }
3261
+
3262
+ uint32 newLength = performRemoveChars<char8> (buffer8, len, toRemove);
3263
+
3264
+ if (newLength != len)
3265
+ {
3266
+ resize (newLength, false);
3267
+ len = newLength;
3268
+ }
3269
+ return true;
3270
+ }
3271
+
3272
+ //-----------------------------------------------------------------------------
3273
+ bool String::removeChars16 (const char16* toRemove)
3274
+ {
3275
+ if (isEmpty () || toRemove == nullptr)
3276
+ return true;
3277
+
3278
+ if (!isWide)
3279
+ {
3280
+ String str8 (toRemove);
3281
+ if (str8.toMultiByte () == false)
3282
+ return false;
3283
+ return removeChars8 (str8.text8 ());
3284
+ }
3285
+
3286
+ uint32 newLength = performRemoveChars<char16> (buffer16, len, toRemove);
3287
+
3288
+ if (newLength != len)
3289
+ {
3290
+ resize (newLength, true);
3291
+ len = newLength;
3292
+ }
3293
+ return true;
3294
+ }
3295
+
3296
+ //-----------------------------------------------------------------------------
3297
+ String& String::printf (const char8* format, ...)
3298
+ {
3299
+ char8 string[kPrintfBufferSize];
3300
+
3301
+ va_list marker;
3302
+ va_start (marker, format);
3303
+
3304
+ vsnprintf (string, kPrintfBufferSize-1, format, marker);
3305
+ return assign (string);
3306
+ }
3307
+
3308
+
3309
+ //-----------------------------------------------------------------------------
3310
+ String& String::printf (const char16* format, ...)
3311
+ {
3312
+ char16 string[kPrintfBufferSize];
3313
+
3314
+ va_list marker;
3315
+ va_start (marker, format);
3316
+
3317
+ vsnwprintf (string, kPrintfBufferSize-1, format, marker);
3318
+ return assign (string);
3319
+ }
3320
+
3321
+ //-----------------------------------------------------------------------------
3322
+ String& String::vprintf (const char8* format, va_list args)
3323
+ {
3324
+ char8 string[kPrintfBufferSize];
3325
+
3326
+ vsnprintf (string, kPrintfBufferSize-1, format, args);
3327
+ return assign (string);
3328
+ }
3329
+
3330
+ //-----------------------------------------------------------------------------
3331
+ String& String::vprintf (const char16* format, va_list args)
3332
+ {
3333
+ char16 string[kPrintfBufferSize];
3334
+
3335
+ vsnwprintf (string, kPrintfBufferSize-1, format, args);
3336
+ return assign (string);
3337
+ }
3338
+
3339
+ //-----------------------------------------------------------------------------
3340
+ String& String::printInt64 (int64 value)
3341
+ {
3342
+ if (isWide)
3343
+ {
3344
+ #if SMTG_CPP11
3345
+ return String::printf (STR("%") STR(FORMAT_INT64A), value);
3346
+ #else
3347
+ return String::printf (STR("%" FORMAT_INT64A), value);
3348
+ #endif
3349
+ }
3350
+ else
3351
+ return String::printf ("%" FORMAT_INT64A, value);
3352
+ }
3353
+
3354
+ //-----------------------------------------------------------------------------
3355
+ String& String::printFloat (double value, uint32 maxPrecision)
3356
+ {
3357
+ static constexpr auto kMaxAfterCommaResolution = 16;
3358
+ // escape point for integer values, avoid unnecessary complexity later on
3359
+ const bool withinInt64Boundaries = value <= std::numeric_limits<int64>::max () && value >= std::numeric_limits<int64>::lowest ();
3360
+ if (withinInt64Boundaries && (maxPrecision == 0 || std::round (value) == value))
3361
+ return printInt64 (value);
3362
+
3363
+ const auto absValue = std::abs (value);
3364
+ const uint32 valueExponent = absValue >= 1 ? std::log10 (absValue) : -std::log10 (absValue) + 1;
3365
+
3366
+ maxPrecision = std::min<uint32> (kMaxAfterCommaResolution - valueExponent, maxPrecision);
3367
+
3368
+ if (isWide)
3369
+ printf (STR ("%s%dlf"), STR ("%."), maxPrecision);
3370
+ else
3371
+ printf ("%s%dlf", "%.", maxPrecision);
3372
+
3373
+ if (isWide)
3374
+ printf (text16 (), value);
3375
+ else
3376
+ printf (text8 (), value);
3377
+
3378
+ // trim trail zeros
3379
+ for (int32 i = length () - 1; i >= 0; i--)
3380
+ {
3381
+ if (isWide && testChar16 (i, '0') || testChar8 (i, '0'))
3382
+ remove (i);
3383
+ else if (isWide && testChar16(i,'.') || testChar8(i, '.'))
3384
+ {
3385
+ remove(i);
3386
+ break;
3387
+ }
3388
+ else
3389
+ break;
3390
+ }
3391
+
3392
+ return *this;
3393
+ }
3394
+
3395
+ //-----------------------------------------------------------------------------
3396
+ bool String::incrementTrailingNumber (uint32 width, tchar separator, uint32 minNumber, bool applyOnlyFormat)
3397
+ {
3398
+ if (width > 32)
3399
+ return false;
3400
+
3401
+ int64 number = 1;
3402
+ int32 index = getTrailingNumberIndex ();
3403
+ if (index >= 0)
3404
+ {
3405
+ if (scanInt64 (number, index))
3406
+ if (!applyOnlyFormat)
3407
+ number++;
3408
+
3409
+ if (separator != 0 && index > 0 && testChar (index - 1, separator) == true)
3410
+ index--;
3411
+
3412
+ remove (index);
3413
+ }
3414
+
3415
+ if (number < minNumber)
3416
+ number = minNumber;
3417
+
3418
+ if (isWide)
3419
+ {
3420
+ char16 format[64];
3421
+ char16 trail[128];
3422
+ if (separator && isEmpty () == false)
3423
+ {
3424
+ sprintf16 (format, STR16 ("%%c%%0%uu"), width);
3425
+ sprintf16 (trail, format, separator, (uint32) number);
3426
+ }
3427
+ else
3428
+ {
3429
+ sprintf16 (format, STR16 ("%%0%uu"), width);
3430
+ sprintf16 (trail, format, (uint32) number);
3431
+ }
3432
+ append (trail);
3433
+ }
3434
+ else
3435
+ {
3436
+ static constexpr auto kFormatSize = 64u;
3437
+ static constexpr auto kTrailSize = 64u;
3438
+ char format[kFormatSize];
3439
+ char trail[kTrailSize];
3440
+ if (separator && isEmpty () == false)
3441
+ {
3442
+ snprintf (format, kFormatSize, "%%c%%0%uu", width);
3443
+ snprintf (trail, kTrailSize, format, separator, (uint32) number);
3444
+ }
3445
+ else
3446
+ {
3447
+ snprintf (format, kFormatSize, "%%0%uu", width);
3448
+ snprintf (trail, kTrailSize, format, (uint32) number);
3449
+ }
3450
+ append (trail);
3451
+ }
3452
+
3453
+ return true;
3454
+ }
3455
+
3456
+ //-----------------------------------------------------------------------------
3457
+ void String::toLower (uint32 index)
3458
+ {
3459
+ if (buffer && index < len)
3460
+ {
3461
+ if (isWide)
3462
+ buffer16[index] = ConstString::toLower (buffer16[index]);
3463
+ else
3464
+ buffer8[index] = ConstString::toLower (buffer8[index]);
3465
+ }
3466
+ }
3467
+
3468
+ //-----------------------------------------------------------------------------
3469
+ void String::toLower ()
3470
+ {
3471
+ int32 i = len;
3472
+ if (buffer && i > 0)
3473
+ {
3474
+ if (isWide)
3475
+ {
3476
+ #if SMTG_OS_MACOS
3477
+ CFMutableStringRef cfStr = CFStringCreateMutableWithExternalCharactersNoCopy (kCFAllocator, (UniChar*)buffer16, len, len+1, kCFAllocatorNull);
3478
+ CFStringLowercase (cfStr, NULL);
3479
+ CFRelease (cfStr);
3480
+ #else
3481
+ char16* c = buffer16;
3482
+ while (i--)
3483
+ {
3484
+ *c = ConstString::toLower (*c);
3485
+ c++;
3486
+ }
3487
+ #endif
3488
+ }
3489
+ else
3490
+ {
3491
+ char8* c = buffer8;
3492
+ while (i--)
3493
+ {
3494
+ *c = ConstString::toLower (*c);
3495
+ c++;
3496
+ }
3497
+ }
3498
+ }
3499
+ }
3500
+
3501
+ //-----------------------------------------------------------------------------
3502
+ void String::toUpper (uint32 index)
3503
+ {
3504
+ if (buffer && index < len)
3505
+ {
3506
+ if (isWide)
3507
+ buffer16[index] = ConstString::toUpper (buffer16[index]);
3508
+ else
3509
+ buffer8[index] = ConstString::toUpper (buffer8[index]);
3510
+ }
3511
+ }
3512
+
3513
+ //-----------------------------------------------------------------------------
3514
+ void String::toUpper ()
3515
+ {
3516
+ int32 i = len;
3517
+ if (buffer && i > 0)
3518
+ {
3519
+ if (isWide)
3520
+ {
3521
+ #if SMTG_OS_MACOS
3522
+ CFMutableStringRef cfStr = CFStringCreateMutableWithExternalCharactersNoCopy (kCFAllocator, (UniChar*)buffer16, len, len+1, kCFAllocatorNull);
3523
+ CFStringUppercase (cfStr, NULL);
3524
+ CFRelease (cfStr);
3525
+ #else
3526
+ char16* c = buffer16;
3527
+ while (i--)
3528
+ {
3529
+ *c = ConstString::toUpper (*c);
3530
+ c++;
3531
+ }
3532
+ #endif
3533
+ }
3534
+ else
3535
+ {
3536
+ char8* c = buffer8;
3537
+ while (i--)
3538
+ {
3539
+ *c = ConstString::toUpper (*c);
3540
+ c++;
3541
+ }
3542
+ }
3543
+ }
3544
+ }
3545
+
3546
+ //-----------------------------------------------------------------------------
3547
+ bool String::fromVariant (const FVariant& var)
3548
+ {
3549
+ switch (var.getType ())
3550
+ {
3551
+ case FVariant::kString8:
3552
+ assign (var.getString8 ());
3553
+ return true;
3554
+
3555
+ case FVariant::kString16:
3556
+ assign (var.getString16 ());
3557
+ return true;
3558
+
3559
+ case FVariant::kFloat:
3560
+ printFloat (var.getFloat ());
3561
+ return true;
3562
+
3563
+ case FVariant::kInteger:
3564
+ printInt64 (var.getInt ());
3565
+ return true;
3566
+
3567
+ default:
3568
+ remove ();
3569
+ }
3570
+ return false;
3571
+ }
3572
+
3573
+ //-----------------------------------------------------------------------------
3574
+ void String::toVariant (FVariant& var) const
3575
+ {
3576
+ if (isWide)
3577
+ {
3578
+ var.setString16 (text16 ());
3579
+ }
3580
+ else
3581
+ {
3582
+ var.setString8 (text8 ());
3583
+ }
3584
+ }
3585
+
3586
+ //-----------------------------------------------------------------------------
3587
+ bool String::fromAttributes (IAttributes* a, IAttrID attrID)
3588
+ {
3589
+ FVariant variant;
3590
+ if (a->get (attrID, variant) == kResultTrue)
3591
+ return fromVariant (variant);
3592
+ return false;
3593
+ }
3594
+
3595
+ //-----------------------------------------------------------------------------
3596
+ bool String::toAttributes (IAttributes* a, IAttrID attrID)
3597
+ {
3598
+ FVariant variant;
3599
+ toVariant (variant);
3600
+ if (a->set (attrID, variant) == kResultTrue)
3601
+ return true;
3602
+ return false;
3603
+ }
3604
+
3605
+ // "swapContent" swaps ownership of the strings pointed to
3606
+ //-----------------------------------------------------------------------------
3607
+ void String::swapContent (String& s)
3608
+ {
3609
+ void* tmp = s.buffer;
3610
+ uint32 tmpLen = s.len;
3611
+ bool tmpWide = s.isWide;
3612
+ s.buffer = buffer;
3613
+ s.len = len;
3614
+ s.isWide = isWide;
3615
+ buffer = tmp;
3616
+ len = tmpLen;
3617
+ isWide = tmpWide;
3618
+ }
3619
+
3620
+ //-----------------------------------------------------------------------------
3621
+ void String::take (String& other)
3622
+ {
3623
+ resize (0, other.isWide);
3624
+ buffer = other.buffer;
3625
+ len = other.len;
3626
+
3627
+ other.buffer = nullptr;
3628
+ other.len = 0;
3629
+ }
3630
+
3631
+ //-----------------------------------------------------------------------------
3632
+ void String::take (void* b, bool wide)
3633
+ {
3634
+ resize (0, wide);
3635
+ buffer = b;
3636
+ isWide = wide;
3637
+ updateLength ();
3638
+ }
3639
+
3640
+ //-----------------------------------------------------------------------------
3641
+ void* String::pass ()
3642
+ {
3643
+ void* res = buffer;
3644
+ len = 0;
3645
+ buffer = nullptr;
3646
+ return res;
3647
+ }
3648
+
3649
+ //-----------------------------------------------------------------------------
3650
+ void String::passToVariant (FVariant& var)
3651
+ {
3652
+ void* passed = pass ();
3653
+
3654
+ if (isWide)
3655
+ {
3656
+ if (passed)
3657
+ {
3658
+ var.setString16 ((const char16*)passed);
3659
+ var.setOwner (true);
3660
+ }
3661
+ else
3662
+ var.setString16 (kEmptyString16);
3663
+ }
3664
+ else
3665
+ {
3666
+ if (passed)
3667
+ {
3668
+ var.setString8 ((const char8*)passed);
3669
+ var.setOwner (true);
3670
+ }
3671
+ else
3672
+ var.setString8 (kEmptyString8);
3673
+ }
3674
+ }
3675
+
3676
+
3677
+ //-----------------------------------------------------------------------------
3678
+ unsigned char* String::toPascalString (unsigned char* buf)
3679
+ {
3680
+ if (buffer)
3681
+ {
3682
+ if (isWide)
3683
+ {
3684
+ String tmp (*this);
3685
+ tmp.toMultiByte ();
3686
+ return tmp.toPascalString (buf);
3687
+ }
3688
+
3689
+ int32 length = len;
3690
+ if (length > 255)
3691
+ length = 255;
3692
+ buf[0] = (uint8)length;
3693
+ while (length >= 0)
3694
+ {
3695
+ buf[length + 1] = buffer8[length];
3696
+ length--;
3697
+ }
3698
+ return buf;
3699
+ }
3700
+
3701
+ *buf = 0;
3702
+ return buf;
3703
+ }
3704
+
3705
+ //-----------------------------------------------------------------------------
3706
+ const String& String::fromPascalString (const unsigned char* buf)
3707
+ {
3708
+ resize (0, false);
3709
+ isWide = 0;
3710
+ int32 length = buf[0];
3711
+ resize (length + 1, false);
3712
+ buffer8[length] = 0; // cannot be removed, because we only do the 0-termination for multibyte buffer8
3713
+ while (--length >= 0)
3714
+ buffer8[length] = buf[length + 1];
3715
+ len = buf[0];
3716
+ return *this;
3717
+ }
3718
+
3719
+ #if SMTG_OS_MACOS
3720
+
3721
+ //-----------------------------------------------------------------------------
3722
+ bool String::fromCFStringRef (const void* cfStr, uint32 encoding)
3723
+ {
3724
+ if (cfStr == 0)
3725
+ return false;
3726
+
3727
+ CFStringRef strRef = (CFStringRef)cfStr;
3728
+ if (isWide)
3729
+ {
3730
+ CFRange range = { 0, CFStringGetLength (strRef)};
3731
+ CFIndex usedBytes;
3732
+ if (resize (static_cast<int32> (range.length + 1), true))
3733
+ {
3734
+ if (encoding == 0xFFFF)
3735
+ encoding = kCFStringEncodingUnicode;
3736
+ if (CFStringGetBytes (strRef, range, encoding, ' ', false, (UInt8*)buffer16, range.length * 2, &usedBytes) > 0)
3737
+ {
3738
+ buffer16[usedBytes/2] = 0;
3739
+ this->len = strlen16 (buffer16);
3740
+ return true;
3741
+ }
3742
+ }
3743
+ }
3744
+ else
3745
+ {
3746
+ if (cfStr == 0)
3747
+ return false;
3748
+ if (encoding == 0xFFFF)
3749
+ encoding = kCFStringEncodingASCII;
3750
+ int32 len = static_cast<int32> (CFStringGetLength (strRef) * 2);
3751
+ if (resize (++len, false))
3752
+ {
3753
+ if (CFStringGetCString (strRef, buffer8, len, encoding))
3754
+ {
3755
+ this->len = static_cast<int32> (strlen (buffer8));
3756
+ return true;
3757
+ }
3758
+ }
3759
+ }
3760
+
3761
+ return false;
3762
+ }
3763
+
3764
+ //-----------------------------------------------------------------------------
3765
+ void* ConstString::toCFStringRef (uint32 encoding, bool mutableCFString) const
3766
+ {
3767
+ if (mutableCFString)
3768
+ {
3769
+ CFMutableStringRef str = CFStringCreateMutable (kCFAllocator, 0);
3770
+ if (isWide)
3771
+ {
3772
+ CFStringAppendCharacters (str, (const UniChar *)buffer16, len);
3773
+ return str;
3774
+ }
3775
+ else
3776
+ {
3777
+ if (encoding == 0xFFFF)
3778
+ encoding = kCFStringEncodingASCII;
3779
+ CFStringAppendCString (str, buffer8, encoding);
3780
+ return str;
3781
+ }
3782
+ }
3783
+ else
3784
+ {
3785
+ if (isWide)
3786
+ {
3787
+ if (encoding == 0xFFFF)
3788
+ encoding = kCFStringEncodingUnicode;
3789
+ return (void*)CFStringCreateWithBytes (kCFAllocator, (const unsigned char*)buffer16, len * 2, encoding, false);
3790
+ }
3791
+ else
3792
+ {
3793
+ if (encoding == 0xFFFF)
3794
+ encoding = kCFStringEncodingASCII;
3795
+ if (buffer8)
3796
+ return (void*)CFStringCreateWithCString (kCFAllocator, buffer8, encoding);
3797
+ else
3798
+ return (void*)CFStringCreateWithCString (kCFAllocator, "", encoding);
3799
+ }
3800
+ }
3801
+ return nullptr;
3802
+ }
3803
+
3804
+ #endif
3805
+
3806
+ //-----------------------------------------------------------------------------
3807
+ uint32 hashString8 (const char8* s, uint32 m)
3808
+ {
3809
+ uint32 h = 0;
3810
+ if (s)
3811
+ {
3812
+ for (h = 0; *s != '\0'; s++)
3813
+ h = (64 * h + *s) % m;
3814
+ }
3815
+ return h;
3816
+ }
3817
+
3818
+ //-----------------------------------------------------------------------------
3819
+ uint32 hashString16 (const char16* s, uint32 m)
3820
+ {
3821
+ uint32 h = 0;
3822
+ if (s)
3823
+ {
3824
+ for (h = 0; *s != 0; s++)
3825
+ h = (64 * h + *s) % m;
3826
+ }
3827
+ return h;
3828
+ }
3829
+
3830
+ //------------------------------------------------------------------------
3831
+ template <class T> int32 tstrnatcmp (const T* s1, const T* s2, bool caseSensitive = true)
3832
+ {
3833
+ if (s1 == nullptr && s2 == nullptr)
3834
+ return 0;
3835
+ if (s1 == nullptr)
3836
+ return -1;
3837
+ if (s2 == nullptr)
3838
+ return 1;
3839
+
3840
+ while (*s1 && *s2)
3841
+ {
3842
+ if (ConstString::isCharDigit (*s1) && ConstString::isCharDigit (*s2))
3843
+ {
3844
+ int32 s1LeadingZeros = 0;
3845
+ while (*s1 == '0')
3846
+ {
3847
+ s1++; // skip leading zeros
3848
+ s1LeadingZeros++;
3849
+ }
3850
+ int32 s2LeadingZeros = 0;
3851
+ while (*s2 == '0')
3852
+ {
3853
+ s2++; // skip leading zeros
3854
+ s2LeadingZeros++;
3855
+ }
3856
+
3857
+ int32 countS1Digits = 0;
3858
+ while (*(s1 + countS1Digits) && ConstString::isCharDigit (*(s1 + countS1Digits)))
3859
+ countS1Digits++;
3860
+ int32 countS2Digits = 0;
3861
+ while (*(s2 + countS2Digits) && ConstString::isCharDigit (*(s2 + countS2Digits)))
3862
+ countS2Digits++;
3863
+
3864
+ if (countS1Digits != countS2Digits)
3865
+ return countS1Digits - countS2Digits; // one number is longer than the other
3866
+
3867
+ for (int32 i = 0; i < countS1Digits; i++)
3868
+ {
3869
+ // countS1Digits == countS2Digits
3870
+ if (*s1 != *s2)
3871
+ return (int32)(*s1 - *s2); // the digits differ
3872
+ s1++;
3873
+ s2++;
3874
+ }
3875
+
3876
+ if (s1LeadingZeros != s2LeadingZeros)
3877
+ return s1LeadingZeros - s2LeadingZeros; // differentiate by the number of leading zeros
3878
+ }
3879
+ else
3880
+ {
3881
+ if (caseSensitive == false)
3882
+ {
3883
+ T srcToUpper = static_cast<T> (toupper (*s1));
3884
+ T dstToUpper = static_cast<T> (toupper (*s2));
3885
+ if (srcToUpper != dstToUpper)
3886
+ return (int32)(srcToUpper - dstToUpper);
3887
+ }
3888
+ else if (*s1 != *s2)
3889
+ return (int32)(*s1 - *s2);
3890
+
3891
+ s1++;
3892
+ s2++;
3893
+ }
3894
+ }
3895
+
3896
+ if (*s1 == 0 && *s2 == 0)
3897
+ return 0;
3898
+ if (*s1 == 0)
3899
+ return -1;
3900
+ if (*s2 == 0)
3901
+ return 1;
3902
+ return (int32)(*s1 - *s2);
3903
+ }
3904
+
3905
+ //------------------------------------------------------------------------
3906
+ int32 strnatcmp8 (const char8* s1, const char8* s2, bool caseSensitive /*= true*/)
3907
+ {
3908
+ return tstrnatcmp (s1, s2, caseSensitive);
3909
+ }
3910
+
3911
+ //------------------------------------------------------------------------
3912
+ int32 strnatcmp16 (const char16* s1, const char16* s2, bool caseSensitive /*= true*/)
3913
+ {
3914
+ return tstrnatcmp (s1, s2, caseSensitive);
3915
+ }
3916
+
3917
+ //-----------------------------------------------------------------------------
3918
+ // StringObject Implementation
3919
+ //-----------------------------------------------------------------------------
3920
+ void PLUGIN_API StringObject::setText (const char8* text)
3921
+ {
3922
+ assign (text);
3923
+ }
3924
+
3925
+ //-----------------------------------------------------------------------------
3926
+ void PLUGIN_API StringObject::setText8 (const char8* text)
3927
+ {
3928
+ assign (text);
3929
+ }
3930
+
3931
+ //-----------------------------------------------------------------------------
3932
+ void PLUGIN_API StringObject::setText16 (const char16* text)
3933
+ {
3934
+ assign (text);
3935
+ }
3936
+
3937
+ //-----------------------------------------------------------------------------
3938
+ const char8* PLUGIN_API StringObject::getText8 ()
3939
+ {
3940
+ return text8 ();
3941
+ }
3942
+
3943
+ //-----------------------------------------------------------------------------
3944
+ const char16* PLUGIN_API StringObject::getText16 ()
3945
+ {
3946
+ return text16 ();
3947
+ }
3948
+
3949
+ //-----------------------------------------------------------------------------
3950
+ void PLUGIN_API StringObject::take (void* s, bool _isWide)
3951
+ {
3952
+ String::take (s, _isWide);
3953
+ }
3954
+
3955
+ //-----------------------------------------------------------------------------
3956
+ bool PLUGIN_API StringObject::isWideString () const
3957
+ {
3958
+ return String::isWideString ();
3959
+ }
3960
+
3961
+ //------------------------------------------------------------------------
3962
+ } // namespace Steinberg