From d6fabd56edbb13ed5874d6efb4c584fc535e9449 Mon Sep 17 00:00:00 2001 From: Brendan Szymanski Date: Tue, 21 Jul 2026 17:49:38 -0400 Subject: [PATCH] Generate typed public constructors for nullable string and borrowing cases --- Sources/SwiftGtkGenCore/BindingPlan.swift | 15 +- Sources/SwiftGtkGenCore/PlanRenderer.swift | 145 +++- Sources/SwiftGtkGenCore/Planner.swift | 59 +- .../InterfaceSignalGenerationTests.swift | 4 +- .../PropertyGenerationTests.swift | 10 +- .../RendererCallableTests.swift | 102 +++ .../SignalGenerationTests.swift | 16 +- docs/skip-baseline/tier1/GLib.json | 206 +----- docs/skip-baseline/tier1/GObject.json | 130 +--- docs/skip-baseline/tier2/GLib.json | 344 +++------ docs/skip-baseline/tier2/GObject.json | 156 +--- docs/skip-baseline/tier2/Gio.json | 694 +++++------------- 12 files changed, 601 insertions(+), 1280 deletions(-) diff --git a/Sources/SwiftGtkGenCore/BindingPlan.swift b/Sources/SwiftGtkGenCore/BindingPlan.swift index 02c9738..2ad0428 100644 --- a/Sources/SwiftGtkGenCore/BindingPlan.swift +++ b/Sources/SwiftGtkGenCore/BindingPlan.swift @@ -40,6 +40,8 @@ public enum MarshalIn: Equatable, Sendable { case boolToGboolean /// Convert `String` to a C string (`withCString` / `utf8` pointer). case stringToC + /// Convert `[String]` to a NULL-terminated C `char **`. + case stringArrayToC /// Access the underlying pointer of an object or interface wrapper. case objectPointer /// Access the underlying pointer of an interface-typed wrapper (a @@ -811,13 +813,24 @@ public struct ParameterPlan: Equatable, Sendable { /// For callback-box params: the C arg index of the separate DestroyNotify /// parameter. `nil` when none. public let destroyIndex: Int? + /// When set, this C param is a synthesized array length (argc); its value is + /// `.count` and it is omitted from the Swift signature. + public let synthesizedLengthOf: String? public init(swiftName: String, cArgIndex: Int, mapping: Mapping, isInstanceParameter: Bool = false, isOutParameter: Bool = false, - closureIndex: Int? = nil, destroyIndex: Int? = nil) { + closureIndex: Int? = nil, destroyIndex: Int? = nil, + synthesizedLengthOf: String? = nil) { self.swiftName = swiftName; self.cArgIndex = cArgIndex self.mapping = mapping; self.isInstanceParameter = isInstanceParameter self.isOutParameter = isOutParameter self.closureIndex = closureIndex; self.destroyIndex = destroyIndex + self.synthesizedLengthOf = synthesizedLengthOf } } +extension Mapping { + /// Maps a `[String]` parameter to a NULL-terminated C `char **` array. + static let stringArrayMapping = Mapping( + swiftType: "[String]", cSwiftType: "UnsafeMutablePointer?>?", + marshalIn: .stringArrayToC, marshalOut: .unsupported(reason: "C array return not yet bridged")) +} diff --git a/Sources/SwiftGtkGenCore/PlanRenderer.swift b/Sources/SwiftGtkGenCore/PlanRenderer.swift index 542a181..88e232d 100644 --- a/Sources/SwiftGtkGenCore/PlanRenderer.swift +++ b/Sources/SwiftGtkGenCore/PlanRenderer.swift @@ -347,6 +347,37 @@ private func renderSupport(moduleName: String, dependencyModules: [String] = [], func _rawPointer(_ p: OpaquePointer) -> UnsafeMutableRawPointer { UnsafeMutableRawPointer(p) } + /// Copies a transfer-full C string into a Swift `String` and frees the source. + @inline(__always) + func _takeString(_ p: UnsafeMutablePointer!) -> String { + defer { g_free(p) } + return String(cString: p) + } + + /// Copies a nullable transfer-full C string, freeing the source; `nil` in → `nil` out. + @inline(__always) + func _takeStringIfPresent(_ p: UnsafeMutablePointer?) -> String? { + guard let p else { return nil } + defer { g_free(p) } + return String(cString: p) + } + + /// Bridges an optional `String?` to a C `const char *`, passing `nil` when absent. + @inline(__always) + func _withOptionalCString(_ s: String?, _ body: (UnsafePointer?) throws -> R) rethrows -> R { + guard let s else { return try body(nil) } + return try s.withCString(body) + } + + /// Bridges a `[String]` to a NULL-terminated C `char **`, freeing the copies after `body`. + @inline(__always) + func _withStringArray(_ strings: [String], _ body: (UnsafeMutablePointer?>?) throws -> R) rethrows -> R { + var cStrings: [UnsafeMutablePointer?] = strings.map { g_strdup($0) } + cStrings.append(nil) + defer { for p in cStrings { g_free(p) } } + return try cStrings.withUnsafeMutableBufferPointer { try body($0.baseAddress) } + } + \(glibError)\(gtypeConstants)\(closureBoxSupport)\(signalSupport)\(primitiveShims) """ } @@ -523,7 +554,7 @@ private func renderRecord(_ plan: RecordPlan) -> String { if let doc = plan.doc { lines.append(contentsOf: renderDocComment(doc)) } - lines.append("public final class \(plan.name) {") + lines.append("@MainActor public final class \(plan.name) {") lines.append(" @_spi(SGTKInternal) public let pointer: UnsafeMutableRawPointer") lines.append("") if plan.freeFunction != nil { @@ -635,10 +666,10 @@ private func renderInterface(_ plan: InterfacePlan) -> String { // `Self: \(classPrereq)` (a class-typed prerequisite), so the Ref // must literally subclass it — inheriting its pointer storage, // inits, and deinit rather than declaring its own. - lines.append("public final class \(plan.name)Ref: \(classPrereq), @MainActor \(plan.name) {") + lines.append("@MainActor public final class \(plan.name)Ref: \(classPrereq), @MainActor \(plan.name) {") lines.append("}") } else { - lines.append("public final class \(plan.name)Ref: @MainActor \(plan.name) {") + lines.append("@MainActor public final class \(plan.name)Ref: @MainActor \(plan.name) {") lines.append(" @_spi(SGTKInternal) public let pointer: UnsafeMutableRawPointer") lines.append("") lines.append(" @_spi(SGTKInternal) public init(retaining pointer: UnsafeMutableRawPointer) {") @@ -685,7 +716,7 @@ private func renderClass(_ plan: ClassPlan) -> String { } else { parentDecl = "" } - lines.append("\(access) class \(plan.name)\(parentDecl) {") + lines.append("@MainActor \(access) class \(plan.name)\(parentDecl) {") let isRoot = plan.parent == nil @@ -700,7 +731,7 @@ private func renderClass(_ plan: ClassPlan) -> String { let needsInits = isRoot || !plan.isAbstract if needsInits { - let initModifier = isRoot ? "" : "@_spi(SGTKInternal) public override " + let initModifier = isRoot ? "" : "@_spi(SGTKInternal) public " // takingOwnership init if isRoot { @@ -938,7 +969,7 @@ private func renderSignalConnect(_ plan: SignalPlan, className: String) -> [Stri return lines } private func swiftSignature(_ plan: CallablePlan) -> String { - plan.parameters.filter { !$0.isInstanceParameter && !$0.isOutParameter }.map { param in + plan.parameters.filter { !$0.isInstanceParameter && !$0.isOutParameter && $0.synthesizedLengthOf == nil }.map { param in let typeStr: String if param.mapping.category == .callback { typeStr = "@escaping \(param.mapping.swiftType)" @@ -949,6 +980,19 @@ private func swiftSignature(_ plan: CallablePlan) -> String { }.joined(separator: ", ") } + +/// How a string/array parameter is wrapped for the C call. +private enum CWrapKind { case plain, optional, array } + +/// Generates the closure opener for a string/array parameter: `withCString`, +/// `_withOptionalCString`, or `_withStringArray`. +private func cWrapOpener(_ cName: String, _ swiftName: String, _ kind: CWrapKind) -> String { + switch kind { + case .plain: return "\(swiftName).withCString { \(cName) in" + case .optional: return "_withOptionalCString(\(swiftName)) { \(cName) in" + case .array: return "_withStringArray(\(swiftName)) { \(cName) in" + } +} /// Builds the C call: the C-function-call string with each argument marshalled, /// plus the string parameters that must be wrapped in `withCString`. The /// instance parameter — if any — is passed as `self.pointer`. @@ -956,13 +1000,11 @@ private func swiftSignature(_ plan: CallablePlan) -> String { /// Callback-box parameters: the data pointer replaces the closure arg at the /// callback's cArgIndex, and also replaces any separate user-data slot /// identified by `closureIndex`. -private func cArguments(_ plan: CallablePlan, error: Bool = false) -> (cCall: String, stringParams: [(cName: String, swiftName: String)]) { - var stringParams: [(cName: String, swiftName: String)] = [] +private func cArguments(_ plan: CallablePlan, error: Bool = false) -> (cCall: String, stringParams: [(cName: String, swiftName: String, kind: CWrapKind)]) { + var stringParams: [(cName: String, swiftName: String, kind: CWrapKind)] = [] var cArgExprs: [String] = [] var outIndex = 0 - // Build map: closureIndex -> callback data ptr name, so separate user-data - // params get replaced with the box pointer. var closureDataMap: [Int: String] = [:] for p in plan.parameters { if case .callbackBox(_, _) = p.mapping.marshalIn, let ci = p.closureIndex { @@ -977,9 +1019,16 @@ private func cArguments(_ plan: CallablePlan, error: Bool = false) -> (cCall: St outIndex += 1 } else if param.isInstanceParameter { cArgExprs.append("_instancePointer(self.pointer)") + } else if let arrName = param.synthesizedLengthOf { + cArgExprs.append("numericCast(\(arrName).count)") } else if param.mapping.marshalIn == .stringToC { let cName = "cString\(stringParams.count)" - stringParams.append((cName: cName, swiftName: param.swiftName)) + let kind: CWrapKind = param.mapping.swiftType.hasSuffix("?") ? .optional : .plain + stringParams.append((cName: cName, swiftName: param.swiftName, kind: kind)) + cArgExprs.append(cName) + } else if param.mapping.marshalIn == .stringArrayToC { + let cName = "cArray\(stringParams.count)" + stringParams.append((cName: cName, swiftName: param.swiftName, kind: .array)) cArgExprs.append(cName) } else if let dataPtrName = closureDataMap[param.cArgIndex], !isCallbackBox(param) { cArgExprs.append(dataPtrName) @@ -1071,11 +1120,10 @@ private func outParamInitValue(_ param: ParameterPlan) -> String { case .enumRaw, .bitfieldRaw: return ".init(rawValue: 0)" default: - return "nil" + return "UnsafeMutablePointer?" } } -/// Generates the expression that converts an out-param's C value to Swift. /// `varName` is the local variable after the C call filled it in. private func outParamValueExpr(_ param: ParameterPlan, varName: String) -> String { switch param.mapping.marshalOut { @@ -1086,11 +1134,10 @@ private func outParamValueExpr(_ param: ParameterPlan, varName: String) -> Strin case .gbooleanToBool: return "\(varName) != 0" case .stringCopy(let free, _): - let note = "" if param.mapping.swiftType.hasSuffix("?") { - return "\(varName).map { String(cString: $0) }\(note)" + return free ? "_takeStringIfPresent(\(varName))" : "\(varName).map { String(cString: $0) }" } - return "String(cString: \(varName)!)\(note)" + return free ? "_takeString(\(varName))" : "String(cString: \(varName)!)" case .enumFromRaw(let swiftType): return "\(swiftType)(rawValue: numericCast(\(varName).rawValue))!" case .bitfieldFromRaw(let swiftType): @@ -1189,7 +1236,7 @@ private func renderMultiStatementBody(_ plan: CallablePlan, indent: String) -> [ var scope = indent for sp in stringParams { let openerPrefix = plan.throwsError ? "return try " : "return " - lines.append("\(scope)\(openerPrefix)\(sp.swiftName).withCString { \(sp.cName) in") + lines.append("\(scope)\(openerPrefix)\(cWrapOpener(sp.cName, sp.swiftName, sp.kind))") scope += " " } for ld in localDecls { @@ -1219,7 +1266,7 @@ private func renderCallExpression(_ plan: CallablePlan) -> String { let (cCall, stringParams) = cArguments(plan) var expr = cCall for sp in stringParams.reversed() { - expr = "\(sp.swiftName).withCString { \(sp.cName) in \(expr) }" + expr = "\(cWrapOpener(sp.cName, sp.swiftName, sp.kind)) \(expr) }" } return expr } @@ -1269,7 +1316,7 @@ private func renderCallBody(_ plan: CallablePlan, indent: String) -> [String] { var scope = indent let openerPrefix = hasReturn ? "return " : "" for sp in stringParams { - lines.append("\(scope)\(openerPrefix)\(sp.swiftName).withCString { \(sp.cName) in") + lines.append("\(scope)\(openerPrefix)\(cWrapOpener(sp.cName, sp.swiftName, sp.kind))") scope += " " } for stmt in setupStmts { @@ -1331,7 +1378,7 @@ private func renderThrowingBody(_ plan: CallablePlan, indent: String) -> [String var lines: [String] = [] var scope = indent for sp in stringParams { - lines.append("\(scope)return try \(sp.swiftName).withCString { \(sp.cName) in") + lines.append("\(scope)return try \(cWrapOpener(sp.cName, sp.swiftName, sp.kind))") scope += " " } for stmt in setupStmts { @@ -1419,8 +1466,9 @@ private func renderStaticFunction(_ plan: CallablePlan) -> [String] { } /// Renders a constructor as a `convenience init`. The C constructor's returned -/// instance pointer is adopted through the designated `init(takingOwnership:)`, -/// which sinks a floating reference for `InitiallyUnowned` descendants. +/// instance pointer is adopted through the designated `init(takingOwnership:)` +/// or `init(retaining:)`, depending on the GIR `transfer-ownership` annotation +/// on the constructor's return value. private func renderConstructor(_ plan: CallablePlan) -> [String] { var lines: [String] = [] if let doc = plan.doc { lines.append(contentsOf: renderDocComment(doc).map { " \($0)" }) } @@ -1441,14 +1489,14 @@ private func renderConstructor(_ plan: CallablePlan) -> [String] { lines.append("\(indent)var error: UnsafeMutablePointer? = nil") lines.append("\(indent)let _ptr = \(cCall)") lines.append(contentsOf: errorCheck) - lines.append("\(indent)self.init(takingOwnership: _rawPointer(_ptr!))") + lines.append("\(indent)\(ownInitCall(plan, "_rawPointer(_ptr!)"))") } else { lines.append("\(indent)var error: UnsafeMutablePointer? = nil") var scope = indent for i in stringParams.indices { let sp = stringParams[i] let prefix = i == 0 ? "let _result = " : "" - lines.append("\(scope)\(prefix)\(sp.swiftName).withCString { \(sp.cName) in") + lines.append("\(scope)\(prefix)\(cWrapOpener(sp.cName, sp.swiftName, sp.kind))") scope += " " } // `self.init` (a delegating initializer call) cannot be nested @@ -1465,17 +1513,31 @@ private func renderConstructor(_ plan: CallablePlan) -> [String] { lines.append("\(scope)}") } lines += errorCheck - lines.append("\(indent)self.init(takingOwnership: _rawPointer(_result!))") + lines.append("\(indent)\(ownInitCall(plan, "_rawPointer(_result!)"))") } } else { let expr = renderCallExpression(plan) - lines.append(" self.init(takingOwnership: _rawPointer(\(expr)))") + lines.append(" \(ownInitCall(plan, "_rawPointer(\(expr))"))") } lines.append(" }") return lines } +/// Selects `init(takingOwnership:)` or `init(retaining:)` based on the +/// constructor's ownership annotation from GIR. +private func ownInitCall(_ plan: CallablePlan, _ pointerExpr: String) -> String { + // ownershipInit is nil for non-constructor callables; default to takingOwnership. + switch plan.ownershipInit { + case .takingOwnership?, .sinkingRef?: + return "self.init(takingOwnership: \(pointerExpr))" + case .retaining?: + return "self.init(retaining: \(pointerExpr))" + case nil: + return "self.init(takingOwnership: \(pointerExpr))" + } +} + /// Generates the argument expression for a callable parameter. private func marshalCallArg(_ param: ParameterPlan) -> String { switch param.mapping.marshalIn { @@ -1498,6 +1560,8 @@ private func marshalCallArg(_ param: ParameterPlan) -> String { return "\(param.swiftName) ? 1 : 0" case .stringToC: return param.swiftName + case .stringArrayToC: + return param.swiftName case .objectPointer, .interfacePointer: return pointerArg(param) case .boxedPointer: @@ -1533,11 +1597,14 @@ private func marshalReturn(_ cCall: String, mapping: Mapping) -> String { return "numericCast(\(cCall))" case .gbooleanToBool: return "\(cCall) != 0" - case .stringCopy(_, _): - if mapping.swiftType.hasSuffix("?") { - return "\(cCall).map { String(cString: $0) }" + case .stringCopy(let free, _): + let optional = mapping.swiftType.hasSuffix("?") + switch (free, optional) { + case (true, false): return "_takeString(\(cCall))" + case (true, true): return "_takeStringIfPresent(\(cCall))" + case (false, false): return "String(cString: \(cCall))" + case (false, true): return "\(cCall).map { String(cString: $0) }" } - return "String(cString: \(cCall))" case .objectWrap: let isOptional = mapping.swiftType.hasSuffix("?") let baseType = isOptional ? String(mapping.swiftType.dropLast()) : mapping.swiftType @@ -1724,8 +1791,24 @@ private func gvalueSetterBody(swiftType: String, girName: String, "g_value_unset(&gvalue)", ] } + private func renderDocComment(_ text: String) -> [String] { - text.components(separatedBy: "\n").map { "/// \($0)" } + convertGtkDocToDocC(text).components(separatedBy: "\n").map { "/// \($0)" } +} + +/// Converts raw gtk-doc markup to DocC-compatible Markdown: +/// - `|[` fences → code blocks +/// - `#Type`, `%CONST`, `@param` → `` `backtick` `` references +/// - `%TRUE`, `%FALSE`, `%NULL` → `` `true` ``, `` `false` ``, `` `nil` `` +private func convertGtkDocToDocC(_ text: String) -> String { + var s = text + s = s.replacing(/\|\[()?/, with: "```") + s = s.replacing(/\]\|/, with: "```") + s = s.replacingOccurrences(of: "%TRUE", with: "`true`") + s = s.replacingOccurrences(of: "%FALSE", with: "`false`") + s = s.replacingOccurrences(of: "%NULL", with: "`nil`") + s = s.replacing(/[#%@]([A-Za-z_][A-Za-z0-9_]*)/) { "`\($0.1)`" } + return s } /// Converts a raw GIR bitfield value string to a Swift `UInt32` literal. diff --git a/Sources/SwiftGtkGenCore/Planner.swift b/Sources/SwiftGtkGenCore/Planner.swift index afbcfc9..a77121d 100644 --- a/Sources/SwiftGtkGenCore/Planner.swift +++ b/Sources/SwiftGtkGenCore/Planner.swift @@ -77,7 +77,7 @@ public func planModules( // labels AND types, a different selector, no relation to include). func methodSignature(_ m: CallablePlan) -> String { let params = m.parameters - .filter { !$0.isInstanceParameter && !$0.isOutParameter } + .filter { !$0.isInstanceParameter && !$0.isOutParameter && $0.synthesizedLengthOf == nil } .map { "\($0.swiftName):\($0.mapping.swiftType)" } .joined(separator: ",") return "\(m.name)|throws:\(m.throwsError)|(\(params))" @@ -350,7 +350,7 @@ private func planNamespace(_ ns: Namespace, context: MapContext) -> ModulePlan { private func signatureKey(_ plan: CallablePlan) -> String { let retType = plan.returnMapping?.swiftType ?? "Void" let params = plan.parameters - .filter { !$0.isInstanceParameter && !$0.isOutParameter } + .filter { !$0.isInstanceParameter && !$0.isOutParameter && $0.synthesizedLengthOf == nil } .map { "\($0.swiftName):\($0.mapping.swiftType)" } .joined(separator: ",") return "throws:\(plan.throwsError)|ret:\(retType)|(\(params))" @@ -606,7 +606,7 @@ private let knownMissingCFunctions: Set = [ "g_settings_backend_changed", "g_settings_backend_changed_tree", "g_settings_backend_get_default", "g_settings_backend_path_changed", "g_settings_backend_path_writable_changed", "g_settings_backend_writable_changed", - "g_null_settings_backend_new", "g_memory_settings_backend_new", + "g_null_settings_backend_new", "g_memory_settings_backend_new", "g_keyfile_settings_backend_new", // Declared in , likewise excluded from . "g_networking_init", // Declared in the GdkPixbuf GIR but not exported through the public @@ -1438,11 +1438,29 @@ func planConstructor(_ ctor: Constructor, className: String, descendsIU: Bool, c reason: .constructorOutParams, detail: "out-param constructors are not expressible as Swift init")) } + // Derive ownership from the GIR return's transfer-ownership annotation. + // Most GObject _new constructors return transfer-ownership="full" + // (or a floating reference for InitiallyUnowned descendants). A + // transfer-ownership="none" return indicates a borrowed reference, + // which the convenience init must wrap via init(retaining:) instead + // of init(takingOwnership:). + // + // CRITICAL: descendsIU takes precedence over the GIR annotation because + // most widget constructors declare transfer-ownership="none" even though + // they return a *floating* reference that must be sunk, not borrowed. + let ownership: OwnershipInit + if descendsIU { + ownership = .sinkingRef + } else if ctor.returnValue.transferOwnership == .none { + ownership = .retaining + } else { + ownership = .takingOwnership + } return .success(CallablePlan( name: swiftFunctionName(ctor.name), cIdentifier: ctor.cIdentifier, parameters: paramPlans, returnMapping: nil, isStatic: false, isConstructor: true, - ownershipInit: descendsIU ? .sinkingRef : .takingOwnership, + ownershipInit: ownership, throwsError: ctor.throwsGError, doc: ctor.doc)) } @@ -1456,6 +1474,17 @@ func planParameters( // These are plain gpointer params that would otherwise fail the pointer // check — the callback-box mechanism handles them. let closureTargets = Set(parameters.compactMap(\.closureIndex)) + // Pre-scan length parameters for C arrays of strings (e.g. argc for argv). + // Map the length param's position to the array's Swift name. + let hasInstance = parameters.contains(where: \.isInstanceParameter) + var lengthElision: [Int: String] = [:] + for p in parameters { + if case .cArray(let el, let info) = p.type, + el == .string || el == .filename, + let li = info.lengthParameterIndex { + lengthElision[li + (hasInstance ? 1 : 0)] = swiftParameterName(p.name) + } + } for (index, param) in parameters.enumerated() { // The instance parameter is always `self` — passed as `self.pointer`, // never type-checked (its type is the enclosing class, which is a @@ -1532,6 +1561,23 @@ func planParameters( return .skip(SkipEntry(symbol: "", cIdentifier: nil, reason: .inoutParameter, detail: "'\(param.name)' has direction=inout")) } + // Intercept length params (argc) — synthesize from array's count. + if let arrName = lengthElision[index] { + plans.append(ParameterPlan( + swiftName: swiftParameterName(param.name), cArgIndex: index, + mapping: Mapping(swiftType: "Int", cSwiftType: "", marshalIn: .direct, marshalOut: .direct), + synthesizedLengthOf: arrName)) + continue + } + // Intercept C arrays of strings with a known length param → [String]. + if case .cArray(let el, let info) = param.type, + el == .string || el == .filename, info.lengthParameterIndex != nil { + plans.append(ParameterPlan( + swiftName: swiftParameterName(param.name), cArgIndex: index, + mapping: .stringArrayMapping)) + continue + } + // Map the type let mappingResult = Result { try map(param.type, nullable: param.isNullable, @@ -1550,11 +1596,6 @@ func planParameters( } let isString = paramMapping.marshalIn == .stringToC - // A nullable string needs an optional-aware bridge; deferred. - if isString && paramMapping.swiftType.hasSuffix("?") { - return .skip(SkipEntry(symbol: "", cIdentifier: nil, - reason: .unknownType, detail: "parameter '\(param.name)' is a nullable string")) - } // Only a single-level `const gchar*` input string can be bridged // from an immutable Swift `String` via `withCString`. A mutable // `gchar*` is a caller-allocated output buffer, and a `gchar**` diff --git a/Tests/SwiftGtkGenCoreTests/InterfaceSignalGenerationTests.swift b/Tests/SwiftGtkGenCoreTests/InterfaceSignalGenerationTests.swift index 5db518e..4231303 100644 --- a/Tests/SwiftGtkGenCoreTests/InterfaceSignalGenerationTests.swift +++ b/Tests/SwiftGtkGenCoreTests/InterfaceSignalGenerationTests.swift @@ -62,8 +62,8 @@ struct InterfaceSignalGenerationTests { // pattern as class signals) — this is the D4.2 regression check: // the previous implementation planned interface signals but the // renderer silently dropped them. - #expect(source.contains("@_cdecl(\"_trampoline_GObject_Clickable_clicked\")")) - #expect(source.contains("nonisolated func _trampoline_GObject_Clickable_clicked(")) + #expect(source.contains("@_cdecl(\"_trampolineGObjectClickableClicked\")")) + #expect(source.contains("nonisolated func _trampolineGObjectClickableClicked(")) #expect(source.contains("MainActor.assumeIsolated")) } diff --git a/Tests/SwiftGtkGenCoreTests/PropertyGenerationTests.swift b/Tests/SwiftGtkGenCoreTests/PropertyGenerationTests.swift index bd6bd0e..54c84d4 100644 --- a/Tests/SwiftGtkGenCoreTests/PropertyGenerationTests.swift +++ b/Tests/SwiftGtkGenCoreTests/PropertyGenerationTests.swift @@ -107,7 +107,7 @@ struct PropertyGenerationTests { #expect(skips.isEmpty) #expect(plan.properties.count == 1) #expect(source.contains("public var length: Int32")) - #expect(source.contains("g_value_init(&gvalue, G_TYPE_INT)")) + #expect(source.contains("g_value_init(&gvalue, gTypeInt)")) #expect(source.contains("g_value_get_int(&gvalue)")) #expect(source.contains("g_object_get_property(_instancePointer(pointer), \"length\", &gvalue)")) // Read-only: no setter. @@ -186,7 +186,7 @@ struct PropertyGenerationTests { #expect(skips.isEmpty) #expect(plan.properties.count == 1) #expect(source.contains("public var orientation: Orientation")) - #expect(source.contains("g_value_init(&gvalue, G_TYPE_ENUM)")) + #expect(source.contains("g_value_init(&gvalue, gTypeEnum)")) // `g_value_get_enum` returns Int32; the enum's raw value is Int, so the // result MUST be numericCast — a bare cast would not compile. #expect(source.contains("Orientation(rawValue: numericCast(g_value_get_enum(&gvalue)))!")) @@ -201,7 +201,7 @@ struct PropertyGenerationTests { let (source, _, skips) = renderClass(named: "Widget", properties: [prop]) #expect(skips.isEmpty) #expect(source.contains("public var stateFlags: StateFlags")) - #expect(source.contains("g_value_init(&gvalue, G_TYPE_FLAGS)")) + #expect(source.contains("g_value_init(&gvalue, gTypeFlags)")) #expect(source.contains("StateFlags(rawValue: numericCast(g_value_get_flags(&gvalue)))")) } @@ -215,7 +215,7 @@ struct PropertyGenerationTests { let (source, _, skips) = renderClass(named: "Bin", properties: [prop]) #expect(skips.isEmpty) #expect(source.contains("public var child: Object")) - #expect(source.contains("g_value_init(&gvalue, G_TYPE_OBJECT)")) + #expect(source.contains("g_value_init(&gvalue, gTypeObject)")) #expect(source.contains("Object(retaining: g_value_get_object(&gvalue))")) } @@ -379,7 +379,7 @@ struct PropertyGenerationTests { if case .gvalue = plan.properties[0].getter {} else { Issue.record("expected GValue fallback, got \(plan.properties[0].getter)") } - #expect(source.contains("g_value_init(&gvalue, G_TYPE_ENUM)")) + #expect(source.contains("g_value_init(&gvalue, gTypeEnum)")) #expect(source.contains("numericCast(g_value_get_enum(&gvalue))")) } diff --git a/Tests/SwiftGtkGenCoreTests/RendererCallableTests.swift b/Tests/SwiftGtkGenCoreTests/RendererCallableTests.swift index 58fb808..aa710e7 100644 --- a/Tests/SwiftGtkGenCoreTests/RendererCallableTests.swift +++ b/Tests/SwiftGtkGenCoreTests/RendererCallableTests.swift @@ -367,4 +367,106 @@ struct RendererCallableTests { #expect(!content.contains("import Foundation"), "\(name) unexpectedly imports Foundation") } } + + // MARK: - E3: nullable string constructor params + + @Test("Constructor with nullable string parameter generates String? and _withOptionalCString") + func nullableStringConstructorParam() throws { + let klass = Class( + name: "Alert", cType: "GAlert", parent: "Object", + getTypeFunction: "g_alert_get_type", + constructors: [ + Constructor(name: "new", cIdentifier: "g_alert_new", + parameters: [ + Parameter(name: "message", type: .string, + cType: "const char*", isNullable: true), + ], + returnValue: ReturnValue(transferOwnership: .full)), + ] + ) + let (plan, _) = planClass(klass, context: makeContext()) + let module = ModulePlan(module: "GObject", types: [.class(plan)], skips: [], + coverage: CoverageStats()) + let src = renderModule(module)["Alert.swift"] ?? "" + // The signature must show String? for the nullable string parameter. + #expect(src.contains("convenience init(message: String?)")) + // The body wraps the nullable param with _withOptionalCString. + #expect(src.contains("_withOptionalCString(message)")) + // The convenience init must NOT be SPI-gated (check the init line is not preceded by @_spi). + let initLines = src.components(separatedBy: "\n") + let convenienceLines = initLines.filter { $0.contains("convenience init") } + #expect(!convenienceLines.isEmpty, "expected a convenience init line") + for line in convenienceLines { + #expect(!line.contains("@_spi"), "convenience init should not be SPI-gated, got: \(line)") + } + // Uses takingOwnership for transfer-ownership="full". + if !src.contains("self.init(takingOwnership:") { + Issue.record("expected self.init(takingOwnership:) for transfer-ownership=full") + } + } + + @Test("Constructor with mixed nullable and required string params generates correct bridging") + func constructorWithMixedNullableAndRequiredParams() throws { + let klass = Class( + name: "Dialog", cType: "GAlertDialog", parent: "Object", + getTypeFunction: "g_alert_dialog_get_type", + constructors: [ + Constructor(name: "new", cIdentifier: "g_alert_dialog_new", + parameters: [ + Parameter(name: "heading", type: .string, + cType: "const char*", isNullable: true), + Parameter(name: "body", type: .string, + cType: "const char*"), + ], + returnValue: ReturnValue(transferOwnership: .full)), + ] + ) + let (plan, _) = planClass(klass, context: makeContext()) + let module = ModulePlan(module: "GObject", types: [.class(plan)], skips: [], + coverage: CoverageStats()) + let src = renderModule(module)["Dialog.swift"] ?? "" + // The signature must show String? for the nullable param and String for the required param. + #expect(src.contains("convenience init(heading: String?, body: String)")) + // The nullable param gets _withOptionalCString, the required param gets .withCString. + #expect(src.contains("_withOptionalCString(heading)")) + #expect(src.contains("body.withCString")) + // The convenience init line must NOT be SPI-gated (the class file has SPI-gated + // designated inits, but the convenience init itself is public). + let initLines2 = src.components(separatedBy: "\n") + let convenienceLines2 = initLines2.filter { $0.contains("convenience init") } + #expect(!convenienceLines2.isEmpty, "expected a convenience init line") + for line in convenienceLines2 { + #expect(!line.contains("@_spi"), "convenience init should not be SPI-gated, got: \(line)") + } + } + + // MARK: - E3: constructor borrowing ownership + + @Test("Constructor with ownership .none return generates convenience init calling self.init(retaining:)") + func constructorBorrowedReturnUsesRetaining() throws { + let klass = Class( + name: "Borrowed", cType: "GBorrowed", parent: "Object", + getTypeFunction: "g_borrowed_get_type", + constructors: [ + Constructor(name: "new", cIdentifier: "g_borrowed_new", + parameters: [ + Parameter(name: "name", type: .string, + cType: "const char*"), + ], + returnValue: ReturnValue(transferOwnership: .none)), + ] + ) + let (plan, _) = planClass(klass, context: makeContext()) + let module3 = ModulePlan(module: "GObject", types: [.class(plan)], skips: [], + coverage: CoverageStats()) + let src = renderModule(module3)["Borrowed.swift"] ?? "" + #expect(src.contains("self.init(retaining:"), "expected self.init(retaining:) for transfer-ownership=none, got: \(src)") + #expect(!src.contains("self.init(takingOwnership:"), "should NOT use init(takingOwnership:) for transfer-ownership=none") + // The convenience init line must NOT be SPI-gated. + let initLines3 = src.components(separatedBy: "\n") + let convenienceLines3 = initLines3.filter { $0.contains("convenience init") } + for line in convenienceLines3 { + #expect(!line.contains("@_spi"), "convenience init should not be SPI-gated, got: \(line)") + } + } } diff --git a/Tests/SwiftGtkGenCoreTests/SignalGenerationTests.swift b/Tests/SwiftGtkGenCoreTests/SignalGenerationTests.swift index 604af3a..f06b80f 100644 --- a/Tests/SwiftGtkGenCoreTests/SignalGenerationTests.swift +++ b/Tests/SwiftGtkGenCoreTests/SignalGenerationTests.swift @@ -80,8 +80,8 @@ struct SignalGenerationTests { let (source, plan, skips) = renderClass(named: "Object", signals: [notify]) #expect(skips.isEmpty) #expect(plan.signals.count == 1) - #expect(source.contains("@_cdecl(\"_trampoline_GObject_Object_notify\")")) - #expect(source.contains("nonisolated func _trampoline_GObject_Object_notify(")) + #expect(source.contains("@_cdecl(\"_trampolineGObjectObjectNotify\")")) + #expect(source.contains("nonisolated func _trampolineGObjectObjectNotify(")) #expect(source.contains("_ instance: UnsafeMutableRawPointer")) #expect(source.contains("_ data: UnsafeMutableRawPointer?")) // Body re-enters MainActor before touching the raw pointers. @@ -123,12 +123,12 @@ struct SignalGenerationTests { // The destroy closure matches GClosureNotify's 2-arg C signature // (gpointer data, GClosure *closure) — not GDestroyNotify's 1-arg form. #expect(source.contains("@convention(c) (UnsafeMutableRawPointer?, UnsafeMutableRawPointer?) -> Void")) - #expect(source.contains("_sgtk_destroy_notify_impl(data, nil)")) + #expect(source.contains("_sgtkDestroyNotifyImpl(data, nil)")) // The wired destroy arg is passed (non-nil) to the connect call — // the D3 leak regression this test guards against. #expect(source.contains("unsafeBitCast(destroyFn as (@convention(c) (UnsafeMutableRawPointer?, UnsafeMutableRawPointer?) -> Void), to: UnsafeRawPointer.self)")) - #expect(source.contains("_sgtk_signal_connect_data(")) - #expect(!source.contains("_sgtk_signal_connect_data(ptr, cName, unsafeBitCast(\\(plan.trampolineCName)")) + #expect(source.contains("_sgtkSignalConnectData(")) + #expect(!source.contains("_sgtkSignalConnectData(ptr, cName, unsafeBitCast(\\(plan.trampolineCName)")) } @Test("Support.swift hides GLibError.init(consuming:), SignalHandle.instance/init, and _sgtk_* helpers behind @_spi(SGTKInternal)") @@ -143,9 +143,9 @@ struct SignalGenerationTests { let support = renderModule(module)["Support.swift"] ?? "" #expect(support.contains("@_spi(SGTKInternal) public let instance: UnsafeMutableRawPointer")) #expect(support.contains("@_spi(SGTKInternal) public init(id: UInt, instance: UnsafeMutableRawPointer)")) - #expect(support.contains("@_spi(SGTKInternal) public nonisolated func _sgtk_destroy_notify_impl(")) - #expect(support.contains("@_spi(SGTKInternal) public nonisolated func _sgtk_signal_connect_data(")) - #expect(support.contains("@_spi(SGTKInternal) public nonisolated func _sgtk_signal_handler_disconnect(")) + #expect(support.contains("@_spi(SGTKInternal) public nonisolated func _sgtkDestroyNotifyImpl(")) + #expect(support.contains("@_spi(SGTKInternal) public nonisolated func _sgtkSignalConnectData(")) + #expect(support.contains("@_spi(SGTKInternal) public nonisolated func _sgtkSignalHandlerDisconnect(")) // SignalHandle itself and its id/disconnect() stay plain public — only // the raw-pointer members are hidden. #expect(support.contains("public struct SignalHandle {")) diff --git a/docs/skip-baseline/tier1/GLib.json b/docs/skip-baseline/tier1/GLib.json index dff5ec7..0fec75c 100644 --- a/docs/skip-baseline/tier1/GLib.json +++ b/docs/skip-baseline/tier1/GLib.json @@ -900,12 +900,6 @@ "reason" : "deprecatedRemoved", "symbol" : "GLib.byte_array_unref" }, - { - "cIdentifier" : "g_canonicalize_filename", - "detail" : "parameter 'relative_to' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.canonicalize_filename" - }, { "cIdentifier" : "g_chdir", "detail" : "C symbol 'g_chdir' is not exported by the system library", @@ -1182,42 +1176,12 @@ "reason" : "deprecatedRemoved", "symbol" : "GLib.date_valid_year" }, - { - "cIdentifier" : "g_dcgettext", - "detail" : "parameter 'domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.dcgettext" - }, - { - "cIdentifier" : "g_dgettext", - "detail" : "parameter 'domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.dgettext" - }, { "cIdentifier" : "g_dir_make_tmp", "detail" : "deprecatedRemoved", "reason" : "deprecatedRemoved", "symbol" : "GLib.dir_make_tmp" }, - { - "cIdentifier" : "g_dngettext", - "detail" : "parameter 'domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.dngettext" - }, - { - "cIdentifier" : "g_dpgettext", - "detail" : "parameter 'domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.dpgettext" - }, - { - "cIdentifier" : "g_dpgettext2", - "detail" : "parameter 'domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.dpgettext2" - }, { "cIdentifier" : "g_environ_getenv", "detail" : "parameter 'envp': C array bridging not yet implemented", @@ -1254,12 +1218,6 @@ "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.file_get_contents" }, - { - "cIdentifier" : "g_file_open_tmp", - "detail" : "parameter 'tmpl' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.file_open_tmp" - }, { "cIdentifier" : "g_file_set_contents", "detail" : "parameter 'contents': C array bridging not yet implemented", @@ -1272,12 +1230,6 @@ "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.file_set_contents_full" }, - { - "cIdentifier" : "g_filename_to_uri", - "detail" : "parameter 'hostname' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.filename_to_uri" - }, { "cIdentifier" : "g_fopen", "detail" : "C symbol 'g_fopen' is not exported by the system library", @@ -1584,18 +1536,6 @@ "reason" : "notIntrospectable", "symbol" : "GLib.idle_add_once" }, - { - "cIdentifier" : "g_intern_static_string", - "detail" : "parameter 'string' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.intern_static_string" - }, - { - "cIdentifier" : "g_intern_string", - "detail" : "parameter 'string' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.intern_string" - }, { "cIdentifier" : "g_io_add_watch", "detail" : "shadowedSymbol", @@ -1662,12 +1602,6 @@ "reason" : "notIntrospectable", "symbol" : "GLib.log" }, - { - "cIdentifier" : "g_log_default_handler", - "detail" : "parameter 'log_domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.log_default_handler" - }, { "cIdentifier" : "g_log_set_default_handler", "detail" : "notIntrospectable", @@ -1682,8 +1616,8 @@ }, { "cIdentifier" : "g_log_set_handler_full", - "detail" : "parameter 'log_domain' is a nullable string", - "reason" : "unknownType", + "detail" : "callback param 'log_func' deferred to Phase D4.3", + "reason" : "callbackWithoutUserData", "symbol" : "GLib.log_set_handler_full" }, { @@ -1710,12 +1644,6 @@ "reason" : "notIntrospectable", "symbol" : "GLib.log_structured_standard" }, - { - "cIdentifier" : "g_log_variant", - "detail" : "parameter 'log_domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.log_variant" - }, { "cIdentifier" : "g_log_writer_default", "detail" : "parameter 'fields': C array bridging not yet implemented", @@ -1724,16 +1652,10 @@ }, { "cIdentifier" : "g_log_writer_default_set_debug_domains", - "detail" : "parameter 'domains' is a nullable string", + "detail" : "parameter 'domains' is not a single const input string ('const gchar* const*')", "reason" : "unknownType", "symbol" : "GLib.log_writer_default_set_debug_domains" }, - { - "cIdentifier" : "g_log_writer_default_would_drop", - "detail" : "parameter 'log_domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.log_writer_default_would_drop" - }, { "cIdentifier" : "g_log_writer_format_fields", "detail" : "parameter 'fields': C array bridging not yet implemented", @@ -1872,12 +1794,6 @@ "reason" : "unknownType", "symbol" : "GLib.nullify_pointer" }, - { - "cIdentifier" : "g_on_error_stack_trace", - "detail" : "parameter 'prg_name' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.on_error_stack_trace" - }, { "cIdentifier" : "g_once_init_enter", "detail" : "deprecatedRemoved", @@ -1916,8 +1832,8 @@ }, { "cIdentifier" : "g_parse_debug_string", - "detail" : "parameter 'string' is a nullable string", - "reason" : "unknownType", + "detail" : "parameter 'keys': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.parse_debug_string" }, { @@ -2058,24 +1974,6 @@ "reason" : "callbackWithoutUserData", "symbol" : "GLib.qsort_with_data" }, - { - "cIdentifier" : "g_quark_from_static_string", - "detail" : "parameter 'string' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.quark_from_static_string" - }, - { - "cIdentifier" : "g_quark_from_string", - "detail" : "parameter 'string' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.quark_from_string" - }, - { - "cIdentifier" : "g_quark_try_string", - "detail" : "parameter 'string' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.quark_try_string" - }, { "cIdentifier" : "g_rc_box_release_full", "detail" : "callback param 'clear_func' deferred to Phase D4.3", @@ -2336,26 +2234,26 @@ }, { "cIdentifier" : "g_spawn_async", - "detail" : "parameter 'working_directory' is a nullable string", - "reason" : "unknownType", + "detail" : "parameter 'argv': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.spawn_async" }, { "cIdentifier" : "g_spawn_async_with_fds", - "detail" : "parameter 'working_directory' is a nullable string", - "reason" : "unknownType", + "detail" : "parameter 'argv': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.spawn_async_with_fds" }, { "cIdentifier" : "g_spawn_async_with_pipes", - "detail" : "parameter 'working_directory' is a nullable string", - "reason" : "unknownType", + "detail" : "parameter 'argv': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.spawn_async_with_pipes" }, { "cIdentifier" : "g_spawn_async_with_pipes_and_fds", - "detail" : "parameter 'working_directory' is a nullable string", - "reason" : "unknownType", + "detail" : "parameter 'argv': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.spawn_async_with_pipes_and_fds" }, { @@ -2366,8 +2264,8 @@ }, { "cIdentifier" : "g_spawn_sync", - "detail" : "parameter 'working_directory' is a nullable string", - "reason" : "unknownType", + "detail" : "parameter 'argv': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.spawn_sync" }, { @@ -2388,16 +2286,10 @@ "reason" : "unknownType", "symbol" : "GLib.stpcpy" }, - { - "cIdentifier" : "g_str_to_ascii", - "detail" : "parameter 'from_locale' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.str_to_ascii" - }, { "cIdentifier" : "g_str_tokenize_and_fold", - "detail" : "parameter 'translit_locale' is a nullable string", - "reason" : "unknownType", + "detail" : "out-param 'ascii_alternates': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.str_tokenize_and_fold" }, { @@ -2418,12 +2310,6 @@ "reason" : "unknownType", "symbol" : "GLib.strchug" }, - { - "cIdentifier" : "g_strcmp0", - "detail" : "parameter 'str1' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.strcmp0" - }, { "cIdentifier" : "g_strconcat", "detail" : "notIntrospectable", @@ -2442,12 +2328,6 @@ "reason" : "unknownType", "symbol" : "GLib.strdown" }, - { - "cIdentifier" : "g_strdup", - "detail" : "parameter 'str' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.strdup" - }, { "cIdentifier" : "g_strdup_printf", "detail" : "notIntrospectable", @@ -2466,12 +2346,6 @@ "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.strdupv" }, - { - "cIdentifier" : "g_strescape", - "detail" : "parameter 'exceptions' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.strescape" - }, { "cIdentifier" : "g_strfreev", "detail" : "parameter 'str_array': C array bridging not yet implemented", @@ -2486,8 +2360,8 @@ }, { "cIdentifier" : "g_strjoinv", - "detail" : "parameter 'separator' is a nullable string", - "reason" : "unknownType", + "detail" : "parameter 'str_array': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.strjoinv" }, { @@ -2502,12 +2376,6 @@ "reason" : "unknownType", "symbol" : "GLib.strlcpy" }, - { - "cIdentifier" : "g_strndup", - "detail" : "parameter 'str' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.strndup" - }, { "cIdentifier" : "g_strreverse", "detail" : "parameter 'string' is not a single const input string ('gchar*')", @@ -2598,12 +2466,6 @@ "reason" : "notIntrospectable", "symbol" : "GLib.test_create_suite" }, - { - "cIdentifier" : "g_test_expect_message", - "detail" : "parameter 'log_domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.test_expect_message" - }, { "cIdentifier" : "g_test_fail_printf", "detail" : "notIntrospectable", @@ -2622,12 +2484,6 @@ "reason" : "notIntrospectable", "symbol" : "GLib.test_get_root" }, - { - "cIdentifier" : "g_test_incomplete", - "detail" : "parameter 'msg' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.test_incomplete" - }, { "cIdentifier" : "g_test_incomplete_printf", "detail" : "notIntrospectable", @@ -2676,28 +2532,16 @@ "reason" : "plainRecord", "symbol" : "GLib.test_run_suite" }, - { - "cIdentifier" : "g_test_skip", - "detail" : "parameter 'msg' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.test_skip" - }, { "cIdentifier" : "g_test_skip_printf", "detail" : "notIntrospectable", "reason" : "notIntrospectable", "symbol" : "GLib.test_skip_printf" }, - { - "cIdentifier" : "g_test_trap_subprocess", - "detail" : "parameter 'test_path' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.test_trap_subprocess" - }, { "cIdentifier" : "g_test_trap_subprocess_with_envp", - "detail" : "parameter 'test_path' is a nullable string", - "reason" : "unknownType", + "detail" : "parameter 'envp': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.test_trap_subprocess_with_envp" }, { @@ -3048,12 +2892,6 @@ "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.utf16_to_utf8" }, - { - "cIdentifier" : "g_utf8_find_next_char", - "detail" : "parameter 'end' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.utf8_find_next_char" - }, { "cIdentifier" : "g_utf8_strncpy", "detail" : "parameter 'dest' is not a single const input string ('gchar*')", @@ -3201,7 +3039,7 @@ ], "module" : "GLib", "stats" : { - "boundCallables" : 271, + "boundCallables" : 298, "boundCallbacks" : 61, "boundSignals" : 0, "boundTypes" : 287, diff --git a/docs/skip-baseline/tier1/GObject.json b/docs/skip-baseline/tier1/GObject.json index 98664ed..5e1588d 100644 --- a/docs/skip-baseline/tier1/GObject.json +++ b/docs/skip-baseline/tier1/GObject.json @@ -554,7 +554,7 @@ }, { "cIdentifier" : "g_object_getv", - "detail" : "parameter 'names': C array bridging not yet implemented", + "detail" : "parameter 'values': C array bridging not yet implemented", "reason" : "arrayBridgingUnimplemented", "symbol" : "GObject.getv" }, @@ -576,144 +576,18 @@ "reason" : "plainRecord", "symbol" : "GObject.interface_list_properties" }, - { - "cIdentifier" : "g_param_spec_boolean", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_boolean" - }, - { - "cIdentifier" : "g_param_spec_boxed", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_boxed" - }, - { - "cIdentifier" : "g_param_spec_char", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_char" - }, - { - "cIdentifier" : "g_param_spec_double", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_double" - }, - { - "cIdentifier" : "g_param_spec_enum", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_enum" - }, - { - "cIdentifier" : "g_param_spec_flags", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_flags" - }, - { - "cIdentifier" : "g_param_spec_float", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_float" - }, - { - "cIdentifier" : "g_param_spec_gtype", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_gtype" - }, - { - "cIdentifier" : "g_param_spec_int", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_int" - }, - { - "cIdentifier" : "g_param_spec_int64", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_int64" - }, - { - "cIdentifier" : "g_param_spec_long", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_long" - }, - { - "cIdentifier" : "g_param_spec_object", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_object" - }, { "cIdentifier" : "g_param_spec_override", "detail" : "notIntrospectable", "reason" : "notIntrospectable", "symbol" : "GObject.param_spec_override" }, - { - "cIdentifier" : "g_param_spec_param", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_param" - }, - { - "cIdentifier" : "g_param_spec_pointer", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_pointer" - }, - { - "cIdentifier" : "g_param_spec_string", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_string" - }, - { - "cIdentifier" : "g_param_spec_uchar", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_uchar" - }, - { - "cIdentifier" : "g_param_spec_uint", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_uint" - }, - { - "cIdentifier" : "g_param_spec_uint64", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_uint64" - }, - { - "cIdentifier" : "g_param_spec_ulong", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_ulong" - }, - { - "cIdentifier" : "g_param_spec_unichar", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_unichar" - }, { "cIdentifier" : "g_param_spec_value_array", "detail" : "notIntrospectable", "reason" : "notIntrospectable", "symbol" : "GObject.param_spec_value_array" }, - { - "cIdentifier" : "g_param_spec_variant", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_variant" - }, { "cIdentifier" : "g_param_type_register_static", "detail" : "parameter 'pspec_info': 'GObject.ParamSpecTypeInfo' has no GType registration or lifetime functions", @@ -1113,7 +987,7 @@ ], "module" : "GObject", "stats" : { - "boundCallables" : 113, + "boundCallables" : 134, "boundCallbacks" : 32, "boundSignals" : 3, "boundTypes" : 76, diff --git a/docs/skip-baseline/tier2/GLib.json b/docs/skip-baseline/tier2/GLib.json index 057835f..0fec75c 100644 --- a/docs/skip-baseline/tier2/GLib.json +++ b/docs/skip-baseline/tier2/GLib.json @@ -705,7 +705,7 @@ { "cIdentifier" : "g_base64_decode", "detail" : "C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.base64_decode" }, { @@ -723,7 +723,7 @@ { "cIdentifier" : "g_base64_encode", "detail" : "parameter 'data': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.base64_encode" }, { @@ -735,7 +735,7 @@ { "cIdentifier" : "g_base64_encode_step", "detail" : "parameter 'in': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.base64_encode_step" }, { @@ -788,8 +788,8 @@ }, { "cIdentifier" : "g_build_filenamev", - "detail" : "parameter 'args': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'args': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.build_filenamev" }, { @@ -800,8 +800,8 @@ }, { "cIdentifier" : "g_build_pathv", - "detail" : "parameter 'args': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'args': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.build_pathv" }, { @@ -900,12 +900,6 @@ "reason" : "deprecatedRemoved", "symbol" : "GLib.byte_array_unref" }, - { - "cIdentifier" : "g_canonicalize_filename", - "detail" : "parameter 'relative_to' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.canonicalize_filename" - }, { "cIdentifier" : "g_chdir", "detail" : "C symbol 'g_chdir' is not exported by the system library", @@ -969,19 +963,19 @@ { "cIdentifier" : "g_compute_checksum_for_data", "detail" : "parameter 'data': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.compute_checksum_for_data" }, { "cIdentifier" : "g_compute_hmac_for_data", "detail" : "parameter 'key': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.compute_hmac_for_data" }, { "cIdentifier" : "g_compute_hmac_for_string", "detail" : "parameter 'key': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.compute_hmac_for_string" }, { @@ -993,13 +987,13 @@ { "cIdentifier" : "g_convert", "detail" : "parameter 'str': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.convert" }, { "cIdentifier" : "g_convert_with_fallback", "detail" : "parameter 'str': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.convert_with_fallback" }, { @@ -1182,58 +1176,28 @@ "reason" : "deprecatedRemoved", "symbol" : "GLib.date_valid_year" }, - { - "cIdentifier" : "g_dcgettext", - "detail" : "parameter 'domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.dcgettext" - }, - { - "cIdentifier" : "g_dgettext", - "detail" : "parameter 'domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.dgettext" - }, { "cIdentifier" : "g_dir_make_tmp", "detail" : "deprecatedRemoved", "reason" : "deprecatedRemoved", "symbol" : "GLib.dir_make_tmp" }, - { - "cIdentifier" : "g_dngettext", - "detail" : "parameter 'domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.dngettext" - }, - { - "cIdentifier" : "g_dpgettext", - "detail" : "parameter 'domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.dpgettext" - }, - { - "cIdentifier" : "g_dpgettext2", - "detail" : "parameter 'domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.dpgettext2" - }, { "cIdentifier" : "g_environ_getenv", - "detail" : "parameter 'envp': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'envp': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.environ_getenv" }, { "cIdentifier" : "g_environ_setenv", - "detail" : "parameter 'envp': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'envp': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.environ_setenv" }, { "cIdentifier" : "g_environ_unsetenv", - "detail" : "parameter 'envp': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'envp': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.environ_unsetenv" }, { @@ -1251,33 +1215,21 @@ { "cIdentifier" : "g_file_get_contents", "detail" : "out-param 'contents': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.file_get_contents" }, - { - "cIdentifier" : "g_file_open_tmp", - "detail" : "parameter 'tmpl' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.file_open_tmp" - }, { "cIdentifier" : "g_file_set_contents", "detail" : "parameter 'contents': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.file_set_contents" }, { "cIdentifier" : "g_file_set_contents_full", "detail" : "parameter 'contents': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.file_set_contents_full" }, - { - "cIdentifier" : "g_filename_to_uri", - "detail" : "parameter 'hostname' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.filename_to_uri" - }, { "cIdentifier" : "g_fopen", "detail" : "C symbol 'g_fopen' is not exported by the system library", @@ -1322,32 +1274,32 @@ }, { "cIdentifier" : "g_get_environ", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.get_environ" }, { "cIdentifier" : "g_get_filename_charsets", - "detail" : "out-param 'filename_charsets': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "out-param 'filename_charsets': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.get_filename_charsets" }, { "cIdentifier" : "g_get_language_names", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.get_language_names" }, { "cIdentifier" : "g_get_language_names_with_category", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.get_language_names_with_category" }, { "cIdentifier" : "g_get_locale_variants", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.get_locale_variants" }, { @@ -1358,14 +1310,14 @@ }, { "cIdentifier" : "g_get_system_config_dirs", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.get_system_config_dirs" }, { "cIdentifier" : "g_get_system_data_dirs", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.get_system_data_dirs" }, { @@ -1584,18 +1536,6 @@ "reason" : "notIntrospectable", "symbol" : "GLib.idle_add_once" }, - { - "cIdentifier" : "g_intern_static_string", - "detail" : "parameter 'string' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.intern_static_string" - }, - { - "cIdentifier" : "g_intern_string", - "detail" : "parameter 'string' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.intern_string" - }, { "cIdentifier" : "g_io_add_watch", "detail" : "shadowedSymbol", @@ -1640,20 +1580,20 @@ }, { "cIdentifier" : "g_listenv", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.listenv" }, { "cIdentifier" : "g_locale_from_utf8", "detail" : "C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.locale_from_utf8" }, { "cIdentifier" : "g_locale_to_utf8", "detail" : "parameter 'opsysstring': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.locale_to_utf8" }, { @@ -1662,12 +1602,6 @@ "reason" : "notIntrospectable", "symbol" : "GLib.log" }, - { - "cIdentifier" : "g_log_default_handler", - "detail" : "parameter 'log_domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.log_default_handler" - }, { "cIdentifier" : "g_log_set_default_handler", "detail" : "notIntrospectable", @@ -1682,8 +1616,8 @@ }, { "cIdentifier" : "g_log_set_handler_full", - "detail" : "parameter 'log_domain' is a nullable string", - "reason" : "unknownType", + "detail" : "callback param 'log_func' deferred to Phase D4.3", + "reason" : "callbackWithoutUserData", "symbol" : "GLib.log_set_handler_full" }, { @@ -1701,7 +1635,7 @@ { "cIdentifier" : "g_log_structured_array", "detail" : "parameter 'fields': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.log_structured_array" }, { @@ -1710,52 +1644,40 @@ "reason" : "notIntrospectable", "symbol" : "GLib.log_structured_standard" }, - { - "cIdentifier" : "g_log_variant", - "detail" : "parameter 'log_domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.log_variant" - }, { "cIdentifier" : "g_log_writer_default", "detail" : "parameter 'fields': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.log_writer_default" }, { "cIdentifier" : "g_log_writer_default_set_debug_domains", - "detail" : "parameter 'domains' is a nullable string", + "detail" : "parameter 'domains' is not a single const input string ('const gchar* const*')", "reason" : "unknownType", "symbol" : "GLib.log_writer_default_set_debug_domains" }, - { - "cIdentifier" : "g_log_writer_default_would_drop", - "detail" : "parameter 'log_domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.log_writer_default_would_drop" - }, { "cIdentifier" : "g_log_writer_format_fields", "detail" : "parameter 'fields': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.log_writer_format_fields" }, { "cIdentifier" : "g_log_writer_journald", "detail" : "parameter 'fields': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.log_writer_journald" }, { "cIdentifier" : "g_log_writer_standard_streams", "detail" : "parameter 'fields': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.log_writer_standard_streams" }, { "cIdentifier" : "g_log_writer_syslog", "detail" : "parameter 'fields': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.log_writer_syslog" }, { @@ -1872,12 +1794,6 @@ "reason" : "unknownType", "symbol" : "GLib.nullify_pointer" }, - { - "cIdentifier" : "g_on_error_stack_trace", - "detail" : "parameter 'prg_name' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.on_error_stack_trace" - }, { "cIdentifier" : "g_once_init_enter", "detail" : "deprecatedRemoved", @@ -1916,8 +1832,8 @@ }, { "cIdentifier" : "g_parse_debug_string", - "detail" : "parameter 'string' is a nullable string", - "reason" : "unknownType", + "detail" : "parameter 'keys': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.parse_debug_string" }, { @@ -2058,24 +1974,6 @@ "reason" : "callbackWithoutUserData", "symbol" : "GLib.qsort_with_data" }, - { - "cIdentifier" : "g_quark_from_static_string", - "detail" : "parameter 'string' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.quark_from_static_string" - }, - { - "cIdentifier" : "g_quark_from_string", - "detail" : "parameter 'string' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.quark_from_string" - }, - { - "cIdentifier" : "g_quark_try_string", - "detail" : "parameter 'string' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.quark_try_string" - }, { "cIdentifier" : "g_rc_box_release_full", "detail" : "callback param 'clear_func' deferred to Phase D4.3", @@ -2277,7 +2175,7 @@ { "cIdentifier" : "g_shell_parse_argv", "detail" : "out-param 'argvp': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.shell_parse_argv" }, { @@ -2336,38 +2234,38 @@ }, { "cIdentifier" : "g_spawn_async", - "detail" : "parameter 'working_directory' is a nullable string", - "reason" : "unknownType", + "detail" : "parameter 'argv': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.spawn_async" }, { "cIdentifier" : "g_spawn_async_with_fds", - "detail" : "parameter 'working_directory' is a nullable string", - "reason" : "unknownType", + "detail" : "parameter 'argv': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.spawn_async_with_fds" }, { "cIdentifier" : "g_spawn_async_with_pipes", - "detail" : "parameter 'working_directory' is a nullable string", - "reason" : "unknownType", + "detail" : "parameter 'argv': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.spawn_async_with_pipes" }, { "cIdentifier" : "g_spawn_async_with_pipes_and_fds", - "detail" : "parameter 'working_directory' is a nullable string", - "reason" : "unknownType", + "detail" : "parameter 'argv': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.spawn_async_with_pipes_and_fds" }, { "cIdentifier" : "g_spawn_command_line_sync", - "detail" : "out-param 'standard_output': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "out-param 'standard_output': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.spawn_command_line_sync" }, { "cIdentifier" : "g_spawn_sync", - "detail" : "parameter 'working_directory' is a nullable string", - "reason" : "unknownType", + "detail" : "parameter 'argv': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.spawn_sync" }, { @@ -2388,16 +2286,10 @@ "reason" : "unknownType", "symbol" : "GLib.stpcpy" }, - { - "cIdentifier" : "g_str_to_ascii", - "detail" : "parameter 'from_locale' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.str_to_ascii" - }, { "cIdentifier" : "g_str_tokenize_and_fold", - "detail" : "parameter 'translit_locale' is a nullable string", - "reason" : "unknownType", + "detail" : "out-param 'ascii_alternates': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.str_tokenize_and_fold" }, { @@ -2418,12 +2310,6 @@ "reason" : "unknownType", "symbol" : "GLib.strchug" }, - { - "cIdentifier" : "g_strcmp0", - "detail" : "parameter 'str1' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.strcmp0" - }, { "cIdentifier" : "g_strconcat", "detail" : "notIntrospectable", @@ -2442,12 +2328,6 @@ "reason" : "unknownType", "symbol" : "GLib.strdown" }, - { - "cIdentifier" : "g_strdup", - "detail" : "parameter 'str' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.strdup" - }, { "cIdentifier" : "g_strdup_printf", "detail" : "notIntrospectable", @@ -2462,20 +2342,14 @@ }, { "cIdentifier" : "g_strdupv", - "detail" : "parameter 'str_array': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'str_array': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.strdupv" }, - { - "cIdentifier" : "g_strescape", - "detail" : "parameter 'exceptions' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.strescape" - }, { "cIdentifier" : "g_strfreev", - "detail" : "parameter 'str_array': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'str_array': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.strfreev" }, { @@ -2486,8 +2360,8 @@ }, { "cIdentifier" : "g_strjoinv", - "detail" : "parameter 'separator' is a nullable string", - "reason" : "unknownType", + "detail" : "parameter 'str_array': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.strjoinv" }, { @@ -2502,12 +2376,6 @@ "reason" : "unknownType", "symbol" : "GLib.strlcpy" }, - { - "cIdentifier" : "g_strndup", - "detail" : "parameter 'str' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.strndup" - }, { "cIdentifier" : "g_strreverse", "detail" : "parameter 'string' is not a single const input string ('gchar*')", @@ -2516,14 +2384,14 @@ }, { "cIdentifier" : "g_strsplit", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.strsplit" }, { "cIdentifier" : "g_strsplit_set", - "detail" : "parameter 'delimiters': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'delimiters': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.strsplit_set" }, { @@ -2534,14 +2402,14 @@ }, { "cIdentifier" : "g_strv_contains", - "detail" : "parameter 'strv': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'strv': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.strv_contains" }, { "cIdentifier" : "g_strv_equal", - "detail" : "parameter 'strv1': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'strv1': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.strv_equal" }, { @@ -2552,8 +2420,8 @@ }, { "cIdentifier" : "g_strv_length", - "detail" : "parameter 'str_array': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'str_array': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.strv_length" }, { @@ -2598,12 +2466,6 @@ "reason" : "notIntrospectable", "symbol" : "GLib.test_create_suite" }, - { - "cIdentifier" : "g_test_expect_message", - "detail" : "parameter 'log_domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.test_expect_message" - }, { "cIdentifier" : "g_test_fail_printf", "detail" : "notIntrospectable", @@ -2622,12 +2484,6 @@ "reason" : "notIntrospectable", "symbol" : "GLib.test_get_root" }, - { - "cIdentifier" : "g_test_incomplete", - "detail" : "parameter 'msg' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.test_incomplete" - }, { "cIdentifier" : "g_test_incomplete_printf", "detail" : "notIntrospectable", @@ -2676,28 +2532,16 @@ "reason" : "plainRecord", "symbol" : "GLib.test_run_suite" }, - { - "cIdentifier" : "g_test_skip", - "detail" : "parameter 'msg' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.test_skip" - }, { "cIdentifier" : "g_test_skip_printf", "detail" : "notIntrospectable", "reason" : "notIntrospectable", "symbol" : "GLib.test_skip_printf" }, - { - "cIdentifier" : "g_test_trap_subprocess", - "detail" : "parameter 'test_path' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.test_trap_subprocess" - }, { "cIdentifier" : "g_test_trap_subprocess_with_envp", - "detail" : "parameter 'test_path' is a nullable string", - "reason" : "unknownType", + "detail" : "parameter 'envp': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.test_trap_subprocess_with_envp" }, { @@ -2865,13 +2709,13 @@ { "cIdentifier" : "g_ucs4_to_utf16", "detail" : "parameter 'str': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.ucs4_to_utf16" }, { "cIdentifier" : "g_ucs4_to_utf8", "detail" : "parameter 'str': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.ucs4_to_utf8" }, { @@ -2895,7 +2739,7 @@ { "cIdentifier" : "g_unicode_canonical_ordering", "detail" : "parameter 'string': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.unicode_canonical_ordering" }, { @@ -3039,21 +2883,15 @@ { "cIdentifier" : "g_utf16_to_ucs4", "detail" : "parameter 'str': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.utf16_to_ucs4" }, { "cIdentifier" : "g_utf16_to_utf8", "detail" : "parameter 'str': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.utf16_to_utf8" }, - { - "cIdentifier" : "g_utf8_find_next_char", - "detail" : "parameter 'end' is a nullable string", - "reason" : "unknownType", - "symbol" : "GLib.utf8_find_next_char" - }, { "cIdentifier" : "g_utf8_strncpy", "detail" : "parameter 'dest' is not a single const input string ('gchar*')", @@ -3081,13 +2919,13 @@ { "cIdentifier" : "g_utf8_validate", "detail" : "parameter 'str': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.utf8_validate" }, { "cIdentifier" : "g_utf8_validate_len", "detail" : "parameter 'str': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GLib.utf8_validate_len" }, { @@ -3201,7 +3039,7 @@ ], "module" : "GLib", "stats" : { - "boundCallables" : 271, + "boundCallables" : 298, "boundCallbacks" : 61, "boundSignals" : 0, "boundTypes" : 287, diff --git a/docs/skip-baseline/tier2/GObject.json b/docs/skip-baseline/tier2/GObject.json index 2413249..5e1588d 100644 --- a/docs/skip-baseline/tier2/GObject.json +++ b/docs/skip-baseline/tier2/GObject.json @@ -105,7 +105,7 @@ { "cIdentifier" : "g_object_newv", "detail" : "parameter 'parameters': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GObject.Object.newv" }, { @@ -518,8 +518,8 @@ }, { "cIdentifier" : "g_enum_register_static", - "detail" : "parameter 'const_static_values': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'const_static_values': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GObject.enum_register_static" }, { @@ -548,14 +548,14 @@ }, { "cIdentifier" : "g_flags_register_static", - "detail" : "parameter 'const_static_values': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'const_static_values': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GObject.flags_register_static" }, { "cIdentifier" : "g_object_getv", - "detail" : "parameter 'names': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'values': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GObject.getv" }, { @@ -576,144 +576,18 @@ "reason" : "plainRecord", "symbol" : "GObject.interface_list_properties" }, - { - "cIdentifier" : "g_param_spec_boolean", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_boolean" - }, - { - "cIdentifier" : "g_param_spec_boxed", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_boxed" - }, - { - "cIdentifier" : "g_param_spec_char", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_char" - }, - { - "cIdentifier" : "g_param_spec_double", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_double" - }, - { - "cIdentifier" : "g_param_spec_enum", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_enum" - }, - { - "cIdentifier" : "g_param_spec_flags", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_flags" - }, - { - "cIdentifier" : "g_param_spec_float", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_float" - }, - { - "cIdentifier" : "g_param_spec_gtype", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_gtype" - }, - { - "cIdentifier" : "g_param_spec_int", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_int" - }, - { - "cIdentifier" : "g_param_spec_int64", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_int64" - }, - { - "cIdentifier" : "g_param_spec_long", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_long" - }, - { - "cIdentifier" : "g_param_spec_object", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_object" - }, { "cIdentifier" : "g_param_spec_override", "detail" : "notIntrospectable", "reason" : "notIntrospectable", "symbol" : "GObject.param_spec_override" }, - { - "cIdentifier" : "g_param_spec_param", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_param" - }, - { - "cIdentifier" : "g_param_spec_pointer", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_pointer" - }, - { - "cIdentifier" : "g_param_spec_string", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_string" - }, - { - "cIdentifier" : "g_param_spec_uchar", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_uchar" - }, - { - "cIdentifier" : "g_param_spec_uint", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_uint" - }, - { - "cIdentifier" : "g_param_spec_uint64", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_uint64" - }, - { - "cIdentifier" : "g_param_spec_ulong", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_ulong" - }, - { - "cIdentifier" : "g_param_spec_unichar", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_unichar" - }, { "cIdentifier" : "g_param_spec_value_array", "detail" : "notIntrospectable", "reason" : "notIntrospectable", "symbol" : "GObject.param_spec_value_array" }, - { - "cIdentifier" : "g_param_spec_variant", - "detail" : "parameter 'nick' is a nullable string", - "reason" : "unknownType", - "symbol" : "GObject.param_spec_variant" - }, { "cIdentifier" : "g_param_type_register_static", "detail" : "parameter 'pspec_info': 'GObject.ParamSpecTypeInfo' has no GType registration or lifetime functions", @@ -722,14 +596,14 @@ }, { "cIdentifier" : "g_type_module_register_enum", - "detail" : "parameter 'const_static_values': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'const_static_values': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GObject.register_enum" }, { "cIdentifier" : "g_type_module_register_flags", - "detail" : "parameter 'const_static_values': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'const_static_values': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GObject.register_flags" }, { @@ -813,7 +687,7 @@ { "cIdentifier" : "g_signal_list_ids", "detail" : "C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GObject.signal_list_ids" }, { @@ -927,7 +801,7 @@ { "cIdentifier" : "g_type_children", "detail" : "C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GObject.type_children" }, { @@ -1029,7 +903,7 @@ { "cIdentifier" : "g_type_interfaces", "detail" : "C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "GObject.type_interfaces" }, { @@ -1113,7 +987,7 @@ ], "module" : "GObject", "stats" : { - "boundCallables" : 113, + "boundCallables" : 134, "boundCallbacks" : 32, "boundSignals" : 3, "boundTypes" : 76, diff --git a/docs/skip-baseline/tier2/Gio.json b/docs/skip-baseline/tier2/Gio.json index c425b53..98d42ae 100644 --- a/docs/skip-baseline/tier2/Gio.json +++ b/docs/skip-baseline/tier2/Gio.json @@ -48,12 +48,6 @@ "reason" : "unsupportedGValueCategory", "symbol" : "Gio.Application.action-group" }, - { - "cIdentifier" : "g_application_new", - "detail" : "parameter 'application_id' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.Application.new" - }, { "detail" : "param 'files': C array bridging not yet implemented", "reason" : "signalUnmappableParam", @@ -184,12 +178,6 @@ "reason" : "nameCollision", "symbol" : "Gio.DBusConnection.g_dbus_connection_new_for_address_finish" }, - { - "cIdentifier" : "g_dbus_connection_new_sync", - "detail" : "parameter 'guid' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.DBusConnection.new_sync" - }, { "cIdentifier" : "GDBusErrorEntry", "detail" : "no GType registration", @@ -235,15 +223,9 @@ { "cIdentifier" : "g_dbus_message_new_from_blob", "detail" : "parameter 'blob': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.DBusMessage.new_from_blob" }, - { - "cIdentifier" : "g_dbus_message_new_method_call", - "detail" : "parameter 'name' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.DBusMessage.new_method_call" - }, { "cIdentifier" : "GDBusObjectIface", "detail" : "GObject class struct for 'DBusObject'", @@ -257,7 +239,7 @@ "symbol" : "Gio.DBusObjectManagerClient.g_dbus_object_manager_client_new_for_bus_finish" }, { - "detail" : "param 'invalidated_properties': C array has no length annotation", + "detail" : "param 'invalidated_properties': C array bridging not yet implemented", "reason" : "signalUnmappableParam", "symbol" : "Gio.DBusObjectManagerClient.interface-proxy-properties-changed" }, @@ -269,8 +251,8 @@ }, { "cIdentifier" : "g_dbus_object_manager_client_new_sync", - "detail" : "parameter 'name' is a nullable string", - "reason" : "unknownType", + "detail" : "callback param 'get_proxy_type_func' deferred to Phase D4.3", + "reason" : "callbackWithoutUserData", "symbol" : "Gio.DBusObjectManagerClient.new_sync" }, { @@ -328,7 +310,7 @@ "symbol" : "Gio.DBusObjectSkeletonPrivate" }, { - "detail" : "param 'invalidated_properties': C array has no length annotation", + "detail" : "param 'invalidated_properties': C array bridging not yet implemented", "reason" : "signalUnmappableParam", "symbol" : "Gio.DBusProxy.g-properties-changed" }, @@ -338,12 +320,6 @@ "reason" : "nameCollision", "symbol" : "Gio.DBusProxy.g_dbus_proxy_new_for_bus_finish" }, - { - "cIdentifier" : "g_dbus_proxy_new_sync", - "detail" : "parameter 'name' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.DBusProxy.new_sync" - }, { "cIdentifier" : "GDBusProxyClass", "detail" : "GObject class struct for 'DBusProxy'", @@ -364,13 +340,13 @@ }, { "cIdentifier" : "GDBusSubtreeEnumerateFunc", - "detail" : "callback 'DBusSubtreeEnumerateFunc' has unmappable param/return: callback 'DBusSubtreeEnumerateFunc' return unmappable: C array has no length annotation", + "detail" : "callback 'DBusSubtreeEnumerateFunc' has unmappable param/return: callback 'DBusSubtreeEnumerateFunc' return unmappable: C array bridging not yet implemented", "reason" : "callbackWithoutUserData", "symbol" : "Gio.DBusSubtreeEnumerateFunc" }, { "cIdentifier" : "GDBusSubtreeIntrospectFunc", - "detail" : "callback 'DBusSubtreeIntrospectFunc' has unmappable param/return: callback 'DBusSubtreeIntrospectFunc' return unmappable: C array has no length annotation", + "detail" : "callback 'DBusSubtreeIntrospectFunc' has unmappable param/return: callback 'DBusSubtreeIntrospectFunc' return unmappable: C array bridging not yet implemented", "reason" : "callbackWithoutUserData", "symbol" : "Gio.DBusSubtreeIntrospectFunc" }, @@ -454,8 +430,8 @@ }, { "cIdentifier" : "advertised-protocols", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.DtlsConnection.advertised-protocols" }, { @@ -785,7 +761,7 @@ { "cIdentifier" : "g_memory_input_stream_new_from_data", "detail" : "parameter 'data': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.MemoryInputStream.new_from_data" }, { @@ -830,24 +806,6 @@ "reason" : "plainRecord", "symbol" : "Gio.MenuAttributeIterPrivate" }, - { - "cIdentifier" : "g_menu_item_new", - "detail" : "parameter 'label' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.MenuItem.new" - }, - { - "cIdentifier" : "g_menu_item_new_section", - "detail" : "parameter 'label' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.MenuItem.new_section" - }, - { - "cIdentifier" : "g_menu_item_new_submenu", - "detail" : "parameter 'label' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.MenuItem.new_submenu" - }, { "cIdentifier" : "GMenuLinkIterClass", "detail" : "GObject class struct for 'MenuLinkIter'", @@ -879,7 +837,7 @@ "symbol" : "Gio.MountIface" }, { - "detail" : "param 'choices': C array has no length annotation", + "detail" : "param 'choices': C array bridging not yet implemented", "reason" : "signalUnmappableParam", "symbol" : "Gio.MountOperation.ask-question" }, @@ -1002,12 +960,6 @@ "reason" : "gtypeStruct", "symbol" : "Gio.PowerProfileMonitorInterface" }, - { - "cIdentifier" : "g_proxy_address_new", - "detail" : "parameter 'username' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.ProxyAddress.new" - }, { "cIdentifier" : "GProxyAddressClass", "detail" : "GObject class struct for 'ProxyAddress'", @@ -1085,12 +1037,6 @@ "reason" : "signalUnmappableParam", "symbol" : "Gio.Settings.change-event" }, - { - "cIdentifier" : "g_settings_new_full", - "detail" : "parameter 'path' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.Settings.new_full" - }, { "cIdentifier" : "GSettingsBackendClass", "detail" : "GObject class struct for 'SettingsBackend'", @@ -1159,8 +1105,8 @@ }, { "cIdentifier" : "ignore-hosts", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.SimpleProxyResolver.ignore-hosts" }, { @@ -1279,14 +1225,14 @@ }, { "cIdentifier" : "argv", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.Subprocess.argv" }, { "cIdentifier" : "g_subprocess_newv", - "detail" : "parameter 'argv': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'argv': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.Subprocess.newv" }, { @@ -1333,16 +1279,10 @@ }, { "cIdentifier" : "names", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.ThemedIcon.names" }, - { - "cIdentifier" : "g_themed_icon_new_from_names", - "detail" : "parameter 'iconnames': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", - "symbol" : "Gio.ThemedIcon.new_from_names" - }, { "cIdentifier" : "GThemedIconClass", "detail" : "GObject class struct for 'ThemedIcon'", @@ -1435,8 +1375,8 @@ }, { "cIdentifier" : "advertised-protocols", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.TlsConnection.advertised-protocols" }, { @@ -1526,7 +1466,7 @@ { "cIdentifier" : "g_unix_fd_list_new_from_array", "detail" : "parameter 'fds': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.UnixFDList.new_from_array" }, { @@ -1544,13 +1484,13 @@ { "cIdentifier" : "g_unix_socket_address_new_abstract", "detail" : "parameter 'path': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.UnixSocketAddress.new_abstract" }, { "cIdentifier" : "g_unix_socket_address_new_with_type", "detail" : "parameter 'path': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.UnixSocketAddress.new_with_type" }, { @@ -1664,7 +1604,7 @@ { "cIdentifier" : "g_action_map_add_action_entries", "detail" : "parameter 'entries': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.add_action_entries" }, { @@ -1676,13 +1616,13 @@ { "cIdentifier" : "g_memory_input_stream_add_data", "detail" : "parameter 'data': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.add_data" }, { "cIdentifier" : "g_simple_action_group_add_entries", "detail" : "parameter 'entries': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.add_entries" }, { @@ -1691,16 +1631,10 @@ "reason" : "callbackWithoutUserData", "symbol" : "Gio.add_filter" }, - { - "cIdentifier" : "g_application_add_main_option", - "detail" : "parameter 'arg_description' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.add_main_option" - }, { "cIdentifier" : "g_application_add_main_option_entries", - "detail" : "parameter 'entries': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'entries': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.add_main_option_entries" }, { @@ -1793,24 +1727,6 @@ "reason" : "deprecatedRemoved", "symbol" : "Gio.app_info_reset_type_associations" }, - { - "cIdentifier" : "g_menu_append", - "detail" : "parameter 'label' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.append" - }, - { - "cIdentifier" : "g_menu_append_section", - "detail" : "parameter 'label' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.append_section" - }, - { - "cIdentifier" : "g_menu_append_submenu", - "detail" : "parameter 'label' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.append_submenu" - }, { "cIdentifier" : "g_file_append_to_async", "detail" : "callback param 'callback' deferred to Phase D4.3", @@ -1862,13 +1778,13 @@ { "cIdentifier" : "g_dbus_message_bytes_needed", "detail" : "parameter 'blob': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.bytes_needed" }, { "cIdentifier" : "g_dbus_connection_call", - "detail" : "parameter 'bus_name' is a nullable string", - "reason" : "unknownType", + "detail" : "callback param 'callback' deferred to Phase D4.3", + "reason" : "callbackWithoutUserData", "symbol" : "Gio.call" }, { @@ -1877,16 +1793,10 @@ "reason" : "callbackWithoutUserData", "symbol" : "Gio.call" }, - { - "cIdentifier" : "g_dbus_connection_call_sync", - "detail" : "parameter 'bus_name' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.call_sync" - }, { "cIdentifier" : "g_dbus_connection_call_with_unix_fd_list", - "detail" : "parameter 'bus_name' is a nullable string", - "reason" : "unknownType", + "detail" : "callback param 'callback' deferred to Phase D4.3", + "reason" : "callbackWithoutUserData", "symbol" : "Gio.call_with_unix_fd_list" }, { @@ -1909,8 +1819,8 @@ }, { "cIdentifier" : "g_dbus_connection_call_with_unix_fd_list_sync", - "detail" : "parameter 'bus_name' is a nullable string", - "reason" : "unknownType", + "detail" : "object/boxed out-param 'out_fd_list' deferred", + "reason" : "outParameter", "symbol" : "Gio.call_with_unix_fd_list_sync" }, { @@ -1991,16 +1901,10 @@ "reason" : "outParameter", "symbol" : "Gio.communicate_finish" }, - { - "cIdentifier" : "g_subprocess_communicate_utf8", - "detail" : "parameter 'stdin_buf' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.communicate_utf8" - }, { "cIdentifier" : "g_subprocess_communicate_utf8_async", - "detail" : "parameter 'stdin_buf' is a nullable string", - "reason" : "unknownType", + "detail" : "callback param 'callback' deferred to Phase D4.3", + "reason" : "callbackWithoutUserData", "symbol" : "Gio.communicate_utf8_async" }, { @@ -2047,26 +1951,26 @@ }, { "cIdentifier" : "g_content_type_get_mime_dirs", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.content_type_get_mime_dirs" }, { "cIdentifier" : "g_content_type_guess", - "detail" : "parameter 'filename' is a nullable string", - "reason" : "unknownType", + "detail" : "parameter 'data': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.content_type_guess" }, { "cIdentifier" : "g_content_type_guess_for_tree", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.content_type_guess_for_tree" }, { "cIdentifier" : "g_content_type_set_mime_dirs", - "detail" : "parameter 'dirs': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'dirs': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.content_type_set_mime_dirs" }, { @@ -2078,7 +1982,7 @@ { "cIdentifier" : "g_converter_convert", "detail" : "parameter 'inbuf': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.convert" }, { @@ -2167,8 +2071,8 @@ }, { "cIdentifier" : "g_dbus_escape_object_path_bytestring", - "detail" : "parameter 'bytes': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'bytes': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.dbus_escape_object_path_bytestring" }, { @@ -2179,8 +2083,8 @@ }, { "cIdentifier" : "g_dbus_unescape_object_path", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.dbus_unescape_object_path" }, { @@ -2192,7 +2096,7 @@ { "cIdentifier" : "g_socket_control_message_deserialize", "detail" : "parameter 'data': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.deserialize" }, { @@ -2255,12 +2159,6 @@ "reason" : "callbackWithoutUserData", "symbol" : "Gio.eject_with_operation" }, - { - "cIdentifier" : "g_dbus_connection_emit_signal", - "detail" : "parameter 'destination_bus_name' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.emit_signal" - }, { "cIdentifier" : "g_file_enumerate_children_async", "detail" : "callback param 'callback' deferred to Phase D4.3", @@ -2269,14 +2167,14 @@ }, { "cIdentifier" : "g_drive_enumerate_identifiers", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.enumerate_identifiers" }, { "cIdentifier" : "g_volume_enumerate_identifiers", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.enumerate_identifiers" }, { @@ -2371,8 +2269,8 @@ }, { "cIdentifier" : "g_settings_backend_flatten_tree", - "detail" : "out-param 'keys': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "out-param 'keys': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.flatten_tree" }, { @@ -2387,18 +2285,6 @@ "reason" : "callbackWithoutUserData", "symbol" : "Gio.flush_async" }, - { - "cIdentifier" : "g_dbus_action_group_get", - "detail" : "parameter 'bus_name' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.get" - }, - { - "cIdentifier" : "g_dbus_menu_model_get", - "detail" : "parameter 'bus_name' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.get" - }, { "cIdentifier" : "g_dtls_client_connection_get_accepted_cas", "detail" : "list container with 1 element(s) not yet bridged", @@ -2414,19 +2300,19 @@ { "cIdentifier" : "g_application_command_line_get_arguments", "detail" : "C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.get_arguments" }, { "cIdentifier" : "g_file_info_get_attribute_stringv", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.get_attribute_stringv" }, { "cIdentifier" : "g_dbus_proxy_get_cached_property_names", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.get_cached_property_names" }, { @@ -2443,8 +2329,8 @@ }, { "cIdentifier" : "g_filename_completer_get_completions", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.get_completions" }, { @@ -2485,20 +2371,20 @@ }, { "cIdentifier" : "g_application_command_line_get_environ", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.get_environ" }, { "cIdentifier" : "g_app_launch_context_get_environment", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.get_environment" }, { "cIdentifier" : "g_dbus_message_get_header_fields", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.get_header_fields" }, { @@ -2533,8 +2419,8 @@ }, { "cIdentifier" : "g_themed_icon_get_names", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.get_names" }, { @@ -2563,20 +2449,20 @@ }, { "cIdentifier" : "g_settings_get_strv", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.get_strv" }, { "cIdentifier" : "g_app_info_get_supported_types", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.get_supported_types" }, { "cIdentifier" : "g_vfs_get_supported_uri_schemes", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.get_supported_uri_schemes" }, { @@ -2623,14 +2509,14 @@ }, { "cIdentifier" : "g_mount_guess_content_type_finish", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.guess_content_type_finish" }, { "cIdentifier" : "g_mount_guess_content_type_sync", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.guess_content_type_sync" }, { @@ -2669,30 +2555,12 @@ "reason" : "deprecatedRemoved", "symbol" : "Gio.initable_newv" }, - { - "cIdentifier" : "g_menu_insert", - "detail" : "parameter 'label' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.insert" - }, - { - "cIdentifier" : "g_menu_insert_section", - "detail" : "parameter 'label' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.insert_section" - }, { "cIdentifier" : "g_list_store_insert_sorted", "detail" : "callback param 'compare_func' deferred to Phase D4.3", "reason" : "callbackWithoutUserData", "symbol" : "Gio.insert_sorted" }, - { - "cIdentifier" : "g_menu_insert_submenu", - "detail" : "parameter 'label' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.insert_submenu" - }, { "cIdentifier" : "g_io_extension_point_implement", "detail" : "deprecatedRemoved", @@ -2741,28 +2609,16 @@ "reason" : "outParameter", "symbol" : "Gio.iterate" }, - { - "cIdentifier" : "g_socket_join_multicast_group", - "detail" : "parameter 'iface' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.join_multicast_group" - }, - { - "cIdentifier" : "g_socket_join_multicast_group_ssm", - "detail" : "parameter 'iface' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.join_multicast_group_ssm" - }, { "cIdentifier" : "g_keyfile_settings_backend_new", - "detail" : "parameter 'root_group' is a nullable string", + "detail" : "C symbol 'g_keyfile_settings_backend_new' is not exported by the system library", "reason" : "unknownType", "symbol" : "Gio.keyfile_settings_backend_new" }, { "cIdentifier" : "g_settings_backend_keys_changed", - "detail" : "parameter 'items': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'items': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.keys_changed" }, { @@ -2783,40 +2639,28 @@ "reason" : "containerType", "symbol" : "Gio.launch_uris_async" }, - { - "cIdentifier" : "g_socket_leave_multicast_group", - "detail" : "parameter 'iface' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.leave_multicast_group" - }, - { - "cIdentifier" : "g_socket_leave_multicast_group_ssm", - "detail" : "parameter 'iface' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.leave_multicast_group_ssm" - }, { "cIdentifier" : "g_action_group_list_actions", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.list_actions" }, { "cIdentifier" : "g_file_info_list_attributes", - "detail" : "parameter 'name_space' is a nullable string", - "reason" : "unknownType", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.list_attributes" }, { "cIdentifier" : "g_settings_list_children", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.list_children" }, { "cIdentifier" : "g_settings_list_keys", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.list_keys" }, { @@ -2827,14 +2671,14 @@ }, { "cIdentifier" : "g_settings_list_relocatable_schemas", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.list_relocatable_schemas" }, { "cIdentifier" : "g_settings_list_schemas", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.list_schemas" }, { @@ -2852,7 +2696,7 @@ { "cIdentifier" : "g_file_load_contents", "detail" : "out-param 'contents': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.load_contents" }, { @@ -2864,19 +2708,19 @@ { "cIdentifier" : "g_file_load_contents_finish", "detail" : "out-param 'contents': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.load_contents_finish" }, { "cIdentifier" : "g_file_load_partial_contents_finish", "detail" : "out-param 'contents': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.load_partial_contents_finish" }, { "cIdentifier" : "g_proxy_resolver_lookup", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.lookup" }, { @@ -2959,8 +2803,8 @@ }, { "cIdentifier" : "g_proxy_resolver_lookup_finish", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.lookup_finish" }, { @@ -3067,8 +2911,8 @@ }, { "cIdentifier" : "g_dbus_connection_new", - "detail" : "parameter 'guid' is a nullable string", - "reason" : "unknownType", + "detail" : "callback param 'callback' deferred to Phase D4.3", + "reason" : "callbackWithoutUserData", "symbol" : "Gio.new" }, { @@ -3079,14 +2923,14 @@ }, { "cIdentifier" : "g_dbus_proxy_new", - "detail" : "parameter 'name' is a nullable string", - "reason" : "unknownType", + "detail" : "callback param 'callback' deferred to Phase D4.3", + "reason" : "callbackWithoutUserData", "symbol" : "Gio.new" }, { "cIdentifier" : "g_simple_proxy_resolver_new", - "detail" : "parameter 'default_proxy' is a nullable string", - "reason" : "unknownType", + "detail" : "parameter 'ignore_hosts': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.new" }, { @@ -3134,7 +2978,7 @@ { "cIdentifier" : "g_application_open", "detail" : "parameter 'files': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.open" }, { @@ -3158,19 +3002,19 @@ { "cIdentifier" : "g_buffered_input_stream_peek", "detail" : "parameter 'buffer': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.peek" }, { "cIdentifier" : "g_buffered_input_stream_peek_buffer", "detail" : "C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.peek_buffer" }, { "cIdentifier" : "g_unix_fd_list_peek_fds", "detail" : "C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.peek_fds" }, { @@ -3188,19 +3032,19 @@ { "cIdentifier" : "g_pollable_stream_read", "detail" : "parameter 'buffer': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.pollable_stream_read" }, { "cIdentifier" : "g_pollable_stream_write", "detail" : "parameter 'buffer': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.pollable_stream_write" }, { "cIdentifier" : "g_pollable_stream_write_all", "detail" : "parameter 'buffer': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.pollable_stream_write_all" }, { @@ -3209,24 +3053,6 @@ "reason" : "deprecatedRemoved", "symbol" : "Gio.power_profile_monitor_dup_default" }, - { - "cIdentifier" : "g_menu_prepend", - "detail" : "parameter 'label' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.prepend" - }, - { - "cIdentifier" : "g_menu_prepend_section", - "detail" : "parameter 'label' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.prepend_section" - }, - { - "cIdentifier" : "g_menu_prepend_submenu", - "detail" : "parameter 'label' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.prepend_submenu" - }, { "cIdentifier" : "g_task_propagate_value", "detail" : "caller-allocates out-param 'value' (no buffer size in GIR)", @@ -3247,8 +3073,8 @@ }, { "cIdentifier" : "g_io_module_query", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.query" }, { @@ -3331,8 +3157,8 @@ }, { "cIdentifier" : "g_data_input_stream_read_line", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.read_line" }, { @@ -3343,8 +3169,8 @@ }, { "cIdentifier" : "g_data_input_stream_read_line_finish", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.read_line_finish" }, { @@ -3398,13 +3224,13 @@ { "cIdentifier" : "g_socket_receive_messages", "detail" : "parameter 'messages': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.receive_messages" }, { "cIdentifier" : "g_datagram_based_receive_messages", "detail" : "parameter 'messages': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.receive_messages" }, { @@ -3440,49 +3266,37 @@ { "cIdentifier" : "g_action_map_remove_action_entries", "detail" : "parameter 'entries': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.remove_action_entries" }, - { - "cIdentifier" : "g_file_replace", - "detail" : "parameter 'etag' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.replace" - }, { "cIdentifier" : "g_file_replace_async", - "detail" : "parameter 'etag' is a nullable string", - "reason" : "unknownType", + "detail" : "callback param 'callback' deferred to Phase D4.3", + "reason" : "callbackWithoutUserData", "symbol" : "Gio.replace_async" }, { "cIdentifier" : "g_file_replace_contents", "detail" : "parameter 'contents': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.replace_contents" }, { "cIdentifier" : "g_file_replace_contents_async", "detail" : "parameter 'contents': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.replace_contents_async" }, { "cIdentifier" : "g_file_replace_contents_bytes_async", - "detail" : "parameter 'etag' is a nullable string", - "reason" : "unknownType", + "detail" : "callback param 'callback' deferred to Phase D4.3", + "reason" : "callbackWithoutUserData", "symbol" : "Gio.replace_contents_bytes_async" }, - { - "cIdentifier" : "g_file_replace_readwrite", - "detail" : "parameter 'etag' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.replace_readwrite" - }, { "cIdentifier" : "g_file_replace_readwrite_async", - "detail" : "parameter 'etag' is a nullable string", - "reason" : "unknownType", + "detail" : "callback param 'callback' deferred to Phase D4.3", + "reason" : "callbackWithoutUserData", "symbol" : "Gio.replace_readwrite_async" }, { @@ -3517,8 +3331,8 @@ }, { "cIdentifier" : "g_resources_enumerate_children", - "detail" : "C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.resources_enumerate_children" }, { @@ -3539,12 +3353,6 @@ "reason" : "callbackWithoutUserData", "symbol" : "Gio.return_pointer" }, - { - "cIdentifier" : "g_application_run", - "detail" : "parameter 'argv': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", - "symbol" : "Gio.run" - }, { "cIdentifier" : "g_task_run_in_thread", "detail" : "callback param 'task_func' deferred to Phase D4.3", @@ -3560,7 +3368,7 @@ { "cIdentifier" : "g_socket_send", "detail" : "parameter 'buffer': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.send" }, { @@ -3572,7 +3380,7 @@ { "cIdentifier" : "g_socket_send_message", "detail" : "parameter 'vectors': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.send_message" }, { @@ -3584,67 +3392,49 @@ { "cIdentifier" : "g_socket_send_message_with_timeout", "detail" : "parameter 'vectors': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.send_message_with_timeout" }, { "cIdentifier" : "g_socket_send_messages", "detail" : "parameter 'messages': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.send_messages" }, { "cIdentifier" : "g_datagram_based_send_messages", "detail" : "parameter 'messages': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.send_messages" }, - { - "cIdentifier" : "g_application_send_notification", - "detail" : "parameter 'id' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.send_notification" - }, { "cIdentifier" : "g_socket_send_to", "detail" : "parameter 'buffer': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.send_to" }, { "cIdentifier" : "g_socket_send_with_blocking", "detail" : "parameter 'buffer': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.send_with_blocking" }, - { - "cIdentifier" : "g_menu_item_set_action_and_target_value", - "detail" : "parameter 'action' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_action_and_target_value" - }, { "cIdentifier" : "g_tls_connection_set_advertised_protocols", - "detail" : "parameter 'protocols': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'protocols': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.set_advertised_protocols" }, { "cIdentifier" : "g_dtls_connection_set_advertised_protocols", - "detail" : "parameter 'protocols': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'protocols': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.set_advertised_protocols" }, - { - "cIdentifier" : "g_application_set_application_id", - "detail" : "parameter 'application_id' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_application_id" - }, { "cIdentifier" : "g_file_info_set_attribute_stringv", - "detail" : "parameter 'attr_value': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'attr_value': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.set_attribute_stringv" }, { @@ -3659,46 +3449,16 @@ "reason" : "outParameter", "symbol" : "Gio.set_attributes_finish" }, - { - "cIdentifier" : "g_notification_set_body", - "detail" : "parameter 'body' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_body" - }, - { - "cIdentifier" : "g_notification_set_category", - "detail" : "parameter 'category' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_category" - }, - { - "cIdentifier" : "g_simple_proxy_resolver_set_default_proxy", - "detail" : "parameter 'default_proxy' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_default_proxy" - }, - { - "cIdentifier" : "g_dbus_message_set_destination", - "detail" : "parameter 'value' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_destination" - }, { "cIdentifier" : "g_file_set_display_name_async", "detail" : "callback param 'callback' deferred to Phase D4.3", "reason" : "callbackWithoutUserData", "symbol" : "Gio.set_display_name_async" }, - { - "cIdentifier" : "g_mount_operation_set_domain", - "detail" : "parameter 'domain' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_domain" - }, { "cIdentifier" : "g_subprocess_launcher_set_environ", - "detail" : "parameter 'env': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'env': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.set_environ" }, { @@ -3709,116 +3469,20 @@ }, { "cIdentifier" : "g_simple_proxy_resolver_set_ignore_hosts", - "detail" : "parameter 'ignore_hosts': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'ignore_hosts': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.set_ignore_hosts" }, - { - "cIdentifier" : "g_dbus_message_set_interface", - "detail" : "parameter 'value' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_interface" - }, - { - "cIdentifier" : "g_menu_item_set_label", - "detail" : "parameter 'label' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_label" - }, - { - "cIdentifier" : "g_dbus_message_set_member", - "detail" : "parameter 'value' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_member" - }, { "cIdentifier" : "g_file_info_set_modification_time", "detail" : "parameter 'mtime': 'GLib.TimeVal' has no GType registration or lifetime functions", "reason" : "plainRecord", "symbol" : "Gio.set_modification_time" }, - { - "cIdentifier" : "g_task_set_name", - "detail" : "parameter 'name' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_name" - }, - { - "cIdentifier" : "g_application_set_option_context_description", - "detail" : "parameter 'description' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_option_context_description" - }, - { - "cIdentifier" : "g_application_set_option_context_parameter_string", - "detail" : "parameter 'parameter_string' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_option_context_parameter_string" - }, - { - "cIdentifier" : "g_application_set_option_context_summary", - "detail" : "parameter 'summary' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_option_context_summary" - }, - { - "cIdentifier" : "g_mount_operation_set_password", - "detail" : "parameter 'password' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_password" - }, - { - "cIdentifier" : "g_dbus_message_set_path", - "detail" : "parameter 'value' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_path" - }, - { - "cIdentifier" : "g_application_set_resource_base_path", - "detail" : "parameter 'resource_path' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_resource_base_path" - }, - { - "cIdentifier" : "g_dbus_message_set_sender", - "detail" : "parameter 'value' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_sender" - }, - { - "cIdentifier" : "g_dbus_message_set_signature", - "detail" : "parameter 'value' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_signature" - }, - { - "cIdentifier" : "g_task_set_static_name", - "detail" : "parameter 'name' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_static_name" - }, - { - "cIdentifier" : "g_subprocess_launcher_set_stderr_file_path", - "detail" : "parameter 'path' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_stderr_file_path" - }, - { - "cIdentifier" : "g_subprocess_launcher_set_stdin_file_path", - "detail" : "parameter 'path' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_stdin_file_path" - }, - { - "cIdentifier" : "g_subprocess_launcher_set_stdout_file_path", - "detail" : "parameter 'path' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_stdout_file_path" - }, { "cIdentifier" : "g_settings_set_strv", - "detail" : "parameter 'value': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'value': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.set_strv" }, { @@ -3833,22 +3497,16 @@ "reason" : "unknownType", "symbol" : "Gio.set_unix_user" }, - { - "cIdentifier" : "g_mount_operation_set_username", - "detail" : "parameter 'username' is a nullable string", - "reason" : "unknownType", - "symbol" : "Gio.set_username" - }, { "cIdentifier" : "g_tls_password_set_value", "detail" : "parameter 'value': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.set_value" }, { "cIdentifier" : "g_tls_password_set_value_full", "detail" : "parameter 'value': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.set_value_full" }, { @@ -3865,8 +3523,8 @@ }, { "cIdentifier" : "g_dbus_connection_signal_subscribe", - "detail" : "parameter 'sender' is a nullable string", - "reason" : "unknownType", + "detail" : "callback param 'callback' deferred to Phase D4.3", + "reason" : "callbackWithoutUserData", "symbol" : "Gio.signal_subscribe" }, { @@ -3901,14 +3559,14 @@ }, { "cIdentifier" : "g_subprocess_launcher_spawnv", - "detail" : "parameter 'argv': C array has no length annotation", - "reason" : "arrayWithoutLength", + "detail" : "parameter 'argv': C array bridging not yet implemented", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.spawnv" }, { "cIdentifier" : "g_list_store_splice", "detail" : "parameter 'additions': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.splice" }, { @@ -3944,7 +3602,7 @@ { "cIdentifier" : "g_unix_fd_list_steal_fds", "detail" : "C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.steal_fds" }, { @@ -3998,7 +3656,7 @@ { "cIdentifier" : "g_dbus_message_to_blob", "detail" : "C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.to_blob" }, { @@ -4058,25 +3716,25 @@ { "cIdentifier" : "g_output_stream_write", "detail" : "parameter 'buffer': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.write" }, { "cIdentifier" : "g_output_stream_write_all", "detail" : "parameter 'buffer': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.write_all" }, { "cIdentifier" : "g_output_stream_write_all_async", "detail" : "parameter 'buffer': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.write_all_async" }, { "cIdentifier" : "g_output_stream_write_async", "detail" : "parameter 'buffer': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.write_async" }, { @@ -4088,43 +3746,43 @@ { "cIdentifier" : "g_pollable_output_stream_write_nonblocking", "detail" : "parameter 'buffer': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.write_nonblocking" }, { "cIdentifier" : "g_output_stream_writev", "detail" : "parameter 'vectors': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.writev" }, { "cIdentifier" : "g_output_stream_writev_all", "detail" : "parameter 'vectors': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.writev_all" }, { "cIdentifier" : "g_output_stream_writev_all_async", "detail" : "parameter 'vectors': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.writev_all_async" }, { "cIdentifier" : "g_output_stream_writev_async", "detail" : "parameter 'vectors': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.writev_async" }, { "cIdentifier" : "g_pollable_output_stream_writev_nonblocking", "detail" : "parameter 'vectors': C array bridging not yet implemented", - "reason" : "arrayWithoutLength", + "reason" : "arrayBridgingUnimplemented", "symbol" : "Gio.writev_nonblocking" } ], "module" : "Gio", "stats" : { - "boundCallables" : 904, + "boundCallables" : 959, "boundCallbacks" : 30, "boundSignals" : 72, "boundTypes" : 393,