/*!
 * @author electricessence / https://github.com/electricessence/
 * Licensing: MIT https://github.com/electricessence/TypeScript.NET/blob/master/LICENSE.md
 */
System.register(["./Utility", "../../Exceptions/ArgumentNullException", "../Enumeration/Enumerator", "../ReadOnlyCollectionBase"], function(exports_1, context_1) {
    "use strict";
    var __moduleName = context_1 && context_1.id;
    var __extends = (this && this.__extends) || function (d, b) {
        for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
    var ArrayUtility, ArgumentNullException_1, Enumerator_1, ReadOnlyCollectionBase_1;
    var ReadOnlyArrayWrapper;
    return {
        setters:[
            function (ArrayUtility_1) {
                ArrayUtility = ArrayUtility_1;
            },
            function (ArgumentNullException_1_1) {
                ArgumentNullException_1 = ArgumentNullException_1_1;
            },
            function (Enumerator_1_1) {
                Enumerator_1 = Enumerator_1_1;
            },
            function (ReadOnlyCollectionBase_1_1) {
                ReadOnlyCollectionBase_1 = ReadOnlyCollectionBase_1_1;
            }],
        execute: function() {
            ReadOnlyArrayWrapper = (function (_super) {
                __extends(ReadOnlyArrayWrapper, _super);
                function ReadOnlyArrayWrapper(a) {
                    _super.call(this);
                    if (!a)
                        throw new ArgumentNullException_1.default('collection');
                    var _ = this;
                    _._getCount = function () { return a.length; };
                    _.contains = function (item) { return ArrayUtility.contains(a, item); };
                    _.copyTo = function (array, index) { return ArrayUtility.copyTo(a, array, 0, index); };
                    _.getEnumerator = function () { return Enumerator_1.from(a); };
                    _.getValueAt = function (i) { return a[i]; };
                }
                return ReadOnlyArrayWrapper;
            }(ReadOnlyCollectionBase_1.default));
            exports_1("default", ReadOnlyArrayWrapper);
        }
    }
});
//# sourceMappingURL=ReadOnlyArrayWrapper.js.map