Re: The analogue of fill-pointer in D

2015-05-18 Thread Steven Schveighoffer via Digitalmars-d-learn
On 5/18/15 1:43 PM, Ali Çehreli wrote: On 05/18/2015 05:26 AM, John Colvin wrote: On Monday, 18 May 2015 at 11:40:13 UTC, thedeemon wrote: On Monday, 18 May 2015 at 10:24:25 UTC, Dennis Ritchie wrote: No, afraid not. Function capacity is not an analogue of fill-pointers! It's exactly the

Re: The analogue of fill-pointer in D

2015-05-18 Thread Steven Schveighoffer via Digitalmars-d-learn
On 5/18/15 6:24 AM, Dennis Ritchie wrote: On Monday, 18 May 2015 at 10:14:33 UTC, Kagamin wrote: On Monday, 18 May 2015 at 08:21:38 UTC, Dennis Ritchie wrote: Hi, In Common Lisp, there is such a thing as a fill-pointer (Example 5): http://www.tutorialspoint.com/lisp/lisp_arrays.htm Does D

Re: Convert C array pointer to a D slice without data copy

2015-05-18 Thread ParticlePeter via Digitalmars-d-learn
On Monday, 18 May 2015 at 09:23:26 UTC, tcak wrote: On Monday, 18 May 2015 at 09:18:33 UTC, ParticlePeter wrote: I get the point to an array from a c function, the data size from another function. The data should be only readable at the D side, but I would like to use it as a D slice without

Re: ddbc: MySQL/MariaDB: Access Violation

