This repository was archived by the owner on Jul 7, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCOObjectGraphContext.h
110 lines (78 loc) · 2.46 KB
/
COObjectGraphContext.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#import <Foundation/Foundation.h>
#import "COItemGraph.h"
@class ETUUID;
@class COItemGraph;
@class COObject;
@class COItem;
@class COSchemaRegistry;
@class COSchema;
@class CORelationshipCache;
@interface COObjectGraphContext : NSObject <COItemGraph, NSCopying>
{
ETUUID *rootObjectUUID_;
NSMutableDictionary *objectsByUUID_;
NSMutableSet *insertedObjects_;
NSMutableSet *modifiedObjects_;
COSchemaRegistry *schemaRegistry_;
// relationship caches:
CORelationshipCache *relationshipCache_;
}
#pragma mark Creation
- (id) initWithSchemaRegistry: (COSchemaRegistry *)aRegistry;
+ (COObjectGraphContext *) editingContext;
+ (COObjectGraphContext *) editingContextWithSchemaRegistry: (COSchemaRegistry *)aRegistry;
#pragma mark Schema
- (COSchemaRegistry *) schemaRegistry;
#pragma mark begin COItemGraph protocol
- (ETUUID *) rootItemUUID;
/**
* Returns immutable item
*/
- (COItem *) itemForUUID: (ETUUID *)aUUID;
- (NSArray *) itemUUIDs;
/**
* Insert or update an item.
*/
- (void) addItem: (COItem *)anItem;
#pragma mark end COItemGraph protocol
/**
* Replaces the editing context.
*
* There are 3 kinds of change:
* - New objects are inserted
* - Removed objects are removed
* - Changed objects are updated. (sub-case: identical objects)
*/
- (void) setItemTree: (id <COItemGraph>)aTree;
/**
* IDEA:
* Though COEditingContext implements COItemGraph, this method returns
* an independent snapshot of the editing context, suitable for passing
* to a background thread
*/
- (id<COItemGraph>) itemGraphSnapshot;
- (COObject *) rootObject;
- (void) setRootObject: (COObject *)anObject;
#pragma mark change tracking
/**
* Returns the set of objects inserted since change tracking was cleared
*/
- (NSSet *) insertedObjectUUIDs;
/**
* Returns the set of objects modified since change tracking was cleared
*/
- (NSSet *) modifiedObjectUUIDs;
- (NSSet *) insertedOrModifiedObjectUUIDs;
- (void) clearChangeTracking;
- (COObject *) insertObjectWithSchemaName: (NSString *)aSchemaName;
- (COObject *) insertObject;
#pragma mark access
- (COObject *) objectForUUID: (ETUUID *)aUUID;
/**
* @return If there exists an object which has a [COType embeddedObjectType] reference to
* anObject, return that object. Otherwise return nil.
*/
- (COObject *) embeddedObjectParent: (COObject *)anObject;
- (NSSet *) objectsWithReferencesToObject: (COObject*)anObject
inAttribute: (NSString*)anAttribute;
@end