From cad140c0b250ab584146deaba8d5732b82f69db1 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Mon, 11 Jul 2011 15:29:04 +0000 Subject: [PATCH] Monotone-Parent: 5c6353cb6270d51a457d46a8fe98dadae4f37193 Monotone-Revision: 0e4c262d0f94e6fb1bccfcb58387684c97728cfc Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-07-11T15:29:04 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 6 ++++++ OpenChange/NSObject+MAPIStore.h | 11 +++++++++++ OpenChange/NSObject+MAPIStore.m | 26 ++++++++++++++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/ChangeLog b/ChangeLog index 05319c3d7..bc276839d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-07-11 Wolfgang Sourdeau + + * OpenChange/NSObject+MAPIStore.m (-tallocWrapper:): new method + enabling the wrapping of obj-c objects into talloc structures, in + order to ease memory management. + 2011-07-08 Francis Lachapelle * UI/MailerUI/UIxMailListActions.m (-getUIDsAndHeadersInFolder) diff --git a/OpenChange/NSObject+MAPIStore.h b/OpenChange/NSObject+MAPIStore.h index 48345e2ae..a2e12e4e6 100644 --- a/OpenChange/NSObject+MAPIStore.h +++ b/OpenChange/NSObject+MAPIStore.h @@ -27,6 +27,17 @@ #include +struct MAPIStoreTallocWrapper +{ + id MAPIStoreSOGoObject; +}; + +@interface NSObject (MAPIStoreTallocHelpers) + +- (struct MAPIStoreTallocWrapper *) tallocWrapper: (TALLOC_CTX *) tallocCtx; + +@end + @interface NSObject (MAPIStoreDataTypes) - (enum MAPISTATUS) getMAPIValue: (void **) data diff --git a/OpenChange/NSObject+MAPIStore.m b/OpenChange/NSObject+MAPIStore.m index a23d3c080..0f833b8cf 100644 --- a/OpenChange/NSObject+MAPIStore.m +++ b/OpenChange/NSObject+MAPIStore.m @@ -32,6 +32,32 @@ #undef DEBUG #include +@implementation NSObject (MAPIStoreTallocHelpers) + +static int MAPIStoreTallocWrapperDestroy (void *data) +{ + id wrappedObject; + + wrappedObject = data; + [wrappedObject release]; + + return 0; +} + +- (struct MAPIStoreTallocWrapper *) tallocWrapper: (TALLOC_CTX *) tallocCtx +{ + struct MAPIStoreTallocWrapper *wrapper; + + wrapper = talloc_zero (tallocCtx, struct MAPIStoreTallocWrapper); + wrapper->MAPIStoreSOGoObject = self; + talloc_set_destructor ((void *) wrapper, MAPIStoreTallocWrapperDestroy); + [self retain]; + + return wrapper; +} + +@end + @implementation NSObject (MAPIStoreDataTypes) - (enum MAPISTATUS) getMAPIValue: (void **) data