Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
User name:
Password:
Save Password
Forgot your password?

 All Forums
 Visual Assist
 Technical Support
 1430: Function signatures
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

PatLuja
Tomato Guru

Belgium
416 Posts

Posted - Nov 14 2005 :  03:03:47 AM  Show Profile  Reply with Quote
Hello all,

After a whole period with lots of deadlines, I'm back. I've installed build 1430 last week (on VS.Net2003 English on a Dutch Windows version). There are a few things that I've noticed, most of them are already mentioned by other people. There is one thing though that I didn't saw in the forum, exactly the way I see it; it's about Function signatures.

When I declare a function inside a class, like:
class CTest {
public:
  void TestFunction(const int a, const float b, const double c);
};
And I want to use TestFunction within some code, a little box pops-up with 2 function signatures, stating the following two signatures:
void TestFunction(const int a, const float b, const double c)
void CTest::TestFunction(const int a, const float b, const double c)
which are the same. Could one of these two (preferably the first) be left out?


Now we're talking about function signatures... There is one little thing with function signatures, which is in VA for a long time already. Maybe it is good to point this out again.
When I've stated the function definition as stated above, and I type something like:
TestFunction(1, 2.0f, 3.0, |)
The function signature box will generate something like:
void CTest::TestFunction(const int a, const float b, const double c, )
So there is a comma appended to the signature, because I've typed a comma after the last (the third) parameter. It is just a little thing.
Maybe this could be used to present the right function signature, without searching with the cursor keys. When a comma is typed, the best matching function signature (in terms of number of parameters and their type) would be presented, but only when the user hasn't searched yet (then the user would already have selected the best signature). This would be handy if there where more function signatures for a function.

I hope you could look into it. Thank you kindly in advance.

With kind regards,
Patrick Luja

feline
Whole Tomato Software

United Kingdom
18939 Posts

Posted - Nov 15 2005 :  6:04:37 PM  Show Profile  Reply with Quote
first point, what are you doing to get this? are you typing "testf", and looking at a listbox suggesting the function name you are trying to enter? or are you doing something else?

point 2, using VS 2003, C++ and VA 1432 i cannot reproduce this:


zen is the art of being at one with the two'ness
Go to Top of Page

PatLuja
Tomato Guru

Belgium
416 Posts

Posted - Nov 16 2005 :  08:37:36 AM  Show Profile  Reply with Quote
Hello feline,

