Mercurial > projects > dwt-addons
diff dwtx/dwtxhelper/mangoicu/USet.d @ 92:f05207c07a98
changed filetype to unix
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Mon, 07 Jul 2008 15:54:03 +0200 |
parents | 11e8159caf7a |
children |
line wrap: on
line diff
--- a/dwtx/dwtxhelper/mangoicu/USet.d Mon Jul 07 15:53:07 2008 +0200 +++ b/dwtx/dwtxhelper/mangoicu/USet.d Mon Jul 07 15:54:03 2008 +0200 @@ -1,472 +1,472 @@ -/******************************************************************************* - - @file USet.d - - Copyright (c) 2004 Kris Bell - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for damages - of any kind arising from the use of this software. - - Permission is hereby granted to anyone to use this software for any - purpose, including commercial applications, and to alter it and/or - redistribute it freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment within documentation of - said product would be appreciated but is not required. - - 2. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - - 3. This notice may not be removed or altered from any distribution - of the source. - - 4. Derivative works are permitted, but they must carry this notice - in full and credit the original source. - - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - - @version Initial version, November 2004 - @author Kris - - Note that this package and documentation is built around the ICU - project (http://oss.software.ibm.com/icu/). Below is the license - statement as specified by that software: - - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - - ICU License - ICU 1.8.1 and later - - COPYRIGHT AND PERMISSION NOTICE - - Copyright (c) 1995-2003 International Business Machines Corporation and - others. - - All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, and/or sell copies of the Software, and to permit persons - to whom the Software is furnished to do so, provided that the above - copyright notice(s) and this permission notice appear in all copies of - the Software and that both the above copyright notice(s) and this - permission notice appear in supporting documentation. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT - OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL - INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING - FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, - NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION - WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - Except as contained in this notice, the name of a copyright holder - shall not be used in advertising or otherwise to promote the sale, use - or other dealings in this Software without prior written authorization - of the copyright holder. - - ---------------------------------------------------------------------- - - All trademarks and registered trademarks mentioned herein are the - property of their respective owners. - -*******************************************************************************/ - -module dwtx.dwtxhelper.mangoicu.USet; - -private import dwtx.dwtxhelper.mangoicu.ICU, - dwtx.dwtxhelper.mangoicu.UString; - -/******************************************************************************* - - A mutable set of Unicode characters and multicharacter strings. - - Objects of this class represent character classes used in regular - expressions. A character specifies a subset of Unicode code points. - Legal code points are U+0000 to U+10FFFF, inclusive. - - UnicodeSet supports two APIs. The first is the operand API that - allows the caller to modify the value of a UnicodeSet object. It - conforms to Java 2's java.util.Set interface, although UnicodeSet - does not actually implement that interface. All methods of Set are - supported, with the modification that they take a character range - or single character instead of an Object, and they take a UnicodeSet - instead of a Collection. The operand API may be thought of in terms - of boolean logic: a boolean OR is implemented by add, a boolean AND - is implemented by retain, a boolean XOR is implemented by complement - taking an argument, and a boolean NOT is implemented by complement - with no argument. In terms of traditional set theory function names, - add is a union, retain is an intersection, remove is an asymmetric - difference, and complement with no argument is a set complement with - respect to the superset range MIN_VALUE-MAX_VALUE - - The second API is the applyPattern()/toPattern() API from the - java.text.Format-derived classes. Unlike the methods that add - characters, add categories, and control the logic of the set, - the method applyPattern() sets all attributes of a UnicodeSet - at once, based on a string pattern. - - See <A HREF="http://oss.software.ibm.com/icu/apiref/uset_8h.html"> - this page</A> for full details. - -*******************************************************************************/ - -class USet : ICU -{ - package Handle handle; - - enum Options - { - None = 0, - IgnoreSpace = 1, - CaseInsensitive = 2, - } - - - /*********************************************************************** - - Creates a USet object that contains the range of characters - start..end, inclusive - - ***********************************************************************/ - - this (wchar start, wchar end) - { - handle = uset_open (start, end); - } - - /*********************************************************************** - - Creates a set from the given pattern. See the UnicodeSet - class description for the syntax of the pattern language - - ***********************************************************************/ - - this (UStringView pattern, Options o = Options.None) - { - UErrorCode e; - - handle = uset_openPatternOptions (pattern.get.ptr, pattern.len, o, e); - testError (e, "failed to open pattern-based charset"); - } - - /*********************************************************************** - - Internal constructor invoked via UCollator - - ***********************************************************************/ - - package this (Handle handle) - { - this.handle = handle; - } - - /*********************************************************************** - - Disposes of the storage used by a USet object - - ***********************************************************************/ - - ~this () - { - uset_close (handle); - } - - /*********************************************************************** - - Modifies the set to represent the set specified by the - given pattern. See the UnicodeSet class description for - the syntax of the pattern language. See also the User - Guide chapter about UnicodeSet. Empties the set passed - before applying the pattern. - - ***********************************************************************/ - - void applyPattern (UStringView pattern, Options o = Options.None) - { - UErrorCode e; - - uset_applyPattern (handle, pattern.get.ptr, pattern.len, o, e); - testError (e, "failed to apply pattern"); - } - - /*********************************************************************** - - Returns a string representation of this set. If the result - of calling this function is passed to a uset_openPattern(), - it will produce another set that is equal to this one. - - ***********************************************************************/ - - void toPattern (UString dst, bool escape) - { - uint fmt (wchar* p, uint len, inout UErrorCode e) - { - return uset_toPattern (handle, p, len, escape, e); - } - - dst.format (&fmt, "failed to convert charset to a pattern"); - } - - /*********************************************************************** - - Adds the given character to the given USet. After this call, - contains (c) will return true. - - ***********************************************************************/ - - void add (wchar c) - { - uset_add (handle, c); - } - - /*********************************************************************** - - Adds all of the elements in the specified set to this set - if they're not already present. This operation effectively - modifies this set so that its value is the union of the two - sets. The behavior of this operation is unspecified if the - specified collection is modified while the operation is in - progress. - - ***********************************************************************/ - - void addSet (USet other) - { - uset_addAll (handle, other.handle); - } - - /*********************************************************************** - - Adds the given range of characters to the given USet. After - this call, contains(start, end) will return true - - ***********************************************************************/ - - void addRange (wchar start, wchar end) - { - uset_addRange (handle, start, end); - } - - /*********************************************************************** - - Adds the given string to the given USet. After this call, - containsString (str, strLen) will return true - - ***********************************************************************/ - - void addString (UStringView t) - { - uset_addString (handle, t.get.ptr, t.len); - } - - /*********************************************************************** - - Removes the given character from this USet. After the - call, contains(c) will return false - - ***********************************************************************/ - - void remove (wchar c) - { - uset_remove (handle, c); - } - - /*********************************************************************** - - Removes the given range of characters from this USet. - After the call, contains(start, end) will return false - - ***********************************************************************/ - - void removeRange (wchar start, wchar end) - { - uset_removeRange (handle, start, end); - } - - /*********************************************************************** - - Removes the given string from this USet. After the call, - containsString (str, strLen) will return false - - ***********************************************************************/ - - void removeString (UStringView t) - { - uset_removeString (handle, t.get.ptr, t.len); - } - - /*********************************************************************** - - Inverts this set. This operation modifies this set so - that its value is its complement. This operation does - not affect the multicharacter strings, if any - - ***********************************************************************/ - - void complement () - { - uset_complement (handle); - } - - /*********************************************************************** - - Removes all of the elements from this set. This set will - be empty after this call returns. - - ***********************************************************************/ - - void clear () - { - uset_clear (handle); - } - - /*********************************************************************** - - Returns true if this USet contains no characters and no - strings - - ***********************************************************************/ - - bool isEmpty () - { - return uset_isEmpty (handle) != 0; - } - - /*********************************************************************** - - Returns true if this USet contains the given character - - ***********************************************************************/ - - bool contains (wchar c) - { - return uset_contains (handle, c) != 0; - } - - /*********************************************************************** - - Returns true if this USet contains all characters c where - start <= c && c <= end - - ***********************************************************************/ - - bool containsRange (wchar start, wchar end) - { - return uset_containsRange (handle, start, end) != 0; - } - - /*********************************************************************** - - Returns true if this USet contains the given string - - ***********************************************************************/ - - bool containsString (UStringView t) - { - return uset_containsString (handle, t.get.ptr, t.len) != 0; - } - - /*********************************************************************** - - ***********************************************************************/ - - uint size () - { - return uset_size (handle); - } - - - /*********************************************************************** - - Bind the ICU functions from a shared library. This is - complicated by the issues regarding D and DLLs on the - Windows platform - - ***********************************************************************/ - - private static void* library; - - /*********************************************************************** - - ***********************************************************************/ - - private static extern (C) - { - Handle function (wchar start, wchar end) uset_open; - void function (Handle) uset_close; - Handle function (wchar* pattern, uint patternLength, uint options, inout UErrorCode e) uset_openPatternOptions; - uint function (Handle, wchar* pattern, uint patternLength, uint options, inout UErrorCode e) uset_applyPattern; - uint function (Handle, wchar* result, uint resultCapacity, byte escapeUnprintable, inout UErrorCode e) uset_toPattern; - void function (Handle, wchar c) uset_add; - void function (Handle, Handle additionalSet) uset_addAll; - void function (Handle, wchar start, wchar end) uset_addRange; - void function (Handle, wchar* str, uint strLen) uset_addString; - void function (Handle, wchar c) uset_remove; - void function (Handle, wchar start, wchar end) uset_removeRange; - void function (Handle, wchar* str, uint strLen) uset_removeString; - void function (Handle) uset_complement; - void function (Handle) uset_clear; - byte function (Handle) uset_isEmpty; - byte function (Handle, wchar c) uset_contains; - byte function (Handle, wchar start, wchar end) uset_containsRange; - byte function (Handle, wchar* str, uint strLen) uset_containsString; - uint function (Handle) uset_size; - } - - /*********************************************************************** - - ***********************************************************************/ - - static FunctionLoader.Bind[] targets = - [ - {cast(void**) &uset_open, "uset_open"}, - {cast(void**) &uset_close, "uset_close"}, - {cast(void**) &uset_openPatternOptions, "uset_openPatternOptions"}, - {cast(void**) &uset_applyPattern, "uset_applyPattern"}, - {cast(void**) &uset_toPattern, "uset_toPattern"}, - {cast(void**) &uset_add, "uset_add"}, - {cast(void**) &uset_addAll, "uset_addAll"}, - {cast(void**) &uset_addRange, "uset_addRange"}, - {cast(void**) &uset_addString, "uset_addString"}, - {cast(void**) &uset_remove, "uset_remove"}, - {cast(void**) &uset_removeRange, "uset_removeRange"}, - {cast(void**) &uset_removeString, "uset_removeString"}, - {cast(void**) &uset_complement, "uset_complement"}, - {cast(void**) &uset_clear, "uset_clear"}, - {cast(void**) &uset_isEmpty, "uset_isEmpty"}, - {cast(void**) &uset_contains, "uset_contains"}, - {cast(void**) &uset_containsRange, "uset_containsRange"}, - {cast(void**) &uset_containsString, "uset_containsString"}, - {cast(void**) &uset_size, "uset_size"}, - ]; - - /*********************************************************************** - - ***********************************************************************/ - - static this () - { - library = FunctionLoader.bind (icuuc, targets); - } - - /*********************************************************************** - - ***********************************************************************/ - - static ~this () - { - FunctionLoader.unbind (library); - } -} - +/******************************************************************************* + + @file USet.d + + Copyright (c) 2004 Kris Bell + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for damages + of any kind arising from the use of this software. + + Permission is hereby granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and/or + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment within documentation of + said product would be appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any distribution + of the source. + + 4. Derivative works are permitted, but they must carry this notice + in full and credit the original source. + + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + @version Initial version, November 2004 + @author Kris + + Note that this package and documentation is built around the ICU + project (http://oss.software.ibm.com/icu/). Below is the license + statement as specified by that software: + + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + ICU License - ICU 1.8.1 and later + + COPYRIGHT AND PERMISSION NOTICE + + Copyright (c) 1995-2003 International Business Machines Corporation and + others. + + All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, and/or sell copies of the Software, and to permit persons + to whom the Software is furnished to do so, provided that the above + copyright notice(s) and this permission notice appear in all copies of + the Software and that both the above copyright notice(s) and this + permission notice appear in supporting documentation. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT + OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL + INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING + FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, + NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION + WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + Except as contained in this notice, the name of a copyright holder + shall not be used in advertising or otherwise to promote the sale, use + or other dealings in this Software without prior written authorization + of the copyright holder. + + ---------------------------------------------------------------------- + + All trademarks and registered trademarks mentioned herein are the + property of their respective owners. + +*******************************************************************************/ + +module dwtx.dwtxhelper.mangoicu.USet; + +private import dwtx.dwtxhelper.mangoicu.ICU, + dwtx.dwtxhelper.mangoicu.UString; + +/******************************************************************************* + + A mutable set of Unicode characters and multicharacter strings. + + Objects of this class represent character classes used in regular + expressions. A character specifies a subset of Unicode code points. + Legal code points are U+0000 to U+10FFFF, inclusive. + + UnicodeSet supports two APIs. The first is the operand API that + allows the caller to modify the value of a UnicodeSet object. It + conforms to Java 2's java.util.Set interface, although UnicodeSet + does not actually implement that interface. All methods of Set are + supported, with the modification that they take a character range + or single character instead of an Object, and they take a UnicodeSet + instead of a Collection. The operand API may be thought of in terms + of boolean logic: a boolean OR is implemented by add, a boolean AND + is implemented by retain, a boolean XOR is implemented by complement + taking an argument, and a boolean NOT is implemented by complement + with no argument. In terms of traditional set theory function names, + add is a union, retain is an intersection, remove is an asymmetric + difference, and complement with no argument is a set complement with + respect to the superset range MIN_VALUE-MAX_VALUE + + The second API is the applyPattern()/toPattern() API from the + java.text.Format-derived classes. Unlike the methods that add + characters, add categories, and control the logic of the set, + the method applyPattern() sets all attributes of a UnicodeSet + at once, based on a string pattern. + + See <A HREF="http://oss.software.ibm.com/icu/apiref/uset_8h.html"> + this page</A> for full details. + +*******************************************************************************/ + +class USet : ICU +{ + package Handle handle; + + enum Options + { + None = 0, + IgnoreSpace = 1, + CaseInsensitive = 2, + } + + + /*********************************************************************** + + Creates a USet object that contains the range of characters + start..end, inclusive + + ***********************************************************************/ + + this (wchar start, wchar end) + { + handle = uset_open (start, end); + } + + /*********************************************************************** + + Creates a set from the given pattern. See the UnicodeSet + class description for the syntax of the pattern language + + ***********************************************************************/ + + this (UStringView pattern, Options o = Options.None) + { + UErrorCode e; + + handle = uset_openPatternOptions (pattern.get.ptr, pattern.len, o, e); + testError (e, "failed to open pattern-based charset"); + } + + /*********************************************************************** + + Internal constructor invoked via UCollator + + ***********************************************************************/ + + package this (Handle handle) + { + this.handle = handle; + } + + /*********************************************************************** + + Disposes of the storage used by a USet object + + ***********************************************************************/ + + ~this () + { + uset_close (handle); + } + + /*********************************************************************** + + Modifies the set to represent the set specified by the + given pattern. See the UnicodeSet class description for + the syntax of the pattern language. See also the User + Guide chapter about UnicodeSet. Empties the set passed + before applying the pattern. + + ***********************************************************************/ + + void applyPattern (UStringView pattern, Options o = Options.None) + { + UErrorCode e; + + uset_applyPattern (handle, pattern.get.ptr, pattern.len, o, e); + testError (e, "failed to apply pattern"); + } + + /*********************************************************************** + + Returns a string representation of this set. If the result + of calling this function is passed to a uset_openPattern(), + it will produce another set that is equal to this one. + + ***********************************************************************/ + + void toPattern (UString dst, bool escape) + { + uint fmt (wchar* p, uint len, inout UErrorCode e) + { + return uset_toPattern (handle, p, len, escape, e); + } + + dst.format (&fmt, "failed to convert charset to a pattern"); + } + + /*********************************************************************** + + Adds the given character to the given USet. After this call, + contains (c) will return true. + + ***********************************************************************/ + + void add (wchar c) + { + uset_add (handle, c); + } + + /*********************************************************************** + + Adds all of the elements in the specified set to this set + if they're not already present. This operation effectively + modifies this set so that its value is the union of the two + sets. The behavior of this operation is unspecified if the + specified collection is modified while the operation is in + progress. + + ***********************************************************************/ + + void addSet (USet other) + { + uset_addAll (handle, other.handle); + } + + /*********************************************************************** + + Adds the given range of characters to the given USet. After + this call, contains(start, end) will return true + + ***********************************************************************/ + + void addRange (wchar start, wchar end) + { + uset_addRange (handle, start, end); + } + + /*********************************************************************** + + Adds the given string to the given USet. After this call, + containsString (str, strLen) will return true + + ***********************************************************************/ + + void addString (UStringView t) + { + uset_addString (handle, t.get.ptr, t.len); + } + + /*********************************************************************** + + Removes the given character from this USet. After the + call, contains(c) will return false + + ***********************************************************************/ + + void remove (wchar c) + { + uset_remove (handle, c); + } + + /*********************************************************************** + + Removes the given range of characters from this USet. + After the call, contains(start, end) will return false + + ***********************************************************************/ + + void removeRange (wchar start, wchar end) + { + uset_removeRange (handle, start, end); + } + + /*********************************************************************** + + Removes the given string from this USet. After the call, + containsString (str, strLen) will return false + + ***********************************************************************/ + + void removeString (UStringView t) + { + uset_removeString (handle, t.get.ptr, t.len); + } + + /*********************************************************************** + + Inverts this set. This operation modifies this set so + that its value is its complement. This operation does + not affect the multicharacter strings, if any + + ***********************************************************************/ + + void complement () + { + uset_complement (handle); + } + + /*********************************************************************** + + Removes all of the elements from this set. This set will + be empty after this call returns. + + ***********************************************************************/ + + void clear () + { + uset_clear (handle); + } + + /*********************************************************************** + + Returns true if this USet contains no characters and no + strings + + ***********************************************************************/ + + bool isEmpty () + { + return uset_isEmpty (handle) != 0; + } + + /*********************************************************************** + + Returns true if this USet contains the given character + + ***********************************************************************/ + + bool contains (wchar c) + { + return uset_contains (handle, c) != 0; + } + + /*********************************************************************** + + Returns true if this USet contains all characters c where + start <= c && c <= end + + ***********************************************************************/ + + bool containsRange (wchar start, wchar end) + { + return uset_containsRange (handle, start, end) != 0; + } + + /*********************************************************************** + + Returns true if this USet contains the given string + + ***********************************************************************/ + + bool containsString (UStringView t) + { + return uset_containsString (handle, t.get.ptr, t.len) != 0; + } + + /*********************************************************************** + + ***********************************************************************/ + + uint size () + { + return uset_size (handle); + } + + + /*********************************************************************** + + Bind the ICU functions from a shared library. This is + complicated by the issues regarding D and DLLs on the + Windows platform + + ***********************************************************************/ + + private static void* library; + + /*********************************************************************** + + ***********************************************************************/ + + private static extern (C) + { + Handle function (wchar start, wchar end) uset_open; + void function (Handle) uset_close; + Handle function (wchar* pattern, uint patternLength, uint options, inout UErrorCode e) uset_openPatternOptions; + uint function (Handle, wchar* pattern, uint patternLength, uint options, inout UErrorCode e) uset_applyPattern; + uint function (Handle, wchar* result, uint resultCapacity, byte escapeUnprintable, inout UErrorCode e) uset_toPattern; + void function (Handle, wchar c) uset_add; + void function (Handle, Handle additionalSet) uset_addAll; + void function (Handle, wchar start, wchar end) uset_addRange; + void function (Handle, wchar* str, uint strLen) uset_addString; + void function (Handle, wchar c) uset_remove; + void function (Handle, wchar start, wchar end) uset_removeRange; + void function (Handle, wchar* str, uint strLen) uset_removeString; + void function (Handle) uset_complement; + void function (Handle) uset_clear; + byte function (Handle) uset_isEmpty; + byte function (Handle, wchar c) uset_contains; + byte function (Handle, wchar start, wchar end) uset_containsRange; + byte function (Handle, wchar* str, uint strLen) uset_containsString; + uint function (Handle) uset_size; + } + + /*********************************************************************** + + ***********************************************************************/ + + static FunctionLoader.Bind[] targets = + [ + {cast(void**) &uset_open, "uset_open"}, + {cast(void**) &uset_close, "uset_close"}, + {cast(void**) &uset_openPatternOptions, "uset_openPatternOptions"}, + {cast(void**) &uset_applyPattern, "uset_applyPattern"}, + {cast(void**) &uset_toPattern, "uset_toPattern"}, + {cast(void**) &uset_add, "uset_add"}, + {cast(void**) &uset_addAll, "uset_addAll"}, + {cast(void**) &uset_addRange, "uset_addRange"}, + {cast(void**) &uset_addString, "uset_addString"}, + {cast(void**) &uset_remove, "uset_remove"}, + {cast(void**) &uset_removeRange, "uset_removeRange"}, + {cast(void**) &uset_removeString, "uset_removeString"}, + {cast(void**) &uset_complement, "uset_complement"}, + {cast(void**) &uset_clear, "uset_clear"}, + {cast(void**) &uset_isEmpty, "uset_isEmpty"}, + {cast(void**) &uset_contains, "uset_contains"}, + {cast(void**) &uset_containsRange, "uset_containsRange"}, + {cast(void**) &uset_containsString, "uset_containsString"}, + {cast(void**) &uset_size, "uset_size"}, + ]; + + /*********************************************************************** + + ***********************************************************************/ + + static this () + { + library = FunctionLoader.bind (icuuc, targets); + } + + /*********************************************************************** + + ***********************************************************************/ + + static ~this () + { + FunctionLoader.unbind (library); + } +} +