Question

I'm talking about ROOT's CINT.

I've been developing a game in c++ wich uses Python for programming the AI. As much as I love Python, and how easy it makes programming the AI (generators and FP are really sexy), it makes non trivial algorythms run so slow.

Then I remembered I read somewhere about CINT, and how it can be embedable. Now I need your help to decide if implement CINT as an alternate scripting system. With python I use Boost::Python, wich makes it almost unpainfull to expose classes and objects once you get used to it. Is there such ease with CINT?

Thank you.

Was it helpful?

Solution

I've written classes compiled against Root, and then accessed them directly in the interpreter. That's easy, though all such classes are expected to derive from TObject. What I don't know is if that is a cint requirement or a ROOT requirement. you might be best off asking on the RootTalk CINT Support forum


To address the questions in the comments:

  • The derivation from TObject can be second hand: your classes can be derived from something derived from TObject, it just has to be a TObject.
  • Root provides a tool (makecint) and some macros (ClassDef and ClassImp) to support integrating your code with the interpreted execution environment: write your clas deriving it from TObject; include the ClassDef macro in the header and the ClassImp macro in the source file; run makecint over the code to generate all the tedious integration nonesense, then compile your code and the generated code to a shared object (or, I presume, a dll on a windows box); start the interpreter; load the library with .L; and your class is fully integrated with the interpreted environment (tab completion will work and all that). The build can be automated with make (and presumable other tools). ##Again,## I don't know how much of this belongs to ROOT and how much to cint. But it is all open source, so you can snag and adapt what you need.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top