T O P I C R E V I E W |
tcatelotti |
Posted - Aug 05 2005 : 3:32:04 PM 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:
|
16 L A T E S T R E P L I E S (Newest First) |
sean |
Posted - Jun 07 2006 : 4:32:28 PM As Todd noticed, case 717 was eventually fixed but we didn't update the forum. Sorry Todd. |
sean |
Posted - Aug 17 2005 : 8:34:32 PM #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
|
tcatelotti |
Posted - Aug 17 2005 : 7:39:21 PM
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? |
tcatelotti |
Posted - Aug 17 2005 : 7:02:17 PM 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
|
WannabeeDeveloper |
Posted - Aug 17 2005 : 6:17:42 PM 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]
|
tcatelotti |
Posted - Aug 17 2005 : 2:19:34 PM 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.
|
sean |
Posted - Aug 17 2005 : 1:34:04 PM 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.
|
tcatelotti |
Posted - Aug 17 2005 : 10:11:59 AM If I put the caret on one of the underlined class names, the context field is empty. |
sean |
Posted - Aug 17 2005 : 02:24:05 AM 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)? |
tcatelotti |
Posted - Aug 16 2005 : 5:54:54 PM 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. |
tcatelotti |
Posted - Aug 16 2005 : 5:42:25 PM 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.
|
feline |
Posted - Aug 16 2005 : 4:55:20 PM 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. |
tcatelotti |
Posted - Aug 16 2005 : 10:19:10 AM 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. |
sean |
Posted - Aug 12 2005 : 7:11:42 PM 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? |
tcatelotti |
Posted - Aug 09 2005 : 11:37:53 AM 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 |
support |
Posted - Aug 07 2005 : 10:48:07 AM 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. |