亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vproperty.cpp

?? funambol windows mobile plugin source code, the source code is taken from the funambol site
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

                valueString.append(valueConv);
                delete [] valueConv;
            }
        } else { 
            
            WCHAR *value;
            for (int i=0; i<valueCount(); i++) {
                if (i>0) {
                    valueString.append(TEXT(";"));
                }
                value = getValue(i);         
                if (i == 0 && (value != NULL) && wcslen(value) > 0 && (wcscmp(name, TEXT("PHOTO")) == 0)) {
                    valueString.append(TEXT("\r\n"));
                }   
                valueString.append(value);
            }

        }

        if (isToFormatValue) {
            // QUOTED-PRINTABLE encoding (of all values)
            if (equalsEncoding(TEXT("QUOTED-PRINTABLE"))) {

                char* s  = toMultibyte(valueString.c_str());
                char* qp = convertToQP(s, 0);
                WCHAR* qpValueString = toWideChar(qp);
                if(qpValueString)
			        propertyString.append(qpValueString);
                else
                    propertyString.append(valueString);

		        delete [] qpValueString;
                delete [] s;
                delete [] qp;
            }

            // BASE64 encoding (of all values)
            else if(equalsEncoding(TEXT("BASE64")) ||
               equalsEncoding(TEXT("B")) ||
               equalsEncoding(TEXT("b")) ) {

                char* s  = toMultibyte(valueString.c_str());
                int len = strlen(s);
                char* base64 = new char[2*len + 1];
                b64_encode(base64, s, len);
                WCHAR* b64ValueString = toWideChar(base64);

                propertyString.append(b64ValueString);
                // Extra line break: required for v.2.1 / optional for v.3.0
                //propertyString.append(RFC822_LINE_BREAK);

                delete [] b64ValueString;
                delete [] base64;
                delete [] s;
            }


            // Default encoding (7bit)
            else {
                propertyString.append(valueString);
            }
        } else { // not is to apply any transformation
            propertyString.append(valueString);
        }
    }


finally:
    // memory must be free by caller with delete []
    WCHAR *str = wstrdup(propertyString);
    return str;
}




WCHAR* VProperty::getParameter(int index){

    WKeyValuePair *parameter;
    parameter = (WKeyValuePair*)parameters->get(index);
    return (WCHAR *)parameter->getKey();
}

bool VProperty::equalsEncoding(WCHAR* encoding) {

    if ((encoding != NULL) && ((containsParameter(TEXT("ENCODING")) &&
		!wcscmp(getParameterValue(TEXT("ENCODING")),encoding)) ||
        containsParameter(encoding)))
        return true;
    return false;
}



bool VProperty::isType(WCHAR* type) {
    if(containsParameter(type))
        return true;
    if(containsParameter(TEXT("TYPE")) && getParameterValue(TEXT("TYPE"))) {

        WCHAR seps[] = TEXT(",");
        WCHAR* token;

        token = wcstok(getParameterValue(TEXT("TYPE")), seps );

        while( token != NULL )
        {
            if(!wcscmp(type, token))
                return true;
            token = wcstok( NULL, seps );
        }
    }

    if(containsParameter(TEXT("type")) && getParameterValue(TEXT("type"))) {

        WCHAR seps[] = TEXT(",");
        WCHAR* token;

        token = wcstok(getParameterValue(TEXT("type")), seps );

        while( token != NULL )
        {
            if(!wcscmp(type, token))
                return true;
            token = wcstok( NULL, seps );
        }
    }
    return false;
}




// ------------------ Public functions --------------------

/*
 * Convert a char* string into QUOTED-PRINTABLE format.
 * @param psz     : the input char* string
 * @param start   : the start point of the line
 * @return        : the char* string in QP format (new - must be freed by the caller!)
 *                  (NULL if conversion failed)
 */
