Ayke van Laethem
0ce4d90779
cgo: add support for anonymous structs
2019-06-03 20:01:47 +02:00
Ayke van Laethem
1d7cc2c242
cgo: add support for bitfields using generated getters and setters
2019-06-03 16:13:19 +02:00
Ayke van Laethem
dfa713040a
cgo: add support for enum types
...
Enum types are implemented as named types (with possible accompanying
typedefs as type aliases). The constants inside the enums are treated as
Go constants like in the Go toolchain.
2019-05-17 19:37:20 +02:00
Ayke van Laethem
4619207f99
cgo: don't crash on import "C"
without comment
...
This doesn't make a lot of sense, but we shouldn't crash on it.
2019-05-12 10:49:15 +02:00
Ayke van Laethem
99587fe073
cgo: add support for #define constants
...
These are converted to Go constants where possible.
2019-05-12 10:49:15 +02:00
Ayke van Laethem
35af33ead7
cgo: improve typedef/struct/enum support
...
Typedefs are now Go type aliases. And C.struct_ and C.union_ prefixed
records work correctly now, even when they're not in a typedef.
2019-05-01 11:33:18 +02:00
Ayke van Laethem
2f2d62cc0c
cgo: support builtin #include headers
...
Add support for header files bundled with the compiler by copying them
into the release tarball.
2019-04-25 12:55:52 +02:00
Ayke van Laethem
b815d3f760
cgo: implement void* pointer type
...
void* is translated to unsafe.Pointer on the Go side.
2019-04-25 10:48:56 +02:00
Ayke van Laethem
9c46ac4eed
cgo: implement char type
...
This type is a bit more difficult because it can be signed or unsigned
depending on the target platform.
2019-04-25 10:48:56 +02:00
Ayke van Laethem
21a4c14e86
cgo: implement C.struct_ types
...
These types (called elaborated types in C) are used as part of linked
lists, among others.
This is part an extra feature (to be compatible with CGo C.struct_
types) and part a bugfix: linked lists would result in endless recursion
leading to a stack overflow.
2019-04-20 10:18:38 +02:00
Ayke van Laethem
d2b3a5486c
cgo: implement C unions
...
Unions are somewhat hard to implement in Go because they are not a
native type. But it is actually possible with some compiler magic.
This commit inserts a special "C union" field at the start of a struct
to indicate that it is a union. As such a field cannot be written
directly in Go, this is a useful to distinguish structs and unions.
2019-04-17 11:56:40 +02:00
Ayke van Laethem
536086988c
cgo: implement Go arrays (constant arrays in C)
2019-04-17 11:56:40 +02:00
Ayke van Laethem
684543b7f1
cgo: implement struct types
...
Not complete: packed structs are treated as regular structs.
2019-04-17 11:56:40 +02:00
Ayke van Laethem
da345e8723
cgo: implement bool/float/complex types
2019-02-18 17:17:56 +01:00
Ayke van Laethem
95d895646a
loader/cgo: add support for function pointers
2019-02-08 13:19:02 +01:00
Ayke van Laethem
35fb594f8f
loader/cgo: add support for pointer types
2019-02-08 13:19:02 +01:00
Ayke
01f6aff422
loader: support global variables in CGo ( #173 )
...
Global variables (like functions) must be declared in the import "C" preamble and can then be used from Go.
2019-02-08 13:04:03 +01:00
Ayke van Laethem
6cacafb8dc
cgo: add package directory to header include paths
2018-12-10 15:38:03 +01:00
Ayke van Laethem
c6069476a7
cgo: do not rely on stdint.h to be available
2018-12-10 15:38:03 +01:00
Ayke van Laethem
0af7da9bff
cgo: add support for C.int, c.uint, etc
2018-12-10 15:38:02 +01:00
Ayke van Laethem
e8c1b5ab6e
cgo: add support for C typedefs
2018-12-10 15:38:02 +01:00
Ayke van Laethem
ecf6ffa62e
all: add bare-bones Cgo support
2018-12-10 15:38:02 +01:00