2015-05-18 Thread Suliman via Digitalmars-d-learn
still can't get it's work :(

Re: The analogue of fill-pointer in D

2015-05-18 Thread Ali Çehreli via Digitalmars-d-learn
On 05/18/2015 05:26 AM, John Colvin wrote: On Monday, 18 May 2015 at 11:40:13 UTC, thedeemon wrote: On Monday, 18 May 2015 at 10:24:25 UTC, Dennis Ritchie wrote: No, afraid not. Function capacity is not an analogue of fill-pointers! It's exactly the same. But in D capacity is affected by

Re: The analogue of fill-pointer in D

2015-05-18 Thread John Colvin via Digitalmars-d-learn
On Monday, 18 May 2015 at 08:21:38 UTC, Dennis Ritchie wrote: Hi, In Common Lisp, there is such a thing as a fill-pointer (Example 5): http://www.tutorialspoint.com/lisp/lisp_arrays.htm Does D some equivalent? Fill pointers, combined with the various helper functions (e.g. vector-push)

Re: overloading evaluation (treating objects as functions)

2015-05-18 Thread Ali Çehreli via Digitalmars-d-learn
On 05/17/2015 11:49 AM, dan wrote: i can't find it on the internet There is the following short section as well: http://ddili.org/ders/d.en/operator_overloading.html#ix_operator_overloading.opCall Ali

Re: The analogue of fill-pointer in D

2015-05-18 Thread Kagamin via Digitalmars-d-learn
On Monday, 18 May 2015 at 10:24:25 UTC, Dennis Ritchie wrote: It seems to be nonsense. But this is nonsense, ideal for buffers. If the buffer is implemented as an array, then fill pointer just marks the boundary of the filled part of the buffer, and adding a buffer (moving away from the fill

Re: Convert C array pointer to a D slice without data copy

2015-05-18 Thread John Colvin via Digitalmars-d-learn
On Monday, 18 May 2015 at 09:23:26 UTC, tcak wrote: On Monday, 18 May 2015 at 09:18:33 UTC, ParticlePeter wrote: I get the point to an array from a c function, the data size from another function. The data should be only readable at the D side, but I would like to use it as a D slice without

control flow with a functional template ?

2015-05-18 Thread Baz via Digitalmars-d-learn
who's never had to do this: --- if (comparison) { statement; break; } --- ans then thought it's a pity to open/closes the braces just for a simple statement. Would it be possible to have a template to simplify this to: --- if (comparison) Break!(expression); --- or even at the

overloading evaluation (treating objects as functions)

2015-05-18 Thread dan via Digitalmars-d-learn
Is it possible to define a class F so that auto f=new F(); writeln(The value of f at 7 is ,f(7)); compiles and works as expected? So the idea would be to be able to use notation like f(7) instead of f.eval(7) or something along those lines. My guess is no, it is impossible to do

Re: 'const' and 'in' parameter storage classes

2015-05-18 Thread Steven Schveighoffer via Digitalmars-d-learn
On 5/15/15 2:19 PM, ref2401 wrote: On Friday, 15 May 2015 at 16:30:29 UTC, Steven Schveighoffer wrote: On 5/15/15 12:04 PM, ref2401 wrote: What is the difference between 'const' and 'in' parameter storage classes? When should I use 'const' or 'in'? The documentation says 'in' is the same as

Re: -vgc Info ok?

2015-05-18 Thread Chris via Digitalmars-d-learn
On Monday, 18 May 2015 at 14:34:38 UTC, ketmar wrote: On Mon, 18 May 2015 14:30:42 +, Chris wrote: The following string[string] myarray = [key:value]; string entry; entry = myarray[key]; // = vgc: indexing an associative array may cause GC allocation Why is _accessing_ an assoc treated

Const is already there. It cannot deduce it

2015-05-18 Thread tcak via Digitalmars-d-learn
[code] void test(D)( const D data ) if( is(D: shared(char[]) ) ) { } void main() { char[] text = new char[4]; text[0] = 'a'; text[1] = 'b'; text[2] = 'c'; text[3] = 'd'; auto t = cast( shared(const(char[])) )text[1..2]; test( t ); } [/code] Error

Re: CTFE enums static assert

2015-05-18 Thread Robert M. Münch via Digitalmars-d-learn
On 2015-05-15 17:26:50 +, Ali Çehreli said: On 05/15/2015 09:45 AM, Robert M. Münch wrote: Is there a way I can build an ENUM from within the FOREACH? What I want to achive is, that I would like to use: final switch (myEnum) ... Sorry, I don't understand your question. :( Do you

Re: The analogue of fill-pointer in D

2015-05-18 Thread John Colvin via Digitalmars-d-learn
On Monday, 18 May 2015 at 11:40:13 UTC, thedeemon wrote: On Monday, 18 May 2015 at 10:24:25 UTC, Dennis Ritchie wrote: No, afraid not. Function capacity is not an analogue of fill-pointers! It's exactly the same. But in D capacity is affected by other things. auto a = new int[20]; auto b

Re: How to create a mutable array of strings?

2015-05-18 Thread Dennis Ritchie via Digitalmars-d-learn
On Monday, 18 May 2015 at 13:14:38 UTC, Steven Schveighoffer wrote: It's annoying to have to dup each one. Yes, it's really annoying. However, the problem can be solved as follows:

Re: overloading evaluation (treating objects as functions)

2015-05-18 Thread Namespace via Digitalmars-d-learn
On Sunday, 17 May 2015 at 18:49:40 UTC, dan wrote: Is it possible to define a class F so that auto f=new F(); writeln(The value of f at 7 is ,f(7)); compiles and works as expected? So the idea would be to be able to use notation like f(7) instead of f.eval(7) or something along

Re: The analogue of fill-pointer in D

2015-05-18 Thread John Colvin via Digitalmars-d-learn
On Monday, 18 May 2015 at 10:24:25 UTC, Dennis Ritchie wrote: On Monday, 18 May 2015 at 10:14:33 UTC, Kagamin wrote: On Monday, 18 May 2015 at 08:21:38 UTC, Dennis Ritchie wrote: Hi, In Common Lisp, there is such a thing as a fill-pointer (Example 5):

Re: Const is already there. It cannot deduce it

2015-05-18 Thread anonymous via Digitalmars-d-learn
On Sunday, 17 May 2015 at 21:34:21 UTC, tcak wrote: [code] void test(D)( const D data ) if( is(D: shared(char[]) ) ) { } void main() { char[] text = new char[4]; text[0] = 'a'; text[1] = 'b'; text[2] = 'c'; text[3] = 'd'; auto t = cast( shared(const(char[]))

Re: overloading evaluation (treating objects as functions)

2015-05-18 Thread dan via Digitalmars-d-learn
Awesome!! Thanks Gary and namespace (and obviously i gotta improve my google-fu). dan On Sunday, 17 May 2015 at 19:40:10 UTC, Gary Willoughby wrote: On Sunday, 17 May 2015 at 18:58:32 UTC, Namespace wrote: http://dlang.org/operatoroverloading.html#function-call Like this: module main;

The analogue of fill-pointer in D

2015-05-18 Thread Dennis Ritchie via Digitalmars-d-learn
Hi, In Common Lisp, there is such a thing as a fill-pointer (Example 5): http://www.tutorialspoint.com/lisp/lisp_arrays.htm Does D some equivalent?

Re: overloading evaluation (treating objects as functions)

2015-05-18 Thread Gary Willoughby via Digitalmars-d-learn
On Sunday, 17 May 2015 at 18:58:32 UTC, Namespace wrote: http://dlang.org/operatoroverloading.html#function-call Like this: module main; import std.stdio; class F { int opCall(int value) { return value * 2; } } void main(string[] args) { auto

Re: control flow with a functional template ?

2015-05-18 Thread John Colvin via Digitalmars-d-learn
On Monday, 18 May 2015 at 06:13:50 UTC, Baz wrote: who's never had to do this: --- if (comparison) { statement; break; } --- ans then thought it's a pity to open/closes the braces just for a simple statement. Would it be possible to have a template to simplify this to: --- if

Re: ICE?

2015-05-18 Thread ketmar via Digitalmars-d-learn
On Sun, 17 May 2015 10:09:10 +, Daniel Kozak wrote: On Sunday, 17 May 2015 at 09:25:33 UTC, Namespace wrote: Is this error an ICE? I think so, because I see the internal filename, but I'm not sure. Error: e2ir: cannot cast malloc(length * 8u) of type void* to type char[] I would say

Re: The analogue of fill-pointer in D

2015-05-18 Thread Kagamin via Digitalmars-d-learn
On Monday, 18 May 2015 at 08:21:38 UTC, Dennis Ritchie wrote: Hi, In Common Lisp, there is such a thing as a fill-pointer (Example 5): http://www.tutorialspoint.com/lisp/lisp_arrays.htm Does D some equivalent? Data stored in the array is indicated by the array length property, use

Re: The analogue of fill-pointer in D

2015-05-18 Thread thedeemon via Digitalmars-d-learn
On Monday, 18 May 2015 at 10:24:25 UTC, Dennis Ritchie wrote: No, afraid not. Function capacity is not an analogue of fill-pointers! It's exactly the same. Lisp-programmer explains the usefulness of fill-pointers as follows: Fill pointer cuts the tail of the vector. In D: .length cuts

Re: The analogue of fill-pointer in D

2015-05-18 Thread Dennis Ritchie via Digitalmars-d-learn
On Monday, 18 May 2015 at 10:14:33 UTC, Kagamin wrote: On Monday, 18 May 2015 at 08:21:38 UTC, Dennis Ritchie wrote: Hi, In Common Lisp, there is such a thing as a fill-pointer (Example 5): http://www.tutorialspoint.com/lisp/lisp_arrays.htm Does D some equivalent? Data stored in the array

Re: Convert C array pointer to a D slice without data copy

2015-05-18 Thread tcak via Digitalmars-d-learn
On Monday, 18 May 2015 at 09:18:33 UTC, ParticlePeter wrote: I get the point to an array from a c function, the data size from another function. The data should be only readable at the D side, but I would like to use it as a D slice without copying the data. Is this possible ? char* dataPtr;

Convert C array pointer to a D slice without data copy

2015-05-18 Thread ParticlePeter via Digitalmars-d-learn
I get the point to an array from a c function, the data size from another function. The data should be only readable at the D side, but I would like to use it as a D slice without copying the data. Is this possible ?

Re: -vgc Info ok?

2015-05-18 Thread ketmar via Digitalmars-d-learn
On Mon, 18 May 2015 14:30:42 +, Chris wrote: The following string[string] myarray = [key:value]; string entry; entry = myarray[key]; // = vgc: indexing an associative array may cause GC allocation Why is _accessing_ an assoc treated as indexing it? it can throw out of range error,

Re: control flow with a functional template ?

2015-05-18 Thread John Colvin via Digitalmars-d-learn
On Monday, 18 May 2015 at 08:46:36 UTC, John Colvin wrote: On Monday, 18 May 2015 at 06:13:50 UTC, Baz wrote: who's never had to do this: --- if (comparison) { statement; break; } --- ans then thought it's a pity to open/closes the braces just for a simple statement. Would it be

Re: How to create a mutable array of strings?

2015-05-18 Thread Steven Schveighoffer via Digitalmars-d-learn
On 5/18/15 9:55 AM, Dennis Ritchie wrote: On Monday, 18 May 2015 at 13:14:38 UTC, Steven Schveighoffer wrote: It's annoying to have to dup each one. Yes, it's really annoying. However, the problem can be solved as follows:

Re: How to create a mutable array of strings?

2015-05-18 Thread Dennis Ritchie via Digitalmars-d-learn
On Monday, 18 May 2015 at 14:43:33 UTC, Steven Schveighoffer wrote: Right, you'd apply the map/array combo to each element: Yes, I knew it. alias m = map!(a = a.dup); // too bad can't do array as well auto s = [m([foo, baz]).array, m([bar, test]).array]; Or to get even more crazy: auto s

-vgc Info ok?

2015-05-18 Thread Chris via Digitalmars-d-learn
The following string[string] myarray = [key:value]; string entry; entry = myarray[key]; // = vgc: indexing an associative array may cause GC allocation Why is _accessing_ an assoc treated as indexing it?

Re: Convert C array pointer to a D slice without data copy

2015-05-18 Thread Marco Leise via Digitalmars-d-learn
Am Mon, 18 May 2015 09:51:48 + schrieb John Colvin john.loughran.col...@gmail.com: No need to worry about the GC here, it only scans the stack and its own heap (unless you specifically add a new root). And even if you add a root it wont free anything it did not allocate itself! You could

Re: 'const' and 'in' parameter storage classes

2015-05-18 Thread Marco Leise via Digitalmars-d-learn
Am Mon, 18 May 2015 09:05:51 -0400 schrieb Steven Schveighoffer schvei...@yahoo.com: On 5/15/15 2:19 PM, ref2401 wrote: On Friday, 15 May 2015 at 16:30:29 UTC, Steven Schveighoffer wrote: On 5/15/15 12:04 PM, ref2401 wrote: What is the difference between 'const' and 'in' parameter storage

Re: How to create a mutable array of strings?

2015-05-18 Thread Steven Schveighoffer via Digitalmars-d-learn
On 5/17/15 5:15 AM, Dennis Ritchie wrote: This option is also a strange: char[][] s = [foo.dup, bar.dup]; s[1][1] = 't'; In my opinion, you need to add to D keyword mutable. It's annoying to have to dup each one. But, you do have a couple other possibilities: auto s = [foo.dup, bar.dup];

Re: ddbc: MySQL/MariaDB: Access Violation

2015-05-18 Thread Vadim Lopatin via Digitalmars-d-learn
On Sunday, 17 May 2015 at 10:24:43 UTC, Suliman wrote: I am using this driver for access to MariaDB http://code.dlang.org/packages/ddbc The problem that it's work fine when it's used from desktop App, but when I try to run it's from vibed app i get Access Violation. In my.ini I added string:

Re: The analogue of fill-pointer in D

2015-05-18 Thread Dennis Ritchie via Digitalmars-d-learn
On Monday, 18 May 2015 at 12:49:56 UTC, Kagamin wrote: Filling a buffer is usually done this way: http://dlang.org/phobos/std_stdio.html#.File.rawRead Here such example, the task. There is a flow stream, associated, for example, with any socket. It wrote several bytes at a time. To once

Re: The analogue of fill-pointer in D

2015-05-18 Thread John Colvin via Digitalmars-d-learn
On Monday, 18 May 2015 at 17:43:50 UTC, Ali Çehreli wrote: On 05/18/2015 05:26 AM, John Colvin wrote: On Monday, 18 May 2015 at 11:40:13 UTC, thedeemon wrote: On Monday, 18 May 2015 at 10:24:25 UTC, Dennis Ritchie wrote: No, afraid not. Function capacity is not an analogue of fill-pointers!

Re: -vgc Info ok?

2015-05-18 Thread ketmar via Digitalmars-d-learn
On Mon, 18 May 2015 14:41:19 +, Chris wrote: On Monday, 18 May 2015 at 14:34:38 UTC, ketmar wrote: On Mon, 18 May 2015 14:30:42 +, Chris wrote: The following string[string] myarray = [key:value]; string entry; entry = myarray[key]; // = vgc: indexing an associative array may

Re: The analogue of fill-pointer in D

2015-05-18 Thread Ali Çehreli via Digitalmars-d-learn
On 05/18/2015 11:19 AM, John Colvin wrote: On Monday, 18 May 2015 at 17:43:50 UTC, Ali Çehreli wrote: On 05/18/2015 05:26 AM, John Colvin wrote: On Monday, 18 May 2015 at 11:40:13 UTC, thedeemon wrote: On Monday, 18 May 2015 at 10:24:25 UTC, Dennis Ritchie wrote: No, afraid not. Function

Re: The analogue of fill-pointer in D

2015-05-18 Thread Ali Çehreli via Digitalmars-d-learn
On 05/18/2015 10:52 AM, Steven Schveighoffer wrote: On 5/18/15 1:43 PM, Ali Çehreli wrote: void main() { auto a = new int[20]; foo(a); //can't now append to a Well, sure you can :) a ~= 5; // works fine But I understand you mean that an append to 'a' will reallocate

Re: ddbc: MySQL/MariaDB: Access Violation

2015-05-18 Thread Suliman via Digitalmars-d-learn
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; p.s. this command return my: Affected rows: 0 Do you see some stack trace on crash? No. I checked on 2 PC and it's not look like my issue, because result is totally same. If I change void main() to

Re: The analogue of fill-pointer in D

2015-05-18 Thread Steven Schveighoffer via Digitalmars-d-learn
On 5/18/15 2:40 PM, Ali Çehreli wrote: On 05/18/2015 11:19 AM, John Colvin wrote: On Monday, 18 May 2015 at 17:43:50 UTC, Ali Çehreli wrote: On 05/18/2015 05:26 AM, John Colvin wrote: On Monday, 18 May 2015 at 11:40:13 UTC, thedeemon wrote: On Monday, 18 May 2015 at 10:24:25 UTC, Dennis

Re: The analogue of fill-pointer in D

2015-05-18 Thread Dennis Ritchie via Digitalmars-d-learn
On Monday, 18 May 2015 at 17:14:46 UTC, Steven Schveighoffer wrote: capacity is analogous to the number of elements in the vector (as returned by array-dimension according to https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node162.html). arr.length is analogous to the fill pointer. example:

Re: The analogue of fill-pointer in D

2015-05-18 Thread Ali Çehreli via Digitalmars-d-learn
On 05/18/2015 11:52 AM, Steven Schveighoffer wrote: Also note that the longest slice doesn't necessarily have access to appending. All that is required is that the slice end lands on the array end: That explains a lot. Thanks. Ali

Re: The analogue of fill-pointer in D

2015-05-18 Thread Steven Schveighoffer via Digitalmars-d-learn
On 5/18/15 2:45 PM, Ali Çehreli wrote: Exactly! That recent discovery of mine made me come up with this guideline: Never append to a parameter slice. I think this may not be an appropriate guideline. It's perfectly fine to append to a parameter slice. You just need to leave it the way you

Re: Capturing Caller UDAs as CT Template Function Parameters

2015-05-18 Thread via Digitalmars-d-learn
On Monday, 18 May 2015 at 21:00:20 UTC, Per Nordlöw wrote: Is this doable somehow? To clarify: Instead of *string* `__FUNCTION__` I instead want a reference to the *symbol* of the calling function scope typically passed as an alias parameter. We could of course always solve it with a mixin

Capturing Caller UDAs as CT Template Function Parameters

2015-05-18 Thread via Digitalmars-d-learn
As a follow up to the most http://forum.dlang.org/thread/miri9k$2p5$1...@digitalmars.com I'm now very much interested in finding a way to make yield() capture the UDAs of its caller. That is instead of void yield(T)(ref T value) I want it to get a hold of the UDAs of the calling function

Re: Capturing Caller UDAs as CT Template Function Parameters

2015-05-18 Thread anonymous via Digitalmars-d-learn
On Monday, 18 May 2015 at 21:35:44 UTC, Per Nordlöw wrote: void yield(T)(ref T value) { mixin(alias caller = ~ caller ~ ;); } doesn't work across module boundaries not even for `__PRETTY_FUNCTION__`. Do we need need to fix the compiler, Walter?! ;) You have to import

Associative array on the heap

2015-05-18 Thread Freddy via Digitalmars-d-learn
How do you allocate an associative array on the heap? void main(){ alias A=int[string]; auto b=new A; } $ rdmd test test.d(4): Error: new can only create structs, dynamic arrays or class objects, not int[string]'s Failed: [dmd, -v, -o-, test.d, -I.]

Re: Associative array on the heap

2015-05-18 Thread Freddy via Digitalmars-d-learn
On Tuesday, 19 May 2015 at 00:00:30 UTC, Meta wrote: On Monday, 18 May 2015 at 23:55:40 UTC, Freddy wrote: How do you allocate an associative array on the heap? void main(){ alias A=int[string]; auto b=new A; } $ rdmd test test.d(4): Error: new can only create structs,

Re: Associative array on the heap

2015-05-18 Thread Meta via Digitalmars-d-learn
On Monday, 18 May 2015 at 23:55:40 UTC, Freddy wrote: How do you allocate an associative array on the heap? void main(){ alias A=int[string]; auto b=new A; } $ rdmd test test.d(4): Error: new can only create structs, dynamic arrays or class objects, not int[string]'s

Re: Associative array on the heap

2015-05-18 Thread Xinok via Digitalmars-d-learn
On Tuesday, 19 May 2015 at 00:31:50 UTC, Freddy wrote: Sorry mis-phrased my question, Who do you allocate a pointer to an associative array(int[string]*). Ignoring the why for a moment, one trick is to place it in an array literal so it's heap allocated. This requires writing an

Re: Capturing Caller UDAs as CT Template Function Parameters

2015-05-18 Thread via Digitalmars-d-learn
On Monday, 18 May 2015 at 21:04:19 UTC, Per Nordlöw wrote: To clarify: Instead of *string* `__FUNCTION__` I instead want a reference to the *symbol* of the calling function scope typically passed as an alias parameter. We could of course always solve it with a mixin but that is 6+1 characters

Re: Capturing Caller UDAs as CT Template Function Parameters

2015-05-18 Thread via Digitalmars-d-learn
On Monday, 18 May 2015 at 21:30:23 UTC, Per Nordlöw wrote: On Monday, 18 May 2015 at 21:04:19 UTC, Per Nordlöw wrote: To clarify: Instead of *string* `__FUNCTION__` I instead want a reference to the *symbol* of the calling function scope typically passed as an alias parameter. We could of

Re: Associative array on the heap

2015-05-18 Thread ketmar via Digitalmars-d-learn
On Mon, 18 May 2015 23:55:38 +, Freddy wrote: How do you allocate an associative array on the heap? void main(){ alias A=int[string]; auto b=new A; } $ rdmd test test.d(4): Error: new can only create structs, dynamic arrays or class objects, not int[string]'s

Re: Associative array on the heap

2015-05-18 Thread Meta via Digitalmars-d-learn
On Tuesday, 19 May 2015 at 00:00:30 UTC, Meta wrote: A b = []; //No allocation yet, b is null Whoops, you actually can't assign the empty array literal to an AA. This line should be: A b; Which has the exact same effects.