ObjFW  Diff

Differences From Artifact [9c7f745e9f]:

To Artifact [3b79729549]:


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
60
61


62
63
64
65


66
67
68
69
70
71


72
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

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
139
140


141
142
143


144
145
146
147
148
149


150
151
152
153
154


155
156
157
158
159


160
161
162
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


60
61
62
63


64
65
66
67
68
69


70
71
72


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
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


139
140
141


142
143
144
145
146
147


148
149
150
151
152


153
154
155
156
157


158
159
160
161
162







-
-
+
+



-
-
+
+

-
+



-
-
+
+

-
+



-
-
+
+

-
-
+
+




-
-
+
+

-
-
+
+




-
-
+
+


-
-
+
+




-
-
+
+

-
-
+
+






-
-
+
+


-
-
+
+




-
-
+
+

-
+



-
-
+
+


-
+



-
-
+
+

-
+



-
-
+
+

-
+



-
-
+
+



-
-
+
+




-
-
+
+

-
+




-
-
+
+

-
-
+
+




-
-
+
+



-
-
+
+



-
-
+
+




#import "OFArray.h"

#ifdef OF_HAVE_BLOCKS
typedef id (^of_array_replace_block_t)(id obj, size_t idx, BOOL *stop);
#endif

/**
 * \brief An abstract class for storing, adding and removing objects in anr
/*!
 * @brief An abstract class for storing, adding and removing objects in anr
 *	  array.
 */
@interface OFMutableArray: OFArray
/**
 * \brief Adds an object to the end of the array.
/*!
 * @brief Adds an object to the end of the array.
 *
 * \param object An object to add
 * @param object An object to add
 */
- (void)addObject: (id)object;

/**
 * \brief Adds the objects from the specified OFArray to the end of the array.
/*!
 * @brief Adds the objects from the specified OFArray to the end of the array.
 *
 * \brief array An array of objects to add
 * @brief array An array of objects to add
 */
- (void)addObjectsFromArray: (OFArray*)array;

/**
 * \brief Inserts an object to the OFArray at the specified index.
/*!
 * @brief Inserts an object to the OFArray at the specified index.
 *
 * \param object An object to add
 * \param index The index where the object should be inserted
 * @param object An object to add
 * @param index The index where the object should be inserted
 */
- (void)insertObject: (id)object
	     atIndex: (size_t)index;

/**
 * \brief Inserts the objects from the specified OFArray at the specified index.
/*!
 * @brief Inserts the objects from the specified OFArray at the specified index.
 *
 * \param array An array of objects
 * \param index The index where the objects should be inserted
 * @param array An array of objects
 * @param index The index where the objects should be inserted
 */
- (void)insertObjectsFromArray: (OFArray*)array
		       atIndex: (size_t)index;

/**
 * \brief Replaces the first object equivalent to the specified object with the
/*!
 * @brief Replaces the first object equivalent to the specified object with the
 *	  other specified object.
 *
 * \param oldObject The object to replace
 * \param newObject The replacement object
 * @param oldObject The object to replace
 * @param newObject The replacement object
 */
- (void)replaceObject: (id)oldObject
	   withObject: (id)newObject;

/**
 * \brief Replaces the object at the specified index with the specified object.
/*!
 * @brief Replaces the object at the specified index with the specified object.
 *
 * \param index The index of the object to replace
 * \param object The replacement object
 * @param index The index of the object to replace
 * @param object The replacement object
 */
- (void)replaceObjectAtIndex: (size_t)index
		  withObject: (id)object;
-    (void)setObject: (id)object
  atIndexedSubscript: (size_t)index;

/**
 * \brief Replaces the first object that has the same address as the specified
/*!
 * @brief Replaces the first object that has the same address as the specified
 *	  object with the other specified object.
 *
 * \param oldObject The object to replace
 * \param newObject The replacement object
 * @param oldObject The object to replace
 * @param newObject The replacement object
 */
- (void)replaceObjectIdenticalTo: (id)oldObject
		      withObject: (id)newObject;

/**
 * \brief Removes the first object equivalent to the specified object.
/*!
 * @brief Removes the first object equivalent to the specified object.
 *
 * \param object The object to remove
 * @param object The object to remove
 */
- (void)removeObject: (id)object;

/**
 * \brief Removes the first object that has the same address as the specified
/*!
 * @brief Removes the first object that has the same address as the specified
 *	  object.
 *
 * \param object The object to remove
 * @param object The object to remove
 */
- (void)removeObjectIdenticalTo: (id)object;

/**
 * \brief Removes the object at the specified index.
/*!
 * @brief Removes the object at the specified index.
 *
 * \param index The index of the object to remove
 * @param index The index of the object to remove
 */
- (void)removeObjectAtIndex: (size_t)index;

/**
 * \brief Removes the object in the specified range.
/*!
 * @brief Removes the object in the specified range.
 *
 * \param range The range of the objects to remove
 * @param range The range of the objects to remove
 */
- (void)removeObjectsInRange: (of_range_t)range;

/**
 * \brief Removes the last object.
/*!
 * @brief Removes the last object.
 */
- (void)removeLastObject;

/**
 * \brief Removes all objects.
/*!
 * @brief Removes all objects.
 */
- (void)removeAllObjects;

#ifdef OF_HAVE_BLOCKS
/**
 * \brief Replaces each object with the object returned by the block.
/*!
 * @brief Replaces each object with the object returned by the block.
 *
 * \param block The block which returns a new object for each object
 * @param block The block which returns a new object for each object
 */
- (void)replaceObjectsUsingBlock: (of_array_replace_block_t)block;
#endif

/**
 * \brief Exchange the objects at the specified indices.
/*!
 * @brief Exchange the objects at the specified indices.
 *
 * \param index1 The index of the first object to exchange
 * \param index2 The index of the second object to exchange
 * @param index1 The index of the first object to exchange
 * @param index2 The index of the second object to exchange
 */
- (void)exchangeObjectAtIndex: (size_t)index1
	    withObjectAtIndex: (size_t)index2;

/**
 * \brief Sorts the array.
/*!
 * @brief Sorts the array.
 */
- (void)sort;

/**
 * \brief Reverts the order of the objects in the array.
/*!
 * @brief Reverts the order of the objects in the array.
 */
- (void)reverse;

/**
 * \brief Converts the mutable array to an immutable array.
/*!
 * @brief Converts the mutable array to an immutable array.
 */
- (void)makeImmutable;
@end