Any way to set len and ptr in dyn arrays?

James Dunne james.jdunne at gmail.com
Tue Aug 8 15:54:28 PDT 2006


nobody wrote:
> James Dunne wrote:
> 
>> This is very interesting and all, but why would you do such a thing?
>>
>> Is the .length property on the dynamic array just not cuttin' it for you?
>>
> 
> No it is not. The whole raison d'etre for that array is to give me 
> access to the data in buf. From my reading of the docs it looks like any 
> case in which the length increases then this array can be copied and 
> might not point to the data in buf anymore. So now if I tried to save 
> changes to buf by passing it to the std.file.write method it would look 
> like nothing happened.

I'm still not following you.

You want to access, on the byte level, the compiler-dependent 
implementation details of how dynamic arrays work.  I get that.  But why?

Here:


// Sample program (with v0.163):
import	std.file;

int main(char[][] args) {
	char[]	myFileContents = cast(char[]) std.file.read("hello.txt");

	size_t	origLength = myFileContents.length;
	myFileContents.length = origLength + 20;
	myFileContents[origLength .. $] = "20 characters here!!";

	std.file.write("hello2.txt", cast(void[]) myFileContents);

	return 0;
}


Show me pseudo code of the larger problem you're trying to solve.  I 
think your assumptions on the way D's dynamic arrays work are getting in 
the way here.


-- 
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/MU/S d-pu s:+ a-->? C++++$ UL+++ P--- L+++ !E W-- N++ o? K? w--- O 
M--@ V? PS PE Y+ PGP- t+ 5 X+ !R tv-->!tv b- DI++(+) D++ G e++>e 
h>--->++ r+++ y+++
------END GEEK CODE BLOCK------

James Dunne



More information about the Digitalmars-d-learn mailing list