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
| Name | Description |
|---|---|
| body | A closure that receives a function for creating ARDK strings |