Thread overview | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
May 24, 2002 Simple question | ||||
---|---|---|---|---|
| ||||
Hello, I'm italian boy and I not speak a good english, then sorry :) My question is this: a "inout" parameters of one function, are the same that a parameteres passed for address? For example: // D void foo (inout int x); // C++ void foo (int& x); are equivalent? Thank you -- Luigi E-mail: cyberboy@email.it ICQ #46240443 |
May 24, 2002 Re: Simple question | ||||
---|---|---|---|---|
| ||||
Posted in reply to Luigi | "Luigi" <cyberboy@email.it> wrote in message news:aclr7o$o0j$1@digitaldaemon.com... > For example: > > // D > > void foo (inout int x); > > // C++ > > void foo (int& x); > > are equivalent? Yes. |
May 24, 2002 Re: Simple question | ||||
---|---|---|---|---|
| ||||
Posted in reply to Pavel Minayev | "Pavel Minayev" <evilone@omen.ru> wrote in message news:acm10f$t4f$1@digitaldaemon.com... > "Luigi" <cyberboy@email.it> wrote in message news:aclr7o$o0j$1@digitaldaemon.com... > > // D > > void foo (inout int x); > > // C++ > > void foo (int& x); > > are equivalent? > Yes. For most purposes, yes. In D, though, the parameter x gets initialized before being passed to foo(), this is not necessarilly so in C++. |
May 24, 2002 Re: Simple question | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | "Walter" <walter@digitalmars.com> wrote in message news:acm3ck$vbc$2@digitaldaemon.com... > For most purposes, yes. In D, though, the parameter x gets initialized before being passed to foo(), this is not necessarilly so in C++. I thought that variables passed as inout arguments are _required_ to be initialized before the call... and it's out arguments which are initialized to default value; ain't I right? |
May 25, 2002 Re: Simple question | ||||
---|---|---|---|---|
| ||||
Posted in reply to Pavel Minayev | "Pavel Minayev" <evilone@omen.ru> wrote in message news:acm6ng$12cc$1@digitaldaemon.com... > "Walter" <walter@digitalmars.com> wrote in message news:acm3ck$vbc$2@digitaldaemon.com... > > > For most purposes, yes. In D, though, the parameter x gets initialized before being passed to foo(), this is not necessarilly so in C++. > > I thought that variables passed as inout arguments are _required_ to be initialized before the call... and it's out arguments which are initialized to default value; ain't I right? All variables get initialized at some point, even if it is just to the default value. Inout variables get initialized by the caller, out variables get initialized by the callee. C++'s inability to distinguish between an out and an inout (or even an in) is a serious bug, leading to kludge-o-matic workarounds like IDL. |
May 26, 2002 Re: Simple question | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | "Walter" <walter@digitalmars.com> wrote in message news:acn93l$2028$2@digitaldaemon.com... > > "Pavel Minayev" <evilone@omen.ru> wrote in message news:acm6ng$12cc$1@digitaldaemon.com... > > "Walter" <walter@digitalmars.com> wrote in message news:acm3ck$vbc$2@digitaldaemon.com... > > > > > For most purposes, yes. In D, though, the parameter x gets initialized before being passed to foo(), this is not necessarilly so in C++. > > > > I thought that variables passed as inout arguments are _required_ to be initialized before the call... and it's out arguments which are initialized to default value; ain't I right? > > All variables get initialized at some point, even if it is just to the default value. Inout variables get initialized by the caller, out variables > get initialized by the callee. > > C++'s inability to distinguish between an out and an inout (or even an in) is a serious bug, leading to kludge-o-matic workarounds like IDL. > Well, IDL ofcourse also serves the purpose of being language independant, so you could also write IDL compilers that generate Object Pascal header files, for example... Walter is there still any need for IDL in D, or are all constructs supported by IDL also supported by D? What do you do with the unique and ref keywords for instance? -- Stijn OddesE_XYZ@hotmail.com http://OddesE.cjb.net _________________________________________________ Remove _XYZ from my address when replying by mail |
June 05, 2002 Re: Simple question | ||||
---|---|---|---|---|
| ||||
Posted in reply to OddesE | "OddesE" <OddesE_XYZ@hotmail.com> wrote in message news:acqivc$a3j$1@digitaldaemon.com... > Walter is there still any need for IDL in D, > or are all constructs supported by IDL also > supported by D? What do you do with the > unique and ref keywords for instance? I don't remember what those keywords do. |
June 05, 2002 Re: Simple question | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | simply: - unique says there is no aliasing elsewhere (in the walkable tree of arguments in "this" function call) of the ptr so marked. - ref incorporates unique, and states that the ptr so marked cannot be NULL (or rather that it will not be NULL - it's still possible to pass NULL in C/C++ of course) As I said, this is a simple explanation, but captures the most interesting features. If anyone wants to provide a fullsome explanation, be my guest ... "Walter" <walter@digitalmars.com> wrote in message news:adlhnj$166m$1@digitaldaemon.com... > > "OddesE" <OddesE_XYZ@hotmail.com> wrote in message news:acqivc$a3j$1@digitaldaemon.com... > > Walter is there still any need for IDL in D, > > or are all constructs supported by IDL also > > supported by D? What do you do with the > > unique and ref keywords for instance? > > I don't remember what those keywords do. > > |
June 09, 2002 Re: Simple question | ||||
---|---|---|---|---|
| ||||
Posted in reply to Matthew Wilson | "Matthew Wilson" <mwilson@nextgengaming.com> wrote in message news:adm69r$1pt3$1@digitaldaemon.com... > simply: > > - unique says there is no aliasing elsewhere (in the walkable tree of arguments in "this" function call) of the ptr so marked. > > - ref incorporates unique, and states that the ptr so marked cannot be NULL > (or rather that it will not be NULL - it's still possible to pass NULL in > C/C++ of course) > > As I said, this is a simple explanation, but captures the most interesting features. If anyone wants to provide a fullsome explanation, be my guest ... > > > > "Walter" <walter@digitalmars.com> wrote in message news:adlhnj$166m$1@digitaldaemon.com... > > > > "OddesE" <OddesE_XYZ@hotmail.com> wrote in message news:acqivc$a3j$1@digitaldaemon.com... > > > Walter is there still any need for IDL in D, > > > or are all constructs supported by IDL also > > > supported by D? What do you do with the > > > unique and ref keywords for instance? > > > > I don't remember what those keywords do. > > > > > > Basically they aid COM in the decision for marshaling code to use. Let's say you pass a circular linked list. Since you cannot pass pointers across boundaries you will have to copy the block of memory each pointer is pointing at. However you might get in an infinite loop when passing a circular linked list, so you have to check each pointer to see if you already passed it before. Using unique tells the IDL compiler that every pointer will be unique, so the extra checking code is not needed, making the marshaling faster. -- Stijn OddesE_XYZ@hotmail.com http://OddesE.cjb.net _________________________________________________ Remove _XYZ from my address when replying by mail |
June 10, 2002 Re: Simple question | ||||
---|---|---|---|---|
| ||||
Posted in reply to OddesE | Thanks for the illumination. D doesn't have something directly comparable. "OddesE" <OddesE_XYZ@hotmail.com> wrote in message news:ae0enc$nhq$1@digitaldaemon.com... > "Matthew Wilson" <mwilson@nextgengaming.com> wrote in message news:adm69r$1pt3$1@digitaldaemon.com... > > simply: > > > > - unique says there is no aliasing elsewhere (in the walkable tree of arguments in "this" function call) of the ptr so marked. > > > > - ref incorporates unique, and states that the ptr so marked cannot be > NULL > > (or rather that it will not be NULL - it's still possible to pass NULL in > > C/C++ of course) > > > > As I said, this is a simple explanation, but captures the most interesting > > features. If anyone wants to provide a fullsome explanation, be my guest > ... > > > > > > > > "Walter" <walter@digitalmars.com> wrote in message news:adlhnj$166m$1@digitaldaemon.com... > > > > > > "OddesE" <OddesE_XYZ@hotmail.com> wrote in message news:acqivc$a3j$1@digitaldaemon.com... > > > > Walter is there still any need for IDL in D, > > > > or are all constructs supported by IDL also > > > > supported by D? What do you do with the > > > > unique and ref keywords for instance? > > > > > > I don't remember what those keywords do. > > > > > > > > > > > > Basically they aid COM in the decision for > marshaling code to use. Let's say you pass > a circular linked list. Since you cannot > pass pointers across boundaries you will > have to copy the block of memory each > pointer is pointing at. However you might > get in an infinite loop when passing a > circular linked list, so you have to check > each pointer to see if you already passed it > before. Using unique tells the IDL compiler > that every pointer will be unique, so the > extra checking code is not needed, making > the marshaling faster. > > > -- > Stijn > OddesE_XYZ@hotmail.com > http://OddesE.cjb.net > _________________________________________________ > Remove _XYZ from my address when replying by mail > > > |
Copyright © 1999-2021 by the D Language Foundation