| 
    
 [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC] Generating Go bindings for libxl
 George,
> Are you up for taking a stab at something like `gengotypes.py`?
I have was able to make a bit of progress on this over the weekend. I've started
`gengotypes.py` in my branch[1]; the portion which generates `xenlight_types.go`
(the counterpart to _libxl_types.h) is mostly working. 
The main exception is that I am not certain how the `KeyedUnion` type from the 
IDL
should be translated for Go. One option is to do something similar to the 
`oneof` field 
in gRPC's protobuf messages[2]. Essentially, we would define a separate struct 
for each
of the structs that belong to the union. Then, where a union would be used in 
C, we use
an interface type which the previously defined structs implement. E.g.
type isDomainTypeStruct interface {
        isDomainTypeStruct()
}
type domainTypeHVMStruct struct {
        ...
}
func (d domainTypeHVMStruct) isDomainTypeStruct() {}
type DomainBuildInfo struct {
        ...
        Type DomainType
        dts    isDomainTypeStruct
}
It is a bit ugly, but I think it's semantically the closest to 'KeyedUnion'. 
What are your thoughts?
-NR
[1] https://github.com/enr0n/xen/blob/gen-go-types/tools/golang/gengotypes.py
[2] https://developers.google.com/protocol-buffers/docs/proto3#oneof
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
 
  | 
  
![]()  | 
            
         Lists.xenproject.org is hosted with RackSpace, monitoring our  |