ObjFW  Diff

Differences From Artifact [e2784c6244]:

To Artifact [793c333b12]:


14
15
16
17
18
19
20
21

22
23
24
25
26
27
28
29
30
31
14
15
16
17
18
19
20

21
22


23
24
25
26
27
28
29







-
+

-
-







 * file.
 */

#import "OFObject.h"

OF_ASSUME_NONNULL_BEGIN

#ifndef DOXYGEN
@class OFArray OF_GENERIC(ObjectType);
@class OFEnumerator OF_GENERIC(ObjectType);
@class OFArray OF_GENERIC(ObjectType);
#endif

/*!
 * @protocol OFEnumerating OFEnumerator.h ObjFW/OFEnumerator.h
 *
 * @brief A protocol for getting an enumerator for the object.
 */
@protocol OFEnumerating
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
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







-
-
+
-
-
-
+
+
-
-




















-



+







@end

/*!
 * @class OFEnumerator OFEnumerator.h ObjFW/OFEnumerator.h
 *
 * @brief A class which provides methods to enumerate through collections.
 */
#ifdef OF_HAVE_GENERICS
@interface OFEnumerator<ObjectType>: OFObject
@interface OFEnumerator OF_GENERIC(ObjectType): OFObject
#else
# ifndef DOXYGEN
#  define ObjectType id
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define ObjectType id
# endif
@interface OFEnumerator: OFObject
#endif
/*!
 * @brief Returns the next object or `nil` if there is none left.
 *
 * @return The next object or `nil` if there is none left
 */
- (nullable ObjectType)nextObject;

/*!
 * @brief Returns an array of all remaining objects in the collection.
 *
 * @return An array of all remaining objects in the collection
 */
- (OFArray OF_GENERIC(ObjectType) *)allObjects;

/*!
 * @brief Resets the enumerator, so the next call to nextObject returns the
 *	  first object again.
 */
- (void)reset;
@end
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# undef ObjectType
#endif
@end

/*
 * This needs to be exactly like this because it's hard-coded in the compiler.
 *
 * We need this bad check to see if we already imported Cocoa, which defines
 * this as well.
 */