1/*
2   DefaultScannerHandler.m
3
4   Copyright (C) 1995, 1996 Ovidiu Predescu and Mircea Oancea.
5   All rights reserved.
6
7   Author: Ovidiu Predescu <ovidiu@apache.org>
8           Helge Hess <helge.hess@opengroupware.org>
9
10   This file is part of libFoundation.
11
12   Permission to use, copy, modify, and distribute this software and its
13   documentation for any purpose and without fee is hereby granted, provided
14   that the above copyright notice appear in all copies and that both that
15   copyright notice and this permission notice appear in supporting
16   documentation.
17
18   We disclaim all warranties with regard to this software, including all
19   implied warranties of merchantability and fitness, in no event shall
20   we be liable for any special, indirect or consequential damages or any
21   damages whatsoever resulting from loss of use, data or profits, whether in
22   an action of contract, negligence or other tortious action, arising out of
23   or in connection with the use or performance of this software.
24*/
25
26#import <Foundation/NSString.h>
27#include "FormatScanner.h"
28#include "DefaultScannerHandler.h"
29
30@implementation DefaultScannerHandler
31
32- (id)init {
33    int i;
34    IMP unknownSpecifierIMP
35	    = [self methodForSelector:@selector(unknownSpecifier:scanner:)];
36
37    for(i = 0; i < 256; i++)
38	specHandler[i] = unknownSpecifierIMP;
39    return self;
40}
41
42- (NSString *)unknownSpecifier:(void *)arg scanner:scanner
43{
44    char str[] = { [scanner characterSpecifier], 0 };
45    return [NSString stringWithCString:str];
46}
47
48- (NSString *)stringForArgument:(void *)arg scanner:scanner
49{
50    return (*specHandler[(int)[scanner characterSpecifier]])
51		(self, _cmd, arg, scanner);
52}
53
54@end /* DefaultScannerHandler */
55
56@implementation DefaultEnumScannerHandler
57
58- (id)init
59{
60    int i;
61    IMP unknownSpecifierIMP;
62
63    unknownSpecifierIMP =
64        [self methodForSelector:@selector(unknownSpecifier:scanner:)];
65
66    for(i = 0; i < 256; i++)
67	self->specHandler[i] = unknownSpecifierIMP;
68    return self;
69}
70
71- (NSString *)unknownSpecifier:(void *)arg scanner:scanner
72{
73    char str[] = { [scanner characterSpecifier], 0 };
74    return [NSString stringWithCString:str];
75}
76
77- (NSString *)stringForArgument:(void *)arg scanner:scanner
78{
79    return (*specHandler[(int)[scanner characterSpecifier]])
80		(self, _cmd, arg, scanner);
81}
82
83@end /* DefaultEnumScannerHandler */
84
85/*
86  Local Variables:
87  c-basic-offset: 4
88  tab-width: 8
89  End:
90*/
91