char* convertToQP(const char* input, int start) {

    int   count   = start;
	int   maxLen  = 3*strlen(input);         // This is the max length for output string
	char *sAppend = NULL;
    char  szTemp[10];
    const char *p;

    // new - must be freed by the caller
    char* qpString = new char[maxLen + 1];
	strcpy(qpString, "");

	if (maxLen>0) {
		sAppend = new char[maxLen + 1];
		strncpy(sAppend, input, maxLen);
		sAppend[maxLen]=0;

		if(!sAppend)
			return NULL;

		for (p = sAppend; *p; p++) {
			//if (count > QP_MAX_LINE_LEN) {
			//	strcat(qpString, "=\r\n");
			//	count = 0;
			//}
			//else
            if (*p == '\t' || *p == ' ') {
				const char *pScan = p;
				while (*pScan && (*pScan == '\t' || *pScan == ' ')) {
					pScan++;
				}
				if (*pScan == '\0') {
					while (*p) {
						unsigned char ind = *p;
						sprintf(szTemp, "=%02X", ind);
						strcat(qpString, szTemp);
						count += 3;
						p++;

						//if (count > QP_MAX_LINE_LEN) {
						//	strcat(qpString, "=\r\n");
						//	count = 0;
						//}
					}
					break;
				}
				else {
					sprintf(szTemp, "%c", *p);
					strcat(qpString, szTemp);
					count++;
				}
				continue;
			}
			else if (('!' <= *p) && ('~' >= *p) && ('=' != *p)) {
				sprintf(szTemp, "%c", *p);
				strcat(qpString, szTemp);
				count++;
			}
			else {
				unsigned char ind = *p;
				sprintf(szTemp, "=%02X", ind);
				strcat(qpString, szTemp);
				count += 3;
			}
		}

		delete [] sAppend;
	}
	return qpString;
}



// Returns true if special encoding is needed for the string 'in'.
bool encodingIsNeed(const char *in) {
    for(int i = 0; i < int(strlen(in)); i++)
        if ( (in[i] < 0x20) || ((unsigned char)in[i] > 0x7f))
            return true;

    return false;
}





/*
* Escape special characters adding a back-slash (i.e. ";" -> "\;")
* @param inputString  : the input string to parse
* @param version      : vCard version "2.1" or "3.0" - we have different chars to escape
 *                     (if not defined, default will be 2.1)
* @return             : the new allocated string with escaped chars
* Note:
*      returns new allocated WCHAR*, must be freed by the caller.
*/
WCHAR* escapeSpecialChars(const WCHAR* inputString, WCHAR* version) {

    int i, j, inputLen, outputLen;
    inputLen  = wcslen(inputString);
    WCHAR* wc = new WCHAR[2];
    WCHAR charsToEscape[4];

    bool is_30 = false;
    if (version) {
        is_30 = !wcscmp(version, TEXT("3.0"));
    }
    if (is_30) {
        wcscpy(charsToEscape, VCARD30_SPECIAL_CHARS);
    }
    else {
        wcscpy(charsToEscape, VCARD21_SPECIAL_CHARS);
    }


    // First find the length of output value
    outputLen = inputLen;
    for (i=0; i<inputLen; i++) {
        wcsncpy(wc, &inputString[i], 1);
        wc[1]=0;
        if (wcsstr(charsToEscape, wc))
            outputLen ++;
    }
    WCHAR* outputString = new WCHAR[outputLen+1];


    // Now escape special characters (add back-slash)
    j=0;
    for (i=0; i<inputLen; i++) {
        wcsncpy(wc, &inputString[i], 1);
        wc[1]=0;
        if (wcsstr(charsToEscape, wc)) {
            if (is_30 && inputString[i]=='\\' && inputString[i+1]=='n') {
                // none: this is "\n" sequence, MUST NOT be escaped in 3.0
            }
            else {
                outputString[j]   = '\\';
                j++;
            }
        }
        outputString[j] = inputString[i];
        j++;
    }

    outputString[outputLen] = 0;
    delete [] wc;
    return outputString;
}




/*
 * Folding of long lines. Output string is splitted into multiple
 * lines, delimited by the RFC-822 line break ("\r\n").
 * @param inputString : input WCHAR string of text
 * @param maxLine     : the length of lines in the output string
 * @return            : output WCHAR string with folded lines (new allocated)
 *
 * Note:
 *      returns new allocated WCHAR*, must be freed by the caller.
 */
