1b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru/*
2b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru******************************************************************************
3b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru*
483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius*   Copyright (C) 2008-2012, International Business Machines
5b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru*   Corporation and others.  All Rights Reserved.
6b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru*
7b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru******************************************************************************
8b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru*   file name:  uspoof_buildwsconf.h
9b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru*   encoding:   US-ASCII
10b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru*   tab size:   8 (not used)
11b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru*   indentation:4
12b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru*
13b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru*   created on: 2009Jan19
14b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru*   created by: Andy Heninger
15b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru*
16b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru*   Internal classes and functions
17b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru*   for compiling whole script confusable data into its binary (runtime) form.
18b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru*/
19b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
20b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#ifndef __USPOOF_BUILDWSCONF_H__
21b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#define __USPOOF_BUILDWSCONF_H__
22b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
23b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#include "unicode/utypes.h"
24b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
25b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#if !UCONFIG_NO_NORMALIZATION
26b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
27b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#if !UCONFIG_NO_REGULAR_EXPRESSIONS
28b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
29b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#include "uspoof_impl.h"
30b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#include "utrie2.h"
31b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
3250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
3350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_NAMESPACE_BEGIN
3450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
35b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru//
36b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru// class BuilderScriptSet.   Represents the set of scripts (Script Codes)
37b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru//             containing characters that are confusable with one specific
38b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru//             code point.
39b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru//
4050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
41b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruclass BuilderScriptSet: public UMemory {
42b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru  public:
43b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    UChar32      codePoint;       // The source code point.
44b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    UTrie2      *trie;            // Any-case or Lower-case Trie.
45b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                                  //   These Trie tables are the final result of the
46b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                                  //   build.  This flag indicates which of the two
47b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                                  //   this set of data is for.
48b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    ScriptSet   *sset;            // The set of scripts itself.
49b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
50b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                                  // Vectors of all B
51b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    uint32_t     index;           // Index of this set in the Build Time vector
52b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                                  //   of script sets.
53b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    uint32_t     rindex;          // Index of this set in the final (runtime)
54b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                                  //   array of sets.
55b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    UBool        scriptSetOwned;  // True if this BuilderScriptSet owns (should delete)
56b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                                  //   its underlying sset.
57b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
58b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    BuilderScriptSet();
59b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru    ~BuilderScriptSet();
60b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru};
61b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
6250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
63b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruvoid buildWSConfusableData(SpoofImpl *spImpl, const char * confusablesWS,
64b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru          int32_t confusablesWSLen, UParseError *pe, UErrorCode &status);
65b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
6683a171d1a62abf406f7f44ae671823d5ec20db7dCraig CorneliusU_NAMESPACE_END
67b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
68b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#endif // !UCONFIG_NO_REGULAR_EXPRESSIONS
69b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#endif // !UCONFIG_NO_NORMALIZATION
70b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#endif
71