@@ -32,12 +32,11 @@ #import "OFOutOfRangeException.h" #import "OFSetWindowsRegistryValueFailedException.h" OF_DIRECT_MEMBERS @interface OFWindowsRegistryKey () -- (instancetype)of_initWithHKey: (HKEY)hKey - close: (bool)close; +- (instancetype)of_initWithHKey: (HKEY)hKey close: (bool)close; @end @implementation OFWindowsRegistryKey + (instancetype)classesRootKey { @@ -67,12 +66,11 @@ { return [[[self alloc] of_initWithHKey: HKEY_USERS close: false] autorelease]; } -- (instancetype)of_initWithHKey: (HKEY)hKey - close: (bool)close +- (instancetype)of_initWithHKey: (HKEY)hKey close: (bool)close { self = [super init]; _hKey = hKey; _close = close; @@ -183,12 +181,11 @@ return [[[OFWindowsRegistryKey alloc] of_initWithHKey: subKey close: true] autorelease]; } -- (OFData *)dataForValue: (OFString *)value - type: (DWORD *)type +- (OFData *)dataForValueNamed: (OFString *)name type: (DWORD *)type { void *pool = objc_autoreleasePoolPush(); BYTE stackBuffer[256], *buffer = stackBuffer; DWORD length = sizeof(stackBuffer); OFMutableData *ret = nil; @@ -195,15 +192,15 @@ bool winNT = [OFSystemInfo isWindowsNT]; LSTATUS status; for (;;) { if (winNT) - status = RegQueryValueExW(_hKey, value.UTF16String, + status = RegQueryValueExW(_hKey, name.UTF16String, NULL, type, buffer, &length); else status = RegQueryValueExA(_hKey, - [value cStringWithEncoding: [OFLocale encoding]], + [name cStringWithEncoding: [OFLocale encoding]], NULL, type, buffer, &length); switch (status) { case ERROR_SUCCESS: if (buffer == stackBuffer) { @@ -233,56 +230,53 @@ continue; default: @throw [OFGetWindowsRegistryValueFailedException exceptionWithRegistryKey: self - value: value + valueName: name status: status]; } } } - (void)setData: (OFData *)data - forValue: (OFString *)value + forValueNamed: (OFString *)name type: (DWORD)type { size_t length = data.count * data.itemSize; LSTATUS status; if (length > UINT32_MAX) @throw [OFOutOfRangeException exception]; if ([OFSystemInfo isWindowsNT]) - status = RegSetValueExW(_hKey, value.UTF16String, 0, type, + status = RegSetValueExW(_hKey, name.UTF16String, 0, type, data.items, (DWORD)length); else status = RegSetValueExA(_hKey, - [value cStringWithEncoding: [OFLocale encoding]], 0, type, + [name cStringWithEncoding: [OFLocale encoding]], 0, type, data.items, (DWORD)length); if (status != ERROR_SUCCESS) @throw [OFSetWindowsRegistryValueFailedException exceptionWithRegistryKey: self - value: value + valueName: name data: data type: type status: status]; } -- (OFString *)stringForValue: (OFString *)value +- (OFString *)stringForValueNamed: (OFString *)name { - return [self stringForValue: value - type: NULL]; + return [self stringForValueNamed: name type: NULL]; } -- (OFString *)stringForValue: (OFString *)value - type: (DWORD *)typeOut +- (OFString *)stringForValueNamed: (OFString *)name type: (DWORD *)typeOut { void *pool = objc_autoreleasePoolPush(); DWORD type; - OFData *data = [self dataForValue: value - type: &type]; + OFData *data = [self dataForValueNamed: name type: &type]; OFString *ret; if (data == nil) return nil; @@ -291,11 +285,11 @@ if (data.itemSize != 1) @throw [OFInvalidFormatException exception]; if ([OFSystemInfo isWindowsNT]) { - const of_char16_t *UTF16String = data.items; + const OFChar16 *UTF16String = data.items; size_t length = data.count; if (length % 2 == 1) @throw [OFInvalidFormatException exception]; @@ -340,60 +334,54 @@ objc_autoreleasePoolPop(pool); return [ret autorelease]; } -- (void)setString: (OFString *)string - forValue: (OFString *)value +- (void)setString: (OFString *)string forValueNamed: (OFString *)name { - [self setString: string - forValue: value - type: REG_SZ]; + [self setString: string forValueNamed: name type: REG_SZ]; } - (void)setString: (OFString *)string - forValue: (OFString *)value + forValueNamed: (OFString *)name type: (DWORD)type { void *pool = objc_autoreleasePoolPush(); OFData *data; if ([OFSystemInfo isWindowsNT]) data = [OFData dataWithItems: string.UTF16String count: string.UTF16StringLength + 1 - itemSize: sizeof(of_char16_t)]; + itemSize: sizeof(OFChar16)]; else { - of_string_encoding_t encoding = [OFLocale encoding]; + OFStringEncoding encoding = [OFLocale encoding]; const char *cString = [string cStringWithEncoding: encoding]; size_t length = [string cStringLengthWithEncoding: encoding]; - data = [OFData dataWithItems: cString - count: length + 1]; + data = [OFData dataWithItems: cString count: length + 1]; } - [self setData: data - forValue: value - type: type]; + [self setData: data forValueNamed: name type: type]; objc_autoreleasePoolPop(pool); } -- (void)deleteValue: (OFString *)value +- (void)deleteValueNamed: (OFString *)name { void *pool = objc_autoreleasePoolPush(); LSTATUS status; if ([OFSystemInfo isWindowsNT]) - status = RegDeleteValueW(_hKey, value.UTF16String); + status = RegDeleteValueW(_hKey, name.UTF16String); else status = RegDeleteValueA(_hKey, - [value cStringWithEncoding: [OFLocale encoding]]); + [name cStringWithEncoding: [OFLocale encoding]]); if (status != ERROR_SUCCESS) @throw [OFDeleteWindowsRegistryValueFailedException exceptionWithRegistryKey: self - value: value + valueName: name status: status]; objc_autoreleasePoolPop(pool); }