WCHAR* folding(const WCHAR* inputString, const int maxLine) {

    // "\r\n" followed by a white space as line ending (RFC 2425)
    WCHAR newLine[4];
    wcscpy(newLine, RFC822_LINE_BREAK);
    wcscat(newLine, TEXT(" \0"));
    int outputLen = 0, i = 0;
    int inputLen  = wcslen(inputString);
    WCHAR* outputString;

    // No folding needed
    if (inputLen <= maxLine) {
        outputString = new WCHAR[inputLen + 1];
        wcscpy(outputString, inputString);
        goto finally;
    }

    outputLen = inputLen + (int)(inputLen/maxLine + 1)*wcslen(newLine);
    outputString = new WCHAR[outputLen + 1];
    outputString[0] = 0;

    for (i=0; i<inputLen; i += maxLine) {
        wcsncat(outputString, inputString+i, maxLine);
        wcscat(outputString, newLine);
    }
    outputString[outputLen] = 0;

finally:
    return outputString;
}



/*
 * Unfolding a logical line. Input string is splitted into multiple
 * lines, delimited by the RFC-822 line break ("\r\n") followed by one space.
 * @param inputString : input  WCHAR string with folded lines
 * @return            : output WCHAR string unfolded (new allocated)
 *
 * Note:
 *      returns new allocated WCHAR*, must be freed by the caller.
 */
