Function

uni_caseconv

Case convert a string.

Since v1.0
unistat uni_caseconv(
unicaseconv casing, const void *src, unisize src_len, uniattr src_attr, void *dst, unisize *dst_len, uniattr dst_attr)

Parameters 🔗

casing in

Casing operation to apply to src.

src in

Text to case convert.

src_len in

Number of code units in src or -1 if src is null-terminated.

src_attr in

Attributes of src.

dst out

Buffer to write the case converted result to (can be null).

dst_len inout

Capacity of dst in code units on input; number of code units in src when case converted on output.

dst_attr in

Attributes of dst.

Return Value 🔗

UNI_OK

If src was case converted successfully.

UNI_BAD_OPERATION

If src is null, if dst_len is null, or if dst is null and dst_len is non-zero.

UNI_BAD_ENCODING

If src is not well-formed (checks are omitted if src_attr has UNI_TRUST).

UNI_NO_SPACE

If dst was not large enough to accommodate the case converted text.

UNI_FEATURE_DISABLED

If the library was built without support for case conversion.

Discussion 🔗

This function case converts src to casing form casing and writes the result to dst. The capacity of dst is specified by dst_len.

If dst is not null, then the implementation writes to dst_len the total number of code units written to dst. If the capacity of dst is insufficient, then UNI_NO_SPACE is returned.

If dst is null and dst_len is zero, then the implementation writes to dst_len the number of code units in the fully case converted text and returns UNI_OK. Call the function this way to first compute the total length of the destination buffer before calling it again with a sufficiently sized buffer.

Examples 🔗

This example case converts a string to uppercase.

#include <unicorn.h>
#include <stdio.h>

int main(void)
{
    const char *in = u8"hello, 世界";
    char out[32];
    unisize outlen = sizeof(out);

    if (uni_caseconv(UNI_UPPER, in, -1, UNI_UTF8, out, &outlen, UNI_UTF8) != UNI_OK)
    {
        // something went wrong
        return 1;
    }

    printf("%.*s", outlen, out); // prints "HELLO, 世界"
    return 0;
}