From e965604e5b6d838ed8e4b9ebbf182c9a182c7d23 Mon Sep 17 00:00:00 2001 From: rfm Date: Wed, 22 Feb 2006 11:15:16 +0000 Subject: [PATCH] Support quoting of NSArray and NSSet objects git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/sqlclient/trunk@22542 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 4 ++++ SQLClient.m | 25 ++++++++++++++----------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index f774935..c3c9b36 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2005-02-22 Richard Frith-Macdonald + + * SQLClient.m: Support quoting of NSArray and NSSet objects. + 2006-01-11 Nicola Pero * configure.ac: Do not source GNUSTEP_CONFIG_FILE if it doesn't diff --git a/SQLClient.m b/SQLClient.m index 0ca5071..e5d7fbe 100644 --- a/SQLClient.m +++ b/SQLClient.m @@ -62,6 +62,7 @@ static NSNull *null = nil; static Class NSStringClass = 0; static Class NSArrayClass = 0; static Class NSDateClass = 0; +static Class NSSetClass = 0; @implementation SQLRecord + (id) allocWithZone: (NSZone*)aZone @@ -440,6 +441,7 @@ static unsigned int maxConnections = 8; rollbackStatement = RETAIN([NSArray arrayWithObject: rollbackString]); NSStringClass = [NSString class]; NSArrayClass = [NSArray class]; + NSSetClass = [NSSet class]; [NSTimer scheduledTimerWithTimeInterval: 1.0 target: self selector: @selector(_tick:) @@ -918,24 +920,25 @@ static void quoteString(NSMutableString *s) } /** - * For an NSArray object, we produce a bracketed list of the + * For an NSArray or NSSet, we produce a bracketed list of the * (quoted) objects in the array. */ - if ([obj isKindOfClass: NSArrayClass] == YES) + if ([obj isKindOfClass: NSArrayClass] == YES || + [obj isKindOfClass: NSSetClass] == YES) { NSMutableString *ms = [NSMutableString stringWithCapacity: 100]; - unsigned count = [obj count]; - unsigned i; + NSEnumerator *enumerator = [obj objectEnumerator]; + id value = [enumerator nextObject]; [ms appendString: @"("]; - if (count > 0) + if (value != nil) { - [ms appendString: [self quote: [obj objectAtIndex: 0]]]; - for (i = 1; i < count; i++) - { - [ms appendString: @","]; - [ms appendString: [self quote: [obj objectAtIndex: i]]]; - } + [ms appendString: [self quote: value]]; + } + while ((value = [enumerator nextObject]) != nil) + { + [ms appendString: @","]; + [ms appendString: [self quote: value]]; } [ms appendString: @")"]; return ms;