Thread overview | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
December 11, 2005 casting a type to a void* | ||||
---|---|---|---|---|
| ||||
Hello, I was just wondering, because I woudl need it, how to cast a void* on a byte? I mean, something like that, which, obviously, do not work: void* number; int inumber; number = cast(int)(inumber); It's probably easy enough but I never did it before, so. Thanks of your help, Pierre-Luc Cyr |
December 11, 2005 Re: casting a type to a void* | ||||
---|---|---|---|---|
| ||||
Posted in reply to Pierre-Luc Cyr | "Pierre-Luc Cyr" <Pierre-Luc_member@pathlink.com> wrote in message news:dng80g$caa$1@digitaldaemon.com... > Hello, > I was just wondering, because I woudl need it, how to cast a void* on a > byte? > I mean, something like that, which, obviously, do not work: byte b; void* v = cast(void*)&b; That cast() might even be optional, I forget. |
December 11, 2005 Re: casting a type to a void* | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jarrett Billingsley | On Sun, 11 Dec 2005 02:14:53 -0500, Jarrett Billingsley wrote: > "Pierre-Luc Cyr" <Pierre-Luc_member@pathlink.com> wrote in message news:dng80g$caa$1@digitaldaemon.com... >> Hello, >> I was just wondering, because I woudl need it, how to cast a void* on a >> byte? >> I mean, something like that, which, obviously, do not work: > > byte b; > void* v = cast(void*)&b; > > That cast() might even be optional, I forget. Yes it is optional. -- Derek Parnell Melbourne, Australia 11/12/2005 11:02:31 PM |
December 11, 2005 Re: casting a type to a void* | ||||
---|---|---|---|---|
| ||||
Posted in reply to Derek Parnell | Thanks, it seems strange (I mean, different from the way I thought it should have been done, but well)
You used a byte, it does also work for other types?
If so, it's good...
Thanks
Pierre-Luc Cyr
>> byte b;
>> void* v = cast(void*)&b;
>>
>> That cast() might even be optional, I forget.
>
>Yes it is optional.
|
December 11, 2005 Re: casting a type to a void* | ||||
---|---|---|---|---|
| ||||
Posted in reply to Pierre-Luc Cyr | "Pierre-Luc Cyr" <Pierre-Luc_member@pathlink.com> wrote in message news:dnhf7m$2b7k$1@digitaldaemon.com... > Thanks, it seems strange (I mean, different from the way I thought it > should > have been done, but well) How did you expect it do be done? All you're doing is getting a pointer to the variable and casting it to void*, unless that's not what you're looking for.. > You used a byte, it does also work for other types? Yes :) void* can point to anything. |
December 11, 2005 Re: casting a type to a void* | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jarrett Billingsley | Well, it's because I am developping a class "number" which will be of a variable precision, I mean, depending of the value you put in it, it will use the good type and return the good one. Oh, and the library will also be used to do maths calculation, some things that sometimes may be useful. Well, that's what I want it to do, here an example how I wish we might use it: number n1 = new number(50); // considered as a byte number n2 = new number(20000); number n3 = new number(1241284129012312.12313123141) // a big floating-point value, I did not mesured this one) number n4 = new number(n3.FindQuadRoots(n3, n1, n2)); // Result is the type of the most precise value Well I wish it will work, but I'm not sure void pointers will work fine. It is just my first idea. Perharps will I have to find an other way, I'll see. Pierre-Luc Cyr In article <dnhu0l$9lo$1@digitaldaemon.com>, Jarrett Billingsley says... > >"Pierre-Luc Cyr" <Pierre-Luc_member@pathlink.com> wrote in message news:dnhf7m$2b7k$1@digitaldaemon.com... >> Thanks, it seems strange (I mean, different from the way I thought it >> should >> have been done, but well) > >How did you expect it do be done? All you're doing is getting a pointer to the variable and casting it to void*, unless that's not what you're looking for.. > >> You used a byte, it does also work for other types? > >Yes :) void* can point to anything. > > |
December 11, 2005 Re: casting a type to a void* | ||||
---|---|---|---|---|
| ||||
Posted in reply to Pierre-Luc Cyr | "Pierre-Luc Cyr" <Pierre-Luc_member@pathlink.com> wrote in message news:dni15r$gsa$1@digitaldaemon.com... > Well I wish it will work, but I'm not sure void pointers will work fine. > It is > just my first idea. Perharps will I have to find an other way, I'll see. Well it's certainly an interesting idea, although most "big number" classes I've seen have been implemented in other ways, such as using strings to represent the numbers and performing the calculations digit by digit (kind of like doing it by hand). I'm not sure what kind of performance you'll get by using the void pointers, as you'll have to dereference every time you want to access the value (although I can't say that string number classes would be incredibly efficient as well). I would imagine you're already using some kind of "type" variable to keep track of what type of data the data pointer is pointing to (int, short, byte etc.), so what you could do instead is to use a union of all numeric types, like this: union { byte mByte; ubyte mUByte; short mShort; ... } And keep track of what type you're storing, and access the correct union member using that. |
December 11, 2005 Re: casting a type to a void* | ||||
---|---|---|---|---|
| ||||
Posted in reply to Pierre-Luc Cyr | >>How did you expect it do be done? All you're doing is getting a pointer to the variable and casting it to void*, unless that's not what you're looking for..
It's because in C, if I remember, I had to create an other function that would
return a pointer to something that I do not remember.
Perhaprs it's not what I'm looking for, I'll see it tonight.
|
Copyright © 1999-2021 by the D Language Foundation