1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/*
*******************************************************************************
*
* Copyright (C) 2003-2007, International Business Machines
* Corporation and others. All Rights Reserved.
*
*******************************************************************************
* file name: ucnv_set.c
* encoding: UTF-8
* tab size: 8 (not used)
* indentation:4
*
* created on: 2004sep07
* created by: Markus W. Scherer
*
* Conversion API functions using USet (ucnv_getUnicodeSet())
* moved here from ucnv.c for removing the dependency of other ucnv_
* implementation functions on the USet implementation.
*/
#include <_foundation_unicode/utypes.h>
#include <_foundation_unicode/uset.h>
#include <_foundation_unicode/ucnv.h>
#include "ucnv_bld.h"
#include "uset_imp.h"
#if !UCONFIG_NO_CONVERSION
U_CAPI void U_EXPORT2
ucnv_getUnicodeSet(const UConverter *cnv,
USet *setFillIn,
UConverterUnicodeSet whichSet,
UErrorCode *pErrorCode) {
/* argument checking */
if(pErrorCode==nullptr || U_FAILURE(*pErrorCode)) {
return;
}
if(cnv==nullptr || setFillIn==nullptr || whichSet<UCNV_ROUNDTRIP_SET || UCNV_SET_COUNT<=whichSet) {
*pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
return;
}
/* does this converter support this function? */
if(cnv->sharedData->impl->getUnicodeSet==nullptr) {
*pErrorCode=U_UNSUPPORTED_ERROR;
return;
}
{
USetAdder sa={
nullptr,
uset_add,
uset_addRange,
uset_addString,
uset_remove,
uset_removeRange
};
sa.set=setFillIn;
/* empty the set */
uset_clear(setFillIn);
/* call the converter to add the code points it supports */
cnv->sharedData->impl->getUnicodeSet(cnv, &sa, whichSet, pErrorCode);
}
}
#endif
|