]> git.saurik.com Git - apple/security.git/blobdiff - OSX/utilities/SecNSAdditions.h
Security-59306.11.20.tar.gz
[apple/security.git] / OSX / utilities / SecNSAdditions.h
diff --git a/OSX/utilities/SecNSAdditions.h b/OSX/utilities/SecNSAdditions.h
new file mode 100644 (file)
index 0000000..d3c2d9c
--- /dev/null
@@ -0,0 +1,73 @@
+//
+//  SecNSAdditions.h
+//  Security
+//
+
+#ifndef _SECNSADDITIONS_H_
+#define _SECNSADDITIONS_H_
+
+#import <Foundation/Foundation.h>
+
+static inline BOOL NSIsEqualSafe(NSObject* obj1, NSObject* obj2) {
+    return obj1 == nil ? (obj2 == nil) : [obj1 isEqual:obj2];
+}
+
+
+// MARK: NSArray
+
+@interface NSArray (compactDescription)
+- (NSMutableString*) concatenateWithSeparator: (NSString*) separator;
+@end
+
+@interface NSDictionary (SOSDictionaryFormat)
+- (NSString*) compactDescription;
+@end
+
+@interface NSMutableDictionary (FindAndRemove)
+-(NSObject*)extractObjectForKey:(NSString*)key;
+@end
+
+// MARK: NSSet
+
+@interface NSSet (Emptiness)
+- (bool) isEmpty;
+@end
+
+@interface NSSet (HasElements)
+- (bool) containsElementsNotIn: (NSSet*) other;
+@end
+
+@interface NSSet (compactDescription)
+- (NSString*) shortDescription;
+@end
+
+@interface NSSet (Stringizing)
+- (NSString*) sortedElementsJoinedByString: (NSString*) separator;
+- (NSString*) sortedElementsTruncated: (NSUInteger) length JoinedByString: (NSString*) separator;
+@end
+
+
+
+// MARK: NSString
+
+static inline NSString* asNSString(NSObject* object) {
+    return [object isKindOfClass:[NSString class]] ? (NSString*) object : nil;
+}
+
+@interface NSString (FileOutput)
+- (void) writeTo: (FILE*) file;
+- (void) writeToStdOut;
+- (void) writeToStdErr;
+@end
+
+// MARK: NSData
+
+@interface NSData (Hexinization)
+- (NSString*) asHexString;
+@end
+
+@interface NSMutableData (filledAndClipped)
++ (instancetype) dataWithSpace: (NSUInteger) initialSize DEREncode: (uint8_t*(^)(size_t size, uint8_t *buffer)) initialization;
+@end
+
+#endif /* SecNSAdditions_h */