xref: /openbsd-src/lib/libcbor/src/cbor/internal/unicode.h (revision 4dcc46c4d04180142eda526ce521dfb137776d05)
1da0d961cSdjm /*
2d3425be1Sdjm  * Copyright (c) 2014-2020 Pavel Kalvoda <me@pavelkalvoda.com>
3da0d961cSdjm  *
4da0d961cSdjm  * libcbor is free software; you can redistribute it and/or modify
5da0d961cSdjm  * it under the terms of the MIT license. See LICENSE for details.
6da0d961cSdjm  */
7da0d961cSdjm 
8da0d961cSdjm #ifndef LIBCBOR_UNICODE_H
9da0d961cSdjm #define LIBCBOR_UNICODE_H
10da0d961cSdjm 
11da0d961cSdjm #include "cbor/common.h"
12da0d961cSdjm 
13da0d961cSdjm #ifdef __cplusplus
14da0d961cSdjm extern "C" {
15da0d961cSdjm #endif
16da0d961cSdjm 
179e5c2ddcSdjm enum _cbor_unicode_status_error { _CBOR_UNICODE_OK, _CBOR_UNICODE_BADCP };
18da0d961cSdjm 
19da0d961cSdjm /** Signals unicode validation error and possibly its location */
20da0d961cSdjm struct _cbor_unicode_status {
21da0d961cSdjm   enum _cbor_unicode_status_error status;
22*4dcc46c4Sdjm   uint64_t location;
23da0d961cSdjm };
24da0d961cSdjm 
25*4dcc46c4Sdjm _CBOR_NODISCARD
26*4dcc46c4Sdjm uint64_t _cbor_unicode_codepoint_count(cbor_data source, uint64_t source_length,
279e5c2ddcSdjm                                        struct _cbor_unicode_status* status);
28da0d961cSdjm 
29da0d961cSdjm #ifdef __cplusplus
30da0d961cSdjm }
31da0d961cSdjm #endif
32da0d961cSdjm 
33da0d961cSdjm #endif  // LIBCBOR_UNICODE_H
34