Re: Programming a Game in D? :D

2014-05-30 Thread Francesco via Digitalmars-d-learn
On Wednesday, 28 May 2014 at 22:34:46 UTC, David wrote: On Wednesday, 28 May 2014 at 21:38:07 UTC, Francesco Cattoglio wrote: I'll be honest, perhaps I risk being misunderstood, but the questions you are asking denote a lack of even basic knowledge about the subject, so I really think you

Re: Question about wrapping raw C pointers from D

2014-05-30 Thread Ali Çehreli via Digitalmars-d-learn
On 05/29/2014 09:38 PM, Rusty D. Shackleford wrote: Hi, in C++ I can use smart pointers to wrap raw pointers with custom deleter to automatically manage C resources. Is there anything like this in D? 1) Structs provide RAII: struct S { // ... ~this() { // cleanup } }

Re: Building 32bit program with MSVC?

2014-05-30 Thread Mike Parker via Digitalmars-d-learn
On 5/30/2014 3:25 AM, Jeremy DeHaan wrote: I know that we can use MSVC to build a 64 bit program, but is it also possible to use it to build a 32 bit program as well? If you mean using the MSVC toolchain with DMD, then the answer is no, not at the moment. Rainer has done some work toward

Differences between const Type function() and const(Type) function()

2014-05-30 Thread francesco cattoglio via Digitalmars-d-learn
Today I got the following compile error: Cannot implicitly convert expression (blabla) of type const(Type) to Type and this is a reduced example ( also on http://dpaste.dzfl.pl/f2f3bd921989): module test; import std.stdio; class Foo { int i = 42; } class MyClass {

Re: Differences between const Type function() and const(Type) function()

2014-05-30 Thread bearophile via Digitalmars-d-learn
francesco cattoglio: And why is const(Foo) getQ so much different? (e.g: this is an explicit cast, right? In D the syntax for casts is cast(something)somethingElse. Bye, bearophile

Re: Differences between const Type function() and const(Type) function()

2014-05-30 Thread anonymous via Digitalmars-d-learn
On Friday, 30 May 2014 at 12:35:46 UTC, francesco cattoglio wrote: class MyClass { [...] const (Foo) getQ () const { return _Q; } // OK // const Foo getQ () const { return _Q; } // fails } [...] I don't really understand what's going on here. Why is const Foo getQ() wrong?

Re: Differences between const Type function() and const(Type) function()

2014-05-30 Thread francesco cattoglio via Digitalmars-d-learn
On Friday, 30 May 2014 at 12:57:52 UTC, anonymous wrote: And why is const(Foo) getQ so much different? (e.g: this is an explicit cast, right? Is there anything that might go wrong?) It's not a cast. It's the unambiguous notation for a qualified type. Often you can omit the parentheses. With

Re: Differences between const Type function() and const(Type) function()

2014-05-30 Thread Dicebot via Digitalmars-d-learn
On Friday, 30 May 2014 at 12:35:46 UTC, francesco cattoglio wrote: Today I got the following compile error: Cannot implicitly convert expression (blabla) of type const(Type) to Type and this is a reduced example ( also on http://dpaste.dzfl.pl/f2f3bd921989): module test; import std.stdio;

Re: Differences between const Type function() and const(Type) function()

2014-05-30 Thread anonymous via Digitalmars-d-learn
On Friday, 30 May 2014 at 12:57:52 UTC, anonymous wrote: The const in the front is the same as the front in the back. ... the same as the const in the back

Different random shuffles generated when compiled with gdc than with dmd

2014-05-30 Thread Andrew Brown via Digitalmars-d-learn
Hi there, The following code: void main(){ import std.array : array; import std.stdio : writeln; import std.random : rndGen, randomShuffle; import std.range : iota; rndGen.seed(12); int[] temp = iota(10).array; randomShuffle(temp); writeln(temp); } writes [1, 8, 4, 2,

Re: Different random shuffles generated when compiled with gdc than with dmd

2014-05-30 Thread Wanderer via Digitalmars-d-learn
I must note if the sequence is predictable, it's not random anymore, it's pseudo-random at most. Also, if anyone interested, PHP had such way to generate predictable sequences in the past, but after it was horribly misused by various people for crypto keys/password generation purposes, they

n00b problem with deimos.openssl AES_cbc_encrypt

2014-05-30 Thread moechofe via Digitalmars-d-learn
Hi, I'm try to encrypt a string with AES_cbc_encrypt using the openssl bindings from https://github.com/D-Programming-Deimos/openssl And the result I got is wrong. --- ubyte[32] key // ...fill key ubyte[16] iv; // ...fill iv; AES_KEY aes_key;

Re: Different random shuffles generated when compiled with gdc than with dmd

2014-05-30 Thread Andrew Brown via Digitalmars-d-learn
I'd like it to be predictable given the seed, right now it's predictable given the seed and the compiler. Is this a bug, shouldn't the random number process be completely defined in the language? I'm not trying to misuse it like the PHP crowd :) It's for a piece of scientific software: I'm

enums

2014-05-30 Thread Russel Winder via Digitalmars-d-learn
I think I have no idea what D enums are about. Bearophile's example of some code in an email on another thread uses: enum double p0 = 0.0045; Now I would have written: immutable double p0 = 0.0045; or at the very worst: const double p0 = 0.0045; For me, enum means

Re: enums

2014-05-30 Thread bearophile via Digitalmars-d-learn
Russel Winder: For me, enum means create an enumerated type. Thus enum double to define a single value is just a contradiction. Enlightenment required… In D enum can be used to define manifest constants. This means constants known at compile time. In practice for a double there isn't a

Re: enums

2014-05-30 Thread monarch_dodra via Digitalmars-d-learn
On Friday, 30 May 2014 at 15:30:15 UTC, Russel Winder via Digitalmars-d-learn wrote: I think I have no idea what D enums are about. Bearophile's example of some code in an email on another thread uses: enum double p0 = 0.0045; Now I would have written: immutable double p0 =

Re: Different random shuffles generated when compiled with gdc than with dmd

2014-05-30 Thread monarch_dodra via Digitalmars-d-learn
On Friday, 30 May 2014 at 13:39:18 UTC, Andrew Brown wrote: Hi there, The following code: void main(){ import std.array : array; import std.stdio : writeln; import std.random : rndGen, randomShuffle; import std.range : iota; rndGen.seed(12); int[] temp = iota(10).array;

Re: Different random shuffles generated when compiled with gdc than with dmd

2014-05-30 Thread Andrew Brown via Digitalmars-d-learn
GDC version 4.8.2,i guess that's my problem. This is what happens when you let Ubuntu look after your packages. Thank you very much! Andrew On Friday, 30 May 2014 at 16:13:49 UTC, monarch_dodra wrote: On Friday, 30 May 2014 at 13:39:18 UTC, Andrew Brown wrote: Hi there, The following code:

Re: enums

2014-05-30 Thread Philippe Sigaud via Digitalmars-d-learn
In D enum can be used to define manifest constants. This means constants known at compile time. In practice for a double there isn't a lot of difference. In general you can't take the address of a manifest constant, unlike immutables. Because they do not exist as 'variables' or symbol in the

Re: enums

2014-05-30 Thread H. S. Teoh via Digitalmars-d-learn
On Fri, May 30, 2014 at 07:17:15PM +0200, Philippe Sigaud via Digitalmars-d-learn wrote: In D enum can be used to define manifest constants. This means constants known at compile time. In practice for a double there isn't a lot of difference. In general you can't take the address of a

Re: enums

2014-05-30 Thread Philippe Sigaud via Digitalmars-d-learn
A good use of 'static immutable', sadly not voted into the language. :-) But you're right, and I remember being tripped by this.

Re: enums

2014-05-30 Thread Ali Çehreli via Digitalmars-d-learn
On 05/30/2014 08:30 AM, Russel Winder via Digitalmars-d-learn wrote: enum double p0 = 0.0045; As others have already said, p0 is a manifest constant. Interestingly, it can be thought of like a C macro, being pasted inside source code. Avoid enums for arrays and associative arrays

Re: enums

2014-05-30 Thread Philippe Sigaud via Digitalmars-d-learn
On Fri, May 30, 2014 at 7:28 PM, Ali Çehreli digitalmars-d-learn@puremagic.com wrote: On 05/30/2014 08:30 AM, Russel Winder via Digitalmars-d-learn wrote: enum double p0 = 0.0045; As others have already said, p0 is a manifest constant. Interestingly, it can be thought of like a C

Re: enums

2014-05-30 Thread Steven Schveighoffer via Digitalmars-d-learn
On Fri, 30 May 2014 13:34:38 -0400, Philippe Sigaud via Digitalmars-d-learn digitalmars-d-learn@puremagic.com wrote: On Fri, May 30, 2014 at 7:28 PM, Ali Çehreli digitalmars-d-learn@puremagic.com wrote: On 05/30/2014 08:30 AM, Russel Winder via Digitalmars-d-learn wrote: enum

Re: Different random shuffles generated when compiled with gdc than with dmd

2014-05-30 Thread Joseph Rushton Wakeling via Digitalmars-d-learn
On 30/05/14 18:13, monarch_dodra via Digitalmars-d-learn wrote: Are you sure you are compiling with the same version of dmd and gdc? Fixes were made to the rand.d library in the latest release, which could explain the difference you are observing. Which fixes are you thinking of here ... ? I

Re: enums

2014-05-30 Thread Philippe Sigaud via Digitalmars-d-learn
On Fri, May 30, 2014 at 7:56 PM, Steven Schveighoffer wrote: You can as long as the value is known at compile time: http://dpaste.dzfl.pl/5a710bd80ab0 Oh wow. And that works for static if also: http://dpaste.dzfl.pl/f87321a47834 Man. That opens some new possibilities.

Hiding types

2014-05-30 Thread Philippe Sigaud via Digitalmars-d-learn
I'm trying to 'hide' a type, so as not to see it outside its module. I want to control the way it's created and used. I know of Voldemort types and '@disable this', but for now I'm just trying to use 'private'. Halas, it seems it can be circumvented: * module A; private struct

Re: Hiding types

2014-05-30 Thread safety0ff via Digitalmars-d-learn
On Friday, 30 May 2014 at 19:50:43 UTC, Philippe Sigaud wrote: Am I misunderstanding something or is that a bug? Try: auto foo() { return Hidden();}

Re: Hiding types

2014-05-30 Thread Steven Schveighoffer via Digitalmars-d-learn
On Fri, 30 May 2014 15:50:41 -0400, Philippe Sigaud philippe.sig...@gmail.com wrote: I'm trying to 'hide' a type, so as not to see it outside its module. I want to control the way it's created and used. I know of Voldemort types and '@disable this', but for now I'm just trying to use

Re: Hiding types

2014-05-30 Thread Philippe Sigaud via Digitalmars-d-learn
On Friday, 30 May 2014 at 19:54:00 UTC, safety0ff wrote: On Friday, 30 May 2014 at 19:50:43 UTC, Philippe Sigaud wrote: Am I misunderstanding something or is that a bug? Try: auto foo() { return Hidden();} I'm not seeing any difference? I'm still able to create a value of type Hidden in an

Re: Hiding types

2014-05-30 Thread safety0ff via Digitalmars-d-learn
On Friday, 30 May 2014 at 19:54:00 UTC, safety0ff wrote: On Friday, 30 May 2014 at 19:50:43 UTC, Philippe Sigaud wrote: Am I misunderstanding something or is that a bug? Try: auto foo() { return Hidden();} This is incorrect, please ignore.

Are tests interruptible/concurrent? Is use of a (thread local) global safe in tests?

2014-05-30 Thread Mark Isaacson via Digitalmars-d-learn
I'm having fun running some unittests. I set up a simple homemade mock of std.net.curl's functions that essentially just consists of a global queue that I can add strings to and get back in a predictable order when calling std.net.curl.get/post/etc. I use this mock in a couple of different

Re: Hiding types

2014-05-30 Thread Philippe Sigaud via Digitalmars-d-learn
On Friday, 30 May 2014 at 20:02:40 UTC, Steven Schveighoffer wrote: If you want an opaque struct, you need to return it by pointer. What do you mean? Like this? Hidden* foo() { return new Hidden();} ? Otherwise, the user must be able to know what type it is (otherwise, how would he use

Re: Hiding types

2014-05-30 Thread bearophile via Digitalmars-d-learn
Philippe Sigaud: as foo is returning a value from a private type, it should be considered private also. I think this was discussed, but I don't know why Walter didn't design like that. Perhaps someone else can give you an answer. Bye, bearophile

Re: Hiding types

2014-05-30 Thread Steven Schveighoffer via Digitalmars-d-learn
On Fri, 30 May 2014 16:09:59 -0400, Philippe Sigaud philippe.sig...@gmail.com wrote: On Friday, 30 May 2014 at 20:02:40 UTC, Steven Schveighoffer wrote: If you want an opaque struct, you need to return it by pointer. What do you mean? Like this? Hidden* foo() { return new Hidden();} ?

Re: Different random shuffles generated when compiled with gdc than with dmd

2014-05-30 Thread monarch_dodra via Digitalmars-d-learn
On Friday, 30 May 2014 at 18:41:55 UTC, Joseph Rushton Wakeling via Digitalmars-d-learn wrote: On 30/05/14 18:13, monarch_dodra via Digitalmars-d-learn wrote: Are you sure you are compiling with the same version of dmd and gdc? Fixes were made to the rand.d library in the latest release, which

Re: Building 32bit program with MSVC?

2014-05-30 Thread Kagamin via Digitalmars-d-learn
You can try ldc, which uses mingw toolchain, it's probably compatible with msvc.

Re: Building 32bit program with MSVC?

2014-05-30 Thread Jeremy DeHaan via Digitalmars-d-learn
On Friday, 30 May 2014 at 20:48:44 UTC, Kagamin wrote: You can try ldc, which uses mingw toolchain, it's probably compatible with msvc. I don't necessarily need to do this, I was just wondering if it was possible. Mostly because MSVC provides a lot of import and static libraries that DMC

Re: enums

2014-05-30 Thread via Digitalmars-d-learn
Some explanation how the seemingly different concepts enumerated value and manifest constant are actually related: Let's start with the classical enums as they're known from C/C++. They are used to create lists of symbolic names: enum Color { YELLOW, PINK, BLUE }; Internally, each of

Re: Hiding types

2014-05-30 Thread Dicebot via Digitalmars-d-learn
private in D does not provide any strong guarantees, it only controls direct access to the symbol. You effectively want some sort of strict internal linkage attribute which does not exist in D.