Samond Classes Library 1.1.6-RELEASE build 132

SCCollection.h

Go to the documentation of this file.
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
 All Classes Files Functions Typedefs Enumerations Enumerator Defines