Branch | Status |
---|---|
Master |
- Alias
- Array
- Bitfield
- Callback
- Class - Stubbed out
- Constant
- Constructor - Stubbed out
- Documentation - Done via
IndentWriter.WriteDocumentation
, needs a bit of rework (IPreGeneratable
and do it automatically inIGeneratable
extensions) - Enumeration
- Field
- Function
- Implements
- Include
- InstanceParameter
- Interface - Stubbed out
- Member - Done, but needs a bit more rework to hex formatting smarter and not hacky
- Method
- Namespace
- Package
- Parameter
- Prerequisite
- Property
- Record
- Repository
- ReturnValue
- Scope
- Signal
- TransferOwnership
- Type
- Union
- Varargs
- VirtualMethod
- Serialization Model
- Generation
- Marshalling
- Handle capabilities by interface (
IGeneratable
- generation,ISymbol
- typesystem information) - A way to override GIR data (if needed)
- Given a GIR file, process all the included GIR files Repository.Includes data
IGeneratable
defines the capability to generate code- Types which conform to IGeneratable will handle generation of the type and its members
ISymbol
defines the capability of being used as a type and marshalling semanticsSymbolTable
maps the C type name to anISymbol
to know marshalling semantics- Port over primitives (
SimpleGen
,LP(U)Gen
) and improve namingSimpleGen
→PrimitiveGen
,LPGen
→LongGen
? (no idea about this one)
- Default Marshalling (Pass by value) to / from
IPassByValue
,IMarshalFromValue
/IFromValue
? - ByRef Marshalling (Pass by reference) to / from
IPassByReference
,IMarshalFromReference
/IFromReference
? - Caller allocates case -> default allocation
CallByName
(this one is really bad, this method used to prepare a csharp variable so it can be passed to the native side, i.e. casting a enum to an int) Maybe each parameter should have something like string PrepareToPassToNative() which converts the variable so it can be passed to native and returns the variable name to use when passing itCSType
→CSharpType
?
IsBlittable
(true for primitives by default, records need to check if they contain only primitives)
- There are a lot of duplicate names in gir between fields and properties, sometimes also signals or callbacks → Name clashes
- Name clashes used to historically be solved via metadata files.
- Provide a switch to use unsafe code for optimization?