On 13/01/2008, Roman Yakovenko <roman.yakovenko@gmail.com> wrote:
On Jan 13, 2008 6:53 PM, Gustavo Carneiro <gjcarneiro@gmail.com> wrote:
> I am trying to parse C++ code like:
>
> template<typename R,
>     typename T1 = empty, typename T2 = empty,
>    typename T3 = empty, typename T4 = empty,
>     typename T5 = empty, typename T6 = empty>
> class Callback ...;
>
> later:
>
> template<typename T1 = empty, typename T2 = empty,
>           typename T3 = empty, typename T4 = empty>
> class CallbackTraceSource : public CallbackTraceSourceBase {
> public:
>
>    typedef Callback<void,TraceContext const &,T1,T2,T3,T4> CallbackType;
>
>  ...
> };
>
> I am trying to navigate from the CallbackTraceSource class, but no matter
> what I do I cannot make pygccxml give me the class_t corresponding to the
> typedef_t named 'CallbackType'.  I can only get a declarated_t or
> class_declaration_t, but I cannot find any way to get the corresponding
> class_t.  What am I missing?

Template instantiation. If you can modify the source code than use
'sizeof' operator:

>    typedef Callback<void,TraceContext const &,T1,T2,T3,T4> CallbackType;
private:
      enum{ CallbackTypeSize = sizeof( CallbackType ) };

Thanks, it really helped!

Best regards,

--
Gustavo J. A. M. Carneiro
INESC Porto, Telecommunications and Multimedia Unit
"The universe is always one step beyond logic." -- Frank Herbert