Samond Classes Library 1.2.6-STABLE build 219
SCCollection.h
Go to the documentation of this file.
1 //
2 // SCCollection.h
3 // scl
4 //
5 // Created by Viacheslav Smolensky on 13.04.12.
6 // Copyright (c) 2007 - 2018 by Samond Development Corporation. All rights reserved.
7 //
8 
23 #import <Foundation/Foundation.h>
25 #import <scl/SCObject.h>
26 
27 #pragma mark -
28 #pragma mark Class Constants
29 
38 #define SCCollectionClass @"SCCollection"
39 
44 #define SCNotFound NSNotFound
45 
46 
47 @protocol SCCollectionDelegate;
48 
98 @interface SCCollection : SCObject <SCMutableCollection, NSFastEnumeration> {
99  NSString *_name; // Collection name
100  BOOL _readOnly; // Read only mode flag
101  id<SCCollectionDelegate> _delegate; // Pointer to the delegate object
102 }
103 #pragma mark -
104 #pragma mark Свойства экземпляра класса
105 
114 @property (nonatomic, readwrite, retain) NSString *name;
115 
120 @property (nonatomic, readonly, assign) SCIndex count;
121 
126 @property (nonatomic, readonly, assign) BOOL empty;
127 
132 @property (nonatomic, readwrite, assign) BOOL readOnly;
133 
138 @property (nonatomic, readwrite, retain) id<SCCollectionDelegate> delegate;
139 
144 @property (nonatomic, readonly, copy) NSString *typeName;
145 
163 @property (nonatomic, readonly, assign) NSEnumerator *objectEnumerator;
164 
169 @property (nonatomic, readonly, assign) NSEnumerator *reverseObjectEnumerator;
170 
182 @property (nonatomic, readonly, assign) SCArray *array;
183 
188 @property (nonatomic, readonly, assign) SCSet *set;
189 
194 @property (nonatomic, readonly, assign) SCOrderedSet *orderedSet;
195 
200 @property (nonatomic, readonly, assign) SCDictionary *dictionary;
201 
206 @property (nonatomic, readonly, assign) SCStack *stack;
207 
212 @property (nonatomic, readonly, assign) SCQueue *queue;
213 
218 @property (nonatomic, readonly, assign) SCUnidirectionalList *unidirectionalList;
219 
224 @property (nonatomic, readonly, assign) SCBidirectionalList *bidirectionalList;
225 
230 @property (nonatomic, readonly, assign) NSArray *foundationArray;
231 
236 @property (nonatomic, readonly, assign) NSSet *foundationSet;
237 
242 @property (nonatomic, readonly, assign) NSOrderedSet *foundationOrderedSet;
243 
248 @property (nonatomic, readonly, assign) NSDictionary *foundationDictionary;
249 
267 @property (nonatomic, readonly, assign) SCCollectionType collectionType;
268 
273 @property (nonatomic, readonly, assign) BOOL isCollection;
274 
279 @property (nonatomic, readonly, assign) BOOL isLibraryCollection;
280 
285 @property (nonatomic, readonly, assign) BOOL isFoundationCollection;
286 
291 @property (nonatomic, readonly, assign) BOOL isArray;
292 
297 @property (nonatomic, readonly, assign) BOOL isLibraryArray;
298 
304 @property (nonatomic, readonly, assign) BOOL isFoundationArray;
305 
310 @property (nonatomic, readonly, assign) BOOL isSet;
311 
316 @property (nonatomic, readonly, assign) BOOL isLibrarySet;
317 
323 @property (nonatomic, readonly, assign) BOOL isFoundationSet;
324 
329 @property (nonatomic, readonly, assign) BOOL isOrderedSet;
330 
335 @property (nonatomic, readonly, assign) BOOL isLibraryOrderedSet;
336 
343 @property (nonatomic, readonly, assign) BOOL isFoundationOrderedSet;
344 
349 @property (nonatomic, readonly, assign) BOOL isDictionary;
350 
355 @property (nonatomic, readonly, assign) BOOL isLibraryDictionary;
356 
363 @property (nonatomic, readonly, assign) BOOL isFoundationDictionary;
364 
369 @property (nonatomic, readonly, assign) BOOL isStack;
370 
375 @property (nonatomic, readonly, assign) BOOL isQueue;
376 
382 @property (nonatomic, readonly, assign) BOOL isList;
383 
389 @property (nonatomic, readonly, assign) BOOL isSortable;
390 
393 #pragma mark -
394 #pragma mark Initializing Collections
395 - (instancetype)initWithName:(NSString *)name;
396 - (instancetype)initWithCollection:(id<SCCollection>)collection;
397 
398 #pragma mark -
399 #pragma mark Copying Collections
400 - (void)setCollection:(id<SCCollection>)collection;
401 - (void)setObject:(id<SCCollectioning>)object;
402 - (void)setObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
403 
404 #pragma mark -
405 #pragma mark Comparing Collections
406 - (BOOL)isEqualToCollection:(id<SCCollection>)collection;
407 - (BOOL)isEqual:(id)object;
408 
409 #pragma mark -
410 #pragma mark Objects Enumerators
411 - (void)enumerateWithDelegate:(id<SCCollectionDelegate>)delegate;
412 - (void)enumerate;
413 - (void)reverseEnumerateWithDelegate:(id<SCCollectionDelegate>)delegate;
414 - (void)reverseEnumerate;
415 - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)buffer count:(NSUInteger)count;
416 
417 #pragma mark -
418 #pragma mark Adding Objects
419 - (void)addObject:(id<SCCollectioning>)object;
420 - (void)addObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
421 - (void)addCollection:(id<SCCollection>)collection;
422 
423 #pragma mark -
424 #pragma mark Removing Objects
425 - (void)removeAllObjects;
426 - (void)removeObjectsWithClass:(Class)oclass;
427 - (void)removeObjectsWithClassName:(NSString *)name;
428 - (void)removeCollection:(id<SCCollection>)collection;
429 - (void)removeObject:(id<SCCollectioning>)object;
430 - (void)removeObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
431 
432 #pragma mark -
433 #pragma mark Finding Objects in a Collection
434 - (BOOL)containsObject:(id<SCCollectioning>)object;
435 - (BOOL)containsObjects:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
436 - (BOOL)containsCollection:(id<SCCollection>)collection;
437 - (BOOL)containsAnyObject:(id<SCCollectioning>)object, ... NS_REQUIRES_NIL_TERMINATION;
438 - (BOOL)containsAnyObjectFromCollection:(id<SCCollection>)collection;
439 
440 #pragma mark -
441 #pragma mark Detecting Collection Type
442 + (BOOL)isCollectionClass:(NSString *)name;
443 + (BOOL)isLibraryCollectionClass:(NSString *)name;
444 + (BOOL)isFoundationCollectionClass:(NSString *)name;
445 + (BOOL)isArrayClass:(NSString *)name;
446 + (BOOL)isLibraryArrayClass:(NSString *)name;
447 + (BOOL)isFoundationArrayClass:(NSString *)name;
448 + (BOOL)isSetClass:(NSString *)name;
449 + (BOOL)isLibrarySetClass:(NSString *)name;
450 + (BOOL)isFoundationSetClass:(NSString *)name;
451 + (BOOL)isOrderedSetClass:(NSString *)name;
452 + (BOOL)isLibraryOrderedSetClass:(NSString *)name;
453 + (BOOL)isFoundationOrderedSetClass:(NSString *)name;
454 + (BOOL)isDictionaryClass:(NSString *)name;
455 + (BOOL)isLibraryDictionaryClass:(NSString *)name;
456 + (BOOL)isFoundationDictionaryClass:(NSString *)name;
457 + (BOOL)isStackClass:(NSString *)name;
458 + (BOOL)isQueueClass:(NSString *)name;
459 + (BOOL)isListClass:(NSString *)name;
460 + (BOOL)isSortableClass:(NSString *)name;
461 
462 + (BOOL)isCollection:(id)object;
463 + (BOOL)isLibraryCollection:(id)object;
464 + (BOOL)isFoundationCollection:(id)object;
465 + (BOOL)isArray:(id)object;
466 + (BOOL)isLibraryArray:(id)object;
467 + (BOOL)isFoundationArray:(id)object;
468 + (BOOL)isSet:(id)object;
469 + (BOOL)isLibrarySet:(id)object;
470 + (BOOL)isFoundationSet:(id)object;
471 + (BOOL)isOrderedSet:(id)object;
472 + (BOOL)isLibraryOrderedSet:(id)object;
473 + (BOOL)isFoundationOrderedSet:(id)object;
474 + (BOOL)isDictionary:(id)object;
475 + (BOOL)isLibraryDictionary:(id)object;
476 + (BOOL)isFoundationDictionary:(id)object;
477 + (BOOL)isStack:(id)object;
478 + (BOOL)isQueue:(id)object;
479 + (BOOL)isList:(id)object;
480 + (BOOL)isSortable:(id)object;
481 
482 @end
Unordered set class.
Definition: SCSet.h:72
Class for support the bidirectional lists of objects.
Definition: SCBidirectionalList.h:81
Unidirectional list class.
Definition: SCUnidirectionalList.h:80
Mutable collections protocol.
Definition: SCCollectionProtocols.h:597
Class SCObject header file.
Ordered set class.
Definition: SCOrderedSet.h:83
Parent class of all library classes.
Definition: SCObject.h:61
Collection types protocols header file.
Collections communications protocol.
Definition: SCCollectioning.h:79
Collections events handling class.
Definition: SCCollectionDelegate.h:526
Abstract collections class.
Definition: SCCollection.h:98
Stack of objects class.
Definition: SCStack.h:77
Queue of objects class.
Definition: SCQueue.h:83
Dictionary class.
Definition: SCDictionary.h:80
Array class.
Definition: SCArray.h:84
NSUInteger SCIndex
Definition: SCCollectionProtocols.h:53
SCCollectionType
Definition: SCCollectionProtocols.h:59