@@ -29,7 +29,6 @@ DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
2929namespace Doxense . Serialization . Encoders
3030{
3131 using System ;
32- using Doxense . Collections . Tuples ;
3332 using Doxense . Memory ;
3433
3534 public interface ICompositeKeyEncoder < T1 , T2 > : IKeyEncoder < ( T1 , T2 ) >
@@ -76,220 +75,4 @@ public interface ICompositeKeyEncoder<T1, T2, T3, T4, T5, T6> : IKeyEncoder<(T1,
7675 /// <summary>Read some or all parts of a composite key</summary>
7776 void ReadKeyPartsFrom ( ref SliceReader reader , int count , out ( T1 , T2 , T3 , T4 , T5 , T6 ) items ) ;
7877 }
79-
80- public static partial class KeyEncoderExtensions
81- {
82-
83- #region <T1, T2>
84-
85- public static void WriteKeyTo < T1 , T2 > ( this ICompositeKeyEncoder < T1 , T2 > encoder , ref SliceWriter writer , T1 value1 , T2 value2 )
86- {
87- var tuple = ( value1 , value2 ) ;
88- encoder . WriteKeyPartsTo ( ref writer , 2 , ref tuple ) ;
89- }
90-
91- public static Slice EncodeKey < T1 , T2 > ( this ICompositeKeyEncoder < T1 , T2 > encoder , T1 item1 , T2 item2 )
92- {
93- var writer = default ( SliceWriter ) ;
94- var tuple = ( item1 , item2 ) ;
95- encoder . WriteKeyPartsTo ( ref writer , 2 , ref tuple ) ;
96- return writer . ToSlice ( ) ;
97- }
98-
99- public static Slice EncodeKey < T1 , T2 > ( this ICompositeKeyEncoder < T1 , T2 > encoder , Slice prefix , T1 item1 , T2 item2 )
100- {
101- var writer = new SliceWriter ( prefix . Count + 24 ) ;
102- writer . WriteBytes ( prefix ) ;
103- encoder . WriteKeyTo ( ref writer , item1 , item2 ) ;
104- return writer . ToSlice ( ) ;
105- }
106-
107- public static Slice EncodePartialKey < T1 , T2 > ( this ICompositeKeyEncoder < T1 , T2 > encoder , T1 item1 )
108- {
109- var writer = default ( SliceWriter ) ;
110- var tuple = ( item1 , default ( T2 ) ) ;
111- encoder . WriteKeyPartsTo ( ref writer , 1 , ref tuple ) ;
112- return writer . ToSlice ( ) ;
113- }
114-
115- public static Slice EncodePartialKey < T1 , T2 > ( this ICompositeKeyEncoder < T1 , T2 > encoder , Slice prefix , T1 item1 )
116- {
117- var writer = new SliceWriter ( prefix . Count + 16 ) ;
118- writer . WriteBytes ( prefix ) ;
119- var tuple = ( item1 , default ( T2 ) ) ;
120- encoder . WriteKeyPartsTo ( ref writer , 1 , ref tuple ) ;
121- return writer . ToSlice ( ) ;
122- }
123-
124- public static Slice EncodeKeyParts < T1 , T2 > ( this ICompositeKeyEncoder < T1 , T2 > encoder , int count , ( T1 , T2 ) items )
125- {
126- var writer = default ( SliceWriter ) ;
127- encoder . WriteKeyPartsTo ( ref writer , count , ref items ) ;
128- return writer . ToSlice ( ) ;
129- }
130-
131- public static STuple < T1 , T2 > DecodeKey < T1 , T2 > ( this ICompositeKeyEncoder < T1 , T2 > decoder , Slice encoded )
132- {
133- var reader = new SliceReader ( encoded ) ;
134- decoder . ReadKeyFrom ( ref reader , out var items ) ;
135- //TODO: throw if extra bytes?
136- return items ;
137- }
138-
139- public static STuple < T1 , T2 > DecodeKeyParts < T1 , T2 > ( this ICompositeKeyEncoder < T1 , T2 > encoder , int count , Slice encoded )
140- {
141- var reader = new SliceReader ( encoded ) ;
142- encoder . ReadKeyPartsFrom ( ref reader , count , out var items ) ;
143- return items ;
144- }
145-
146- #endregion
147-
148- #region <T1, T2, T3>
149-
150- public static void WriteKeyTo < T1 , T2 , T3 > ( this ICompositeKeyEncoder < T1 , T2 , T3 > encoder , ref SliceWriter writer , T1 value1 , T2 value2 , T3 value3 )
151- {
152- var tuple = ( value1 , value2 , value3 ) ;
153- encoder . WriteKeyPartsTo ( ref writer , 3 , ref tuple ) ;
154- }
155-
156- public static Slice EncodeKey < T1 , T2 , T3 > ( this ICompositeKeyEncoder < T1 , T2 , T3 > encoder , T1 item1 , T2 item2 , T3 item3 )
157- {
158- var writer = default ( SliceWriter ) ;
159- var tuple = ( item1 , item2 , item3 ) ;
160- encoder . WriteKeyPartsTo ( ref writer , 3 , ref tuple ) ;
161- return writer . ToSlice ( ) ;
162- }
163-
164- public static Slice EncodeKey < T1 , T2 , T3 > ( this ICompositeKeyEncoder < T1 , T2 , T3 > encoder , Slice prefix , T1 item1 , T2 item2 , T3 item3 )
165- {
166- var writer = new SliceWriter ( prefix . Count + 32 ) ;
167- writer . WriteBytes ( prefix ) ;
168- encoder . WriteKeyTo ( ref writer , item1 , item2 , item3 ) ;
169- return writer . ToSlice ( ) ;
170- }
171-
172- public static Slice EncodeKeyParts < T1 , T2 , T3 > ( this ICompositeKeyEncoder < T1 , T2 , T3 > encoder , int count , ( T1 , T2 , T3 ) items )
173- {
174- var writer = default ( SliceWriter ) ;
175- encoder . WriteKeyPartsTo ( ref writer , count , ref items ) ;
176- return writer . ToSlice ( ) ;
177- }
178-
179- public static STuple < T1 , T2 , T3 > DecodeKey < T1 , T2 , T3 > ( this ICompositeKeyEncoder < T1 , T2 , T3 > decoder , Slice encoded )
180- {
181- var reader = new SliceReader ( encoded ) ;
182- decoder . ReadKeyFrom ( ref reader , out var items ) ;
183- //TODO: throw if extra bytes?
184- return items ;
185- }
186-
187- public static STuple < T1 , T2 , T3 > DecodeKeyParts < T1 , T2 , T3 > ( this ICompositeKeyEncoder < T1 , T2 , T3 > encoder , int count , Slice encoded )
188- {
189- var reader = new SliceReader ( encoded ) ;
190- encoder . ReadKeyPartsFrom ( ref reader , count , out var items ) ;
191- return items ;
192- }
193-
194- #endregion
195-
196- #region <T1, T2, T3, T4>
197-
198- public static void WriteKeyTo < T1 , T2 , T3 , T4 > ( this ICompositeKeyEncoder < T1 , T2 , T3 , T4 > encoder , ref SliceWriter writer , T1 value1 , T2 value2 , T3 value3 , T4 value4 )
199- {
200- var tuple = ( value1 , value2 , value3 , value4 ) ;
201- encoder . WriteKeyPartsTo ( ref writer , 4 , ref tuple ) ;
202- }
203-
204- public static Slice EncodeKey < T1 , T2 , T3 , T4 > ( this ICompositeKeyEncoder < T1 , T2 , T3 , T4 > encoder , T1 item1 , T2 item2 , T3 item3 , T4 item4 )
205- {
206- var writer = default ( SliceWriter ) ;
207- var tuple = ( item1 , item2 , item3 , item4 ) ;
208- encoder . WriteKeyPartsTo ( ref writer , 4 , ref tuple ) ;
209- return writer . ToSlice ( ) ;
210- }
211-
212- public static Slice EncodeKey < T1 , T2 , T3 , T4 > ( this ICompositeKeyEncoder < T1 , T2 , T3 , T4 > encoder , Slice prefix , T1 item1 , T2 item2 , T3 item3 , T4 item4 )
213- {
214- var writer = new SliceWriter ( prefix . Count + 48 ) ;
215- writer . WriteBytes ( prefix ) ;
216- encoder . WriteKeyTo ( ref writer , item1 , item2 , item3 , item4 ) ;
217- return writer . ToSlice ( ) ;
218- }
219-
220- public static Slice EncodeKeyParts < T1 , T2 , T3 , T4 > ( this ICompositeKeyEncoder < T1 , T2 , T3 , T4 > encoder , int count , ( T1 , T2 , T3 , T4 ) items )
221- {
222- var writer = default ( SliceWriter ) ;
223- encoder . WriteKeyPartsTo ( ref writer , count , ref items ) ;
224- return writer . ToSlice ( ) ;
225- }
226-
227- public static STuple < T1 , T2 , T3 , T4 > DecodeKey < T1 , T2 , T3 , T4 > ( this ICompositeKeyEncoder < T1 , T2 , T3 , T4 > decoder , Slice encoded )
228- {
229- var reader = new SliceReader ( encoded ) ;
230- decoder . ReadKeyFrom ( ref reader , out var items ) ;
231- //TODO: throw if extra bytes?
232- return items ;
233- }
234-
235- public static STuple < T1 , T2 , T3 , T4 > DecodeKeyParts < T1 , T2 , T3 , T4 > ( this ICompositeKeyEncoder < T1 , T2 , T3 , T4 > encoder , int count , Slice encoded )
236- {
237- var reader = new SliceReader ( encoded ) ;
238- encoder . ReadKeyPartsFrom ( ref reader , count , out var items ) ;
239- return items ;
240- }
241-
242- #endregion
243-
244- #region <T1, T2, T3, T4, T5>
245-
246- public static void WriteKeyTo < T1 , T2 , T3 , T4 , T5 > ( this ICompositeKeyEncoder < T1 , T2 , T3 , T4 , T5 > encoder , ref SliceWriter writer , T1 value1 , T2 value2 , T3 value3 , T4 value4 , T5 value5 )
247- {
248- var tuple = ( value1 , value2 , value3 , value4 , value5 ) ;
249- encoder . WriteKeyPartsTo ( ref writer , 5 , ref tuple ) ;
250- }
251-
252- public static Slice EncodeKey < T1 , T2 , T3 , T4 , T5 > ( this ICompositeKeyEncoder < T1 , T2 , T3 , T4 , T5 > encoder , T1 item1 , T2 item2 , T3 item3 , T4 item4 , T5 item5 )
253- {
254- var writer = default ( SliceWriter ) ;
255- var tuple = ( item1 , item2 , item3 , item4 , item5 ) ;
256- encoder . WriteKeyPartsTo ( ref writer , 5 , ref tuple ) ;
257- return writer . ToSlice ( ) ;
258- }
259-
260- public static Slice EncodeKey < T1 , T2 , T3 , T4 , T5 > ( this ICompositeKeyEncoder < T1 , T2 , T3 , T4 , T5 > encoder , Slice prefix , T1 item1 , T2 item2 , T3 item3 , T4 item4 , T5 item5 )
261- {
262- var writer = new SliceWriter ( prefix . Count + 56 ) ;
263- writer . WriteBytes ( prefix ) ;
264- encoder . WriteKeyTo ( ref writer , item1 , item2 , item3 , item4 , item5 ) ;
265- return writer . ToSlice ( ) ;
266- }
267-
268- public static Slice EncodeKeyParts < T1 , T2 , T3 , T4 , T5 > ( this ICompositeKeyEncoder < T1 , T2 , T3 , T4 , T5 > encoder , int count , ( T1 , T2 , T3 , T4 , T5 ) items )
269- {
270- var writer = default ( SliceWriter ) ;
271- encoder . WriteKeyPartsTo ( ref writer , count , ref items ) ;
272- return writer . ToSlice ( ) ;
273- }
274-
275- public static STuple < T1 , T2 , T3 , T4 , T5 > DecodeKey < T1 , T2 , T3 , T4 , T5 > ( this ICompositeKeyEncoder < T1 , T2 , T3 , T4 , T5 > decoder , Slice encoded )
276- {
277- var reader = new SliceReader ( encoded ) ;
278- decoder . ReadKeyFrom ( ref reader , out var items ) ;
279- //TODO: throw if extra bytes?
280- return items ;
281- }
282-
283- public static STuple < T1 , T2 , T3 , T4 , T5 > DecodeKeyParts < T1 , T2 , T3 , T4 , T5 > ( this ICompositeKeyEncoder < T1 , T2 , T3 , T4 , T5 > encoder , int count , Slice encoded )
284- {
285- var reader = new SliceReader ( encoded ) ;
286- encoder . ReadKeyPartsFrom ( ref reader , count , out var items ) ;
287- return items ;
288- }
289-
290-
291- #endregion
292-
293- }
294-
29578}
0 commit comments