tags:

views:

32

answers:

1

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.

+1  A: 

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.
dmckee
I think you could make a wrapper class that derives from the same class as your exposed object and TObject. This would avoid modifying your existing classes. BTW, can you elaborate a little more? How difficult was it to include it into your build system? Is it easy to intgrate, to link? I'm quite interested :)
Fabzter