/// <summary> /// Initializes a new instance of the <see cref="Matrix4F"/> structure with the specified values. /// </summary> /// <param name="elements">An array containing the matrix values in row-major order.</param> public Matrix4D(DoubleArrayList elements) { Debug.Assert(elements != null); Debug.Assert(elements.Count >= 16); _m11 = elements[0]; _m12 = elements[1]; _m13 = elements[2]; _m14 = elements[3]; _m21 = elements[4]; _m22 = elements[5]; _m23 = elements[6]; _m24 = elements[7]; _m31 = elements[8]; _m32 = elements[9]; _m33 = elements[10]; _m34 = elements[11]; _m41 = elements[12]; _m42 = elements[13]; _m43 = elements[14]; _m44 = elements[15]; }
/// <summary> /// Initializes a new instance of the <see cref="Matrix2D"/> structure with the specified values. /// </summary> /// <param name="elements">An array containing the matrix values in row-major order.</param> public Matrix2D(DoubleArrayList elements) { Debug.Assert(elements != null); Debug.Assert(elements.Count >= 4); _m11 = elements[0]; _m12 = elements[1]; _m21 = elements[2]; _m22 = elements[3]; }
/// <summary> /// Initializes a new instance of the <see cref="Matrix3F"/> structure with the specified values. /// </summary> /// <param name="elements">An array containing the matrix values in row-major order.</param> public Matrix3D(DoubleArrayList elements) { Debug.Assert(elements != null); Debug.Assert(elements.Count >= 9); _m11 = elements[0]; _m12 = elements[1]; _m13 = elements[2]; _m21 = elements[3]; _m22 = elements[4]; _m23 = elements[5]; _m31 = elements[6]; _m32 = elements[7]; _m33 = elements[8]; }
/// <summary> /// Fills the specified array of doubles with random numbers in the interval [0,1). /// </summary> /// <param name="array">An array of double-precision floating point numbers.</param> public void Fill(DoubleArrayList array) { for (int i = 0; i < array.Count; i++) { array[i] = NextDouble(); } }
/// <summary> /// Creates a deep copy of the <see cref="DoubleArrayList"/>. /// </summary> /// <returns>A deep copy of the <see cref="DoubleArrayList"/>.</returns> /// <remarks><para> /// <b>Copy</b> has the same effect as <see cref="Clone"/> /// because <see cref="double"/> is a value type. /// </para><para> /// <b>Copy</b> never returns a <b>DoubleArrayList</b> with a read-only, /// synchronized, or unique wrapper, whereas <b>Clone</b> preserves any /// wrappers around this <b>DoubleArrayList</b>. /// </para></remarks> public virtual DoubleArrayList Copy() { DoubleArrayList collection = new DoubleArrayList(this._count); Array.Copy(this._array, 0, collection._array, 0, this._count); collection._count = this._count; collection._version = this._version; return collection; }
/// <overloads> /// Adds a range of elements to the end of the <see cref="DoubleArrayList"/>. /// </overloads> /// <summary> /// Adds the elements of another collection to the end of the <see cref="DoubleArrayList"/>. /// </summary> /// <param name="collection">The <see cref="DoubleArrayList"/> whose elements /// should be added to the end of the current collection.</param> /// <exception cref="ArgumentNullException"> /// <paramref name="collection"/> is a null reference.</exception> /// <exception cref="NotSupportedException"> /// <para>The <see cref="DoubleArrayList"/> is read-only.</para> /// <para>-or-</para> /// <para>The <b>DoubleArrayList</b> has a fixed size.</para> /// <para>-or-</para> /// <para>The <b>DoubleArrayList</b> already contains one or more elements /// in the specified <paramref name="collection"/>, and the <b>DoubleArrayList</b> /// ensures that all elements are unique.</para></exception> /// <remarks>Please refer to <see cref="ArrayList.AddRange"/> for details.</remarks> public virtual void AddRange(DoubleArrayList collection) { if (collection == null) throw new ArgumentNullException("collection"); if (collection.Count == 0) return; if (this._count + collection.Count > this._array.Length) EnsureCapacity(this._count + collection.Count); ++this._version; Array.Copy(collection.InnerArray, 0, this._array, this._count, collection.Count); this._count += collection.Count; }
/// <summary> /// Returns a wrapper for the specified <see cref="DoubleArrayList"/> /// ensuring that all elements are unique. /// </summary> /// <param name="collection">The <see cref="DoubleArrayList"/> to wrap.</param> /// <returns> /// A wrapper around <paramref name="collection"/> ensuring that all elements are unique. /// </returns> /// <exception cref="ArgumentException"> /// <paramref name="collection"/> contains duplicate elements.</exception> /// <exception cref="ArgumentNullException"> /// <paramref name="collection"/> is a null reference.</exception> /// <remarks><para> /// The <b>Unique</b> wrapper provides a set-like collection by ensuring /// that all elements in the <see cref="DoubleArrayList"/> are unique. /// </para><para> /// <b>Unique</b> raises an <see cref="ArgumentException"/> if the specified /// <paramref name="collection"/> contains any duplicate elements. The returned /// wrapper raises a <see cref="NotSupportedException"/> whenever the user attempts /// to add an element that is already contained in the <b>DoubleArrayList</b>. /// </para><para> /// <strong>Note:</strong> The <b>Unique</b> wrapper reflects any changes made /// to the underlying <paramref name="collection"/>, including the possible /// creation of duplicate elements. The uniqueness of all elements is therefore /// no longer assured if the underlying collection is manipulated directly. /// </para></remarks> public static DoubleArrayList Unique(DoubleArrayList collection) { if (collection == null) throw new ArgumentNullException("collection"); for (int i = collection.Count - 1; i > 0; i--) if (collection.IndexOf(collection[i]) < i) throw new ArgumentException("collection", "Argument cannot contain duplicate elements."); return new UniqueList(collection); }
internal ReadOnlyList(DoubleArrayList collection) : base(Tag.Default) { this._collection = collection; }
/// <summary> /// Returns a read-only wrapper for the specified <see cref="DoubleArrayList"/>. /// </summary> /// <param name="collection">The <see cref="DoubleArrayList"/> to wrap.</param> /// <returns>A read-only wrapper around <paramref name="collection"/>.</returns> /// <exception cref="ArgumentNullException"> /// <paramref name="collection"/> is a null reference.</exception> /// <remarks>Please refer to <see cref="ArrayList.ReadOnly"/> for details.</remarks> public static DoubleArrayList ReadOnly(DoubleArrayList collection) { if (collection == null) throw new ArgumentNullException("collection"); return new ReadOnlyList(collection); }
/// <summary> /// Initializes a new instance of the <see cref="DoubleArrayList"/> class /// that contains elements copied from the specified collection and /// that has the same initial capacity as the number of elements copied. /// </summary> /// <param name="collection">The <see cref="DoubleArrayList"/> /// whose elements are copied to the new collection.</param> /// <exception cref="ArgumentNullException"> /// <paramref name="collection"/> is a null reference.</exception> /// <remarks>Please refer to <see cref="ArrayList(ICollection)"/> for details.</remarks> public DoubleArrayList(DoubleArrayList collection) { if (collection == null) throw new ArgumentNullException("collection"); this._array = new double[collection.Count]; AddRange(collection); }
public override void AddRange(DoubleArrayList collection) { foreach (double value in collection) CheckUnique(value); this._collection.AddRange(collection); }
internal UniqueList(DoubleArrayList collection) : base(Tag.Default) { this._collection = collection; }
public override void AddRange(DoubleArrayList collection) { lock (this._root) this._collection.AddRange(collection); }
internal SyncList(DoubleArrayList collection) : base(Tag.Default) { this._root = collection.SyncRoot; this._collection = collection; }
public override void AddRange(DoubleArrayList collection) { throw new NotSupportedException( "Read-only collections cannot be modified."); }
/// <summary> /// Returns a synchronized (thread-safe) wrapper /// for the specified <see cref="DoubleArrayList"/>. /// </summary> /// <param name="collection">The <see cref="DoubleArrayList"/> to synchronize.</param> /// <returns> /// A synchronized (thread-safe) wrapper around <paramref name="collection"/>. /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="collection"/> is a null reference.</exception> /// <remarks>Please refer to <see cref="ArrayList.Synchronized"/> for details.</remarks> public static DoubleArrayList Synchronized(DoubleArrayList collection) { if (collection == null) throw new ArgumentNullException("collection"); return new SyncList(collection); }
/// <summary> /// Initializes a new instance of the <see cref="Vector3D"/> class with the specified coordinates. /// </summary> /// <param name="coordinates">An array containing the coordinate parameters.</param> public Vector3D(DoubleArrayList coordinates) { Debug.Assert(coordinates != null); Debug.Assert(coordinates.Count >= 3); _x = coordinates[0]; _y = coordinates[1]; _z = coordinates[2]; }
internal Enumerator(DoubleArrayList collection) { this._collection = collection; this._version = collection._version; this._index = -1; }