From 7616ee92a1ed7ca4826a5fc74197d3419d760dca Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 22 Nov 2011 19:53:53 +0000 Subject: [PATCH] Monotone-Parent: 3a115c300e05230d3e0392a7aa86ccee296f50cc Monotone-Revision: c9072cd9f62ce341982a28f6b662d079949b101d Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-11-22T19:53:53 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 3 ++- OpenChange/NSArray+MAPIStore.h | 1 + OpenChange/NSArray+MAPIStore.m | 20 ++++++++++++++++++++ OpenChange/NSObject+MAPIStore.m | 4 +++- 4 files changed, 26 insertions(+), 2 deletions(-) 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;