fficxx
fficxx copied to clipboard
Haskell-C++ Foreign Function Interface Generator
We need to use consistent notations for bare, reference and pointer. It is desirable to seperate that pointer modifier out, like ``` data Modified a = NoModifier a | Pointer...
We need ot support sized primitives like `Int64`, `Int32`, `Word64`, `Word32`.
It is not clear what `TemplateType` in Types means. Probably, it's already subsumed by `TemplateApp` and `TemplateParam`. If so, remove it.
Current name mangling scheme is very easy to be broken. As fficxx is applied to bigger C++ framework systems, we had better have a safe name mangling mechansim.
In current implementation, we should provide C++ type form directly, for example: ``` vectorfloatref_ = TemplateAppRef t_vector "CFloat" "std::vector" ``` `std::vector` part should be automatically calculated.
Cabal metadata is added in an ad hoc way in fficxx. Since we have a common library for Cabal in the Haskell ecosystem, we had better use the Cabal library.
When a method has the following signature, ``` Static bool_ "writeGML" [ cppclassref graphAttributes "ga", cppclassref string "filename" ] (Just "graphIOwriteGMLGA") ``` I had the following linking error. ``` /home/wavewave/repo/src/hs-ogdf/.cabal-sandbox/lib/x86_64-linux-ghc-8.2.2/OGDF-0.0-7k9aHHanEp4L3ynXHUDmmD/libHSOGDF-0.0-7k9aHHanEp4L3ynXHUDmmD.a(Implementation.o):(.text+0x339):...
when two different fficxx binding packages are used, we can have name conflict in C space between symbols exported from each package, especially at top level. For example, `ImGui::CreateContext` and...