World: r3wp
[Red] Red language group
older newer | first last |
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. :-) | |
Kaj 18-Jun-2011 [2098x2] | Again, I don't care much what it is (although I wouldn't expect ALLOCATE to return a c-string!), just that the definitions are compatible, so you don't have to insert confusing typecasts everywhere |
I'm just following what you have written in the manual about pointers | |
Dockimbel 18-Jun-2011 [2100] | the definitions are compatible : which ones? |
Kaj 18-Jun-2011 [2101] | NULL, byte-ptr! and the manual use three type incompatible definitions. I must compare and pass these types |
Dockimbel 18-Jun-2011 [2102] | NULL and documentation will be fixed during this weekend. |
Kaj 18-Jun-2011 [2103] | So will they be compatible with byte-ptr! thereafter? |
Dockimbel 18-Jun-2011 [2104x2] | NULL should work with any kind of pointer/struct or be removed. |
I haven't decided yet on the right solution, but you can safely use ALLOCATE as it is defined right now, that won't be changed. | |
Kaj 18-Jun-2011 [2106] | Not really, because casts are needed on every use of ALLOCATE and FREE |
Dockimbel 18-Jun-2011 [2107x2] | That would be the case whatever type you would put in the return definition of ALLOCATE? |
As you can allocate memory space for various datatypes. | |
older newer | first last |