diff --git a/README b/README new file mode 100644 index 0000000..abf51fd --- /dev/null +++ b/README @@ -0,0 +1 @@ +This branch will be merged and deleted after the clang result filtering implementation \ No newline at end of file diff --git a/SCKResultFilteringEngine.h b/SCKResultFilteringEngine.h new file mode 100644 index 0000000..9d4b534 --- /dev/null +++ b/SCKResultFilteringEngine.h @@ -0,0 +1,26 @@ +// +// SCKResultFilteringEngine.h +// SourceCodeKit +// +// Created by Alex on 28/05/14. +// Copyright (c) 2014 Étoilé. All rights reserved. +// + +#import +#import "SCKCodeCompletionResult.h" + + +@interface SCKResultFilteringEngine : NSObject +{ + NSMutableDictionary *cachedMethods; +} + +/** + * This method caches all the methods of a clang code completed object. + * Caching methods will avoid to call libclang for previous objects of + * the same class previously code completed. + * The "forClassName" argument can't be nil" + */ +- (void) cacheResults:(SCKCodeCompletionResult*)aSetOfResults forClassName:(NSString*)aClassName; + +@end diff --git a/SCKResultFilteringEngine.m b/SCKResultFilteringEngine.m new file mode 100644 index 0000000..c21e5af --- /dev/null +++ b/SCKResultFilteringEngine.m @@ -0,0 +1,38 @@ +// +// SCKResultFilteringEngine.m +// SourceCodeKit +// +// Created by Alex on 28/05/14. +// Copyright (c) 2014 Étoilé. All rights reserved. +// + +#import "SCKResultFilteringEngine.h" +#import + + +@implementation SCKResultFilteringEngine + +- (id)init +{ + SUPERINIT; + cachedMethods = [[NSMutableDictionary alloc] init]; + return self; +} + +- (void)cacheResults:(SCKCodeCompletionResult*)aSetOfResults forClassName:(NSString*)aClassName +{ + NSEnumerator *e = [cachedMethods keyEnumerator]; + NSString *key; + + while (key = [e nextObject]) + { + if ([key isEqualToString:aClassName]) + { + return; + } + } + + NSArray *results = aSetOfResults.completions; + [cachedMethods setObject:[results mutableCopy] forKey:aClassName]; +} +@end diff --git a/SourceCodeKit.xcodeproj/project.pbxproj b/SourceCodeKit.xcodeproj/project.pbxproj index bdcd6f2..f33a95c 100644 --- a/SourceCodeKit.xcodeproj/project.pbxproj +++ b/SourceCodeKit.xcodeproj/project.pbxproj @@ -37,6 +37,8 @@ 609CFE6C16FFD83100D01AAB /* EtoileFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 609CFE5116FFD81300D01AAB /* EtoileFoundation.framework */; }; 609CFE7016FFDE7F00D01AAB /* libclang.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 609CFE6F16FFDE7F00D01AAB /* libclang.dylib */; }; 60C4F4A3173AA84800AA10F8 /* EtoileFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 609CFE5116FFD81300D01AAB /* EtoileFoundation.framework */; }; + FA8180E619361EF400155B7A /* SCKResultFilteringEngine.h in Headers */ = {isa = PBXBuildFile; fileRef = FA8180E419361EF400155B7A /* SCKResultFilteringEngine.h */; }; + FA8180E719361EF400155B7A /* SCKResultFilteringEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = FA8180E519361EF400155B7A /* SCKResultFilteringEngine.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -197,6 +199,8 @@ 609CFE6F16FFDE7F00D01AAB /* libclang.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libclang.dylib; path = Toolchains/XcodeDefault.xctoolchain/usr/lib/libclang.dylib; sourceTree = DEVELOPER_DIR; }; 609CFEDC17006ADD00D01AAB /* INSTALL */ = {isa = PBXFileReference; lastKnownFileType = text; path = INSTALL; sourceTree = ""; }; 609CFEDD17006ADE00D01AAB /* README */ = {isa = PBXFileReference; lastKnownFileType = text; path = README; sourceTree = ""; }; + FA8180E419361EF400155B7A /* SCKResultFilteringEngine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SCKResultFilteringEngine.h; sourceTree = ""; }; + FA8180E519361EF400155B7A /* SCKResultFilteringEngine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SCKResultFilteringEngine.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -256,6 +260,8 @@ 609CFDA916FFD31700D01AAB = { isa = PBXGroup; children = ( + FA8180E419361EF400155B7A /* SCKResultFilteringEngine.h */, + FA8180E519361EF400155B7A /* SCKResultFilteringEngine.m */, 609CFEDD17006ADE00D01AAB /* README */, 609CFEDC17006ADD00D01AAB /* INSTALL */, 609CFDD116FFD38D00D01AAB /* SCKClangSourceFile.h */, @@ -348,6 +354,7 @@ 609CFDEA16FFD38D00D01AAB /* SCKSourceCollection.h in Headers */, 609CFDEC16FFD38D00D01AAB /* SCKSourceFile.h in Headers */, 609CFDEE16FFD38D00D01AAB /* SCKSyntaxHighlighter.h in Headers */, + FA8180E619361EF400155B7A /* SCKResultFilteringEngine.h in Headers */, 609CFDF016FFD38D00D01AAB /* SCKTextTypes.h in Headers */, 609CFDF216FFD38D00D01AAB /* SourceCodeKit.h in Headers */, ); @@ -565,6 +572,7 @@ 609CFDED16FFD38D00D01AAB /* SCKSourceFile.m in Sources */, 609CFDEF16FFD38D00D01AAB /* SCKSyntaxHighlighter.m in Sources */, 609CFDF116FFD38D00D01AAB /* SCKTextTypes.m in Sources */, + FA8180E719361EF400155B7A /* SCKResultFilteringEngine.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/SourceCodeKit.xcodeproj/project.xcworkspace/xcuserdata/alex.xcuserdatad/UserInterfaceState.xcuserstate b/SourceCodeKit.xcodeproj/project.xcworkspace/xcuserdata/alex.xcuserdatad/UserInterfaceState.xcuserstate index b593c3f..16db256 100644 Binary files a/SourceCodeKit.xcodeproj/project.xcworkspace/xcuserdata/alex.xcuserdatad/UserInterfaceState.xcuserstate and b/SourceCodeKit.xcodeproj/project.xcworkspace/xcuserdata/alex.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/SourceCodeKit.xcodeproj/xcuserdata/alex.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/SourceCodeKit.xcodeproj/xcuserdata/alex.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..fe2b454 --- /dev/null +++ b/SourceCodeKit.xcodeproj/xcuserdata/alex.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,5 @@ + + +