Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
 All Forums
 Visual Assist
 Technical Support
 1614: Move Implementation & IPP files

You must be registered to post a reply.
Click here to register.

Screensize:
UserName:
Password:
Format: BoldItalicizeUnderlineStrikethrough Align leftCenterAlign right Insert horizontal ruleUpload and insert imageInsert hyperlinkInsert email addressInsert codeInsert quoted textInsert listInsert Emoji
   
Message:

Forum code is on.
Html is off.

 
Check to subscribe to this topic.
   

T O P I C    R E V I E W
MrDoomMaster 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.
7   L A T E S T    R E P L I E S    (Newest First)
feline Posted - Nov 05 2007 : 08:09:46 AM
Try turning on:

VA Options -> Projects -> Extensions -> Parse files without extensions as headers

this should help.
tailsu 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 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.
hotzenplotz Posted - Nov 01 2007 : 11:46:58 PM
Usually you include the ipp file in the last line of your hpp file ;)
feline 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.
MrDoomMaster 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 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?

© 2023 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000