Skip to content

Add webgl2 IDL spec and generated code #18

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 22 commits into from
May 3, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add webcodecs IDL spec and generated code
  • Loading branch information
MaxDesiatov committed May 3, 2022
commit 49fa44502902abbe1998742817ec6f73b4f120e1
22 changes: 22 additions & 0 deletions Sources/DOMKit/WebIDL/AlphaOption.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// This file was auto-generated by WebIDLToSwift. DO NOT EDIT!

import JavaScriptEventLoop
import JavaScriptKit

public enum AlphaOption: JSString, JSValueCompatible {
case keep = "keep"
case discard = "discard"

@inlinable public static func construct(from jsValue: JSValue) -> Self? {
if let string = jsValue.jsString {
return Self(rawValue: string)
}
return nil
}

@inlinable public init?(string: String) {
self.init(rawValue: JSString(string))
}

@inlinable public var jsValue: JSValue { rawValue.jsValue }
}
62 changes: 62 additions & 0 deletions Sources/DOMKit/WebIDL/AudioData.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
// This file was auto-generated by WebIDLToSwift. DO NOT EDIT!

import JavaScriptEventLoop
import JavaScriptKit

public class AudioData: JSBridgedClass {
@inlinable public class var constructor: JSFunction { JSObject.global[Strings.AudioData].function! }

public let jsObject: JSObject

public required init(unsafelyWrapping jsObject: JSObject) {
_format = ReadonlyAttribute(jsObject: jsObject, name: Strings.format)
_sampleRate = ReadonlyAttribute(jsObject: jsObject, name: Strings.sampleRate)
_numberOfFrames = ReadonlyAttribute(jsObject: jsObject, name: Strings.numberOfFrames)
_numberOfChannels = ReadonlyAttribute(jsObject: jsObject, name: Strings.numberOfChannels)
_duration = ReadonlyAttribute(jsObject: jsObject, name: Strings.duration)
_timestamp = ReadonlyAttribute(jsObject: jsObject, name: Strings.timestamp)
self.jsObject = jsObject
}

@inlinable public convenience init(init: AudioDataInit) {
self.init(unsafelyWrapping: Self.constructor.new(arguments: [`init`.jsValue]))
}

@ReadonlyAttribute
public var format: AudioSampleFormat?

@ReadonlyAttribute
public var sampleRate: Float

@ReadonlyAttribute
public var numberOfFrames: UInt32

@ReadonlyAttribute
public var numberOfChannels: UInt32

@ReadonlyAttribute
public var duration: UInt64

@ReadonlyAttribute
public var timestamp: Int64

@inlinable public func allocationSize(options: AudioDataCopyToOptions) -> UInt32 {
let this = jsObject
return this[Strings.allocationSize].function!(this: this, arguments: [options.jsValue]).fromJSValue()!
}

@inlinable public func copyTo(destination: BufferSource, options: AudioDataCopyToOptions) {
let this = jsObject
_ = this[Strings.copyTo].function!(this: this, arguments: [destination.jsValue, options.jsValue])
}

@inlinable public func clone() -> Self {
let this = jsObject
return this[Strings.clone].function!(this: this, arguments: []).fromJSValue()!
}

@inlinable public func close() {
let this = jsObject
_ = this[Strings.close].function!(this: this, arguments: [])
}
}
35 changes: 35 additions & 0 deletions Sources/DOMKit/WebIDL/AudioDataCopyToOptions.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// This file was auto-generated by WebIDLToSwift. DO NOT EDIT!

import JavaScriptEventLoop
import JavaScriptKit

public class AudioDataCopyToOptions: BridgedDictionary {
public convenience init(planeIndex: UInt32, frameOffset: UInt32, frameCount: UInt32, format: AudioSampleFormat) {
let object = JSObject.global[Strings.Object].function!.new()
object[Strings.planeIndex] = planeIndex.jsValue
object[Strings.frameOffset] = frameOffset.jsValue
object[Strings.frameCount] = frameCount.jsValue
object[Strings.format] = format.jsValue
self.init(unsafelyWrapping: object)
}

public required init(unsafelyWrapping object: JSObject) {
_planeIndex = ReadWriteAttribute(jsObject: object, name: Strings.planeIndex)
_frameOffset = ReadWriteAttribute(jsObject: object, name: Strings.frameOffset)
_frameCount = ReadWriteAttribute(jsObject: object, name: Strings.frameCount)
_format = ReadWriteAttribute(jsObject: object, name: Strings.format)
super.init(unsafelyWrapping: object)
}

@ReadWriteAttribute
public var planeIndex: UInt32

@ReadWriteAttribute
public var frameOffset: UInt32

@ReadWriteAttribute
public var frameCount: UInt32

@ReadWriteAttribute
public var format: AudioSampleFormat
}
45 changes: 45 additions & 0 deletions Sources/DOMKit/WebIDL/AudioDataInit.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
// This file was auto-generated by WebIDLToSwift. DO NOT EDIT!

import JavaScriptEventLoop
import JavaScriptKit

public class AudioDataInit: BridgedDictionary {
public convenience init(format: AudioSampleFormat, sampleRate: Float, numberOfFrames: UInt32, numberOfChannels: UInt32, timestamp: Int64, data: BufferSource) {
let object = JSObject.global[Strings.Object].function!.new()
object[Strings.format] = format.jsValue
object[Strings.sampleRate] = sampleRate.jsValue
object[Strings.numberOfFrames] = numberOfFrames.jsValue
object[Strings.numberOfChannels] = numberOfChannels.jsValue
object[Strings.timestamp] = timestamp.jsValue
object[Strings.data] = data.jsValue
self.init(unsafelyWrapping: object)
}

public required init(unsafelyWrapping object: JSObject) {
_format = ReadWriteAttribute(jsObject: object, name: Strings.format)
_sampleRate = ReadWriteAttribute(jsObject: object, name: Strings.sampleRate)
_numberOfFrames = ReadWriteAttribute(jsObject: object, name: Strings.numberOfFrames)
_numberOfChannels = ReadWriteAttribute(jsObject: object, name: Strings.numberOfChannels)
_timestamp = ReadWriteAttribute(jsObject: object, name: Strings.timestamp)
_data = ReadWriteAttribute(jsObject: object, name: Strings.data)
super.init(unsafelyWrapping: object)
}

@ReadWriteAttribute
public var format: AudioSampleFormat

@ReadWriteAttribute
public var sampleRate: Float

@ReadWriteAttribute
public var numberOfFrames: UInt32

@ReadWriteAttribute
public var numberOfChannels: UInt32

@ReadWriteAttribute
public var timestamp: Int64

@ReadWriteAttribute
public var data: BufferSource
}
70 changes: 70 additions & 0 deletions Sources/DOMKit/WebIDL/AudioDecoder.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
// This file was auto-generated by WebIDLToSwift. DO NOT EDIT!

import JavaScriptEventLoop
import JavaScriptKit

public class AudioDecoder: JSBridgedClass {
@inlinable public class var constructor: JSFunction { JSObject.global[Strings.AudioDecoder].function! }

public let jsObject: JSObject

public required init(unsafelyWrapping jsObject: JSObject) {
_state = ReadonlyAttribute(jsObject: jsObject, name: Strings.state)
_decodeQueueSize = ReadonlyAttribute(jsObject: jsObject, name: Strings.decodeQueueSize)
self.jsObject = jsObject
}

@inlinable public convenience init(init: AudioDecoderInit) {
self.init(unsafelyWrapping: Self.constructor.new(arguments: [`init`.jsValue]))
}

@ReadonlyAttribute
public var state: CodecState

@ReadonlyAttribute
public var decodeQueueSize: UInt32

@inlinable public func configure(config: AudioDecoderConfig) {
let this = jsObject
_ = this[Strings.configure].function!(this: this, arguments: [config.jsValue])
}

@inlinable public func decode(chunk: EncodedAudioChunk) {
let this = jsObject
_ = this[Strings.decode].function!(this: this, arguments: [chunk.jsValue])
}

@inlinable public func flush() -> JSPromise {
let this = jsObject
return this[Strings.flush].function!(this: this, arguments: []).fromJSValue()!
}

@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
@inlinable public func flush() async throws {
let this = jsObject
let _promise: JSPromise = this[Strings.flush].function!(this: this, arguments: []).fromJSValue()!
_ = try await _promise.value
}

@inlinable public func reset() {
let this = jsObject
_ = this[Strings.reset].function!(this: this, arguments: [])
}

@inlinable public func close() {
let this = jsObject
_ = this[Strings.close].function!(this: this, arguments: [])
}

@inlinable public static func isConfigSupported(config: AudioDecoderConfig) -> JSPromise {
let this = constructor
return this[Strings.isConfigSupported].function!(this: this, arguments: [config.jsValue]).fromJSValue()!
}

@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
@inlinable public static func isConfigSupported(config: AudioDecoderConfig) async throws -> AudioDecoderSupport {
let this = constructor
let _promise: JSPromise = this[Strings.isConfigSupported].function!(this: this, arguments: [config.jsValue]).fromJSValue()!
return try await _promise.value.fromJSValue()!
}
}
35 changes: 35 additions & 0 deletions Sources/DOMKit/WebIDL/AudioDecoderConfig.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// This file was auto-generated by WebIDLToSwift. DO NOT EDIT!

import JavaScriptEventLoop
import JavaScriptKit

