-
Notifications
You must be signed in to change notification settings - Fork 126
/
IMutableFragment.cs
132 lines (113 loc) · 4.14 KB
/
IMutableFragment.cs
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
//
// IMutableFragment.cs
//
// Copyright (c) 2017 Couchbase, Inc All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
using System;
using JetBrains.Annotations;
namespace Couchbase.Lite
{
/// <summary>
/// An interface representing a writeable object capable of being indexed
/// via <see cref="System.String"/>
/// </summary>
public interface IMutableDictionaryFragment
{
#region Properties
/// <summary>
/// Gets the value of an arbitrary <see cref="System.String"/> key
/// </summary>
/// <param name="key">The key to lookup the value for</param>
/// <returns>The value, or lack thereof, wrapped in a <see cref="IMutableFragment"/></returns>
[NotNull]
IMutableFragment this[string key] { get; }
#endregion
}
/// <summary>
/// An interface representing a writeable object capable of being indexed
/// via <see cref="System.Int32"/>
/// </summary>
public interface IMutableArrayFragment
{
#region Properties
/// <summary>
/// Gets the value of an arbitrary index
/// </summary>
/// <param name="index">The index to lookup the value for</param>
/// <returns>The value, or lack thereof, wrapped in a <see cref="IMutableFragment"/></returns>
[NotNull]
IMutableFragment this[int index] { get; }
#endregion
}
/// <summary>
/// An interface describing a mutable entry in a key-value path
/// on an object. Note that if the key-value path does not exist,
/// then setting the value will throw an exception.
/// </summary>
public interface IMutableFragment : IMutableArrayFragment, IMutableDictionaryFragment
{
/// <summary>
/// Gets or sets the value of the fragment as an untyped object
/// </summary>
/// <exception cref="InvalidOperationException">Thrown when a value is attempted to be
/// set on a key path that does not exist</exception>
[CanBeNull]
object Value { get; set; }
/// <summary>
/// Gets the contained value as a <see cref="MutableArrayObject"/>
/// </summary>
[CanBeNull]
MutableArrayObject Array { get; set; }
/// <summary>
/// Gets the contained value as a <see cref="Blob"/>
/// </summary>
[CanBeNull]
Blob Blob { get; set; }
/// <summary>
/// Gets the contained value as a <see cref="Boolean"/>
/// </summary>
bool Boolean { get; set; }
/// <summary>
/// Gets the contained value as a <see cref="DateTimeOffset"/>
/// </summary>
DateTimeOffset Date { get; set; }
/// <summary>
/// Gets the contained value as a <see cref="MutableDictionaryObject"/>
/// </summary>
[CanBeNull]
MutableDictionaryObject Dictionary { get; set; }
/// <summary>
/// Gets the contained value as a <see cref="Double"/>
/// </summary>
double Double { get; set; }
/// <summary>
/// Gets the contained value as a <see cref="Single"/>
/// </summary>
float Float { get; set; }
/// <summary>
/// Gets the contained value as an <see cref="Int32"/>
/// </summary>
int Int { get; set; }
/// <summary>
/// Gets the contained value as an <see cref="Int64"/>
/// </summary>
long Long { get; set; }
/// <summary>
/// Gets the contained value as a <see cref="String"/>
/// </summary>
[CanBeNull]
string String { get; set; }
}
}