// $Id$ #include "NGMonoDomain.h" #include "NGMonoAssembly.h" #include "common.h" @implementation NGMonoDomain + (id)domainWithName:(NSString *)_name { return [[[self alloc] initWithDomainName:_name] autorelease]; } - (id)initWithDomainName:(NSString *)_name { if ((self = [super init])) { if ((self->domain = mono_jit_init([_name cString])) == NULL) { [self release]; return nil; } } return self; } - (void)dealloc { if (self->domain) mono_jit_cleanup(self->domain); [super dealloc]; } /* accessors */ - (void *)handle { return self->domain; } /* assemblies */ - (NGMonoAssembly *)loadAssemblyAtPath:(NSString *)_path { NGMonoAssembly *assembly; assembly = [[NGMonoAssembly alloc] initWithContentsOfFile:_path inDomain:self]; return [assembly autorelease]; } /* statics */ + (void)mapCFunction:(void *)_func toMonoCall:(NSString *)_name { mono_add_internal_call([_name cString], _func); } @end /* NGMonoDomain */