[phobos] std.array.ilength

Steve Schveighoffer schveiguy at yahoo.com
Thu Feb 17 06:31:59 PST 2011


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 <dsimcha at gmail.com>
> To:Discuss the phobos library for D <phobos at puremagic.com>
> 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
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos



      


More information about the phobos mailing list