//
|
|
// PEPAutoPointer.m
|
|
// pEpObjCAdapter
|
|
//
|
|
// Created by Dirk Zimmermann on 11.04.18.
|
|
// Copyright © 2018 p≡p. All rights reserved.
|
|
//
|
|
|
|
#import "PEPAutoPointer.h"
|
|
|
|
@interface PEPAutoPointer ()
|
|
|
|
@property (nonatomic) void *thePointer;
|
|
|
|
@end
|
|
|
|
@implementation PEPAutoPointer
|
|
|
|
- (instancetype)initWithPointer:(void *)pointer freeFn:(void (*)(void *))freeFn
|
|
{
|
|
self = [super init];
|
|
if (self) {
|
|
_thePointer = pointer;
|
|
_freeFn = freeFn;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (instancetype)init
|
|
{
|
|
return [self initWithPointer:nil freeFn:free];
|
|
}
|
|
|
|
- (void **)voidPointerPointer
|
|
{
|
|
return &_thePointer;
|
|
}
|
|
|
|
- (char **)charPointerPointer
|
|
{
|
|
return (char **) self.voidPointerPointer;
|
|
}
|
|
|
|
- (void *)voidPointer
|
|
{
|
|
return self.thePointer;
|
|
}
|
|
|
|
- (char *)charPointer
|
|
{
|
|
return (char *) self.voidPointer;
|
|
}
|
|
|
|
- (void)dealloc
|
|
{
|
|
if (_thePointer) {
|
|
self.freeFn(_thePointer);
|
|
}
|
|
}
|
|
|
|
@end
|