c-for-go
c-for-go copied to clipboard
How to handle a function returning a struct as value
I have following situation:
typedef struct {
int A;
} member;
typedef struct {
size_t size; // size of array defined below
type1* members; // pointer to an array of members
} members;
// function returning members as value
members get_members(void);
I've instructed c-for-go to generates MemTips if kind bind for member and members. the wrapper for get_members() looks ruffly like this:
func GetMembers() Memebrs {
__ret := C.get_members()
__v := *(*Members)(unsafe.Pointer(&__ret))
return __v
}
now I have the following problems:
-
GetMembersseems to return a wrongly initialized struct as it simply uses the c-structs pointer and casts it. changing it to:func GetMembers() Memebrs { __ret := C.get_members() return *NewMembersRef(unsafe.Pointer(&__ret) }seems to fix that...
-
with the above fix, I can call
.Deref()which sets the.Sizemember to value of the underlying c-struct but the.Members([]Member) does not get filled in
do I miss an important instruction in the yaml file or is this simply a limitation on c-to-go?