// // LinPhoneWraper.m // HDLLinPhoneSDK // // Created by 陈启扬 on 2021/8/12. // Copyright © 2021 陈启扬. All rights reserved. // #import "LinPhoneWraper.h" @implementation LinphoneObject -(instancetype)initWith:(belle_sip_object_t*)cPointer{ self = [super init]; //用于初始化父类 if (self) { self.cPtr1 = cPointer; belle_sip_object_ref(self.cPtr1); } return self; } -(void)dealloc{ belle_sip_object_data_set(self.cPtr1, "swiftRef", nil, nil); belle_sip_object_unref(self.cPtr1); } @end @implementation Config +(instancetype)getSwiftObject:(LinphoneConfig*)cPointer{ id result = (__bridge id)(belle_sip_object_data_get(cPointer, "swiftRef")); if (result != nil) { return (Config *)result; } void *sObject=(__bridge void *)([[self alloc] initWith:cPointer]) ; // belle_sip_object_t *sObject=(__bridge belle_sip_object_t *)([[self alloc] initWith:cPointer]); belle_sip_object_data_set(cPointer, "swiftRef", sObject, nil); // let sObject = Config(cPointer: cObject) // belle_sip_object_data_set(UnsafeMutablePointer(cObject), "swiftRef", UnsafeMutableRawPointer(Unmanaged.passUnretained(sObject).toOpaque()), nil) return (__bridge Config *)(sObject); } -(void)setString:(NSString *)section key:(NSString *)key value:(NSString *)value{ linphone_config_set_string(self.cPtr, section.UTF8String, key.UTF8String, value.UTF8String); } -(NSString *)getString:(NSString *)section key:(NSString *)key defaultString:(NSString *)defaultString{ return [LinPhoneWraper charArrayToString: linphone_config_get_string(self.cPtr, section.UTF8String, key.UTF8String, defaultString.UTF8String)]; } -(void)setInt:(NSString *)section key:(NSString *)key value:(int)value{ linphone_config_set_int(self.cPtr, section.UTF8String, key.UTF8String, value); } -(int)getInt:(NSString *)section key:(NSString *)key defaultValue:(int)defaultValue{ return linphone_config_get_int(self.cPtr, section.UTF8String, key.UTF8String,defaultValue ); } @end @implementation LinPhoneWraper +(NSString *) charArrayToString:(nullable const char *)charPointer{ if (charPointer) { return [NSString stringWithCString:charPointer encoding:NSUTF8StringEncoding]; }else{ return @""; } } @end