Higher level built-in strings

Fawzi Mohamed fawzi at gmx.ch
Tue Jul 20 14:46:44 PDT 2010


I did not read all the discussion in detail, but in my opinion  
something that would be very useful in a library is

struct String{
	void *ptr;
	size_t _l;
	enum :size_t {
		MaskLen=((~cast(size_t)0)>>2)
	}
	enum :int {
		BitsLen=8*size_t.sizeof-2
	}
	size_t len(){
		return (_l & MaskLen);
	}
	int encodingId(){
		return cast(int)(_l>>BitsLen);
	}
}

plus stuff to simplify its creation from T[] arrays and getting T[]  
arrays from it.

this type would them be used where one wants a string without caring  
about its encoding, and without having to make all string accepting  
functions templates.
As it was explained by others many string operations are rather generic.
*this* is what I would have expected from string, not an alias to  
char[].

Fawzi
	


More information about the Digitalmars-d mailing list