On 07/15/2010 01:00 PM, Joe Rumsey wrote:
>
> On Thu, Jul 15, 2010 at 5:03 AM,
> <cedet-devel-request@...
> <mailto:cedet-devel-request@...>> wrote:
>
> I am working on a C++ project which has a way of defining method
> functions
> in certain classes using macros for the function declaration. CEDET
> seems
> unable to entirely figure out the class context inside the bodies of
> these
> functions. I have included a test case that reproduces the problem
> below,
> the actual usage is much more complex, and I wasn't sure it wasn't just
> having problems finding the proper symbol definitions until I wrote this
> self-contained test case. In the sample included, inside of
> HANDLER(Test),
> CEDET will not properly tag m_testVar as a member of MyClass, though
> it will
> figure out that OtherFunction() is a method of MyClass. I get the same
> result if HANDLER() is defined as void MyClass::x##Handler(), so it
> seems
> it's not (just) the double macro expansion causing trouble.
>
>
> I just tested this again with CEDET from CVS, and it works fine for
> both my test case and the real project I'm working with. So, problem
> solved, I'll happily use the CVS version! I had had the same problem
> previously with 1.0pre7 and emacs 23.1, but I hadn't thought to try it
> from CVS until now. Thanks for bringing us this package, keep up the
> good work!
I'm glad you found the fix in CVS. I wasn't looking forward to
debugging the C preprocessor in Semantic again. ;)
Eric

Thread view

On Thu, Jul 15, 2010 at 5:03 AM,
<cedet-devel-request@...>wrote:
> I am working on a C++ project which has a way of defining method functions
> in certain classes using macros for the function declaration. CEDET seems
> unable to entirely figure out the class context inside the bodies of these
> functions. I have included a test case that reproduces the problem below,
> the actual usage is much more complex, and I wasn't sure it wasn't just
> having problems finding the proper symbol definitions until I wrote this
> self-contained test case. In the sample included, inside of HANDLER(Test),
> CEDET will not properly tag m_testVar as a member of MyClass, though it
> will
> figure out that OtherFunction() is a method of MyClass. I get the same
> result if HANDLER() is defined as void MyClass::x##Handler(), so it seems
> it's not (just) the double macro expansion causing trouble.
>
>
I just tested this again with CEDET from CVS, and it works fine for both my
test case and the real project I'm working with. So, problem solved, I'll
happily use the CVS version! I had had the same problem previously with
1.0pre7 and emacs 23.1, but I hadn't thought to try it from CVS until now.
Thanks for bringing us this package, keep up the good work!

On 07/15/2010 01:00 PM, Joe Rumsey wrote:
>
> On Thu, Jul 15, 2010 at 5:03 AM,
> <cedet-devel-request@...
> <mailto:cedet-devel-request@...>> wrote:
>
> I am working on a C++ project which has a way of defining method
> functions
> in certain classes using macros for the function declaration. CEDET
> seems
> unable to entirely figure out the class context inside the bodies of
> these
> functions. I have included a test case that reproduces the problem
> below,
> the actual usage is much more complex, and I wasn't sure it wasn't just
> having problems finding the proper symbol definitions until I wrote this
> self-contained test case. In the sample included, inside of
> HANDLER(Test),
> CEDET will not properly tag m_testVar as a member of MyClass, though
> it will
> figure out that OtherFunction() is a method of MyClass. I get the same
> result if HANDLER() is defined as void MyClass::x##Handler(), so it
> seems
> it's not (just) the double macro expansion causing trouble.
>
>
> I just tested this again with CEDET from CVS, and it works fine for
> both my test case and the real project I'm working with. So, problem
> solved, I'll happily use the CVS version! I had had the same problem
> previously with 1.0pre7 and emacs 23.1, but I hadn't thought to try it
> from CVS until now. Thanks for bringing us this package, keep up the
> good work!
I'm glad you found the fix in CVS. I wasn't looking forward to
debugging the C preprocessor in Semantic again. ;)
Eric