Re: `this` and nested structs

2018-05-10 Thread Jonathan M Davis via Digitalmars-d-learn
On Thursday, May 10, 2018 06:31:09 Mike Franklin via Digitalmars-d-learn wrote: > On Thursday, 10 May 2018 at 06:22:37 UTC, Jonathan M Davis wrote: > > Structs don't have that. > > Should they? Honestly, I don't think that classes should have it, but changing it now would break code (most

Re: `this` and nested structs

2018-05-10 Thread Mike Franklin via Digitalmars-d-learn
On Thursday, 10 May 2018 at 06:22:37 UTC, Jonathan M Davis wrote: Structs don't have that. Should they?

Re: `this` and nested structs

2018-05-10 Thread Jonathan M Davis via Digitalmars-d-learn
On Thursday, May 10, 2018 03:23:50 Mike Franklin via Digitalmars-d-learn wrote: > My understanding is that nested structs have an implicit context > pointer to their containing scope. A non-static struct inside a function does, but I suspect that you're thinking about non-static nested c

Re: `this` and nested structs

2018-05-09 Thread Radu via Digitalmars-d-learn
? Thanks, Mike My understanding is that nested structs have an implicit context pointer to their containing scope. Nesting with hidden context pointer is only for nested structs inside functions. https://dlang.org/spec/struct.html#nested This is a source a confusion unfortunately.

`this` and nested structs

2018-05-09 Thread Mike Franklin via Digitalmars-d-learn
;` then of course it emits the following error: Error: no property `x` for type `SS` My understanding is that `SS` should have a context pointer to an instance of `S`, but how do I navigate the members of `S` and `SS`. Is this a bug? Thanks, Mike My understanding is that nested structs have

Re: How to handle nested structs when converting C headers?

2013-12-12 Thread Regan Heath
union internalRep try static union InternalRep { /* note the capital letter */ /* snip */ } InternalRep internalRep;; // still need a decl Right. But why use the static keyword here? Because nested structs by default carry a pointer to the containing struct (or scope), which means it adds

Re: How to handle nested structs when converting C headers?

2013-12-12 Thread bearophile
Regan Heath: I would stop nesting the struct definition. I think that is both cleaner and closer to the original intent - the only reason it is nested in C is because C allows definition and declaration that way, and D does not. Then you don't need static at all. It's mostly a matter of

Re: How to handle nested structs when converting C headers?

2013-12-12 Thread Jacob Carlborg
On 2013-12-11 23:45, Gary Willoughby wrote: How to handle nested structs when converting C headers? In the following snippet i'm currently converting, how would you convert the nested typed union and structures? Would you declare them separately then use their types in the Tcl_Obj struct

How to handle nested structs when converting C headers?

2013-12-11 Thread Gary Willoughby
How to handle nested structs when converting C headers? In the following snippet i'm currently converting, how would you convert the nested typed union and structures? Would you declare them separately then use their types in the Tcl_Obj struct? or is there a nice way in D to nest them like C

Re: How to handle nested structs when converting C headers?

2013-12-11 Thread Adam D. Ruppe
On Wednesday, 11 December 2013 at 22:45:35 UTC, Gary Willoughby wrote: How to handle nested structs when converting C headers? Nested structs and unions like in your example are supported in D too, same syntax, same effect.

Re: How to handle nested structs when converting C headers?

2013-12-11 Thread Adam D. Ruppe
On Wednesday, 11 December 2013 at 22:54:04 UTC, Adam D. Ruppe wrote: Nested structs and unions like in your example are supported in D too, same syntax, same effect. Actually, no, not quite the same syntax, I didn't notice the name at the end of the C one (in D, the anonymous nested structs

Re: How to handle nested structs when converting C headers?

2013-12-11 Thread bearophile
Adam D. Ruppe: Nested structs and unions like in your example are supported in D too, same syntax, same effect. But don't forget to add to use static struct instad of struct. Bye, bearophile

Re: How to handle nested structs when converting C headers?

2013-12-11 Thread Gary Willoughby
On Wednesday, 11 December 2013 at 23:12:39 UTC, bearophile wrote: Adam D. Ruppe: Nested structs and unions like in your example are supported in D too, same syntax, same effect. But don't forget to add to use static struct instad of struct. Bye, bearophile Have you got an example

Re: How to handle nested structs when converting C headers?

2013-12-11 Thread Gary Willoughby
On Wednesday, 11 December 2013 at 23:27:57 UTC, Gary Willoughby wrote: On Wednesday, 11 December 2013 at 23:12:39 UTC, bearophile wrote: Adam D. Ruppe: Nested structs and unions like in your example are supported in D too, same syntax, same effect. But don't forget to add to use static

Re: How to handle nested structs when converting C headers?

2013-12-11 Thread Adam D. Ruppe
On Wednesday, 11 December 2013 at 23:35:04 UTC, Gary Willoughby wrote: static union internalRep try static union InternalRep { /* note the capital letter */ /* snip */ } InternalRep internalRep;; // still need a decl

Re: How to handle nested structs when converting C headers?

2013-12-11 Thread bearophile
Gary Willoughby: Have you got an example because i always get: tcl.d(713): Error: no identifier for declarator twoPtrValue tcl.d(718): Error: no identifier for declarator ptrAndLongRep tcl.d(719): Error: no identifier for declarator internalRep In D you can't define a struct/union and use it

Re: How to handle nested structs when converting C headers?

2013-12-11 Thread Adam D. Ruppe
On Wednesday, 11 December 2013 at 23:36:11 UTC, bearophile wrote: In D you can't define a struct/union and use it to define an instance on the fly. Well, you can if it is anonymous. struct Foo { union { struct { ubyte a; ubyte b; } ubyte[2] arr; } } That works in D,

Re: How to handle nested structs when converting C headers?

2013-12-11 Thread bearophile
Adam D. Ruppe: Well, you can if it is anonymous. struct Foo { union { struct { ubyte a; ubyte b; } ubyte[2] arr; } } That works in D, and it makes foo.a == arr[0] and foo.b == arr[1]; Right :-) I like D structs. Bye, bearophile

Re: How to handle nested structs when converting C headers?

2013-12-11 Thread Gary Willoughby
On Wednesday, 11 December 2013 at 23:38:13 UTC, Adam D. Ruppe wrote: On Wednesday, 11 December 2013 at 23:35:04 UTC, Gary Willoughby wrote: static union internalRep try static union InternalRep { /* note the capital letter */ /* snip */ } InternalRep internalRep;; // still need a decl

Re: How to handle nested structs when converting C headers?

2013-12-11 Thread H. S. Teoh
letter */ /* snip */ } InternalRep internalRep;; // still need a decl Right. But why use the static keyword here? Because nested structs by default carry a pointer to the containing struct (or scope), which means it adds extra baggage and you can't create the nested without also having

Ddoc: no docs generated for nested structs?

2012-03-07 Thread H. S. Teoh
I wrote a whole bunch of documentation for a struct that I later decided to transplant inside another struct (because the two are closely linked), and now the former struct's docs have vanished. Is this expected behaviour? T -- I am a consultant. My job is to make your job redundant. -- Mr Tom

Re: Ddoc: no docs generated for nested structs?

2012-03-07 Thread H. S. Teoh
On Wed, Mar 07, 2012 at 03:49:26PM -0800, H. S. Teoh wrote: I wrote a whole bunch of documentation for a struct that I later decided to transplant inside another struct (because the two are closely linked), and now the former struct's docs have vanished. Is this expected behaviour? [...]

Re: Ddoc: no docs generated for nested structs?

2012-03-07 Thread Jonathan M Davis
On Wednesday, March 07, 2012 16:37:44 H. S. Teoh wrote: On Wed, Mar 07, 2012 at 03:49:26PM -0800, H. S. Teoh wrote: I wrote a whole bunch of documentation for a struct that I later decided to transplant inside another struct (because the two are closely linked), and now the former struct's

C-style nested structs convert to D

2009-03-18 Thread CodexArcanum
Hey all, I'm trying to rewrite a few .h files into D so I can call a C library. One snag I've hit is this guy: struct _tree_t { _tree_t* next; _tree_t* father; _tree_t* sons; } D won't do the nested struct thing, so I need to convert this into something D will like,