[Haskell-cafe] Feedback on FFI bindings for C++ library
Nathan Hüsken
nathan.huesken at posteo.de
Thu Jan 17 18:48:02 CET 2013
Hey,
I would like to write FII bindings in haskell for cocos2d-x
(http://www.cocos2d-x.org/), which is a C++ library.
Since I have little experience with this, I would like some feedback
before I discover that concept is bad half way.
In cocos2d there is a base class with much functionality: CCNode
Many classes derive from it (i.E. CCLayer) and use the virtual functions
of CCNode (i.E. setPosition).
How do I map this to haskell?
The general Idea:
I have a typeclass, in which everything that is derived from CCNode is
an instance:
class NodeDerived a where
toNode :: a -> Node
setPosition :: a -> (Double,Double) -> IO ()
setPosition a pos = setNodePosition (toNode a) pos
instane NodeDerived Layer where
toNode = layerToNode
and layerToNode :: Layer -> Node would be implemented in C++ as:
CCNode* layerToNode(CCLayer* l) { return dynamic_cast<CCNode*>(l); }
This way I would have only to implement toNode for every class derived
from CCNode and get all the functions CCNode defines.
What do you think if this Idea?
How would you do it?
Thanks!
Nathan
More information about the Haskell-Cafe
mailing list