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

📄 vobject.cpp

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.10平台上编译为嵌入式图形界面操作系统。
💻 CPP
📖 第 1 页 / 共 3 页
字号:
DLLEXPORT(void) cleanVObject(VObject *o){    if (o == 0) return;    if (o->prop) {	/* destroy time: cannot use the iterator here.	   Have to break the cycle in the circular link	   list and turns it into regular NULL-terminated	   list -- since at some point of destruction,	   the reference entry for the iterator to work	   will not longer be valid.	   */	VObject *p;	p = o->prop->next;	o->prop->next = 0;	do {	   VObject *t = p->next;	   cleanVObject(p);	   p = t;	   } while (p);	}    switch (VALUE_TYPE(o)) {	case VCVT_STRINGZ:	case VCVT_RAW:	    // assume they are all allocated by malloc.	    free((char*)STRINGZ_VALUE_OF(o));	    break;	case VCVT_VOBJECT:	    cleanVObject(VOBJECT_VALUE_OF(o));	    break;	}    deleteVObject(o);}DLLEXPORT(void) cleanVObjects(VObject *list){    while (list) {	VObject *t = list;	list = nextVObjectInList(list);	cleanVObject(t);	}}/*----------------------------------------------------------------------  The following is a String Table Facilities.  ----------------------------------------------------------------------*/#define STRTBLSIZE 255static StrItem *strTbl[STRTBLSIZE];static unsigned int hashStr(const char *s){    unsigned int h = 0;    int i;    for (i=0;s[i];i++) {	h += s[i]*i;	}    return h % STRTBLSIZE;}DLLEXPORT(const char*) lookupStr(const char *s){    StrItem *t;    unsigned int h = hashStr(s);    if ((t = strTbl[h]) != 0) {	do {	    if (qstricmp(t->s,s) == 0) {		t->refCnt++;		return t->s;		}	    t = t->next;	    } while (t);	}    s = dupStr(s,0);    strTbl[h] = newStrItem(s,strTbl[h]);    return s;}DLLEXPORT(void) unUseStr(const char *s){    StrItem *t, *p;    unsigned int h = hashStr(s);    if ((t = strTbl[h]) != 0) {	p = t;	do {	    if (qstricmp(t->s,s) == 0) {		t->refCnt--;		if (t->refCnt == 0) {		    if (p == strTbl[h]) {			strTbl[h] = t->next;			}		    else {			p->next = t->next;			}		    deleteStr(t->s);		    deleteStrItem(t);		    return;		    }		}	    p = t;	    t = t->next;	    } while (t);	}}DLLEXPORT(void) cleanStrTbl(){    int i;    for (i=0; i<STRTBLSIZE;i++) {	StrItem *t = strTbl[i];	while (t) {	    StrItem *p;	    deleteStr(t->s);	    p = t;	    t = t->next;	    deleteStrItem(p);	    } while (t);	strTbl[i] = 0;	}}struct PreDefProp {    const char *name;    const char *alias;    const char** fields;    unsigned int flags;    };/* flags in PreDefProp */#define PD_BEGIN	0x1#define PD_INTERNAL	0x2static const char *adrFields[] = {    VCPostalBoxProp,    VCExtAddressProp,    VCStreetAddressProp,    VCCityProp,    VCRegionProp,    VCPostalCodeProp,    VCCountryNameProp,    0};static const char *nameFields[] = {    VCFamilyNameProp,    VCGivenNameProp,    VCAdditionalNamesProp,    VCNamePrefixesProp,    VCNameSuffixesProp,    NULL    };static const char *orgFields[] = {    VCOrgNameProp,    VCOrgUnitProp,    VCOrgUnit2Prop,    VCOrgUnit3Prop,    VCOrgUnit4Prop,    NULL    };static const char *AAlarmFields[] = {    VCRunTimeProp,    VCSnoozeTimeProp,    VCRepeatCountProp,    VCAudioContentProp,    0    };/* ExDate -- has unamed fields *//* RDate -- has unamed fields */static const char *DAlarmFields[] = {    VCRunTimeProp,    VCSnoozeTimeProp,    VCRepeatCountProp,    VCDisplayStringProp,    0    };static const char *MAlarmFields[] = {    VCRunTimeProp,    VCSnoozeTimeProp,    VCRepeatCountProp,    VCEmailAddressProp,    VCNoteProp,    0    };static const char *PAlarmFields[] = {    VCRunTimeProp,    VCSnoozeTimeProp,    VCRepeatCountProp,    VCProcedureNameProp,    0    };static struct PreDefProp propNames[] = {    { VC7bitProp, 0, 0, 0 },    { VC8bitProp, 0, 0, 0 },    { VCAAlarmProp, 0, AAlarmFields, 0 },    { VCAdditionalNamesProp, 0, 0, 0 },    { VCAdrProp, 0, adrFields, 0 },    { VCAgentProp, 0, 0, 0 },    { VCAIFFProp, 0, 0, 0 },    { VCAOLProp, 0, 0, 0 },    { VCAppleLinkProp, 0, 0, 0 },    { VCAttachProp, 0, 0, 0 },    { VCAttendeeProp, 0, 0, 0 },    { VCATTMailProp, 0, 0, 0 },    { VCAudioContentProp, 0, 0, 0 },    { VCAVIProp, 0, 0, 0 },    { VCBase64Prop, 0, 0, 0 },    { VCBBSProp, 0, 0, 0 },    { VCBirthDateProp, 0, 0, 0 },    { VCBMPProp, 0, 0, 0 },    { VCBodyProp, 0, 0, 0 },    { VCBusinessRoleProp, 0, 0, 0 },    { VCCalProp, 0, 0, PD_BEGIN },    { VCCaptionProp, 0, 0, 0 },    { VCCardProp, 0, 0, PD_BEGIN },    { VCCarProp, 0, 0, 0 },    { VCCategoriesProp, 0, 0, 0 },    { VCCellularProp, 0, 0, 0 },    { VCCGMProp, 0, 0, 0 },    { VCCharSetProp, 0, 0, 0 },    { VCCIDProp, VCContentIDProp, 0, 0 },    { VCCISProp, 0, 0, 0 },    { VCCityProp, 0, 0, 0 },    { VCClassProp, 0, 0, 0 },    { VCCommentProp, 0, 0, 0 },    { VCCompletedProp, 0, 0, 0 },    { VCContentIDProp, 0, 0, 0 },    { VCCountryNameProp, 0, 0, 0 },    { VCDAlarmProp, 0, DAlarmFields, 0 },    { VCDataSizeProp, 0, 0, PD_INTERNAL },    { VCDayLightProp, 0, 0, 0 },    { VCDCreatedProp, 0, 0, 0 },    { VCDeliveryLabelProp, 0, 0, 0 },    { VCDescriptionProp, 0, 0, 0 },    { VCDIBProp, 0, 0, 0 },    { VCDisplayStringProp, 0, 0, 0 },    { VCDomesticProp, 0, 0, 0 },    { VCDTendProp, 0, 0, 0 },    { VCDTstartProp, 0, 0, 0 },    { VCDueProp, 0, 0, 0 },    { VCEmailAddressProp, 0, 0, 0 },    { VCEncodingProp, 0, 0, 0 },    { VCEndProp, 0, 0, 0 },    { VCEventProp, 0, 0, PD_BEGIN },    { VCEWorldProp, 0, 0, 0 },    { VCExNumProp, 0, 0, 0 },    { VCExpDateProp, 0, 0, 0 },    { VCExpectProp, 0, 0, 0 },    { VCExtAddressProp, 0, 0, 0 },    { VCFamilyNameProp, 0, 0, 0 },    { VCFaxProp, 0, 0, 0 },    { VCFullNameProp, 0, 0, 0 },    { VCGeoLocationProp, 0, 0, 0 },    { VCGeoProp, 0, 0, 0 },    { VCGIFProp, 0, 0, 0 },    { VCGivenNameProp, 0, 0, 0 },    { VCGroupingProp, 0, 0, 0 },    { VCHomeProp, 0, 0, 0 },    { VCIBMMailProp, 0, 0, 0 },    { VCInlineProp, 0, 0, 0 },    { VCInternationalProp, 0, 0, 0 },    { VCInternetProp, 0, 0, 0 },    { VCISDNProp, 0, 0, 0 },    { VCJPEGProp, 0, 0, 0 },    { VCLanguageProp, 0, 0, 0 },    { VCLastModifiedProp, 0, 0, 0 },    { VCLastRevisedProp, 0, 0, 0 },    { VCLocationProp, 0, 0, 0 },    { VCLogoProp, 0, 0, 0 },    { VCMailerProp, 0, 0, 0 },    { VCMAlarmProp, 0, MAlarmFields, 0 },    { VCMCIMailProp, 0, 0, 0 },    { VCMessageProp, 0, 0, 0 },    { VCMETProp, 0, 0, 0 },    { VCModemProp, 0, 0, 0 },    { VCMPEG2Prop, 0, 0, 0 },    { VCMPEGProp, 0, 0, 0 },    { VCMSNProp, 0, 0, 0 },    { VCNamePrefixesProp, 0, 0, 0 },    { VCNameProp, 0, nameFields, 0 },    { VCNameSuffixesProp, 0, 0, 0 },    { VCNoteProp, 0, 0, 0 },    { VCOrgNameProp, 0, 0, 0 },    { VCOrgProp, 0, orgFields, 0 },    { VCOrgUnit2Prop, 0, 0, 0 },    { VCOrgUnit3Prop, 0, 0, 0 },    { VCOrgUnit4Prop, 0, 0, 0 },    { VCOrgUnitProp, 0, 0, 0 },    { VCPagerProp, 0, 0, 0 },    { VCPAlarmProp, 0, PAlarmFields, 0 },    { VCParcelProp, 0, 0, 0 },    { VCPartProp, 0, 0, 0 },    { VCPCMProp, 0, 0, 0 },    { VCPDFProp, 0, 0, 0 },    { VCPGPProp, 0, 0, 0 },    { VCPhotoProp, 0, 0, 0 },    { VCPICTProp, 0, 0, 0 },    { VCPMBProp, 0, 0, 0 },    { VCPostalBoxProp, 0, 0, 0 },    { VCPostalCodeProp, 0, 0, 0 },    { VCPostalProp, 0, 0, 0 },    { VCPowerShareProp, 0, 0, 0 },    { VCPreferredProp, 0, 0, 0 },    { VCPriorityProp, 0, 0, 0 },    { VCProcedureNameProp, 0, 0, 0 },    { VCProdIdProp, 0, 0, 0 },    { VCProdigyProp, 0, 0, 0 },    { VCPronunciationProp, 0, 0, 0 },    { VCPSProp, 0, 0, 0 },    { VCPublicKeyProp, 0, 0, 0 },    { VCQPProp, VCQuotedPrintableProp, 0, 0 },    { VCQuickTimeProp, 0, 0, 0 },    { VCQuotedPrintableProp, 0, 0, 0 },    { VCRDateProp, 0, 0, 0 },    { VCRegionProp, 0, 0, 0 },    { VCRelatedToProp, 0, 0, 0 },    { VCRepeatCountProp, 0, 0, 0 },    { VCResourcesProp, 0, 0, 0 },    { VCRNumProp, 0, 0, 0 },    { VCRoleProp, 0, 0, 0 },    { VCRRuleProp, 0, 0, 0 },    { VCRSVPProp, 0, 0, 0 },    { VCRunTimeProp, 0, 0, 0 },    { VCSequenceProp, 0, 0, 0 },    { VCSnoozeTimeProp, 0, 0, 0 },    { VCStartProp, 0, 0, 0 },    { VCStatusProp, 0, 0, 0 },    { VCStreetAddressProp, 0, 0, 0 },    { VCSubTypeProp, 0, 0, 0 },    { VCSummaryProp, 0, 0, 0 },    { VCTelephoneProp, 0, 0, 0 },    { VCTIFFProp, 0, 0, 0 },    { VCTimeZoneProp, 0, 0, 0 },    { VCTitleProp, 0, 0, 0 },    { VCTLXProp, 0, 0, 0 },    { VCTodoProp, 0, 0, PD_BEGIN },    { VCTranspProp, 0, 0, 0 },    { VCUniqueStringProp, 0, 0, 0 },    { VCURLProp, 0, 0, 0 },    { VCURLValueProp, 0, 0, 0 },    { VCValueProp, 0, 0, 0 },    { VCVersionProp, 0, 0, 0 },    { VCVideoProp, 0, 0, 0 },    { VCVoiceProp, 0, 0, 0 },    { VCWAVEProp, 0, 0, 0 },    { VCWMFProp, 0, 0, 0 },    { VCWorkProp, 0, 0, 0 },    { VCX400Prop, 0, 0, 0 },    { VCX509Prop, 0, 0, 0 },    { VCXRuleProp, 0, 0, 0 },    { 0,0,0,0 }    };static struct PreDefProp* lookupPropInfo(const char* str){    /* brute force for now, could use a hash table here. */    int i;	    for (i = 0; propNames[i].name; i++)	if (qstricmp(str, propNames[i].name) == 0) {	    return &propNames[i];	    }        return 0;}DLLEXPORT(const char*) lookupProp_(const char* str){    int i;	    for (i = 0; propNames[i].name; i++)	if (qstricmp(str, propNames[i].name) == 0) {	    const char* s;	    s = propNames[i].alias?propNames[i].alias:propNames[i].name;	    return lookupStr(s);	    }    return lookupStr(str);}DLLEXPORT(const char*) lookupProp(const char* str){    int i;	    for (i = 0; propNames[i].name; i++)	if (qstricmp(str, propNames[i].name) == 0) {	    const char *s;	    fieldedProp = propNames[i].fields;	    s = propNames[i].alias?propNames[i].alias:propNames[i].name;	    return lookupStr(s);	    }    fieldedProp = 0;    return lookupStr(str);}/*----------------------------------------------------------------------  APIs to Output text form.  ----------------------------------------------------------------------*/#define OFILE_REALLOC_SIZE 256typedef struct OFile {    FILE *fp;    char *s;    int len;    int limit;    int alloc:1;    int fail:1;    } OFile;#if 0static void appendsOFile(OFile *fp, const char *s){    int slen;    if (fp->fail) return;    slen  = strlen(s);    if (fp->fp) {	fwrite(s,1,slen,fp->fp);	}    else {stuff:	if (fp->len + slen < fp->limit) {	    memcpy(fp->s+fp->len,s,slen);	    fp->len += slen;	    return;	    }	else if (fp->alloc) {	    fp->limit = fp->limit + OFILE_REALLOC_SIZE;	    if (OFILE_REALLOC_SIZE <= slen) fp->limit += slen;	    fp->s = (char *) realloc(fp->s,fp->limit);	    if (fp->s) goto stuff;	    }	if (fp->alloc)	    free(fp->s);	fp->s = 0;	fp->fail = 1;	}}static void appendcOFile(OFile *fp, char c){    if (fp->fail) return;    if (fp->fp) {	fputc(c,fp->fp);	}    else {stuff:	if (fp->len+1 < fp->limit) {	    fp->s[fp->len] = c;	    fp->len++;	    return;	    }	else if (fp->alloc) {	    fp->limit = fp->limit + OFILE_REALLOC_SIZE;	    fp->s = (char *) realloc(fp->s,fp->limit);	    if (fp->s) goto stuff;	    }	if (fp->alloc)	    free(fp->s);	fp->s = 0;	fp->fail = 1;	}}#else

⌨️ 快捷键说明

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