<HTML><HEAD></HEAD>
<BODY dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: 12pt">
<DIV>Hello,</DIV>
<DIV> </DIV>
<DIV>Here is a new language idea which would make Delphi a bit more 
friendly:</DIV>
<DIV> </DIV>
<DIV>First the problem:</DIV>
<DIV> </DIV>
<DIV>pointers and longwords are not assignment compatible.</DIV>
<DIV> </DIV>
<DIV>This is pretty much bullshit because they are the same size.</DIV>
<DIV> </DIV>
<DIV>Now the solution, create a new type which has the same size and make it 
<BR>"size compatible" with all other types of the same size so for 
example:</DIV>
<DIV> </DIV>
<DIV>type<BR>    TUnifiedType = unify longword;</DIV>
<DIV> </DIV>
<DIV>This would make the TUnifiedType assigment compatible with all other types 
<BR>of the same size.</DIV>
<DIV> </DIV>
<DIV>If this is to broad then the syntax can also be made less broad by having 
to <BR>specify all types which are to be considered assignment compatible.</DIV>
<DIV> </DIV>
<DIV>Example of less-broad-syntax:</DIV>
<DIV> </DIV>
<DIV>type<BR>  TUnifiedType = unify longword pointer integer Pinteger 
Plongword;</DIV>
<DIV> </DIV>
<DIV>The following code would then be possible:</DIV>
<DIV> </DIV>
<DIV>procedure API( ParaUnifiedType : TUnifiedType );</DIV>
<DIV> </DIV>
<DIV>var<BR>    p : pointer;<BR>    t : 
integer;<BR>    w : longword;<BR>    k : 
Pinteger;<BR>    z : Plongword;<BR>    e : 
TunifiedType;<BR>begin<BR>    API( p );<BR>    
API( T );<BR>    API( w ):<BR>    API( k 
);<BR>    API( z );</DIV>
<DIV> </DIV>
<DIV>    e := p;<BR>    p := e;</DIV>
<DIV> </DIV>
<DIV>    // etc<BR>end;</DIV>
<DIV> </DIV>
<DIV>This would also solve some other problems:</DIV>
<DIV> </DIV>
<DIV>var<BR>    I : integer;<BR>    b : 
byte;<BR>begin<BR>    i := integer(b); // unsafe typecast ! 
variable overflow ! undetected by <BR>Delphi XE !<BR>end;</DIV>
<DIV> </DIV>
<DIV>Typecasts for unified types no longer necessary, however unified types have 
<BR>automatic size checking so these errors would be caught.</DIV>
<DIV> </DIV>
<DIV>Furthermore writing the api as follows would also not be necessary</DIV>
<DIV> </DIV>
<DIV>API( var data );</DIV>
<DIV> </DIV>
<DIV>^ very unsafe... this would allow more data to be passed in then might be 
<BR>expected, leading to parameter overflow !</DIV>
<DIV> </DIV>
<DIV>Therefore conclusion can only be:</DIV>
<DIV> </DIV>
<DIV>Unified types would make programming safer and a whole lot easier without 
<BR>all those damned typecasts ! ;) :)</DIV>
<DIV> </DIV>
<DIV>Less remark this could probably come in handy for cuda as well, which has 
<BR>slightly different types for example:</DIV>
<DIV> </DIV>
<DIV>host pointer (pointer) vs cuda pointer (longword)</DIV>
<DIV> </DIV>
<DIV>For the unified addressing future of cuda/api the new unified type for 
<BR>Delphi would be very welcome ! ;) :)</DIV>
<DIV> </DIV>
<DIV>Bye,<BR>  Skybuck.<BR></DIV></DIV></DIV></BODY></HTML>