BTW, I think perhaps this should go in object.di. It's a small enough template that it won't add too much bulk, and it would be nice to have this available at all times without having to import std.array.
To draw a comparison, arr.capacity, arr.assumeSafeAppend and arr.reserve() are all in object.di. -Steve ----- Original Message ----- > From:David Simcha <[email protected]> > To:Discuss the phobos library for D <[email protected]> > Cc: > Sent:Thursday, February 17, 2011 8:59 AM > Subject:[phobos] std.array.ilength > > Hey guys, > > Kagamin just came up with a simple but great idea to mitigate the pedantic > nature of 64-bit to 32-bit integer conversions in cases where using size_t > doesn't cut it. Examples are storing arrays of indices into other arrays, > where using size_t would be a colossal waste of space if it's safe to assume > none of the arrays will be billions of elements long. > > int ilength(T)(T[] arr) { > assert(arr.length <= int.max); > return cast(int) arr.length; > } > > Usage: > > int[] indices; > auto array = returnsArray(); > indices ~= array.ilength; > > This cuts down on the excessive verbosity of an explicit cast that's safe > 99.999 % of the time and encourages sprinkling it into code even if for the > foreseeable future it will be compiled in 32-bit mode. > > Two questions: > > 1. Is everyone ok with me adding this as a convenience function to std.array? > 2. int or uint? I used int only b/c that was the example on the newsgroup, > but > I think uint makes more sense. > > --David Simcha > _______________________________________________ > phobos mailing list > [email protected] > http://lists.puremagic.com/mailman/listinfo/phobos _______________________________________________ phobos mailing list [email protected] http://lists.puremagic.com/mailman/listinfo/phobos
