@@ -25,12 +25,12 @@ - (id)initWithData:(NSData *)data;
25
25
26
26
- (const void *)bytes ;
27
27
{
28
- return [self .data bytes ];
28
+ return [_data bytes ];
29
29
}
30
30
31
31
- (void )setOffset : (NSUInteger )newOffset ;
32
32
{
33
- if (newOffset <= [self .data length ]) {
33
+ if (newOffset <= [_data length ]) {
34
34
_offset = newOffset;
35
35
} else {
36
36
[NSException raise :NSRangeException format: @" Trying to seek past end of data." ];
@@ -39,33 +39,42 @@ - (void)setOffset:(NSUInteger)newOffset;
39
39
40
40
- (void )advanceByLength : (NSUInteger )length ;
41
41
{
42
- self.offset += length;
42
+ if (_offset + length <= [_data length ]) {
43
+ _offset += length;
44
+ } else {
45
+ [NSException raise :NSRangeException format: @" Trying to advance past end of data." ];
46
+ }
43
47
}
44
48
45
49
- (NSUInteger )remaining ;
46
50
{
47
- return [self .data length ] - self. offset ;
51
+ return [_data length ] - _offset ;
48
52
}
49
53
50
54
#pragma mark -
51
55
52
56
- (uint8_t )readByte ;
53
57
{
54
- const uint8_t *ptr ;
58
+ uint8_t result ;
55
59
56
- ptr = (uint8_t *)[self .data bytes ] + self.offset ;
57
- self.offset += 1 ;
60
+ if (_offset + sizeof (result) <= [_data length ]) {
61
+ result = OSReadLittleInt16 ([_data bytes ], _offset) & 0xFF ;
62
+ _offset += sizeof (result);
63
+ } else {
64
+ [NSException raise :NSRangeException format: @" Trying to read past end in %s " , __cmd];
65
+ result = 0 ;
66
+ }
58
67
59
- return *ptr ;
68
+ return result ;
60
69
}
61
70
62
71
- (uint16_t )readLittleInt16 ;
63
72
{
64
73
uint16_t result;
65
74
66
- if (self. offset + sizeof (result) <= [self .data length ]) {
67
- result = OSReadLittleInt16 ([self .data bytes ], self. offset );
68
- self. offset += sizeof (result);
75
+ if (_offset + sizeof (result) <= [_data length ]) {
76
+ result = OSReadLittleInt16 ([_data bytes ], _offset );
77
+ _offset += sizeof (result);
69
78
} else {
70
79
[NSException raise :NSRangeException format: @" Trying to read past end in %s " , __cmd];
71
80
result = 0 ;
@@ -78,9 +87,9 @@ - (uint32_t)readLittleInt32;
78
87
{
79
88
uint32_t result;
80
89
81
- if (self. offset + sizeof (result) <= [self .data length ]) {
82
- result = OSReadLittleInt32 ([self .data bytes ], self. offset );
83
- self. offset += sizeof (result);
90
+ if (_offset + sizeof (result) <= [_data length ]) {
91
+ result = OSReadLittleInt32 ([_data bytes ], _offset );
92
+ _offset += sizeof (result);
84
93
} else {
85
94
[NSException raise :NSRangeException format: @" Trying to read past end in %s " , __cmd];
86
95
result = 0 ;
@@ -93,9 +102,9 @@ - (uint64_t)readLittleInt64;
93
102
{
94
103
uint64_t result;
95
104
96
- if (self. offset + sizeof (result) <= [self .data length ]) {
97
- result = OSReadLittleInt64 ([self .data bytes ], self. offset );
98
- self. offset += sizeof (result);
105
+ if (_offset + sizeof (result) <= [_data length ]) {
106
+ result = OSReadLittleInt64 ([_data bytes ], _offset );
107
+ _offset += sizeof (result);
99
108
} else {
100
109
[NSException raise :NSRangeException format: @" Trying to read past end in %s " , __cmd];
101
110
result = 0 ;
@@ -108,9 +117,9 @@ - (uint16_t)readBigInt16;
108
117
{
109
118
uint16_t result;
110
119
111
- if (self. offset + sizeof (result) <= [self .data length ]) {
112
- result = OSReadBigInt16 ([self .data bytes ], self. offset );
113
- self. offset += sizeof (result);
120
+ if (_offset + sizeof (result) <= [_data length ]) {
121
+ result = OSReadBigInt16 ([_data bytes ], _offset );
122
+ _offset += sizeof (result);
114
123
} else {
115
124
[NSException raise :NSRangeException format: @" Trying to read past end in %s " , __cmd];
116
125
result = 0 ;
@@ -123,9 +132,9 @@ - (uint32_t)readBigInt32;
123
132
{
124
133
uint32_t result;
125
134
126
- if (self. offset + sizeof (result) <= [self .data length ]) {
127
- result = OSReadBigInt32 ([self .data bytes ], self. offset );
128
- self. offset += sizeof (result);
135
+ if (_offset + sizeof (result) <= [_data length ]) {
136
+ result = OSReadBigInt32 ([_data bytes ], _offset );
137
+ _offset += sizeof (result);
129
138
} else {
130
139
[NSException raise :NSRangeException format: @" Trying to read past end in %s " , __cmd];
131
140
result = 0 ;
@@ -138,9 +147,9 @@ - (uint64_t)readBigInt64;
138
147
{
139
148
uint64_t result;
140
149
141
- if (self. offset + sizeof (result) <= [self .data length ]) {
142
- result = OSReadBigInt64 ([self .data bytes ], self. offset );
143
- self. offset += sizeof (result);
150
+ if (_offset + sizeof (result) <= [_data length ]) {
151
+ result = OSReadBigInt64 ([_data bytes ], _offset );
152
+ _offset += sizeof (result);
144
153
} else {
145
154
[NSException raise :NSRangeException format: @" Trying to read past end in %s " , __cmd];
146
155
result = 0 ;
@@ -181,37 +190,37 @@ - (double)readLittleFloat64;
181
190
182
191
- (void )appendBytesOfLength : (NSUInteger )length intoData : (NSMutableData *)data ;
183
192
{
184
- if (self. offset + length <= [self .data length ]) {
185
- [data appendBytes: (uint8_t *)[self .data bytes ] + self .offset length: length];
186
- self. offset += length;
193
+ if (_offset + length <= [_data length ]) {
194
+ [data appendBytes: (uint8_t *)[_data bytes ] + _offset length: length];
195
+ _offset += length;
187
196
} else {
188
197
[NSException raise :NSRangeException format: @" Trying to read past end in %s " , __cmd];
189
198
}
190
199
}
191
200
192
201
- (void )readBytesOfLength : (NSUInteger )length intoBuffer : (void *)buf ;
193
202
{
194
- if (self. offset + length <= [self .data length ]) {
195
- memcpy (buf, (uint8_t *)[self .data bytes ] + self. offset , length);
196
- self. offset += length;
203
+ if (_offset + length <= [_data length ]) {
204
+ memcpy (buf, (uint8_t *)[_data bytes ] + _offset , length);
205
+ _offset += length;
197
206
} else {
198
207
[NSException raise :NSRangeException format: @" Trying to read past end in %s " , __cmd];
199
208
}
200
209
}
201
210
202
211
- (BOOL )isAtEnd ;
203
212
{
204
- return self. offset >= [self .data length ];
213
+ return _offset >= [_data length ];
205
214
}
206
215
207
216
- (NSString *)readCString ;
208
217
{
209
- return [self readStringOfLength: strlen ((const char *)[self .data bytes ] + self .offset ) encoding: NSASCIIStringEncoding];
218
+ return [self readStringOfLength: strlen ((const char *)[_data bytes ] + _offset ) encoding: NSASCIIStringEncoding];
210
219
}
211
220
212
221
- (NSString *)readStringOfLength : (NSUInteger )length encoding : (NSStringEncoding )encoding ;
213
222
{
214
- if (self. offset + length <= [self .data length ]) {
223
+ if (_offset + length <= [_data length ]) {
215
224
NSString *str;
216
225
217
226
if (encoding == NSASCIIStringEncoding) {
@@ -224,16 +233,16 @@ - (NSString *)readStringOfLength:(NSUInteger)length encoding:(NSStringEncoding)e
224
233
return nil ;
225
234
}
226
235
227
- strncpy (buf, (const char *)[self .data bytes ] + self. offset , length);
236
+ strncpy (buf, (const char *)[_data bytes ] + _offset , length);
228
237
buf[length] = 0 ;
229
238
230
239
str = [[NSString alloc ] initWithBytes: buf length: strlen (buf) encoding: encoding];
231
- self. offset += length;
240
+ _offset += length;
232
241
free (buf);
233
242
return str;
234
243
} else {
235
- str = [[NSString alloc ] initWithBytes: (uint8_t *)[self .data bytes ] + self .offset length: length encoding: encoding];
236
- self. offset += length;
244
+ str = [[NSString alloc ] initWithBytes: (uint8_t *)[_data bytes ] + _offset length: length encoding: encoding];
245
+ _offset += length;
237
246
return str;
238
247
}
239
248
} else {
0 commit comments