baseten / Sources / BXDatabaseAdditions.h

//
// BXDatabaseAdditions.h
// BaseTen
//
// Copyright (C) 2006-2008 Marko Karppinen & Co. LLC.
//
// Before using this software, please review the available licensing options
// by visiting http://basetenframework.org/licensing/ or by contacting
// us at sales@karppinen.fi. Without an additional license, this software
// may be distributed only in compliance with the GNU General Public License.
//
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License, version 2.0,
// as published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
//
// $Id$
//

#undef TSEnumerate
#define TSEnumerate( LOOP_VAR, ENUMERATOR_VAR, ENUMERATION )  \
for (id ENUMERATOR_VAR = ENUMERATION, LOOP_VAR = [ENUMERATOR_VAR nextObject]; \
     nil != LOOP_VAR; LOOP_VAR = [ENUMERATOR_VAR nextObject])

#define BXLocalizedString( KEY, VALUE, COMMENT ) \
    ((void *) NSLocalizedStringWithDefaultValue( KEY, nil, [NSBundle bundleForClass:[BXDatabaseContext class]], VALUE, COMMENT ) ?: [NSNull null])

#define BXSafeObj( OBJECT )  ( (void *) OBJECT ?: [NSNull null] )

#define BXSafeCFRelease( CF_VAL ) ( NULL != CF_VAL ? CFRelease( CF_VAL ) : NULL )

@class BXDatabaseObjectID;
@class BXAttributeDescription;
@class BXEntityDescription;

enum BXModificationType;

@interface NSURL (BXDatabaseAdditions)
- (unsigned int) BXHash;
- (NSURL *) BXURIForHost: (NSString *) host 
				database: (NSString *) dbName 
				username: (NSString *) username 
				password: (id) password;
@end


@interface NSString (BXDatabaseAdditions)
+ (NSString *) BXURLEncodedData: (id) data;
+ (NSString *) BXURLDecodedData: (id) data;
- (NSData *) BXURLDecodedData;
- (NSData *) BXURLEncodedData;
- (NSString *) BXURLEncodedString;
- (NSString *) BXURLDecodedString;
- (NSArray *) BXKeyPathComponentsWithQuote: (NSString *) quoteString;
- (NSString *) BXAttributeName;
@end


@interface NSData (BXDatabaseAdditions)
- (NSData *) BXURLEncodedData;
- (NSData *) BXURLDecodedData;
@end


@interface NSPredicate (BXDatabaseAdditions)
+ (NSPredicate *) BXAndPredicateWithProperties: (NSArray *) properties
							matchingProperties: (NSArray *) otherProperties
										  type: (NSPredicateOperatorType) type;
+ (NSPredicate *) BXOrPredicateWithProperties: (NSArray *) properties
                            matchingProperties: (NSArray *) otherProperites
                                          type: (NSPredicateOperatorType) type;
+ (NSArray *) BXSubpredicatesForProperties: (NSArray *) properties
						matchingProperties: (NSArray *) otherProperties
									  type: (NSPredicateOperatorType) type;
- (NSArray *) BXEntities;
- (NSSet *) BXEntitySet;
- (BOOL) BXEvaluateWithObject: (id) anObject;
@end


@interface NSCompoundPredicate (BXDatabaseAdditions)
- (NSSet *) BXEntitySet;
@end


@interface NSMutableSet (BXDatabaseAdditions)
- (id) BXConditionalAdd: (id) anObject;
@end


@interface NSError (BXDatabaseAdditions)
- (NSException *) BXExceptionWithName: (NSString *) aName;
@end


@interface NSDictionary (BXDatabaseAdditions)
- (NSDictionary *) BXSubDictionaryExcludingKeys: (NSArray *) keys;
- (NSDictionary *) BXTranslateUsingKeys: (NSDictionary *) translationDict;
@end


@interface NSExpression (BXDatabaseAdditions)
- (BXEntityDescription *) BXEntity;
- (BXAttributeDescription *) BXAttribute;
@end


@interface NSArray (BXDatabaseAdditions)
- (BOOL) BXContainsObjectsInArray: (NSArray *) anArray;
- (NSMutableArray *) BXFilteredArrayUsingPredicate: (NSPredicate *) predicate others: (NSMutableArray *) otherArray;
+ (NSArray *) BXNullArray: (unsigned int) count;
@end


@interface NSSet (BXDatabaseAdditions)
- (NSPredicate *) BXOrPredicateForObjects;
@end


@interface NSMutableDictionary (BXDatabaseAdditions)
- (void) BXSetModificationType: (enum BXModificationType) aType forKey: (BXDatabaseObjectID *) aKey;
- (enum BXModificationType) BXModificationTypeForKey: (BXDatabaseObjectID *) aKey;
@end


@interface NSObject (BXDatabaseAdditions)
- (BOOL) BXIsRelationshipProxy;
@end


@interface NSProxy (BXDatabaeAdditions)
- (BOOL) BXIsRelationshipProxy;
@end
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.