added iOS source code
[wl-app.git] / iOS / Pods / Realm / include / RLMArray_Private.hpp
1 ////////////////////////////////////////////////////////////////////////////
2 //
3 // Copyright 2014 Realm Inc.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 ////////////////////////////////////////////////////////////////////////////
18
19 #import "RLMArray_Private.h"
20
21 #import "RLMCollection_Private.hpp"
22
23 #import "RLMResults_Private.hpp"
24
25 #import <realm/link_view_fwd.hpp>
26 #import <realm/table_ref.hpp>
27
28 namespace realm {
29     class Results;
30 }
31
32 @class RLMObjectBase, RLMObjectSchema, RLMProperty;
33 class RLMClassInfo;
34 class RLMObservationInfo;
35
36 @interface RLMArray () {
37 @protected
38     NSString *_objectClassName;
39     RLMPropertyType _type;
40     BOOL _optional;
41 @public
42     // The name of the property which this RLMArray represents
43     NSString *_key;
44     __weak RLMObjectBase *_parentObject;
45 }
46 @end
47
48 @interface RLMManagedArray : RLMArray <RLMFastEnumerable>
49 - (instancetype)initWithParent:(RLMObjectBase *)parentObject property:(RLMProperty *)property;
50 - (RLMManagedArray *)initWithList:(realm::List)list
51                             realm:(__unsafe_unretained RLMRealm *const)realm
52                        parentInfo:(RLMClassInfo *)parentInfo
53                          property:(__unsafe_unretained RLMProperty *const)property;
54
55 - (bool)isBackedByList:(realm::List const&)list;
56
57 // deletes all objects in the RLMArray from their containing realms
58 - (void)deleteObjectsFromRealm;
59 @end
60
61 void RLMValidateArrayObservationKey(NSString *keyPath, RLMArray *array);
62
63 // Initialize the observation info for an array if needed
64 void RLMEnsureArrayObservationInfo(std::unique_ptr<RLMObservationInfo>& info,
65                                    NSString *keyPath, RLMArray *array, id observed);
66
67
68 //
69 // RLMResults private methods
70 //
71 @interface RLMResults () <RLMFastEnumerable>
72 - (void)deleteObjectsFromRealm;
73 @end