World: r3wp
[Red] Red language group
older newer | first last |
Kaj 18-Jun-2011 [2048x8] | I've been thinking about it, but the reason it is misleading is basically that it's defined at the C level. You have to flip flop your mind between low level C thinking and high level REBOL thinking |
I suppose this is inherent in the concept of Red/System, and I think it's mainly a matter of learning the new language | |
However, my own preference is to make concepts higher level if it doesn't compromise performance | |
It now dawns on me that I mixed up STRUCT and ALLOCATE. I hit these issues last night and went to bad because I was tired and pretty sure that I would be able to see it more clearly today, but I had already formulated the questions in my head :-) | |
to bed | |
The fact that I needed to allocate a local struct was pointed out to me by the new initialisation checks in Red, so that's pretty good | |
It would be nice to be able to use SIZE? on a datatype, instead of an actually existing data value: | |
size? integer! | |
Dockimbel 18-Jun-2011 [2056x2] | That might only be useful with integer! as it should be extended to 64-bit when Red/System will be ported to 64-bit platforms. But I think that a specific macro would be more appropriate (something like integer-size?). |
or rather: get-integer-size | |
Kaj 18-Jun-2011 [2058] | No, I simplified the example. I actually wanted to get sizes of structs without allocating one |
Dockimbel 18-Jun-2011 [2059] | Try with an alias (untested). |
Kaj 18-Jun-2011 [2060] | Doesn't it get the size of the pointer then? |
Dockimbel 18-Jun-2011 [2061x4] | Let me try... |
SIZE? doesn't seem to recognize the alias. | |
An alias is an abstract definition, it doesn't allocated anything. So we can decide that the size of an alias is the whole struct size. | |
allocated => allocate | |
Kaj 18-Jun-2011 [2065x7] | Yes, that's what I would like |
In the runtime, there's now a new generic pointer type defined: | |
#define byte-ptr! c-string! | |
However, it's type incompatible with the previous definition, which NULL still uses: | |
null: pointer [integer!] ;-- null pointer declaration | |
The documentation specifies a third definition, namely integer! | |
This comes back to the lack of a void pointer type again | |
Dockimbel 18-Jun-2011 [2072] | There is a ticket about null: https://github.com/dockimbel/Red/issues/96 |
Kaj 18-Jun-2011 [2073x2] | Failing that, I think these definitions should use the same type |
The new ALLOCATE and FREE use c-string! which makes using them on generic byte arrays, and comparisons with NULL, confusing | |
Dockimbel 18-Jun-2011 [2075] | NULL will be adapted to cop with that (either using polymorphism or by replacing it by a NULL? macro). |
Kaj 18-Jun-2011 [2076x2] | I find ALLOCATE and FREE using c-string! unintuitive |
Other types need to be cast to use these functions | |
Dockimbel 18-Jun-2011 [2078] | Same as malloc() with C void pointers. |
Kaj 18-Jun-2011 [2079] | Still, why do we have now have three different definitions of a generic pointer? |
Dockimbel 18-Jun-2011 [2080] | There is no such thing as a generic pointer in Red/System. |
Kaj 18-Jun-2011 [2081] | I know, but I #define it as handle! like we talked about before, but there's now no way to define handle! in such a way that it works everywhere |
Dockimbel 18-Jun-2011 [2082] | Have you tried with defining it as integer!? |
Kaj 18-Jun-2011 [2083] | I once did, but I doubt it will now compensate for c-string! and NULL |
Dockimbel 18-Jun-2011 [2084] | Integer! is conceptually the closest type to handle!. |
Kaj 18-Jun-2011 [2085] | Yes, so why not define NULL and byte-ptr! as integer? |
Dockimbel 18-Jun-2011 [2086] | About NULL, please read the ticket on github I have posted above. NULL will be changed. |
Kaj 18-Jun-2011 [2087x2] | Sure, but why not fix this inconvenience right now? |
I don't care what handle! is, just that there are three incompatible definitions | |
Dockimbel 18-Jun-2011 [2089] | Because I currently work on another ticket. |
Kaj 18-Jun-2011 [2090x2] | It's just changing the two lines I cited above |
I don't mean right now right now, I mean before making NULL polymorphic | |
Dockimbel 18-Jun-2011 [2092] | The NULL changes will be done this weekend, you won't have to wait too long. |
Kaj 18-Jun-2011 [2093] | That still leaves the incompatibility between byte-ptr! and the documentation |
Dockimbel 18-Jun-2011 [2094] | byte-ptr! as integer?: certainly not, byte-ptr! as it names implies is a byte! pointer, so semantically different than just integer!. |
Kaj 18-Jun-2011 [2095] | But you're saying all the time that a void pointer is conceptually closest to an integer? |
Dockimbel 18-Jun-2011 [2096x2] | Right. |
You should erase the "void pointer" expression from your mind, it is corrupting your vision. :-) | |
older newer | first last |