Compare commits

...

32 Commits
1.5.0 ... main

Author SHA1 Message Date
shogo4405 1d851afe32 Bump to up 1.5.2. 2023-06-16 02:43:30 +09:00
shogo4405 74ca73795a fix tvOS compile error 2023-06-14 22:55:23 +09:00
shogo4405 b383042509
Merge pull request #1216 from shogo4405/feature/capture-session-other-thread
fixed #1209 AVCaptureSession startRunning] should be called from background thread.
2023-06-12 01:44:01 +09:00
shogo4405 56e817669f fixed #1209 2023-06-12 01:27:37 +09:00
shogo4405 442077e218
Merge pull request #1214 from shogo4405/feature/fix-crash-audio-samplebuffer
Fix Rare crash of makeSampleBuffer
2023-06-10 01:09:38 +09:00
shogo4405 0d3e7b7572
Merge pull request #1215 from shogo4405/feature/Improved-compatibility-rtmp
Improved RTMPDataMessage.
2023-06-08 00:24:48 +09:00
shogo4405 7867c44a27 Fix crash unsupported AVAudioFormat. 2023-06-08 00:22:47 +09:00
shogo4405 cfba9b6be2 Improved RTMPDataMessage. 2023-06-07 21:42:41 +09:00
shogo4405 c6901ba7a1 Fix can't compile next Xcode. 2023-06-07 20:26:52 +09:00
shogo4405 0994741b7c Remove no code. 2023-06-05 22:40:00 +09:00
shogo4405 2310c2403c
Merge pull request #1213 from shogo4405/feature/muted-properties
fixed When I set pause and resume, mute will not work bug
2023-05-31 00:15:25 +09:00
shogo4405 876ccf1699 fixed #998 2023-05-31 00:12:37 +09:00
shogo4405 f6489f866a
Merge pull request #1211 from shogo4405/dependabot/bundler/fastlane-2.213.0
Bump fastlane from 2.212.2 to 2.213.0
2023-05-30 20:02:16 +09:00
dependabot[bot] b5c59a7424
Bump fastlane from 2.212.2 to 2.213.0
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.212.2 to 2.213.0.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.212.2...fastlane/2.213.0)

---
updated-dependencies:
- dependency-name: fastlane
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-28 00:57:38 +00:00
shogo4405 dd1899c8e0
Merge pull request #1207 from shogo4405/feature/dettach-camera
Detach camera device stream#attachCamera(nil)
2023-05-27 12:56:03 +09:00
shogo4405 1b1d613950 fixed #1205 2023-05-25 21:39:06 +09:00
shogo4405 52ad7d6ad4
Update README.md 2023-05-21 20:47:28 +09:00
shogo4405 1cebb9c91c Bump to up 1.5.1 2023-05-21 15:25:25 +09:00
shogo4405 591e090925
Merge pull request #1201 from shogo4405/feature/fix-recording
fixed #1198 fix can't save local recording.
2023-05-14 21:49:12 +09:00
shogo4405 5c09825119 fix failed test. 2023-05-14 21:33:15 +09:00
shogo4405 5d4787383a fixed #1198 fix can't save local recording. 2023-05-14 20:49:30 +09:00
shogo4405 6cef14c59d validate videocodecid 2023-05-13 14:46:53 +09:00
shogo4405 eef9eb0cb5 ExistentialAny 2023-05-07 21:27:41 +09:00
shogo4405 8675b37473 Smoothing rtmp playback. 2023-05-07 14:37:12 +09:00
shogo4405 b252405083
Update README.md 2023-05-06 02:30:30 +09:00
shogo4405 d72ae256da
Merge pull request #1195 from shogo4405/feature/rtmp-h265
Support RTMP with HEVC Enhancing RTMP, FLV.
2023-05-06 02:19:10 +09:00
shogo4405 cd57781dd3 Support RTMP with HEVC Enhancing RTMP, FLV. 2023-05-06 01:53:29 +09:00
shogo4405 28da84c16c
Merge pull request #1196 from shogo4405/fix/video-codec-drop-frame
Fix dropframe delegate.
2023-05-05 20:28:21 +09:00
shogo4405 39c03c3e17 Fix dropframe delegate. 2023-05-05 20:27:03 +09:00
shogo4405 7b4f896c16 Suppress warnings. 2023-05-05 20:09:22 +09:00
shogo4405 efa5c5e980 Remove RTMPReaderTests case. 2023-05-05 16:38:12 +09:00
shogo4405 da0abce59d Remove FLVReader class. 2023-05-04 15:49:02 +09:00
998 changed files with 1509 additions and 1687 deletions

View File

@ -1 +1 @@
2.7.4
3.0.6

View File

@ -21,7 +21,7 @@ final class PlaybackViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
logger.info("viewWillAppear")
super.viewWillAppear(animated)
(view as? NetStreamDrawable)?.attachStream(rtmpStream)
(view as? (any NetStreamDrawable))?.attachStream(rtmpStream)
if #available(iOS 15.0, *), let layer = view.layer as? AVSampleBufferDisplayLayer {
pictureInPictureController = AVPictureInPictureController(contentSource: .init(sampleBufferDisplayLayer: layer, playbackDelegate: self))
}

View File

