Example #1
0
        // ensure only one accessor for each rank
        public static DynamicIndexerAccessor GetIndexerAccessor(int rank)
        {
            if (_accessors.Length < rank || _accessors[rank - 1] == null)
            {
                lock (_lock)
                {
                    if (_accessors.Length < rank)
                    {
                        DynamicIndexerAccessor[] newAccessors = new DynamicIndexerAccessor[rank];
                        Array.Copy(_accessors, 0, newAccessors, 0, _accessors.Length);
                        _accessors = newAccessors;
                    }

                    if (_accessors[rank - 1] == null)
                    {
                        _accessors[rank - 1] = new DynamicIndexerAccessorImpl(rank);
                    }
                }
            }

            return(_accessors[rank - 1]);
        }
Example #2
0
 // return a DynamicIndexerAccessor with the given number of arguments
 internal override object GetIndexerAccessor(int rank)
 {
     return(DynamicIndexerAccessorImpl.GetIndexerAccessor(rank));
 }