Skip to content
This repository has been archived by the owner on Jan 13, 2021. It is now read-only.

Commit

Permalink
Initial commit.
Browse files Browse the repository at this point in the history
  • Loading branch information
logancollins committed May 13, 2012
0 parents commit 5ecee24
Show file tree
Hide file tree
Showing 42 changed files with 3,822 additions and 0 deletions.
17 changes: 17 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Xcode
build
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
*.xcodeproj/project.xcworkspace
xcuserdata
profile
*.moved-aside

# OS files
.DS_Store
586 changes: 586 additions & 0 deletions Mocha.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

24 changes: 24 additions & 0 deletions Mocha/BridgeSupport/MOBridgeSupportController.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//
// MOBridgeSupportController.h
// Mocha
//
// Created by Logan Collins on 5/11/12.
// Copyright (c) 2012 Sunflower Softworks. All rights reserved.
//

#import <Foundation/Foundation.h>


@class MOBridgeSupportSymbol;


@interface MOBridgeSupportController : NSObject

+ (MOBridgeSupportController *)sharedController;

- (BOOL)isBridgeSupportLoadedForURL:(NSURL *)aURL;
- (BOOL)loadBridgeSupportAtURL:(NSURL *)aURL error:(NSError **)outError;

- (MOBridgeSupportSymbol *)performQueryForSymbolName:(NSString *)name;

@end
94 changes: 94 additions & 0 deletions Mocha/BridgeSupport/MOBridgeSupportController.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
//
// MOBridgeSupportController.m
// Mocha
//
// Created by Logan Collins on 5/11/12.
// Copyright (c) 2012 Sunflower Softworks. All rights reserved.
//

#import "MOBridgeSupportController.h"

#import "MOBridgeSupportLibrary.h"
#import "MOBridgeSupportSymbol.h"

#import "MOBridgeSupportParser.h"


@implementation MOBridgeSupportController {
NSMutableArray *_loadedURLs;
NSMutableArray *_loadedLibraries;
NSMutableDictionary *_symbols;
MOBridgeSupportParser *_parser;
}

+ (MOBridgeSupportController *)sharedController {
static MOBridgeSupportController *sharedController = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedController = [[self alloc] init];
});
return sharedController;
}

- (id)init {
self = [super init];
if (self) {
_loadedURLs = [[NSMutableArray alloc] init];
_loadedLibraries = [[NSMutableArray alloc] init];
_symbols = [[NSMutableDictionary alloc] init];
_parser = [[MOBridgeSupportParser alloc] init];
}
return self;
}

- (void)dealloc {
[_loadedURLs release];
[_loadedLibraries release];
[_symbols release];
[_parser release];
[super dealloc];
}


#pragma mark -
#pragma mark Loading

- (BOOL)isBridgeSupportLoadedForURL:(NSURL *)aURL {
return [_loadedURLs containsObject:aURL];
}

- (BOOL)loadBridgeSupportAtURL:(NSURL *)aURL error:(NSError **)outError {
if ([self isBridgeSupportLoadedForURL:aURL]) {
return YES;
}

MOBridgeSupportLibrary *library = [_parser libraryWithBridgeSupportURL:aURL error:outError];
if (library == nil) {
return NO;
}

[_loadedURLs addObject:aURL];
[_loadedLibraries addObject:library];

for (NSString *name in library.symbols) {
MOBridgeSupportSymbol *symbol = [library.symbols objectForKey:name];
if ([_symbols objectForKey:name] == nil) {
[_symbols setObject:symbol forKey:name];
}
else {
//NSLog(@"Symbol with name \"%@\" is already loaded.", name);
}
}

return YES;
}


#pragma mark -
#pragma mark Queries

- (MOBridgeSupportSymbol *)performQueryForSymbolName:(NSString *)name {
return [_symbols objectForKey:name];
}

@end
29 changes: 29 additions & 0 deletions Mocha/BridgeSupport/MOBridgeSupportLibrary.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
//
// MOBridgeSupportLibrary.h
// Mocha
//
// Created by Logan Collins on 5/11/12.
// Copyright (c) 2012 Sunflower Softworks. All rights reserved.
//

#import <Foundation/Foundation.h>


@class MOBridgeSupportSymbol;


@interface MOBridgeSupportLibrary : NSObject

@property (copy) NSString *name;
@property (copy) NSURL *URL;

@property (copy) NSArray *dependencies;
- (void)addDependency:(NSString *)dependency;
- (void)removeDependency:(NSString *)dependency;

@property (copy) NSDictionary *symbols;
- (MOBridgeSupportSymbol *)symbolWithName:(NSString *)name;
- (void)setSymbol:(MOBridgeSupportSymbol *)symbol forName:(NSString *)name;
- (void)removeSymbolForName:(NSString *)name;

@end
85 changes: 85 additions & 0 deletions Mocha/BridgeSupport/MOBridgeSupportLibrary.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
//
// MOBridgeSupportLibrary.m
// Mocha
//
// Created by Logan Collins on 5/11/12.
// Copyright (c) 2012 Sunflower Softworks. All rights reserved.
//

#import "MOBridgeSupportLibrary.h"


@implementation MOBridgeSupportLibrary {
NSMutableArray *_dependencies;
NSMutableDictionary *_symbols;
}

@synthesize name=_name;
@synthesize URL=_URL;

- (id)init {
self = [super init];
if (self) {
_dependencies = [[NSMutableArray alloc] init];
_symbols = [[NSMutableDictionary alloc] init];
}
return self;
}

- (void)dealloc {
[_name release];
[_URL release];
[_dependencies release];
[_symbols release];
[super dealloc];
}


#pragma mark -
#pragma mark Dependencies

- (NSArray *)dependencies {
return _dependencies;
}

- (void)setDependencies:(NSArray *)dependencies {
[_dependencies setArray:dependencies];
}

- (void)addDependency:(NSString *)dependency {
if (![_dependencies containsObject:dependency]) {
[_dependencies addObject:dependency];
}
}

- (void)removeDependency:(NSString *)dependency {
if ([_dependencies containsObject:dependency]) {
[_dependencies removeObject:dependency];
}
}


#pragma mark -
#pragma mark Symbols

- (NSDictionary *)symbols {
return _symbols;
}

- (void)setSymbols:(NSDictionary *)symbols {
[_symbols setDictionary:symbols];
}

- (MOBridgeSupportSymbol *)symbolWithName:(NSString *)name {
return [_symbols objectForKey:name];
}

- (void)setSymbol:(MOBridgeSupportSymbol *)symbol forName:(NSString *)name {
[_symbols setObject:symbol forKey:name];
}

- (void)removeSymbolForName:(NSString *)name {
[_symbols removeObjectForKey:name];
}

@end
19 changes: 19 additions & 0 deletions Mocha/BridgeSupport/MOBridgeSupportParser.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
//
// MOBridgeSupportParser.h
// Mocha
//
// Created by Logan Collins on 5/11/12.
// Copyright (c) 2012 Sunflower Softworks. All rights reserved.
//

#import <Foundation/Foundation.h>


@class MOBridgeSupportLibrary;


@interface MOBridgeSupportParser : NSObject

- (MOBridgeSupportLibrary *)libraryWithBridgeSupportURL:(NSURL *)aURL error:(NSError **)outError;

@end
Loading

0 comments on commit 5ecee24

Please sign in to comment.