|
Samond Classes Library 1.1.6-RELEASE build 132
|
00001 // 00002 // SCCollection.h 00003 // scl 00004 // 00005 // Created by Viacheslav Smolensky on 13.04.12. 00006 // Copyright (c) 2007 - 2014 by Samond Development Corporation. All rights reserved. 00007 // 00008 00016 #import <scl/SCTypes.h> 00017 #import <scl/SCObject.h> 00018 #import <scl/SCSortingProtocol.h> 00019 #import <scl/SCCollectionDelegate.h> 00020 00021 @class SCStack; 00022 @class SCQueue; 00023 @class SCArray; 00024 @class SCSet; 00025 @class SCDictionary; 00026 @class SCList; 00027 @class SCUnidirectionalList; 00028 @class SCBidirectionalList; 00029 00030 #define SCCollectionClass @"SCCollection" ///< SCCollection class name 00031 #define SCOrderedSetClass @"SCOrderedSet" ///< SCOrderedSet class name 00032 #define NSOrderedSetClass @"NSOrderedSet" ///< NSOrderedSet class name 00033 #define NSMutableOrderedSetClass @"NSMutableOrderedSet" ///< NSMutableOrderedSet class name 00034 00035 #pragma mark Collection support constants 00036 00038 #define SCCollectionUnlimited 0 ///< Unlimited collection size 00039 #define SCNotFound NSNotFound ///< Constant indicates that required item not found 00040 00041 #pragma mark - 00042 #pragma mark Collection support types 00043 00049 enum _SCCollectionType { 00050 SCCollectionGeneric = 0, 00051 SCCollectionArray = 1, 00052 SCCollectionSet = 2, 00053 SCCollectionOrderedSet = 3, 00054 SCCollectionStack = 4, 00055 SCCollectionQueue = 5, 00056 SCCollectionDictionary = 6, 00057 SCCollectionGenericList = 7, 00058 SCCollectionUnidirectionalList = 8, 00059 SCCollectionBidirectionalList = 9, 00060 SCCollectionUserSpecified = 10, 00061 }; 00062 00068 typedef enum _SCCollectionType SCCollectionType; 00069 00070 #pragma mark - 00071 00093 @interface SCCollection : SCObject { 00094 NSString *fCollectionName; // Collection name 00095 BOOL fReadOnly; // Read only flag 00096 SCULong fCapacity; // Collection maximum size 00097 id<SCCollectionDelegate> fDelegate; // Collection events delegate object 00098 } 00099 #pragma mark - 00100 #pragma mark Class properties 00101 #if (__MAC_OS_X_VERSION_MIN_REQUIRED > 1040) || IOS_TARGET 00102 // Collection type property 00103 @property (assign, readonly, getter=type) SCCollectionType type; 00104 // Collection type name property 00105 @property (retain, readonly, getter=typeName) NSString *typeName; 00106 // Collection name property 00107 @property (retain, getter=collectionName, setter=setCollectionName:) NSString *collectionName; 00108 // Items count property 00109 @property (assign, readonly, getter=count) SCULong count; 00110 // Random access support property 00111 @property (assign, readonly, getter=isRandomAccess) BOOL isRandomAccess; 00112 // Indexing support property 00113 @property (assign, readonly, getter=isIndexed) BOOL isIndexed; 00114 // Read only property 00115 @property (assign, getter=isReadOnly, setter=setReadOnly:) BOOL isReadOnly; 00116 // Collection capacity property 00117 @property (assign, getter=capacity, setter=setCapacity:) SCULong capacity; 00118 // Unlimited collection size property 00119 @property (assign, readonly, getter=isUnlimited) BOOL isUnlimited; 00120 // Free items count property 00121 @property (assign, readonly, getter=freeCount) SCLong freeCount; 00122 // Free items availability property 00123 @property (assign, readonly, getter=freeItemsAvailable) BOOL freeItemsAvailable; 00124 // Empty collection flag property 00125 @property (assign, readonly, getter=isEmpty) BOOL isEmpty; 00126 // Description property 00127 @property (retain, readonly, getter=description) NSString *description; 00128 // Collection events delegate object 00129 @property (assign, getter=delegate, setter=setDelegate:) id<SCCollectionDelegate> delegate; 00130 #endif 00131 00132 #pragma mark - 00133 #pragma mark Querying Collection Properties 00134 00139 - (SCCollectionType)type; 00140 00145 - (NSString *)typeName; 00146 00151 - (NSString *)collectionName; 00152 00157 - (SCULong)count; 00158 00163 - (BOOL)isRandomAccess; 00164 00169 - (BOOL)isIndexed; 00170 00175 - (BOOL)isReadOnly; 00176 00181 - (SCULong)capacity; 00182 00187 - (BOOL)isUnlimited; 00188 00193 - (SCLong)freeCount; 00194 00199 - (BOOL)freeItemsAvailable; 00200 00205 - (BOOL)isEmpty; 00206 00211 - (id<SCCollectionDelegate>)delegate; 00212 00213 #pragma mark - 00214 #pragma mark Setting Collection Properties 00215 00220 - (void)setCollectionName:(NSString *)name; 00221 00226 - (void)setReadOnly:(BOOL)flag; 00227 00232 - (void)setCapacity:(SCULong)capacity; 00233 00238 - (void)setDelegate:(id<SCCollectionDelegate>)delegate; 00239 00240 #pragma mark - 00241 #pragma mark Setting and Copying Collections 00242 00249 - (void)copyFromCollection:(id)collection; 00250 00256 - (void)copyFromObject:(id)object; 00257 00264 - (void)copyFromObjects:(id)object, ...; 00265 00266 #pragma mark - 00267 #pragma mark Find Objects in Collection 00268 00275 - (BOOL)containsObject:(id)object; 00276 00283 - (BOOL)containsByte:(SCByte)byte; 00284 00291 - (BOOL)containsUByte:(SCUByte)byte; 00292 00299 - (BOOL)containsShort:(SCShort)sht; 00300 00307 - (BOOL)containsUShort:(SCUShort)sht; 00308 00315 - (BOOL)containsInteger:(SCInteger)integer; 00316 00323 - (BOOL)containsUInteger:(SCUInteger)integer; 00324 00331 - (BOOL)containsLong:(SCLong)longint; 00332 00339 - (BOOL)containsULong:(SCULong)longint; 00340 00347 - (BOOL)containsChar:(char)chr; 00348 00355 - (BOOL)containsUnichar:(unichar)chr; 00356 00363 - (BOOL)containsCharString:(const char *)string; 00364 00371 - (BOOL)containsBool:(BOOL)boolean; 00372 00379 - (BOOL)containsFloat:(SCFloat)flt; 00380 00387 - (BOOL)containsDouble:(SCDouble)dbl; 00388 00396 - (BOOL)containsObjects:(id)object, ...; 00397 00405 - (BOOL)containsObjectsFromCollection:(id)collection; 00406 00414 - (BOOL)containsAnyObject:(id)object, ...; 00415 00423 - (BOOL)containsAnyObjectFromCollection:(id)collection; 00424 00425 #pragma mark - 00426 #pragma mark Comparing Collections 00427 00436 - (BOOL)isEqualToCollection:(id)collection; 00437 00446 - (BOOL)isEqualToContentsOfCollection:(id)collection; 00447 00453 - (BOOL)isEqual:(id)object; 00454 00455 #pragma mark - 00456 #pragma mark Enumerating Collections 00457 00462 - (NSEnumerator *)objectEnumerator; 00463 00468 - (NSEnumerator *)reverseObjectEnumerator; 00469 00474 - (void)enumerateWithDelegate:(id<SCCollectionDelegate>)delegate; 00475 00479 - (void)enumerate; 00480 00485 - (void)reverseEnumerateWithDelegate:(id<SCCollectionDelegate>)delegate; 00486 00491 - (void)reverseEnumerate; 00492 00493 #pragma mark - 00494 #pragma mark Describing Collection 00495 00500 - (NSString *)description; 00501 00502 #pragma mark - 00503 #pragma mark Converting Collection 00504 00509 - (SCArray *)array; 00510 00515 - (SCSet *)set; 00516 00521 - (SCStack *)stack; 00522 00527 - (SCQueue *)queue; 00528 00533 - (SCDictionary *)dictionary; 00534 00539 - (SCUnidirectionalList *)unidirectionalList; 00540 00545 - (SCBidirectionalList *)bidirectionalList; 00546 00551 - (NSArray *)foundationArray; 00552 00557 - (NSSet *)foundationSet; 00558 00563 - (NSDictionary *)foundationDictionary; 00564 00565 #pragma mark - 00566 #pragma mark Adding Objects 00567 00573 - (void)addObject:(id)object; 00574 00581 - (void)addObjects:(id)object, ...; 00582 00588 - (void)addByte:(SCByte)byte; 00589 00595 - (void)addUByte:(SCUByte)byte; 00596 00602 - (void)addShort:(SCShort)sht; 00603 00609 - (void)addUShort:(SCUShort)sht; 00610 00616 - (void)addInteger:(SCInteger)integer; 00617 00623 - (void)addUInteger:(SCUInteger)integer; 00624 00630 - (void)addLong:(SCLong)longint; 00631 00637 - (void)addULong:(SCULong)longint; 00638 00644 - (void)addChar:(char)chr; 00645 00651 - (void)addUnichar:(unichar)chr; 00652 00658 - (void)addCharString:(const char *)string; 00659 00665 - (void)addBool:(BOOL)boolean; 00666 00672 - (void)addFloat:(SCFloat)flt; 00673 00679 - (void)addDouble:(SCDouble)dbl; 00680 00686 - (void)addObjectsFromCollection:(id)collection; 00687 00688 #pragma mark - 00689 #pragma mark Removing Objects 00690 00695 - (void)removeAllObjects; 00696 00702 - (void)removeObjectsWithClass:(Class)oclass; 00703 00709 - (void)removeObjectsWithClassName:(NSString *)name; 00710 00711 #pragma mark - 00712 #pragma mark Detecting Collection Type 00713 00719 + (BOOL)isCollectionClass:(NSString *)name; 00720 00727 + (BOOL)isLibraryCollectionClass:(NSString *)name; 00728 00735 + (BOOL)isFoundationCollectionClass:(NSString *)name; 00736 00742 + (BOOL)isArrayClass:(NSString *)name; 00743 00749 + (BOOL)isLibraryArrayClass:(NSString *)name; 00750 00756 + (BOOL)isFoundationArrayClass:(NSString *)name; 00757 00763 + (BOOL)isSetClass:(NSString *)name; 00764 00770 + (BOOL)isLibrarySetClass:(NSString *)name; 00771 00777 + (BOOL)isFoundationSetClass:(NSString *)name; 00778 00784 + (BOOL)isOrderedSetClass:(NSString *)name; 00785 00792 + (BOOL)isLibraryOrderedSetClass:(NSString *)name; 00793 00800 + (BOOL)isFoundationOrderedSetClass:(NSString *)name; 00801 00807 + (BOOL)isDictionaryClass:(NSString *)name; 00808 00815 + (BOOL)isLibraryDictionaryClass:(NSString *)name; 00816 00823 + (BOOL)isFoundationDictionaryClass:(NSString *)name; 00824 00830 + (BOOL)isStackClass:(NSString *)name; 00831 00837 + (BOOL)isQueueClass:(NSString *)name; 00838 00844 + (BOOL)isListClass:(NSString *)name; 00845 00852 + (BOOL)isSortableClass:(NSString *)name; 00853 00858 - (BOOL)isCollection; 00859 00864 - (BOOL)isLibraryCollection; 00865 00870 - (BOOL)isFoundationCollection; 00871 00876 - (BOOL)isArray; 00877 00882 - (BOOL)isLibraryArray; 00883 00888 - (BOOL)isFoundationArray; 00889 00894 - (BOOL)isSet; 00895 00900 - (BOOL)isLibrarySet; 00901 00906 - (BOOL)isFoundationSet; 00907 00912 - (BOOL)isOrderedSet; 00913 00918 - (BOOL)isLibraryOrderedSet; 00919 00924 - (BOOL)isFoundationOrderedSet; 00925 00930 - (BOOL)isDictionary; 00931 00936 - (BOOL)isLibraryDictionary; 00937 00942 - (BOOL)isFoundationDictionary; 00943 00948 - (BOOL)isStack; 00949 00954 - (BOOL)isQueue; 00955 00960 - (BOOL)isList; 00961 00966 - (BOOL)isSortable; 00967 00973 + (BOOL)isCollection:(id)object; 00974 00980 + (BOOL)isLibraryCollection:(id)object; 00981 00987 + (BOOL)isFoundationCollection:(id)object; 00988 00994 + (BOOL)isArray:(id)object; 00995 01001 + (BOOL)isLibraryArray:(id)object; 01002 01008 + (BOOL)isFoundationArray:(id)object; 01009 01015 + (BOOL)isSet:(id)object; 01016 01022 + (BOOL)isLibrarySet:(id)object; 01023 01029 + (BOOL)isFoundationSet:(id)object; 01030 01036 + (BOOL)isOrderedSet:(id)object; 01037 01043 + (BOOL)isLibraryOrderedSet:(id)object; 01044 01050 + (BOOL)isFoundationOrderedSet:(id)object; 01051 01057 + (BOOL)isDictionary:(id)object; 01058 01064 + (BOOL)isLibraryDictionary:(id)object; 01065 01071 + (BOOL)isFoundationDictionary:(id)object; 01072 01078 + (BOOL)isStack:(id)object; 01079 01085 + (BOOL)isQueue:(id)object; 01086 01092 + (BOOL)isList:(id)object; 01093 01099 + (BOOL)isSortable:(id)object; 01100 01101 #pragma mark - 01102 #pragma mark Additional methods 01103 01110 + (SCULong)countOfCollection:(id)collection; 01111 01112 @end
1.7.3