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
 Is there a max # of symbols that can be parsed?
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

tcatelotti
New Member

9 Posts

Posted - Aug 05 2005 :  3:32:04 PM  Show Profile  Reply with Quote
I have a large .h file that appears to stop being parsed in VAX at about the 7669th line of code. The file is over 14000 lines of code. There are many different classes defined in the file. I was wondering if this is proper behavior, and if anything can be done to increase the number of symbols parsed?

Thanks,
Todd

VA_X.dll file version 10.1.1301.0
Licensed to:
VA X: [email protected] (25-user license) Support ends 2005.06.08
VAOpsWin.dll version 1.2.0.4
MSDev.exe version 6.0.9782.1
Devshl.dll version 6.0.9782.0
Devedit.pkg version 6.0.9782.0
Font: Courier -13(Pixels)
Comctl32.dll version 5.82.2900.2180
WindowsNT 5.1 Build 2600 Service Pack 2
Single processor

Platform: Custom
Stable Includes:
C:\\Program Files\\Microsoft Visual Studio\\VC98\\INCLUDE;
C:\\Program Files\\Microsoft Visual Studio\\VC98\\MFC\\INCLUDE;
C:\\Program Files\\Microsoft Visual Studio\\VC98\\ATL\\INCLUDE;

Library Includes:
C:\\Program Files\\Microsoft Visual Studio\\VC98\\MFC\\SRC;
C:\\Program Files\\Microsoft Visual Studio\\VC98\\MFC\\INCLUDE;
C:\\Program Files\\Microsoft Visual Studio\\VC98\\ATL\\INCLUDE;
C:\\Program Files\\Microsoft Visual Studio\\VC98\\CRT\\SRC;

Other Includes:


support
Whole Tomato Software

5566 Posts

Posted - Aug 07 2005 :  10:48:07 AM  Show Profile  Reply with Quote
There should not be a limit.

Any chance you could zip and send us the file with the problem? We agree not to use your code for anything but debugging of this problem.

The problem might be specific to a statement(s) in the file that stops our parser. Perhaps you can isolate the code that is making this happen.
Go to Top of Page

tcatelotti
New Member

9 Posts

Posted - Aug 09 2005 :  11:37:53 AM  Show Profile  Reply with Quote
Of course, I'm not allowed to send you the file.

I can tell you that there is alot going on in that file. It is auto-generated code, and many (several hundred) classes are declared. In addition, after talking with some coworkers that are more familiar with these files, they mentioned that the .cpp definition file that corresponds to this .h file is split over 3 .cpp files. I'm not sure if that plays a part in the problem. It seems that the parsing stops near the end (line ~17000 of ~20000+) of the first .cpp, but not at the end.

I have not had any time to try to reproduce this in an isolated way. I'll try to get back to you when/if I do...

Thanks for the response
Go to Top of Page

sean
Whole Tomato Software

USA
2817 Posts

Posted - Aug 12 2005 :  7:11:42 PM  Show Profile  Reply with Quote
What are the symptoms you are experiencing? Do the context and definition windows just stop working after a certain point in the files? Does coloring stop working after a certain point?
Go to Top of Page

tcatelotti
New Member

9 Posts

Posted - Aug 16 2005 :  10:19:10 AM  Show Profile  Reply with Quote
The symptoms that I'm seeing are: all the symbols in the file are properly processed up to a certain line. After that, any new class names are all in the default color (black), with no ability to Alt-G to the class definition. The declaration of each class seems to be properly colored except for class name level symbols.

In the rest of my code, when I use class names from the first half of the file, everything works as normal. When I use class names from the second half of the file, the class names are not properly colored, and they are red wavy underlined as misspelled.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19021 Posts

Posted - Aug 16 2005 :  4:55:20 PM  Show Profile  Reply with Quote
if you insert blank lines into the code that is properly coloured does the colouring move down the file? or does it stay in place, and code loose its enhanced colouring?

is this boundary between classes, or in the middle of a class?

could you try manually swapping around the last class VAX colours and the first class that is not coloured? it could be something about this last coloured class that is confusing VAX.

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

tcatelotti
New Member

9 Posts

Posted - Aug 16 2005 :  5:42:25 PM  Show Profile  Reply with Quote
quote:
Originally posted by feline

if you insert blank lines into the code that is properly coloured does the colouring move down the file? or does it stay in place, and code loose its enhanced colouring?



I inserted ~5000 blank lines - no change in coloring, I also checked after clearing history and rebuilding symbol databases, and restarted VC++. no change

quote:

is this boundary between classes, or in the middle of a class?


This occurs on the boundary between classes.

quote:

could you try manually swapping around the last class VAX colours and the first class that is not coloured? it could be something about this last coloured class that is confusing VAX.



I switched the classes on the coloring breakpoint, and after clearing history and rebuilding symbol databases, and restarting VC++, the following is what I got

Original positions:
class a...(Colored), class b...(Not Colored)

--> (move classes, save file, clear history and rebuild symbol databases, and restart VC++)

New positions:
class b...(Colored), class a...(Not Colored))

Essentially, no change.
Hope this helps.



Go to Top of Page

tcatelotti
New Member

9 Posts

Posted - Aug 16 2005 :  5:54:54 PM  Show Profile  Reply with Quote
Some additional info:

