izackp / icu4c-swift

Low-level ICU C APIs for Swift

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Low-level ICU C APIs for Swift

⚠️ tl;dr: This package contains low-level C APIs. You probably want icu-swift instead.

This package defines a module named ICU4C that exposes the C API of the ICU library to Swift.

The APIs are exposed without renaming (that is, they do not contain the library version number as a suffix); see the ICU documentation on architectural design for more information about this.

This package exposes only the raw C API; because of Swift's stricter type conversions compared to C, it's fairly verbose to use (see the example below). If you're reading this, you probably want the companion icu-swift package instead, which imports ICU4C but wraps it in a much more convenient Swift API to use ICU functionality.

Usage

If you really want to use the bare C API:

  1. Add this package as a dependency in your Package.swift file.

    let package = Package(
      ...,
      dependencies: [
        .Package(url: "https://github.com/allevato/icu4c-swift.git", majorVersion: 1, minor: 0),
      ]
      ...,
    )
  2. Import ICU4C and call the C functions.

    import ICU4C
    
    let x: UnicodeScalar = "x"
    let category = u_getIntPropertyValue(Int32(bitPattern: x.value),
                                         UCHAR_GENERAL_CATEGORY)
    print(UInt32(bitPattern: category) == U_LOWERCASE_LETTER.rawValue)  // "true"

About

Low-level ICU C APIs for Swift

License:Apache License 2.0


Languages

Language:C++ 57.1%Language:C 42.9%Language:Swift 0.0%