Author |
Topic |
|
MrDoomMaster
Tomato Guru
251 Posts |
Posted - Oct 29 2007 : 1:49:41 PM
|
IDE: Visual Studio 2005
Assume the following two files:
foo.h foo.ipp
In foo.h, I have the following code:
#ifndef FOO_H
#define FOO_H
template< typename T >
class foo
{
public:
void SomeMember()
{
// Do stuff
}
};
#include "foo.ipp"
#endif // FOO_H
Now assume that the IPP is empty. When you right click on member SomeMember(), the refactoring option "Move implementation to source file" is unavailable. If you rename foo.ipp to foo.cpp, it becomes available.
Expected behavior: "Move Implementation" refactoring option should recognize IPP files as source files and thus be available. |
|
feline
Whole Tomato Software
United Kingdom
19021 Posts |
Posted - Oct 29 2007 : 3:03:33 PM
|
Why should Move Implementation to Source File recognise a IPP file? Alt-o does not recognise an IPP file, and I am not getting any syntax highlighting, no context and no definition field either in this file. As far as the IDE and VA are concerned, this is not a code file.
Have you modified your registry to make this a known code file? |
zen is the art of being at one with the two'ness |
|
|
MrDoomMaster
Tomato Guru
251 Posts |
Posted - Oct 29 2007 : 4:19:07 PM
|
quote: Originally posted by feline
Why should Move Implementation to Source File recognise a IPP file? Alt-o does not recognise an IPP file, and I am not getting any syntax highlighting, no context and no definition field either in this file. As far as the IDE and VA are concerned, this is not a code file.
Have you modified your registry to make this a known code file?
I have not modified my registry. I didn't modify anything to make this work, it just works. Alt+O works (it takes me from the H file to the IPP file) and syntax highlighting works too. As far as I'm concerned, every part of VAX treats IPP as a file with C++ source in it except for "Move Implementation". "Create Implementation" also does not recognize it, as it creates the implementation for template classes in the same H file and not in the IPP (However this is an off topic issue). |
|
|
feline
Whole Tomato Software
United Kingdom
19021 Posts |
Posted - Oct 29 2007 : 6:06:55 PM
|
*puzzled*
Can you download this C++ console project, and see what you see when you open it please?
http://forum.wholetomato.com/colin/forumimages/ipp_files.zip
This contains a .H and .IPP pair of files. The IPP file contains invalid C++ code, includes a header file that does not exist, and the project compiles perfectly on my machine.
As far as the IDE and VA are concerned the IPP file is a plane TXT file.
Create Implementation placing implementations for template class member functions into the header file is by design, since you need to #include the implementation for the code to compile. So it is either place the implementation into the header file, or #include the cpp file. |
zen is the art of being at one with the two'ness |
|
|
hotzenplotz
Senior Member
Austria
34 Posts |
Posted - Nov 01 2007 : 11:46:58 PM
|
Usually you include the ipp file in the last line of your hpp file ;)
|
Use the source, Luke!
|
|
|
feline
Whole Tomato Software
United Kingdom
19021 Posts |
Posted - Nov 02 2007 : 09:05:07 AM
|
That would solve the "how do I include this" problem, but it isn't going to help much with the fact that both the IDE and VA believe that IPP files are really TXT files in disguise - well that's what they believe on my system anyway.
I know I can add custom C++ extensions, there is an FAQ for this, but by default my system does not know about IPP files. |
zen is the art of being at one with the two'ness |
|
|
tailsu
Senior Member
37 Posts |
Posted - Nov 05 2007 : 03:35:45 AM
|
IPP stands for implementation++. Some boost libraries use them. Even though the IDE doesn't highlight them, the debugger is able to step through them. They're kind of a pain in the neck.
There is another problem with extensionless files. For example the vector header is highlighted just because it's in the system include paths. We have extensionless headers that aren't there (namely the google hash set library). VA X is having hard time parsing them. It doesn't even show them in the #include listbox. |
|
|
feline
Whole Tomato Software
United Kingdom
19021 Posts |
Posted - Nov 05 2007 : 08:09:46 AM
|
Try turning on:
VA Options -> Projects -> Extensions -> Parse files without extensions as headers
this should help. |
zen is the art of being at one with the two'ness |
|
|
|
Topic |
|