@ -16,16 +16,16 @@ GEM
artifactory (3.0.15)
atomos (0.1.3)
aws-eventstream (1.2.0)
aws-partitions (1.757.0)
aws-sdk-core (3.171.0)
aws-partitions (1.771.0)
aws-sdk-core (3.173.1)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.63.0)
aws-sdk-kms (1.64.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.121.0)
aws-sdk-s3 (1.122.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
@ -116,8 +116,8 @@ GEM
faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday (~> 1.0)
fastimage (2.2.6)
fastlane (2.212.2)
fastimage (2.2.7)
fastlane (2.213.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
@ -141,7 +141,7 @@ GEM
json (< 3.0.0)
jwt (>= 2.1.0, < 3)
mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (~> 2.0.0)
multipart-post (>= 2.0.0, < 3.0.0)
naturally (~> 2.2)
optparse (~> 0.1.1)
plist (>= 3.1.0, < 4.0.0)
@ -160,7 +160,7 @@ GEM
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.40.0)
google-apis-androidpublisher_v3 (0.42.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.0)
addressable (~> 2.5, >= 2.5.1)
@ -213,7 +213,7 @@ GEM
minitest (5.18.0)
molinillo (0.8.0)
multi_json (1.15.0)
multipart-post (2.0.0)
multipart-post (2.3.0)
nanaimo (0.3.0)
nap (1.1.0)
naturally (2.2.1)
@ -286,4 +286,4 @@ DEPENDENCIES
synx
BUNDLED WITH
2.1.4
2.2.33

View File

@ -1,7 +1,7 @@
Pod::Spec.new do |s|
s.name = "HaishinKit"
s.version = "1.5.0"
s.version = "1.5.2"
s.summary = "Camera and Microphone streaming library via RTMP, HLS for iOS, macOS and tvOS."
s.swift_version = "5.7"

View File

@ -45,7 +45,6 @@
293B42E92340B4840086F973 /* RTMPObjectEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 293B42E82340B4840086F973 /* RTMPObjectEncoding.swift */; };
293B42EA2340B4840086F973 /* RTMPObjectEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 293B42E82340B4840086F973 /* RTMPObjectEncoding.swift */; };
293B42EB2340B4840086F973 /* RTMPObjectEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 293B42E82340B4840086F973 /* RTMPObjectEncoding.swift */; };
2940EF4F2380116500430456 /* RingBufferTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2940EF4E2380116500430456 /* RingBufferTests.swift */; };
2941746B22D069B300A2944F /* AudioEffect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2941746A22D069B300A2944F /* AudioEffect.swift */; };
2941746C22D069B300A2944F /* AudioEffect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2941746A22D069B300A2944F /* AudioEffect.swift */; };
2941746D22D069B300A2944F /* AudioEffect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2941746A22D069B300A2944F /* AudioEffect.swift */; };
@ -55,13 +54,9 @@
2942A4FA21A9418A004E1BEE /* Running.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2942A4F721A9418A004E1BEE /* Running.swift */; };
2942EF841DFF4D06008E620C /* HaishinKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2945CBBD1B4BE66000104112 /* HaishinKit.framework */; };
2942EF861DFF4D3C008E620C /* HaishinKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 2945CBBD1B4BE66000104112 /* HaishinKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
294637A41EC8961C008EEC71 /* RTMPReaderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294637A31EC8961C008EEC71 /* RTMPReaderTests.swift */; };
294637A81EC89BC9008EEC71 /* Config.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294637A71EC89BC9008EEC71 /* Config.swift */; };
294637AA1EC8A79F008EEC71 /* SampleVideo_360x240_5mb.flv in Resources */ = {isa = PBXBuildFile; fileRef = 294637A91EC8A79F008EEC71 /* SampleVideo_360x240_5mb.flv */; };
294852571D852499002DE492 /* RTMPTSocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294852551D84BFAD002DE492 /* RTMPTSocket.swift */; };
294B2D3223785E3800CE7BDC /* RingBuffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294B2D3123785E3800CE7BDC /* RingBuffer.swift */; };
294B2D3323785E3800CE7BDC /* RingBuffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294B2D3123785E3800CE7BDC /* RingBuffer.swift */; };
294B2D3423785E3800CE7BDC /* RingBuffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294B2D3123785E3800CE7BDC /* RingBuffer.swift */; };
294CC9B422D9BEC000F9DD5C /* DisplayLink-macOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294CC9B322D9BEC000F9DD5C /* DisplayLink-macOS.swift */; };
295018201FFA1BD700358E10 /* AudioCodecTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2950181F1FFA1BD700358E10 /* AudioCodecTests.swift */; };
295018221FFA1C9D00358E10 /* SinWaveUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295018211FFA1C9D00358E10 /* SinWaveUtil.swift */; };
@ -70,18 +65,12 @@
2955F51F1D09EBAD004CC995 /* VisualEffect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 296897461CDB01D20074D5F0 /* VisualEffect.swift */; };
29562B881E6BFFE000BB940A /* HaishinKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B8761B1CD701F900FC07DA /* HaishinKit.framework */; };
29562B891E6BFFE000BB940A /* HaishinKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 29B8761B1CD701F900FC07DA /* HaishinKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
2958910A1EEB8D1800CE51E1 /* FLVReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295891091EEB8D1800CE51E1 /* FLVReader.swift */; };
2958910B1EEB8D1800CE51E1 /* FLVReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295891091EEB8D1800CE51E1 /* FLVReader.swift */; };
2958910C1EEB8D1800CE51E1 /* FLVReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295891091EEB8D1800CE51E1 /* FLVReader.swift */; };
2958910E1EEB8D3C00CE51E1 /* FLVVideoCodec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2958910D1EEB8D3C00CE51E1 /* FLVVideoCodec.swift */; };
2958910F1EEB8D3C00CE51E1 /* FLVVideoCodec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2958910D1EEB8D3C00CE51E1 /* FLVVideoCodec.swift */; };
295891101EEB8D3C00CE51E1 /* FLVVideoCodec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2958910D1EEB8D3C00CE51E1 /* FLVVideoCodec.swift */; };
295891121EEB8D7200CE51E1 /* FLVFrameType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295891111EEB8D7200CE51E1 /* FLVFrameType.swift */; };
295891131EEB8D7200CE51E1 /* FLVFrameType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295891111EEB8D7200CE51E1 /* FLVFrameType.swift */; };
295891141EEB8D7200CE51E1 /* FLVFrameType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295891111EEB8D7200CE51E1 /* FLVFrameType.swift */; };
295891161EEB8DFC00CE51E1 /* FLVTagType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295891151EEB8DFC00CE51E1 /* FLVTagType.swift */; };
295891171EEB8DFC00CE51E1 /* FLVTagType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295891151EEB8DFC00CE51E1 /* FLVTagType.swift */; };
295891181EEB8DFC00CE51E1 /* FLVTagType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295891151EEB8DFC00CE51E1 /* FLVTagType.swift */; };
2958911A1EEB8E3F00CE51E1 /* FLVAudioCodec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295891191EEB8E3F00CE51E1 /* FLVAudioCodec.swift */; };
2958911B1EEB8E3F00CE51E1 /* FLVAudioCodec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295891191EEB8E3F00CE51E1 /* FLVAudioCodec.swift */; };
2958911C1EEB8E3F00CE51E1 /* FLVAudioCodec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295891191EEB8E3F00CE51E1 /* FLVAudioCodec.swift */; };
@ -133,7 +122,7 @@
29B876791CD70ACE00FC07DA /* HTTPStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B876721CD70ACE00FC07DA /* HTTPStream.swift */; };
29B8767A1CD70ACE00FC07DA /* M3U.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B876731CD70ACE00FC07DA /* M3U.swift */; };
29B876831CD70AE800FC07DA /* AudioSpecificConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B8767D1CD70AE800FC07DA /* AudioSpecificConfig.swift */; };
29B876841CD70AE800FC07DA /* AVCConfigurationRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B8767E1CD70AE800FC07DA /* AVCConfigurationRecord.swift */; };
29B876841CD70AE800FC07DA /* AVCDecoderConfigurationRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B8767E1CD70AE800FC07DA /* AVCDecoderConfigurationRecord.swift */; };
29B876861CD70AE800FC07DA /* PacketizedElementaryStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B876801CD70AE800FC07DA /* PacketizedElementaryStream.swift */; };
29B876871CD70AE800FC07DA /* TSProgram.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B876811CD70AE800FC07DA /* TSProgram.swift */; };
29B876881CD70AE800FC07DA /* TSPacket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B876821CD70AE800FC07DA /* TSPacket.swift */; };
@ -168,7 +157,7 @@
29B876F91CD70D5900FC07DA /* HTTPStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B876721CD70ACE00FC07DA /* HTTPStream.swift */; };
29B876FA1CD70D5900FC07DA /* M3U.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B876731CD70ACE00FC07DA /* M3U.swift */; };
29B876FD1CD70D5A00FC07DA /* AudioSpecificConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B8767D1CD70AE800FC07DA /* AudioSpecificConfig.swift */; };
29B876FE1CD70D5A00FC07DA /* AVCConfigurationRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B8767E1CD70AE800FC07DA /* AVCConfigurationRecord.swift */; };
29B876FE1CD70D5A00FC07DA /* AVCDecoderConfigurationRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B8767E1CD70AE800FC07DA /* AVCDecoderConfigurationRecord.swift */; };
29B877001CD70D5A00FC07DA /* PacketizedElementaryStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B876801CD70AE800FC07DA /* PacketizedElementaryStream.swift */; };
29B877011CD70D5A00FC07DA /* TSProgram.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B876811CD70AE800FC07DA /* TSProgram.swift */; };
29B877021CD70D5A00FC07DA /* TSPacket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B876821CD70AE800FC07DA /* TSPacket.swift */; };
@ -251,7 +240,7 @@
29EB3E011ED05856001CAE8B /* HTTPStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B876721CD70ACE00FC07DA /* HTTPStream.swift */; };
29EB3E021ED05858001CAE8B /* M3U.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B876731CD70ACE00FC07DA /* M3U.swift */; };
29EB3E031ED0585D001CAE8B /* AudioSpecificConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B8767D1CD70AE800FC07DA /* AudioSpecificConfig.swift */; };
29EB3E041ED05860001CAE8B /* AVCConfigurationRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B8767E1CD70AE800FC07DA /* AVCConfigurationRecord.swift */; };
29EB3E041ED05860001CAE8B /* AVCDecoderConfigurationRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B8767E1CD70AE800FC07DA /* AVCDecoderConfigurationRecord.swift */; };
29EB3E081ED05869001CAE8B /* PacketizedElementaryStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B876801CD70AE800FC07DA /* PacketizedElementaryStream.swift */; };
29EB3E091ED0586B001CAE8B /* TSProgram.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B876811CD70AE800FC07DA /* TSProgram.swift */; };
29EB3E0A1ED0586F001CAE8B /* TSPacket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B876821CD70AE800FC07DA /* TSPacket.swift */; };
@ -319,6 +308,23 @@
BC1DC4A429F4F74F00E928ED /* AVCaptureSession+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC4A329F4F74F00E928ED /* AVCaptureSession+Extension.swift */; };
BC1DC4A529F4F74F00E928ED /* AVCaptureSession+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC4A329F4F74F00E928ED /* AVCaptureSession+Extension.swift */; };
BC1DC4A629F4F74F00E928ED /* AVCaptureSession+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC4A329F4F74F00E928ED /* AVCaptureSession+Extension.swift */; };
BC1DC4FB2A02868900E928ED /* FLVVideoFourCC.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC4FA2A02868900E928ED /* FLVVideoFourCC.swift */; };
BC1DC4FC2A02868900E928ED /* FLVVideoFourCC.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC4FA2A02868900E928ED /* FLVVideoFourCC.swift */; };
BC1DC4FD2A02868900E928ED /* FLVVideoFourCC.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC4FA2A02868900E928ED /* FLVVideoFourCC.swift */; };
BC1DC5042A02894D00E928ED /* FLVVideoFourCCTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC5032A02894D00E928ED /* FLVVideoFourCCTests.swift */; };
BC1DC5062A02963600E928ED /* FLVTagType.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC5052A02963600E928ED /* FLVTagType.swift */; };
BC1DC5072A02963600E928ED /* FLVTagType.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC5052A02963600E928ED /* FLVTagType.swift */; };
BC1DC5082A02963600E928ED /* FLVTagType.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC5052A02963600E928ED /* FLVTagType.swift */; };
BC1DC50A2A039B4400E928ED /* HEVCDecoderConfigurationRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC5092A039B4400E928ED /* HEVCDecoderConfigurationRecord.swift */; };
BC1DC50B2A039B4400E928ED /* HEVCDecoderConfigurationRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC5092A039B4400E928ED /* HEVCDecoderConfigurationRecord.swift */; };
BC1DC50C2A039B4400E928ED /* HEVCDecoderConfigurationRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC5092A039B4400E928ED /* HEVCDecoderConfigurationRecord.swift */; };
BC1DC50E2A039E1900E928ED /* FLVVideoPacketType.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC50D2A039E1900E928ED /* FLVVideoPacketType.swift */; };
BC1DC50F2A039E1900E928ED /* FLVVideoPacketType.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC50D2A039E1900E928ED /* FLVVideoPacketType.swift */; };
BC1DC5102A039E1900E928ED /* FLVVideoPacketType.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC50D2A039E1900E928ED /* FLVVideoPacketType.swift */; };
BC1DC5122A04E46E00E928ED /* HEVCDecoderConfigurationRecordTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC5112A04E46E00E928ED /* HEVCDecoderConfigurationRecordTests.swift */; };
BC1DC5142A05428800E928ED /* HEVCNALUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC5132A05428800E928ED /* HEVCNALUnit.swift */; };
BC1DC5152A05428800E928ED /* HEVCNALUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC5132A05428800E928ED /* HEVCNALUnit.swift */; };
BC1DC5162A05428800E928ED /* HEVCNALUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC1DC5132A05428800E928ED /* HEVCNALUnit.swift */; };
BC20DF38250377A3007BC608 /* IOUIScreenCaptureUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 299B131C1D35272D00A1E8F5 /* IOUIScreenCaptureUnit.swift */; };
BC3004CE296B0A1700119932 /* Shape.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC3004CD296B0A1700119932 /* Shape.swift */; };
BC3004CF296B0A1700119932 /* Shape.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC3004CD296B0A1700119932 /* Shape.swift */; };
@ -409,6 +415,10 @@
BC83A4732403D83B006BDE06 /* VTCompressionSession+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC83A4722403D83B006BDE06 /* VTCompressionSession+Extension.swift */; };
BC83A4742403D83B006BDE06 /* VTCompressionSession+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC83A4722403D83B006BDE06 /* VTCompressionSession+Extension.swift */; };
BC83A4752403D83B006BDE06 /* VTCompressionSession+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC83A4722403D83B006BDE06 /* VTCompressionSession+Extension.swift */; };
BC8446052A30BE1600609FFD /* CMAudioSampleBufferUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC8446042A30BE1600609FFD /* CMAudioSampleBufferUtil.swift */; };
BC8446062A30BE1600609FFD /* CMAudioSampleBufferUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC8446042A30BE1600609FFD /* CMAudioSampleBufferUtil.swift */; };
BC8446072A30BE1600609FFD /* CMAudioSampleBufferUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC8446042A30BE1600609FFD /* CMAudioSampleBufferUtil.swift */; };
BC8446092A30BFC800609FFD /* CMAudioSampleBufferUtilTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC8446082A30BFC800609FFD /* CMAudioSampleBufferUtilTests.swift */; };
BC959EEF296EE4190067BA97 /* ImageTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC959EEE296EE4190067BA97 /* ImageTransform.swift */; };
BC959EF0296EE4190067BA97 /* ImageTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC959EEE296EE4190067BA97 /* ImageTransform.swift */; };
BC959EF1296EE4190067BA97 /* ImageTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC959EEE296EE4190067BA97 /* ImageTransform.swift */; };
@ -437,9 +447,9 @@
BCC1A72D264FAC1800661156 /* ESSpecificData.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCC1A72A264FAC1800661156 /* ESSpecificData.swift */; };
BCC9E9092636FF7400948774 /* DataBufferTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCC9E9082636FF7400948774 /* DataBufferTests.swift */; };
BCCBCE9529A7C9C90095B51C /* AVCFormatStreamTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCCBCE9429A7C9C90095B51C /* AVCFormatStreamTests.swift */; };
BCCBCE9729A90D880095B51C /* NALUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCCBCE9629A90D880095B51C /* NALUnit.swift */; };
BCCBCE9829A90D880095B51C /* NALUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCCBCE9629A90D880095B51C /* NALUnit.swift */; };
BCCBCE9929A90D880095B51C /* NALUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCCBCE9629A90D880095B51C /* NALUnit.swift */; };
BCCBCE9729A90D880095B51C /* AVCNALUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCCBCE9629A90D880095B51C /* AVCNALUnit.swift */; };
BCCBCE9829A90D880095B51C /* AVCNALUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCCBCE9629A90D880095B51C /* AVCNALUnit.swift */; };
BCCBCE9929A90D880095B51C /* AVCNALUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCCBCE9629A90D880095B51C /* AVCNALUnit.swift */; };
BCCBCE9B29A9D96A0095B51C /* NALUnitReaderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCCBCE9A29A9D96A0095B51C /* NALUnitReaderTests.swift */; };
BCCBCEA029ADF55A0095B51C /* AudioCodecBufferTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCCBCE9F29ADF55A0095B51C /* AudioCodecBufferTests.swift */; };
BCD1DC3A260627C300A1C593 /* Logboard.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC34DFD125EBB12C005F975A /* Logboard.xcframework */; };
@ -601,24 +611,19 @@
2927A2991E7ED2D70044AF91 /* LICENSE.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = LICENSE.md; sourceTree = "<group>"; };
2930D03F1E12D17C00DA2DC5 /* SampleHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SampleHandler.swift; sourceTree = "<group>"; };
293B42E82340B4840086F973 /* RTMPObjectEncoding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RTMPObjectEncoding.swift; sourceTree = "<group>"; };
2940EF4E2380116500430456 /* RingBufferTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RingBufferTests.swift; sourceTree = "<group>"; };
2941746A22D069B300A2944F /* AudioEffect.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioEffect.swift; sourceTree = "<group>"; };
2942424C1CF4C01300D65DCB /* MD5.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MD5.swift; sourceTree = "<group>"; };
2942A4F721A9418A004E1BEE /* Running.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Running.swift; sourceTree = "<group>"; };
2945CBBD1B4BE66000104112 /* HaishinKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = HaishinKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
294637A31EC8961C008EEC71 /* RTMPReaderTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RTMPReaderTests.swift; sourceTree = "<group>"; };
294637A71EC89BC9008EEC71 /* Config.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Config.swift; sourceTree = "<group>"; };
294637A91EC8A79F008EEC71 /* SampleVideo_360x240_5mb.flv */ = {isa = PBXFileReference; lastKnownFileType = file; path = SampleVideo_360x240_5mb.flv; sourceTree = "<group>"; };
294852551D84BFAD002DE492 /* RTMPTSocket.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RTMPTSocket.swift; sourceTree = "<group>"; };
294B2D3123785E3800CE7BDC /* RingBuffer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RingBuffer.swift; sourceTree = "<group>"; };
294CC9B322D9BEC000F9DD5C /* DisplayLink-macOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DisplayLink-macOS.swift"; sourceTree = "<group>"; };
2950181F1FFA1BD700358E10 /* AudioCodecTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioCodecTests.swift; sourceTree = "<group>"; };
295018211FFA1C9D00358E10 /* SinWaveUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SinWaveUtil.swift; sourceTree = "<group>"; };
2950742E1E4620B7007F15A4 /* PreferenceViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferenceViewController.swift; sourceTree = "<group>"; };
295891091EEB8D1800CE51E1 /* FLVReader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FLVReader.swift; sourceTree = "<group>"; };
2958910D1EEB8D3C00CE51E1 /* FLVVideoCodec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FLVVideoCodec.swift; sourceTree = "<group>"; };
295891111EEB8D7200CE51E1 /* FLVFrameType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FLVFrameType.swift; sourceTree = "<group>"; };
295891151EEB8DFC00CE51E1 /* FLVTagType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FLVTagType.swift; sourceTree = "<group>"; };
295891191EEB8E3F00CE51E1 /* FLVAudioCodec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FLVAudioCodec.swift; sourceTree = "<group>"; };
2958911D1EEB8E9600CE51E1 /* FLVSoundRate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FLVSoundRate.swift; sourceTree = "<group>"; };
295891211EEB8EC500CE51E1 /* FLVAVCPacketType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FLVAVCPacketType.swift; sourceTree = "<group>"; };
@ -667,7 +672,7 @@
29B876721CD70ACE00FC07DA /* HTTPStream.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPStream.swift; sourceTree = "<group>"; };
29B876731CD70ACE00FC07DA /* M3U.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = M3U.swift; sourceTree = "<group>"; };
29B8767D1CD70AE800FC07DA /* AudioSpecificConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AudioSpecificConfig.swift; sourceTree = "<group>"; };
29B8767E1CD70AE800FC07DA /* AVCConfigurationRecord.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AVCConfigurationRecord.swift; sourceTree = "<group>"; };
29B8767E1CD70AE800FC07DA /* AVCDecoderConfigurationRecord.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AVCDecoderConfigurationRecord.swift; sourceTree = "<group>"; };
29B876801CD70AE800FC07DA /* PacketizedElementaryStream.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PacketizedElementaryStream.swift; sourceTree = "<group>"; };
29B876811CD70AE800FC07DA /* TSProgram.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TSProgram.swift; sourceTree = "<group>"; };
29B876821CD70AE800FC07DA /* TSPacket.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TSPacket.swift; sourceTree = "<group>"; };
@ -735,6 +740,13 @@
BC110252292DD6E900D48035 /* vImage_Buffer+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "vImage_Buffer+Extension.swift"; sourceTree = "<group>"; };
BC110256292E661E00D48035 /* MultiCamCaptureSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultiCamCaptureSettings.swift; sourceTree = "<group>"; };
BC1DC4A329F4F74F00E928ED /* AVCaptureSession+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AVCaptureSession+Extension.swift"; sourceTree = "<group>"; };
BC1DC4FA2A02868900E928ED /* FLVVideoFourCC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FLVVideoFourCC.swift; sourceTree = "<group>"; };
BC1DC5032A02894D00E928ED /* FLVVideoFourCCTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FLVVideoFourCCTests.swift; sourceTree = "<group>"; };
BC1DC5052A02963600E928ED /* FLVTagType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FLVTagType.swift; sourceTree = "<group>"; };
BC1DC5092A039B4400E928ED /* HEVCDecoderConfigurationRecord.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HEVCDecoderConfigurationRecord.swift; sourceTree = "<group>"; };
BC1DC50D2A039E1900E928ED /* FLVVideoPacketType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FLVVideoPacketType.swift; sourceTree = "<group>"; };
BC1DC5112A04E46E00E928ED /* HEVCDecoderConfigurationRecordTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HEVCDecoderConfigurationRecordTests.swift; sourceTree = "<group>"; };
BC1DC5132A05428800E928ED /* HEVCNALUnit.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HEVCNALUnit.swift; sourceTree = "<group>"; };
BC3004CD296B0A1700119932 /* Shape.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Shape.swift; sourceTree = "<group>"; };
BC3004D3296BFFF600119932 /* MainSplitViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainSplitViewController.swift; sourceTree = "<group>"; };
BC3004F0296C0C7400119932 /* MenuViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuViewController.swift; sourceTree = "<group>"; };
@ -769,6 +781,8 @@
BC7C56CC29A786AE00C41A9B /* ADTS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ADTS.swift; sourceTree = "<group>"; };
BC7C56D029A78D4F00C41A9B /* ADTSHeaderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ADTSHeaderTests.swift; sourceTree = "<group>"; };
BC83A4722403D83B006BDE06 /* VTCompressionSession+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "VTCompressionSession+Extension.swift"; sourceTree = "<group>"; };
BC8446042A30BE1600609FFD /* CMAudioSampleBufferUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CMAudioSampleBufferUtil.swift; sourceTree = "<group>"; };
BC8446082A30BFC800609FFD /* CMAudioSampleBufferUtilTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CMAudioSampleBufferUtilTests.swift; sourceTree = "<group>"; };
BC959EEE296EE4190067BA97 /* ImageTransform.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageTransform.swift; sourceTree = "<group>"; };
BC959F0D29705B1B0067BA97 /* SCStreamPublishViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SCStreamPublishViewController.swift; sourceTree = "<group>"; };
BC959F1129717EDB0067BA97 /* PreferenceViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferenceViewController.swift; sourceTree = "<group>"; };
@ -783,7 +797,7 @@
BCC1A72A264FAC1800661156 /* ESSpecificData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ESSpecificData.swift; sourceTree = "<group>"; };
BCC9E9082636FF7400948774 /* DataBufferTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataBufferTests.swift; sourceTree = "<group>"; };
BCCBCE9429A7C9C90095B51C /* AVCFormatStreamTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AVCFormatStreamTests.swift; sourceTree = "<group>"; };
BCCBCE9629A90D880095B51C /* NALUnit.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NALUnit.swift; sourceTree = "<group>"; };
BCCBCE9629A90D880095B51C /* AVCNALUnit.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AVCNALUnit.swift; sourceTree = "<group>"; };
BCCBCE9A29A9D96A0095B51C /* NALUnitReaderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NALUnitReaderTests.swift; sourceTree = "<group>"; };
BCCBCE9F29ADF55A0095B51C /* AudioCodecBufferTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioCodecBufferTests.swift; sourceTree = "<group>"; };
BCD63AB226FDF1250084842D /* Example iOS+SwiftUI.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Example iOS+SwiftUI.app"; sourceTree = BUILT_PRODUCTS_DIR; };
@ -910,13 +924,13 @@
298BCF321DD4C44A007FF86A /* AnyUtil.swift */,
29DC17B221D0CC0600E26CED /* Atomic.swift */,
29B876B81CD70B3900FC07DA /* ByteArray.swift */,
BC8446042A30BE1600609FFD /* CMAudioSampleBufferUtil.swift */,
29B876631CD70AB300FC07DA /* Constants.swift */,
BC0D236C26331BAB001DDA0C /* DataBuffer.swift */,
29B876671CD70AB300FC07DA /* DataConvertible.swift */,
2976A4851D4903C300B53EF2 /* DeviceUtil.swift */,
BC32E88729C9971100051507 /* InstanceHolder.swift */,
2942424C1CF4C01300D65DCB /* MD5.swift */,
294B2D3123785E3800CE7BDC /* RingBuffer.swift */,
2942A4F721A9418A004E1BEE /* Running.swift */,
);
path = Util;
@ -930,7 +944,6 @@
290EA89E1DFB61B100053022 /* RTMPChunkTests.swift */,
290686021DFDB7A6008EB7ED /* RTMPConnectionTests.swift */,
2976077E20A89FBB00DCF24F /* RTMPMessageTests.swift */,
294637A31EC8961C008EEC71 /* RTMPReaderTests.swift */,
035AFA032263868E009DD0BB /* RTMPStreamTests.swift */,
);
path = RTMP;
@ -944,6 +957,7 @@
2917CB652104CA2800F6823A /* AudioSpecificConfigTests.swift */,
BCCBCE9429A7C9C90095B51C /* AVCFormatStreamTests.swift */,
BC7C56C629A7701F00C41A9B /* ESSpecificDataTests.swift */,
BC1DC5112A04E46E00E928ED /* HEVCDecoderConfigurationRecordTests.swift */,
BCCBCE9A29A9D96A0095B51C /* NALUnitReaderTests.swift */,
290EA8951DFB619600053022 /* PacketizedElementaryStreamTests.swift */,
290EA8971DFB619600053022 /* TSPacketTests.swift */,
@ -957,11 +971,11 @@
isa = PBXGroup;
children = (
290EA8A41DFB61E700053022 /* ByteArrayTests.swift */,
BC8446082A30BFC800609FFD /* CMAudioSampleBufferUtilTests.swift */,
290EA8A51DFB61E700053022 /* CRC32Tests.swift */,
BCC9E9082636FF7400948774 /* DataBufferTests.swift */,
290EA8A61DFB61E700053022 /* EventDispatcherTests.swift */,
290EA8A71DFB61E700053022 /* MD5Tests.swift */,
2940EF4E2380116500430456 /* RingBufferTests.swift */,
);
path = Util;
sourceTree = "<group>";
@ -1065,12 +1079,13 @@
295891191EEB8E3F00CE51E1 /* FLVAudioCodec.swift */,
295891211EEB8EC500CE51E1 /* FLVAVCPacketType.swift */,
295891111EEB8D7200CE51E1 /* FLVFrameType.swift */,
295891091EEB8D1800CE51E1 /* FLVReader.swift */,
2958911D1EEB8E9600CE51E1 /* FLVSoundRate.swift */,
295891291EEB8F1D00CE51E1 /* FLVSoundSize.swift */,
2958912D1EEB8F4100CE51E1 /* FLVSoundType.swift */,
295891151EEB8DFC00CE51E1 /* FLVTagType.swift */,
BC1DC5052A02963600E928ED /* FLVTagType.swift */,
2958910D1EEB8D3C00CE51E1 /* FLVVideoCodec.swift */,
BC1DC4FA2A02868900E928ED /* FLVVideoFourCC.swift */,
BC1DC50D2A039E1900E928ED /* FLVVideoPacketType.swift */,
);
path = FLV;
sourceTree = "<group>";
@ -1157,6 +1172,7 @@
295018191FFA196800358E10 /* Codec */,
294637A71EC89BC9008EEC71 /* Config.swift */,
291C2AD21CE9FF48006F042B /* Core */,
BC1DC5022A02893600E928ED /* FLV */,
291C2AD31CE9FF68006F042B /* HTTP */,
29798E5D1CE60E5300F5CBD0 /* Info.plist */,
BC0BF4F329866FB700D72CB4 /* Media */,
@ -1343,6 +1359,14 @@
path = Media;
sourceTree = "<group>";
};
BC1DC5022A02893600E928ED /* FLV */ = {
isa = PBXGroup;
children = (
BC1DC5032A02894D00E928ED /* FLVVideoFourCCTests.swift */,
);
path = FLV;
sourceTree = "<group>";
};
BC3004FA296C3FC400119932 /* Extension */ = {
isa = PBXGroup;
children = (
@ -1358,11 +1382,13 @@
children = (
BC7C56CC29A786AE00C41A9B /* ADTS.swift */,
29B8767D1CD70AE800FC07DA /* AudioSpecificConfig.swift */,
29B8767E1CD70AE800FC07DA /* AVCConfigurationRecord.swift */,
29B8767E1CD70AE800FC07DA /* AVCDecoderConfigurationRecord.swift */,
BCB9773E2621812800C9A649 /* AVCFormatStream.swift */,
BCCBCE9629A90D880095B51C /* AVCNALUnit.swift */,
29B876B91CD70B3900FC07DA /* CRC32.swift */,
BCC1A72A264FAC1800661156 /* ESSpecificData.swift */,
BCCBCE9629A90D880095B51C /* NALUnit.swift */,
BC1DC5092A039B4400E928ED /* HEVCDecoderConfigurationRecord.swift */,
BC1DC5132A05428800E928ED /* HEVCNALUnit.swift */,
29B876801CD70AE800FC07DA /* PacketizedElementaryStream.swift */,
BCB976DE26107B5600C9A649 /* TSField.swift */,
29B876821CD70AE800FC07DA /* TSPacket.swift */,
@ -1866,7 +1892,6 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
295891161EEB8DFC00CE51E1 /* FLVTagType.swift in Sources */,
BC4914AE28DDF445009E2DF6 /* VTDecompressionSession+Extension.swift in Sources */,
29B876B11CD70B2800FC07DA /* RTMPMessage.swift in Sources */,
2941746B22D069B300A2944F /* AudioEffect.swift in Sources */,
@ -1875,7 +1900,6 @@
BC4914A228DDD33D009E2DF6 /* VTSessionConvertible.swift in Sources */,
2915EC4D1D85BB8C00621092 /* RTMPTSocket.swift in Sources */,
BC11023E2917C35B00D48035 /* CVPixelBufferPool+Extension.swift in Sources */,
2958910A1EEB8D1800CE51E1 /* FLVReader.swift in Sources */,
29C2631C1D0083B50098D4EF /* IOVideoUnit.swift in Sources */,
29B876B41CD70B2800FC07DA /* RTMPSharedObject.swift in Sources */,
2901A4EE1D437170002BBD23 /* MediaLink.swift in Sources */,
@ -1889,17 +1913,19 @@
29B8765D1CD70A7900FC07DA /* VideoCodec.swift in Sources */,
2999C3752071138F00892E55 /* MTHKView.swift in Sources */,
29AF3FCF1D7C744C00E41212 /* NetStream.swift in Sources */,
294B2D3223785E3800CE7BDC /* RingBuffer.swift in Sources */,
2958910E1EEB8D3C00CE51E1 /* FLVVideoCodec.swift in Sources */,
BC1DC5142A05428800E928ED /* HEVCNALUnit.swift in Sources */,
BC6FC9222961B3D800A746EE /* vImage_CGImageFormat+Extension.swift in Sources */,
299B13271D3B751400A1E8F5 /* HKView.swift in Sources */,
BC44A1A923D31E92002D4297 /* AudioCodecRingBuffer.swift in Sources */,
BC20DF38250377A3007BC608 /* IOUIScreenCaptureUnit.swift in Sources */,
29B876AF1CD70B2800FC07DA /* RTMPChunk.swift in Sources */,
29B876841CD70AE800FC07DA /* AVCConfigurationRecord.swift in Sources */,
BC8446052A30BE1600609FFD /* CMAudioSampleBufferUtil.swift in Sources */,
29B876841CD70AE800FC07DA /* AVCDecoderConfigurationRecord.swift in Sources */,
296242621D8DB86500C451A3 /* TSWriter.swift in Sources */,
BC9CFA9323BDE8B700917EEF /* NetStreamDrawable.swift in Sources */,
29B8769B1CD70B1100FC07DA /* MIME.swift in Sources */,
BC1DC50E2A039E1900E928ED /* FLVVideoPacketType.swift in Sources */,
29B8769C1CD70B1100FC07DA /* NetClient.swift in Sources */,
29B876871CD70AE800FC07DA /* TSProgram.swift in Sources */,
BC4C9EAF23F2E736004A14F2 /* AudioStreamBasicDescription+Extension.swift in Sources */,
@ -1914,6 +1940,7 @@
BC3004CE296B0A1700119932 /* Shape.swift in Sources */,
BC34FA0B286CB90A00EFAF27 /* PiPHKView.swift in Sources */,
293B42E92340B4840086F973 /* RTMPObjectEncoding.swift in Sources */,
BC1DC4FB2A02868900E928ED /* FLVVideoFourCC.swift in Sources */,
2976A47E1D48C5C700B53EF2 /* IORecorder.swift in Sources */,
BC110257292E661E00D48035 /* MultiCamCaptureSettings.swift in Sources */,
29B876B21CD70B2800FC07DA /* RTMPMuxer.swift in Sources */,
@ -1924,7 +1951,7 @@
2958912A1EEB8F1D00CE51E1 /* FLVSoundSize.swift in Sources */,
29EA87DC1E79A0460043A5F8 /* Data+Extension.swift in Sources */,
29DF20622312A3DD004057C3 /* RTMPNWSocket.swift in Sources */,
BCCBCE9729A90D880095B51C /* NALUnit.swift in Sources */,
BCCBCE9729A90D880095B51C /* AVCNALUnit.swift in Sources */,
29B876BD1CD70B3900FC07DA /* CRC32.swift in Sources */,
BCA2252C293CC5B600DD7CB2 /* IOScreenCaptureUnit.swift in Sources */,
BC4914A628DDD367009E2DF6 /* VTSessionOption.swift in Sources */,
@ -1949,6 +1976,7 @@
29B876831CD70AE800FC07DA /* AudioSpecificConfig.swift in Sources */,
295891121EEB8D7200CE51E1 /* FLVFrameType.swift in Sources */,
29B876961CD70AFE00FC07DA /* VideoEffect.swift in Sources */,
BC1DC5062A02963600E928ED /* FLVTagType.swift in Sources */,
29B876691CD70AB300FC07DA /* Constants.swift in Sources */,
29B8766D1CD70AB300FC07DA /* DataConvertible.swift in Sources */,
29B876781CD70ACE00FC07DA /* HTTPService.swift in Sources */,
@ -1964,6 +1992,7 @@
BC4914B628DEC2FE009E2DF6 /* VTSessionMode.swift in Sources */,
295891261EEB8EF300CE51E1 /* FLVAACPacket.swift in Sources */,
29B876791CD70ACE00FC07DA /* HTTPStream.swift in Sources */,
BC1DC50A2A039B4400E928ED /* HEVCDecoderConfigurationRecord.swift in Sources */,
BC6FC91E29609A6800A746EE /* ShapeFactory.swift in Sources */,
BC32E88829C9971100051507 /* InstanceHolder.swift in Sources */,
BC7C56B7299E579F00C41A9B /* AudioCodecSettings.swift in Sources */,
@ -1987,7 +2016,6 @@
buildActionMask = 2147483647;
files = (
290EA89B1DFB619600053022 /* TSPacketTests.swift in Sources */,
294637A41EC8961C008EEC71 /* RTMPReaderTests.swift in Sources */,
BCCBCE9529A7C9C90095B51C /* AVCFormatStreamTests.swift in Sources */,
290EA8A91DFB61E700053022 /* ByteArrayTests.swift in Sources */,
295018221FFA1C9D00358E10 /* SinWaveUtil.swift in Sources */,
@ -1998,6 +2026,7 @@
295018201FFA1BD700358E10 /* AudioCodecTests.swift in Sources */,
290EA8AC1DFB61E700053022 /* MD5Tests.swift in Sources */,
290EA8A01DFB61B100053022 /* AMFFoundationTests.swift in Sources */,
BC8446092A30BFC800609FFD /* CMAudioSampleBufferUtilTests.swift in Sources */,
BC7C56892995082700C41A9B /* NetStreamTests.swift in Sources */,
2917CB662104CA2800F6823A /* AudioSpecificConfigTests.swift in Sources */,
290EA8AB1DFB61E700053022 /* EventDispatcherTests.swift in Sources */,
@ -2008,7 +2037,9 @@
290EA89A1DFB619600053022 /* TSProgramTests.swift in Sources */,
BCCBCEA029ADF55A0095B51C /* AudioCodecBufferTests.swift in Sources */,
BC0BF4F72986CE8700D72CB4 /* VideoCodecTests.swift in Sources */,
BC1DC5042A02894D00E928ED /* FLVVideoFourCCTests.swift in Sources */,
290EA8931DFB617800053022 /* HTTPRequestTests.swift in Sources */,
BC1DC5122A04E46E00E928ED /* HEVCDecoderConfigurationRecordTests.swift in Sources */,
2976077F20A89FBB00DCF24F /* RTMPMessageTests.swift in Sources */,
BC7C56C729A7701F00C41A9B /* ESSpecificDataTests.swift in Sources */,
BCCBCE9B29A9D96A0095B51C /* NALUnitReaderTests.swift in Sources */,
@ -2018,7 +2049,6 @@
035AFA042263868E009DD0BB /* RTMPStreamTests.swift in Sources */,
290686031DFDB7A7008EB7ED /* RTMPConnectionTests.swift in Sources */,
BCC9E9092636FF7400948774 /* DataBufferTests.swift in Sources */,
2940EF4F2380116500430456 /* RingBufferTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -2034,7 +2064,6 @@
29B876F01CD70D5900FC07DA /* Constants.swift in Sources */,
29EA87D91E79A0090043A5F8 /* URL+Extension.swift in Sources */,
292AC17C1CF4C871004F5730 /* MD5.swift in Sources */,
2958910B1EEB8D1800CE51E1 /* FLVReader.swift in Sources */,
29B876F41CD70D5900FC07DA /* DataConvertible.swift in Sources */,
2916196D1E7F0777009FB344 /* CMFormatDescription+Extension.swift in Sources */,
29DF20632312A3DD004057C3 /* RTMPNWSocket.swift in Sources */,
@ -2051,6 +2080,7 @@
296543631D62FE9000734698 /* HKView-macOS.swift in Sources */,
BC11024B2925147300D48035 /* IOCaptureUnit.swift in Sources */,
29B876FA1CD70D5900FC07DA /* M3U.swift in Sources */,
BC1DC4FC2A02868900E928ED /* FLVVideoFourCC.swift in Sources */,
29B876FD1CD70D5A00FC07DA /* AudioSpecificConfig.swift in Sources */,
BC32E88929C9971100051507 /* InstanceHolder.swift in Sources */,
BC7C56C0299FC38D00C41A9B /* VideoSize.swift in Sources */,
@ -2058,11 +2088,11 @@
2941746C22D069B300A2944F /* AudioEffect.swift in Sources */,
BC9CFA9423BDE8B700917EEF /* NetStreamDrawable.swift in Sources */,
296242631D8DBA8C00C451A3 /* TSReader.swift in Sources */,
29B876FE1CD70D5A00FC07DA /* AVCConfigurationRecord.swift in Sources */,
295891171EEB8DFC00CE51E1 /* FLVTagType.swift in Sources */,
29B876FE1CD70D5A00FC07DA /* AVCDecoderConfigurationRecord.swift in Sources */,
294852571D852499002DE492 /* RTMPTSocket.swift in Sources */,
BC83A4742403D83B006BDE06 /* VTCompressionSession+Extension.swift in Sources */,
BCC1A72C264FAC1800661156 /* ESSpecificData.swift in Sources */,
BC1DC50B2A039B4400E928ED /* HEVCDecoderConfigurationRecord.swift in Sources */,
BC1DC4A529F4F74F00E928ED /* AVCaptureSession+Extension.swift in Sources */,
BC110258292E661E00D48035 /* MultiCamCaptureSettings.swift in Sources */,
29B877001CD70D5A00FC07DA /* PacketizedElementaryStream.swift in Sources */,
@ -2080,7 +2110,6 @@
29B877031CD70D5A00FC07DA /* IOAudioUnit.swift in Sources */,
BC0D236E26331BAB001DDA0C /* DataBuffer.swift in Sources */,
29B877051CD70D5A00FC07DA /* IOMixer.swift in Sources */,
294B2D3323785E3800CE7BDC /* RingBuffer.swift in Sources */,
2976A47F1D48FD6900B53EF2 /* IORecorder.swift in Sources */,
BC44A1AA23D31E92002D4297 /* AudioCodecRingBuffer.swift in Sources */,
29B877071CD70D5A00FC07DA /* SoundTransform.swift in Sources */,
@ -2092,10 +2121,13 @@
29B8770B1CD70D5A00FC07DA /* NetClient.swift in Sources */,
29EA87EE1E79A3E30043A5F8 /* CVPixelBuffer+Extension.swift in Sources */,
29B8770C1CD70D5A00FC07DA /* NetService.swift in Sources */,
BC1DC5152A05428800E928ED /* HEVCNALUnit.swift in Sources */,
BC8446062A30BE1600609FFD /* CMAudioSampleBufferUtil.swift in Sources */,
2958911B1EEB8E3F00CE51E1 /* FLVAudioCodec.swift in Sources */,
BC4914A328DDD33D009E2DF6 /* VTSessionConvertible.swift in Sources */,
293B42EA2340B4840086F973 /* RTMPObjectEncoding.swift in Sources */,
29DC17B421D0CC0600E26CED /* Atomic.swift in Sources */,
BC1DC50F2A039E1900E928ED /* FLVVideoPacketType.swift in Sources */,
BC959EF0296EE4190067BA97 /* ImageTransform.swift in Sources */,
BC9F9C7926F8C16600B01ED0 /* Choreographer.swift in Sources */,
BC558269240BB40E00011AC0 /* RTMPStreamInfo.swift in Sources */,
@ -2125,13 +2157,14 @@
BCB976E026107B5600C9A649 /* TSField.swift in Sources */,
29B877191CD70D5A00FC07DA /* RTMPStream.swift in Sources */,
29B8771B1CD70D5A00FC07DA /* ByteArray.swift in Sources */,
BCCBCE9829A90D880095B51C /* NALUnit.swift in Sources */,
BCCBCE9829A90D880095B51C /* AVCNALUnit.swift in Sources */,
295891231EEB8EC500CE51E1 /* FLVAVCPacketType.swift in Sources */,
29EA87DA1E79A00E0043A5F8 /* ExpressibleByIntegerLiteral+Extension.swift in Sources */,
BC7C56B8299E579F00C41A9B /* AudioCodecSettings.swift in Sources */,
29D0E3681DD4CE3700863B3B /* AnyUtil.swift in Sources */,
29B8771C1CD70D5A00FC07DA /* CRC32.swift in Sources */,
2958912B1EEB8F1D00CE51E1 /* FLVSoundSize.swift in Sources */,
BC1DC5072A02963600E928ED /* FLVTagType.swift in Sources */,
BC4914B328DDFE31009E2DF6 /* VTSessionOptionKey.swift in Sources */,
29B8771D1CD70D5A00FC07DA /* EventDispatcher.swift in Sources */,
BC7C56CE29A786AE00C41A9B /* ADTS.swift in Sources */,
@ -2180,7 +2213,6 @@
buildActionMask = 2147483647;
files = (
BC55826A240BB40E00011AC0 /* RTMPStreamInfo.swift in Sources */,
294B2D3423785E3800CE7BDC /* RingBuffer.swift in Sources */,
29EB3E1F1ED059F7001CAE8B /* RTMPChunk.swift in Sources */,
29EB3DFA1ED057A1001CAE8B /* CMVideoFormatDescription+Extension.swift in Sources */,
BC6FC9242961B3D800A746EE /* vImage_CGImageFormat+Extension.swift in Sources */,
@ -2191,7 +2223,6 @@
29EB3E321ED05A2C001CAE8B /* ByteArray.swift in Sources */,
29EB3E191ED05898001CAE8B /* NetSocket.swift in Sources */,
29EB3E101ED0587F001CAE8B /* IORecorder.swift in Sources */,
2958910C1EEB8D1800CE51E1 /* FLVReader.swift in Sources */,
29EB3E0F1ED0587C001CAE8B /* IOMixer.swift in Sources */,
BC34FA0F286CBD6F00EFAF27 /* PiPHKView.swift in Sources */,
BC7A23F625171C8F0089F77C /* MTHKView.swift in Sources */,
@ -2202,11 +2233,12 @@
BC7C56B9299E579F00C41A9B /* AudioCodecSettings.swift in Sources */,
29EB3DF01ED05768001CAE8B /* VideoCodec.swift in Sources */,
29EB3E351ED05A33001CAE8B /* DeviceUtil.swift in Sources */,
BCCBCE9929A90D880095B51C /* NALUnit.swift in Sources */,
BCCBCE9929A90D880095B51C /* AVCNALUnit.swift in Sources */,
29DC17B521D0CC0600E26CED /* Atomic.swift in Sources */,
BC7C56CF29A786AE00C41A9B /* ADTS.swift in Sources */,
BC44A1AB23D31E92002D4297 /* AudioCodecRingBuffer.swift in Sources */,
29EB3E261ED05A07001CAE8B /* RTMPStream.swift in Sources */,
BC1DC5082A02963600E928ED /* FLVTagType.swift in Sources */,
29DF20642312A3DD004057C3 /* RTMPNWSocket.swift in Sources */,
29EB3E131ED05887001CAE8B /* SoundTransform.swift in Sources */,
29EB3DF81ED05799001CAE8B /* Mirror+Extension.swift in Sources */,
@ -2215,6 +2247,7 @@
BC83A4752403D83B006BDE06 /* VTCompressionSession+Extension.swift in Sources */,
BC9CFA9523BDE8B700917EEF /* NetStreamDrawable.swift in Sources */,
29EB3E031ED0585D001CAE8B /* AudioSpecificConfig.swift in Sources */,
BC8446072A30BE1600609FFD /* CMAudioSampleBufferUtil.swift in Sources */,
29EB3E141ED05889001CAE8B /* IOVideoUnit.swift in Sources */,
29EB3E221ED059FD001CAE8B /* RTMPMessage.swift in Sources */,
29EB3E001ED05854001CAE8B /* HTTPService.swift in Sources */,
@ -2223,6 +2256,7 @@
29EB3E0D1ED05877001CAE8B /* IOAudioUnit.swift in Sources */,
2942A4FA21A9418A004E1BEE /* Running.swift in Sources */,
295891101EEB8D3C00CE51E1 /* FLVVideoCodec.swift in Sources */,
BC1DC5102A039E1900E928ED /* FLVVideoPacketType.swift in Sources */,
29EB3DFD1ED05847001CAE8B /* CVPixelBuffer+Extension.swift in Sources */,
BCC1A72D264FAC1800661156 /* ESSpecificData.swift in Sources */,
BCB976E126107B5600C9A649 /* TSField.swift in Sources */,
@ -2233,7 +2267,7 @@
BC4914A428DDD33D009E2DF6 /* VTSessionConvertible.swift in Sources */,
2941746D22D069B300A2944F /* AudioEffect.swift in Sources */,
29EB3E151ED0588C001CAE8B /* VideoEffect.swift in Sources */,
29EB3E041ED05860001CAE8B /* AVCConfigurationRecord.swift in Sources */,
29EB3E041ED05860001CAE8B /* AVCDecoderConfigurationRecord.swift in Sources */,
29EB3DF71ED05797001CAE8B /* URL+Extension.swift in Sources */,
29DF20682312A436004057C3 /* RTMPSocketCompatible.swift in Sources */,
29EB3E0B1ED05871001CAE8B /* TSReader.swift in Sources */,
@ -2246,10 +2280,10 @@
29EB3E1B1ED0589F001CAE8B /* AMF0Serializer.swift in Sources */,
BC6FC92029609A6800A746EE /* ShapeFactory.swift in Sources */,
29EB3E0C1ED05874001CAE8B /* TSWriter.swift in Sources */,
295891181EEB8DFC00CE51E1 /* FLVTagType.swift in Sources */,
BC4914B428DDFE31009E2DF6 /* VTSessionOptionKey.swift in Sources */,
29EB3DF91ED0579C001CAE8B /* ExpressibleByIntegerLiteral+Extension.swift in Sources */,
29EB3E201ED059F9001CAE8B /* RTMPConnection.swift in Sources */,
BC1DC5162A05428800E928ED /* HEVCNALUnit.swift in Sources */,
29EB3E331ED05A2E001CAE8B /* MediaLink.swift in Sources */,
29EB3E1D1ED058A5001CAE8B /* AMFFoundation.swift in Sources */,
29EB3E251ED05A04001CAE8B /* RTMPSocket.swift in Sources */,
@ -2260,6 +2294,7 @@
29EB3E231ED059FF001CAE8B /* RTMPMuxer.swift in Sources */,
29EB3DF11ED0576C001CAE8B /* Constants.swift in Sources */,
29EB3E011ED05856001CAE8B /* HTTPStream.swift in Sources */,
BC1DC50C2A039B4400E928ED /* HEVCDecoderConfigurationRecord.swift in Sources */,
29EB3E171ED05893001CAE8B /* NetClient.swift in Sources */,
BC1DC4A629F4F74F00E928ED /* AVCaptureSession+Extension.swift in Sources */,
BC0D236F26331BAB001DDA0C /* DataBuffer.swift in Sources */,
@ -2284,6 +2319,7 @@
BC566F7025D2ECC500573C4C /* HLSService.swift in Sources */,
29EB3E181ED05896001CAE8B /* NetService.swift in Sources */,
295891281EEB8EF300CE51E1 /* FLVAACPacket.swift in Sources */,
BC1DC4FD2A02868900E928ED /* FLVVideoFourCC.swift in Sources */,
BC4914B828DEC2FE009E2DF6 /* VTSessionMode.swift in Sources */,
2958911C1EEB8E3F00CE51E1 /* FLVAudioCodec.swift in Sources */,
29EB3DF61ED0577C001CAE8B /* CMSampleBuffer+Extension.swift in Sources */,
@ -2577,9 +2613,9 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.5.0;
MARKETING_VERSION = 1.5.2;
ONLY_ACTIVE_ARCH = YES;
"OTHER_SWIFT_FLAGS[arch=*]" = "-Xfrontend -debug-time-function-bodies";
"OTHER_SWIFT_FLAGS[arch=*]" = "";
PRODUCT_BUNDLE_IDENTIFIER = com.haishinkit.HaishinKit;
PRODUCT_NAME = HaishinKit;
PROVISIONING_PROFILE = "";
@ -2611,7 +2647,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.5.0;
MARKETING_VERSION = 1.5.2;
PRODUCT_BUNDLE_IDENTIFIER = com.haishinkit.HaishinKit;
PRODUCT_NAME = HaishinKit;
PROVISIONING_PROFILE = "";
@ -2688,8 +2724,8 @@
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.13;
MARKETING_VERSION = 1.5.0;
"OTHER_SWIFT_FLAGS[arch=*]" = "-Xfrontend -debug-time-function-bodies";
MARKETING_VERSION = 1.5.2;
"OTHER_SWIFT_FLAGS[arch=*]" = "";
PRODUCT_BUNDLE_IDENTIFIER = com.haishinkit.HaishinKit;
PRODUCT_NAME = HaishinKit;
SDKROOT = macosx;
@ -2720,7 +2756,7 @@
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.13;
MARKETING_VERSION = 1.5.0;
MARKETING_VERSION = 1.5.2;
PRODUCT_BUNDLE_IDENTIFIER = com.haishinkit.HaishinKit;
PRODUCT_NAME = HaishinKit;
SDKROOT = macosx;
@ -2853,7 +2889,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.5.0;
MARKETING_VERSION = 1.5.2;
PRODUCT_BUNDLE_IDENTIFIER = com.haishinkit.HaishinKit;
PRODUCT_NAME = HaishinKit;
PROVISIONING_PROFILE_SPECIFIER = "";
@ -2889,7 +2925,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.5.0;
MARKETING_VERSION = 1.5.2;
PRODUCT_BUNDLE_IDENTIFIER = com.haishinkit.HaishinKit;
PRODUCT_NAME = HaishinKit;
PROVISIONING_PROFILE_SPECIFIER = "";

View File

@ -1,10 +1,12 @@
# HaishinKit for iOS, macOS, tvOS, and [Android](https://github.com/shogo4405/HaishinKit.kt).
[![GitHub Stars](https://img.shields.io/github/stars/shogo4405/HaishinKit.swift?style=social)](https://github.com/shogo4405/HaishinKit.swift/stargazers)
[![Release](https://img.shields.io/github/v/release/shogo4405/HaishinKit.swift)](https://github.com/shogo4405/HaishinKit.swift/releases/latest)
[![Platform Compatibility](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fshogo4405%2FHaishinKit.swift%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/shogo4405/HaishinKit.swift)
[![Swift Compatibility](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fshogo4405%2FHaishinKit.swift%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/shogo4405/HaishinKit.swift)
[![GitHub license](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://raw.githubusercontent.com/shogo4405/HaishinKit.swift/master/LICENSE.md)
* Camera and Microphone streaming library via RTMP, HLS for iOS, macOS, tvOS.
* README.md contains unreleased content, which can be tested on the main branch.
* [API Documentation](https://shogo4405.github.io/HaishinKit.swift/documentation/haishinkit)
<p align="center">
@ -33,10 +35,17 @@ Enterprise Grade APIs for Feeds & Chat. <a href="https://getstream.io/tutorials/
<a href="https://streamlabs.com/" target="_blank"><img src="https://user-images.githubusercontent.com/810189/206836172-9c360977-ab6b-4eff-860b-82d0e7b06318.png" width="350px" alt="Streamlabs" /></a>
</p>
## 🌏 Related projects
Project name |Notes |License
----------------|------------|--------------
[SRTHaishinKit for iOS.](https://github.com/shogo4405/SRTHaishinKit.swift)|Camera and Microphone streaming library via SRT.|[BSD 3-Clause "New" or "Revised" License](https://github.com/shogo4405/SRTHaishinKit.swift/blob/master/LICENSE.md)
[HaishinKit for Android.](https://github.com/shogo4405/HaishinKit.kt)|Camera and Microphone streaming library via RTMP for Android.|[BSD 3-Clause "New" or "Revised" License](https://github.com/shogo4405/HaishinKit.kt/blob/master/LICENSE.md)
[HaishinKit for Flutter.](https://github.com/shogo4405/HaishinKit.dart)|Camera and Microphone streaming library via RTMP for Flutter.|[BSD 3-Clause "New" or "Revised" License](https://github.com/shogo4405/HaishinKit.dart/blob/master/LICENSE.md)
## 🎨 Features
### RTMP
- [x] Authentication
- [x] Publish and Recording (H264/AAC)
- [x] Publish and Recording
- [x] _Playback (Beta)_
- [x] Adaptive bitrate streaming
- [x] Handling (see also [#1153](/../../issues/1153))
@ -49,6 +58,14 @@ Enterprise Grade APIs for Feeds & Chat. <a href="https://getstream.io/tutorials/
- [x] _Tunneled (RTMPT over SSL/TLS) (Technical Preview)_
- [x] _RTMPT (Technical Preview)_
- [x] ReplayKit Live as a Broadcast Upload Extension
- [x] Supported codec
- Audio
- [x] AAC
- Video
- [x] H264/AVC
- ex: `stream.videoSettings.profileLevel = kVTProfileLevel_H264_Baseline_3_1 as String`
- [x] H265/HEVC ([Server-side support is required.](https://github.com/veovera/enhanced-rtmp/blob/main/enhanced-rtmp-v1.pdf))
- ex: `stream.videoSettings.profileLevel = kVTProfileLevel_HEVC_Main_AutoLevel as String`
### HLS
- [x] HTTPService
@ -75,11 +92,11 @@ if #available(iOS 13.0, *) {
|Features|[HKView](https://shogo4405.github.io/HaishinKit.swift/Classes/HKView.html)|[PiPHKView](https://shogo4405.github.io/HaishinKit.swift/Classes/PiPHKView.html)|[MTHKView](https://shogo4405.github.io/HaishinKit.swift/Classes/MTHKView.html)|
|-|:---:|:---:|:---:|
|Engine|AVCaptureVideoPreviewLayer|AVSampleBufferDisplayLayer|Metal|
|Publish|◯|◯|◯|
|Playback|×|◯|◯|
|VisualEffect|×|◯|◯|
|PictureInPicture|×|◯|×|
|MultiCamera|×|◯|◯|
|Publish|✔|✔|✔|
|Playback|<br />|✔|✔|
|VisualEffect|<br />|✔|✔|
|PictureInPicture|<br />|✔|<br />|
|MultiCamera|<br />|✔|✔|
### Others
- [x] [Support multitasking camera access.](https://developer.apple.com/documentation/avfoundation/capture_setup/accessing_the_camera_while_multitasking)
@ -96,8 +113,6 @@ if #available(iOS 13.0, *) {
|:----:|:----:|:----:|:----:|:----:|:----:|
|1.5.0+|11.0+|10.13+|10.2+|14.3+|5.7+|
|1.4.0+|11.0+|10.13+|10.2+|14.0+|5.7+|
|1.3.0+|11.0+|10.13+|10.2+|14.0+|5.7+|
|1.2.0+|9.0+|10.11+|10.2+|13.0+|5.5+|
## 🐾 Examples
Examples project are available for iOS with UIKit, iOS with SwiftUI, macOS and tvOS.
@ -128,7 +143,7 @@ source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
def import_pods
pod 'HaishinKit', '~> 1.5.0
pod 'HaishinKit', '~> 1.5.2
end
target 'Your Target' do
@ -138,7 +153,7 @@ end
```
### Carthage
```
github "shogo4405/HaishinKit.swift" ~> 1.5.0
github "shogo4405/HaishinKit.swift" ~> 1.5.2
```
### Swift Package Manager
```

View File

@ -25,7 +25,7 @@ public class AudioCodec {
}
/// Specifies the delegate.
public weak var delegate: AudioCodecDelegate?
public weak var delegate: (any AudioCodecDelegate)?
/// This instance is running to process(true) or not(false).
public private(set) var isRunning: Atomic<Bool> = .init(false)
/// Specifies the settings for audio codec.

View File

@ -5,7 +5,7 @@ enum VTSessionMode {
case compression
case decompression
func makeSession(_ videoCodec: VideoCodec) -> VTSessionConvertible? {
func makeSession(_ videoCodec: VideoCodec) -> (any VTSessionConvertible)? {
switch self {
case .compression:
var session: VTCompressionSession?
@ -13,7 +13,7 @@ enum VTSessionMode {
allocator: kCFAllocatorDefault,
width: videoCodec.settings.videoSize.width,
height: videoCodec.settings.videoSize.height,
codecType: kCMVideoCodecType_H264,
codecType: videoCodec.settings.format.codecType,
encoderSpecification: nil,
imageBufferAttributes: videoCodec.attributes as CFDictionary?,
compressedDataAllocator: nil,

View File

@ -25,16 +25,6 @@ public protocol VideoCodecDelegate: AnyObject {
* The VideoCodec class provides methods for encode or decode for video.
*/
public class VideoCodec {
static let defaultMinimumGroupOfPictures: Int = 12
#if os(OSX)
#if arch(arm64)
static let encoderName = NSString(string: "com.apple.videotoolbox.videoencoder.ave.avc")
#else
static let encoderName = NSString(string: "com.apple.videotoolbox.videoencoder.h264.gva")
#endif
#endif
/**
* The VideoCodec error domain codes.
*/
@ -51,7 +41,7 @@ public class VideoCodec {
/// The videoCodec's attributes value.
public static var defaultAttributes: [NSString: AnyObject]? = [
kCVPixelBufferIOSurfacePropertiesKey: [:] as AnyObject,
kCVPixelBufferIOSurfacePropertiesKey: NSDictionary(),
kCVPixelBufferMetalCompatibilityKey: kCFBooleanTrue
]
@ -76,15 +66,10 @@ public class VideoCodec {
guard !CMFormatDescriptionEqual(formatDescription, otherFormatDescription: oldValue) else {
return
}
if let atoms: [String: AnyObject] = formatDescription?.`extension`(by: "SampleDescriptionExtensionAtoms"), let avcC: Data = atoms["avcC"] as? Data {
let config = AVCConfigurationRecord(data: avcC)
isBaseline = config.avcProfileIndication == 66
}
delegate?.videoCodec(self, didOutput: formatDescription)
}
}
var needsSync: Atomic<Bool> = .init(true)
var isBaseline = true
var attributes: [NSString: AnyObject]? {
guard VideoCodec.defaultAttributes != nil else {
return nil
@ -97,19 +82,17 @@ public class VideoCodec {
attributes[kCVPixelBufferHeightKey] = NSNumber(value: settings.videoSize.height)
return attributes
}
weak var delegate: VideoCodecDelegate?
private(set) var session: VTSessionConvertible? {
weak var delegate: (any VideoCodecDelegate)?
private(set) var session: (any VTSessionConvertible)? {
didSet {
oldValue?.invalidate()
invalidateSession = false
}
}
private var invalidateSession = true
private var buffers: [CMSampleBuffer] = []
private var minimumGroupOfPictures: Int = VideoCodec.defaultMinimumGroupOfPictures
func appendImageBuffer(_ imageBuffer: CVImageBuffer, presentationTimeStamp: CMTime, duration: CMTime) {
guard isRunning.value else {
guard isRunning.value, !(delegate?.videoCodecWillDropFame(self) ?? false) else {
return
}
if invalidateSession {
@ -125,14 +108,12 @@ public class VideoCodec {
return
}
formatDescription = sampleBuffer.formatDescription
if !(delegate?.videoCodecWillDropFame(self) ?? false) {
delegate?.videoCodec(self, didOutput: sampleBuffer)
}
delegate?.videoCodec(self, didOutput: sampleBuffer)
}
}
func appendSampleBuffer(_ sampleBuffer: CMSampleBuffer) {
guard isRunning.value, !(delegate?.videoCodecWillDropFame(self) ?? false) else {
guard isRunning.value else {
return
}
if invalidateSession {
@ -150,7 +131,7 @@ public class VideoCodec {
var timingInfo = CMSampleTimingInfo(
duration: duration,
presentationTimeStamp: presentationTimeStamp,
decodeTimeStamp: .invalid
decodeTimeStamp: sampleBuffer.decodeTimeStamp
)
var videoFormatDescription: CMVideoFormatDescription?
var status = CMVideoFormatDescriptionCreateForImageBuffer(
@ -177,18 +158,7 @@ public class VideoCodec {
delegate?.videoCodec(self, errorOccurred: .failedToFlame(status: status))
return
}
if isBaseline {
delegate?.videoCodec(self, didOutput: buffer)
} else {
buffers.append(buffer)
buffers.sort {
$0.presentationTimeStamp < $1.presentationTimeStamp
}
if minimumGroupOfPictures <= buffers.count {
delegate?.videoCodec(self, didOutput: buffers.removeFirst())
}
}
delegate?.videoCodec(self, didOutput: buffer)
}
}
@ -243,7 +213,6 @@ extension VideoCodec: Running {
self.session = nil
self.invalidateSession = true
self.needsSync.mutate { $0 = true }
self.buffers.removeAll()
self.formatDescription = nil
#if os(iOS)
NotificationCenter.default.removeObserver(self, name: AVAudioSession.interruptionNotification, object: nil)

View File

@ -43,6 +43,36 @@ public struct VideoCodecSettings: Codable {
case trim = "Trim"
}
/// The type of the VideoCodec supports format.
enum Format: Codable {
case h264
case hevc
#if os(macOS)
var encoderID: NSString {
switch self {
case .h264:
#if arch(arm64)
return NSString(string: "com.apple.videotoolbox.videoencoder.ave.avc")
#else
return NSString(string: "com.apple.videotoolbox.videoencoder.h264.gva")
#endif
case .hevc:
return NSString(string: "com.apple.videotoolbox.videoencoder.ave.hevc")
}
}
#endif
var codecType: UInt32 {
switch self {
case .h264:
return kCMVideoCodecType_H264
case .hevc:
return kCMVideoCodecType_HEVC
}
}
}
/// Specifies the video size of encoding video.
public var videoSize: VideoSize
/// Specifies the bitrate.
@ -57,10 +87,19 @@ public struct VideoCodecSettings: Codable {
/// Specifies the bitRateMode.
public var bitRateMode: BitRateMode
/// Specifies the H264 profileLevel.
public var profileLevel: String
/// Specifies the HardwareEncoder is enabled(TRUE), or not(FALSE) for macOS.
public var profileLevel: String {
didSet {
if profileLevel.contains("HEVC") {
format = .hevc
} else {
format = .h264
}
}
}
/// Specifies the HardwareEncoder is enabled(TRUE), or not(FALSE) for macOS.
public var isHardwareEncoderEnabled = true
var format: Format = .h264
var expectedFrameRate: Float64 = IOMixer.defaultFrameRate
/// Creates a new VideoCodecSettings instance.
@ -82,6 +121,9 @@ public struct VideoCodecSettings: Codable {
self.bitRateMode = bitRateMode
self.allowFrameReordering = allowFrameReordering
self.isHardwareEncoderEnabled = isHardwareEncoderEnabled
if profileLevel.contains("HEVC") {
self.format = .hevc
}
}
func invalidateSession(_ rhs: VideoCodecSettings) -> Bool {
@ -120,7 +162,7 @@ public struct VideoCodecSettings: Codable {
])
#if os(macOS)
if isHardwareEncoderEnabled {
options.insert(.init(key: .encoderID, value: VideoCodec.encoderName))
options.insert(.init(key: .encoderID, value: format.encoderID))
options.insert(.init(key: .enableHardwareAcceleratedVideoEncoder, value: kCFBooleanTrue))
options.insert(.init(key: .requireHardwareAcceleratedVideoEncoder, value: kCFBooleanTrue))
}

View File

@ -5,8 +5,4 @@ extension CMFormatDescription {
var _mediaType: CMMediaType {
CMFormatDescriptionGetMediaType(self)
}
func `extension`(by key: String) -> [String: AnyObject]? {
CMFormatDescriptionGetExtension(self, extensionKey: key as CFString) as? [String: AnyObject]
}
}

View File

@ -8,21 +8,4 @@ extension CMVideoFormatDescription {
var dimensions: CMVideoDimensions {
CMVideoFormatDescriptionGetDimensions(self)
}
static func create(pixelBuffer: CVPixelBuffer) -> CMVideoFormatDescription? {
var formatDescription: CMFormatDescription?
let status: OSStatus = CMVideoFormatDescriptionCreate(
allocator: kCFAllocatorDefault,
codecType: kCMVideoCodecType_422YpCbCr8,
width: Int32(pixelBuffer.width),
height: Int32(pixelBuffer.height),
extensions: nil,
formatDescriptionOut: &formatDescription
)
guard status == noErr else {
logger.warn("\(status)")
return nil
}
return formatDescription
}
}

View File

@ -1,5 +1,6 @@
import Accelerate
import CoreMedia
import CoreVideo
import Foundation
extension vImage_Buffer {
@ -19,6 +20,11 @@ extension vImage_Buffer {
mutating func copy(to cvPixelBuffer: CVPixelBuffer, format: inout vImage_CGImageFormat) -> vImage_Error {
let cvImageFormat = vImageCVImageFormat_CreateWithCVPixelBuffer(cvPixelBuffer).takeRetainedValue()
vImageCVImageFormat_SetColorSpace(cvImageFormat, CGColorSpaceCreateDeviceRGB())
defer {
if let dictionary = CVBufferGetAttachments(cvPixelBuffer, .shouldNotPropagate) {
CVBufferSetAttachments(cvPixelBuffer, dictionary, .shouldPropagate)
}
}
return vImageBuffer_CopyToCVPixelBuffer(
&self,
&format,

View File

@ -1,5 +1,5 @@
/// The type of flv supports aac packet types.
public enum FLVAACPacketType: UInt8 {
enum FLVAACPacketType: UInt8 {
/// The sequence data.
case seq = 0
/// The raw data.

View File

@ -1,5 +1,5 @@
/// The type of flv supports avc packet types.
public enum FLVAVCPacketType: UInt8 {
enum FLVAVCPacketType: UInt8 {
/// The sequence data.
case seq = 0
/// The NAL unit data.

View File

@ -1,7 +1,7 @@
import AVFoundation
/// The type of flv supports audio codecs.
public enum FLVAudioCodec: UInt8 {
enum FLVAudioCodec: UInt8 {
/// The PCM codec.
case pcm = 0
/// The ADPCM codec.

View File

@ -1,5 +1,5 @@
/// The type of flv supports video frame types.
public enum FLVFrameType: UInt8 {
enum FLVFrameType: UInt8 {
/// The keyframe.
case key = 1
/// The inter frame.

View File

@ -1,62 +0,0 @@
import AVFoundation
/// The FLVReader is used to read the contents of a FLV file.
public final class FLVReader {
/// The header of a FLV.
public static let header = Data([0x46, 0x4C, 0x56, 1])
/// The headerSize of a FLV.
static let headerSize: Int = 11
/// The url of a FLV file.
public let url: URL
private var currentOffSet: UInt64 = 0
private var fileHandle: FileHandle?
/// Initializes and returns a newly allocated reader.
public init(url: URL) {
do {
self.url = url
fileHandle = try FileHandle(forReadingFrom: url)
fileHandle?.seek(toFileOffset: 13)
currentOffSet = 13
} catch {
logger.error(error)
}
}
/// Returns data by FLVTag.
public func getData(_ tag: FLVTag) -> Data? {
fileHandle?.seek(toFileOffset: tag.offset)
return fileHandle?.readData(ofLength: Int(UInt64(tag.dataSize)))
}
}
extension FLVReader: IteratorProtocol {
// MARK: IteratorProtocol
public func next() -> FLVTag? {
guard let fileHandle: FileHandle = fileHandle else {
return nil
}
var tag: FLVTag!
fileHandle.seek(toFileOffset: currentOffSet)
let data: Data = fileHandle.readData(ofLength: FLVReader.headerSize)
guard !data.isEmpty else {
return nil
}
switch data[0] {
case 8:
tag = FLVAudioTag(data: data)
case 9:
tag = FLVVideoTag(data: data)
case 18:
tag = FLVDataTag(data: data)
default:
return nil
}
tag.readData(fileHandle)
tag.offset = currentOffSet + UInt64(FLVReader.headerSize)
currentOffSet += UInt64(FLVReader.headerSize) + UInt64(tag.dataSize) + 4
return tag
}
}

View File

@ -1,5 +1,5 @@
/// The type of flv supports audio sound rates.
public enum FLVSoundRate: UInt8 {
enum FLVSoundRate: UInt8 {
/// The sound rate of 5,500.0kHz.
case kHz5_5 = 0
/// Ths sound rate of 11,000.0kHz.
@ -10,7 +10,7 @@ public enum FLVSoundRate: UInt8 {
case kHz44 = 3
/// The float typed value.
public var floatValue: Float64 {
var floatValue: Float64 {
switch self {
case .kHz5_5:
return 5500

View File

@ -1,5 +1,5 @@
/// The type of flv supports audio sound size.
public enum FLVSoundSize: UInt8 {
enum FLVSoundSize: UInt8 {
/// The 8bit sound.
case snd8bit = 0
/// The 16bit sound.

View File

@ -1,5 +1,5 @@
/// The type of flv supports audio sound channel type..
public enum FLVSoundType: UInt8 {
enum FLVSoundType: UInt8 {
/// The mono sound.
case mono = 0
/// The stereo sound.

View File

@ -1,7 +1,7 @@
import Foundation
/// The type of flv tag.
public enum FLVTagType: UInt8 {
enum FLVTagType: UInt8 {
/// The Audio tag,
case audio = 8
/// The Video tag.
@ -29,127 +29,3 @@ public enum FLVTagType: UInt8 {
}
}
}
// MARK: -
/// The interface of FLV tag.
public protocol FLVTag: CustomDebugStringConvertible {
/// The type of this tag.
var tagType: FLVTagType { get set }
/// The length of data int the field.
var dataSize: UInt32 { get set }
/// The timestamp in milliseconds.
var timestamp: UInt32 { get set }
/// The extension of the timestamp.
var timestampExtended: UInt8 { get set }
/// The streamId, always 0.
var streamId: UInt32 { get set }
/// The data offset of a flv file.
var offset: UInt64 { get set }
/// Initialize a new object.
init()
/// Read data of fileHandler.
mutating func readData(_ fileHandler: FileHandle)
}
extension FLVTag {
var headerSize: Int {
tagType.headerSize
}
init?(data: Data) {
self.init()
let buffer = ByteArray(data: data)
do {
tagType = FLVTagType(rawValue: try buffer.readUInt8()) ?? .data
dataSize = try buffer.readUInt24()
timestamp = try buffer.readUInt24()
timestampExtended = try buffer.readUInt8()
streamId = try buffer.readUInt24()
buffer.clear()
} catch {
return nil
}
}
// MARK: CustomDebugStringConvertible
public var debugDescription: String {
Mirror(reflecting: self).debugDescription
}
}
// MARK: -
/// A structure that defines the FLVTag of Data.
public struct FLVDataTag: FLVTag {
public var tagType: FLVTagType = .data
public var dataSize: UInt32 = 0
public var timestamp: UInt32 = 0
public var timestampExtended: UInt8 = 0
public var streamId: UInt32 = 0
public var offset: UInt64 = 0
public init() {
}
public mutating func readData(_ fileHandler: FileHandle) {
}
}
// MARK: -
/// A structure that defines the FLVTag of an audio.
public struct FLVAudioTag: FLVTag {
public var tagType: FLVTagType = .audio
public var dataSize: UInt32 = 0
public var timestamp: UInt32 = 0
public var timestampExtended: UInt8 = 0
public var streamId: UInt32 = 0
public var offset: UInt64 = 0
/// Specifies the codec of audio.
public var codec: FLVAudioCodec = .unknown
/// Specifies the sound of rate.
public var soundRate: FLVSoundRate = .kHz5_5
/// Specifies the sound of size.
public var soundSize: FLVSoundSize = .snd8bit
/// Specifies the sound of type.
public var soundType: FLVSoundType = .mono
public init() {
}
public mutating func readData(_ fileHandler: FileHandle) {
let data: Data = fileHandler.readData(ofLength: headerSize)
codec = FLVAudioCodec(rawValue: data[0] >> 4) ?? .unknown
soundRate = FLVSoundRate(rawValue: (data[0] & 0b00001100) >> 2) ?? .kHz5_5
soundSize = FLVSoundSize(rawValue: (data[0] & 0b00000010) >> 1) ?? .snd8bit
soundType = FLVSoundType(rawValue: data[0] & 0b00000001) ?? .mono
}
}
// MARK: -
/// A structure that defines the FLVTag of am video.
public struct FLVVideoTag: FLVTag {
public var tagType: FLVTagType = .video
public var dataSize: UInt32 = 0
public var timestamp: UInt32 = 0
public var timestampExtended: UInt8 = 0
public var streamId: UInt32 = 0
public var offset: UInt64 = 0
/// Specifies the frame type of video.
public var frameType: FLVFrameType = .command
/// Specifies the codec of video.
public var codec: FLVVideoCodec = .unknown
/// Specifies the avc packet type.
public var avcPacketType: FLVAVCPacketType = .eos
/// Specifies the composition time.
public var compositionTime: Int32 = 0
public init() {
}
public mutating func readData(_ fileHandler: FileHandle) {
let data: Data = fileHandler.readData(ofLength: headerSize)
frameType = FLVFrameType(rawValue: data[0] >> 4) ?? .command
codec = FLVVideoCodec(rawValue: data[0] & 0b00001111) ?? .unknown
avcPacketType = FLVAVCPacketType(rawValue: data[1]) ?? .eos
}
}

View File

@ -1,7 +1,7 @@
import Foundation
/// The type of flv supports video codecs.
public enum FLVVideoCodec: UInt8 {
enum FLVVideoCodec: UInt8 {
/// The JPEG codec.
case jpeg = 1
/// The Sorenson H263 codec.

View File

@ -0,0 +1,18 @@
import Foundation
enum FLVVideoFourCC: UInt32 {
case av1 = 0x61763031 // { 'a', 'v', '0', '1' }
case vp9 = 0x76703039 // { 'v', 'p', '0', '9' }
case hevc = 0x68766331 // { 'h', 'v', 'c', '1' }
var isSupported: Bool {
switch self {
case .av1:
return false
case .vp9:
return false
case .hevc:
return true
}
}
}

View File

@ -0,0 +1,10 @@
import Foundation
enum FLVVideoPacketType: UInt8 {
case sequenceStart = 0
case codedFrames = 1
case sequenceEnd = 2
case codedFramesX = 3
case metadata = 4
case mpeg2TSSequenceStart = 5
}

View File

@ -1,16 +1,20 @@
import AVFoundation
import VideoToolbox
protocol DecoderConfigurationRecord {
func makeFormatDescription(_ formatDescriptionOut: UnsafeMutablePointer<CMFormatDescription?>) -> OSStatus
}
// MARK: -
/*
- seealso: ISO/IEC 14496-15 2010
*/
struct AVCConfigurationRecord {
struct AVCDecoderConfigurationRecord: DecoderConfigurationRecord {
static func getData(_ formatDescription: CMFormatDescription?) -> Data? {
guard let formatDescription = formatDescription else {
guard let formatDescription else {
return nil
}
if let atoms: NSDictionary = CMFormatDescriptionGetExtension(formatDescription, extensionKey: "SampleDescriptionExtensionAtoms" as CFString) as? NSDictionary {
if let atoms = CMFormatDescriptionGetExtension(formatDescription, extensionKey: "SampleDescriptionExtensionAtoms" as CFString) as? NSDictionary {
return atoms["avcC"] as? Data
}
return nil
@ -75,7 +79,7 @@ struct AVCConfigurationRecord {
}
}
extension AVCConfigurationRecord: DataConvertible {
extension AVCDecoderConfigurationRecord: DataConvertible {
// MARK: DataConvertible
var data: Data {
get {
@ -108,7 +112,7 @@ extension AVCConfigurationRecord: DataConvertible {
avcLevelIndication = try buffer.readUInt8()
lengthSizeMinusOneWithReserved = try buffer.readUInt8()
numOfSequenceParameterSetsWithReserved = try buffer.readUInt8()
let numOfSequenceParameterSets: UInt8 = numOfSequenceParameterSetsWithReserved & ~AVCConfigurationRecord.reserveNumOfSequenceParameterSets
let numOfSequenceParameterSets: UInt8 = numOfSequenceParameterSetsWithReserved & ~AVCDecoderConfigurationRecord.reserveNumOfSequenceParameterSets
for _ in 0..<numOfSequenceParameterSets {
let length = Int(try buffer.readUInt16())
sequenceParameterSets.append(try buffer.readBytes(length).bytes)
@ -125,7 +129,7 @@ extension AVCConfigurationRecord: DataConvertible {
}
}
extension AVCConfigurationRecord: CustomDebugStringConvertible {
extension AVCDecoderConfigurationRecord: CustomDebugStringConvertible {
// MARK: CustomDebugStringConvertible
var debugDescription: String {
Mirror(reflecting: self).debugDescription

View File

@ -1,7 +1,7 @@
import CoreMedia
import Foundation
enum NALUnitType: UInt8, Equatable {
enum AVCNALUnitType: UInt8, Equatable {
case unspec = 0
case slice = 1 // P frame
case dpa = 2
@ -18,9 +18,9 @@ enum NALUnitType: UInt8, Equatable {
}
// MARK: -
struct NALUnit: Equatable {
struct AVCNALUnit: Equatable {
let refIdc: UInt8
let type: NALUnitType
let type: AVCNALUnitType
let payload: Data
init(_ data: Data) {
@ -29,7 +29,7 @@ struct NALUnit: Equatable {
init(_ data: Data, length: Int) {
self.refIdc = data[0] >> 5
self.type = NALUnitType(rawValue: data[0] & 0x1f) ?? .unspec
self.type = AVCNALUnitType(rawValue: data[0] & 0x1f) ?? .unspec
self.payload = data.subdata(in: 1..<length)
}
@ -41,14 +41,14 @@ struct NALUnit: Equatable {
}
}
class NALUnitReader {
class AVCNALUnitReader {
static let defaultStartCodeLength: Int = 4
static let defaultNALUnitHeaderLength: Int32 = 4
var nalUnitHeaderLength: Int32 = NALUnitReader.defaultNALUnitHeaderLength
var nalUnitHeaderLength: Int32 = AVCNALUnitReader.defaultNALUnitHeaderLength
func read(_ data: Data) -> [NALUnit] {
var units: [NALUnit] = []
func read(_ data: Data) -> [AVCNALUnit] {
var units: [AVCNALUnit] = []
var lastIndexOf = data.count - 1
for i in (2..<data.count).reversed() {
guard data[i] == 1 && data[i - 1] == 0 && data[i - 2] == 0 else {

View File

@ -0,0 +1,134 @@
import AVFoundation
import Foundation
/// ISO/IEC 14496-15 8.3.3.1.2
struct HEVCDecoderConfigurationRecord: DecoderConfigurationRecord {
static func getData(_ formatDescription: CMFormatDescription?) -> Data? {
guard let formatDescription else {
return nil
}
if let atoms = CMFormatDescriptionGetExtension(formatDescription, extensionKey: "SampleDescriptionExtensionAtoms" as CFString) as? NSDictionary {
return atoms["hvcC"] as? Data
}
return nil
}
var configurationVersion: UInt8 = 1
var generalProfileSpace: UInt8 = 0
var generalTierFlag = false
var generalProfileIdc: UInt8 = 0
var generalProfileCompatibilityFlags: UInt32 = 0
var generalConstraintIndicatorFlags: UInt64 = 0
var generalLevelIdc: UInt8 = 0
var minSpatialSegmentationIdc: UInt16 = 0
var parallelismType: UInt8 = 0
var chromaFormat: UInt8 = 0
var bitDepthLumaMinus8: UInt8 = 0
var bitDepthChromaMinus8: UInt8 = 0
var avgFrameRate: UInt16 = 0
var constantFrameRate: UInt8 = 0
var numTemporalLayers: UInt8 = 0
var temporalIdNested: UInt8 = 0
var lengthSizeMinusOne: UInt8 = 0
var numberOfArrays: UInt8 = 0
var array: [HEVCNALUnitType: [Data]] = [:]
init() {
}
init(data: Data) {
self.data = data
}
func makeFormatDescription(_ formatDescriptionOut: UnsafeMutablePointer<CMFormatDescription?>) -> OSStatus {
guard let vps = array[.vps], let sps = array[.sps], let pps = array[.pps] else {
return kCMFormatDescriptionBridgeError_InvalidParameter
}
return vps[0].withUnsafeBytes { (vpsBuffer: UnsafeRawBufferPointer) -> OSStatus in
guard let vpsBaseAddress = vpsBuffer.baseAddress else {
return kCMFormatDescriptionBridgeError_InvalidParameter
}
return sps[0].withUnsafeBytes { (spsBuffer: UnsafeRawBufferPointer) -> OSStatus in
guard let spsBaseAddress = spsBuffer.baseAddress else {
return kCMFormatDescriptionBridgeError_InvalidParameter
}
return pps[0].withUnsafeBytes { (ppsBuffer: UnsafeRawBufferPointer) -> OSStatus in
guard let ppsBaseAddress = ppsBuffer.baseAddress else {
return kCMFormatDescriptionBridgeError_InvalidParameter
}
let pointers: [UnsafePointer<UInt8>] = [
vpsBaseAddress.assumingMemoryBound(to: UInt8.self),
spsBaseAddress.assumingMemoryBound(to: UInt8.self),
ppsBaseAddress.assumingMemoryBound(to: UInt8.self)
]
let sizes: [Int] = [vpsBuffer.count, spsBuffer.count, ppsBuffer.count]
let nalUnitHeaderLength: Int32 = 4
return CMVideoFormatDescriptionCreateFromHEVCParameterSets(
allocator: kCFAllocatorDefault,
parameterSetCount: pointers.count,
parameterSetPointers: pointers,
parameterSetSizes: sizes,
nalUnitHeaderLength: nalUnitHeaderLength,
extensions: nil,
formatDescriptionOut: formatDescriptionOut
)
}
}
}
}
}
extension HEVCDecoderConfigurationRecord: DataConvertible {
// MARK: DataConvertible
var data: Data {
get {
let buffer = ByteArray()
.writeUInt8(configurationVersion)
return buffer.data
}
set {
let buffer = ByteArray(data: newValue)
do {
configurationVersion = try buffer.readUInt8()
let a = try buffer.readUInt8()
generalProfileSpace = a >> 6
generalTierFlag = a & 0x20 > 0
generalProfileIdc = a & 0x1F
generalProfileCompatibilityFlags = try buffer.readUInt32()
generalConstraintIndicatorFlags = UInt64(try buffer.readUInt32()) << 16 | UInt64(try buffer.readUInt16())
generalLevelIdc = try buffer.readUInt8()
minSpatialSegmentationIdc = try buffer.readUInt16() & 0xFFF
parallelismType = try buffer.readUInt8() & 0x3
chromaFormat = try buffer.readUInt8() & 0x3
bitDepthLumaMinus8 = try buffer.readUInt8() & 0x7
bitDepthChromaMinus8 = try buffer.readUInt8() & 0x7
avgFrameRate = try buffer.readUInt16()
let b = try buffer.readUInt8()
constantFrameRate = b >> 6
numTemporalLayers = b & 0x38 >> 3
temporalIdNested = b & 0x6 >> 1
lengthSizeMinusOne = b & 0x3
numberOfArrays = try buffer.readUInt8()
for _ in 0..<numberOfArrays {
let a = try buffer.readUInt8()
let nalUnitType = HEVCNALUnitType(rawValue: a & 0b00111111) ?? .unspec
array[nalUnitType] = []
let numNalus = try buffer.readUInt16()
for _ in 0..<numNalus {
let length = try buffer.readUInt16()
array[nalUnitType]?.append(try buffer.readBytes(Int(length)))
}
}
} catch {
logger.error("\(buffer)")
}
}
}
}
extension HEVCDecoderConfigurationRecord: CustomDebugStringConvertible {
// MARK: CustomDebugStringConvertible
var debugDescription: String {
Mirror(reflecting: self).debugDescription
}
}

View File

@ -0,0 +1,8 @@
import Foundation
enum HEVCNALUnitType: UInt8 {
case unspec = 0
case vps = 32
case sps = 33
case pps = 34
}

View File

@ -155,7 +155,7 @@ struct PacketizedElementaryStream: PESPacketHeader {
if let config: AudioSpecificConfig = config as? AudioSpecificConfig {
return PacketizedElementaryStream(bytes: bytes, count: count, presentationTimeStamp: presentationTimeStamp, decodeTimeStamp: decodeTimeStamp, timestamp: timestamp, config: config)
}
if let config: AVCConfigurationRecord = config as? AVCConfigurationRecord {
if let config: AVCDecoderConfigurationRecord = config as? AVCDecoderConfigurationRecord {
return PacketizedElementaryStream(bytes: bytes, count: count, presentationTimeStamp: presentationTimeStamp, decodeTimeStamp: decodeTimeStamp, timestamp: timestamp, config: randomAccessIndicator ? config : nil)
}
return nil
@ -231,11 +231,11 @@ struct PacketizedElementaryStream: PESPacketHeader {
}
}
init?(bytes: UnsafePointer<UInt8>?, count: UInt32, presentationTimeStamp: CMTime, decodeTimeStamp: CMTime, timestamp: CMTime, config: AVCConfigurationRecord?) {
init?(bytes: UnsafePointer<UInt8>?, count: UInt32, presentationTimeStamp: CMTime, decodeTimeStamp: CMTime, timestamp: CMTime, config: AVCDecoderConfigurationRecord?) {
guard let bytes = bytes else {
return nil
}
if let config: AVCConfigurationRecord = config {
if let config: AVCDecoderConfigurationRecord = config {
data.append(contentsOf: [0x00, 0x00, 0x00, 0x01, 0x09, 0x10])
data.append(contentsOf: [0x00, 0x00, 0x00, 0x01])
data.append(contentsOf: config.sequenceParameterSets[0])

View File

@ -11,7 +11,7 @@ public protocol TSReaderDelegate: AnyObject {
/// The TSReader class represents read MPEG-2 transport stream data.
public class TSReader {
/// Specifies the delegate object.
public weak var delegate: TSReaderDelegate?
public weak var delegate: (any TSReaderDelegate)?
private var pat: TSProgramAssociation? {
didSet {
@ -38,7 +38,7 @@ public class TSReader {
}
}
}
private var nalUnitReader = NALUnitReader()
private var nalUnitReader = AVCNALUnitReader()
private var programs: [UInt16: UInt16] = [:]
private var esSpecData: [UInt16: ESSpecificData] = [:]
private var formatDescriptions: [UInt16: CMFormatDescription] = [:]

View File

@ -21,7 +21,7 @@ public class TSWriter: Running {
public static let defaultSegmentDuration: Double = 2
/// The delegate instance.
public weak var delegate: TSWriterDelegate?
public weak var delegate: (any TSWriterDelegate)?
/// This instance is running to process(true) or not(false).
public internal(set) var isRunning: Atomic<Bool> = .init(false)
/// The exptected medias = [.video, .audio].
@ -45,7 +45,7 @@ public class TSWriter: Running {
writeProgramIfNeeded()
}
}
private var videoConfig: AVCConfigurationRecord? {
private var videoConfig: AVCDecoderConfigurationRecord? {
didSet {
writeProgramIfNeeded()
}
@ -244,7 +244,7 @@ extension TSWriter: VideoCodecDelegate {
public func videoCodec(_ codec: VideoCodec, didOutput formatDescription: CMFormatDescription?) {
guard
let formatDescription,
let avcC = AVCConfigurationRecord.getData(formatDescription) else {
let avcC = AVCDecoderConfigurationRecord.getData(formatDescription) else {
return
}
var data = ESSpecificData()
@ -252,7 +252,7 @@ extension TSWriter: VideoCodecDelegate {
data.elementaryPID = TSWriter.defaultVideoPID
PMT.elementaryStreamSpecificData.append(data)
videoContinuityCounter = 0
videoConfig = AVCConfigurationRecord(data: avcC)
videoConfig = AVCDecoderConfigurationRecord(data: avcC)
}
public func videoCodec(_ codec: VideoCodec, didOutput sampleBuffer: CMSampleBuffer) {

View File

@ -7,12 +7,12 @@ typealias DisplayLink = CADisplayLink
#endif
protocol ChoreographerDelegate: AnyObject {
func choreographer(_ choreographer: Choreographer, didFrame duration: Double)
func choreographer(_ choreographer: any Choreographer, didFrame duration: Double)
}
protocol Choreographer: Running {
var isPaused: Bool { get set }
var delegate: ChoreographerDelegate? { get set }
var delegate: (any ChoreographerDelegate)? { get set }
func clear()
}
@ -29,7 +29,7 @@ final class DisplayLinkChoreographer: NSObject, Choreographer {
displayLink?.isPaused = newValue
}
}
weak var delegate: ChoreographerDelegate?
weak var delegate: (any ChoreographerDelegate)?
var isRunning: Atomic<Bool> = .init(false)
private var duration: Double = DisplayLinkChoreographer.duration
private var displayLink: DisplayLink? {

View File

@ -60,7 +60,7 @@ final class IOAudioUnit: NSObject, IOUnit {
if isFragmented(sampleBuffer), let sampleBuffer = makeSampleBuffer(sampleBuffer) {
appendSampleBuffer(sampleBuffer)
}
mixer?.recorder.appendSampleBuffer(sampleBuffer, mediaType: .audio)
mixer?.recorder.appendSampleBuffer(sampleBuffer)
codec.appendSampleBuffer(sampleBuffer)
presentationTimeStamp = CMTimeAdd(presentationTimeStamp, CMTime(value: CMTimeValue(sampleBuffer.numSamples), timescale: presentationTimeStamp.timescale))
}
@ -86,53 +86,13 @@ final class IOAudioUnit: NSObject, IOUnit {
guard 0 < numSamples else {
return nil
}
var status: OSStatus = noErr
var sampleBuffer: CMSampleBuffer?
var timing = CMSampleTimingInfo(
duration: CMTime(value: 1, timescale: presentationTimeStamp.timescale),
presentationTimeStamp: presentationTimeStamp,
decodeTimeStamp: .invalid
)
status = CMSampleBufferCreate(
allocator: kCFAllocatorDefault,
dataBuffer: nil,
dataReady: true,
makeDataReadyCallback: nil,
refcon: nil,
formatDescription: buffer.formatDescription,
sampleCount: numSamples,
sampleTimingEntryCount: 1,
sampleTimingArray: &timing,
sampleSizeEntryCount: 0,
sampleSizeArray: nil,
sampleBufferOut: &sampleBuffer
)
guard
let sampleBuffer = sampleBuffer,
let formatDescription = sampleBuffer.formatDescription, status == noErr else {
return nil
}
guard let buffer = AVAudioPCMBuffer(pcmFormat: AVAudioFormat(cmAudioFormatDescription: formatDescription), frameCapacity: AVAudioFrameCount(numSamples)) else {
return nil
}
buffer.frameLength = buffer.frameCapacity
status = CMSampleBufferSetDataBufferFromAudioBufferList(
sampleBuffer,
blockBufferAllocator: kCFAllocatorDefault,
blockBufferMemoryAllocator: kCFAllocatorDefault,
flags: 0,
bufferList: buffer.audioBufferList
)
guard status == noErr else {
return nil
}
return sampleBuffer
return CMAudioSampleBufferUtil.makeSampleBuffer(buffer, numSamples: numSamples, presentationTimeStamp: presentationTimeStamp)
}
}
extension IOAudioUnit: IOUnitEncoding {
// MARK: IOUnitEncoding
func startEncoding(_ delegate: AVCodecDelegate) {
func startEncoding(_ delegate: any AVCodecDelegate) {
codec.delegate = delegate
codec.startRunning()
}

View File

@ -95,8 +95,8 @@ public class IOVideoCaptureUnit: IOCaptureUnit {
}
}
#if os(iOS)
/// Specifies the preferredVideoStabilizationMode most appropriate for use with the connection.
@available(macOS, unavailable)
public var preferredVideoStabilizationMode: AVCaptureVideoStabilizationMode = .off {
didSet {
output?.connections.filter { $0.isVideoStabilizationSupported }.forEach {
@ -104,6 +104,7 @@ public class IOVideoCaptureUnit: IOCaptureUnit {
}
}
}
#endif
func attachDevice(_ device: AVCaptureDevice?, videoUnit: IOVideoUnit) throws {
setSampleBufferDelegate(nil)

View File

@ -19,6 +19,7 @@ protocol IOMixerDelegate: AnyObject {
func mixer(_ mixer: IOMixer, sessionWasInterrupted session: AVCaptureSession, reason: AVCaptureSession.InterruptionReason)
func mixer(_ mixer: IOMixer, sessionInterruptionEnded session: AVCaptureSession, reason: AVCaptureSession.InterruptionReason)
#endif
func mixerSessionWillResume(_ mixer: IOMixer)
}
/// An object that mixies audio and video for streaming.
@ -128,7 +129,7 @@ public class IOMixer {
public lazy var recorder = IORecorder()
/// Specifies the drawable object.
public weak var drawable: NetStreamDrawable? {
public weak var drawable: (any NetStreamDrawable)? {
get {
videoIO.drawable
}
@ -139,7 +140,7 @@ public class IOMixer {
var mediaSync = MediaSync.passthrough
weak var delegate: IOMixerDelegate?
weak var delegate: (any IOMixerDelegate)?
lazy var audioIO: IOAudioUnit = {
var audioIO = IOAudioUnit()
@ -237,7 +238,7 @@ public class IOMixer {
extension IOMixer: IOUnitEncoding {
/// Starts encoding for video and audio data.
public func startEncoding(_ delegate: AVCodecDelegate) {
public func startEncoding(_ delegate: any AVCodecDelegate) {
guard readyState == .standby else {
return
}
@ -286,7 +287,7 @@ extension IOMixer: IOUnitDecoding {
extension IOMixer: MediaLinkDelegate {
// MARK: MediaLinkDelegate
func mediaLink(_ mediaLink: MediaLink, dequeue sampleBuffer: CMSampleBuffer) {
videoIO.codec.appendSampleBuffer(sampleBuffer)
drawable?.enqueue(sampleBuffer)
}
func mediaLink(_ mediaLink: MediaLink, didBufferingChanged: Bool) {
@ -323,6 +324,11 @@ extension IOMixer: Running {
isRunning.mutate { $0 = session.isRunning }
}
func startCaptureSession() {
session.startRunning()
isRunning.mutate { $0 = session.isRunning }
}
private func addSessionObservers(_ session: AVCaptureSession) {
NotificationCenter.default.addObserver(self, selector: #selector(sessionRuntimeError(_:)), name: .AVCaptureSessionRuntimeError, object: session)
#if os(iOS)
@ -438,8 +444,7 @@ extension IOMixer: Running {
guard isRunning.value && !session.isRunning else {
return
}
session.startRunning()
isRunning.mutate { $0 = session.isRunning }
delegate?.mixerSessionWillResume(self)
}
}
#else
@ -449,5 +454,8 @@ extension IOMixer: Running {
public func stopRunning() {
}
func startCaptureSession() {
}
}
#endif

View File

@ -38,7 +38,7 @@ public class IORecorder {
]
/// Specifies the delegate.
public weak var delegate: IORecorderDelegate?
public weak var delegate: (any IORecorderDelegate)?
/// Specifies the recorder settings.
public var outputSettings: [AVMediaType: [String: Any]] = IORecorder.defaultOutputSettings
/// The running indicies whether recording or not.
@ -54,8 +54,9 @@ public class IORecorder {
private var writer: AVAssetWriter?
private var writerInputs: [AVMediaType: AVAssetWriterInput] = [:]
private var pixelBufferAdaptor: AVAssetWriterInputPixelBufferAdaptor?
private var audioPresentationTime = CMTime.zero
private var videoPresentationTime = CMTime.zero
private var audioPresentationTime: CMTime = .zero
private var videoPresentationTime: CMTime = .zero
private var dimensions: CMVideoDimensions = .init(width: 0, height: 0)
#if os(iOS)
private lazy var moviesDirectory: URL = {
@ -68,7 +69,11 @@ public class IORecorder {
#endif
/// Append a sample buffer for recording.
public func appendSampleBuffer(_ sampleBuffer: CMSampleBuffer, mediaType: AVMediaType) {
public func appendSampleBuffer(_ sampleBuffer: CMSampleBuffer) {
guard isRunning.value else {
return
}
let mediaType: AVMediaType = (sampleBuffer.formatDescription?._mediaType == kCMMediaType_Video) ? .video : .audio
lockQueue.async {
guard
let writer = self.writer,
@ -108,10 +113,16 @@ public class IORecorder {
/// Append a pixel buffer for recording.
public func appendPixelBuffer(_ pixelBuffer: CVPixelBuffer, withPresentationTime: CMTime) {
guard isRunning.value else {
return
}
lockQueue.async {
if self.dimensions.width != pixelBuffer.width || self.dimensions.height != pixelBuffer.height {
self.dimensions = .init(width: Int32(pixelBuffer.width), height: Int32(pixelBuffer.height))
}
guard
let writer = self.writer,
let input = self.makeWriterInput(.video, sourceFormatHint: CMVideoFormatDescription.create(pixelBuffer: pixelBuffer)),
let input = self.makeWriterInput(.video, sourceFormatHint: nil),
let adaptor = self.makePixelBufferAdaptor(input),
self.isReadyForStartWriting && self.videoPresentationTime.seconds < withPresentationTime.seconds else {
return
@ -180,15 +191,12 @@ public class IORecorder {
}
}
case .video:
guard let format = sourceFormatHint else {
break
}
for (key, value) in defaultOutputSettings {
switch key {
case AVVideoHeightKey:
outputSettings[key] = AnyUtil.isZero(value) ? Int(format.dimensions.height) : value
outputSettings[key] = AnyUtil.isZero(value) ? Int(dimensions.height) : value
case AVVideoWidthKey:
outputSettings[key] = AnyUtil.isZero(value) ? Int(format.dimensions.width) : value
outputSettings[key] = AnyUtil.isZero(value) ? Int(dimensions.width) : value
default:
outputSettings[key] = value
}

View File

@ -4,7 +4,7 @@ import Foundation
/// The interface a capture session uses to inform its delegate.
public protocol IOScreenCaptureUnitDelegate: AnyObject {
/// Tells the receiver to output a pixel buffer.
func session(_ session: IOScreenCaptureUnit, didOutput pixelBuffer: CVPixelBuffer, presentationTime: CMTime)
func session(_ session: any IOScreenCaptureUnit, didOutput pixelBuffer: CVPixelBuffer, presentationTime: CMTime)
}
/// The interface that provides methods to screen capture.
@ -12,5 +12,5 @@ public protocol IOScreenCaptureUnit: Running {
/// Specifies the CVPixelBufferPool's attributes.
var attributes: [NSString: NSObject] { get }
/// Specifies the delegate.
var delegate: IOScreenCaptureUnitDelegate? { get set }
var delegate: (any IOScreenCaptureUnitDelegate)? { get set }
}

View File

@ -33,7 +33,7 @@ public class IOUIScreenCaptureUnit: NSObject, IOScreenCaptureUnit {
attributes[kCVPixelBufferBytesPerRowAlignmentKey] = NSNumber(value: Float(size.width * scale * 4))
return attributes
}
public weak var delegate: IOScreenCaptureUnitDelegate?
public weak var delegate: (any IOScreenCaptureUnitDelegate)?
public private(set) var isRunning: Atomic<Bool> = .init(false)
private var shared: UIApplication?

View File

@ -12,7 +12,7 @@ protocol IOUnit {
}
protocol IOUnitEncoding {
func startEncoding(_ delegate: AVCodecDelegate)
func startEncoding(_ delegate: any AVCodecDelegate)
func stopEncoding()
}

View File

@ -21,7 +21,7 @@ final class IOVideoUnit: NSObject, IOUnit {
}
}
weak var drawable: NetStreamDrawable? {
weak var drawable: (any NetStreamDrawable)? {
didSet {
#if os(iOS) || os(macOS)
drawable?.videoOrientation = videoOrientation
@ -132,6 +132,17 @@ final class IOVideoUnit: NSObject, IOUnit {
guard let mixer, self.capture.device != device else {
return
}
guard let device else {
mixer.mediaSync = .passthrough
mixer.session.beginConfiguration()
defer {
mixer.session.commitConfiguration()
}
capture.detachSession(mixer.session)
try capture.attachDevice(nil, videoUnit: self)
return
}
mixer.mediaSync = .video
mixer.session.beginConfiguration()
defer {
mixer.session.commitConfiguration()
@ -139,11 +150,6 @@ final class IOVideoUnit: NSObject, IOUnit {
setTorchMode(.on)
}
}
guard let device else {
mixer.mediaSync = .passthrough
return
}
mixer.mediaSync = .video
if multiCamCapture.device == device {
try multiCamCapture.attachDevice(nil, videoUnit: self)
}
@ -288,7 +294,7 @@ final class IOVideoUnit: NSObject, IOUnit {
extension IOVideoUnit: IOUnitEncoding {
// MARK: IOUnitEncoding
func startEncoding(_ delegate: AVCodecDelegate) {
func startEncoding(_ delegate: any AVCodecDelegate) {
codec.delegate = delegate
codec.startRunning()
}
@ -336,7 +342,7 @@ extension IOVideoUnit: VideoCodecDelegate {
}
func videoCodec(_ codec: VideoCodec, didOutput sampleBuffer: CMSampleBuffer) {
drawable?.enqueue(sampleBuffer)
mixer?.mediaLink.enqueueVideo(sampleBuffer)
}
func videoCodec(_ codec: VideoCodec, errorOccurred error: VideoCodec.Error) {

View File

@ -20,7 +20,7 @@ public class MTHKView: MTKView {
private var currentSampleBuffer: CMSampleBuffer?
private let colorSpace: CGColorSpace = CGColorSpaceCreateDeviceRGB()
private lazy var commandQueue: MTLCommandQueue? = {
private lazy var commandQueue: (any MTLCommandQueue)? = {
return device?.makeCommandQueue()
}()

View File

@ -32,10 +32,9 @@ final class MediaLink {
}
var hasVideo = false
var bufferTime = MediaLink.bufferTime
weak var delegate: MediaLinkDelegate?
weak var delegate: (any MediaLinkDelegate)?
private(set) lazy var playerNode = AVAudioPlayerNode()
private(set) var isRunning: Atomic<Bool> = .init(false)
private var buffer: RingBuffer<CMSampleBuffer> = .init(256)
private var isBuffering = true {
didSet {
if !isBuffering {
@ -46,14 +45,15 @@ final class MediaLink {
}
}
private var bufferingTime = MediaLink.bufferingTime
private lazy var choreographer: Choreographer = {
private lazy var choreographer: any Choreographer = {
var choreographer = DisplayLinkChoreographer()
choreographer.delegate = self
return choreographer
}()
private let lockQueue = DispatchQueue(label: "com.haishinkit.HaishinKit.DisplayLinkedQueue.lock")
private var bufferQueue: CMBufferQueue?
private var scheduledAudioBuffers: Atomic<Int> = .init(0)
private var presentationTimeStampOrigin: CMTime = .invalid
private let lockQueue = DispatchQueue(label: "com.haishinkit.HaishinKit.DisplayLinkedQueue.lock")
func enqueueVideo(_ buffer: CMSampleBuffer) {
guard buffer.presentationTimeStamp != .invalid else {
@ -66,7 +66,9 @@ final class MediaLink {
delegate?.mediaLink(self, dequeue: buffer)
return
}
_ = self.buffer.append(buffer)
if let bufferQueue {
CMBufferQueueEnqueue(bufferQueue, buffer: buffer)
}
if isBuffering {
bufferingTime += buffer.duration.seconds
if bufferTime <= bufferingTime {
@ -106,21 +108,34 @@ final class MediaLink {
}
}
}
private func makeBufferkQueue() {
CMBufferQueueCreate(
allocator: kCFAllocatorDefault,
capacity: 256,
callbacks: CMBufferQueueGetCallbacksForSampleBuffersSortedByOutputPTS(),
queueOut: &bufferQueue
)
}
}
extension MediaLink: ChoreographerDelegate {
// MARK: ChoreographerDelegate
func choreographer(_ choreographer: Choreographer, didFrame duration: Double) {
func choreographer(_ choreographer: any Choreographer, didFrame duration: Double) {
guard let bufferQueue else {
return
}
let duration = self.duration(duration)
var frameCount = 0
while !buffer.isEmpty {
guard let first = buffer.first else {
while !CMBufferQueueIsEmpty(bufferQueue) {
guard let head = CMBufferQueueGetHead(bufferQueue) else {
break
}
let first = head as! CMSampleBuffer
if first.presentationTimeStamp.seconds - presentationTimeStampOrigin.seconds <= duration {
delegate?.mediaLink(self, dequeue: first)
frameCount += 1
buffer.removeFirst()
CMBufferQueueDequeue(bufferQueue)
} else {
if 2 < frameCount {
logger.info("droppedFrame: \(frameCount)")
@ -143,6 +158,7 @@ extension MediaLink: Running {
self.bufferingTime = Self.bufferingTime
self.isBuffering = true
self.choreographer.startRunning()
self.makeBufferkQueue()
self.isRunning.mutate { $0 = true }
}
}
@ -153,7 +169,7 @@ extension MediaLink: Running {
return
}
self.choreographer.stopRunning()
self.buffer.removeAll()
self.bufferQueue = nil
self.scheduledAudioBuffers.mutate { $0 = 0 }
self.presentationTimeStampOrigin = .invalid
self.isRunning.mutate { $0 = false }

View File

@ -14,7 +14,7 @@ protocol NetClientDelegate: AnyObject {
// MARK: -
/// The NetClient class creates a two-way connection between a NetService.
public final class NetClient: NetSocket {
weak var delegate: NetClientDelegate?
weak var delegate: (any NetClientDelegate)?
init(inputStream: InputStream, outputStream: OutputStream) {
super.init()

View File

@ -40,9 +40,13 @@ open class NetStream: NSObject {
private static let queueValue = UnsafeMutableRawPointer.allocate(byteCount: 1, alignment: 1)
/// The mixer object.
public private(set) var mixer = IOMixer()
public private(set) lazy var mixer: IOMixer = {
let mixer = IOMixer()
mixer.delegate = self
return mixer
}()
/// Specifies the delegate of the NetStream.
public weak var delegate: NetStreamDelegate?
public weak var delegate: (any NetStreamDelegate)?
/// Specifies the context object.
public var context: CIContext {
@ -271,7 +275,7 @@ open class NetStream: NSObject {
}
/// Starts recording.
public func startRecording(_ settings: [AVMediaType: [String: Any]]) {
public func startRecording(_ settings: [AVMediaType: [String: Any]] = IORecorder.defaultOutputSettings) {
mixer.recorder.outputSettings = settings
mixer.recorder.startRunning()
}
@ -282,9 +286,36 @@ open class NetStream: NSObject {
}
}
extension NetStream: IOMixerDelegate {
// MARK: IOMixerDelegate
func mixer(_ mixer: IOMixer, didOutput video: CMSampleBuffer) {
delegate?.stream(self, didOutput: video)
}
func mixer(_ mixer: IOMixer, didOutput audio: AVAudioPCMBuffer, presentationTimeStamp: CMTime) {
delegate?.stream(self, didOutput: audio, presentationTimeStamp: presentationTimeStamp)
}
func mixerSessionWillResume(_ mixer: IOMixer) {
lockQueue.async {
mixer.startCaptureSession()
}
}
#if os(iOS)
func mixer(_ mixer: IOMixer, sessionWasInterrupted session: AVCaptureSession, reason: AVCaptureSession.InterruptionReason) {
delegate?.stream(self, sessionWasInterrupted: session, reason: reason)
}
func mixer(_ mixer: IOMixer, sessionInterruptionEnded session: AVCaptureSession, reason: AVCaptureSession.InterruptionReason) {
delegate?.stream(self, sessionInterruptionEnded: session, reason: reason)
}
#endif
}
extension NetStream: IOScreenCaptureUnitDelegate {
// MARK: IOScreenCaptureUnitDelegate
public func session(_ session: IOScreenCaptureUnit, didOutput pixelBuffer: CVPixelBuffer, presentationTime: CMTime) {
public func session(_ session: any IOScreenCaptureUnit, didOutput pixelBuffer: CVPixelBuffer, presentationTime: CMTime) {
var timingInfo = CMSampleTimingInfo(
duration: .invalid,
presentationTimeStamp: presentationTime,

View File

@ -40,6 +40,7 @@ final class RTMPChunk {
case command = 0x03
case audio = 0x04
case video = 0x05
case data = 0x08
}
static let defaultSize: Int = 128

View File

@ -214,7 +214,7 @@ open class RTMPConnection: EventDispatcher {
streams.count
}
/// Specifies the delegate of the NetStream.
public weak var delegate: RTMPConnectionDelegate?
public weak var delegate: (any RTMPConnectionDelegate)?
/// The statistics of outgoing queue bytes per second.
@objc open private(set) dynamic var previousQueueBytesOut: [Int64] = []
/// The statistics of incoming bytes per second.
@ -222,7 +222,7 @@ open class RTMPConnection: EventDispatcher {
/// The statistics of outgoing bytes per second.
@objc open private(set) dynamic var currentBytesOutPerSecond: Int32 = 0
var socket: RTMPSocketCompatible!
var socket: (any RTMPSocketCompatible)!
var streams: [RTMPStream] = []
var sequence: Int64 = 0
var bandWidth: UInt32 = 0
@ -483,7 +483,7 @@ open class RTMPConnection: EventDispatcher {
extension RTMPConnection: RTMPSocketDelegate {
// MARK: RTMPSocketDelegate
func socket(_ socket: RTMPSocketCompatible, readyState: RTMPSocketReadyState) {
func socket(_ socket: any RTMPSocketCompatible, readyState: RTMPSocketReadyState) {
if logger.isEnabledFor(level: .debug) {
logger.debug(readyState)
}
@ -509,7 +509,7 @@ extension RTMPConnection: RTMPSocketDelegate {
}
}
func socket(_ socket: RTMPSocketCompatible, totalBytesIn: Int64) {
func socket(_ socket: any RTMPSocketCompatible, totalBytesIn: Int64) {
guard windowSizeS * (sequence + 1) <= totalBytesIn else {
return
}
@ -521,7 +521,7 @@ extension RTMPConnection: RTMPSocketDelegate {
sequence += 1
}
func socket(_ socket: RTMPSocketCompatible, data: Data) {
func socket(_ socket: any RTMPSocketCompatible, data: Data) {
guard let chunk = currentChunk ?? RTMPChunk(data, size: socket.chunkSizeC) else {
socket.inputBuffer.append(data)
return

View File

@ -314,7 +314,7 @@ final class RTMPCommandMessage: RTMPMessage {
}
}
private var serializer: AMFSerializer = AMF0Serializer()
private var serializer: any AMFSerializer = AMF0Serializer()
init(objectEncoding: RTMPObjectEncoding) {
self.objectEncoding = objectEncoding
@ -362,7 +362,7 @@ final class RTMPDataMessage: RTMPMessage {
var handlerName: String = ""
var arguments: [Any?] = []
private var serializer: AMFSerializer = AMF0Serializer()
private var serializer: any AMFSerializer = AMF0Serializer()
override var payload: Data {
get {
@ -413,11 +413,12 @@ final class RTMPDataMessage: RTMPMessage {
super.init(type: objectEncoding.dataType)
}
init(streamId: UInt32, objectEncoding: RTMPObjectEncoding, handlerName: String, arguments: [Any?] = []) {
init(streamId: UInt32, objectEncoding: RTMPObjectEncoding, timestamp: UInt32, handlerName: String, arguments: [Any?] = []) {
self.objectEncoding = objectEncoding
self.handlerName = handlerName
self.arguments = arguments
super.init(type: objectEncoding.dataType)
self.timestamp = timestamp
self.streamId = streamId
}
@ -493,7 +494,7 @@ final class RTMPSharedObjectMessage: RTMPMessage {
}
}
private var serializer: AMFSerializer = AMF0Serializer()
private var serializer: any AMFSerializer = AMF0Serializer()
init(objectEncoding: RTMPObjectEncoding) {
self.objectEncoding = objectEncoding
@ -582,12 +583,12 @@ final class RTMPAudioMessage: RTMPMessage {
default:
stream.audioTimestamp += Double(timestamp)
}
switch FLVAACPacketType(rawValue: payload[1]) {
case .seq?:
switch payload[1] {
case FLVAACPacketType.seq.rawValue:
let config = AudioSpecificConfig(bytes: [UInt8](payload[codec.headerSize..<payload.count]))
stream.mixer.audioIO.codec.settings.format = .pcm
stream.mixer.audioIO.codec.inSourceFormat = config?.audioStreamBasicDescription()
case .raw?:
case FLVAACPacketType.raw.rawValue:
if stream.mixer.audioIO.codec.inSourceFormat == nil {
stream.mixer.audioIO.codec.settings.format = .pcm
stream.mixer.audioIO.codec.inSourceFormat = makeAudioStreamBasicDescription()
@ -595,7 +596,7 @@ final class RTMPAudioMessage: RTMPMessage {
if let audioBuffer = makeAudioBuffer(stream) {
stream.mixer.audioIO.codec.appendAudioBuffer(audioBuffer, presentationTimeStamp: CMTime(seconds: stream.audioTimestamp / 1000, preferredTimescale: 1000))
}
case .none:
default:
break
}
}
@ -624,9 +625,6 @@ final class RTMPAudioMessage: RTMPMessage {
7.1.5. Video Message (9)
*/
final class RTMPVideoMessage: RTMPMessage {
private(set) var codec: FLVVideoCodec = .unknown
private(set) var status: OSStatus = noErr
init() {
super.init(type: .video)
}
@ -646,28 +644,41 @@ final class RTMPVideoMessage: RTMPMessage {
guard FLVTagType.video.headerSize <= payload.count else {
return
}
switch payload[1] {
case FLVAVCPacketType.seq.rawValue:
status = makeFormatDescription(stream)
stream.mixer.mediaLink.hasVideo = true
stream.dispatch(.rtmpStatus, bubbles: false, data: RTMPStream.Code.videoDimensionChange.data(""))
case FLVAVCPacketType.nal.rawValue:
if let sampleBuffer = makeSampleBuffer(stream, type: type) {
sampleBuffer.isNotSync = !(payload[0] >> 4 == FLVFrameType.key.rawValue)
stream.mixer.mediaLink.enqueueVideo(sampleBuffer)
if (payload[0] & 0b10000000) == 0 {
guard payload[0] & 0b01110000 >> 4 == FLVVideoCodec.avc.rawValue else {
return
}
if stream.mixer.mediaLink.isPaused && stream.mixer.audioIO.codec.inSourceFormat == nil {
stream.mixer.mediaLink.isPaused = false
switch payload[1] {
case FLVAVCPacketType.seq.rawValue:
makeFormatDescription(stream, format: .h264)
case FLVAVCPacketType.nal.rawValue:
if let sampleBuffer = makeSampleBuffer(stream, type: type, offset: 0) {
stream.mixer.videoIO.codec.appendSampleBuffer(sampleBuffer)
}
default:
break
}
} else {
// IsExHeader for Enhancing RTMP, FLV
guard payload[1] == 0x68 && payload[2] == 0x76 && payload[3] == 0x63 && payload[4] == 0x31 else {
return
}
switch payload[0] & 0b00001111 {
case FLVVideoPacketType.sequenceStart.rawValue:
makeFormatDescription(stream, format: .hevc)
case FLVVideoPacketType.codedFrames.rawValue:
if let sampleBuffer = makeSampleBuffer(stream, type: type, offset: 3) {
stream.mixer.videoIO.codec.appendSampleBuffer(sampleBuffer)
}
default:
break
}
default:
break
}
}
private func makeSampleBuffer(_ stream: RTMPStream, type: RTMPChunkType) -> CMSampleBuffer? {
let isBaseline = stream.mixer.videoIO.codec.isBaseline
private func makeSampleBuffer(_ stream: RTMPStream, type: RTMPChunkType, offset: Int = 0) -> CMSampleBuffer? {
// compositionTime -> SI24
var compositionTime = isBaseline ? 0 : Int32(data: [0] + payload[2..<5]).bigEndian
var compositionTime = Int32(data: [0] + payload[2 + offset..<5 + offset]).bigEndian
compositionTime <<= 8
compositionTime /= 256
@ -686,10 +697,10 @@ final class RTMPVideoMessage: RTMPMessage {
var timing = CMSampleTimingInfo(
duration: CMTimeMake(value: duration, timescale: 1000),
presentationTimeStamp: CMTimeMake(value: Int64(stream.videoTimestamp) + Int64(compositionTime), timescale: 1000),
decodeTimeStamp: .invalid
decodeTimeStamp: compositionTime == 0 ? .invalid : CMTimeMake(value: Int64(stream.videoTimestamp), timescale: 1000)
)
let blockBuffer = payload.makeBlockBuffer(advancedBy: FLVTagType.video.headerSize)
let blockBuffer = payload.makeBlockBuffer(advancedBy: FLVTagType.video.headerSize + offset)
var sampleBuffer: CMSampleBuffer?
var sampleSize = blockBuffer?.dataLength ?? 0
guard CMSampleBufferCreate(
@ -707,14 +718,26 @@ final class RTMPVideoMessage: RTMPMessage {
sampleBufferOut: &sampleBuffer) == noErr else {
return nil
}
sampleBuffer?.isNotSync = !(payload[0] >> 4 & 0b0111 == FLVFrameType.key.rawValue)
return sampleBuffer
}
private func makeFormatDescription(_ stream: RTMPStream) -> OSStatus {
var config = AVCConfigurationRecord()
config.data = payload.subdata(in: FLVTagType.video.headerSize..<payload.count)
return config.makeFormatDescription(&stream.mixer.videoIO.formatDescription)
private func makeFormatDescription(_ stream: RTMPStream, format: VideoCodecSettings.Format) {
var status = noErr
switch format {
case .h264:
var config = AVCDecoderConfigurationRecord()
config.data = payload.subdata(in: FLVTagType.video.headerSize..<payload.count)
status = config.makeFormatDescription(&stream.mixer.videoIO.formatDescription)
case .hevc:
var config = HEVCDecoderConfigurationRecord()
config.data = payload.subdata(in: FLVTagType.video.headerSize..<payload.count)
status = config.makeFormatDescription(&stream.mixer.videoIO.formatDescription)
}
if status == noErr {
stream.mixer.mediaLink.hasVideo = true
stream.dispatch(.rtmpStatus, bubbles: false, data: RTMPStream.Code.videoDimensionChange.data(""))
}
}
}

View File

@ -1,7 +1,6 @@
import AVFoundation
protocol RTMPMuxerDelegate: AnyObject {
func muxer(_ muxer: RTMPMuxer, didSetMetadata: ASObject)
func muxer(_ muxer: RTMPMuxer, didOutputAudio buffer: Data, withTimestamp: Double)
func muxer(_ muxer: RTMPMuxer, didOutputVideo buffer: Data, withTimestamp: Double)
func muxer(_ muxer: RTMPMuxer, audioCodecErrorOccurred error: AudioCodec.Error)
@ -13,13 +12,14 @@ protocol RTMPMuxerDelegate: AnyObject {
final class RTMPMuxer {
static let aac: UInt8 = FLVAudioCodec.aac.rawValue << 4 | FLVSoundRate.kHz44.rawValue << 2 | FLVSoundSize.snd16bit.rawValue << 1 | FLVSoundType.stereo.rawValue
weak var delegate: RTMPMuxerDelegate?
private var audioTimeStamp = CMTime.zero
private var videoTimeStamp = CMTime.zero
weak var delegate: (any RTMPMuxerDelegate)?
private var audioTimeStamp: CMTime = .zero
private var videoTimeStamp: CMTime = .zero
private let compositiionTimeOffset: CMTime = .init(value: 3, timescale: 30)
func dispose() {
audioTimeStamp = CMTime.zero
videoTimeStamp = CMTime.zero
audioTimeStamp = .zero
videoTimeStamp = .zero
}
}
@ -55,38 +55,58 @@ extension RTMPMuxer: VideoCodecDelegate {
}
func videoCodec(_ codec: VideoCodec, didOutput formatDescription: CMFormatDescription?) {
guard
let formatDescription = formatDescription,
let avcC = AVCConfigurationRecord.getData(formatDescription) else {
guard let formatDescription else {
return
}
var buffer = Data([FLVFrameType.key.rawValue << 4 | FLVVideoCodec.avc.rawValue, FLVAVCPacketType.seq.rawValue, 0, 0, 0])
buffer.append(avcC)
delegate?.muxer(self, didOutputVideo: buffer, withTimestamp: 0)
switch codec.settings.format {
case .h264:
guard let avcC = AVCDecoderConfigurationRecord.getData(formatDescription) else {
return
}
var buffer = Data([FLVFrameType.key.rawValue << 4 | FLVVideoCodec.avc.rawValue, FLVAVCPacketType.seq.rawValue, 0, 0, 0])
buffer.append(avcC)
delegate?.muxer(self, didOutputVideo: buffer, withTimestamp: 0)
case .hevc:
guard let hvcC = HEVCDecoderConfigurationRecord.getData(formatDescription) else {
return
}
var buffer = Data([0b10000000 | FLVFrameType.key.rawValue << 4 | FLVVideoPacketType.sequenceStart.rawValue, 0x68, 0x76, 0x63, 0x31])
buffer.append(hvcC)
delegate?.muxer(self, didOutputVideo: buffer, withTimestamp: 0)
}
}
func videoCodec(_ codec: VideoCodec, didOutput sampleBuffer: CMSampleBuffer) {
let keyframe = !sampleBuffer.isNotSync
var compositionTime: Int32 = 0
let presentationTimeStamp = sampleBuffer.presentationTimeStamp
var decodeTimeStamp = sampleBuffer.decodeTimeStamp
if decodeTimeStamp == CMTime.invalid {
decodeTimeStamp = presentationTimeStamp
} else {
compositionTime = (videoTimeStamp == .zero) ? 0 : Int32((sampleBuffer.presentationTimeStamp.seconds - videoTimeStamp.seconds) * 1000)
}
let delta = (videoTimeStamp == .zero ? 0 : decodeTimeStamp.seconds - videoTimeStamp.seconds) * 1000
let decodeTimeStamp = sampleBuffer.decodeTimeStamp.isValid ? sampleBuffer.decodeTimeStamp : sampleBuffer.presentationTimeStamp
let compositionTime = getCompositionTime(sampleBuffer)
let delta = (videoTimeStamp == .zero ? .zero : decodeTimeStamp - videoTimeStamp).seconds * 1000
guard let data = sampleBuffer.dataBuffer?.data, 0 <= delta else {
return
}
var buffer = Data([((keyframe ? FLVFrameType.key.rawValue : FLVFrameType.inter.rawValue) << 4) | FLVVideoCodec.avc.rawValue, FLVAVCPacketType.nal.rawValue])
buffer.append(contentsOf: compositionTime.bigEndian.data[1..<4])
buffer.append(data)
delegate?.muxer(self, didOutputVideo: buffer, withTimestamp: delta)
switch codec.settings.format {
case .h264:
var buffer = Data([((keyframe ? FLVFrameType.key.rawValue : FLVFrameType.inter.rawValue) << 4) | FLVVideoCodec.avc.rawValue, FLVAVCPacketType.nal.rawValue])
buffer.append(contentsOf: compositionTime.bigEndian.data[1..<4])
buffer.append(data)
delegate?.muxer(self, didOutputVideo: buffer, withTimestamp: delta)
case .hevc:
var buffer = Data([0b10000000 | ((keyframe ? FLVFrameType.key.rawValue : FLVFrameType.inter.rawValue) << 4) | FLVVideoPacketType.codedFrames.rawValue, 0x68, 0x76, 0x63, 0x31])
buffer.append(contentsOf: compositionTime.bigEndian.data[1..<4])
buffer.append(data)
delegate?.muxer(self, didOutputVideo: buffer, withTimestamp: delta)
}
videoTimeStamp = decodeTimeStamp
}
func videoCodecWillDropFame(_ codec: VideoCodec) -> Bool {
return delegate?.muxerWillDropFrame(self) ?? false
}
private func getCompositionTime(_ sampleBuffer: CMSampleBuffer) -> Int32 {
guard sampleBuffer.decodeTimeStamp.isValid, sampleBuffer.decodeTimeStamp != sampleBuffer.presentationTimeStamp else {
return 0
}
return Int32((sampleBuffer.presentationTimeStamp - videoTimeStamp + compositiionTimeOffset).seconds * 1000)
}
}

View File

@ -30,7 +30,7 @@ final class RTMPNWSocket: RTMPSocketCompatible {
}
var qualityOfService: DispatchQoS = .default
var inputBuffer = Data()
weak var delegate: RTMPSocketDelegate?
weak var delegate: (any RTMPSocketDelegate)?
private(set) var queueBytesOut: Atomic<Int64> = .init(0)
private(set) var totalBytesIn: Atomic<Int64> = .init(0)

View File

@ -30,7 +30,7 @@ struct RTMPSharedObjectEvent {
self.data = data
}
init?(serializer: inout AMFSerializer) throws {
init?(serializer: inout any AMFSerializer) throws {
guard let byte: UInt8 = try? serializer.readUInt8(), let type = RTMPSharedObjectType(rawValue: byte) else {
return nil
}
@ -50,7 +50,7 @@ struct RTMPSharedObjectEvent {
}
}
func serialize(_ serializer: inout AMFSerializer) {
func serialize(_ serializer: inout any AMFSerializer) {
serializer.writeUInt8(type.rawValue)
guard let name: String = name else {
serializer.writeUInt32(0)

View File

@ -12,7 +12,7 @@ final class RTMPSocket: NetSocket, RTMPSocketCompatible {
}
var chunkSizeC: Int = RTMPChunk.defaultSize
var chunkSizeS: Int = RTMPChunk.defaultSize
weak var delegate: RTMPSocketDelegate?
weak var delegate: (any RTMPSocketDelegate)?
private var handshake = RTMPHandshake()
override var totalBytesIn: Atomic<Int64> {

View File

@ -11,7 +11,7 @@ enum RTMPSocketReadyState: UInt8 {
protocol RTMPSocketCompatible: AnyObject {
var timeout: Int { get set }
var delegate: RTMPSocketDelegate? { get set }
var delegate: (any RTMPSocketDelegate)? { get set }
var connected: Bool { get }
var timestamp: TimeInterval { get }
var readyState: RTMPSocketReadyState { get set }
@ -47,7 +47,7 @@ extension RTMPSocketCompatible {
// MARK: -
// swiftlint:disable class_delegate_protocol
protocol RTMPSocketDelegate: EventDispatcherConvertible {
func socket(_ socket: RTMPSocketCompatible, data: Data)
func socket(_ socket: RTMPSocketCompatible, readyState: RTMPSocketReadyState)
func socket(_ socket: RTMPSocketCompatible, totalBytesIn: Int64)
func socket(_ socket: any RTMPSocketCompatible, data: Data)
func socket(_ socket: any RTMPSocketCompatible, readyState: RTMPSocketReadyState)
func socket(_ socket: any RTMPSocketCompatible, totalBytesIn: Int64)
}

View File

@ -158,6 +158,16 @@ open class RTMPStream: NetStream {
case publishing
}
private struct PausedStatus {
let hasAudio: Bool
let hasVideo: Bool
init(hasAudio: Bool, hasVideo: Bool) {
self.hasAudio = hasAudio
self.hasVideo = hasVideo
}
}
static let defaultID: UInt32 = 0
/// The NetStreamInfo object whose properties contain data.
public internal(set) var info = RTMPStreamInfo()
@ -216,8 +226,23 @@ open class RTMPStream: NetStream {
lockQueue.async {
switch self.readyState {
case .publish, .publishing:
self.hasVideo = self.paused
self.hasAudio = self.paused
if self.paused {
self.pausedStatus = .init(hasAudio: self.hasAudio, hasVideo: self.hasVideo)
self.hasAudio = false
self.hasVideo = false
} else {
self.hasAudio = self.pausedStatus.hasAudio
self.hasVideo = self.pausedStatus.hasVideo
}
case .play, .playing:
self.rtmpConnection?.socket.doOutput(chunk: RTMPChunk(message: RTMPCommandMessage(
streamId: self.id,
transactionId: 0,
objectEncoding: self.objectEncoding,
commandName: "pause",
commandObject: nil,
arguments: [self.paused, floor(self.startedAt.timeIntervalSinceNow * -1000)]
)))
default:
break
}
@ -239,11 +264,14 @@ open class RTMPStream: NetStream {
var videoTimestampZero: Double = -1.0
private let muxer = RTMPMuxer()
private var messages: [RTMPCommandMessage] = []
private var startedAt = Date()
private var frameCount: UInt16 = 0
private var dispatcher: EventDispatcherConvertible!
private var dispatcher: (any EventDispatcherConvertible)!
private var audioWasSent = false
private var videoWasSent = false
private var pausedStatus = PausedStatus(hasAudio: false, hasVideo: false)
private var howToPublish: RTMPStream.HowToPublish = .live
private var dataTimeStamps: [String: Date] = .init()
private weak var rtmpConnection: RTMPConnection?
/// Creates a new stream.
@ -369,12 +397,20 @@ open class RTMPStream: NetStream {
guard let rtmpConnection = self.rtmpConnection, self.readyState == .publishing else {
return
}
let length = rtmpConnection.socket.doOutput(chunk: RTMPChunk(message: RTMPDataMessage(
streamId: self.id,
objectEncoding: self.objectEncoding,
handlerName: handlerName,
arguments: arguments
)))
let dataWasSent = self.dataTimeStamps[handlerName] == nil ? false : true
let timestmap: UInt32 = dataWasSent ? UInt32((self.dataTimeStamps[handlerName]?.timeIntervalSinceNow ?? 0) * -1000) : UInt32(self.startedAt.timeIntervalSinceNow * -1000)
let chunk = RTMPChunk(
type: dataWasSent ? RTMPChunkType.one : RTMPChunkType.zero,
streamId: RTMPChunk.StreamID.data.rawValue,
message: RTMPDataMessage(
streamId: self.id,
objectEncoding: self.objectEncoding,
timestamp: timestmap,
handlerName: handlerName,
arguments: arguments
))
let length = rtmpConnection.socket.doOutput(chunk: chunk)
self.dataTimeStamps[handlerName] = .init()
self.info.byteCount.mutate { $0 += Int64(length) }
}
}
@ -387,7 +423,9 @@ open class RTMPStream: NetStream {
metadata["width"] = mixer.videoIO.codec.settings.videoSize.width
metadata["height"] = mixer.videoIO.codec.settings.videoSize.height
metadata["framerate"] = mixer.videoIO.frameRate
metadata["videocodecid"] = FLVVideoCodec.avc.rawValue
if mixer.videoIO.codec.settings.format == .h264 {
metadata["videocodecid"] = FLVVideoCodec.avc.rawValue
}
metadata["videodatarate"] = mixer.videoIO.codec.settings.bitRate / 1000
}
if mixer.audioIO.capture.device != nil {
@ -468,6 +506,7 @@ open class RTMPStream: NetStream {
}
messages.removeAll()
case .play:
startedAt = .init()
videoTimestamp = 0
videoTimestampZero = -1.0
audioTimestamp = 0
@ -475,11 +514,13 @@ open class RTMPStream: NetStream {
mixer.delegate = self
mixer.startDecoding()
case .publish:
startedAt = .init()
muxer.dispose()
muxer.delegate = self
mixer.startRunning()
videoWasSent = false
audioWasSent = false
dataTimeStamps.removeAll()
FCPublish()
case .publishing:
send(handlerName: "@setDataFrame", arguments: "onMetaData", createMetaData())
@ -551,10 +592,6 @@ extension RTMPStream: EventDispatcherConvertible {
extension RTMPStream: RTMPMuxerDelegate {
// MARK: RTMPMuxerDelegate
func muxer(_ muxer: RTMPMuxer, didSetMetadata: ASObject) {
send(handlerName: "@setDataFrame", arguments: "onMetaData", didSetMetadata)
}
func muxer(_ muxer: RTMPMuxer, didOutputAudio buffer: Data, withTimestamp: Double) {
guard let rtmpConnection, readyState == .publishing else {
return
@ -601,25 +638,3 @@ extension RTMPStream: RTMPMuxerDelegate {
return delegate?.streamWillDropFrame(self) ?? false
}
}
extension RTMPStream: IOMixerDelegate {
// MARK: IOMixerDelegate
func mixer(_ mixer: IOMixer, didOutput video: CMSampleBuffer) {
frameCount += 1
delegate?.stream(self, didOutput: video)
}
func mixer(_ mixer: IOMixer, didOutput audio: AVAudioPCMBuffer, presentationTimeStamp: CMTime) {
delegate?.stream(self, didOutput: audio, presentationTimeStamp: presentationTimeStamp)
}
#if os(iOS)
func mixer(_ mixer: IOMixer, sessionWasInterrupted session: AVCaptureSession, reason: AVCaptureSession.InterruptionReason) {
delegate?.stream(self, sessionWasInterrupted: session, reason: reason)
}
func mixer(_ mixer: IOMixer, sessionInterruptionEnded session: AVCaptureSession, reason: AVCaptureSession.InterruptionReason) {
delegate?.stream(self, sessionInterruptionEnded: session, reason: reason)
}
#endif
}

View File

@ -11,7 +11,7 @@ final class RTMPTSocket: NSObject, RTMPSocketCompatible {
var qualityOfService: DispatchQoS = .default
var securityLevel: StreamSocketSecurityLevel = .none
var outputBufferSize: Int = RTMPTSocket.defaultWindowSizeC
weak var delegate: RTMPSocketDelegate?
weak var delegate: (any RTMPSocketDelegate)?
var connected = false {
didSet {
if connected {

View File

@ -0,0 +1,53 @@
import CoreMedia
import Foundation
enum CMAudioSampleBufferUtil {
static func makeSampleBuffer(_ buffer: CMSampleBuffer, numSamples: Int, presentationTimeStamp: CMTime) -> CMSampleBuffer? {
guard 0 < numSamples, let formatDescription = buffer.formatDescription, let streamBasicDescription = formatDescription.streamBasicDescription else {
return nil
}
var status: OSStatus = noErr
var blockBuffer: CMBlockBuffer?
let blockSize = numSamples * Int(streamBasicDescription.pointee.mBytesPerPacket)
status = CMBlockBufferCreateWithMemoryBlock(
allocator: nil,
memoryBlock: nil,
blockLength: blockSize,
blockAllocator: nil,
customBlockSource: nil,
offsetToData: 0,
dataLength: blockSize,
flags: 0,
blockBufferOut: &blockBuffer
)
guard let blockBuffer, status == noErr else {
return nil
}
status = CMBlockBufferFillDataBytes(
with: 0,
blockBuffer: blockBuffer,
offsetIntoDestination: 0,
dataLength: blockSize
)
guard status == noErr else {
return nil
}
var sampleBuffer: CMSampleBuffer?
status = CMAudioSampleBufferCreateWithPacketDescriptions(
allocator: nil,
dataBuffer: blockBuffer,
dataReady: true,
makeDataReadyCallback: nil,
refcon: nil,
formatDescription: formatDescription,
sampleCount: numSamples,
presentationTimeStamp: presentationTimeStamp,
packetDescriptions: nil,
sampleBufferOut: &sampleBuffer
)
guard let sampleBuffer, status == noErr else {
return nil
}
return sampleBuffer
}
}

View File

@ -1,88 +0,0 @@
import Foundation
struct RingBuffer<Element> {
var first: Element? {
buffer[top]
}
var count: Int {
if top == bottom {
return first == nil ? 0 : buffer.count
}
let value = bottom - top
return value < 0 ? value + buffer.count : value
}
// swiftlint:disable empty_count
var isEmpty: Bool {
count == 0
}
var isFull: Bool {
return count == (mask + 1)
}
private var top: Int = 0
private var mask: Int = 0
private var bottom: Int = 0
private var buffer: [Element?]
private let extensible: Bool
init(_ capacity: Int, extensible: Bool = true) {
buffer = .init(repeating: nil, count: capacity)
mask = capacity - 1
self.extensible = extensible
}
mutating func append(_ newElement: Element) -> Bool {
guard !isFull else {
return extend(newElement)
}
defer {
bottom += 1
bottom &= mask
}
buffer[bottom] = newElement
return true
}
@discardableResult
mutating func removeFirst() -> Element? {
defer {
buffer[top] = nil
top += 1
top &= mask
}
return buffer[top]
}
mutating func removeAll() {
for i in 0..<buffer.count {
buffer[i] = nil
}
top = 0
bottom = 0
}
private mutating func extend(_ newElement: Element) -> Bool {
guard extensible else {
return false
}
let tail = buffer[0..<top]
let head = buffer[top...]
buffer.replaceSubrange(top..., with: tail)
buffer.replaceSubrange(0..<top, with: head)
bottom = count
top = 0
buffer.append(contentsOf: [Element?](repeating: nil, count: buffer.count))
mask = buffer.count - 1
return append(newElement)
}
}
extension RingBuffer: CustomStringConvertible {
// MARK: CustomStringConvertible
var description: String {
buffer.description
}
}

View File

@ -0,0 +1,22 @@
import Foundation
import XCTest
import AVFoundation
@testable import HaishinKit
final class FLVVideoFourCCTests: XCTestCase {
func testMain() {
XCTAssertEqual("av01", str4(n: Int(FLVVideoFourCC.av1.rawValue)))
XCTAssertEqual("hvc1", str4(n: Int(FLVVideoFourCC.hevc.rawValue)))
XCTAssertEqual("vp09", str4(n: Int(FLVVideoFourCC.vp9.rawValue)))
}
func str4(n: Int) -> String {
var result = String(UnicodeScalar((n >> 24) & 255)?.description ?? "")
result.append(UnicodeScalar((n >> 16) & 255)?.description ?? "")
result.append(UnicodeScalar((n >> 8) & 255)?.description ?? "")
result.append(UnicodeScalar(n & 255)?.description ?? "")
return result
}
}

View File

@ -0,0 +1,15 @@
import Foundation
import AVFoundation
import XCTest
@testable import HaishinKit
final class HEVCDecoderConfigurationRecordTests: XCTestCase {
func testMain() {
let data = Data([1, 1, 96, 0, 0, 0, 176, 0, 0, 0, 0, 0, 93, 240, 0, 252, 253, 248, 248, 0, 0, 15, 3, 32, 0, 1, 0, 24, 64, 1, 12, 1, 255, 255, 1, 96, 0, 0, 3, 0, 176, 0, 0, 3, 0, 0, 3, 0, 93, 21, 192, 144, 33, 0, 1, 0, 36, 66, 1, 1, 1, 96, 0, 0, 3, 0, 176, 0, 0, 3, 0, 0, 3, 0, 93, 160, 2, 40, 128, 39, 28, 178, 226, 5, 123, 145, 101, 83, 80, 16, 16, 16, 8, 34, 0, 1, 0, 7, 68, 1, 192, 44, 188, 20, 201])
let hevc = HEVCDecoderConfigurationRecord(data: data)
var formatDescription: CMFormatDescription?
_ = hevc.makeFormatDescription(&formatDescription)
XCTAssertNotNil(formatDescription)
}
}

View File

@ -7,7 +7,7 @@ import XCTest
final class NALUnitReaderTests: XCTestCase {
func testMain() {
let data = Data([0, 0, 0, 1, 9, 240, 0, 0, 0, 1, 103, 77, 64, 13, 218, 5, 7, 236, 4, 64, 0, 0, 3, 0, 64, 0, 0, 7, 131, 197, 10, 168, 0, 0, 0, 1, 104, 239, 60, 128, 0, 0, 0, 1, 101, 136, 130, 1, 15, 250, 120, 30, 255, 244, 55, 157, 215, 115, 255, 239, 112, 39, 83, 211, 17, 103, 152, 229, 241, 131, 49, 7, 123, 10, 145, 184, 0, 0, 3, 3, 133, 122, 49, 20, 214, 115, 51, 202, 59, 43, 204, 79, 27, 229, 101, 135, 60, 234, 243, 78, 210, 98, 30, 252, 36, 38, 20, 202, 41, 121, 70, 45, 15, 54, 125, 153, 199, 236, 90, 142, 247, 27, 202, 17, 205, 77, 133, 21, 189, 212, 159, 87, 222, 100, 53, 75, 211, 139, 219, 83, 89, 59, 199, 242, 182, 18, 245, 72, 70, 50, 230, 58, 82, 122, 179, 121, 243, 232, 107, 206, 157, 13, 151, 218, 93, 118, 157, 216, 67, 142, 2, 95, 69, 134, 167, 106, 101, 67, 112, 72, 120, 144, 105, 148, 234, 94, 74, 154, 149, 190, 13, 10, 88, 148, 169, 56, 46, 152, 176, 173, 110, 22, 215, 35, 18, 203, 125, 158, 16, 25, 228, 163, 26, 63, 30, 3, 96, 123, 237, 109, 12, 174, 216, 184, 25, 33, 123, 175, 69, 154, 240, 37, 168, 99, 38, 144, 221, 227, 119, 206, 215, 149, 111, 250, 180, 134, 78, 85, 50, 129, 178, 93, 255, 227, 144, 100, 156, 113, 113, 235, 47, 242, 68, 236, 109, 135, 87, 84, 178, 184, 163, 161, 170, 184, 84, 68, 113, 213, 73, 180, 25, 1, 77, 13, 222, 138, 69, 24, 104, 255, 218, 76, 224, 26, 122, 0, 231, 230, 203, 211, 172, 224, 26, 184, 69, 180, 123, 221, 8, 182, 241, 202, 193, 169, 120, 208, 135, 31, 82, 168, 125, 93, 207, 207, 109, 14, 243, 179, 97, 102, 58, 243, 14, 152, 13, 231, 30, 221, 177, 9, 72, 68, 212, 196, 71, 223, 142, 0, 248, 116, 139, 133, 210, 142, 83, 112, 87, 53, 138, 103, 202, 169, 112, 27, 7, 213, 152, 144, 207, 141, 84, 183, 121, 30, 128, 64, 95, 28, 10, 88, 116, 188, 83, 127, 181, 57, 47, 5, 19, 62, 132, 173, 201, 203, 170, 68, 224, 135, 134, 58, 206, 71, 77, 98, 77, 150, 225, 111, 103, 65, 84, 29, 176, 97, 72, 182, 151, 220, 153, 39, 247, 78, 136, 9, 166, 140, 221, 243, 68, 139, 229, 236, 189, 181, 124, 7, 35, 230, 139, 247, 223, 16, 78, 15, 189, 12, 144, 241, 169, 170, 166, 232, 17, 221, 212, 71, 69, 95, 122, 9, 36, 153, 246, 136, 111, 36, 50, 56, 118, 181, 240, 100, 5, 137, 252, 23, 244, 131, 41, 190, 128, 198, 134, 232, 40, 242, 214, 82, 69, 9, 168, 59, 179, 254, 220, 234, 16, 1, 170, 182, 214, 131, 169, 124, 91, 19, 65, 162, 179, 8, 98, 204, 219, 240, 6, 79, 49, 67, 120, 31, 236, 103, 167, 108, 213, 69, 193, 226, 66, 66, 242, 52, 18, 161, 42, 164, 133, 191, 82, 156, 2, 204, 75, 254, 217, 111, 215, 140, 157, 195, 195, 112, 120, 165, 163, 136, 125, 92, 195, 182, 99, 106, 220])
let reader = NALUnitReader()
let reader = AVCNALUnitReader()
let units = reader.read(data)
let sps = units.first(where: { $0.type == .sps })
XCTAssertEqual(sps?.data.bytes, [103, 77, 64, 13, 218, 5, 7, 236, 4, 64, 0, 0, 3, 0, 64, 0, 0, 7, 131, 197, 10, 168])
@ -16,7 +16,7 @@ final class NALUnitReaderTests: XCTestCase {
func testSlice_startCode3() {
let data = Data([0, 0, 1, 65, 226, 8, 13, 224, 179, 253, 15, 80, 87, 254, 170, 10, 255, 213, 65, 95, 250, 168, 43, 255, 85, 5, 127, 234, 160, 175, 253, 84, 21, 255, 170, 130, 10, 197, 255, 170, 134, 250, 37, 66, 31, 232, 170, 28, 59, 199, 255, 170, 135, 42, 122, 250, 11, 143, 255, 85, 5, 127, 234, 160, 175, 253, 84, 43, 208, 134, 33, 111, 244, 37, 66, 221, 88, 190, 147, 21, 200, 236, 47, 210, 127, 166, 196, 119, 250, 168, 43, 255, 85, 5, 127, 234, 160, 175, 253, 84, 21, 255, 170, 130, 191, 245, 80, 87, 254, 170, 10, 255, 213, 65, 95, 250, 168, 43, 248])
let reader = NALUnitReader()
let reader = AVCNALUnitReader()
let units = reader.read(data)
XCTAssertEqual([65, 226, 8, 13], units.first?.data.bytes[0..<4])
XCTAssertTrue(units.contains(where: { $0.type == .slice }))
@ -24,7 +24,7 @@ final class NALUnitReaderTests: XCTestCase {
func testSPSPPS_startCode3() {
let data = Data([0, 0, 1, 39, 66, 0, 30, 171, 64, 88, 25, 242, 203, 53, 1, 1, 1, 2, 0, 0, 1, 40, 206, 60, 128, 0, 0, 1, 39, 66, 0, 30, 171, 64, 88, 25, 242, 203, 53, 1, 1, 1, 2, 0, 0, 1, 40, 206, 60, 128, 0, 0, 1, 101, 184, 32, 3, 255, 255, 254, 30, 30, 40, 0, 8, 162, 251, 239, 190, 251, 239, 190, 251, 239, 190, 251, 239, 190, 251, 239, 190, 251, 239, 190, 251, 239, 190, 251, 239, 190, 251, 239, 190, 251, 239, 190, 251, 239, 190, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 175, 255, 227, 240, 65, 192, 1, 16, 101, 17, 204, 73, 101, 165, 194, 60, 154, 126, 49, 8, 164, 150, 125, 247, 223, 125, 247, 223, 125, 247, 223, 125, 247, 223, 127, 255, 138, 252, 16, 120, 0, 55, 178, 27, 153, 226, 14, 166, 169, 75, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 193, 63, 255, 134, 166, 0, 0, 128, 200, 0, 8, 17, 0, 1, 96, 242, 96, 19, 129, 190, 129, 218, 96, 235, 136, 1, 198, 4, 169, 254, 196, 184, 65, 20, 5, 128, 176, 30, 2, 0, 160, 2, 32, 166, 47, 196, 70, 248, 176, 128, 1, 5, 23, 44, 129, 0, 128, 61, 204, 4, 163, 208, 131, 132, 72, 82, 216, 66, 185, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 224, 31, 255, 96, 174, 0, 9, 168, 2, 235, 144, 14, 120, 97, 73, 182, 124, 161, 0, 0, 32, 32, 0, 2, 12, 64, 0, 32, 65, 65, 134, 48, 150, 0, 2, 1, 128, 6, 2, 0, 19, 128, 18, 51, 13, 97, 202, 112, 8, 110, 242, 1, 128, 6, 185, 128, 130, 164, 24, 117, 238, 64, 27, 154, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 235, 174, 186, 233, 235, 174, 186, 235, 175, 255, 255, 130, 239, 0, 7, 24, 27, 56, 90, 108, 195, 52, 5, 156, 12, 212, 90, 62, 1, 23, 128, 8, 35, 201, 76, 218, 71, 9, 31, 159, 253, 221, 199, 65, 220, 0, 24, 152, 156, 8, 30, 102, 87, 136, 225, 17, 170, 242, 109, 0, 88, 97, 19, 133, 35, 14, 179, 217, 217, 188, 212, 50, 138, 112, 86, 161, 151, 215, 56, 73, 126, 108, 130, 28, 45, 172, 222, 5, 7, 27, 252, 215, 255, 121, 11, 86, 3, 2, 86, 156, 239, 209, 189, 183, 117, 226, 29, 21, 192, 236, 87, 16, 153, 48, 100, 226, 90, 243, 160, 0, 100, 129, 102, 20, 1, 17, 64, 38, 251, 224, 128, 1, 0, 25, 192, 240, 160, 62, 54, 11, 90, 25, 108, 164, 6, 82, 223, 19, 200, 0, 4, 0, 136, 131, 97, 133, 147, 194, 128, 35, 135, 110, 31, 255, 234, 131, 191, 85, 162, 0, 1, 0, 61, 111, 224, 82, 52, 69, 101, 187, 238, 215, 255, 131, 0, 79, 136, 142, 24, 190, 138, 230, 192, 9, 218, 71, 116])
let reader = NALUnitReader()
let reader = AVCNALUnitReader()
XCTAssertNotNil(reader.makeFormatDescription(data))
}
}

View File

@ -1,17 +0,0 @@
import Foundation
import XCTest
@testable import HaishinKit
final class RTMPReaderTests: XCTestCase {
func testReader() {
let bundle = Bundle(for: type(of: self))
let url = URL(fileURLWithPath: bundle.path(forResource: "SampleVideo_360x240_5mb", ofType: "flv")!)
let reader = FLVReader(url: url)
while true {
guard let _ = reader.next() else {
return
}
}
}
}

View File

@ -0,0 +1,127 @@
import Foundation
import XCTest
import CoreMedia
@testable import HaishinKit
final class CMAudioSampleBufferUtilTests: XCTestCase {
func test48000_2chTest() {
let streamBasicDescription = AudioStreamBasicDescription(
mSampleRate: 48000.0,
mFormatID: kAudioFormatLinearPCM,
mFormatFlags: 0xc,
mBytesPerPacket: 4,
mFramesPerPacket: 1,
mBytesPerFrame: 4,
mChannelsPerFrame: 2,
mBitsPerChannel: 16,
mReserved: 0
)
if let buffer = makeSampleBuffer(streamBasicDescription) {
XCTAssertNotNil(CMAudioSampleBufferUtil.makeSampleBuffer(buffer, numSamples: 1024, presentationTimeStamp: .zero))
} else {
XCTFail()
}
}
func test48000_4chTest() {
let streamBasicDescription = AudioStreamBasicDescription(
mSampleRate: 48000.0,
mFormatID: kAudioFormatLinearPCM,
mFormatFlags: 0xc,
mBytesPerPacket: 8,
mFramesPerPacket: 1,
mBytesPerFrame: 8,
mChannelsPerFrame: 4,
mBitsPerChannel: 16,
mReserved: 0
)
if let buffer = makeSampleBuffer(streamBasicDescription) {
XCTAssertNotNil(CMAudioSampleBufferUtil.makeSampleBuffer(buffer, numSamples: 1024, presentationTimeStamp: .zero))
} else {
XCTFail()
}
}
func test48000_3chTest() {
let streamBasicDescription = AudioStreamBasicDescription(
mSampleRate: 48000.0,
mFormatID: kAudioFormatLinearPCM,
mFormatFlags: 0xc,
mBytesPerPacket: 6,
mFramesPerPacket: 1,
mBytesPerFrame: 6,
mChannelsPerFrame: 3,
mBitsPerChannel: 16,
mReserved: 0
)
if let buffer = makeSampleBuffer(streamBasicDescription) {
XCTAssertNotNil(CMAudioSampleBufferUtil.makeSampleBuffer(buffer, numSamples: 1024, presentationTimeStamp: .zero))
} else {
XCTFail()
}
}
func test48000_2chTest_mac() {
let streamBasicDescription = AudioStreamBasicDescription(
mSampleRate: 48000.0,
mFormatID: kAudioFormatLinearPCM,
mFormatFlags: 0x29,
mBytesPerPacket: 4,
mFramesPerPacket: 1,
mBytesPerFrame: 4,
mChannelsPerFrame: 1,
mBitsPerChannel: 32,
mReserved: 0
)
if let buffer = makeSampleBuffer(streamBasicDescription) {
XCTAssertNotNil(CMAudioSampleBufferUtil.makeSampleBuffer(buffer, numSamples: 1024, presentationTimeStamp: .zero))
} else {
XCTFail()
}
}
private func makeSampleBuffer(_ streamBasicDescription: AudioStreamBasicDescription) -> CMSampleBuffer? {
guard let formatDescription = try? CMAudioFormatDescription(audioStreamBasicDescription: streamBasicDescription) else {
return nil
}
var status: OSStatus = noErr
var blockBuffer: CMBlockBuffer?
let blockSize = 1024 * Int(streamBasicDescription.mBytesPerPacket)
status = CMBlockBufferCreateWithMemoryBlock(
allocator: nil,
memoryBlock: nil,
blockLength: blockSize,
blockAllocator: nil,
customBlockSource: nil,
offsetToData: 0,
dataLength: blockSize,
flags: 0,
blockBufferOut: &blockBuffer
)
guard let blockBuffer, status == noErr else {
return nil
}
status = CMBlockBufferFillDataBytes(with: 0, blockBuffer: blockBuffer, offsetIntoDestination: 0, dataLength: blockSize)
guard status == noErr else {
return nil
}
var sampleBuffer: CMSampleBuffer?
status = CMAudioSampleBufferCreateWithPacketDescriptions(
allocator: nil,
dataBuffer: blockBuffer,
dataReady: true,
makeDataReadyCallback: nil,
refcon: nil,
formatDescription: formatDescription,
sampleCount: 1024,
presentationTimeStamp: CMTimeMake(value: 1024, timescale: Int32(streamBasicDescription.mSampleRate)),
packetDescriptions: nil,
sampleBufferOut: &sampleBuffer
)
guard let sampleBuffer, status == noErr else {
return nil
}
return sampleBuffer
}
}

View File

@ -1,82 +0,0 @@
import Foundation
import XCTest
@testable import HaishinKit
final class RingBufferTests: XCTestCase {
func testExtensibleCircularBuffer() {
var buffer = RingBuffer<String>(4, extensible: false)
_ = buffer.append("a")
_ = buffer.append("b")
_ = buffer.append("c")
_ = buffer.append("d")
XCTAssertEqual(buffer.count, 4)
XCTAssertEqual(buffer.isFull, true)
print(buffer)
XCTAssertEqual(buffer.removeFirst(), "a")
XCTAssertEqual(buffer.removeFirst(), "b")
XCTAssertEqual(buffer.removeFirst(), "c")
XCTAssertEqual(buffer.removeFirst(), "d")
_ = buffer.append("a")
_ = buffer.append("b")
_ = buffer.append("c")
_ = buffer.append("d")
XCTAssertEqual(buffer.removeFirst(), "a")
XCTAssertEqual(buffer.removeFirst(), "b")
XCTAssertEqual(buffer.removeFirst(), "c")
XCTAssertEqual(buffer.removeFirst(), "d")
print(buffer)
}
func testNonExtensibleCircularBuffer() {
var buffer = RingBuffer<String>(4, extensible: true)
_ = buffer.append("a")
_ = buffer.append("b")
_ = buffer.append("c")
_ = buffer.append("d")
XCTAssertEqual(buffer.count, 4)
XCTAssertEqual(buffer.isFull, true)
print(buffer)
XCTAssertEqual(buffer.removeFirst(), "a")
XCTAssertEqual(buffer.removeFirst(), "b")
XCTAssertEqual(buffer.removeFirst(), "c")
XCTAssertEqual(buffer.removeFirst(), "d")
XCTAssertEqual(buffer.count, 0)
XCTAssertEqual(buffer.isEmpty, true)
_ = buffer.append("a")
_ = buffer.append("b")
_ = buffer.append("c")
_ = buffer.append("d")
XCTAssertEqual(buffer.removeFirst(), "a")
XCTAssertEqual(buffer.removeFirst(), "b")
XCTAssertEqual(buffer.removeFirst(), "c")
XCTAssertEqual(buffer.removeFirst(), "d")
print(buffer)
}
func testExtensibleCircularBuffer2() {
var buffer = RingBuffer<String>(4, extensible: true)
_ = buffer.append("a")
_ = buffer.append("b")
_ = buffer.append("c")
_ = buffer.append("d")
XCTAssertEqual(buffer.removeFirst(), "a")
XCTAssertEqual(buffer.removeFirst(), "b")
XCTAssertEqual(buffer.count, 2)
XCTAssertEqual(buffer.isFull, false)
_ = buffer.append("e")
_ = buffer.append("f")
XCTAssertEqual(buffer.count, 4)
XCTAssertEqual(buffer.isFull, true)
_ = buffer.append("g")
_ = buffer.append("h")
XCTAssertEqual(buffer.count, 6)
XCTAssertEqual("c", buffer.removeFirst())
XCTAssertEqual("d", buffer.removeFirst())
XCTAssertEqual("e", buffer.removeFirst())
XCTAssertEqual("f", buffer.removeFirst())
XCTAssertEqual("g", buffer.removeFirst())
XCTAssertEqual("h", buffer.removeFirst())
XCTAssertEqual(buffer.count, 0)
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"internalParam","text":"lhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/!=(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/!=(_:_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Equatable.!=(_:_:)"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"role":"symbol","title":"!=(_:_:)","roleHeading":"Operator","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"symbolKind":"op","externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:10HaishinKit7ASArrayV","extendedModule":"Swift","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/Equatable-Implementations"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASArray/Equatable-Implementations":{"role":"collectionGroup","title":"Equatable Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/Equatable-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asarray\/equatable-implementations"},"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASArray/!=(_:_:)":{"role":"symbol","title":"!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/!=(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/!=(_:_:)"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"internalParam","text":"lhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/!=(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/!=(_:_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Equatable.!=(_:_:)"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"role":"symbol","title":"!=(_:_:)","roleHeading":"Operator","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"symbolKind":"op","externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:10HaishinKit7ASArrayV","extendedModule":"Swift","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/Equatable-Implementations"]]},"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASArray/Equatable-Implementations":{"role":"collectionGroup","title":"Equatable Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/Equatable-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asarray\/equatable-implementations"},"doc://HaishinKit/documentation/HaishinKit/ASArray/!=(_:_:)":{"role":"symbol","title":"!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/!=(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/!=(_:_:)"},"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"internalParam","text":"lhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","preciseIdentifier":"s:10HaishinKit7ASArrayV","text":"ASArray"},{"kind":"text","text":", "},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","preciseIdentifier":"s:10HaishinKit7ASArrayV","text":"ASArray"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/==(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/==(_:_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Equatable.==(_:_:)"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"role":"symbol","title":"==(_:_:)","roleHeading":"Operator","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"ASArray","preciseIdentifier":"s:10HaishinKit7ASArrayV"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ASArray","preciseIdentifier":"s:10HaishinKit7ASArrayV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"symbolKind":"op","externalID":"s:10HaishinKit7ASArrayV2eeoiySbAC_ACtFZ","extendedModule":"HaishinKit","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/Equatable-Implementations"]]},"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASArray/Equatable-Implementations":{"role":"collectionGroup","title":"Equatable Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/Equatable-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asarray\/equatable-implementations"},"doc://HaishinKit/documentation/HaishinKit/ASArray/==(_:_:)":{"role":"symbol","title":"==(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"ASArray","preciseIdentifier":"s:10HaishinKit7ASArrayV"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ASArray","preciseIdentifier":"s:10HaishinKit7ASArrayV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/==(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/==(_:_:)"},"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"internalParam","text":"lhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","preciseIdentifier":"s:10HaishinKit7ASArrayV","text":"ASArray"},{"kind":"text","text":", "},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","preciseIdentifier":"s:10HaishinKit7ASArrayV","text":"ASArray"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/==(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/==(_:_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Equatable.==(_:_:)"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"role":"symbol","title":"==(_:_:)","roleHeading":"Operator","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"ASArray","preciseIdentifier":"s:10HaishinKit7ASArrayV"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ASArray","preciseIdentifier":"s:10HaishinKit7ASArrayV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"symbolKind":"op","externalID":"s:10HaishinKit7ASArrayV2eeoiySbAC_ACtFZ","extendedModule":"HaishinKit","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/Equatable-Implementations"]]},"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"},"doc://HaishinKit/documentation/HaishinKit/ASArray/==(_:_:)":{"role":"symbol","title":"==(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"ASArray","preciseIdentifier":"s:10HaishinKit7ASArrayV"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ASArray","preciseIdentifier":"s:10HaishinKit7ASArrayV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/==(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/==(_:_:)"},"doc://HaishinKit/documentation/HaishinKit/ASArray/Equatable-Implementations":{"role":"collectionGroup","title":"Equatable Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/Equatable-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asarray\/equatable-implementations"}}}

View File

@ -1 +1 @@
{"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/customdebugstringconvertible-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/CustomDebugStringConvertible-Implementations","interfaceLanguage":"swift"},"topicSections":[{"title":"Instance Properties","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/debugDescription"],"generated":true}],"kind":"article","metadata":{"modules":[{"name":"HaishinKit"}],"role":"collectionGroup","title":"CustomDebugStringConvertible Implementations"},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"},"doc://HaishinKit/documentation/HaishinKit/ASArray/debugDescription":{"role":"symbol","title":"debugDescription","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"debugDescription"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/debugDescription","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/debugdescription"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}
{"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/customdebugstringconvertible-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/CustomDebugStringConvertible-Implementations","interfaceLanguage":"swift"},"topicSections":[{"title":"Instance Properties","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/debugDescription"],"generated":true}],"kind":"article","metadata":{"modules":[{"name":"HaishinKit"}],"role":"collectionGroup","title":"CustomDebugStringConvertible Implementations"},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray"]]},"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASArray/debugDescription":{"role":"symbol","title":"debugDescription","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"debugDescription"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/debugDescription","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/debugdescription"},"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"debugDescription"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/debugdescription"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/debugDescription","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"CustomDebugStringConvertible.debugDescription"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"role":"symbol","title":"debugDescription","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"debugDescription"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"symbolKind":"property","externalID":"s:10HaishinKit7ASArrayV16debugDescriptionSSvp","extendedModule":"HaishinKit","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/CustomDebugStringConvertible-Implementations"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASArray/CustomDebugStringConvertible-Implementations":{"role":"collectionGroup","title":"CustomDebugStringConvertible Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/CustomDebugStringConvertible-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asarray\/customdebugstringconvertible-implementations"},"doc://HaishinKit/documentation/HaishinKit/ASArray/debugDescription":{"role":"symbol","title":"debugDescription","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"debugDescription"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/debugDescription","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/debugdescription"},"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"debugDescription"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/debugdescription"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/debugDescription","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"CustomDebugStringConvertible.debugDescription"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"role":"symbol","title":"debugDescription","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"debugDescription"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"symbolKind":"property","externalID":"s:10HaishinKit7ASArrayV16debugDescriptionSSvp","extendedModule":"HaishinKit","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/CustomDebugStringConvertible-Implementations"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASArray/CustomDebugStringConvertible-Implementations":{"role":"collectionGroup","title":"CustomDebugStringConvertible Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/CustomDebugStringConvertible-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asarray\/customdebugstringconvertible-implementations"},"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"},"doc://HaishinKit/documentation/HaishinKit/ASArray/debugDescription":{"role":"symbol","title":"debugDescription","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"debugDescription"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/debugDescription","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/debugdescription"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}

View File

@ -1 +1 @@
{"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/Equatable-Implementations","interfaceLanguage":"swift"},"topicSections":[{"title":"Operators","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/!=(_:_:)","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/==(_:_:)"],"generated":true}],"kind":"article","metadata":{"modules":[{"name":"HaishinKit"}],"role":"collectionGroup","title":"Equatable Implementations"},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASArray/!=(_:_:)":{"role":"symbol","title":"!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/!=(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/!=(_:_:)"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"},"doc://HaishinKit/documentation/HaishinKit/ASArray/==(_:_:)":{"role":"symbol","title":"==(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"ASArray","preciseIdentifier":"s:10HaishinKit7ASArrayV"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ASArray","preciseIdentifier":"s:10HaishinKit7ASArrayV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/==(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/==(_:_:)"}}}
{"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/Equatable-Implementations","interfaceLanguage":"swift"},"topicSections":[{"title":"Operators","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/!=(_:_:)","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/==(_:_:)"],"generated":true}],"kind":"article","metadata":{"modules":[{"name":"HaishinKit"}],"role":"collectionGroup","title":"Equatable Implementations"},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray"]]},"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"},"doc://HaishinKit/documentation/HaishinKit/ASArray/!=(_:_:)":{"role":"symbol","title":"!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/!=(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/!=(_:_:)"},"doc://HaishinKit/documentation/HaishinKit/ASArray/==(_:_:)":{"role":"symbol","title":"==(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"ASArray","preciseIdentifier":"s:10HaishinKit7ASArrayV"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ASArray","preciseIdentifier":"s:10HaishinKit7ASArrayV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/==(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/==(_:_:)"}}}

View File

@ -1 +1 @@
{"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/expressiblebyarrayliteral-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/ExpressibleByArrayLiteral-Implementations","interfaceLanguage":"swift"},"topicSections":[{"title":"Initializers","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/init(arrayLiteral:)"],"generated":true}],"kind":"article","metadata":{"modules":[{"name":"HaishinKit"}],"role":"collectionGroup","title":"ExpressibleByArrayLiteral Implementations"},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASArray/init(arrayLiteral:)":{"role":"symbol","title":"init(arrayLiteral:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"arrayLiteral"},{"kind":"text","text":": "},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?...)"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/init(arrayLiteral:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/init(arrayliteral:)"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"}}}
{"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/expressiblebyarrayliteral-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/ExpressibleByArrayLiteral-Implementations","interfaceLanguage":"swift"},"topicSections":[{"title":"Initializers","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/init(arrayLiteral:)"],"generated":true}],"kind":"article","metadata":{"modules":[{"name":"HaishinKit"}],"role":"collectionGroup","title":"ExpressibleByArrayLiteral Implementations"},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASArray/init(arrayLiteral:)":{"role":"symbol","title":"init(arrayLiteral:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"arrayLiteral"},{"kind":"text","text":": "},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?...)"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/init(arrayLiteral:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/init(arrayliteral:)"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"arrayLiteral"},{"kind":"text","text":" "},{"kind":"internalParam","text":"elements"},{"kind":"text","text":": "},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?...)"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/init(arrayliteral:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/init(arrayLiteral:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"ExpressibleByArrayLiteral.init(arrayLiteral:)"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"role":"symbol","title":"init(arrayLiteral:)","roleHeading":"Initializer","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"arrayLiteral"},{"kind":"text","text":": "},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?...)"}],"symbolKind":"init","externalID":"s:10HaishinKit7ASArrayV12arrayLiteralACypSgd_tcfc","extendedModule":"HaishinKit","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/ExpressibleByArrayLiteral-Implementations"]]},"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASArray/init(arrayLiteral:)":{"role":"symbol","title":"init(arrayLiteral:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"arrayLiteral"},{"kind":"text","text":": "},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?...)"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/init(arrayLiteral:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/init(arrayliteral:)"},"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"},"doc://HaishinKit/documentation/HaishinKit/ASArray/ExpressibleByArrayLiteral-Implementations":{"role":"collectionGroup","title":"ExpressibleByArrayLiteral Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/ExpressibleByArrayLiteral-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asarray\/expressiblebyarrayliteral-implementations"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"arrayLiteral"},{"kind":"text","text":" "},{"kind":"internalParam","text":"elements"},{"kind":"text","text":": "},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?...)"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/init(arrayliteral:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/init(arrayLiteral:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"ExpressibleByArrayLiteral.init(arrayLiteral:)"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"role":"symbol","title":"init(arrayLiteral:)","roleHeading":"Initializer","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"arrayLiteral"},{"kind":"text","text":": "},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?...)"}],"symbolKind":"init","externalID":"s:10HaishinKit7ASArrayV12arrayLiteralACypSgd_tcfc","extendedModule":"HaishinKit","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/ExpressibleByArrayLiteral-Implementations"]]},"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"},"doc://HaishinKit/documentation/HaishinKit/ASArray/init(arrayLiteral:)":{"role":"symbol","title":"init(arrayLiteral:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"arrayLiteral"},{"kind":"text","text":": "},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?...)"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/init(arrayLiteral:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/init(arrayliteral:)"},"doc://HaishinKit/documentation/HaishinKit/ASArray/ExpressibleByArrayLiteral-Implementations":{"role":"collectionGroup","title":"ExpressibleByArrayLiteral Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/ExpressibleByArrayLiteral-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asarray\/expressiblebyarrayliteral-implementations"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"count"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/init(count:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/init(count:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Creates a new instance containing the specified number of a single."}],"kind":"symbol","metadata":{"fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"count"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":")"}],"title":"init(count:)","roleHeading":"Initializer","role":"symbol","symbolKind":"init","externalID":"s:10HaishinKit7ASArrayV5countACSi_tcfc","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASArray/init(count:)":{"role":"symbol","title":"init(count:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"count"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Creates a new instance containing the specified number of a single."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/init(count:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/init(count:)"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"count"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/init(count:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/init(count:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Creates a new instance containing the specified number of a single."}],"kind":"symbol","metadata":{"fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"count"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":")"}],"title":"init(count:)","roleHeading":"Initializer","role":"symbol","symbolKind":"init","externalID":"s:10HaishinKit7ASArrayV5countACSi_tcfc","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"},"doc://HaishinKit/documentation/HaishinKit/ASArray/init(count:)":{"role":"symbol","title":"init(count:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"count"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Creates a new instance containing the specified number of a single."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/init(count:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/init(count:)"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": ["},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?])"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/init(data:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/init(data:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Creates a new instance of data."}],"kind":"symbol","metadata":{"fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": ["},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?])"}],"title":"init(data:)","roleHeading":"Initializer","role":"symbol","symbolKind":"init","externalID":"s:10HaishinKit7ASArrayV4dataACSayypSgG_tcfc","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASArray/init(data:)":{"role":"symbol","title":"init(data:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": ["},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?])"}],"abstract":[{"type":"text","text":"Creates a new instance of data."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/init(data:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/init(data:)"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": ["},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?])"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/init(data:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/init(data:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Creates a new instance of data."}],"kind":"symbol","metadata":{"fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": ["},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?])"}],"title":"init(data:)","roleHeading":"Initializer","role":"symbol","symbolKind":"init","externalID":"s:10HaishinKit7ASArrayV4dataACSayypSgG_tcfc","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"},"doc://HaishinKit/documentation/HaishinKit/ASArray/init(data:)":{"role":"symbol","title":"init(data:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": ["},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?])"}],"abstract":[{"type":"text","text":"Creates a new instance of data."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/init(data:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/init(data:)"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"length"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/length"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/length","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The length of an array."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"length"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"}],"title":"length","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:10HaishinKit7ASArrayV6lengthSivp","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"},"doc://HaishinKit/documentation/HaishinKit/ASArray/length":{"role":"symbol","title":"length","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"length"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"}],"abstract":[{"type":"text","text":"The length of an array."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/length","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/length"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"length"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/length"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/length","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The length of an array."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"length"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"}],"title":"length","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:10HaishinKit7ASArrayV6lengthSivp","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASArray/length":{"role":"symbol","title":"length","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"length"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"}],"abstract":[{"type":"text","text":"The length of an array."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/length","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/length"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"subscript"},{"kind":"text","text":"("},{"kind":"internalParam","text":"i"},{"kind":"text","text":": "},{"kind":"keyword","text":"Any"},{"kind":"text","text":") -> "},{"kind":"keyword","text":"Any"},{"kind":"text","text":"? { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" "},{"kind":"keyword","text":"set"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/subscript(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/subscript(_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Accesses the element at the specified position."}],"kind":"symbol","metadata":{"role":"symbol","title":"subscript(_:)","roleHeading":"Instance Subscript","fragments":[{"kind":"keyword","text":"subscript"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"kind":"text","text":") -> "},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?"}],"symbolKind":"subscript","externalID":"s:10HaishinKit7ASArrayVyypSgypcip","extendedModule":"HaishinKit","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASArray/subscript(_:)":{"role":"symbol","title":"subscript(_:)","fragments":[{"kind":"keyword","text":"subscript"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"kind":"text","text":") -> "},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?"}],"abstract":[{"type":"text","text":"Accesses the element at the specified position."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/subscript(_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/subscript(_:)"},"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"subscript"},{"kind":"text","text":"("},{"kind":"internalParam","text":"i"},{"kind":"text","text":": "},{"kind":"keyword","text":"Any"},{"kind":"text","text":") -> "},{"kind":"keyword","text":"Any"},{"kind":"text","text":"? { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" "},{"kind":"keyword","text":"set"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asarray\/subscript(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/subscript(_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Accesses the element at the specified position."}],"kind":"symbol","metadata":{"role":"symbol","title":"subscript(_:)","roleHeading":"Instance Subscript","fragments":[{"kind":"keyword","text":"subscript"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"kind":"text","text":") -> "},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?"}],"symbolKind":"subscript","externalID":"s:10HaishinKit7ASArrayVyypSgypcip","extendedModule":"HaishinKit","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray"]]},"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASArray":{"role":"symbol","title":"ASArray","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASArray"}],"abstract":[{"type":"text","text":"The ASArray class represents an array value for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASArray"}],"url":"\/documentation\/haishinkit\/asarray"},"doc://HaishinKit/documentation/HaishinKit/ASArray/subscript(_:)":{"role":"symbol","title":"subscript(_:)","fragments":[{"kind":"keyword","text":"subscript"},{"kind":"text","text":"("},{"kind":"keyword","text":"Any"},{"kind":"text","text":") -> "},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?"}],"abstract":[{"type":"text","text":"Accesses the element at the specified position."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASArray\/subscript(_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asarray\/subscript(_:)"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"typealias"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASObject"},{"kind":"text","text":" = ["},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":" : "},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?]"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asobject"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASObject","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The ASObject class represents an object for AcrionScript."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"typealias"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASObject"}],"title":"ASObject","roleHeading":"Type Alias","role":"symbol","symbolKind":"typealias","externalID":"s:10HaishinKit8ASObjecta","modules":[{"name":"HaishinKit"}],"navigatorTitle":[{"kind":"identifier","text":"ASObject"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit"]]},"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASObject":{"role":"symbol","title":"ASObject","fragments":[{"kind":"keyword","text":"typealias"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASObject"}],"abstract":[{"type":"text","text":"The ASObject class represents an object for AcrionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASObject","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASObject"}],"url":"\/documentation\/haishinkit\/asobject"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"typealias"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASObject"},{"kind":"text","text":" = ["},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":" : "},{"kind":"keyword","text":"Any"},{"kind":"text","text":"?]"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asobject"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASObject","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The ASObject class represents an object for AcrionScript."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"typealias"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASObject"}],"title":"ASObject","roleHeading":"Type Alias","role":"symbol","symbolKind":"typealias","externalID":"s:10HaishinKit8ASObjecta","modules":[{"name":"HaishinKit"}],"navigatorTitle":[{"kind":"identifier","text":"ASObject"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASObject":{"role":"symbol","title":"ASObject","fragments":[{"kind":"keyword","text":"typealias"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASObject"}],"abstract":[{"type":"text","text":"The ASObject class represents an object for AcrionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASObject","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASObject"}],"url":"\/documentation\/haishinkit\/asobject"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"register"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"T"},{"kind":"text","text":">("},{"kind":"externalParam","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type, "},{"kind":"externalParam","text":"named"},{"kind":"text","text":" "},{"kind":"internalParam","text":"name"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":") "},{"kind":"keyword","text":"where"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":" : "},{"kind":"typeIdentifier","text":"Decodable","preciseIdentifier":"s:Se"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/astypedobject\/register(type:named:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject\/register(type:named:)","interfaceLanguage":"swift"},"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"register"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"T"},{"kind":"text","text":">("},{"kind":"externalParam","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type, "},{"kind":"externalParam","text":"named"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"title":"register(type:named:)","roleHeading":"Type Method","role":"symbol","symbolKind":"method","externalID":"s:10HaishinKit13ASTypedObjectV8register4type5namedyxm_SStSeRzlFZ","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASTypedObject":{"role":"symbol","title":"ASTypedObject","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASTypedObject"}],"abstract":[{"type":"text","text":"The ASTypedObject class represents a typed object for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASTypedObject"}],"url":"\/documentation\/haishinkit\/astypedobject"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASTypedObject/register(type:named:)":{"role":"symbol","title":"register(type:named:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"register"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"T"},{"kind":"text","text":">("},{"kind":"externalParam","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type, "},{"kind":"externalParam","text":"named"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject\/register(type:named:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/astypedobject\/register(type:named:)"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"register"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"T"},{"kind":"text","text":">("},{"kind":"externalParam","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type, "},{"kind":"externalParam","text":"named"},{"kind":"text","text":" "},{"kind":"internalParam","text":"name"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":") "},{"kind":"keyword","text":"where"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":" : "},{"kind":"typeIdentifier","text":"Decodable","preciseIdentifier":"s:Se"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/astypedobject\/register(type:named:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject\/register(type:named:)","interfaceLanguage":"swift"},"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"register"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"T"},{"kind":"text","text":">("},{"kind":"externalParam","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type, "},{"kind":"externalParam","text":"named"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"title":"register(type:named:)","roleHeading":"Type Method","role":"symbol","symbolKind":"method","externalID":"s:10HaishinKit13ASTypedObjectV8register4type5namedyxm_SStSeRzlFZ","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASTypedObject/register(type:named:)":{"role":"symbol","title":"register(type:named:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"register"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"T"},{"kind":"text","text":">("},{"kind":"externalParam","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type, "},{"kind":"externalParam","text":"named"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject\/register(type:named:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/astypedobject\/register(type:named:)"},"doc://HaishinKit/documentation/HaishinKit/ASTypedObject":{"role":"symbol","title":"ASTypedObject","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASTypedObject"}],"abstract":[{"type":"text","text":"The ASTypedObject class represents a typed object for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASTypedObject"}],"url":"\/documentation\/haishinkit\/astypedobject"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"typealias"},{"kind":"text","text":" "},{"kind":"identifier","text":"TypedObjectDecoder"},{"kind":"text","text":" = ("},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":", "},{"kind":"typeIdentifier","identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASObject","preciseIdentifier":"s:10HaishinKit8ASObjecta","text":"ASObject"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"keyword","text":"Any"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/astypedobject\/typedobjectdecoder"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject\/TypedObjectDecoder","interfaceLanguage":"swift"},"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"typealias"},{"kind":"text","text":" "},{"kind":"identifier","text":"TypedObjectDecoder"}],"title":"ASTypedObject.TypedObjectDecoder","roleHeading":"Type Alias","role":"symbol","symbolKind":"typealias","externalID":"s:10HaishinKit13ASTypedObjectV05TypedD7Decodera","modules":[{"name":"HaishinKit"}],"navigatorTitle":[{"kind":"identifier","text":"TypedObjectDecoder"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASObject":{"role":"symbol","title":"ASObject","fragments":[{"kind":"keyword","text":"typealias"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASObject"}],"abstract":[{"type":"text","text":"The ASObject class represents an object for AcrionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASObject","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASObject"}],"url":"\/documentation\/haishinkit\/asobject"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASTypedObject":{"role":"symbol","title":"ASTypedObject","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASTypedObject"}],"abstract":[{"type":"text","text":"The ASTypedObject class represents a typed object for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASTypedObject"}],"url":"\/documentation\/haishinkit\/astypedobject"},"doc://HaishinKit/documentation/HaishinKit/ASTypedObject/TypedObjectDecoder":{"role":"symbol","title":"ASTypedObject.TypedObjectDecoder","fragments":[{"kind":"keyword","text":"typealias"},{"kind":"text","text":" "},{"kind":"identifier","text":"TypedObjectDecoder"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject\/TypedObjectDecoder","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"TypedObjectDecoder"}],"url":"\/documentation\/haishinkit\/astypedobject\/typedobjectdecoder"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"typealias"},{"kind":"text","text":" "},{"kind":"identifier","text":"TypedObjectDecoder"},{"kind":"text","text":" = ("},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":", "},{"kind":"typeIdentifier","identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASObject","preciseIdentifier":"s:10HaishinKit8ASObjecta","text":"ASObject"},{"kind":"text","text":") "},{"kind":"keyword","text":"throws"},{"kind":"text","text":" -> "},{"kind":"keyword","text":"Any"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/astypedobject\/typedobjectdecoder"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject\/TypedObjectDecoder","interfaceLanguage":"swift"},"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"typealias"},{"kind":"text","text":" "},{"kind":"identifier","text":"TypedObjectDecoder"}],"title":"ASTypedObject.TypedObjectDecoder","roleHeading":"Type Alias","role":"symbol","symbolKind":"typealias","externalID":"s:10HaishinKit13ASTypedObjectV05TypedD7Decodera","modules":[{"name":"HaishinKit"}],"navigatorTitle":[{"kind":"identifier","text":"TypedObjectDecoder"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject"]]},"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASTypedObject":{"role":"symbol","title":"ASTypedObject","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASTypedObject"}],"abstract":[{"type":"text","text":"The ASTypedObject class represents a typed object for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASTypedObject"}],"url":"\/documentation\/haishinkit\/astypedobject"},"doc://HaishinKit/documentation/HaishinKit/ASObject":{"role":"symbol","title":"ASObject","fragments":[{"kind":"keyword","text":"typealias"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASObject"}],"abstract":[{"type":"text","text":"The ASObject class represents an object for AcrionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASObject","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASObject"}],"url":"\/documentation\/haishinkit\/asobject"},"doc://HaishinKit/documentation/HaishinKit/ASTypedObject/TypedObjectDecoder":{"role":"symbol","title":"ASTypedObject.TypedObjectDecoder","fragments":[{"kind":"keyword","text":"typealias"},{"kind":"text","text":" "},{"kind":"identifier","text":"TypedObjectDecoder"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject\/TypedObjectDecoder","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"TypedObjectDecoder"}],"url":"\/documentation\/haishinkit\/astypedobject\/typedobjectdecoder"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"unregister"},{"kind":"text","text":"("},{"kind":"externalParam","text":"typeNamed"},{"kind":"text","text":" "},{"kind":"internalParam","text":"name"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/astypedobject\/unregister(typenamed:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject\/unregister(typeNamed:)","interfaceLanguage":"swift"},"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"unregister"},{"kind":"text","text":"("},{"kind":"externalParam","text":"typeNamed"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"title":"unregister(typeNamed:)","roleHeading":"Type Method","role":"symbol","symbolKind":"method","externalID":"s:10HaishinKit13ASTypedObjectV10unregister9typeNamedySS_tFZ","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject"]]},"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASTypedObject/unregister(typeNamed:)":{"role":"symbol","title":"unregister(typeNamed:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"unregister"},{"kind":"text","text":"("},{"kind":"externalParam","text":"typeNamed"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject\/unregister(typeNamed:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/astypedobject\/unregister(typenamed:)"},"doc://HaishinKit/documentation/HaishinKit/ASTypedObject":{"role":"symbol","title":"ASTypedObject","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASTypedObject"}],"abstract":[{"type":"text","text":"The ASTypedObject class represents a typed object for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASTypedObject"}],"url":"\/documentation\/haishinkit\/astypedobject"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"unregister"},{"kind":"text","text":"("},{"kind":"externalParam","text":"typeNamed"},{"kind":"text","text":" "},{"kind":"internalParam","text":"name"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/astypedobject\/unregister(typenamed:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject\/unregister(typeNamed:)","interfaceLanguage":"swift"},"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"unregister"},{"kind":"text","text":"("},{"kind":"externalParam","text":"typeNamed"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"title":"unregister(typeNamed:)","roleHeading":"Type Method","role":"symbol","symbolKind":"method","externalID":"s:10HaishinKit13ASTypedObjectV10unregister9typeNamedySS_tFZ","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASTypedObject":{"role":"symbol","title":"ASTypedObject","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASTypedObject"}],"abstract":[{"type":"text","text":"The ASTypedObject class represents a typed object for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASTypedObject"}],"url":"\/documentation\/haishinkit\/astypedobject"},"doc://HaishinKit/documentation/HaishinKit/ASTypedObject/unregister(typeNamed:)":{"role":"symbol","title":"unregister(typeNamed:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"unregister"},{"kind":"text","text":"("},{"kind":"externalParam","text":"typeNamed"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASTypedObject\/unregister(typeNamed:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/astypedobject\/unregister(typenamed:)"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASUndefined"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asundefined"],"traits":[{"interfaceLanguage":"swift"}]}],"relationshipsSections":[{"identifiers":["doc:\/\/HaishinKit\/s23CustomStringConvertibleP"],"kind":"relationships","title":"Conforms To","type":"conformsTo"}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASUndefined","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The ASUndefined class represents an undefined for ActionScript."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASUndefined"}],"title":"ASUndefined","roleHeading":"Structure","role":"symbol","symbolKind":"struct","externalID":"s:10HaishinKit11ASUndefinedV","modules":[{"name":"HaishinKit"}],"navigatorTitle":[{"kind":"identifier","text":"ASUndefined"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit"]]},"topicSections":[{"title":"Instance Properties","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASUndefined\/description"]}],"references":{"doc://HaishinKit/documentation/HaishinKit/ASUndefined/description":{"role":"symbol","title":"description","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASUndefined\/description","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asundefined\/description"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASUndefined":{"role":"symbol","title":"ASUndefined","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASUndefined"}],"abstract":[{"type":"text","text":"The ASUndefined class represents an undefined for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASUndefined","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASUndefined"}],"url":"\/documentation\/haishinkit\/asundefined"},"doc://HaishinKit/s23CustomStringConvertibleP":{"type":"unresolvable","title":"Swift.CustomStringConvertible","identifier":"doc:\/\/HaishinKit\/s23CustomStringConvertibleP"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASUndefined"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asundefined"],"traits":[{"interfaceLanguage":"swift"}]}],"relationshipsSections":[{"identifiers":["doc:\/\/HaishinKit\/s23CustomStringConvertibleP"],"kind":"relationships","title":"Conforms To","type":"conformsTo"}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASUndefined","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The ASUndefined class represents an undefined for ActionScript."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASUndefined"}],"title":"ASUndefined","roleHeading":"Structure","role":"symbol","symbolKind":"struct","externalID":"s:10HaishinKit11ASUndefinedV","modules":[{"name":"HaishinKit"}],"navigatorTitle":[{"kind":"identifier","text":"ASUndefined"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit"]]},"topicSections":[{"title":"Instance Properties","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASUndefined\/description"]}],"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/s23CustomStringConvertibleP":{"type":"unresolvable","title":"Swift.CustomStringConvertible","identifier":"doc:\/\/HaishinKit\/s23CustomStringConvertibleP"},"doc://HaishinKit/documentation/HaishinKit/ASUndefined":{"role":"symbol","title":"ASUndefined","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASUndefined"}],"abstract":[{"type":"text","text":"The ASUndefined class represents an undefined for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASUndefined","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASUndefined"}],"url":"\/documentation\/haishinkit\/asundefined"},"doc://HaishinKit/documentation/HaishinKit/ASUndefined/description":{"role":"symbol","title":"description","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASUndefined\/description","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asundefined\/description"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asundefined\/description"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASUndefined\/description","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"CustomStringConvertible.description"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"title":"description","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:10HaishinKit11ASUndefinedV11descriptionSSvp","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASUndefined"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASUndefined":{"role":"symbol","title":"ASUndefined","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASUndefined"}],"abstract":[{"type":"text","text":"The ASUndefined class represents an undefined for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASUndefined","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASUndefined"}],"url":"\/documentation\/haishinkit\/asundefined"},"doc://HaishinKit/documentation/HaishinKit/ASUndefined/description":{"role":"symbol","title":"description","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASUndefined\/description","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asundefined\/description"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asundefined\/description"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASUndefined\/description","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"CustomStringConvertible.description"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"title":"description","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:10HaishinKit11ASUndefinedV11descriptionSSvp","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASUndefined"]]},"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASUndefined/description":{"role":"symbol","title":"description","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASUndefined\/description","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asundefined\/description"},"doc://HaishinKit/documentation/HaishinKit/ASUndefined":{"role":"symbol","title":"ASUndefined","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASUndefined"}],"abstract":[{"type":"text","text":"The ASUndefined class represents an undefined for ActionScript."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASUndefined","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASUndefined"}],"url":"\/documentation\/haishinkit\/asundefined"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXML"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxml"],"traits":[{"interfaceLanguage":"swift"}]}],"relationshipsSections":[{"identifiers":["doc:\/\/HaishinKit\/s23CustomStringConvertibleP","doc:\/\/HaishinKit\/SQ"],"kind":"relationships","title":"Conforms To","type":"conformsTo"}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"ActionScript 3.0 introduces a new XML type."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXML"}],"title":"ASXML","roleHeading":"Structure","role":"symbol","symbolKind":"struct","externalID":"s:10HaishinKit5ASXMLV","modules":[{"name":"HaishinKit"}],"navigatorTitle":[{"kind":"identifier","text":"ASXML"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit"]]},"topicSections":[{"title":"Initializers","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/init(data:)"]},{"title":"Instance Properties","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/description"]},{"title":"Default Implementations","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/Equatable-Implementations"],"generated":true}],"references":{"doc://HaishinKit/SQ":{"type":"unresolvable","title":"Swift.Equatable","identifier":"doc:\/\/HaishinKit\/SQ"},"doc://HaishinKit/documentation/HaishinKit/ASXML/Equatable-Implementations":{"role":"collectionGroup","title":"Equatable Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/Equatable-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asxml\/equatable-implementations"},"doc://HaishinKit/s23CustomStringConvertibleP":{"type":"unresolvable","title":"Swift.CustomStringConvertible","identifier":"doc:\/\/HaishinKit\/s23CustomStringConvertibleP"},"doc://HaishinKit/documentation/HaishinKit/ASXML/init(data:)":{"role":"symbol","title":"init(data:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Creates a new instance of string."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/init(data:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxml\/init(data:)"},"doc://HaishinKit/documentation/HaishinKit/ASXML":{"role":"symbol","title":"ASXML","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXML"}],"abstract":[{"type":"text","text":"ActionScript 3.0 introduces a new XML type."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXML"}],"url":"\/documentation\/haishinkit\/asxml"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASXML/description":{"role":"symbol","title":"description","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/description","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxml\/description"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXML"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxml"],"traits":[{"interfaceLanguage":"swift"}]}],"relationshipsSections":[{"identifiers":["doc:\/\/HaishinKit\/s23CustomStringConvertibleP","doc:\/\/HaishinKit\/SQ"],"kind":"relationships","title":"Conforms To","type":"conformsTo"}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"ActionScript 3.0 introduces a new XML type."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXML"}],"title":"ASXML","roleHeading":"Structure","role":"symbol","symbolKind":"struct","externalID":"s:10HaishinKit5ASXMLV","modules":[{"name":"HaishinKit"}],"navigatorTitle":[{"kind":"identifier","text":"ASXML"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit"]]},"topicSections":[{"title":"Initializers","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/init(data:)"]},{"title":"Instance Properties","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/description"]},{"title":"Default Implementations","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/Equatable-Implementations"],"generated":true}],"references":{"doc://HaishinKit/documentation/HaishinKit/ASXML":{"role":"symbol","title":"ASXML","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXML"}],"abstract":[{"type":"text","text":"ActionScript 3.0 introduces a new XML type."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXML"}],"url":"\/documentation\/haishinkit\/asxml"},"doc://HaishinKit/s23CustomStringConvertibleP":{"type":"unresolvable","title":"Swift.CustomStringConvertible","identifier":"doc:\/\/HaishinKit\/s23CustomStringConvertibleP"},"doc://HaishinKit/SQ":{"type":"unresolvable","title":"Swift.Equatable","identifier":"doc:\/\/HaishinKit\/SQ"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASXML/Equatable-Implementations":{"role":"collectionGroup","title":"Equatable Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/Equatable-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asxml\/equatable-implementations"},"doc://HaishinKit/documentation/HaishinKit/ASXML/init(data:)":{"role":"symbol","title":"init(data:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Creates a new instance of string."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/init(data:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxml\/init(data:)"},"doc://HaishinKit/documentation/HaishinKit/ASXML/description":{"role":"symbol","title":"description","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/description","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxml\/description"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"internalParam","text":"lhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxml\/!=(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/!=(_:_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Equatable.!=(_:_:)"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"role":"symbol","title":"!=(_:_:)","roleHeading":"Operator","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"symbolKind":"op","externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:10HaishinKit5ASXMLV","extendedModule":"Swift","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/Equatable-Implementations"]]},"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASXML/Equatable-Implementations":{"role":"collectionGroup","title":"Equatable Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/Equatable-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asxml\/equatable-implementations"},"doc://HaishinKit/documentation/HaishinKit/ASXML/!=(_:_:)":{"role":"symbol","title":"!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/!=(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxml\/!=(_:_:)"},"doc://HaishinKit/documentation/HaishinKit/ASXML":{"role":"symbol","title":"ASXML","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXML"}],"abstract":[{"type":"text","text":"ActionScript 3.0 introduces a new XML type."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXML"}],"url":"\/documentation\/haishinkit\/asxml"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"internalParam","text":"lhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxml\/!=(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/!=(_:_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Equatable.!=(_:_:)"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"role":"symbol","title":"!=(_:_:)","roleHeading":"Operator","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"symbolKind":"op","externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:10HaishinKit5ASXMLV","extendedModule":"Swift","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/Equatable-Implementations"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASXML":{"role":"symbol","title":"ASXML","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXML"}],"abstract":[{"type":"text","text":"ActionScript 3.0 introduces a new XML type."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXML"}],"url":"\/documentation\/haishinkit\/asxml"},"doc://HaishinKit/documentation/HaishinKit/ASXML/!=(_:_:)":{"role":"symbol","title":"!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/!=(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxml\/!=(_:_:)"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASXML/Equatable-Implementations":{"role":"collectionGroup","title":"Equatable Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/Equatable-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asxml\/equatable-implementations"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"internalParam","text":"lhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","preciseIdentifier":"s:10HaishinKit5ASXMLV","text":"ASXML"},{"kind":"text","text":", "},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","preciseIdentifier":"s:10HaishinKit5ASXMLV","text":"ASXML"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxml\/==(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/==(_:_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Equatable.==(_:_:)"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"role":"symbol","title":"==(_:_:)","roleHeading":"Operator","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"ASXML","preciseIdentifier":"s:10HaishinKit5ASXMLV"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ASXML","preciseIdentifier":"s:10HaishinKit5ASXMLV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"symbolKind":"op","externalID":"s:10HaishinKit5ASXMLV2eeoiySbAC_ACtFZ","extendedModule":"HaishinKit","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/Equatable-Implementations"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASXML/Equatable-Implementations":{"role":"collectionGroup","title":"Equatable Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/Equatable-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asxml\/equatable-implementations"},"doc://HaishinKit/documentation/HaishinKit/ASXML/==(_:_:)":{"role":"symbol","title":"==(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"ASXML","preciseIdentifier":"s:10HaishinKit5ASXMLV"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ASXML","preciseIdentifier":"s:10HaishinKit5ASXMLV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/==(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxml\/==(_:_:)"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASXML":{"role":"symbol","title":"ASXML","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXML"}],"abstract":[{"type":"text","text":"ActionScript 3.0 introduces a new XML type."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXML"}],"url":"\/documentation\/haishinkit\/asxml"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"internalParam","text":"lhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","preciseIdentifier":"s:10HaishinKit5ASXMLV","text":"ASXML"},{"kind":"text","text":", "},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","preciseIdentifier":"s:10HaishinKit5ASXMLV","text":"ASXML"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxml\/==(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/==(_:_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Equatable.==(_:_:)"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"role":"symbol","title":"==(_:_:)","roleHeading":"Operator","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"ASXML","preciseIdentifier":"s:10HaishinKit5ASXMLV"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ASXML","preciseIdentifier":"s:10HaishinKit5ASXMLV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"symbolKind":"op","externalID":"s:10HaishinKit5ASXMLV2eeoiySbAC_ACtFZ","extendedModule":"HaishinKit","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/Equatable-Implementations"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASXML/Equatable-Implementations":{"role":"collectionGroup","title":"Equatable Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/Equatable-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asxml\/equatable-implementations"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASXML/==(_:_:)":{"role":"symbol","title":"==(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"ASXML","preciseIdentifier":"s:10HaishinKit5ASXMLV"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ASXML","preciseIdentifier":"s:10HaishinKit5ASXMLV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/==(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxml\/==(_:_:)"},"doc://HaishinKit/documentation/HaishinKit/ASXML":{"role":"symbol","title":"ASXML","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXML"}],"abstract":[{"type":"text","text":"ActionScript 3.0 introduces a new XML type."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXML"}],"url":"\/documentation\/haishinkit\/asxml"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxml\/description"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/description","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"CustomStringConvertible.description"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"title":"description","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:10HaishinKit5ASXMLV11descriptionSSvp","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASXML":{"role":"symbol","title":"ASXML","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXML"}],"abstract":[{"type":"text","text":"ActionScript 3.0 introduces a new XML type."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXML"}],"url":"\/documentation\/haishinkit\/asxml"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASXML/description":{"role":"symbol","title":"description","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/description","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxml\/description"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxml\/description"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/description","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"CustomStringConvertible.description"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"title":"description","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:10HaishinKit5ASXMLV11descriptionSSvp","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML"]]},"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASXML":{"role":"symbol","title":"ASXML","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXML"}],"abstract":[{"type":"text","text":"ActionScript 3.0 introduces a new XML type."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXML"}],"url":"\/documentation\/haishinkit\/asxml"},"doc://HaishinKit/documentation/HaishinKit/ASXML/description":{"role":"symbol","title":"description","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/description","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxml\/description"}}}

View File

@ -1 +1 @@
{"variants":[{"paths":["\/documentation\/haishinkit\/asxml\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/Equatable-Implementations","interfaceLanguage":"swift"},"topicSections":[{"title":"Operators","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/!=(_:_:)","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/==(_:_:)"],"generated":true}],"kind":"article","metadata":{"modules":[{"name":"HaishinKit"}],"role":"collectionGroup","title":"Equatable Implementations"},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASXML":{"role":"symbol","title":"ASXML","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXML"}],"abstract":[{"type":"text","text":"ActionScript 3.0 introduces a new XML type."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXML"}],"url":"\/documentation\/haishinkit\/asxml"},"doc://HaishinKit/documentation/HaishinKit/ASXML/==(_:_:)":{"role":"symbol","title":"==(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"ASXML","preciseIdentifier":"s:10HaishinKit5ASXMLV"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ASXML","preciseIdentifier":"s:10HaishinKit5ASXMLV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/==(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxml\/==(_:_:)"},"doc://HaishinKit/documentation/HaishinKit/ASXML/!=(_:_:)":{"role":"symbol","title":"!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/!=(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxml\/!=(_:_:)"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}
{"variants":[{"paths":["\/documentation\/haishinkit\/asxml\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/Equatable-Implementations","interfaceLanguage":"swift"},"topicSections":[{"title":"Operators","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/!=(_:_:)","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/==(_:_:)"],"generated":true}],"kind":"article","metadata":{"modules":[{"name":"HaishinKit"}],"role":"collectionGroup","title":"Equatable Implementations"},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML"]]},"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASXML":{"role":"symbol","title":"ASXML","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXML"}],"abstract":[{"type":"text","text":"ActionScript 3.0 introduces a new XML type."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXML"}],"url":"\/documentation\/haishinkit\/asxml"},"doc://HaishinKit/documentation/HaishinKit/ASXML/==(_:_:)":{"role":"symbol","title":"==(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"ASXML","preciseIdentifier":"s:10HaishinKit5ASXMLV"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ASXML","preciseIdentifier":"s:10HaishinKit5ASXMLV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/==(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxml\/==(_:_:)"},"doc://HaishinKit/documentation/HaishinKit/ASXML/!=(_:_:)":{"role":"symbol","title":"!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/!=(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxml\/!=(_:_:)"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxml\/init(data:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/init(data:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Creates a new instance of string."}],"kind":"symbol","metadata":{"fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"title":"init(data:)","roleHeading":"Initializer","role":"symbol","symbolKind":"init","externalID":"s:10HaishinKit5ASXMLV4dataACSS_tcfc","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML"]]},"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASXML/init(data:)":{"role":"symbol","title":"init(data:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Creates a new instance of string."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/init(data:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxml\/init(data:)"},"doc://HaishinKit/documentation/HaishinKit/ASXML":{"role":"symbol","title":"ASXML","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXML"}],"abstract":[{"type":"text","text":"ActionScript 3.0 introduces a new XML type."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXML"}],"url":"\/documentation\/haishinkit\/asxml"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxml\/init(data:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/init(data:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Creates a new instance of string."}],"kind":"symbol","metadata":{"fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"title":"init(data:)","roleHeading":"Initializer","role":"symbol","symbolKind":"init","externalID":"s:10HaishinKit5ASXMLV4dataACSS_tcfc","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASXML":{"role":"symbol","title":"ASXML","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXML"}],"abstract":[{"type":"text","text":"ActionScript 3.0 introduces a new XML type."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXML"}],"url":"\/documentation\/haishinkit\/asxml"},"doc://HaishinKit/documentation/HaishinKit/ASXML/init(data:)":{"role":"symbol","title":"init(data:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Creates a new instance of string."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXML\/init(data:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxml\/init(data:)"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXMLDocument"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxmldocument"],"traits":[{"interfaceLanguage":"swift"}]}],"relationshipsSections":[{"identifiers":["doc:\/\/HaishinKit\/s23CustomStringConvertibleP","doc:\/\/HaishinKit\/SQ"],"kind":"relationships","title":"Conforms To","type":"conformsTo"}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","interfaceLanguage":"swift"},"topicSections":[{"title":"Initializers","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/init(data:)"]},{"title":"Instance Properties","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/description"]},{"title":"Default Implementations","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/Equatable-Implementations"],"generated":true}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXMLDocument"}],"title":"ASXMLDocument","roleHeading":"Structure","role":"symbol","symbolKind":"struct","externalID":"s:10HaishinKit13ASXMLDocumentV","modules":[{"name":"HaishinKit"}],"navigatorTitle":[{"kind":"identifier","text":"ASXMLDocument"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit"]]},"references":{"doc://HaishinKit/SQ":{"type":"unresolvable","title":"Swift.Equatable","identifier":"doc:\/\/HaishinKit\/SQ"},"doc://HaishinKit/s23CustomStringConvertibleP":{"type":"unresolvable","title":"Swift.CustomStringConvertible","identifier":"doc:\/\/HaishinKit\/s23CustomStringConvertibleP"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument":{"role":"symbol","title":"ASXMLDocument","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXMLDocument"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXMLDocument"}],"url":"\/documentation\/haishinkit\/asxmldocument"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/description":{"role":"symbol","title":"description","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/description","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/description"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/Equatable-Implementations":{"role":"collectionGroup","title":"Equatable Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/Equatable-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/equatable-implementations"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/init(data:)":{"role":"symbol","title":"init(data:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Creates a new instance of string."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/init(data:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/init(data:)"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXMLDocument"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxmldocument"],"traits":[{"interfaceLanguage":"swift"}]}],"relationshipsSections":[{"identifiers":["doc:\/\/HaishinKit\/s23CustomStringConvertibleP","doc:\/\/HaishinKit\/SQ"],"kind":"relationships","title":"Conforms To","type":"conformsTo"}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","interfaceLanguage":"swift"},"topicSections":[{"title":"Initializers","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/init(data:)"]},{"title":"Instance Properties","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/description"]},{"title":"Default Implementations","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/Equatable-Implementations"],"generated":true}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXMLDocument"}],"title":"ASXMLDocument","roleHeading":"Structure","role":"symbol","symbolKind":"struct","externalID":"s:10HaishinKit13ASXMLDocumentV","modules":[{"name":"HaishinKit"}],"navigatorTitle":[{"kind":"identifier","text":"ASXMLDocument"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit"]]},"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/s23CustomStringConvertibleP":{"type":"unresolvable","title":"Swift.CustomStringConvertible","identifier":"doc:\/\/HaishinKit\/s23CustomStringConvertibleP"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument":{"role":"symbol","title":"ASXMLDocument","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXMLDocument"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXMLDocument"}],"url":"\/documentation\/haishinkit\/asxmldocument"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/init(data:)":{"role":"symbol","title":"init(data:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Creates a new instance of string."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/init(data:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/init(data:)"},"doc://HaishinKit/SQ":{"type":"unresolvable","title":"Swift.Equatable","identifier":"doc:\/\/HaishinKit\/SQ"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/Equatable-Implementations":{"role":"collectionGroup","title":"Equatable Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/Equatable-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/equatable-implementations"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/description":{"role":"symbol","title":"description","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/description","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/description"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"internalParam","text":"lhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxmldocument\/!=(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/!=(_:_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Equatable.!=(_:_:)"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"role":"symbol","title":"!=(_:_:)","roleHeading":"Operator","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"symbolKind":"op","externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:10HaishinKit13ASXMLDocumentV","extendedModule":"Swift","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/Equatable-Implementations"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument":{"role":"symbol","title":"ASXMLDocument","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXMLDocument"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXMLDocument"}],"url":"\/documentation\/haishinkit\/asxmldocument"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/Equatable-Implementations":{"role":"collectionGroup","title":"Equatable Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/Equatable-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/equatable-implementations"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/!=(_:_:)":{"role":"symbol","title":"!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/!=(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/!=(_:_:)"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"internalParam","text":"lhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxmldocument\/!=(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/!=(_:_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Equatable.!=(_:_:)"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"role":"symbol","title":"!=(_:_:)","roleHeading":"Operator","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"symbolKind":"op","externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:10HaishinKit13ASXMLDocumentV","extendedModule":"Swift","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/Equatable-Implementations"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument":{"role":"symbol","title":"ASXMLDocument","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXMLDocument"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXMLDocument"}],"url":"\/documentation\/haishinkit\/asxmldocument"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/!=(_:_:)":{"role":"symbol","title":"!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/!=(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/!=(_:_:)"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/Equatable-Implementations":{"role":"collectionGroup","title":"Equatable Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/Equatable-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/equatable-implementations"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"internalParam","text":"lhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","preciseIdentifier":"s:10HaishinKit13ASXMLDocumentV","text":"ASXMLDocument"},{"kind":"text","text":", "},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","preciseIdentifier":"s:10HaishinKit13ASXMLDocumentV","text":"ASXMLDocument"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxmldocument\/==(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/==(_:_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Equatable.==(_:_:)"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"role":"symbol","title":"==(_:_:)","roleHeading":"Operator","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"ASXMLDocument","preciseIdentifier":"s:10HaishinKit13ASXMLDocumentV"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ASXMLDocument","preciseIdentifier":"s:10HaishinKit13ASXMLDocumentV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"symbolKind":"op","externalID":"s:10HaishinKit13ASXMLDocumentV2eeoiySbAC_ACtFZ","extendedModule":"HaishinKit","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/Equatable-Implementations"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/==(_:_:)":{"role":"symbol","title":"==(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"ASXMLDocument","preciseIdentifier":"s:10HaishinKit13ASXMLDocumentV"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ASXMLDocument","preciseIdentifier":"s:10HaishinKit13ASXMLDocumentV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/==(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/==(_:_:)"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument":{"role":"symbol","title":"ASXMLDocument","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXMLDocument"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXMLDocument"}],"url":"\/documentation\/haishinkit\/asxmldocument"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/Equatable-Implementations":{"role":"collectionGroup","title":"Equatable Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/Equatable-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/equatable-implementations"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"internalParam","text":"lhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","preciseIdentifier":"s:10HaishinKit13ASXMLDocumentV","text":"ASXMLDocument"},{"kind":"text","text":", "},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","preciseIdentifier":"s:10HaishinKit13ASXMLDocumentV","text":"ASXMLDocument"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxmldocument\/==(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/==(_:_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"Equatable.==(_:_:)"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"role":"symbol","title":"==(_:_:)","roleHeading":"Operator","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"ASXMLDocument","preciseIdentifier":"s:10HaishinKit13ASXMLDocumentV"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ASXMLDocument","preciseIdentifier":"s:10HaishinKit13ASXMLDocumentV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"symbolKind":"op","externalID":"s:10HaishinKit13ASXMLDocumentV2eeoiySbAC_ACtFZ","extendedModule":"HaishinKit","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/Equatable-Implementations"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/==(_:_:)":{"role":"symbol","title":"==(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"ASXMLDocument","preciseIdentifier":"s:10HaishinKit13ASXMLDocumentV"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ASXMLDocument","preciseIdentifier":"s:10HaishinKit13ASXMLDocumentV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/==(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/==(_:_:)"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument":{"role":"symbol","title":"ASXMLDocument","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXMLDocument"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXMLDocument"}],"url":"\/documentation\/haishinkit\/asxmldocument"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/Equatable-Implementations":{"role":"collectionGroup","title":"Equatable Implementations","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/Equatable-Implementations","kind":"article","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/equatable-implementations"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxmldocument\/description"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/description","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"CustomStringConvertible.description"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"title":"description","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:10HaishinKit13ASXMLDocumentV11descriptionSSvp","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/description":{"role":"symbol","title":"description","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/description","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/description"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument":{"role":"symbol","title":"ASXMLDocument","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXMLDocument"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXMLDocument"}],"url":"\/documentation\/haishinkit\/asxmldocument"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxmldocument\/description"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/description","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Inherited from "},{"type":"codeVoice","code":"CustomStringConvertible.description"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"title":"description","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:10HaishinKit13ASXMLDocumentV11descriptionSSvp","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument"]]},"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/description":{"role":"symbol","title":"description","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"description"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/description","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/description"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument":{"role":"symbol","title":"ASXMLDocument","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXMLDocument"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXMLDocument"}],"url":"\/documentation\/haishinkit\/asxmldocument"}}}

View File

@ -1 +1 @@
{"variants":[{"paths":["\/documentation\/haishinkit\/asxmldocument\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/Equatable-Implementations","interfaceLanguage":"swift"},"topicSections":[{"title":"Operators","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/!=(_:_:)","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/==(_:_:)"],"generated":true}],"kind":"article","metadata":{"modules":[{"name":"HaishinKit"}],"role":"collectionGroup","title":"Equatable Implementations"},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/==(_:_:)":{"role":"symbol","title":"==(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"ASXMLDocument","preciseIdentifier":"s:10HaishinKit13ASXMLDocumentV"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ASXMLDocument","preciseIdentifier":"s:10HaishinKit13ASXMLDocumentV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/==(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/==(_:_:)"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument":{"role":"symbol","title":"ASXMLDocument","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXMLDocument"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXMLDocument"}],"url":"\/documentation\/haishinkit\/asxmldocument"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/!=(_:_:)":{"role":"symbol","title":"!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/!=(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/!=(_:_:)"}}}
{"variants":[{"paths":["\/documentation\/haishinkit\/asxmldocument\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/Equatable-Implementations","interfaceLanguage":"swift"},"topicSections":[{"title":"Operators","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/!=(_:_:)","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/==(_:_:)"],"generated":true}],"kind":"article","metadata":{"modules":[{"name":"HaishinKit"}],"role":"collectionGroup","title":"Equatable Implementations"},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument":{"role":"symbol","title":"ASXMLDocument","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXMLDocument"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXMLDocument"}],"url":"\/documentation\/haishinkit\/asxmldocument"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/!=(_:_:)":{"role":"symbol","title":"!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/!=(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/!=(_:_:)"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/==(_:_:)":{"role":"symbol","title":"==(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"=="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"ASXMLDocument","preciseIdentifier":"s:10HaishinKit13ASXMLDocumentV"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"ASXMLDocument","preciseIdentifier":"s:10HaishinKit13ASXMLDocumentV"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/==(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/==(_:_:)"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxmldocument\/init(data:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/init(data:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Creates a new instance of string."}],"kind":"symbol","metadata":{"fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"title":"init(data:)","roleHeading":"Initializer","role":"symbol","symbolKind":"init","externalID":"s:10HaishinKit13ASXMLDocumentV4dataACSS_tcfc","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument":{"role":"symbol","title":"ASXMLDocument","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXMLDocument"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXMLDocument"}],"url":"\/documentation\/haishinkit\/asxmldocument"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/init(data:)":{"role":"symbol","title":"init(data:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Creates a new instance of string."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/init(data:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/init(data:)"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/asxmldocument\/init(data:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/init(data:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Creates a new instance of string."}],"kind":"symbol","metadata":{"fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"title":"init(data:)","roleHeading":"Initializer","role":"symbol","symbolKind":"init","externalID":"s:10HaishinKit13ASXMLDocumentV4dataACSS_tcfc","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument/init(data:)":{"role":"symbol","title":"init(data:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"data"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Creates a new instance of string."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument\/init(data:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/asxmldocument\/init(data:)"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/ASXMLDocument":{"role":"symbol","title":"ASXMLDocument","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ASXMLDocument"}],"abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/ASXMLDocument","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ASXMLDocument"}],"url":"\/documentation\/haishinkit\/asxmldocument"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atomic"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"A"},{"kind":"text","text":">"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/atomic"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Atomic"},{"type":"text","text":" class"}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atomic"}],"title":"Atomic","roleHeading":"Structure","role":"symbol","symbolKind":"struct","externalID":"s:10HaishinKit6AtomicV","modules":[{"name":"HaishinKit"}],"navigatorTitle":[{"kind":"identifier","text":"Atomic"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit"]]},"topicSections":[{"title":"Initializers","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/init(_:)"]},{"title":"Instance Properties","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/value"]},{"title":"Instance Methods","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/mutate(_:)"]}],"references":{"doc://HaishinKit/documentation/HaishinKit/Atomic":{"role":"symbol","title":"Atomic","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atomic"}],"abstract":[{"type":"text","text":"Atomic"},{"type":"text","text":" class"}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Atomic"}],"url":"\/documentation\/haishinkit\/atomic"},"doc://HaishinKit/documentation/HaishinKit/Atomic/init(_:)":{"role":"symbol","title":"init(_:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"A"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Creates an instance of value."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/init(_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/atomic\/init(_:)"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/Atomic/value":{"role":"symbol","title":"value","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"value"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"A"}],"abstract":[{"type":"text","text":"Getter for the value."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/value","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/atomic\/value"},"doc://HaishinKit/documentation/HaishinKit/Atomic/mutate(_:)":{"role":"symbol","title":"mutate(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"mutate"},{"kind":"text","text":"(("},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"A"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Void","preciseIdentifier":"s:s4Voida"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Setter for the value."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/mutate(_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/atomic\/mutate(_:)"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atomic"},{"kind":"text","text":"<"},{"kind":"genericParameter","text":"A"},{"kind":"text","text":">"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/atomic"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Atomic"},{"type":"text","text":" class"}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atomic"}],"title":"Atomic","roleHeading":"Structure","role":"symbol","symbolKind":"struct","externalID":"s:10HaishinKit6AtomicV","modules":[{"name":"HaishinKit"}],"navigatorTitle":[{"kind":"identifier","text":"Atomic"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit"]]},"topicSections":[{"title":"Initializers","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/init(_:)"]},{"title":"Instance Properties","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/value"]},{"title":"Instance Methods","identifiers":["doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/mutate(_:)"]}],"references":{"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/Atomic/mutate(_:)":{"role":"symbol","title":"mutate(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"mutate"},{"kind":"text","text":"(("},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"A"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Void","preciseIdentifier":"s:s4Voida"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Setter for the value."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/mutate(_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/atomic\/mutate(_:)"},"doc://HaishinKit/documentation/HaishinKit/Atomic/value":{"role":"symbol","title":"value","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"value"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"A"}],"abstract":[{"type":"text","text":"Getter for the value."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/value","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/atomic\/value"},"doc://HaishinKit/documentation/HaishinKit/Atomic/init(_:)":{"role":"symbol","title":"init(_:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"A"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Creates an instance of value."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/init(_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/atomic\/init(_:)"},"doc://HaishinKit/documentation/HaishinKit/Atomic":{"role":"symbol","title":"Atomic","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atomic"}],"abstract":[{"type":"text","text":"Atomic"},{"type":"text","text":" class"}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Atomic"}],"url":"\/documentation\/haishinkit\/atomic"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"value"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"A"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/atomic\/init(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/init(_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Creates an instance of value."}],"kind":"symbol","metadata":{"fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"A"},{"kind":"text","text":")"}],"title":"init(_:)","roleHeading":"Initializer","role":"symbol","symbolKind":"init","externalID":"s:10HaishinKit6AtomicVyACyxGxcfc","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/Atomic/init(_:)":{"role":"symbol","title":"init(_:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"A"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Creates an instance of value."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/init(_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/atomic\/init(_:)"},"doc://HaishinKit/documentation/HaishinKit/Atomic":{"role":"symbol","title":"Atomic","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atomic"}],"abstract":[{"type":"text","text":"Atomic"},{"type":"text","text":" class"}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Atomic"}],"url":"\/documentation\/haishinkit\/atomic"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"value"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"A"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/atomic\/init(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/init(_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Creates an instance of value."}],"kind":"symbol","metadata":{"fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"A"},{"kind":"text","text":")"}],"title":"init(_:)","roleHeading":"Initializer","role":"symbol","symbolKind":"init","externalID":"s:10HaishinKit6AtomicVyACyxGxcfc","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/Atomic/init(_:)":{"role":"symbol","title":"init(_:)","fragments":[{"kind":"identifier","text":"init"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"A"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Creates an instance of value."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/init(_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/atomic\/init(_:)"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/Atomic":{"role":"symbol","title":"Atomic","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atomic"}],"abstract":[{"type":"text","text":"Atomic"},{"type":"text","text":" class"}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Atomic"}],"url":"\/documentation\/haishinkit\/atomic"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"mutating"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"mutate"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"transform"},{"kind":"text","text":": ("},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"A"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Void","preciseIdentifier":"s:s4Voida"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/atomic\/mutate(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/mutate(_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Setter for the value."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"mutate"},{"kind":"text","text":"(("},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"A"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Void","preciseIdentifier":"s:s4Voida"},{"kind":"text","text":")"}],"title":"mutate(_:)","roleHeading":"Instance Method","role":"symbol","symbolKind":"method","externalID":"s:10HaishinKit6AtomicV6mutateyyyxzXEF","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/Atomic/mutate(_:)":{"role":"symbol","title":"mutate(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"mutate"},{"kind":"text","text":"(("},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"A"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Void","preciseIdentifier":"s:s4Voida"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Setter for the value."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/mutate(_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/atomic\/mutate(_:)"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/Atomic":{"role":"symbol","title":"Atomic","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atomic"}],"abstract":[{"type":"text","text":"Atomic"},{"type":"text","text":" class"}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Atomic"}],"url":"\/documentation\/haishinkit\/atomic"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"mutating"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"mutate"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"transform"},{"kind":"text","text":": ("},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"A"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Void","preciseIdentifier":"s:s4Voida"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/atomic\/mutate(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/mutate(_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Setter for the value."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"mutate"},{"kind":"text","text":"(("},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"A"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Void","preciseIdentifier":"s:s4Voida"},{"kind":"text","text":")"}],"title":"mutate(_:)","roleHeading":"Instance Method","role":"symbol","symbolKind":"method","externalID":"s:10HaishinKit6AtomicV6mutateyyyxzXEF","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/Atomic/mutate(_:)":{"role":"symbol","title":"mutate(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"mutate"},{"kind":"text","text":"(("},{"kind":"keyword","text":"inout"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"A"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Void","preciseIdentifier":"s:s4Voida"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Setter for the value."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/mutate(_:)","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/atomic\/mutate(_:)"},"doc://HaishinKit/documentation/HaishinKit/Atomic":{"role":"symbol","title":"Atomic","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atomic"}],"abstract":[{"type":"text","text":"Atomic"},{"type":"text","text":" class"}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Atomic"}],"url":"\/documentation\/haishinkit\/atomic"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}

View File

@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"value"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"A"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/atomic\/value"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/value","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Getter for the value."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"value"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"A"}],"title":"value","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:10HaishinKit6AtomicV5valuexvp","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/Atomic/value":{"role":"symbol","title":"value","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"value"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"A"}],"abstract":[{"type":"text","text":"Getter for the value."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/value","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/atomic\/value"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"},"doc://HaishinKit/documentation/HaishinKit/Atomic":{"role":"symbol","title":"Atomic","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atomic"}],"abstract":[{"type":"text","text":"Atomic"},{"type":"text","text":" class"}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Atomic"}],"url":"\/documentation\/haishinkit\/atomic"}}}
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"value"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"A"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/haishinkit\/atomic\/value"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/value","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Getter for the value."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"value"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"A"}],"title":"value","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:10HaishinKit6AtomicV5valuexvp","modules":[{"name":"HaishinKit"}]},"hierarchy":{"paths":[["doc:\/\/HaishinKit\/documentation\/HaishinKit","doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic"]]},"references":{"doc://HaishinKit/documentation/HaishinKit/Atomic":{"role":"symbol","title":"Atomic","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atomic"}],"abstract":[{"type":"text","text":"Atomic"},{"type":"text","text":" class"}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Atomic"}],"url":"\/documentation\/haishinkit\/atomic"},"doc://HaishinKit/documentation/HaishinKit/Atomic/value":{"role":"symbol","title":"value","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"value"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"A"}],"abstract":[{"type":"text","text":"Getter for the value."}],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit\/Atomic\/value","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit\/atomic\/value"},"doc://HaishinKit/documentation/HaishinKit":{"role":"collection","title":"HaishinKit","abstract":[],"identifier":"doc:\/\/HaishinKit\/documentation\/HaishinKit","kind":"symbol","type":"topic","url":"\/documentation\/haishinkit"}}}

Some files were not shown because too many files have changed in this diff Show More