There are 52 classes defined in the file, 61 "typedef struct"s in the file, and 1389 "#define"s in the file. Most of the "#define"s are just declaring constant values, e.g.:


#define idd_myEnum_TENTATIVE_VALUE (28)


Thanks for the continuing help.
Go to Top of Page

sean
Whole Tomato Software

USA
2817 Posts

Posted - Aug 17 2005 :  02:24:05 AM  Show Profile  Reply with Quote
quote:
Originally posted by tcatelotti

In the rest of my code, when I use class names from the first half of the file, everything works as normal. When I use class names from the second half of the file, the class names are not properly colored, and they are red wavy underlined as misspelled.



If you put the caret in one of those class names that is underlined, what does the top left VA window show (what does the context field say about the classname)?
Go to Top of Page

tcatelotti
New Member

9 Posts

Posted - Aug 17 2005 :  10:11:59 AM  Show Profile  Reply with Quote
If I put the caret on one of the underlined class names, the context field is empty.
Go to Top of Page

sean
Whole Tomato Software

USA
2817 Posts

Posted - Aug 17 2005 :  1:34:04 PM  Show Profile  Reply with Quote
If you put the caret in whitespace inside of struct or class definitions, the context window should display the struct or class name. Does that also break where the coloring ends? Is there anything strange displayed in the context window prior to where it stops working?

MsHTML.h is a header that gets installed with the IDE. It is over 60000 lines long. Try opening it and see if you have the same problems with it.
Go to Top of Page

tcatelotti
New Member

9 Posts

Posted - Aug 17 2005 :  2:19:34 PM  Show Profile  Reply with Quote
If I put the caret in the whitespace inside of the struct or class definitions, the context window looks normal in both the properly colored part AND in the part where the coloring stops. To clarify, the coloring is working on the contents of the class definitions in the non colored section, but only on the members and methods of the class, not the class name itself.
The context window appears normal when the caret is in whitespace, but if I open the context dropdown, only the properly colored class names are shown in the dropdown list.

Also, if I use the "Next Method/Scope in file" (Alt+Down) I get some strange results, for the first half of the file it works normally on classes, jumping from one class to the next, but when it reaches the last class that is properly colored it then jumps to a spot in the middle of a class that is about 1500 lines further into the file, skipping several non-colored class definitions. As a matter of fact, if I place the cursor anywhere in the non-colored part and do a Alt-Down, it jumps to the exact same line even if I start further "down" the file. If I do a Alt-Up from anywhere in the non-colored part, it jumps to the last properly colored class.

MsHTML.h appears totally normal when I open it up.

Go to Top of Page

WannabeeDeveloper
Tomato Guru

Germany
775 Posts

Posted - Aug 17 2005 :  6:17:42 PM  Show Profile  Reply with Quote
Is there any chance Whole Tomato could get its hands upon this header-file?

No problem if you're not allowed to give it to us, just asking if we could have it for debugging purpose only...
If so, please mail it to [email protected]



Edited by - WannabeeDeveloper on Aug 17 2005 6:18:08 PM
Go to Top of Page

tcatelotti
New Member

9 Posts

Posted - Aug 17 2005 :  7:02:17 PM  Show Profile  Reply with Quote
Sorry, I'm not allowed to send you the file.

I am hoping to be able to duplicate the file removing any proprietary info, and see if I can recreate the problem. If/when I get a chance to do that, I will forward the file on to you.

My other thought on the problem is that it probably relates to some complex macro expansions that are also in the file.

Thanks again

Go to Top of Page

tcatelotti
New Member

9 Posts

Posted - Aug 17 2005 :  7:39:21 PM  Show Profile  Reply with Quote


Okay, I think I found something. The following code snippet is in the file many times. Once for each class/struct, they appear just before each class/struct. When I remove one from the file, the next uncolored class becomes properly colored!


#ifdef __cplusplus
extern "C" {
#endif
extern IDDDLL_API const char *idd_AClassNameTYPENAME;

#ifdef __cplusplus
}
#endif



The
IDDDLL_API
macro is defined as below:


#if defined(IDDDLL_EXPORTS) || defined(IDDDLL_IMPORTS)
  #if defined(IDDDLL_EXPORTS)
    #define IDDDLL_API __declspec(dllexport)
  #else
    #define IDDDLL_API __declspec(dllimport)
  #endif
#else
  #define IDDDLL_API
#endif


Any thoughts?
Go to Top of Page

sean
Whole Tomato Software

USA
2817 Posts

Posted - Aug 17 2005 :  8:34:32 PM  Show Profile  Reply with Quote
#ifdef __cplusplus
extern "C" {
#endif
extern IDDDLL_API const char *idd_TestClass2TYPENAME;

#ifdef __cplusplus
}
#endif

class TestClass2
{
TestClass2() {}
~TestClass2() {}
};



Nice work. If I repeat this sequence 38 times something funny starts to happen.
case=717
Go to Top of Page

sean
Whole Tomato Software

USA
2817 Posts

Posted - Jun 07 2006 :  4:32:28 PM  Show Profile  Reply with Quote
As Todd noticed, case 717 was eventually fixed but we didn't update the forum. Sorry Todd.
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