Monotone-Parent: 3d823daf85269363807bfb3cfb07776ba5279782
Monotone-Revision: 137388e5a62c0c3196b473a491b63e122e1187ab Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2010-12-03T18:29:19 Monotone-Branch: ca.inverse.sogomaint-2.0.2
parent
a8f51464b2
commit
21c13343c5
|
@ -1,5 +1,9 @@
|
|||
2010-12-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
|
||||
* OpenChange/MAPIStoreTypes.m (NSObjectFromMAPISPropValue): new
|
||||
helper function, similar in semantics to NSObjectFromSPropValue
|
||||
but taking a struct mapi_SPropValue * as parameter.
|
||||
|
||||
* OpenChange/NSData+MAPIStore.m: (+dataWithShortBinary:): new
|
||||
constructor for returning an NSData instance from a struct
|
||||
SBinary_short.
|
||||
|
|
|
@ -36,6 +36,7 @@ uint32_t *MAPILongValue (void *memCtx, uint32_t value);
|
|||
uint64_t *MAPILongLongValue (void *memCtx, uint64_t value);
|
||||
|
||||
id NSObjectFromSPropValue (const struct SPropValue *);
|
||||
id NSObjectFromMAPISPropValue (const struct mapi_SPropValue *);
|
||||
id NSObjectFromStreamData (enum MAPITAGS property, NSData *streamData);
|
||||
|
||||
static inline NSNumber *
|
||||
|
|
|
@ -71,6 +71,63 @@ MAPILongLongValue (void *memCtx, uint64_t value)
|
|||
return llongValue;
|
||||
}
|
||||
|
||||
id
|
||||
NSObjectFromMAPISPropValue (const struct mapi_SPropValue *value)
|
||||
{
|
||||
short int valueType;
|
||||
id result;
|
||||
|
||||
valueType = (value->ulPropTag & 0xffff);
|
||||
switch (valueType)
|
||||
{
|
||||
case PT_NULL:
|
||||
result = [NSNull null];
|
||||
break;
|
||||
case PT_SHORT:
|
||||
result = [NSNumber numberWithShort: value->value.i];
|
||||
break;
|
||||
case PT_LONG:
|
||||
result = [NSNumber numberWithLong: value->value.l];
|
||||
break;
|
||||
case PT_BOOLEAN:
|
||||
result = [NSNumber numberWithBool: value->value.b];
|
||||
break;
|
||||
case PT_DOUBLE:
|
||||
result = [NSNumber numberWithDouble: value->value.dbl];
|
||||
break;
|
||||
case PT_UNICODE:
|
||||
result = [NSString stringWithUTF8String: value->value.lpszW];
|
||||
break;
|
||||
case PT_STRING8:
|
||||
result = [NSString stringWithUTF8String: value->value.lpszA];
|
||||
break;
|
||||
case PT_SYSTIME:
|
||||
result = [NSCalendarDate dateFromFileTime: &(value->value.ft)];
|
||||
break;
|
||||
case PT_BINARY:
|
||||
// lpProps->value.bin = *((const struct Binary_r *)data);
|
||||
|
||||
result = [NSData dataWithShortBinary: &value->value.bin];
|
||||
break;
|
||||
default:
|
||||
// #define PT_UNSPECIFIED 0x0
|
||||
// #define PT_I2 0x2
|
||||
// #define PT_CURRENCY 0x6
|
||||
// #define PT_APPTIME 0x7
|
||||
// #define PT_ERROR 0xa
|
||||
// #define PT_OBJECT 0xd
|
||||
// #define PT_I8 0x14
|
||||
// #define PT_CLSID 0x48
|
||||
// #define PT_SVREID 0xFB
|
||||
// #define PT_SRESTRICT 0xFD
|
||||
// #define PT_ACTIONS 0xFE
|
||||
result = [NSNull null];
|
||||
NSLog (@"object type not handled: %d (0x.4x)", valueType, valueType);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
id
|
||||
NSObjectFromSPropValue (const struct SPropValue *value)
|
||||
{
|
||||
|
@ -151,7 +208,8 @@ id NSObjectFromStreamData (enum MAPITAGS property, NSData* streamData)
|
|||
break;
|
||||
default:
|
||||
[NSException raise: @"MAPIStoreStreamTypeException"
|
||||
format: @"invalid data type"];
|
||||
format: @"invalid data type"];
|
||||
result = nil;
|
||||
}
|
||||
|
||||
return result;
|
||||
|
|
Loading…
Reference in New Issue