public class AudioDecoderConfig: BridgedDictionary {
public convenience init(codec: String, sampleRate: UInt32, numberOfChannels: UInt32, description: BufferSource) {
let object = JSObject.global[Strings.Object].function!.new()
object[Strings.codec] = codec.jsValue
object[Strings.sampleRate] = sampleRate.jsValue
object[Strings.numberOfChannels] = numberOfChannels.jsValue
object[Strings.description] = description.jsValue
self.init(unsafelyWrapping: object)
}

public required init(unsafelyWrapping object: JSObject) {
_codec = ReadWriteAttribute(jsObject: object, name: Strings.codec)
_sampleRate = ReadWriteAttribute(jsObject: object, name: Strings.sampleRate)
_numberOfChannels = ReadWriteAttribute(jsObject: object, name: Strings.numberOfChannels)
_description = ReadWriteAttribute(jsObject: object, name: Strings.description)
super.init(unsafelyWrapping: object)
}

@ReadWriteAttribute
public var codec: String

@ReadWriteAttribute
public var sampleRate: UInt32

@ReadWriteAttribute
public var numberOfChannels: UInt32

@ReadWriteAttribute
public var description: BufferSource
}
25 changes: 25 additions & 0 deletions Sources/DOMKit/WebIDL/AudioDecoderInit.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// This file was auto-generated by WebIDLToSwift. DO NOT EDIT!

import JavaScriptEventLoop
import JavaScriptKit

public class AudioDecoderInit: BridgedDictionary {
public convenience init(output: @escaping AudioDataOutputCallback, error: @escaping WebCodecsErrorCallback) {
let object = JSObject.global[Strings.Object].function!.new()
ClosureAttribute1Void[Strings.output, in: object] = output
ClosureAttribute1Void[Strings.error, in: object] = error
self.init(unsafelyWrapping: object)
}

public required init(unsafelyWrapping object: JSObject) {
_output = ClosureAttribute1Void(jsObject: object, name: Strings.output)
_error = ClosureAttribute1Void(jsObject: object, name: Strings.error)
super.init(unsafelyWrapping: object)
}

@ClosureAttribute1Void
public var output: AudioDataOutputCallback

@ClosureAttribute1Void
public var error: WebCodecsErrorCallback
}
25 changes: 25 additions & 0 deletions Sources/DOMKit/WebIDL/AudioDecoderSupport.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// This file was auto-generated by WebIDLToSwift. DO NOT EDIT!

import JavaScriptEventLoop
import JavaScriptKit

public class AudioDecoderSupport: BridgedDictionary {
public convenience init(supported: Bool, config: AudioDecoderConfig) {
let object = JSObject.global[Strings.Object].function!.new()
object[Strings.supported] = supported.jsValue
object[Strings.config] = config.jsValue
self.init(unsafelyWrapping: object)
}

public required init(unsafelyWrapping object: JSObject) {
_supported = ReadWriteAttribute(jsObject: object, name: Strings.supported)
_config = ReadWriteAttribute(jsObject: object, name: Strings.config)
super.init(unsafelyWrapping: object)
}

@ReadWriteAttribute
public var supported: Bool

@ReadWriteAttribute
public var config: AudioDecoderConfig
}
70 changes: 70 additions & 0 deletions Sources/DOMKit/WebIDL/AudioEncoder.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
// This file was auto-generated by WebIDLToSwift. DO NOT EDIT!

import JavaScriptEventLoop
import JavaScriptKit

public class AudioEncoder: JSBridgedClass {
@inlinable public class var constructor: JSFunction { JSObject.global[Strings.AudioEncoder].function! }

public let jsObject: JSObject

public required init(unsafelyWrapping jsObject: JSObject) {
_state = ReadonlyAttribute(jsObject: jsObject, name: Strings.state)
_encodeQueueSize = ReadonlyAttribute(jsObject: jsObject, name: Strings.encodeQueueSize)
self.jsObject = jsObject
}

@inlinable public convenience init(init: AudioEncoderInit) {
self.init(unsafelyWrapping: Self.constructor.new(arguments: [`init`.jsValue]))
}

@ReadonlyAttribute
public var state: CodecState

@ReadonlyAttribute
public var encodeQueueSize: UInt32

@inlinable public func configure(config: AudioEncoderConfig) {
let this = jsObject
_ = this[Strings.configure].function!(this: this, arguments: [config.jsValue])
}

@inlinable public func encode(data: AudioData) {
let this = jsObject
_ = this[Strings.encode].function!(this: this, arguments: [data.jsValue])
}

@inlinable public func flush() -> JSPromise {
let this = jsObject
return this[Strings.flush].function!(this: this, arguments: []).fromJSValue()!
}

@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
@inlinable public func flush() async throws {
let this = jsObject
let _promise: JSPromise = this[Strings.flush].function!(this: this, arguments: []).fromJSValue()!
_ = try await _promise.value
}

@inlinable public func reset() {
let this = jsObject
_ = this[Strings.reset].function!(this: this, arguments: [])
}

@inlinable public func close() {
let this = jsObject
_ = this[Strings.close].function!(this: this, arguments: [])
}

@inlinable public static func isConfigSupported(config: AudioEncoderConfig) -> JSPromise {
let this = constructor
return this[Strings.isConfigSupported].function!(this: this, arguments: [config.jsValue]).fromJSValue()!
}

@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
@inlinable public static func isConfigSupported(config: AudioEncoderConfig) async throws -> AudioEncoderSupport {
let this = constructor
let _promise: JSPromise = this[Strings.isConfigSupported].function!(this: this, arguments: [config.jsValue]).fromJSValue()!
return try await _promise.value.fromJSValue()!
}
}
Loading