--- /dev/null
+//
+// ITMacResource.m
+// ITKit
+//
+// Created by Joseph Spiros on Thu Dec 25 2003.
+// Copyright (c) 2003 __MyCompanyName__. All rights reserved.
+//
+
+#import "ITMacResource.h"
+
+
+@implementation ITMacResource
+
+static NSMutableDictionary *_resourceTypeClasses = nil;
+
++ (void)_registerClass:(Class)class forType:(ITMacResourceType)type {
+ if (!_resourceTypeClasses) {
+ _resourceTypeClasses = [[NSMutableDictionary dictionary] retain];
+ }
+ [_resourceTypeClasses setObject:class forKey:[NSString stringWithCString:(char *)type]];
+}
+
++ (Class)_classForType:(ITMacResourceType)type {
+ Class _class = [_resourceTypeClasses objectForKey:[NSString stringWithCString:(char *)type]];
+ return ((_class == nil) ? [ITMacResource class] : _class);
+}
+
++ (id)_resourceWithHandle:(Handle)handle { // THIS *WILL* RETURN A MORE SPECIFIC INSTANCE USING THE REGISTRATION DATABASE IF SUCH A CLASS EXISTS
+ return [[[self alloc] _initWithHandle:handle] autorelease];
+}
+
+- (id)_initWithHandle:(Handle)handle {
+ if (self = [super init]) {
+ _handle = handle;
+ }
+ return self;
+}
+
+- (Handle)_handle {
+ return _handle;
+}
+
+- (NSData *)data {
+ NSData *_data;
+ HLock(_handle);
+ _data = [NSData dataWithBytes:(*_handle) length:GetHandleSize(_handle)];
+ HUnlock(_handle);
+ return _data;
+}
+
+- (ITMacResourceType)type {
+ short _id;
+ ResType _type;
+ Str255 _name;
+ GetResInfo(_handle, &_id, &_type, _name);
+ return (ITMacResourceType)_type;
+}
+
+- (NSNumber *)id {
+ short _id;
+ ResType _type;
+ Str255 _name;
+ GetResInfo(_handle, &_id, &_type, _name);
+ return [NSNumber numberWithShort:_id];
+}
+
+- (NSString *)name {
+ short _id;
+ ResType _type;
+ Str255 _name;
+ GetResInfo(_handle, &_id, &_type, _name);
+ return [(NSString*)CFStringCreateWithPascalString(NULL,
+_name, kCFStringEncodingMacRomanLatin1) autorelease];
+}
+
+- (Class)nativeRepresentationClass {
+ return nil;
+}
+
+- (id)nativeRepresentation {
+ return nil;
+}
+
+- (void)dealloc {
+ ReleaseResource(_handle);
+ [super dealloc];
+}
+
+@end