WCHAR* unfolding(const WCHAR* inputString) {

    int inputLen  = wcslen(inputString);
    WCHAR* outputString = new WCHAR[inputLen + 1];
    outputString[0] = 0;

    int j=0;
    for (int i=0; i<inputLen-2; i++) {
        if (inputString[i]   == '\r' &&
            inputString[i+1] == '\n' &&
            inputString[i+2] == ' ') {
            i += 2;
            continue;
        }
        outputString[j] = inputString[i];
        j++;
    }
    outputString[j] = 0;

    return outputString;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
琪琪一区二区三区| 狠狠色狠狠色综合| 久久精品亚洲麻豆av一区二区| 不卡视频在线观看| 精品在线亚洲视频| 亚洲午夜激情av| 国产精品不卡一区二区三区| 日韩欧美一区二区视频| 欧美影院精品一区| 成人午夜看片网址| 美女www一区二区| 亚洲福利视频导航| 一区二区三区四区不卡在线| 国产性天天综合网| 精品国产青草久久久久福利| 欧美久久久久久蜜桃| 在线视频国内一区二区| 波多野结衣一区二区三区 | 奇米在线7777在线精品| 亚洲欧美另类在线| 中文字幕在线一区| 欧美国产精品v| 久久一区二区视频| 精品国产露脸精彩对白| 欧美一区国产二区| 欧美精品久久天天躁| 欧美日韩亚洲丝袜制服| 欧美在线free| 欧美在线高清视频| 欧美三级电影在线看| 一本久久综合亚洲鲁鲁五月天| 国产精品系列在线观看| 国产一区二区中文字幕| 精品午夜久久福利影院| 九九久久精品视频| 国产一区二区按摩在线观看| 国产一区啦啦啦在线观看| 韩国三级中文字幕hd久久精品| 蜜桃av一区二区在线观看| 麻豆freexxxx性91精品| 毛片av一区二区三区| 九九**精品视频免费播放| 免费成人性网站| 国产真实乱偷精品视频免| 国产综合成人久久大片91| 国产久卡久卡久卡久卡视频精品| 韩国成人精品a∨在线观看| 激情综合网天天干| 国产精品一区专区| av一二三不卡影片| 欧美性色黄大片| 在线观看91精品国产麻豆| 日韩欧美一区中文| 久久久不卡影院| 日韩一区欧美一区| 午夜日韩在线观看| 蜜臀久久99精品久久久久宅男| 国产麻豆视频一区| a级精品国产片在线观看| 日本高清不卡aⅴ免费网站| 欧美电影一区二区三区| ww亚洲ww在线观看国产| 国产精品第五页| 亚洲18色成人| 国产一区二区视频在线播放| 国产成人av在线影院| 色视频一区二区| 3d动漫精品啪啪一区二区竹菊| 日韩欧美综合一区| 亚洲欧洲日产国码二区| 亚洲一区二区三区国产| 免费的成人av| 91免费在线视频观看| 91精品国产一区二区三区 | 最好看的中文字幕久久| 亚洲国产aⅴ天堂久久| 蜜臀av一区二区| 91片在线免费观看| 日韩三级电影网址| 亚洲精品乱码久久久久久黑人| 男女男精品视频网| 91亚洲国产成人精品一区二三 | 91麻豆国产香蕉久久精品| 7777精品伊人久久久大香线蕉完整版 | 亚洲品质自拍视频网站| 麻豆一区二区99久久久久| caoporm超碰国产精品| 6080yy午夜一二三区久久| 国产嫩草影院久久久久| 日韩高清中文字幕一区| www.日韩在线| 欧美成人a∨高清免费观看| 亚洲精选视频免费看| 国产在线看一区| 欧美精品乱人伦久久久久久| 中文字幕不卡在线| 毛片不卡一区二区| 欧美视频一区二| 国产欧美日产一区| 日本中文字幕不卡| 一本一道久久a久久精品| 久久久久久久久99精品| 午夜精品久久久久久久| 成人app在线观看| 欧美白人最猛性xxxxx69交| 亚洲一区二区三区四区五区黄| 成人一级片网址| 久久久久久久网| 日本在线不卡视频| 欧美色中文字幕| 亚洲精品久久7777| 成人短视频下载| 久久女同精品一区二区| 麻豆一区二区在线| 91精品国产免费| 亚洲无人区一区| 色婷婷久久一区二区三区麻豆| 久久精品水蜜桃av综合天堂| 蜜臀va亚洲va欧美va天堂| 9191久久久久久久久久久| 亚洲r级在线视频| 欧美午夜寂寞影院| 亚洲在线视频网站| 欧美伊人精品成人久久综合97| 中文字幕亚洲一区二区av在线| 国产大陆亚洲精品国产| 精品av久久707| 激情六月婷婷综合| 精品国精品国产| 国产综合色在线| 久久久久久99精品| 国产成人免费视频一区| 日本一区二区视频在线| 懂色av一区二区三区蜜臀| 欧美韩国日本不卡| 成人免费高清在线| 中文字幕在线不卡一区二区三区| 成人黄色综合网站| 1区2区3区国产精品| 91浏览器打开| 亚洲一区二区三区中文字幕| 欧美亚洲日本一区| 日韩电影一区二区三区四区| 91精品国产一区二区| 另类的小说在线视频另类成人小视频在线 | 国产亚洲欧洲一区高清在线观看| 国产精品一级二级三级| 欧美国产日韩亚洲一区| jlzzjlzz欧美大全| 亚洲一级电影视频| 91精品国产高清一区二区三区 | 精品国产三级电影在线观看| 国产一区二区三区综合| 国产欧美精品在线观看| 丁香啪啪综合成人亚洲小说| 国产精品乱人伦一区二区| 一本高清dvd不卡在线观看| 午夜视黄欧洲亚洲| ww久久中文字幕| 91天堂素人约啪| 午夜激情一区二区三区| wwww国产精品欧美| 99久久国产综合精品色伊| 亚洲福利一二三区| 久久久午夜精品理论片中文字幕| 成人午夜av电影| 天堂久久久久va久久久久| 久久先锋影音av| 99久久精品国产观看| 日韩电影网1区2区| 中国色在线观看另类| 欧美伊人久久久久久久久影院| 久久不见久久见中文字幕免费| 亚洲国产精品ⅴa在线观看| 在线一区二区视频| 久色婷婷小香蕉久久| 日韩美女精品在线| 精品国产乱码久久久久久图片| 99精品视频一区二区| 免费成人av在线播放| 中文幕一区二区三区久久蜜桃| 欧美二区乱c少妇| 99久久国产综合色|国产精品| 奇米影视7777精品一区二区| 国产精品久久影院| 日韩一区二区视频在线观看| 99久久精品国产导航| 紧缚奴在线一区二区三区| 亚洲精品欧美激情| 精品成a人在线观看| 欧美日韩精品免费| 99久久精品一区| 国产高清久久久久| 蜜臀国产一区二区三区在线播放| 日韩美女视频一区| 国产欧美一区二区三区网站| 欧美一级艳片视频免费观看| 欧洲一区在线电影| fc2成人免费人成在线观看播放| 美女任你摸久久|