Samond Classes Library 1.2.6-STABLE build 219
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 - 2018 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 
320 - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)objects count:(NSUInteger)count;
321 
322 #pragma mark -
323 #pragma mark Detecting Collection Type
324 
333 @property (nonatomic, readonly, assign) SCCollectionType collectionType;
334 
339 @property (nonatomic, readonly, assign) BOOL isCollection;
340 
345 @property (nonatomic, readonly, assign) BOOL isLibraryCollection;
346 
351 @property (nonatomic, readonly, assign) BOOL isFoundationCollection;
352 
357 @property (nonatomic, readonly, assign) BOOL isArray;
358 
363 @property (nonatomic, readonly, assign) BOOL isLibraryArray;
364 
370 @property (nonatomic, readonly, assign) BOOL isFoundationArray;
371 
376 @property (nonatomic, readonly, assign) BOOL isSet;
377 
382 @property (nonatomic, readonly, assign) BOOL isLibrarySet;
383 
389 @property (nonatomic, readonly, assign) BOOL isFoundationSet;
390 
395 @property (nonatomic, readonly, assign) BOOL isOrderedSet;
396 
401 @property (nonatomic, readonly, assign) BOOL isLibraryOrderedSet;
402 
409 @property (nonatomic, readonly, assign) BOOL isFoundationOrderedSet;
410 
415 @property (nonatomic, readonly, assign) BOOL isDictionary;
416 
421 @property (nonatomic, readonly, assign) BOOL isLibraryDictionary;
422 
429 @property (nonatomic, readonly, assign) BOOL isFoundationDictionary;
430 
435 @property (nonatomic, readonly, assign) BOOL isStack;
436 
441 @property (nonatomic, readonly, assign) BOOL isQueue;
442 
448 @property (nonatomic, readonly, assign) BOOL isList;
449 
455 @property (nonatomic, readonly, assign) BOOL isSortable;
456 
458 @required
459 #pragma mark -
460 #pragma mark Initializing Collections
461 
478 - (instancetype)initWithCollection:(id<SCCollection>)collection;
479 
480 #pragma mark -
481 #pragma mark Поиск объектов коллекции
482 
498 - (BOOL)containsObject:(id<SCCollectioning>)object;
499 
515 - (BOOL)containsObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
516 
528 - (BOOL)containsCollection:(id<SCCollection>)collection;
529 
545 - (BOOL)containsAnyObject:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
546 
559 - (BOOL)containsAnyObjectFromCollection:(id<SCCollection>)collection;
560 
577 - (BOOL)isEqualToCollection:(id<SCCollection>)collection;
578 
579 @end
580 
581 #pragma mark -
582 #pragma mark Protocol SCMutableCollection Declaration
583 
598 
599 #pragma mark -
600 #pragma mark Copying Collections
601 
617 - (void)setCollection:(id<SCCollection>)collection;
618 
629 - (void)setObject:(id<SCCollectioning>)object;
630 
645 - (void)setObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
646 
647 #pragma mark -
648 #pragma mark Adding Objects
649 
664 - (void)addObject:(id<SCCollectioning>)object;
665 
680 - (void)addObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
681 
692 - (void)addCollection:(id<SCCollection>)collection;
693 
694 #pragma mark -
695 #pragma mark Removing Objects
696 
709 - (void)removeAllObjects;
710 
721 - (void)removeObjectsWithClass:(Class)oclass;
722 
733 - (void)removeObjectsWithClassName:(NSString *)name;
734 
745 - (void)removeCollection:(id<SCCollection>)collection;
746 
757 - (void)removeObject:(id<SCCollectioning>)object;
758 
773 - (void)removeObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
774 
775 @end
776 
777 #pragma mark -
778 #pragma mark Protocol SCIndexedCollection Declaration
779 
794 
795 #pragma mark -
796 #pragma mark Querying a Collection
797 
806 @property (nonatomic, readonly, assign) id firstObject;
807 
812 @property (nonatomic, readonly, assign) id lastObject;
813 
826 - (id)objectAtIndex:(SCIndex)index;
827 
842 - (id)objectAtIndexedSubscript:(SCIndex)index;
843 
844 #pragma mark -
845 #pragma mark Finding Objects in a Collection
846 
861 - (SCIndex)indexOfObject:(id<SCCollectioning>)object;
862 
867 @property (nonatomic, readonly, assign) SCIndex indexOfLastObject;
868 
869 @end
870 
871 #pragma mark -
872 #pragma mark Protocol SCMutableIndexedCollection Declaration
873 
888 
889 #pragma mark -
890 #pragma mark Adding Objects
891 
908 - (void)insertObject:(id<SCCollectioning>)object atIndex:(SCIndex)index;
909 
910 #pragma mark -
911 #pragma mark Removing Objects
912 
927 - (void)removeObjectAtIndex:(SCIndex)index;
928 
939 - (void)removeObjectsAtIndexes:(NSIndexSet *)indexes;
940 
941 #pragma mark -
942 #pragma mark Replacing Objects
943 
960 - (void)replaceObjectAtIndex:(SCIndex)index withObject:(id<SCCollectioning>)object;
961 
976 - (void)setObject:(id<SCCollectioning>)object atIndexedSubscript:(SCIndex)index;
977 
978 @end
979 
980 #pragma mark -
981 #pragma mark Protocol SCKeydCollection Declaration
982 
997 
998 #pragma mark -
999 #pragma mark Querying a Collection
1000 
1017 - (id)objectForKey:(NSString *)key;
1018 
1031 - (id)objectForKeyedSubscript:(NSString *)key;
1032 
1045 - (id)valueForKey:(NSString *)key;
1046 
1047 @end
1048 
1049 #pragma mark -
1050 #pragma mark Protocol SCMutableKeyedCollection Declaration
1051 
1066 
1067 #pragma mark -
1068 #pragma mark Adding and Changing Objects
1069 
1089 - (void)setObject:(id<SCCollectioning>)object forKey:(NSString *)key;
1090 
1103 - (void)setObject:(id<SCCollectioning>)object forKeyedSubscript:(NSString *)key;
1104 
1120 - (void)setValue:(id<SCCollectioning>)value forKey:(NSString *)key;
1121 
1122 #pragma mark -
1123 #pragma mark Removing Objects
1124 
1139 - (void)removeObjectForKey:(NSString *)key;
1140 
1141 @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:806
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
Mutable keyed collection protocol.
Definition: SCCollectionProtocols.h:1065
BOOL isLibraryDictionary
Definition: SCCollection.h:355
Definition: SCCollectionProtocols.h:64
Unidirectional list class.
Definition: SCUnidirectionalList.h:80
Mutable collections protocol.
Definition: SCCollectionProtocols.h:597
Protocol SCCollectioning header file.
Definition: SCCollectionProtocols.h:70
SCUnidirectionalList * unidirectionalList
Definition: SCCollection.h:218
Mutable indexed collection protocol.
Definition: SCCollectionProtocols.h:887
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:812
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:793
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:867
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
Keyed collections protocol.
Definition: SCCollectionProtocols.h:996
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