Index: icu46/source/common/uset_props.cpp |
=================================================================== |
--- icu46/source/common/uset_props.cpp (revision 0) |
+++ icu46/source/common/uset_props.cpp (revision 0) |
@@ -0,0 +1,136 @@ |
+/* |
+******************************************************************************* |
+* |
+* Copyright (C) 2002-2006, International Business Machines |
+* Corporation and others. All Rights Reserved. |
+* |
+******************************************************************************* |
+* file name: uset_props.cpp |
+* encoding: US-ASCII |
+* tab size: 8 (not used) |
+* indentation:4 |
+* |
+* created on: 2004aug30 |
+* created by: Markus W. Scherer |
+* |
+* C wrappers around UnicodeSet functions that are implemented in |
+* uniset_props.cpp, split off for modularization. |
+*/ |
+ |
+#include "unicode/utypes.h" |
+#include "unicode/uobject.h" |
+#include "unicode/uset.h" |
+#include "unicode/uniset.h" |
+#include "cmemory.h" |
+#include "unicode/ustring.h" |
+#include "unicode/parsepos.h" |
+ |
+U_NAMESPACE_USE |
+ |
+U_CAPI USet* U_EXPORT2 |
+uset_openPattern(const UChar* pattern, int32_t patternLength, |
+ UErrorCode* ec) |
+{ |
+ UnicodeString pat(patternLength==-1, pattern, patternLength); |
+ UnicodeSet* set = new UnicodeSet(pat, *ec); |
+ /* test for NULL */ |
+ if(set == 0) { |
+ *ec = U_MEMORY_ALLOCATION_ERROR; |
+ return 0; |
+ } |
+ |
+ if (U_FAILURE(*ec)) { |
+ delete set; |
+ set = NULL; |
+ } |
+ return (USet*) set; |
+} |
+ |
+U_CAPI USet* U_EXPORT2 |
+uset_openPatternOptions(const UChar* pattern, int32_t patternLength, |
+ uint32_t options, |
+ UErrorCode* ec) |
+{ |
+ UnicodeString pat(patternLength==-1, pattern, patternLength); |
+ UnicodeSet* set = new UnicodeSet(pat, options, NULL, *ec); |
+ /* test for NULL */ |
+ if(set == 0) { |
+ *ec = U_MEMORY_ALLOCATION_ERROR; |
+ return 0; |
+ } |
+ |
+ if (U_FAILURE(*ec)) { |
+ delete set; |
+ set = NULL; |
+ } |
+ return (USet*) set; |
+} |
+ |
+ |
+U_CAPI int32_t U_EXPORT2 |
+uset_applyPattern(USet *set, |
+ const UChar *pattern, int32_t patternLength, |
+ uint32_t options, |
+ UErrorCode *status){ |
+ |
+ // status code needs to be checked since we |
+ // dereference it |
+ if(status == NULL || U_FAILURE(*status)){ |
+ return 0; |
+ } |
+ |
+ // check only the set paramenter |
+ // if pattern is NULL or null terminate |
+ // UnicodeString constructor takes care of it |
+ if(set == NULL){ |
+ *status = U_ILLEGAL_ARGUMENT_ERROR; |
+ return 0; |
+ } |
+ |
+ UnicodeString pat(pattern, patternLength); |
+ |
+ ParsePosition pos; |
+ |
+ ((UnicodeSet*) set)->applyPattern(pat, pos, options, NULL, *status); |
+ |
+ return pos.getIndex(); |
+} |
+ |
+U_CAPI void U_EXPORT2 |
+uset_applyIntPropertyValue(USet* set, |
+ UProperty prop, int32_t value, UErrorCode* ec) { |
+ ((UnicodeSet*) set)->applyIntPropertyValue(prop, value, *ec); |
+} |
+ |
+U_CAPI void U_EXPORT2 |
+uset_applyPropertyAlias(USet* set, |
+ const UChar *prop, int32_t propLength, |
+ const UChar *value, int32_t valueLength, |
+ UErrorCode* ec) { |
+ |
+ UnicodeString p(prop, propLength); |
+ UnicodeString v(value, valueLength); |
+ |
+ ((UnicodeSet*) set)->applyPropertyAlias(p, v, *ec); |
+} |
+ |
+U_CAPI UBool U_EXPORT2 |
+uset_resemblesPattern(const UChar *pattern, int32_t patternLength, |
+ int32_t pos) { |
+ |
+ UnicodeString pat(pattern, patternLength); |
+ |
+ return ((pos+1) < pat.length() && |
+ pat.charAt(pos) == (UChar)91/*[*/) || |
+ UnicodeSet::resemblesPattern(pat, pos); |
+} |
+ |
+U_CAPI int32_t U_EXPORT2 |
+uset_toPattern(const USet* set, |
+ UChar* result, int32_t resultCapacity, |
+ UBool escapeUnprintable, |
+ UErrorCode* ec) { |
+ UnicodeString pat; |
+ ((const UnicodeSet*) set)->toPattern(pat, escapeUnprintable); |
+ return pat.extract(result, resultCapacity, *ec); |
+} |
Property changes on: icu46/source/common/uset_props.cpp |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |