⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formatter.cpp

📁 funambol windows mobile plugin source code, the source code is taken from the funambol site
💻 CPP
📖 第 1 页 / 共 5 页
字号:

    dataStores = getDataStores(devInf->getDataStore());
    syncCap    = getSyncCap(devInf->getSyncCap());
    ctCaps     = getCTCaps(devInf->getCTCap());
    exts       = getExts(devInf->getExt());

    // These elements are inserted empty if the boolean value is true.
    utc                     = getValue    (UTC, devInf->getUTC());
    supportLargeObjs        = getValue    (SUPPORT_LARGE_OBJECT, devInf->getSupportLargeObjs());
    supportNumberOfChanges  = getValue    (SUPPORT_NUMBER_OF_CHANGES, devInf->getSupportNumberOfChanges());

    if (NotZeroStringBufferLenght(15, verDTD, man, mod, oem, fwV, swV, hwV, devID, devTyp,
                                      dataStores, syncCap, ctCaps, utc, supportLargeObjs, supportNumberOfChanges)) {
        s = new StringBuffer();
        s->append(verDTD);
        s->append(man);
        s->append(mod);
        s->append(oem);
        s->append(fwV);
        s->append(swV);
        s->append(hwV);
        s->append(devID);
        s->append(devTyp);
        s->append(utc);
        s->append(supportLargeObjs);
        s->append(supportNumberOfChanges);
        s->append(dataStores);
        s->append(ctCaps);
        s->append(exts);
        s->append(syncCap);


    }

    // TODO: getValue() should accept const strings
    ret = getValue((char *)DEV_INF, (char *)s->c_str(), (char *)DEVINF);

    deleteAllStringBuffer(16, &s, &verDTD, &man, &mod, &oem, &fwV, &swV, &hwV,
                              &devID, &devTyp, &dataStores, &ctCaps, &exts, &utc,
                              &supportLargeObjs, &supportNumberOfChanges);

    return ret;
}

/*
* Returns a series of
*  <Ext> ... </Ext>
*  <Ext> ... </Ext>
*  <Ext> ... </Ext>
*
*/
StringBuffer* Formatter::getExts(ArrayList* exts) {

    if (!exts || !NotZeroArrayLenght(1, exts))
        return NULL;

    StringBuffer* ret = new StringBuffer();
    StringBuffer* tmp = NULL;

    for (int i = 0; i < exts->size(); i++) {
        tmp = getExt(((Ext*)exts->get(i)));
        ret->append(tmp);
        if (tmp) { delete tmp; tmp = NULL; }
    }
    return ret;
}

StringBuffer* Formatter::getExt(Ext* ext) {

    if (!ext)
        return NULL;

    StringBuffer* ret = NULL;
    StringBuffer* s   = NULL;

    StringBuffer*  xNam    = NULL;
    StringBuffer*  xVals   = NULL;

    xNam  = getValue (XNAM, ext->getXNam());
    xVals = getXVals (ext->getXVal());

    if (NotZeroStringBufferLenght(2, xNam, xVals)) {
        s = new StringBuffer();
        s->append(xNam);
        s->append(xVals);
    }

    ret = getValue(EXT, s);
    deleteAllStringBuffer(3, &s, &xNam, &xVals);

    return ret;
}


/*
* Returns a series of
*  <XVal> ... </XVal>
*  <XVal> ... </XVal>
*  <XVal> ... </XVal>
*
*/
StringBuffer* Formatter::getXVals(ArrayList* xVals) {

    if (!xVals || !NotZeroArrayLenght(1, xVals))
        return NULL;

    StringBuffer* ret = new StringBuffer();
    StringBuffer* tmp = NULL;

    for (int i = 0; i < xVals->size(); i++) {
        tmp = getXVal(((StringElement*)xVals->get(i)));
        ret->append(tmp);
        if (tmp) { delete tmp; tmp = NULL; }
    }
    return ret;
}

StringBuffer* Formatter::getXVal(StringElement* xVal) {

    if (!xVal)
        return NULL;

    StringBuffer* ret = NULL;
    ret  = getValue (XVAL, xVal->getValue());
    return ret;
}


/*
* Returns a series of
*  <DataStore> ... </DataStore>
*  <DataStore> ... </DataStore>
*  <DataStore> ... </DataStore>
*
*/
StringBuffer* Formatter::getDataStores(ArrayList* dataStores) {

    if (!dataStores || !NotZeroArrayLenght(1, dataStores))
        return NULL;

    StringBuffer* ret = new StringBuffer();
    StringBuffer* tmp = NULL;

    for (int i = 0; i < dataStores->size(); i++) {
        tmp = getDataStore(((DataStore*)dataStores->get(i)));
        ret->append(tmp);
        if (tmp) { delete tmp; tmp = NULL; }
    }
    return ret;
}

StringBuffer* Formatter::getDataStore(DataStore* dataStore) {

    if (!dataStore)
        return NULL;

    StringBuffer* ret = NULL;
    StringBuffer* s   = NULL;

    StringBuffer*    sourceRef      = NULL;
    StringBuffer*    displayName    = NULL;
    StringBuffer*    maxGUIDSize    = NULL;
    StringBuffer*    rxPref         = NULL;
    StringBuffer*    rx             = NULL; // ContentTypeInfo[]
    StringBuffer*    txPref         = NULL;
    StringBuffer*    tx             = NULL; // ContentTypeInfo[]
    StringBuffer*    dsMem          = NULL;
    StringBuffer*    syncCap        = NULL;

    sourceRef   = getSourceRef(dataStore->getSourceRef());
    displayName = getValue(DISPLAY_NAME, dataStore->getDisplayName());
    int maxGUIDSizeVal = dataStore->getMaxGUIDSize();
    maxGUIDSize = maxGUIDSizeVal > 0 ?
        getValue(MAX_GUID_SIZE, maxGUIDSizeVal) :
        new StringBuffer;
    rxPref      = getContentTypeInfo(dataStore->getRxPref(), RX_PREF);
    rx          = getContentTypeInfos(dataStore->getRx(), RX);
    txPref      = getContentTypeInfo(dataStore->getTxPref(), TX_PREF);
    tx          = getContentTypeInfos(dataStore->getTx(), TX);
    dsMem       = getDSMem(dataStore->getDSMem());
    syncCap     = getSyncCap(dataStore->getSyncCap());

    if (NotZeroStringBufferLenght(9, sourceRef, displayName, maxGUIDSize, rxPref, rx, txPref, tx, dsMem, syncCap)) {
        s = new StringBuffer();
        s->append(sourceRef);
        s->append(displayName);
        if (maxGUIDSize->length()) {
            s->append(maxGUIDSize);
        }
        s->append(rxPref);
        s->append(rx);
        s->append(txPref);
        s->append(tx);
        s->append(dsMem);
        s->append(syncCap);
    }

    ret = getValue(DATA_STORE, s);
    deleteAllStringBuffer(10, &s, &sourceRef  ,&displayName, &maxGUIDSize, &rxPref, &rx, &txPref, &tx, &dsMem, &syncCap);

    return ret;
}

StringBuffer* Formatter::getSyncCap(SyncCap* syncCap) {

    if (!syncCap)
        return NULL;

    StringBuffer* ret = NULL;
    StringBuffer* s   = NULL;

    StringBuffer* syncTypes   = NULL;

    syncTypes   = getSyncTypes(syncCap->getSyncType());

    if (NotZeroStringBufferLenght(1, syncTypes)) {
        s = new StringBuffer();
        s->append(syncTypes);
    }

    ret = getValue(SYNC_CAP, s);
    deleteAllStringBuffer(2, &s, &syncTypes);

    return ret;
}

StringBuffer* Formatter::getSyncTypes(ArrayList* syncTypes) {

    if (!syncTypes || !NotZeroArrayLenght(1, syncTypes))
        return NULL;

    StringBuffer* ret = new StringBuffer();
    StringBuffer* tmp = NULL;

    for (int i = 0; i < syncTypes->size(); i++) {
        tmp = getSyncType(((SyncType*)syncTypes->get(i)));
        ret->append(tmp);
        if (tmp) { delete tmp; tmp = NULL; }
    }
    return ret;
}

StringBuffer* Formatter::getSyncType(SyncType* syncType) {

    if (!syncType)
        return NULL;

    StringBuffer* ret = NULL;
    StringBuffer* s   = NULL;
    int  value  = -1;

    value   = syncType->getType();

    if (value > -1) {
        s = new StringBuffer();
        s->append(value);
    }

    ret = getValue(SYNC_TYPE, s);
    deleteAllStringBuffer(1, &s);

    return ret;
}


StringBuffer* Formatter::getDSMem(DSMem* dsMem) {
    if (!dsMem)
        return NULL;

    StringBuffer* ret = new StringBuffer();
    StringBuffer* tmp = NULL;

    tmp = getValue(SHARED_MEM, dsMem->getSharedMem());
    ret->append(tmp);
    if (tmp) { delete tmp; tmp = NULL; }

    tmp = getValue(MAX_MEM,    dsMem->getMaxMem());
    ret->append(tmp);
    if (tmp) { delete tmp; tmp = NULL; }

    tmp = getValue(MAX_ID,     dsMem->getMaxID());
    ret->append(tmp);
    if (tmp) { delete tmp; tmp = NULL; }

    return ret;
}


StringBuffer* Formatter::getContentTypeInfos(ArrayList* contentTypeInfos, const char*TAG) {

    if (!contentTypeInfos || !NotZeroArrayLenght(1, contentTypeInfos))
        return NULL;

    StringBuffer* ret = new StringBuffer();
    StringBuffer* tmp = NULL;

    for (int i = 0; i < contentTypeInfos->size(); i++) {
        tmp = getContentTypeInfo(((ContentTypeInfo*)contentTypeInfos->get(i)), TAG);
        ret->append(tmp);
        if (tmp) { delete tmp; tmp = NULL; }
    }
    return ret;
}


StringBuffer* Formatter::getContentTypeInfo(ContentTypeInfo* contentTypeInfo, const char*TAG) {

    if (!contentTypeInfo)
        return NULL;

    StringBuffer* ret = NULL;
    StringBuffer* s   = NULL;

    StringBuffer*  ctType  = NULL;
    StringBuffer*  verCT   = NULL;

    ctType  = getValue (CT_TYPE, contentTypeInfo->getCTType());
    verCT   = getValue (VER_CT, contentTypeInfo->getVerCT());

    if (NotZeroStringBufferLenght(2, ctType, verCT)) {
        s = new StringBuffer();
        s->append(ctType);
        s->append(verCT);
    }

    ret = getValue(TAG, s);
    deleteAllStringBuffer(3, &s, &ctType, &verCT);

    return ret;
}

StringBuffer* Formatter::getTargetRefs(ArrayList* targetRefs) {

    if (!targetRefs || !NotZeroArrayLenght(1, targetRefs))
        return NULL;

    StringBuffer* ret = new StringBuffer();
    StringBuffer* tmp = NULL;

    for (int i = 0; i < targetRefs->size(); i++) {
        tmp = getTargetRef(((TargetRef*)targetRefs->get(i)));
        ret->append(tmp);
        if (tmp) { delete tmp; tmp = NULL; }
    }
    return ret;
}

StringBuffer* Formatter::getTargetRef(TargetRef* targetRef) {

    if (!targetRef)
        return NULL;

    StringBuffer* ret = NULL;
    StringBuffer* s   = NULL;

    char*       value  = NULL;
    StringBuffer*  target = NULL;

    if ((value = (char*)targetRef->getValue()) != NULL) {
        ;  // the value value is arleady set.
    } else {
        target = getTarget(targetRef->getTarget());
    }

    if (value || NotZeroStringBufferLenght(1, target)) {
        s = new StringBuffer();
        s->append(value);
        s->append(target);
    }

    ret = getValue(TARGET_REF, s);
    deleteAllStringBuffer(2, &s, &target);


    return ret;
}


StringBuffer* Formatter::getSourceRefs(ArrayList* sourceRefs) {

    if (!sourceRefs || !NotZeroArrayLenght(1, sourceRefs))
        return NULL;

    StringBuffer* ret = new StringBuffer();
    StringBuffer* tmp = NULL;

    for (int i = 0; i < sourceRefs->size(); i++) {
        tmp = getSourceRef(((SourceRef*)sourceRefs->get(i)));
        ret->append(tmp);
        if (tmp) { delete tmp; tmp = NULL; }
    }
    return ret;
}

StringBuffer* Formatter::getSourceRef(SourceRef* sourceRef) {

    if (!sourceRef)
        return NULL;

    StringBuffer* ret = NULL;
    StringBuffer* s   = NULL;

    char*       value  = NULL;
    StringBuffer*  source = NULL;

    if ((value = (char*)sourceRef->getValue()) != NULL) {
        ;  // the value value is arleady set.
    } else {
        source = getSource(sourceRef->getSource());
    }

    if (value || NotZeroStringBufferLenght(1, source)) {
        s = new StringBuffer();
        s->append(value);
        s->append(source);
    }

    ret = getValue(SOURCE_REF, s);
    deleteAllStringBuffer(2, &s, &source);


    return ret;
}

/*
* Returns a series of
*  <CTCap> ... </CTCap>
*  <CTCap> ... </CTCap>
*  <CTCap> ... </CTCap>
*
*/
StringBuffer* Formatter::getCTCaps(ArrayList* ctCaps) {
#if 0
    return new StringBuffer(
        "<CTCap>"
        "<CTType>text/x-vcard</CTType>"
        "<PropName>BEGIN</PropName>"
        "<ValEnum>VCARD</ValEnum>"
        "<PropName>VERSION</PropName>"
        "<ValEnum>2.1</ValEnum>"
        "<PropName>END</PropName>"
        "<ValEnum>VCARD</ValEnum>"
        "<PropName>N</PropName>"
        "<PropName>TEL</PropName>"
        "<ParamName>PREF</ParamName>"
        "<ParamName>WORK</ParamName>"
        "<ParamName>HOME</ParamName>"
        "<ParamName>VOICE</ParamName>"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -