Esempio n. 1
0
        protected T ListItem <T>(int index, MakeListConstructor <T> make, MakeListGetCount count, MakeListGetItem <T> get)
        {
            if (index < 0)
            {
                throw new ArgumentOutOfRangeException("index < 0");
            }

            IntPtr p = Handle;

            int n = count(p);

            if (index >= n)
            {
                throw new ArgumentOutOfRangeException("index >= " + n);
            }

            return(make(get(p, index)));
        }
Esempio n. 2
0
        protected List <T> MakeList <T>(MakeListConstructor <T> make, MakeListGetCount count, MakeListGetItem <T> get)
        {
            ThrowHelper.ThrowIfNull(count, "count");
            ThrowHelper.ThrowIfNull(get, "get");

            IntPtr p = Handle;

            int n = count(p);

            if (n == 0)
            {
                return(new List <T>());
            }

            List <T> items = new List <T>(n);

            for (int i = 0; i < n; ++i)
            {
                items.Add(make(get(p, i)));
            }

            return(items);
        }