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 
27 U_CDECL_BEGIN
28 
29 typedef void U_CALLCONV
30 USetAdd(USet *set, UChar32 c);
31 
32 typedef void U_CALLCONV
33 USetAddRange(USet *set, UChar32 start, UChar32 end);
34 
35 typedef void U_CALLCONV
36 USetAddString(USet *set, const UChar *str, int32_t length);
37 
38 typedef void U_CALLCONV
39 USetRemove(USet *set, UChar32 c);
40 
41 typedef void U_CALLCONV
42 USetRemoveRange(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  */
49 struct USetAdder {
50     USet *set;
51     USetAdd *add;
52     USetAddRange *addRange;
53     USetAddString *addString;
54     USetRemove *remove;
55     USetRemoveRange *removeRange;
56 };
57 typedef struct USetAdder USetAdder;
58 
59 U_CDECL_END
60 
61 #endif
62 
63