Samond Classes Library 1.2.4-RELEASE build 198
SCCollectionProtocols.h
Go to the documentation of this file.
1 //
2 // SCCollectionProtocols.h
3 // scl
4 //
5 // Created by Viacheslav Smolensky on 09.03.17.
6 // Copyright (c) 2007 - 2017 by Samond Development Corporation. All rights reserved.
7 //
8 
26 #import <Foundation/Foundation.h>
27 #if defined(GNUSTEP) && !defined(NS_ORDERED_SER_CLASS)
28 #import <scl/NSOrderedSet.h>
29 #endif
30 #import <scl/SCCollectioning.h>
31 #import <scl/SCTypes.h>
32 
33 @class SCArray;
34 @class SCSet;
35 @class SCOrderedSet;
36 @class SCDictionary;
37 @class SCStack;
38 @class SCQueue;
40 @class SCBidirectionalList;
41 
42 #pragma mark -
43 #pragma mark Collection Support Types
44 
53 typedef NSUInteger SCIndex;
54 
59 typedef enum {
65 
71 
77 
83 
89 
95 
101 
107 
113 
119 
125 
131 
138 
139 @protocol SCCollectionDelegate;
140 
141 #pragma mark -
142 #pragma mark Protocol SCCollection Declaration
143 
158 @protocol SCCollection
159 
160 #pragma mark -
161 #pragma mark Primary Collection Properties
162 
173 @property (nonatomic, readonly, retain) NSString *name;
174 
179 @property (nonatomic, readonly, assign) SCIndex count;
180 
185 @property (nonatomic, readonly, assign) BOOL empty;
186 
191 @property (nonatomic, readonly, assign) BOOL readOnly;
192 
197 @property (nonatomic, readonly, retain) id<SCCollectionDelegate> delegate;
198 
199 #pragma mark -
200 #pragma mark Additional Collection Properties
201 
212 @property (nonatomic, readonly, assign) SCArray *array;
213 
218 @property (nonatomic, readonly, assign) SCSet *set;
219 
224 @property (nonatomic, readonly, assign) SCOrderedSet *orderedSet;
225 
230 @property (nonatomic, readonly, assign) SCDictionary *dictionary;
231 
236 @property (nonatomic, readonly, assign) SCStack *stack;
237 
242 @property (nonatomic, readonly, assign) SCQueue *queue;
243 
248 @property (nonatomic, readonly, assign) SCUnidirectionalList *unidirectionalList;
249 
254 @property (nonatomic, readonly, assign) SCBidirectionalList *bidirectionalList;
255 
260 @property (nonatomic, readonly, assign) NSArray *foundationArray;
261 
266 @property (nonatomic, readonly, assign) NSSet *foundationSet;
267 
272 @property (nonatomic, readonly, assign) NSOrderedSet *foundationOrderedSet;
273 
278 @property (nonatomic, readonly, assign) NSDictionary *foundationDictionary;
279 
280 @optional
281 #pragma mark -
282 #pragma mark Objects Enumerators
283 
292 @property (nonatomic, readonly, assign) NSEnumerator *objectEnumerator;
293 
298 @property (nonatomic, readonly, assign) NSEnumerator *reverseObjectEnumerator;
299 
300 #pragma mark -
301 #pragma mark Detecting Collection Type
302 
311 @property (nonatomic, readonly, assign) SCCollectionType collectionType;
312 
317 @property (nonatomic, readonly, assign) BOOL isCollection;
318 
323 @property (nonatomic, readonly, assign) BOOL isLibraryCollection;
324 
329 @property (nonatomic, readonly, assign) BOOL isFoundationCollection;
330 
335 @property (nonatomic, readonly, assign) BOOL isArray;
336 
341 @property (nonatomic, readonly, assign) BOOL isLibraryArray;
342 
348 @property (nonatomic, readonly, assign) BOOL isFoundationArray;
349 
354 @property (nonatomic, readonly, assign) BOOL isSet;
355 
360 @property (nonatomic, readonly, assign) BOOL isLibrarySet;
361 
367 @property (nonatomic, readonly, assign) BOOL isFoundationSet;
368 
373 @property (nonatomic, readonly, assign) BOOL isOrderedSet;
374 
379 @property (nonatomic, readonly, assign) BOOL isLibraryOrderedSet;
380 
387 @property (nonatomic, readonly, assign) BOOL isFoundationOrderedSet;
388 
393 @property (nonatomic, readonly, assign) BOOL isDictionary;
394 
399 @property (nonatomic, readonly, assign) BOOL isLibraryDictionary;
400 
407 @property (nonatomic, readonly, assign) BOOL isFoundationDictionary;
408 
413 @property (nonatomic, readonly, assign) BOOL isStack;
414 
419 @property (nonatomic, readonly, assign) BOOL isQueue;
420 
426 @property (nonatomic, readonly, assign) BOOL isList;
427 
433 @property (nonatomic, readonly, assign) BOOL isSortable;
434 
436 @required
437 #pragma mark -
438 #pragma mark Initializing Collections
439 
456 - (instancetype)initWithCollection:(id<SCCollection>)collection;
457 
458 #pragma mark -
459 #pragma mark Поиск объектов коллекции
460 
476 - (BOOL)containsObject:(id<SCCollectioning>)object;
477 
493 - (BOOL)containsObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
494 
506 - (BOOL)containsCollection:(id<SCCollection>)collection;
507 
523 - (BOOL)containsAnyObject:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
524 
537 - (BOOL)containsAnyObjectFromCollection:(id<SCCollection>)collection;
538 
555 - (BOOL)isEqualToCollection:(id<SCCollection>)collection;
556 
557 @end
558 
559 #pragma mark -
560 #pragma mark Protocol SCMutableCollection Declaration
561 
576 
577 #pragma mark -
578 #pragma mark Copying Collections
579 
595 - (void)setCollection:(id<SCCollection>)collection;
596 
607 - (void)setObject:(id<SCCollectioning>)object;
608 
623 - (void)setObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
624 
625 #pragma mark -
626 #pragma mark Adding Objects
627 
642 - (void)addObject:(id<SCCollectioning>)object;
643 
658 - (void)addObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
659 
670 - (void)addCollection:(id<SCCollection>)collection;
671 
672 #pragma mark -
673 #pragma mark Removing Objects
674 
687 - (void)removeAllObjects;
688 
699 - (void)removeObjectsWithClass:(Class)oclass;
700 
711 - (void)removeObjectsWithClassName:(NSString *)name;
712 
723 - (void)removeCollection:(id<SCCollection>)collection;
724 
735 - (void)removeObject:(id<SCCollectioning>)object;
736 
751 - (void)removeObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
752 
753 @end
754 
755 #pragma mark -
756 #pragma mark Protocol SCIndexedCollection Declaration
757 
772 
773 #pragma mark -
774 #pragma mark Querying a Collection
775 
784 @property (nonatomic, readonly, assign) id firstObject;
785 
790 @property (nonatomic, readonly, assign) id lastObject;
791 
804 - (id)objectAtIndex:(SCIndex)index;
805 
806 #pragma mark -
807 #pragma mark Finding Objects in a Collection
808 
823 - (SCIndex)indexOfObject:(id<SCCollectioning>)object;
824 
829 @property (nonatomic, readonly, assign) SCIndex indexOfLastObject;
830 
831 @end
832 
833 #pragma mark -
834 #pragma mark Protocol SCMutableIndexedCollection Declaration
835 
850 
851 #pragma mark -
852 #pragma mark Adding Objects
853 
870 - (void)insertObject:(id<SCCollectioning>)object atIndex:(SCIndex)index;
871 
872 #pragma mark -
873 #pragma mark Removing Objects
874 
889 - (void)removeObjectAtIndex:(SCIndex)index;
890 
901 - (void)removeObjectsAtIndexes:(NSIndexSet *)indexes;
902 
903 #pragma mark -
904 #pragma mark Replacing Objects
905 
922 - (void)replaceObjectAtIndex:(SCIndex)index withObject:(id<SCCollectioning>)object;
923 
924 @end
Unordered set class.
Definition: SCSet.h:72
Definition: SCCollectionProtocols.h:106
SCOrderedSet * orderedSet
Definition: SCCollection.h:194
Definition: SCCollectionProtocols.h:136
NSEnumerator * objectEnumerator
Definition: SCCollection.h:163
BOOL isSet
Definition: SCCollection.h:310
id firstObject
Definition: SCCollectionProtocols.h:784
BOOL isSortable
Definition: SCCollection.h:389
SCIndex count
Definition: SCCollection.h:120
SCBidirectionalList * bidirectionalList
Definition: SCCollection.h:224
BOOL isFoundationOrderedSet
Definition: SCCollection.h:343
NSArray * foundationArray
Definition: SCCollection.h:230
Class for support the bidirectional lists of objects.
Definition: SCBidirectionalList.h:81
BOOL isLibraryDictionary
Definition: SCCollection.h:355
Definition: SCCollectionProtocols.h:64
Unidirectional list class.
Definition: SCUnidirectionalList.h:80
Mutable collections protocol.
Definition: SCCollectionProtocols.h:575
Protocol SCCollectioning header file.
Definition: SCCollectionProtocols.h:70
SCUnidirectionalList * unidirectionalList
Definition: SCCollection.h:218
Mutable indexed collection protocol.
Definition: SCCollectionProtocols.h:849
NSSet * foundationSet
Definition: SCCollection.h:236
Definition: SCCollectionProtocols.h:124
BOOL isFoundationCollection
Definition: SCCollection.h:285
Definition: SCCollectionProtocols.h:100
id lastObject
Definition: SCCollectionProtocols.h:790
BOOL readOnly
Definition: SCCollection.h:132
Ordered set class.
Definition: SCOrderedSet.h:83
BOOL isLibraryCollection
Definition: SCCollection.h:279
Definition: SCCollectionProtocols.h:76
Definition: SCCollectionProtocols.h:94
BOOL isFoundationSet
Definition: SCCollection.h:323
SCQueue * queue
Definition: SCCollection.h:212
BOOL isFoundationDictionary
Definition: SCCollection.h:363
SCArray * array
Definition: SCCollection.h:182
SCCollectionType collectionType
Definition: SCCollection.h:267
Indexed collections protocol.
Definition: SCCollectionProtocols.h:771
Definition: SCCollectionProtocols.h:82
BOOL isQueue
Definition: SCCollection.h:375
NSString * name
Definition: SCCollection.h:114
NSOrderedSet * foundationOrderedSet
Definition: SCCollection.h:242
SCIndex indexOfLastObject
Definition: SCCollectionProtocols.h:829
Library types header file.
BOOL isFoundationArray
Definition: SCCollection.h:304
BOOL isCollection
Definition: SCCollection.h:273
BOOL isArray
Definition: SCCollection.h:291
BOOL isStack
Definition: SCCollection.h:369
SCDictionary * dictionary
Definition: SCCollection.h:200
Definition: SCCollectionProtocols.h:118
Collections communications protocol.
Definition: SCCollectioning.h:79
BOOL isLibraryArray
Definition: SCCollection.h:297
SCSet * set
Definition: SCCollection.h:188
Definition: SCCollectionProtocols.h:88
Collections events handling class.
Definition: SCCollectionDelegate.h:526
Abstract collections class.
Definition: SCCollection.h:98
Stack of objects class.
Definition: SCStack.h:77
SCStack * stack
Definition: SCCollection.h:206
BOOL isDictionary
Definition: SCCollection.h:349
Definition: SCCollectionProtocols.h:112
BOOL isLibrarySet
Definition: SCCollection.h:316
Queue of objects class.
Definition: SCQueue.h:83
BOOL empty
Definition: SCCollection.h:126
Definition: SCCollectionProtocols.h:130
BOOL isLibraryOrderedSet
Definition: SCCollection.h:335
NSEnumerator * reverseObjectEnumerator
Definition: SCCollection.h:169
id< SCCollectionDelegate > delegate
Definition: SCCollection.h:138
Dictionary class.
Definition: SCDictionary.h:80
BOOL isList
Definition: SCCollection.h:382
Array class.
Definition: SCArray.h:84
NSUInteger SCIndex
Definition: SCCollectionProtocols.h:53
SCCollectionType
Definition: SCCollectionProtocols.h:59
BOOL isOrderedSet
Definition: SCCollection.h:329
NSDictionary * foundationDictionary
Definition: SCCollection.h:248