48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
-
-
+
|
{
return data;
}
- (void*)item: (size_t)item
{
if (item >= items)
/* FIXME: Maybe OFOutOfRangeException would be better? */
[[OFOverflowException newWithObject: self] raise];
[[OFOutOfRangeException newWithObject: self] raise];
return data + item * itemsize;
}
- (void*)last
{
return data + (items - 1) * itemsize;
|
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
-
+
-
+
|
return self;
}
- addNItems: (size_t)nitems
fromCArray: (void*)carray
{
if (nitems > SIZE_MAX - items)
[[OFOverflowException newWithObject: self] raise];
[[OFOutOfRangeException newWithObject: self] raise];
data = [self resizeMem: data
toNItems: items + nitems
ofSize: itemsize];
memcpy(data + items * itemsize, carray, nitems * itemsize);
items += nitems;
return self;
}
- removeNItems: (size_t)nitems
{
if (nitems > items)
[[OFOverflowException newWithObject: self] raise];
[[OFOutOfRangeException newWithObject: self] raise];
data = [self resizeMem: data
toNItems: items - nitems
ofSize: itemsize];
items -= nitems;
|