Ah - ok.

As I recall, I submitted a CR for it but Ian pointed out an edge case I
needed to handle. I never got to it because I changed direction and it
didn't seem like anyone else was interested in this modification at the
time.

I can dig out the diffs from my previous attempt if that would help get you
started - let me know.

---
Andy Maloney  //  https://asmaloney.com
twitter ~ @asmaloney <https://twitter.com/asmaloney>


On Sun, Oct 16, 2016 at 3:07 PM, Richard Wilkes <wil...@me.com> wrote:

> Hi, Andy.
>
> Thanks for replying. No, I was interested in the change to allow a struct
> defined in Go to be passed to C, even if it only supported basic types.
> Sounds like that part never made it in — certainly Go 1.7.1 doesn’t seem to
> allow me to do such things, which is unfortunate.
>
> - Rich
>
>
>
> On Oct 16, 2016, at 10:23 AM, Andy <asmalo...@gmail.com> wrote:
>
> Richard:
>
> If you're asking about:
>
>   "cmd/cgo: annotate named return struct members in comments "
>   https://go-review.googlesource.com/#/c/13061/
>
> It looks like that was merged at some point, but I'm not sure.
>
> I abandoned my experiments with go/cgo when some of the limitations became
> clear.  I wouldn't ultimately be able to do what I'd wanted to with it.
>
> ---
> Andy Maloney  //  https://asmaloney.com
> twitter ~ @asmaloney <https://twitter.com/asmaloney>
>
>
> On Sun, Oct 16, 2016 at 12:51 PM, Richard Wilkes <raw.softw...@gmail.com>
> wrote:
>
>> Andy,
>>
>> What's the status of getting this change into Go? I have an issue that
>> could benefit from this particular support and was curious if/when I'd be
>> able to use it.
>>
>> Thanks!
>>
>> - Rich
>>
>>
>> On Sunday, August 9, 2015 at 4:24:52 PM UTC-7, Andy Maloney wrote:
>>>
>>> I imagine it will take some back-and-forth with you to get it into shape
>>> - make sure it's idiomatic and fits with the current structure - so I'll
>>> wait until after 1.5 is out.
>>>
>>> It requires changes I put in another CL (https://go-review.googlesourc
>>> e.com/#/c/13061/ ).  How do I handle that when I want to create a new
>>> CL?  Just branch off that one?  Or do just wait until the other one is
>>> accepted and merged?
>>>
>>> On Sunday, August 9, 2015 at 5:04:03 PM UTC-4, Ian Lance Taylor wrote:
>>>>
>>>> On Sun, Aug 9, 2015 at 1:49 PM, Andy Maloney <asma...@gmail.com>
>>>> wrote:
>>>> > On Sunday, August 9, 2015 at 4:05:34 PM UTC-4, Ian Lance Taylor
>>>> wrote:
>>>> >>
>>>> >> On Sun, Aug 9, 2015 at 11:47 AM, Andy Maloney <asma...@gmail.com>
>>>> wrote:
>>>> >> >
>>>> >> > after all the Decls are added to the Package in Record() (in
>>>> main.go),
>>>> >> > call
>>>> >> > a function which looks at each of the exported functions and uses
>>>> the
>>>> >> > Decls
>>>> >> > to create a map to store some information about struct parameters
>>>> &
>>>> >> > results
>>>> >> > in cgoType(), use the map that was just created to lookup the name
>>>> of
>>>> >> > the
>>>> >> > struct and its size (which we calculated and stored in the map)
>>>> and, if
>>>> >> > we
>>>> >> > find it, return it
>>>> >> > at the end of writeExportHeader(), write out typedefs for each of
>>>> the
>>>> >> > structs in the map
>>>> >>
>>>> >> I'm not quite sure what you mean here.  It seems to me that you can
>>>> >> treat any struct used by an exported function as though the Go code
>>>> >> said "C.struct_foo".  That should define in Go like other cgo
>>>> >> structs.
>>>> >
>>>> > I'm not seeing how to do this, but does that mean from my example
>>>> above I'd
>>>> > end up with this in the header:
>>>> >
>>>> > typedef struct {
>>>> >     GoInt    r0;
>>>> >     GoString    r1;
>>>> > } struct_Bar;
>>>> >
>>>> >
>>>> > extern struct_Bar Foo();
>>>> >
>>>> > (And I'd lose the names of the members like I currently do in the
>>>> return
>>>> > structs?)
>>>>
>>>> Sorry, I was confused.  You have structs defined in Go, and you need
>>>> them to be defined in C.  For some reason I was thinking about this
>>>> the other way around.
>>>>
>>>> Sure, something like what you described sounds reasonable.
>>>>
>>>>
>>>> >> > Right now I just look at structs, but it would make sense to me
>>>> that if
>>>> >> > you
>>>> >> > declare
>>>> >> > type Foo int
>>>> >> > and you use it as a result to a function we should see
>>>> >> > typedef GoInt Foo;
>>>> >> > in the header file.  Would that make sense to add too?
>>>> >>
>>>> >> I doubt it.  C typedefs are not Go typedefs.  Go's types are much
>>>> >> stricter.  I expect that changing this would break currently working
>>>> >> code.
>>>> >
>>>> >
>>>> > Wouldn't this just be preserving the name of the type in the C code?
>>>> > Whether you call it a GoInt or a Foo in this case should be the same
>>>> - it's
>>>> > just an alias in C.  Not sure I see how that would break anything.
>>>>
>>>> Same confusion on my part.  I'm not sure the typedef names help much
>>>> but I suppose it is fine.
>>>>
>>>> Ian
>>>>
>>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to