From 9138d50a728106460e39261a1c4080e092a8ffc3 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 11 Feb 2011 21:33:15 +0000 Subject: [PATCH] Monotone-Parent: 1178361f8707a8028000acf5b245a4eef4ee3f92 Monotone-Revision: 5d75a41930454e9254e679544ba3cf4f8029e957 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-02-11T21:33:15 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 4 ++ OpenChange/NSAutoreleasePool+MAPIStore.h | 37 ++++++++++++++ OpenChange/NSAutoreleasePool+MAPIStore.m | 62 ++++++++++++++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 OpenChange/NSAutoreleasePool+MAPIStore.h create mode 100644 OpenChange/NSAutoreleasePool+MAPIStore.m diff --git a/ChangeLog b/ChangeLog index 7695bcefc..f119ae109 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2011-02-11 Wolfgang Sourdeau + * OpenChange/NSAutoreleasePool+MAPIStore.m: new utility module + that enables the reparenting of a talloc pointer to the current + NSAutoreleasePool. + * OpenChange/MAPIStoreContactsMessageTable.m (-sortIdentifierForProperty:): implemented basic table for supporting the sorting implied by the use of the addressbook label diff --git a/OpenChange/NSAutoreleasePool+MAPIStore.h b/OpenChange/NSAutoreleasePool+MAPIStore.h new file mode 100644 index 000000000..78a7fe871 --- /dev/null +++ b/OpenChange/NSAutoreleasePool+MAPIStore.h @@ -0,0 +1,37 @@ +/* NSAutoreleasePool+MAPIStore.h - this file is part of $PROJECT_NAME_HERE$ + * + * Copyright (C) 2011 Inverse inc + * + * Author: Wolfgang Sourdeau + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef NSAUTORELEASEPOOL_MAPISTORE_H +#define NSAUTORELEASEPOOL_MAPISTORE_H + +#import + +@interface NSAutoreleasedTallocPointer : NSObject +{ + void *ptr; +} + +@end + +void NSAutoreleaseTallocPointer (void *ptr); + +#endif /* NSAUTORELEASEPOOL_MAPISTORE_H */ diff --git a/OpenChange/NSAutoreleasePool+MAPIStore.m b/OpenChange/NSAutoreleasePool+MAPIStore.m new file mode 100644 index 000000000..aea6419b7 --- /dev/null +++ b/OpenChange/NSAutoreleasePool+MAPIStore.m @@ -0,0 +1,62 @@ +/* NSAutoreleasePool+MAPIStore.m - this file is part of SOGo + * + * Copyright (C) 2011 Inverse inc + * + * Author: Wolfgang Sourdeau + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include + +#import "NSAutoreleasePool+MAPIStore.h" + +@implementation NSAutoreleasedTallocPointer + +- (id) init +{ + if ((self = [super init])) + { + ptr = NULL; + } + + return self; +} + +- (void) setPtr: (void *) newPtr +{ + ptr = newPtr; +} + +- (void) dealloc +{ + if (ptr) + talloc_free (ptr); + [super dealloc]; +} + +@end + +void NSAutoreleaseTallocPointer (void *ptr) +{ + NSAutoreleasedTallocPointer *newPointer; + + talloc_steal (NULL, ptr); + + newPointer = [NSAutoreleasedTallocPointer new]; + [newPointer setPtr: ptr]; + [newPointer autorelease]; +}