1// Copyright (C) 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:   US-ASCII
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#endif
62
63