Top 5

cemiller chris at dprogramming.com
Fri Oct 10 10:17:48 PDT 2008


>>> http://www.dprogramming.com/mtext.php
>>>
>>> Nearly as efficient as regular strings & same memory footprint as the  
>>> type of the lagest character within (i.e. if it contains only ascii, 8  
>>> bits/char. If it contains things representable in UTF-16, 16 bits a  
>>> character. If it contains cuneoform, 32 bits per char).
>>  Looks interesting. I've downloaded it. I'll give it a whirl and let  
>> you know what I think. But, upon first glance, you definitely need some  
>> example code and a tutorial. Right now, I don't really know where to  
>> start.
>>  --benji
>
> I totally agree it needs more docs. I didn't write it; Chris Miller gets  
> that credit.


I tried to make it work like arrays (strings) as much as possible. It has  
.length, concat operators, slicing, and other utility functions.
The documentation is available at:   
http://www.dprogramming.com/docs/mtext/mtext.html

Here's some older examples from the unittest:
	mstring s = mstring("foo"c);
	assert(s == "foo"c);
	
	assert(s.startsWith("f"c));
	assert(s.startsWith("fo"w));
	assert(s.startsWith("foo"c));
	assert(!s.startsWith("fooo"c));
	assert(!s.startsWith("F"c));
	assert(s.startsWith("F"c, true));
	assert(!s.startsWith("E"c, true));
	assert(s.endsWith("o"c));
	assert(s.endsWith("oo"d));
	assert(s.endsWith("foo"c));
	assert(!s.endsWith("fooo"c));
	assert(!s.endsWith("ooo"c));
	assert(s.endsWith("O"c, true));
	assert(!s.endsWith("P"c, true));
	
	int i;
	s = mstring("The quick brown fox jumped over the lazy dog."w);
	i = s.find("Lazy"c, true);
	assert(-1 != i);
	assert(s[i .. i + 4] == "lazy"c);
	i = s.find("Lazy"c, false);
	assert(-1 == i);
	i = s.find("."c, true);
	assert(-1 != i);
	i = s.find("dog."c, true);
	assert(-1 != i);
	
	wchar[] ws = "Arrrrr!";
	assert(ws == mstring(ws));
	assert(!(ws > mstring(ws)));
	assert(!(ws < mstring(ws)));
	assert(ws == mstring(ws)[0 .. ws.length]);
	assert(!(ws > mstring(ws)[0 .. ws.length]));
	assert(!(ws < mstring(ws)[0 .. ws.length]));
	
	mstring s2;
	s2 = s.dup;
	assert(s.type != s2.type); // Compacted.
	assert(s == s2); // Same value.

and with the newer opAssign,
	import mtext;
	void main()
	{
	  mstring hi = "hello"c;
	  hi ~= ", world"c;
	}

FAQ is on the main page:  http://www.dprogramming.com/mtext.php

I'll try to add better examples soon.


- Chris Miller (cemiller)



More information about the Digitalmars-d mailing list