您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ u_strncpy函数代码示例

51自学网 2021-06-03 09:03:27
  C++
这篇教程C++ u_strncpy函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中u_strncpy函数的典型用法代码示例。如果您正苦于以下问题:C++ u_strncpy函数的具体用法?C++ u_strncpy怎么用?C++ u_strncpy使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了u_strncpy函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: range_add_content

/** * Add some content to a removed range * @param r the range in question * @param s the content * @param len its length */void range_add_content( range *r, const UChar *s, int len ){    if ( r->content_len > 0 )    {        UChar *new_content = calloc( r->content_len+len+1, sizeof(UChar) );        if ( new_content == NULL )            error( "range: failed to reallocate content/n");        else        {            u_strncpy( new_content, r->content, r->content_len );            u_strncpy( &new_content[r->content_len], s, len );            new_content[r->content_len+len] = 0;            free( r->content );            r->content = new_content;            r->content_len += len;            //printf("content now %s/n",r->content );        }    }    else    {        r->content = calloc( len+1, sizeof(UChar) );        if ( r->content == NULL )            error( "range: failed to allocate new content/n");        u_strncpy( r->content, s, len );        r->content[len] = 0;        r->content_len = len;        // printf("created content length %d/n",len);    }}
开发者ID:Ecdosis,项目名称:standoff,代码行数:35,


示例2: Xcopy

/* UReplaceableCallbacks callback */static void Xcopy(UReplaceable* rep, int32_t start, int32_t limit, int32_t dest) {    XReplaceable* x = (XReplaceable*)rep;    int32_t newLen = Xlength(rep) + limit - start;    UChar* newText = (UChar*) malloc(sizeof(UChar) * (newLen+1));    u_strncpy(newText, x->text, dest);    u_strncpy(newText + dest, x->text + start, limit - start);    u_strcpy(newText + dest + limit - start, x->text + dest);    free(x->text);    x->text = newText;}
开发者ID:Strongc,项目名称:WinObjC,代码行数:11,


示例3: Xreplace

/* UReplaceableCallbacks callback */static void Xreplace(UReplaceable* rep, int32_t start, int32_t limit,                     const UChar* text, int32_t textLength) {    XReplaceable* x = (XReplaceable*)rep;    int32_t newLen = Xlength(rep) + limit - start + textLength;    UChar* newText = (UChar*) malloc(sizeof(UChar) * (newLen+1));    u_strncpy(newText, x->text, start);    u_strncpy(newText + start, text, textLength);    u_strcpy(newText + start + textLength, x->text + limit);    free(x->text);    x->text = newText;}
开发者ID:Strongc,项目名称:WinObjC,代码行数:12,


示例4: NativeConverter_setCallbackDecode

static void NativeConverter_setCallbackDecode(JNIEnv* env, jclass, jlong address,        jint onMalformedInput, jint onUnmappableInput, jstring javaReplacement) {    UConverter* cnv = toUConverter(address);    if (cnv == NULL) {        maybeThrowIcuException(env, "toConverter", U_ILLEGAL_ARGUMENT_ERROR);        return;    }    UConverterToUCallback oldCallback;    const void* oldCallbackContext;    ucnv_getToUCallBack(cnv, &oldCallback, &oldCallbackContext);    DecoderCallbackContext* callbackContext = const_cast<DecoderCallbackContext*>(            reinterpret_cast<const DecoderCallbackContext*>(oldCallbackContext));    if (callbackContext == NULL) {        callbackContext = new DecoderCallbackContext;    }    callbackContext->onMalformedInput = getToUCallback(onMalformedInput);    callbackContext->onUnmappableInput = getToUCallback(onUnmappableInput);    ScopedStringChars replacement(env, javaReplacement);    if (replacement.get() == NULL) {        maybeThrowIcuException(env, "replacement", U_ILLEGAL_ARGUMENT_ERROR);        return;    }    u_strncpy(callbackContext->replacementChars, replacement.get(), replacement.size());    callbackContext->replacementCharCount = replacement.size();    UErrorCode errorCode = U_ZERO_ERROR;    ucnv_setToUCallBack(cnv, CHARSET_DECODER_CALLBACK, callbackContext, NULL, NULL, &errorCode);    maybeThrowIcuException(env, "ucnv_setToUCallBack", errorCode);}
开发者ID:AOSP-JF,项目名称:platform_libcore,代码行数:33,


示例5: updateSrc

/** * Applies a new value to the text that serves as input at the current * processing step. This value is identical to the original one when we begin * the processing, but usually changes as the transformation progresses. *  * @param pTransform A pointer to the <code>UBiDiTransform</code> structure. * @param newSrc A pointer whose value is to be used as input text. * @param newLength A length of the new text in <code>UChar</code>s. * @param newSize A new source capacity in <code>UChar</code>s. * @param pErrorCode Pointer to the error code value. */static voidupdateSrc(UBiDiTransform *pTransform, const UChar *newSrc, uint32_t newLength,        uint32_t newSize, UErrorCode *pErrorCode){    if (newSize < newLength) {        *pErrorCode = U_BUFFER_OVERFLOW_ERROR;        return;    }    if (newSize > pTransform->srcSize) {        newSize += 50; // allocate slightly more than needed right now        if (pTransform->src != NULL) {            uprv_free(pTransform->src);            pTransform->src = NULL;        }        pTransform->src = (UChar *)uprv_malloc(newSize * sizeof(UChar));        if (pTransform->src == NULL) {            *pErrorCode = U_MEMORY_ALLOCATION_ERROR;            //pTransform->srcLength = pTransform->srcSize = 0;            return;        }        pTransform->srcSize = newSize;    }    u_strncpy(pTransform->src, newSrc, newLength);    pTransform->srcLength = u_terminateUChars(pTransform->src,    		pTransform->srcSize, newLength, pErrorCode);}
开发者ID:MoonchildProductions,项目名称:Pale-Moon,代码行数:37,


示例6: GetLocaleCurrencyName

/*Function:GetLocaleCurrencyNameGets the locale currency English or native name and convert the result to UChars*/static UErrorCode GetLocaleCurrencyName(const char* locale, UBool nativeName, UChar* value, int32_t valueLength){    UErrorCode status = U_ZERO_ERROR;        UChar currencyThreeLettersName[4]; // 3 letters currency iso name + NULL    ucurr_forLocale(locale, currencyThreeLettersName, 4, &status);    if (!U_SUCCESS(status))    {        return status;    }        int32_t len;    UBool formatChoice;    const UChar *pCurrencyLongName = ucurr_getName(                                        currencyThreeLettersName,                                         nativeName ? locale : ULOC_US,                                         UCURR_LONG_NAME,                                         &formatChoice,                                         &len,                                         &status);    if (!U_SUCCESS(status))    {        return status;    }        if (len >= valueLength) // we need to have room for NULL too    {        return U_BUFFER_OVERFLOW_ERROR;    }    u_strncpy(value, pCurrencyLongName, len);    value[len] = 0;    return status;}
开发者ID:Clockwork-Muse,项目名称:coreclr,代码行数:41,


示例7: ucbuf_size

const UChar* UPerfTest::getBuffer(int32_t& len, UErrorCode& status){    len = ucbuf_size(ucharBuf);    buffer =  (UChar*) uprv_malloc(U_SIZEOF_UCHAR * (len+1));    u_strncpy(buffer,ucbuf_getBuffer(ucharBuf,&bufferLen,&status),len);    buffer[len]=0;    len = bufferLen;    return buffer;}
开发者ID:andrewleech,项目名称:firebird,代码行数:8,


示例8: u_minstrncpy

/* copies the minimum number of code units of (count or output->available) */static int32_tu_minstrncpy(u_localized_string *output, const UChar *str, int32_t count) {    int32_t size = ufmt_min(count, output->available);    u_strncpy(output->str + (output->len - output->available), str, size);    output->available -= size;    return size;}
开发者ID:gitpan,项目名称:ponie,代码行数:9,


示例9: u_strncpy

void NumberFormat::setCurrency(const UChar* theCurrency) {    if (theCurrency) {        u_strncpy(currency, theCurrency, 3);        currency[3] = 0;    } else {        currency[0] = 0;    }}
开发者ID:gitpan,项目名称:ponie,代码行数:8,


示例10: u_strncpy

unichar_t *u_GFileBuildName(unichar_t *dir,unichar_t *fname,unichar_t *buffer,int size) {    int len;    if ( dir==NULL || *dir=='/0' ) {	u_strncpy(buffer,fname,size-1);	buffer[size-1]='/0';    } else {	if ( buffer!=dir ) {	    u_strncpy(buffer,dir,size-3);	    buffer[size-3]='/0';	}	len = u_strlen(buffer);	if ( buffer[len-1]!='/' )	    buffer[len++] = '/';	u_strncpy(buffer+len,fname,size-len-1);	buffer[size-1]='/0';    }return( buffer );}
开发者ID:cyh7900,项目名称:fontforge,代码行数:19,


示例11: u_strncpy

void NumberFormat::setCurrency(const UChar* theCurrency, UErrorCode& ec) {    if (U_FAILURE(ec)) {        return;    }    if (theCurrency) {        u_strncpy(fCurrency, theCurrency, 3);        fCurrency[3] = 0;    } else {        fCurrency[0] = 0;    }}
开发者ID:flwh,项目名称:Alcatel_OT_985_kernel,代码行数:11,


示例12: u_sprintf_write

/* u_minstrncpy copies the minimum number of code units of (count or output->available) */static int32_tu_sprintf_write(void        *context,                const UChar *str,                int32_t     count){    u_localized_print_string *output = (u_localized_print_string *)context;    int32_t size = ufmt_min(count, output->available);    u_strncpy(output->str + (output->len - output->available), str, size);    output->available -= size;    return size;}
开发者ID:flwh,项目名称:Alcatel_OT_985_kernel,代码行数:13,


示例13: ulocdata_getDelimiter

U_CAPI int32_t U_EXPORT2ulocdata_getDelimiter(ULocaleData *uld, ULocaleDataDelimiterType type,                      UChar *result, int32_t resultLength, UErrorCode *status){    static const char* const delimiterKeys[] =  {        "quotationStart",        "quotationEnd",        "alternateQuotationStart",        "alternateQuotationEnd"    };    UResourceBundle *delimiterBundle;    int32_t len = 0;    const UChar *delimiter = NULL;    UErrorCode localStatus = U_ZERO_ERROR;    if (U_FAILURE(*status))        return 0;    delimiterBundle = ures_getByKey(uld->bundle, "delimiters", NULL, &localStatus);    if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {        localStatus = U_MISSING_RESOURCE_ERROR;    }    if (localStatus != U_ZERO_ERROR) {        *status = localStatus;    }    if (U_FAILURE(*status)){        ures_close(delimiterBundle);        return 0;    }    delimiter = ures_getStringByKey(delimiterBundle, delimiterKeys[type], &len, &localStatus);    ures_close(delimiterBundle);    if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {        localStatus = U_MISSING_RESOURCE_ERROR;    }    if (localStatus != U_ZERO_ERROR) {        *status = localStatus;    }    if (U_FAILURE(*status)){        return 0;    }    u_strncpy(result,delimiter, resultLength);    return len;}
开发者ID:JoeDoyle23,项目名称:node,代码行数:52,


示例14: u_strrchr

/*  create a new filename using that directory and the given nametail */unichar_t *u_GFileReplaceName(unichar_t *oldname,unichar_t *fname,unichar_t *buffer,int size) {    int len;    unichar_t *dirend;    dirend = u_strrchr(oldname,'/');    if ( dirend == NULL ) {	u_strncpy(buffer,fname,size-1);	buffer[size-1]='/0';    } else {	*dirend = '/0';	if ( buffer!=oldname ) {	    u_strncpy(buffer,oldname,size-3);	    buffer[size-3]='/0';	}	len = u_strlen(buffer);	*dirend = '/';	buffer[len++] = '/';	u_strncpy(buffer+len,fname,size-len-1);	buffer[size-1]='/0';    }return( buffer );}
开发者ID:cyh7900,项目名称:fontforge,代码行数:23,


示例15: getCurrency

void NumberFormat::getEffectiveCurrency(UChar* result, UErrorCode& ec) const {    const UChar* c = getCurrency();    if (*c != 0) {        u_strncpy(result, c, 3);        result[3] = 0;    } else {        const char* loc = getLocaleID(ULOC_VALID_LOCALE, ec);        if (loc == NULL) {            loc = uloc_getDefault();        }        ucurr_forLocale(loc, result, 4, &ec);    }}
开发者ID:flwh,项目名称:Alcatel_OT_985_kernel,代码行数:13,


示例16: text_buf_concat

/** * Concatenate some text to the buf * @param tb the text buf in question * @param text the text * @param len the length of the text * @return 1 if it worked, else 0 */int text_buf_concat( text_buf *tb, UChar *text, int len ){    if ( len+tb->len+1 > tb->allocated )    {        int new_size = (tb->len+len+1)*3/2;        UChar *temp = calloc( new_size, sizeof(UChar) );        if ( temp == NULL )        {            return 0;        }        else        {            u_strncpy( temp, tb->buf, tb->len );            free( tb->buf );            tb->allocated = new_size;            tb->buf = temp;        }    }    u_strncpy( &tb->buf[tb->len], text, len );    tb->len += len;    tb->buf[tb->len] = 0;    return 1;}
开发者ID:Ecdosis,项目名称:calliope,代码行数:30,


示例17: icu_buf_utf16_resize

struct icu_buf_utf16 *icu_buf_utf16_copy(struct icu_buf_utf16 *dest16,                                         const struct icu_buf_utf16 *src16){    if (!dest16 || !src16 || dest16 == src16)        return 0;    if (dest16->utf16_cap < src16->utf16_len)        icu_buf_utf16_resize(dest16, src16->utf16_len * 2);    u_strncpy(dest16->utf16, src16->utf16, src16->utf16_len);    dest16->utf16_len = src16->utf16_len;    return dest16;}
开发者ID:dcrossleyau,项目名称:yaz,代码行数:14,


示例18: u_strlen

void QueryToken::set(const UChar *inValue, int32_t inStart, int32_t inEnd, QueryToken::Types inType){	if (mValue)		delete [] mValue;	if (inEnd == -1)		inEnd = u_strlen(inValue);	mValue = new UChar[inEnd + 1];	u_strncpy(mValue, inValue, inEnd);	mValue[inEnd] = 0;	this->mStart = inStart;	this->mEnd = inEnd;	this->mType = inType;}
开发者ID:marsender,项目名称:atoll-digital-library,代码行数:14,


示例19: ulocdata_getLocaleSeparator

U_DRAFT int32_t U_EXPORT2ulocdata_getLocaleSeparator(ULocaleData *uld,                            UChar *result,                            int32_t resultCapacity,                            UErrorCode *status)  {    UResourceBundle *separatorBundle;    int32_t len = 0;    const UChar *separator = NULL;    UErrorCode localStatus = U_ZERO_ERROR;    if (U_FAILURE(*status))        return 0;    separatorBundle = ures_getByKey(uld->bundle, "localeDisplayPattern", NULL, &localStatus);    if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {        localStatus = U_MISSING_RESOURCE_ERROR;    }    if (localStatus != U_ZERO_ERROR) {        *status = localStatus;    }    if (U_FAILURE(*status)){        ures_close(separatorBundle);        return 0;    }    separator = ures_getStringByKey(separatorBundle, "separator", &len, &localStatus);    ures_close(separatorBundle);    if ( (localStatus == U_USING_DEFAULT_WARNING) && uld->noSubstitute ) {        localStatus = U_MISSING_RESOURCE_ERROR;    }    if (localStatus != U_ZERO_ERROR) {        *status = localStatus;    }    if (U_FAILURE(*status)){        return 0;    }    u_strncpy(result, separator, resultCapacity);    return len;}
开发者ID:flwh,项目名称:Alcatel_OT_985_kernel,代码行数:47,


示例20: getcwd

unichar_t *u_GFileGetAbsoluteName(unichar_t *name, unichar_t *result, int rsiz) {    /* result may be the same as name */    unichar_t buffer[1000];    if ( ! u_GFileIsAbsolute(name) ) {	unichar_t *pt, *spt, *rpt, *bpt;	if ( dirname_[0]=='/0' ) {	    getcwd(dirname_,sizeof(dirname_));	}	uc_strcpy(buffer,dirname_);	if ( buffer[u_strlen(buffer)-1]!='/' )	    uc_strcat(buffer,"/");	u_strcat(buffer,name);	_u_backslash_to_slash(buffer);	/* Normalize out any .. */	spt = rpt = buffer;	while ( *spt!='/0' ) {	    if ( *spt=='/' ) ++spt;	    for ( pt = spt; *pt!='/0' && *pt!='/'; ++pt );	    if ( pt==spt )	/* Found // in a path spec, reduce to / (we've*/		u_strcpy(spt,pt); /*  skipped past the :// of the machine name) */	    else if ( pt==spt+1 && spt[0]=='.' && *pt=='/' )	/* Noop */		u_strcpy(spt,spt+2);	    else if ( pt==spt+2 && spt[0]=='.' && spt[1]=='.' ) {		for ( bpt=spt-2 ; bpt>rpt && *bpt!='/'; --bpt );		if ( bpt>=rpt && *bpt=='/' ) {		    u_strcpy(bpt,pt);		    spt = bpt;		} else {		    rpt = pt;		    spt = pt;		}	    } else		spt = pt;	}	name = buffer;    }    if (result!=name) {	u_strncpy(result,name,rsiz);	result[rsiz-1]='/0';	_u_backslash_to_slash(result);    }return(result);}
开发者ID:cyh7900,项目名称:fontforge,代码行数:46,


示例21: assert

struct icu_buf_utf16 *icu_buf_utf16_append(struct icu_buf_utf16 *dest16,                                           const struct icu_buf_utf16 *src16){    assert(dest16);    if (!src16)        return dest16;    if (dest16 == src16)        return 0;    if (dest16->utf16_cap <= src16->utf16_len + dest16->utf16_len)        icu_buf_utf16_resize(dest16, dest16->utf16_len + src16->utf16_len * 2);    u_strncpy(dest16->utf16 + dest16->utf16_len,              src16->utf16, src16->utf16_len);    dest16->utf16_len += src16->utf16_len;    return dest16;}
开发者ID:dcrossleyau,项目名称:yaz,代码行数:18,


示例22: u_file_translit

static const UChar * u_file_translit(UFILE *f, const UChar *src, int32_t *count, UBool flush){    int32_t newlen;    int32_t junkCount = 0;    int32_t textLength;    int32_t textLimit;    UTransPosition pos;    UErrorCode status = U_ZERO_ERROR;    if(count == NULL)    {        count = &junkCount;    }    if ((!f)||(!f->fTranslit)||(!f->fTranslit->translit))    {        /* fast path */        return src;    }    /* First: slide over everything */    if(f->fTranslit->length > f->fTranslit->pos)    {        memmove(f->fTranslit->buffer, f->fTranslit->buffer + f->fTranslit->pos,            (f->fTranslit->length - f->fTranslit->pos)*sizeof(UChar));    }    f->fTranslit->length -= f->fTranslit->pos; /* always */    f->fTranslit->pos = 0;    /* Calculate new buffer size needed */    newlen = (*count + f->fTranslit->length) * 4;    if(newlen > f->fTranslit->capacity)    {        if(f->fTranslit->buffer == NULL)        {            f->fTranslit->buffer = (UChar*)uprv_malloc(newlen * sizeof(UChar));        }        else        {            f->fTranslit->buffer = (UChar*)uprv_realloc(f->fTranslit->buffer, newlen * sizeof(UChar));        }        f->fTranslit->capacity = newlen;    }    /* Now, copy any data over */    u_strncpy(f->fTranslit->buffer + f->fTranslit->length,        src,        *count);    f->fTranslit->length += *count;    /* Now, translit in place as much as we can  */    if(flush == FALSE)    {        textLength = f->fTranslit->length;        pos.contextStart = 0;        pos.contextLimit = textLength;        pos.start        = 0;        pos.limit        = textLength;        utrans_transIncrementalUChars(f->fTranslit->translit,            f->fTranslit->buffer, /* because we shifted */            &textLength,            f->fTranslit->capacity,            &pos,            &status);#ifdef _DEBUG        if(U_FAILURE(status))        {            fprintf(stderr, " Gack. Translit blew up with a %s/n", u_errorName(status));            return src;        }#endif        /* now: start/limit point to the transliterated text */        /* Transliterated is [buffer..pos.start) */        *count            = pos.start;        f->fTranslit->pos = pos.start;        f->fTranslit->length = pos.limit;        return f->fTranslit->buffer;    }    else    {        textLength = f->fTranslit->length;        textLimit = f->fTranslit->length;        utrans_transUChars(f->fTranslit->translit,            f->fTranslit->buffer,            &textLength,            f->fTranslit->capacity,            0,            &textLimit,            &status);#ifdef _DEBUG        if(U_FAILURE(status))        {            fprintf(stderr, " Gack. Translit(flush) blew up with a %s/n", u_errorName(status));//.........这里部分代码省略.........
开发者ID:gitpan,项目名称:ponie,代码行数:101,


示例23: getContentImpl

//.........这里部分代码省略.........    // adding number format patterns to the result    int numOfEntries;    int decSepOffset;    NumberFormat *nf;    jchar *tmpPattern;    rootElems = ures_getByKey(root, "NumberPatterns", NULL, &status);    if(U_FAILURE(status)) {        status = U_ZERO_ERROR;        goto zones;    }    numOfEntries = ures_getSize(rootElems);    if(numOfEntries < 3) {        ures_close(rootElems);        goto zones;    }    // number pattern    pattern = ures_getStringByIndex(rootElems, 0, &patternLength, &status);    if(U_FAILURE(status)) {        status = U_ZERO_ERROR;        ures_close(rootElems);        goto zones;    }    numberPattern = env->NewString(pattern, patternLength);    counter++;    // integer pattern derived from number pattern    decSepOffset = u_strcspn(pattern, (jchar *)"./0");    tmpPattern =  (jchar *) malloc((decSepOffset + 1) * sizeof(jchar));    u_strncpy(tmpPattern, pattern, decSepOffset);    integerPattern = env->NewString(tmpPattern, decSepOffset);    free(tmpPattern);    counter++;    // currency pattern    pattern = ures_getStringByIndex(rootElems, 1, &patternLength, &status);    if(U_FAILURE(status)) {        status = U_ZERO_ERROR;        ures_close(rootElems);        goto zones;    }    currencyPattern = env->NewString(pattern, patternLength);    counter++;    // percent pattern    pattern = ures_getStringByIndex(rootElems, 2, &patternLength, &status);    if(U_FAILURE(status)) {        status = U_ZERO_ERROR;        ures_close(rootElems);        goto zones;    }    percentPattern = env->NewString(pattern, patternLength);    counter++;    ures_close(rootElems);zones:    ures_close(root);    if(needsTZ == JNI_TRUE) {
开发者ID:llnull,项目名称:platform_dalvik,代码行数:67,


示例24: Xextract

/* UReplaceableCallbacks callback */static void Xextract(UReplaceable* rep, int32_t start, int32_t limit, UChar* dst) {    XReplaceable* x = (XReplaceable*)rep;    int32_t len = limit - start;    u_strncpy(dst, x->text, len);}
开发者ID:Strongc,项目名称:WinObjC,代码行数:6,


示例25: ubiditransform_transform

U_DRAFT uint32_t U_EXPORT2ubiditransform_transform(UBiDiTransform *pBiDiTransform,            const UChar *src, int32_t srcLength,            UChar *dest, int32_t destSize,            UBiDiLevel inParaLevel, UBiDiOrder inOrder,            UBiDiLevel outParaLevel, UBiDiOrder outOrder,            UBiDiMirroring doMirroring, uint32_t shapingOptions,            UErrorCode *pErrorCode){    uint32_t destLength = 0;    UBool textChanged = FALSE;    const UBiDiTransform *pOrigTransform = pBiDiTransform;    const UBiDiAction *action = NULL;    if (U_FAILURE(*pErrorCode)) {        return 0;    }    if (src == NULL || dest == NULL) {        *pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;        return 0;    }    CHECK_LEN(src, srcLength, pErrorCode);    CHECK_LEN(dest, destSize, pErrorCode);    if (pBiDiTransform == NULL) {        pBiDiTransform = ubiditransform_open(pErrorCode);        if (U_FAILURE(*pErrorCode)) {            return 0;        }    }    /* Current limitation: in multiple paragraphs will be resolved according       to the 1st paragraph */    resolveBaseDirection(src, srcLength, &inParaLevel, &outParaLevel);    pBiDiTransform->pActiveScheme = findMatchingScheme(inParaLevel, outParaLevel,            inOrder, outOrder);    if (pBiDiTransform->pActiveScheme == NULL) {        goto cleanup;    }    pBiDiTransform->reorderingOptions = doMirroring ? UBIDI_DO_MIRRORING            : UBIDI_REORDER_DEFAULT;    /* Ignore TEXT_DIRECTION_* flags, as we apply our own depending on the text       scheme at the time shaping is invoked. */    shapingOptions &= ~U_SHAPE_TEXT_DIRECTION_MASK;    pBiDiTransform->digits = shapingOptions & ~U_SHAPE_LETTERS_MASK;    pBiDiTransform->letters = shapingOptions & ~U_SHAPE_DIGITS_MASK;    updateSrc(pBiDiTransform, src, srcLength, destSize > srcLength ? destSize : srcLength, pErrorCode);    if (U_FAILURE(*pErrorCode)) {        goto cleanup;    }    if (pBiDiTransform->pBidi == NULL) {        pBiDiTransform->pBidi = ubidi_openSized(0, 0, pErrorCode);        if (U_FAILURE(*pErrorCode)) {            goto cleanup;        }    }    pBiDiTransform->dest = dest;    pBiDiTransform->destSize = destSize;    pBiDiTransform->pDestLength = &destLength;    /* Checking for U_SUCCESS() within the loop to bail out on first failure. */    for (action = pBiDiTransform->pActiveScheme->actions; *action && U_SUCCESS(*pErrorCode); action++) {        if ((*action)(pBiDiTransform, pErrorCode)) {            if (action + 1) {                updateSrc(pBiDiTransform, pBiDiTransform->dest, *pBiDiTransform->pDestLength,                        *pBiDiTransform->pDestLength, pErrorCode);            }            textChanged = TRUE;        }    }    ubidi_setInverse(pBiDiTransform->pBidi, FALSE);    if (!textChanged && U_SUCCESS(*pErrorCode)) {        /* Text was not changed - just copy src to dest */        if (destSize < srcLength) {            *pErrorCode = U_BUFFER_OVERFLOW_ERROR;        } else {            u_strncpy(dest, src, srcLength);            destLength = srcLength;        }    }cleanup:    if (pOrigTransform != pBiDiTransform) {        ubiditransform_close(pBiDiTransform);    } else {        pBiDiTransform->dest = NULL;        pBiDiTransform->pDestLength = NULL;        pBiDiTransform->srcLength = 0;        pBiDiTransform->destSize = 0;    }    return U_FAILURE(*pErrorCode) ? 0 : destLength;}
开发者ID:MoonchildProductions,项目名称:Pale-Moon,代码行数:94,


示例26: GIOdispatch

static void GIOdispatch(GIOControl *gc, enum giofuncs gf) {    unichar_t *temp, *pt, *tpt;    int i;    gc->gf = gf;    if ( _GIO_stdfuncs.useragent == NULL )	_GIO_stdfuncs.useragent = copy("[email
C++ u_terminateUChars函数代码示例
C++ u_strdup函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。