Overview
Context
Changes
Modified src/Makefile
from [a2abd7caf7]
to [904bd28ea3].
︙ | | |
203
204
205
206
207
208
209
210
211
212
213
214
215
216
|
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
|
+
|
OFRangeCharacterSet.m \
OFRangeValue.m \
OFRectValue.m \
OFSandbox.m \
OFSizeValue.m \
OFStrPTime.m \
OFSubarray.m \
OFSubdata.m \
OFUTF8String.m \
${LIBBASES_M} \
${RUNTIME_AUTORELEASE_M} \
${RUNTIME_INSTANCE_M} \
${UNICODE_M}
SRCS_FILES += OFFileIRIHandler.m
SRCS_SOCKETS += OFAsyncIPSocketConnector.m \
|
︙ | | |
Modified src/OFAdjacentArray.m
from [6443cda90f]
to [9ab2d4adfc].
︙ | | |
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
|
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
|
-
+
+
|
@throw [OFOutOfRangeException exception];
if ([self isKindOfClass: [OFMutableArray class]])
return [OFArray
arrayWithObjects: (id *)_array.items + range.location
count: range.length];
return [OFAdjacentSubarray arrayWithArray: self range: range];
return [[[OFAdjacentSubarray alloc] initWithArray: self
range: range] autorelease];
}
- (bool)isEqual: (id)object
{
OFArray *otherArray;
id const *objects, *otherObjects;
size_t count;
|
︙ | | |
Modified src/OFAdjacentData.h
from [9ef5f95f67]
to [73a50c8d27].
︙ | | |
18
19
20
21
22
23
24
25
26
27
28
29
|
18
19
20
21
22
23
24
25
26
27
28
|
-
|
OF_ASSUME_NONNULL_BEGIN
@interface OFAdjacentData: OFData
{
unsigned char *_Nullable _items;
size_t _capacity, _count, _itemSize;
bool _freeWhenDone;
OFData *_Nullable _parentData;
}
@end
OF_ASSUME_NONNULL_END
|
Modified src/OFAdjacentData.m
from [35583b4857]
to [bdc7c51f78].
︙ | | |
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
}
- (void)dealloc
{
if (_freeWhenDone)
OFFreeMemory(_items);
[_parentData release];
[super dealloc];
}
- (size_t)count
{
return _count;
}
- (size_t)itemSize
{
return _itemSize;
}
- (const void *)items
{
return _items;
}
- (OFData *)subdataWithRange: (OFRange)range
{
OFAdjacentData *ret;
if (range.length > SIZE_MAX - range.location ||
range.location + range.length > _count)
@throw [OFOutOfRangeException exception];
ret = [OFAdjacentData
dataWithItemsNoCopy: _items + (range.location * _itemSize)
count: range.length
itemSize: _itemSize
freeWhenDone: false];
ret->_parentData = [(_parentData != nil ? _parentData : self) copy];
return ret;
}
@end
|
Modified src/OFArray.m
from [baf90bc720]
to [9b0a605b93].
︙ | | |
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
|
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
|
+
-
+
|
id *buffer;
if (range.length > SIZE_MAX - range.location ||
range.location + range.length < self.count)
@throw [OFOutOfRangeException exception];
if (![self isKindOfClass: [OFMutableArray class]])
return [[[OFSubarray alloc] initWithArray: self
return [OFSubarray arrayWithArray: self range: range];
range: range] autorelease];
buffer = OFAllocMemory(range.length, sizeof(*buffer));
@try {
[self getObjects: buffer inRange: range];
ret = [OFArray arrayWithObjects: buffer count: range.length];
} @finally {
|
︙ | | |
Modified src/OFData.m
from [466d9af03d]
to [c534072540].
︙ | | |
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
+
|
# import "OFFile.h"
# import "OFFileManager.h"
#endif
#import "OFIRI.h"
#import "OFIRIHandler.h"
#import "OFStream.h"
#import "OFString.h"
#import "OFSubdata.h"
#import "OFSystemInfo.h"
#import "OFInvalidArgumentException.h"
#import "OFInvalidFormatException.h"
#import "OFNotImplementedException.h"
#import "OFOutOfMemoryException.h"
#import "OFOutOfRangeException.h"
|
︙ | | |
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
|
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
|
-
-
+
+
+
-
+
-
-
-
+
+
+
|
OFHashFinalize(&hash);
return hash;
}
- (OFData *)subdataWithRange: (OFRange)range
{
size_t itemSize;
if (range.length > SIZE_MAX - range.location ||
range.location + range.length > self.count)
@throw [OFOutOfRangeException exception];
if (![self isKindOfClass: [OFMutableData class]])
return [[[OFSubdata alloc] initWithData: self
range: range] autorelease];
itemSize = self.itemSize;
return [OFData dataWithItems: (const unsigned char *)self.items +
(range.location * itemSize)
count: range.length
itemSize: itemSize];
(range.location * self.itemSize)
count: self.count
itemSize: self.itemSize];
}
- (OFString *)description
{
OFMutableString *ret = [OFMutableString stringWithString: @"<"];
const unsigned char *items = self.items;
size_t count = self.count, itemSize = self.itemSize;
|
︙ | | |
Modified src/OFMutableAdjacentData.h
from [3610a15f14]
to [0582bcc9e5].
︙ | | |
18
19
20
21
22
23
24
25
26
27
28
29
|
18
19
20
21
22
23
24
25
26
27
28
|
-
|
OF_ASSUME_NONNULL_BEGIN
@interface OFMutableAdjacentData: OFMutableData
{
unsigned char *_Nullable _items;
size_t _capacity, _count, _itemSize;
bool _freeWhenDone;
OFData *_Nullable _parentData;
}
@end
OF_ASSUME_NONNULL_END
|
Modified src/OFSubarray.h
from [6cc244c93d]
to [e3a4736adc].
︙ | | |
19
20
21
22
23
24
25
26
27
28
29
30
|
19
20
21
22
23
24
25
26
27
28
29
|
-
|
@interface OFSubarray: OFArray
{
OFArray *_array;
OFRange _range;
}
+ (instancetype)arrayWithArray: (OFArray *)array range: (OFRange)range;
- (instancetype)initWithArray: (OFArray *)array range: (OFRange)range;
@end
OF_ASSUME_NONNULL_END
|
Added src/OFSubdata.h version [125a37157e].
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
/*
* Copyright (c) 2008-2023 Jonathan Schleifer <js@nil.im>
*
* All rights reserved.
*
* This file is part of ObjFW. It may be distributed under the terms of the
* Q Public License 1.0, which can be found in the file LICENSE.QPL included in
* the packaging of this file.
*
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#import "OFData.h"
OF_ASSUME_NONNULL_BEGIN
@interface OFSubdata: OFData
{
OFData *_data;
OFRange _range;
}
- (instancetype)initWithData: (OFData *)data range: (OFRange)range;
@end
OF_ASSUME_NONNULL_END
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | |
Added src/OFSubdata.m version [3275105cae].
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
/*
* Copyright (c) 2008-2023 Jonathan Schleifer <js@nil.im>
*
* All rights reserved.
*
* This file is part of ObjFW. It may be distributed under the terms of the
* Q Public License 1.0, which can be found in the file LICENSE.QPL included in
* the packaging of this file.
*
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#include "config.h"
#import "OFSubdata.h"
@implementation OFSubdata
- (instancetype)initWithData: (OFData *)data range: (OFRange)range
{
self = [super init];
@try {
/* Should usually be retain, as it's useless with a copy */
_data = [data copy];
_range = range;
} @catch (id e) {
[self release];
@throw e;
}
return self;
}
- (void)dealloc
{
[_data release];
[super dealloc];
}
- (size_t)count
{
return _range.length;
}
- (size_t)itemSize
{
return _data.itemSize;
}
- (const void *)items
{
return (const unsigned char *)_data.items +
(_range.location * _data.itemSize);
}
@end
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |