1// © 2016 and later: Unicode, Inc. and others.
2// License & terms of use: http://www.unicode.org/copyright.html
3/*
4*******************************************************************************
5*
6* Copyright (C) 2004-2007, International Business Machines
7* Corporation and others. All Rights Reserved.
8*
9*******************************************************************************
10* file name: uset_imp.h
11* encoding: UTF-8
12* tab size: 8 (not used)
13* indentation:4
14*
15* created on: 2004sep07
16* created by: Markus W. Scherer
17*
18* Internal USet definitions.
19*/
20
21#ifndef __USET_IMP_H__
22#define __USET_IMP_H__
23
24#include "unicode/utypes.h"
25#include "unicode/uset.h"
26
27U_CDECL_BEGIN
28
29typedef void U_CALLCONV
30USetAdd(USet *set, UChar32 c);
31
32typedef void U_CALLCONV
33USetAddRange(USet *set, UChar32 start, UChar32 end);
34
35typedef void U_CALLCONV
36USetAddString(USet *set, const UChar *str, int32_t length);
37
38typedef void U_CALLCONV
39USetRemove(USet *set, UChar32 c);
40
41typedef void U_CALLCONV
42USetRemoveRange(USet *set, UChar32 start, UChar32 end);
43
44/**
45 * Interface for adding items to a USet, to keep low-level code from
46 * statically depending on the USet implementation.
47 * Calls will look like sa->add(sa->set, c);
48 */
49struct USetAdder {
50 USet *set;
51 USetAdd *add;
52 USetAddRange *addRange;
53 USetAddString *addString;
54 USetRemove *remove;
55 USetRemoveRange *removeRange;
56};
57typedef struct USetAdder USetAdder;
58
59U_CDECL_END
60
61#ifdef __cplusplus
62
63namespace {
64
65constexpr int32_t USET_CASE_MASK = USET_CASE_INSENSITIVE | USET_ADD_CASE_MAPPINGS;
66
67} // namespace
68
69#endif // __cplusplus
70
71#endif
72