static public IPersistentVector create(object obj) { IReduceInit ri = obj as IReduceInit; if (ri != null) { return(PersistentVector.create(ri)); } ISeq iseq = obj as ISeq; if (iseq != null) { return(PersistentVector.create(RT.seq(obj))); } IEnumerable ie = obj as IEnumerable; if (ie != null) { return(PersistentVector.create1(ie)); } return(createOwning(RT.toArray(obj))); }
static public IPersistentVector create(object obj) { //if ((obj is Counted || RT.SupportsRandomAccess(obj)) // && fcount(obj) <= Tuple.MAX_SIZE) // return Tuple.createFromColl(obj); IReduceInit ri = obj as IReduceInit; if (ri != null) { return(PersistentVector.create(ri)); } ISeq iseq = obj as ISeq; if (iseq != null) { return(PersistentVector.create(RT.seq(obj))); } IEnumerable ie = obj as IEnumerable; if (ie != null) { return(PersistentVector.create1(ie)); } return(createOwning(RT.toArray(obj))); }
static public IPersistentVector create(System.Collections.ICollection coll) { if (!(coll is ISeq) && coll.Count <= 32) { object[] array = new object[coll.Count]; coll.CopyTo(array, 0); return(createOwning(array)); } return(PersistentVector.create(RT.seq(coll))); }
static public IPersistentVector createOwning(params object[] items) { //if (items.Length <= Tuple.MAX_SIZE) // return Tuple.createFromArray(items); //else if (items.Length <= 32) { return(new PersistentVector(items.Length, 5, PersistentVector.EmptyNode, items)); } return(PersistentVector.create(items)); //: new LazilyPersistentVector(null, items, null); }
static public IPersistentVector createOwning(params object[] items) { if (items.Length == 0) { return((IPersistentVector)PersistentVector.EMPTY); } else if (items.Length <= 32) { return(new PersistentVector(items.Length, 5, PersistentVector.EmptyNode, items)); } return(PersistentVector.create(items)); //: new LazilyPersistentVector(null, items, null); }