|
Samond Classes Library 1.1.6-RELEASE build 132
|
00001 // 00002 // SCConfigFile.h 00003 // sclmac 00004 // 00005 // Created by Viacheslav Smolensky on 05.06.14. 00006 // Copyright (c) 2007 - 2014 by Samond Development Corporation. All rights reserved. 00007 // 00008 00016 #import <scl/SCConfig.h> 00017 00018 #define SCConfigFileClass @"SCConfigFile" ///< SCConfigFile class name 00019 00020 #pragma mark - 00021 #pragma mark Configuration file supporing types 00022 00028 enum _SCConfigFileStatus { 00029 SCConfigFileOK = 0, 00030 SCConfigFileReadError = 11, 00031 SCConfigFileWriteError = 12, 00032 }; 00033 00039 typedef SCUInteger SCConfigFileStatus; 00040 00053 @interface SCConfigFile : SCConfig { 00054 BOOL fLoaded; // Determines whether a configuration file is loaded 00055 SCArray *fAllowedComments; // Supported comments list 00056 NSString *fCommentPrefix; // Record comments prefix 00057 SCStrings *fComments; // Configuration file comments 00058 } 00059 #pragma mark - 00060 #pragma mark Class properties 00061 #if (__MAC_OS_X_VERSION_MIN_REQUIRED > 1040) || IOS_TARGET 00062 // Configuration loaded flag property 00063 @property (assign, readonly, getter=isLoaded) BOOL isLoaded; 00064 // Configuration file path property 00065 @property (retain, getter=path, setter=setPath:) NSString *path; 00066 // Record comments prefix 00067 @property (retain, getter=commentPrefix, setter=setCommentPrefix:) NSString *commentPrefix; 00068 // Configuration file comments 00069 @property (retain, getter=comments, setter=setComments:) SCStrings *comments; 00070 #endif 00071 00072 #pragma mark - 00073 #pragma mark Creating and Initializing Configurations 00074 00075 + (SCConfigFile *)configFileWithCoder:(NSCoder *)coder; 00076 + (SCConfigFile *)configFileWithContentsOfSerializedFile:(NSString *)path; 00077 + (SCConfigFile *)configFileWithDataDictionary:(NSDictionary *)dictionary; 00078 + (SCConfigFile *)configFileWithDataDictionaryFromFile:(NSString *)path; 00079 + (SCConfigFile *)configFileWithStream:(SCStream *)stream; 00080 + (SCConfigFile *)configFileWithFileStream:(NSString *)path; 00081 00082 //+ (SCConfigFile *)configFileWithPath:(NSString *)path 00083 // delegate:(id<SCConfigDelegate>)delegate 00084 // unique:(BOOL)unique 00085 // caseInsensitive:(BOOL)caseInsensitive 00086 // ignoreErrors:(BOOL)ignoreErrors; 00087 //+ (SCConfigFile *)configFileWithPath:(NSString *)path delegate:(id<SCConfigDelegate)delegate; 00088 //+ (SCConfigFile *)configFileWithPath:(NSString *)path; 00089 //+ (SCConfigFile *)configFileWithTextStream:(SCStream *)stream 00090 // delegate:(id<SCConfigDelegate)delegate 00091 // unique:(BOOL)unique 00092 // caseInsensitive:(BOOL)caseInsensitive 00093 // ignoreErrors:(BOOL)ignoreErrors; 00094 //+ (SCConfigFile *)configFileWithTextStream:(SCStream *)stream 00095 // delegate:(id<SCConfigDelegate)delegate; 00096 //+ (SCConfigFile *)configFileWithTextStream:(SCStream *)stream; 00097 //+ (SCConfigFile *)configFileWithText:(SCStrings *)text 00098 // delegate:(id<SCConfigDelegate)delegate 00099 // unique:(BOOL)unique 00100 // caseInsensitive:(BOOL)caseInsensitive 00101 // ignoreErrors:(BOOL)ignoreErrors; 00102 //+ (SCConfigFile *)configFileWithText:(SCStrings *)text delegate:(id<SCConfigDelegate)delegate; 00103 //+ (SCConfigFile *)configFileWithText:(SCStrings *)text; 00104 + (SCConfigFile *)configFileWithConfig:(SCConfig *)config; 00105 //+ (SCConfigFile *)configFileWithCollection:(id)collection; 00106 + (SCConfigFile *)configFileWithConfigFile:(SCConfigFile *)configFile; 00107 + (SCConfigFile *)configFile; 00108 00109 //- (id)initWithPath:(NSString *)path 00110 // delegate:(id<SCConfigDelegate>)delegate 00111 // unique:(BOOL)unique 00112 // caseInsensitive:(BOOL)caseInsensitive 00113 // ignoreErrors:(BOOL)ignoreErrors; 00114 //- (id)initWithPath:(NSString *)path delegate:(id<SCConfigDelegate)delegate; 00115 //- (id)initWithPath:(NSString *)path; 00116 //- (id)initWithTextStream:(SCStream *)stream 00117 // delegate:(id<SCConfigDelegate)delegate 00118 // unique:(BOOL)unique 00119 // caseInsensitive:(BOOL)caseInsensitive 00120 // ignoreErrors:(BOOL)ignoreErrors; 00121 //- (id)initWithTextStream:(SCStream *)stream delegate:(id<SCConfigDelegate)delegate; 00122 //- (id)initWithTextStream:(SCStream *)stream; 00123 //- (id)initWithText:(SCStrings *)text 00124 // delegate:(id<SCConfigDelegate)delegate 00125 // unique:(BOOL)unique 00126 // caseInsensitive:(BOOL)caseInsensitive 00127 // ignoreErrors:(BOOL)ignoreErrors; 00128 //- (id)initWithText:(SCStrings *)text delegate:(id<SCConfigDelegate)delegate; 00129 //- (id)initWithText:(SCStrings *)text; 00130 - (id)initWithConfigFile:(SCConfigFile *)configFile; 00131 //- (id)init; 00132 00133 #pragma mark - 00134 #pragma mark Getting and Setting Configuration Properties 00135 00136 - (BOOL)isLoaded; 00137 - (NSString *)description; 00138 - (NSString *)path; 00139 - (NSString *)commentPrefix; 00140 - (SCStrings *)comments; 00141 00142 - (void)setPath:(NSString *)path; 00143 - (void)setCommentPrefix:(NSString *)commentPrefix; 00144 - (void)setComments:(SCStrings *)comments; 00145 00146 #pragma mark - 00147 #pragma mark Setting and Copying Configurations 00148 00149 - (void)setConfigFile:(SCConfigFile *)configFile; 00150 - (void)setConfigFileWithText:(SCStrings *)text; 00151 - (void)setConfigFileWithPath:(NSString *)path; 00152 - (void)setConfigFileWithStream:(SCStream *)stream; 00153 00154 #pragma mark - 00155 #pragma mark Comparing Configurations 00156 00157 //- (BOOL)isEqualToConfigFile:(SCConfigFile *)configFile; 00158 //- (BOOL)isEqualToContentOfConfigFile:(SCConfigFile *)configFile; 00159 //- (BOOL)isEqualTo:(id)object; 00160 //- (BOOL)isEqual:(id)object; 00161 00162 #pragma mark - 00163 #pragma mark Converting Configurations 00164 00165 - (SCConfig *)config; 00166 00167 #pragma mark - 00168 #pragma mark Add Values from Existing Configurations 00169 00170 - (void)addValuesFromConfigFile:(SCConfigFile *)configFile; 00171 - (void)addValuesFromConfigFileWithPath:(NSString *)path; 00172 - (void)addValuesFromStream:(SCStream *)stream; 00173 00174 #pragma mark - 00175 #pragma mark Subconfiguration Access Methods 00176 00177 //- (void)addConfigFile:(SCConfigFile *)configFile forKey:(NSString *)key; 00178 //- (void)addConfigFileWithPath:(NSString *)path forKey:(NSString *)key; 00179 //- (void)addConfigFileWithStream:(SCStream *) forKey:(NSString *)key; 00180 00181 //- (void)setConfigFile:(SCConfigFile *)configFile forKey:(NSString *)key; 00182 //- (void)setConfigFileWithPath:(NSString *)path forKey:(NSString *)key; 00183 //- (void)setConfigFileWithStream:(SCStream *) forKey:(NSString *)key; 00184 00185 //- (SCConfigFile *)configFileForKey:(NSString *)key; 00186 //- (BOOL)writeConfigForKey:(NSString *)key toPath:(NSString *)path; 00187 //- (BOOL)writeConfigForKey:(NSString *)key toStream:(SCStream *)stream; 00188 //- (BOOL)appendConfigForKey:(NSString *)key toPath:(NSString *)path; 00189 //- (BOOL)appendConfigForKey:(NSString *)key toStream:(SCStream *)stream; 00190 00191 #pragma mark - 00192 #pragma mark Configuration File Reading and Writing 00193 00194 - (void)read; 00195 - (void)readConfigFileWithPath:(NSString *)path; 00196 - (void)readConfigFileFromText:(SCStrings *)text; 00197 - (void)readConfigFileFromStream:(SCStream *)stream; 00198 - (void)reload; 00199 //- (void)write; 00200 - (void)writeConfigFileWithPath:(NSString *)path; 00201 - (void)writeConfigFileToText:(SCStrings *)text; 00202 - (void)writeConfigFileToStream:(SCStream *)stream; 00203 - (void)appendConfigFileToPath:(NSString *)path; 00204 - (void)appendConfigFileToText:(SCStrings *)text; 00205 - (void)appendConfigFileToStream:(SCStream *)stream; 00206 00207 #pragma mark - 00208 #pragma mark Configuration File Comments Control 00209 00210 - (BOOL)isComment:(NSString *)string; 00211 - (void)addAllowedComment:(NSString *)comment; 00212 - (void)removeAllowedComment:(NSString *)comment; 00213 - (SCArray *)allowedComments; 00214 - (void)removeAllowedComments; 00215 00216 - (BOOL)haveComments; 00217 - (void)addComment:(NSString *)comment; 00218 - (void)addComments:(SCStrings *)comments; 00219 - (void)setComment:(NSString *)comment; 00220 - (void)removeComment:(NSString *)comment; 00221 - (void)removeComments; 00222 - (void)replaceComment:(NSString *)comment withComment:(NSString *)newComment; 00223 00224 - (SCStrings *)commentsForKey:(NSString *)key; 00225 - (BOOL)haveCommentsForKey:(NSString *)key; 00226 - (void)addComment:(NSString *)comment forKey:(NSString *)key; 00227 - (void)addComments:(SCStrings *)comments forKey:(NSString *)key; 00228 - (void)setComment:(NSString *)comment forKey:(NSString *)key; 00229 - (void)setComments:(SCStrings *)comments forKey:(NSString *)key; 00230 - (void)removeComment:(NSString *)comment forKey:(NSString *)key; 00231 - (void)removeCommentsForKey:(NSString *)key; 00232 - (void)replaceComment:(NSString *)comment 00233 withComment:(NSString *)newComment 00234 forKey:(NSString *)key; 00235 00236 #pragma mark - 00237 #pragma mark Additional methods 00238 00239 - (void)resetConfigurationFile; 00240 00241 @end
1.7.3