//
//  CCHAbstractComparisonItemFilter.h
//  Shared
//
//  Created by Robinson on 21.07.2014.
//  Copyright (c) 2014 Coding Turtle. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "CCHItemFilter.h"


//Abstract class.

@interface CCHAbstractComparisonItemFilter : CCHItemFilter

//Initializers of concrete subclasses of this class should call this method as the super’s initialization method.
- (id)initWithLeftHandSideRepresentedObject:(id)leftHandSideRepresentedObject;

//Notes:
//* The result of this method corresponds to the represented object of the corresponding pop up menu item in the comparison view controller.
//* For the foreseeable future, “leftHandSideRepresentedObject” will always be a simple “string key,” e.g., “name”, “dateAdded”, “lastResolvedFileCreationDate”, or a UUID string (for custom attributes).
//* Clarification: But even in this case, the “leftHandSideRepresentedObject” is *not* the actual “left hand side.”
//  Rather, in this case, calling “valueForKey:[self leftHandSideRepresentedObject]” *on each individual item* gives us the “left hand side.”
//* Note: The reason I’m calling this “leftHandSideRepresentedObject” instead of something simpler like “key” is that I want to keep this as general as possible. Maybe later on, I will want to add some other kinds of things.
- (id)leftHandSideRepresentedObject;

//this abstract class does not implement the full CODPropertyListRepresentationProtocol protocol.
//but it does implement two of “its” methods that subclasses can call.
- (NSDictionary *)rawPropertyListRepresentation;
- (id)initWithRawPropertyListRepresentation:(NSDictionary *)rawPropertyListRepresentation;

@end
