Thread overview
Moving from C to D
Jan 27, 2009
bob
Jan 27, 2009
bob
Jan 27, 2009
BCS
Jan 28, 2009
BLS
Jan 28, 2009
bob
Jan 28, 2009
Daniel Keep
Jan 28, 2009
BLS
Jan 28, 2009
Daniel Keep
January 27, 2009
im trying to convert my code from c to d and i have a question, how would i convert this line

void notify ( struct dev_notify * );

thank you in advance
January 27, 2009
sorry i copy wrong line. how do i do this line:

int PASCAL FAR mycnt ( IN SOCKET s, IN const struct sockaddr FAR *name, IN int namelen );

bob Wrote:

> im trying to convert my code from c to d and i have a question, how would i convert this line
> 
> void notify ( struct dev_notify * );
> 
> thank you in advance

January 27, 2009
Reply to bob,

> sorry i copy wrong line. how do i do this line:
> 
> int PASCAL FAR mycnt ( IN SOCKET s, IN const struct sockaddr FAR *name, 
IN int namelen );
> 
> bob Wrote:
> 

step 1 would be get the output from the preprocessor and take a look at it. I'm guessing that PASCAL, FAR and IN are macros

step 0 is try htod:   http://www.digitalmars.com/d/1.0/htod.html


January 28, 2009
BCS wrote:
> Reply to bob,
> 
>> sorry i copy wrong line. how do i do this line:
>>
>> int PASCAL FAR mycnt ( IN SOCKET s, IN const struct sockaddr FAR *name, 
> IN int namelen );
>>
>> bob Wrote:
>>
> 
> step 1 would be get the output from the preprocessor and take a look at it. I'm guessing that PASCAL, FAR and IN are macros
> 
> step 0 is try htod:   http://www.digitalmars.com/d/1.0/htod.html
> 
> 

I think
int PASCAL FAR mycnt()
becomes :
extern (Pascal) int mycnt()

The FAR* thingy seems to be a 16 bit relict...

Guess the IN is not nessesary in D..., not sure though

Bjoern
January 28, 2009
do IN become in maybe?

BLS Wrote:

> BCS wrote:
> > Reply to bob,
> > 
> >> sorry i copy wrong line. how do i do this line:
> >>
> >> int PASCAL FAR mycnt ( IN SOCKET s, IN const struct sockaddr FAR *name,
> > IN int namelen );
> >>
> >> bob Wrote:
> >>
> > 
> > step 1 would be get the output from the preprocessor and take a look at it. I'm guessing that PASCAL, FAR and IN are macros
> > 
> > step 0 is try htod:   http://www.digitalmars.com/d/1.0/htod.html
> > 
> > 
> 
> I think
> int PASCAL FAR mycnt()
> becomes :
> extern (Pascal) int mycnt()
> 
> The FAR* thingy seems to be a 16 bit relict...
> 
> Guess the IN is not nessesary in D..., not sure though
> 
> Bjoern

January 28, 2009

bob wrote:
> do IN become in maybe?
> 
> BLS Wrote:
> 
>> BCS wrote:
>>> Reply to bob,
>>>
>>>> sorry i copy wrong line. how do i do this line:
>>>>
>>>> int PASCAL FAR mycnt ( IN SOCKET s, IN const struct sockaddr FAR *name,
>>> IN int namelen );
>>>> bob Wrote:
>>>>
>>> step 1 would be get the output from the preprocessor and take a look at it. I'm guessing that PASCAL, FAR and IN are macros
>>>
>>> step 0 is try htod:   http://www.digitalmars.com/d/1.0/htod.html
>>>
>>>
>> I think
>> int PASCAL FAR mycnt()
>> becomes :
>> extern (Pascal) int mycnt()
>>
>> The FAR* thingy seems to be a 16 bit relict...
>>
>> Guess the IN is not nessesary in D..., not sure though
>>
>> Bjoern
> 

"in" means "pass argument by value," and is the default for arguments.

Also, I believe that PASCAL is the same as the Windows cc, so my guess at the conversion would be:

For D 1.x:

extern(Windows) int mycnt ( SOCKET s, sockaddr* name, int namelen );

For D 2.x:

extern(Windows) int mycnt ( SOCKET s, const sockaddr* name, int namelen );

Note that you'd have to supply definitions of SOCKET and sockaddr.

  -- Daniel
January 28, 2009
Daniel Keep wrote:
> 
> bob wrote:
>> do IN become in maybe?
>>
>> BLS Wrote:
>>
>>> BCS wrote:
>>>> Reply to bob,
>>>>
>>>>> sorry i copy wrong line. how do i do this line:
>>>>>
>>>>> int PASCAL FAR mycnt ( IN SOCKET s, IN const struct sockaddr FAR *name, 
>>>> IN int namelen );
>>>>> bob Wrote:
>>>>>
>>>> step 1 would be get the output from the preprocessor and take a look at it. I'm guessing that PASCAL, FAR and IN are macros
>>>>
>>>> step 0 is try htod:   http://www.digitalmars.com/d/1.0/htod.html
>>>>
>>>>
>>> I think
>>> int PASCAL FAR mycnt()
>>> becomes :
>>> extern (Pascal) int mycnt()
>>>
>>> The FAR* thingy seems to be a 16 bit relict...
>>>
>>> Guess the IN is not nessesary in D..., not sure though
>>>
>>> Bjoern
> 
> "in" means "pass argument by value," and is the default for arguments.
> 
> Also, I believe that PASCAL is the same as the Windows cc, so my guess
> at the conversion would be:
> 
> For D 1.x:
> 
> extern(Windows) int mycnt ( SOCKET s, sockaddr* name, int namelen );
> 
> For D 2.x:
> 
> extern(Windows) int mycnt ( SOCKET s, const sockaddr* name, int namelen );
> 
> Note that you'd have to supply definitions of SOCKET and sockaddr.
> 
>   -- Daniel

I am pretty sure that PASCAL means  __pascal

so the D1 translation is :
extern (Pascal) int mycnt ( SOCKET s, sockaddr* name, int namelen );

See :http://www.digitalmars.com/d/1.0/htomodule.html  at the bottom

Bjoern
January 28, 2009

BLS wrote:
> Daniel Keep wrote:
>> [snip]
>>
>> Also, I believe that PASCAL is the same as the Windows cc, so my guess at the conversion would be:
>>
>> For D 1.x:
>>
>> extern(Windows) int mycnt ( SOCKET s, sockaddr* name, int namelen );
>>
>> For D 2.x:
>>
>> extern(Windows) int mycnt ( SOCKET s, const sockaddr* name, int
>> namelen );
>>
>> Note that you'd have to supply definitions of SOCKET and sockaddr.
>>
>>   -- Daniel
> 
> I am pretty sure that PASCAL means  __pascal
> 
> so the D1 translation is :
> extern (Pascal) int mycnt ( SOCKET s, sockaddr* name, int namelen );
> 
> See :http://www.digitalmars.com/d/1.0/htomodule.html  at the bottom
> 
> Bjoern

Aah yes; I didn't realise Pascal was defined; I thought it was limited to C, D, Windows and System for D1, adding C++ for D2.

  -- Daniel