︙ | | | ︙ | |
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#import "OFNumber.h"
#import "OFExceptions.h"
#import "macros.h"
#define RETURN_AS(t) \
switch (type) { \
case OF_NUMBER_CHAR: \
return (t)value.char_; \
case OF_NUMBER_SHORT: \
return (t)value.short_; \
case OF_NUMBER_INT: \
return (t)value.int_; \
case OF_NUMBER_LONG: \
|
>
>
|
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#import "OFNumber.h"
#import "OFExceptions.h"
#import "macros.h"
#define RETURN_AS(t) \
switch (type) { \
case OF_NUMBER_BOOL: \
return (t)value.bool_; \
case OF_NUMBER_CHAR: \
return (t)value.char_; \
case OF_NUMBER_SHORT: \
return (t)value.short_; \
case OF_NUMBER_INT: \
return (t)value.int_; \
case OF_NUMBER_LONG: \
|
︙ | | | ︙ | |
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
case OF_NUMBER_DOUBLE: \
return (t)value.double_; \
default: \
@throw [OFInvalidFormatException newWithClass: isa]; \
}
#define CALCULATE(o, n) \
switch (type) { \
case OF_NUMBER_CHAR: \
return [OFNumber numberWithChar: \
value.char_ o [n charValue]]; \
case OF_NUMBER_SHORT: \
return [OFNumber numberWithShort: \
value.short_ o [n shortValue]]; \
case OF_NUMBER_INT: \
|
>
>
>
|
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
case OF_NUMBER_DOUBLE: \
return (t)value.double_; \
default: \
@throw [OFInvalidFormatException newWithClass: isa]; \
}
#define CALCULATE(o, n) \
switch (type) { \
case OF_NUMBER_BOOL: \
return [OFNumber numberWithBool: \
value.bool_ o [n boolValue]]; \
case OF_NUMBER_CHAR: \
return [OFNumber numberWithChar: \
value.char_ o [n charValue]]; \
case OF_NUMBER_SHORT: \
return [OFNumber numberWithShort: \
value.short_ o [n shortValue]]; \
case OF_NUMBER_INT: \
|
︙ | | | ︙ | |
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
return [OFNumber numberWithDouble: \
value.double_ o [n doubleValue]]; \
default: \
@throw [OFInvalidFormatException newWithClass: isa]; \
}
#define CALCULATE2(o, n) \
switch (type) { \
case OF_NUMBER_CHAR: \
return [OFNumber numberWithChar: \
value.char_ o [n charValue]]; \
case OF_NUMBER_SHORT: \
return [OFNumber numberWithShort: \
value.short_ o [n shortValue]]; \
case OF_NUMBER_INT: \
|
>
>
>
|
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
|
return [OFNumber numberWithDouble: \
value.double_ o [n doubleValue]]; \
default: \
@throw [OFInvalidFormatException newWithClass: isa]; \
}
#define CALCULATE2(o, n) \
switch (type) { \
case OF_NUMBER_BOOL: \
return [OFNumber numberWithBool: \
value.bool_ o [n boolValue]]; \
case OF_NUMBER_CHAR: \
return [OFNumber numberWithChar: \
value.char_ o [n charValue]]; \
case OF_NUMBER_SHORT: \
return [OFNumber numberWithShort: \
value.short_ o [n shortValue]]; \
case OF_NUMBER_INT: \
|
︙ | | | ︙ | |
228
229
230
231
232
233
234
235
236
237
238
239
240
241
|
@throw [OFNotImplementedException newWithClass: isa \
selector: _cmd]; \
default: \
@throw [OFInvalidFormatException newWithClass: isa]; \
}
#define CALCULATE3(o) \
switch (type) { \
case OF_NUMBER_CHAR: \
return [OFNumber numberWithChar: value.char_ o]; \
case OF_NUMBER_SHORT: \
return [OFNumber numberWithShort: value.short_ o]; \
case OF_NUMBER_INT: \
return [OFNumber numberWithInt: value.int_ o]; \
case OF_NUMBER_LONG: \
|
>
>
|
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
|
@throw [OFNotImplementedException newWithClass: isa \
selector: _cmd]; \
default: \
@throw [OFInvalidFormatException newWithClass: isa]; \
}
#define CALCULATE3(o) \
switch (type) { \
case OF_NUMBER_BOOL: \
return [OFNumber numberWithBool: value.bool_ o]; \
case OF_NUMBER_CHAR: \
return [OFNumber numberWithChar: value.char_ o]; \
case OF_NUMBER_SHORT: \
return [OFNumber numberWithShort: value.short_ o]; \
case OF_NUMBER_INT: \
return [OFNumber numberWithInt: value.int_ o]; \
case OF_NUMBER_LONG: \
|
︙ | | | ︙ | |
286
287
288
289
290
291
292
293
294
295
296
297
298
299
|
case OF_NUMBER_DOUBLE: \
return [OFNumber numberWithDouble: value.double_ o]; \
default: \
@throw [OFInvalidFormatException newWithClass: isa]; \
}
@implementation OFNumber
+ numberWithChar: (char)char_
{
return [[[self alloc] initWithChar: char_] autorelease];
}
+ numberWithShort: (short)short_
{
|
>
>
>
>
>
|
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
|
case OF_NUMBER_DOUBLE: \
return [OFNumber numberWithDouble: value.double_ o]; \
default: \
@throw [OFInvalidFormatException newWithClass: isa]; \
}
@implementation OFNumber
+ numberWithBool: (BOOL)bool_
{
return [[[self alloc] initWithBool: bool_] autorelease];
}
+ numberWithChar: (char)char_
{
return [[[self alloc] initWithChar: char_] autorelease];
}
+ numberWithShort: (short)short_
{
|
︙ | | | ︙ | |
416
417
418
419
420
421
422
423
424
425
426
427
428
429
|
}
- init
{
@throw [OFNotImplementedException newWithClass: isa
selector: _cmd];
}
- initWithChar: (char)char_
{
self = [super init];
value.char_ = char_;
type = OF_NUMBER_CHAR;
|
>
>
>
>
>
>
>
>
>
>
|
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
|
}
- init
{
@throw [OFNotImplementedException newWithClass: isa
selector: _cmd];
}
- initWithBool: (BOOL)bool_
{
self = [super init];
value.bool_ = bool_;
type = OF_NUMBER_BOOL;
return self;
}
- initWithChar: (char)char_
{
self = [super init];
value.char_ = char_;
type = OF_NUMBER_CHAR;
|
︙ | | | ︙ | |
671
672
673
674
675
676
677
678
679
680
681
682
683
684
|
return self;
}
- (enum of_number_type)type
{
return type;
}
- (char)charValue
{
RETURN_AS(char)
}
- (short)shortValue
|
>
>
>
>
>
|
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
|
return self;
}
- (enum of_number_type)type
{
return type;
}
- (BOOL)boolValue
{
RETURN_AS(BOOL)
}
- (char)charValue
{
RETURN_AS(char)
}
- (short)shortValue
|
︙ | | | ︙ | |