Add initial implementation for NSFilePromiseProvider

This commit is contained in:
Gregory John Casamento 2024-05-05 10:23:49 -04:00
parent 280569e07d
commit da079854f2
2 changed files with 83 additions and 3 deletions

View file

@ -28,15 +28,49 @@
#import <Foundation/NSObject.h>
#import <AppKit/AppKitDefines.h>
#if OS_API_VERSION(MAC_OS_X_VERSION_10_0, GS_API_LATEST)
#if OS_API_VERSION(MAC_OS_X_VERSION_10_12, GS_API_LATEST)
#if defined(__cplusplus)
extern "C" {
#endif
APPKIT_EXPORT_CLASS
@interface NSFilePromiseProvider : NSObject
@class NSError;
@class NSFilePromiseProvider;
@class NSOperationQueue;
@class NSString;
@class NSURL;
DEFINE_BLOCK_TYPE_NO_ARGS(GSFilePromiseProviderCompletionHandler, NSError*);
@protocol NSFilePromiseProviderDelegate
- (NSString *) filePromiseProvider: (NSFilePromiseProvider *)filePromiseProvider filenameForType: (NSString *)fileType;
- (void)filePromiseProvider:(NSFilePromiseProvider *)filePromiseProvider
writePromiseToURL:(NSURL *)url
completionHandler:(GSFilePromiseProviderCompletionHandler)completionHandler;
- (NSOperationQueue *)operationQueueForFilePromiseProvider:(NSFilePromiseProvider *)filePromiseProvider;
@end
APPKIT_EXPORT_CLASS
@interface NSFilePromiseProvider : NSObject
{
NSString *_fileType;
id<NSFilePromiseProviderDelegate> _delegate;
id _userInfo;
}
- (instancetype) initWithFileType: (NSString *)fileType delegate: (id<NSFilePromiseProviderDelegate>)delegate;
- (id<NSFilePromiseProviderDelegate>) delegate;
- (void) setDelegate: (id<NSFilePromiseProviderDelegate>) delegate;
- (NSString *) fileType;
- (void) setFileType: (NSString *)fileType;
- (id) userInfo;
- (void) setUserInfo: (id)userInfo;
@end
#if defined(__cplusplus)

View file

@ -22,9 +22,55 @@
Boston, MA 02110 USA.
*/
#import <Foundation/NSError.h>
#import <Foundation/NSString.h>
#import "AppKit/NSFilePromiseProvider.h"
@implementation NSFilePromiseProvider
- (instancetype) initWithFileType: (NSString *)fileType delegate: (id<NSFilePromiseProviderDelegate>)delegate
{
self = [super init];
if (self != nil)
{
ASSIGN(_fileType, fileType);
_delegate = delegate;
}
return self;
}
- (id<NSFilePromiseProviderDelegate>) delegate
{
return _delegate;
}
- (void) setDelegate: (id<NSFilePromiseProviderDelegate>) delegate
{
_delegate = delegate; // retained by caller...
}
- (NSString *) fileType
{
return _fileType;
}
- (void) setFileType: (NSString *)fileType
{
ASSIGN(_fileType, fileType);
}
- (id) userInfo
{
return _userInfo;
}
- (void) setUserInfo: (id)userInfo
{
ASSIGN(_userInfo, userInfo);
}
@end