1 //
2 //  PcsxrMemoryObject.h
3 //  Pcsxr
4 //
5 //  Created by Charles Betts on 11/23/11.
6 //  Copyright (c) 2011 __MyCompanyName__. All rights reserved.
7 //
8 
9 #import <Cocoa/Cocoa.h>
10 #include "sio.h"
11 
12 typedef NS_ENUM(char, PCSXRMemFlag) {
13 	PCSXRMemFlagDeleted,
14 	PCSXRMemFlagFree,
15 	PCSXRMemFlagUsed,
16 	PCSXRMemFlagLink,
17 	PCSXRMemFlagEndLink
18 };
19 
20 @interface PcsxrMemoryObject : NSObject
21 @property (readonly, copy) NSString *title;
22 @property (readonly, copy) NSString *name;
23 @property (readonly, copy) NSString *identifier;
24 @property (readonly, strong) NSArray *imageArray;
25 @property (readonly, strong, nonatomic) NSImage *image;
26 @property (readonly) PCSXRMemFlag flag;
27 @property (readonly, strong) NSIndexSet *indexes;
28 @property (readonly) uint8_t blockSize;
29 @property (readonly) BOOL hasImages;
30 
31 + (NSArray<NSImage*> *)imagesFromMcd:(McdBlock *)block;
32 + (NSString*)memoryLabelFromFlag:(PCSXRMemFlag)flagNameIndex;
33 + (NSImage *)blankImage;
34 + (PCSXRMemFlag)memFlagsFromBlockFlags:(unsigned char)blockFlags;
35 
36 - (instancetype)initWithMcdBlock:(McdBlock *)infoBlockc startingIndex:(uint8_t)startIdx size:(uint8_t)memSize DEPRECATED_ATTRIBUTE;
37 - (instancetype)initWithMcdBlock:(McdBlock *)infoBlockc blockIndexes:(NSIndexSet*)blockIdx NS_DESIGNATED_INITIALIZER;
38 
39 - (NSImage*)memoryImageAtIndex:(NSInteger)idx;
40 
41 
42 @property (readonly, copy) NSImage *firstImage;
43 @property (readonly, nonatomic) NSUInteger iconCount;
44 @property (readonly, unsafe_unretained, nonatomic) NSString *flagName;
45 @property (readonly, unsafe_unretained, nonatomic) NSAttributedString *attributedFlagName;
46 @property (readonly, nonatomic) BOOL showCount;
47 
48 @end
49