I'm trying to catch an example for these two. I don't see the first one anymore, since I've installed build 1432, but I'll tell you when I see one (and I'll try to establish a pattern).

For the second, I just saw a nice example, which has a slightly different output, but I think it might be related.

I have the following function:
bool AppendSomething(const CSomethingStruct& something, const int id, const COLORREF colour = RGB(0, 0, 0), const int width = 0);
After typing
this->AppendSomething(
I append only comma's. This is what I see (first stating the number of typed comma's, bold what is displayed in bold, green what should be bold):
0: bool AppendSomething(const CSomethingStruct& something, const int id, const COLORREF colour = RGB(0, 0, 0), const int width = 0);
1: bool AppendSomething(const CSomethingStruct& something, const int id, const COLORREF colour = RGB(0, 0, 0), const int width = 0);
2: bool AppendSomething(const CSomethingStruct& something, const int id, const COLORREF colour = RGB(0, 0, 0), const int width = 0);
3: bool AppendSomething(const CSomethingStruct& something, const int id, const COLORREF colour = RGB(0, 0, 0), const int width = 0);
4: bool AppendSomething(const CSomethingStruct& something, const int id, const COLORREF colour = RGB(0, 0, 0), const int width = 0);
5: bool AppendSomething(const CSomethingStruct& something, const int id, const COLORREF colour = RGB(0, 0, 0), const int width = 0);
6: bool AppendSomething(const CSomethingStruct& something, const int id, const COLORREF colour = RGB(0, 0, 0 const int width = 0);
7: bool AppendSomething(const CSomethingStruct& something, const int id, const COLORREF colour = RGB(0, 0, 0), const int width = 0

Do you see the missing characters in with 6 and 7 comma's?
feline, could you please try to reproduce this?

Thank you.

With kind regards,
Patrick Luja
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18939 Posts

Posted - Nov 16 2005 :  5:17:53 PM  Show Profile  Reply with Quote
got it



case=475

zen is the art of being at one with the two'ness
Go to Top of Page

PatLuja
Tomato Guru

Belgium
416 Posts

Posted - Nov 17 2005 :  02:41:17 AM  Show Profile  Reply with Quote
Hello feline,

Thank you for reproducing this.
I hope this can be fixed.

I thought of a test case, to test this with the function declaration given. Could you ask the fine team of Whole Tomato to test these with the following four lines:
AppendSomething(something, id, colour, width);
AppendSomething(something, id, colour, width, );
AppendSomething(something, id, RGB(255, 255, 255), width);
AppendSomething(something, id, RGB(255, 255, 255), width, );
And ask them check just before and after every comma (including the comma's within the RGB macro).
I think this will cover most of the things I see.

Thank you kindly in advance.

With kind regards,
Patrick Luja
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18939 Posts

Posted - Nov 17 2005 :  4:07:00 PM  Show Profile  Reply with Quote
hopefully all of this is covered by the case. you can get the same problem with function pointer parameters. it seems that brackets in the parameter list confuse the code for bolding the current parameter.

zen is the art of being at one with the two'ness
Go to Top of Page

PatLuja
Tomato Guru

Belgium
416 Posts

Posted - Nov 18 2005 :  03:52:12 AM  Show Profile  Reply with Quote
Hello feline,

Today I've encountered the first problem I wrote about.

I've prepared a little compilation of screenshots which I'll send to WholeTomato to include here:


See what I mean? Can you reproduce this?

With kind regards,
Patrick Luja
Go to Top of Page

support
Whole Tomato Software

5566 Posts

Posted - Nov 18 2005 :  10:41:43 AM  Show Profile  Reply with Quote

Edited by - support on Nov 18 2005 10:42:01 AM
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18939 Posts

Posted - Nov 19 2005 :  3:02:08 PM  Show Profile  Reply with Quote
using the test code:

class CTest {
public:
void TestFunction(LPCRECT lpRect);
void TestFunction(int x1, int y1, int x2, int y2);
};

and a pointer to this class i only get the two expected parameter tooltips. i have never come across this in my production code either, and i often use function overloading.

how reproducible is this? does this only happen with this one class? if so then it is probably something about how the class or member function is declared or included. any clues on what this "oddity" might be will be gratefully received.

zen is the art of being at one with the two'ness
Go to Top of Page

PatLuja
Tomato Guru

Belgium
416 Posts

Posted - Nov 21 2005 :  03:09:41 AM  Show Profile  Reply with Quote
Hello feline,

It happens with a lot more classes than one. I tried rebuilding the database, but that didn't help. I just used the device context CDC, and I can reproduce it.

Maybe VAX picked the signature up at two places?

I'll try to reproduce it...
<...went to try...>
...yes I can reproduce it.

Shall I e-mail my the function to support?
Or can I provide some other information?

With kind regards,
Patrick Luja
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18939 Posts

Posted - Nov 21 2005 :  2:56:00 PM  Show Profile  Reply with Quote
got it now. i did not realise that CDC was a standard windows class, so i was not using it in my testing. trying alt_g on Rectangle() in the rather exciting code:

CDC *foo;
foo->Rectangle()

is giving me the two files "afxwin.h" and "afxwin1.inl", which seems to be why you are getting the double suggestions.

case=888

zen is the art of being at one with the two'ness
Go to Top of Page

PatLuja
Tomato Guru

Belgium
416 Posts

Posted - Nov 21 2005 :  5:21:20 PM  Show Profile  Reply with Quote
Hello feline,

It's lovely to have a buglet recognized/reproduced. Thank you for your efforts.

(BTW: I did see it with more classes and functions then only with CDC and Rectangle, but I couldn't establish a pattern just by the names of the classes.)

With kind regards,
Patrick Luja

Edited by - PatLuja on Nov 22 2005 02:35:27 AM
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
18939 Posts

Posted - Nov 22 2005 :  1:52:19 PM  Show Profile  Reply with Quote
if you find a class that has this problem can you try alt-g and see what you get? if you find an instance with no *.inl file then i would be interested in hearing about it, since it would show that my working theory is incomplete.

zen is the art of being at one with the two'ness
Go to Top of Page

support
Whole Tomato Software

5566 Posts

Posted - Jun 19 2006 :  5:21:53 PM  Show Profile  Reply with Quote
Fixed in build 1524:

Bolding within parameter info no longer confused by function pointers. (case=475)
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
© 2023 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000