DeveelDB  20151217
complete SQL database system, primarly developed for .NET/Mono frameworks
BigArray.cs
Go to the documentation of this file.
1 //
2 // Copyright 2010-2015 Deveel
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16 
17 using System;
18 
19 namespace Deveel.Data.Util {
20  public static class BigArray {
21  private static int _defaultBlockLength = 10 * 1024 * 1024;
22 
23  public static int DefaultBlockLength {
24  get { return _defaultBlockLength; }
25  set {
26  if (value < 1024)
27  throw new ArgumentOutOfRangeException("value", "Minimum DefaultBlockLength value is 1024kb (1024*1024).");
28 
29  _defaultBlockLength = value;
30  }
31  }
32 
33  public static void Copy<T>(BigArray<T> source, long sourceIndex, BigArray<T> dest, long destIndex, long count) {
34  if (source == null)
35  throw new ArgumentNullException("source");
36 
37  if (sourceIndex < 0 || sourceIndex >= source.Length)
38  throw new ArgumentOutOfRangeException("sourceIndex");
39 
40  if (dest == null)
41  throw new ArgumentNullException("dest");
42 
43  if (destIndex < 0 || destIndex >= dest.Length)
44  throw new ArgumentOutOfRangeException("destIndex");
45 
46  if (destIndex + count >= dest.Length)
47  throw new ArgumentException("Cannot copy over the maximum destination capacity");
48 
49  for (var i = 0; i < count; i++) {
50  dest[destIndex + i] = source[sourceIndex + i];
51  }
52  }
53  }
54 }