Skip to content

Commit 68bdfd5

Browse files
author
Ronan Collobert
committed
included ArrayFileCommandLineOption.
git-archimport-id: [email protected]/torch--devel--1.0--patch-74
1 parent 2da91ec commit 68bdfd5

4 files changed

+95
-0
lines changed

base/T4CommandLine.h

+2
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,13 @@
2727
-addRealOption: (NSString*)aName at: (real*)anAddress default: (real)aDefault help: (NSString*)aHelp;
2828
-addBoolOption: (NSString*)aName at: (BOOL*)anAddress default: (BOOL)aDefault help: (NSString*)aHelp;
2929
-addStringOption: (NSString*)aName at: (NSString**)anAddress default: (NSString*)aDefault help: (NSString*)aHelp;
30+
-addArrayFileOption: (NSString*)aName at: (NSArray**)anAddress default: (NSArray*)aDefault help: (NSString*)aHelp;
3031

3132
-addArgument: (T4CommandLineOption*)argument;
3233
-addIntArgument: (NSString*)aName at: (int*)anAddress help: (NSString*)aHelp;
3334
-addRealArgument: (NSString*)aName at: (real*)anAddress help: (NSString*)aHelp;
3435
//-addBoolArgument: (NSString*)aName at: (BOOL*)anAddress help: (NSString*)aHelp; peut pas exister!!!
3536
-addStringArgument: (NSString*)aName at: (NSString**)anAddress help: (NSString*)aHelp;
37+
-addArrayFileArgument: (NSString*)aName at: (NSArray**)anAddress help: (NSString*)aHelp;
3638

3739
@end

base/T4CommandLine.m

+16
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,14 @@ -(int)read
321321
return [self addOption: option];
322322
}
323323

324+
-addArrayFileOption: (NSString*)aName at: (NSArray**)anAddress default: (NSArray*)aDefault help: (NSString*)aHelp
325+
{
326+
T4ArrayFileCommandLineOption *option = [T4ArrayFileCommandLineOption alloc];
327+
[option initWithName: aName at: anAddress default: aDefault help: aHelp];
328+
[allocator keepObject: option];
329+
return [self addOption: option];
330+
}
331+
324332
-addArgument: (T4CommandLineOption*)argument
325333
{
326334
NSMutableArray *currentArguments = [arguments objectForKey: currentSwitch];
@@ -353,4 +361,12 @@ -(int)read
353361
return [self addArgument: option];
354362
}
355363

364+
-addArrayFileArgument: (NSString*)aName at: (NSArray**)anAddress help: (NSString*)aHelp
365+
{
366+
T4ArrayFileCommandLineOption *option = [T4ArrayFileCommandLineOption alloc];
367+
[option initWithName: aName at: anAddress default: nil help: aHelp];
368+
[allocator keepObject: option];
369+
return [self addArgument: option];
370+
}
371+
356372
@end

base/T4CommandLineOption.h

+10
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,13 @@
6262
-initWithName: (NSString*)aName at: (NSString**)anAddress default: (NSString*)aDefaultValue help: (NSString*)aHelp;
6363

6464
@end
65+
66+
@interface T4ArrayFileCommandLineOption : T4CommandLineOption
67+
{
68+
NSArray **address;
69+
NSArray *defaultValue;
70+
}
71+
72+
-initWithName: (NSString*)aName at: (NSArray**)anAddress default: (NSArray*)aDefaultValue help: (NSString*)aHelp;
73+
74+
@end

base/T4CommandLineOption.m

+67
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#import "T4CommandLineOption.h"
2+
#import "T4DiskFile.h"
23

34
@implementation T4CommandLineOption
45

@@ -236,3 +237,69 @@ -(NSString*)textValue
236237
}
237238

238239
@end
240+
241+
@implementation T4ArrayFileCommandLineOption
242+
243+
-initWithName: (NSString*)aName at: (NSArray**)anAddress default: (NSArray*)aDefaultValue help: (NSString*)aHelp
244+
{
245+
if( (self = [super initWithName: aName type: @"<string>" help: aHelp]) )
246+
{
247+
address = anAddress;
248+
defaultValue = aDefaultValue;
249+
}
250+
251+
return self;
252+
}
253+
254+
-read: (NSMutableArray*)arguments
255+
{
256+
if([arguments count] > 0)
257+
{
258+
NSString *fileName = [arguments objectAtIndex: 0];
259+
T4DiskFile *file = [[T4DiskFile alloc] initForReadingAtPath: fileName];
260+
NSMutableArray *array = [[[NSMutableArray alloc] init] keepWithAllocator: allocator];
261+
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
262+
NSCharacterSet *whitespaceAndNewlineCharacterSet = [NSCharacterSet whitespaceAndNewlineCharacterSet];
263+
while(![file isEndOfFile])
264+
{
265+
NSString *currentLine = [[file stringToEndOfLine] stringByTrimmingCharactersInSet: whitespaceAndNewlineCharacterSet];
266+
if([currentLine length] > 0)
267+
[array addObject: currentLine];
268+
}
269+
[pool release];
270+
*address = array;
271+
[file release];
272+
[arguments removeObjectAtIndex: 0];
273+
}
274+
else
275+
T4Error(@"ArrayFileCommandLineOption: cannot correctly set <%@>", name);
276+
277+
isSet = YES;
278+
279+
return self;
280+
}
281+
282+
-initToDefaultValue
283+
{
284+
if(defaultValue)
285+
*address = [[[NSArray alloc] initWithArray: defaultValue] keepWithAllocator: allocator];
286+
else
287+
*address = [[[NSArray alloc] init] keepWithAllocator: allocator];
288+
289+
return self;
290+
}
291+
292+
-(NSString*)textValue
293+
{
294+
if(isSet)
295+
return [*address description];
296+
else
297+
{
298+
if(defaultValue)
299+
return [defaultValue description];
300+
else
301+
return [NSString stringWithString: @""];
302+
}
303+
}
304+
305+
@end

0 commit comments

Comments
 (0)