X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=iphone%2FZXingWidget%2FClasses%2FresultParsers%2FResultParser.m;fp=iphone%2FZXingWidget%2FClasses%2FresultParsers%2FResultParser.m;h=0e53676956d4deebff982cf2d9c0e1db94c50c8f;hb=c41ee2e052b1397bc534c01543f1e6013f53b82b;hp=0000000000000000000000000000000000000000;hpb=ad3b00504e9e2299dcf64c75790c9944ec0b8488;p=zxing.git diff --git a/iphone/ZXingWidget/Classes/resultParsers/ResultParser.m b/iphone/ZXingWidget/Classes/resultParsers/ResultParser.m new file mode 100644 index 00000000..0e536769 --- /dev/null +++ b/iphone/ZXingWidget/Classes/resultParsers/ResultParser.m @@ -0,0 +1,66 @@ +// +// ResultParser.m +// ZXing +// +// Created by Christian Brunschen on 25/06/2008. +/* + * Copyright 2008 ZXing authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "ResultParser.h" + +@implementation ResultParser + +static NSMutableSet *sResultParsers = nil; + ++ (void)registerResultParserClass:(Class)resultParser { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + @synchronized(self) { + if (!sResultParsers) { + sResultParsers = [[NSMutableSet alloc] init]; + } + [sResultParsers addObject:resultParser]; + } + [pool drain]; +} + ++ (NSSet *)resultParsers { + NSSet *resultParsers = nil; + @synchronized(self) { + resultParsers = [[sResultParsers copy] autorelease]; + } + return resultParsers; +} + ++ (ParsedResult *)parsedResultForString:(NSString *)s { +#ifdef DEBUG + NSLog(@"parsing result:\n<<<\n%@\n>>>\n", s); +#endif + for (Class c in [self resultParsers]) { +#ifdef DEBUG + NSLog(@"trying %@", NSStringFromClass(c)); +#endif + ParsedResult *result = [c parsedResultForString:s]; + if (result != nil) { +#ifdef DEBUG + NSLog(@"parsed as %@ %@", NSStringFromClass([result class]), result); +#endif + return result; + } + } + return nil; +} + +@end