diff --git a/ChangeLog b/ChangeLog index 77f90043c..cbef3208c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,7 +2,8 @@ * OpenChange/NSArray+MAPIStore.m (-asMVUnicodeInMemCtx:) renamed from "asArrayOfUnicodeStringsInCtx". - (-asMVUnicodeInMemCtx:): new conversion method. + (-asMVUnicodeInMemCtx:, -asMVLongInMemCtx:): new conversion + methods. * OpenChange/MAPIStoreTypes.m (NSObjectFromValuePointer): simplified method by using set_SPropValue_proptag and diff --git a/OpenChange/NSArray+MAPIStore.h b/OpenChange/NSArray+MAPIStore.h index 7558d7137..06e43f184 100644 --- a/OpenChange/NSArray+MAPIStore.h +++ b/OpenChange/NSArray+MAPIStore.h @@ -36,6 +36,7 @@ + (id) arrayFromMVShort: (const struct ShortArray_r *) mvShort; + (id) arrayFromMVLong: (const struct LongArray_r *) mvLong; +- (struct LongArray_r *) asMVLongInMemCtx: (void *) memCtx; + (id) arrayFromMVI8: (const struct I8Array_r *) mvI8; + (id) arrayFromMVString: (const struct StringArray_r *) mvString; + (id) arrayFromMVUnicode: (const struct WStringArray_r *) mvUnicode; diff --git a/OpenChange/NSArray+MAPIStore.m b/OpenChange/NSArray+MAPIStore.m index c72ecc0ec..5e106c1cb 100644 --- a/OpenChange/NSArray+MAPIStore.m +++ b/OpenChange/NSArray+MAPIStore.m @@ -149,6 +149,26 @@ return mvResult; } +- (struct LongArray_r *) asMVLongInMemCtx: (void *) memCtx +{ + struct LongArray_r *list; + NSNumber *number; + NSInteger count, max; + + max = [self count]; + + list = talloc_zero(memCtx, struct LongArray_r); + list->cValues = max; + list->lpl = talloc_array(list, uint32_t, max); + for (count = 0; count < max; count++) + { + number = [self objectAtIndex: count]; + list->lpl[count] = [number longValue]; + } + + return list; +} + + (id) arrayFromMVI8: (const struct I8Array_r *) mvI8 { NSUInteger count; diff --git a/OpenChange/NSObject+MAPIStore.m b/OpenChange/NSObject+MAPIStore.m index e74e84708..0774a5c14 100644 --- a/OpenChange/NSObject+MAPIStore.m +++ b/OpenChange/NSObject+MAPIStore.m @@ -111,7 +111,9 @@ static int MAPIStoreTallocWrapperDestroy (void *data) case PT_CLSID: *data = [(NSData *) self asGUIDInMemCtx: memCtx]; break; - + case PT_MV_LONG: + *data = [(NSArray *) self asMVLongInMemCtx: memCtx]; + break; case PT_MV_UNICODE: *data = [(NSArray *) self asMVUnicodeInMemCtx: memCtx]; break;