コード例 #1
0
        static public PersistentVector create1(IEnumerable items)
        {
            // optimize common case
            IList ilist = items as IList;

            if (ilist != null)
            {
                int size = ilist.Count;
                if (size <= 32)
                {
                    Object[] arr = new Object[size];
                    ilist.CopyTo(arr, 0);

                    return(new PersistentVector(size, 5, PersistentVector.EmptyNode, arr));
                }
            }

            ITransientCollection ret = EMPTY.asTransient();

            foreach (object item in items)
            {
                ret = ret.conj(item);
            }
            return((PersistentVector)ret.persistent());
        }
コード例 #2
0
        static public PersistentVector create1(ICollection items)
        {
            ITransientCollection ret = EMPTY.asTransient();

            foreach (object item in items)
            {
                ret = ret.conj(item);
            }
            return((PersistentVector)ret.persistent());
        }
コード例 #3
0
        static public PersistentVector create(ISeq items)
        {
            ITransientCollection ret = EMPTY.asTransient();

            for (; items != null; items = items.next())
            {
                ret = ret.conj(items.first());
            }
            return((PersistentVector)ret.persistent());
        }
コード例 #4
0
        private object ReadSet(TextReader source)
        {
            ConsumeChar(source);
            ReadWhiteSpace(source);
            ITransientCollection transientSet = PersistentHashSet.EMPTY.asTransient();

            while (PeekChar(source) != '}')
            {
                transientSet = transientSet.conj(Read(source));
                ReadWhiteSpace(source);
            }

            ConsumeChar(source);
            return(transientSet.persistent());
        }
コード例 #5
0
        private object ReadVector(TextReader source)
        {
            ConsumeChar(source);
            ReadWhiteSpace(source);
            ITransientCollection transientVector = PersistentVector.EMPTY.asTransient();

            while (PeekChar(source) != ']')
            {
                transientVector = transientVector.conj(Read(source));
                ReadWhiteSpace(source);
            }

            ConsumeChar(source);
            return(transientVector.persistent());
        }