Skip to main content

STRUCT

ArdkUtils

public struct ArdkUtils

Utility functions for ARDK string management and memory handling.

ArdkUtils provides helper methods for safely managing C string conversions and memory allocation when working with the ARDK C API.

Overview​

The utilities in this struct help manage the complexity of converting between Swift strings and C strings while ensuring proper memory cleanup and avoiding memory leaks.

Methods​

withArdkStrings(_:)​

public static func withArdkStrings\<Result\>(
_ body: ((String?) -> ARDK_String) throws -> Result
) rethrows -> Result

Safely manages multiple C string conversions with automatic memory cleanup.

This function provides a convenient way to work with multiple C strings in a single scope while ensuring proper memory management. It automatically allocates memory for C strings and cleans up all allocated memory when the scope exits.

Use this function when you need to have multiple C strings in a single scope and the number of nested scopes gets too messy. Otherwise, prefer Swift's built-in String.withCString for simpler cases.

  • Parameter body: A closure that receives a function for creating ARDK strings
  • Returns: The result of executing the body closure
  • Throws: Any error thrown by the body closure

Example​

let result = ArdkUtils.withArdkStrings { createString in
let string1 = createString("Hello")
let string2 = createString("World")
let string3 = createString(nil) // Creates empty string

// Use the ARDK strings with C API calls
return someCFunction(string1, string2, string3)
}
// Memory is automatically cleaned up here

Memory Management​

The function automatically:

  • Allocates memory for each string using strdup
  • Tracks all allocated pointers
  • Frees all memory when the scope exits (even if an error is thrown)
  • Handles nil and empty strings gracefully

Parameters​

NameDescription
bodyA closure that receives a function for creating ARDK strings