
On 30 Jan 2006, at 17:08, Stefan Seefeld wrote:
Reflex does also not try to parse C++ definitions itself but leaves this to gccxml (a frontend of gcc) and subsequently processes it's xml output to produce dictionary source code. My guess is, that it is very hard to implement a C++ parser. So with Reflex the dictionary information for any C++ definition which is compilable with gcc, can be produced.
Right, though gccxml has some drawbacks, too.
We have fortunately not found problems yet and we generated dictionaries for a lot of user code in our environment and also "external" libraries. These dictionaries are then e.g. further used for persistence of objects.
What may also be important is, that reflection source code is produced in a non-intrusive way and that interaction with objects from the meta-level is possible.
That is true for synopsis, too.
With interaction with objects I meant e.g. through the meta-level instantiate a class, get/set the data member values, call a function on that instance, retrieve the function's return value and so on. I may have missed that, but I couldn't find examples on the synopsis page for this functionality. Reflex code for this would look something like Type t = Type::ByName("foo"); Object instance = t.Construct(); Object ret_obj = instance.Invoke("myFunction"); Cheers Stefan -- Stefan Roiser CERN, PH Department CH - 1211 Geneva 23 Mob:+41 76 487 5334 Tel:+41 22 767 4838 Fax:+41 22 767 9425