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
 Feature Requests
 Expression templates
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

FitzyDog
Senior Member

25 Posts

Posted - Jan 20 2010 :  9:01:32 PM  Show Profile  Reply with Quote
I've noticed that visual assist fails to bring up any suggestions when using expression template based math librarys such as Eigen(eigen.tuxfamily.org/) or CML(www.cmldev.net/).

This will bring up nothing..

Matrix4d obj;
obj. <-- nothing shows up for suggestion

It seems able to find the actual members because if I do something like this

Matrix4d:: <-- this pops up all the members just fine

Any reason why the dot fails to bring up anything, and any chance VA could be made to better support more complex templates?

FitzyDog
Senior Member

25 Posts

Posted - Jan 21 2010 :  02:03:44 AM  Show Profile  Reply with Quote
Forgot to add, there were times when VAX would work, but it was sporadic, so in one cpp file I could use the . on Matrix4f and see suggestions, but on any other type and in any other cpp it would fail to work.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19014 Posts

Posted - Jan 26 2010 :  12:37:01 PM  Show Profile  Reply with Quote
Which library and which header file do I need to set up a test for the Matrix4d class? So far I am not seeing any obvious signs of this class being declared in either library.

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

FitzyDog
Senior Member

25 Posts

Posted - Jan 30 2010 :  5:28:55 PM  Show Profile  Reply with Quote
Oh sorry, the Matrix4d is from Eigen, to get access you need to do this...

#include <Eigen/Core>

// import most common Eigen types
USING_PART_OF_NAMESPACE_EIGEN

int main(int, char *[])
{
Matrix4d m;
}

Also since they don't have the .h on some of the files you have to tell visual studio & VA to treat them as C++

In Visual Studio go to

Tools -> Options -> Text Editor -> File Extensions

and check 'Map extensionless files to:' while setting the pull down menu choice on the right hand side to 'Microsoft Visual C++'.

And(though u prolly know this)

VAssistX -> Visual Assist X Options -> Projects -> File Handling

and check 'Parse files without extensions as headers'

Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19014 Posts

Posted - Feb 01 2010 :  1:04:15 PM  Show Profile  Reply with Quote
Do you know anything about how the code in this library is structured and works? I am starting to think I have missed a step.

Searching through the code, the closest I can come to a declaration of the class "Matrix4d" is the code in the two files:

C:\\eigen-2.0.11\\eigen\\Eigen\\Cholesky
C:\\eigen-2.0.11\\eigen\\Eigen\\QR

Looking at the QR file I find:

// declare all class for all types
#define EIGEN_QR_MODULE_INSTANTIATE(PREFIX) \  EIGEN_QR_MODULE_INSTANTIATE_TYPE(Matrix2f,PREFIX); \  EIGEN_QR_MODULE_INSTANTIATE_TYPE(Matrix2d,PREFIX); \  EIGEN_QR_MODULE_INSTANTIATE_TYPE(Matrix3f,PREFIX); \  EIGEN_QR_MODULE_INSTANTIATE_TYPE(Matrix3d,PREFIX); \  EIGEN_QR_MODULE_INSTANTIATE_TYPE(Matrix4f,PREFIX); \  EIGEN_QR_MODULE_INSTANTIATE_TYPE(Matrix4d,PREFIX); \\
  EIGEN_QR_MODULE_INSTANTIATE_TYPE(MatrixXf,PREFIX); \  EIGEN_QR_MODULE_INSTANTIATE_TYPE(MatrixXd,PREFIX); \  EIGEN_QR_MODULE_INSTANTIATE_TYPE(MatrixXcf,PREFIX); \  EIGEN_QR_MODULE_INSTANTIATE_TYPE(MatrixXcd,PREFIX)


and just above this, there is:

// declare all classes for a given matrix type
#define EIGEN_QR_MODULE_INSTANTIATE_TYPE(MATRIXTYPE,PREFIX) \  PREFIX template class QR<MATRIXTYPE>; \  PREFIX template class Tridiagonalization<MATRIXTYPE>; \  PREFIX template class HessenbergDecomposition<MATRIXTYPE>; \  PREFIX template class SelfAdjointEigenSolver<MATRIXTYPE>


now unless the library has used a macro to redefine the keyword "class" this macro is not creating a class with the name "MATRIXTYPE", which is "Matrix4d" for the class we are interested in. The "Cholesky" file is not looking any clearer.

Searching through the files in "C:\\eigen-2.0.11\\eigen\\test\\" has not helped. Nearly all references to "Matrix4d" seem to be function calls.

An instance of the type "Matrix4d" is created in the file:

C:\\eigen-2.0.11\\eigen\\test\\commainitializer.cpp

but it is never actually used as far as I can tell.

I am feeling quite confused.

I assume the problem is that VA cannot find where / how this class is declared, but so far, neither can I.

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

TCS
New Member

3 Posts

Posted - Jul 01 2010 :  05:00:35 AM  Show Profile  Reply with Quote
I'm quite interested in a solution for this problem too.
Appearantly Intellisense is able to find the declarations.

Eigen::Matrix3d m;
m. gives noting
m. (Str+Space) gives the correct list but this comes from IntelliSense

Strangely
Eigen::Matrix3d:: gives the correct list of all functions from VisualAssistX, so somewhere VAX has the information but isn't displaying them for some reason...
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19014 Posts

Posted - Jul 02 2010 :  10:13:45 AM  Show Profile  Reply with Quote
Can you send me a small test project that uses Eigen and compiles, that also shows this problem? A default console application with 3 lines of code will be fine. I am not sure I was configuring Eigen correctly last time I tried this. But looking at this page:

http://eigen.tuxfamily.org/dox/TutorialCore.html

based on the "Getting started" section there is nothing to compile in order to make the library operational.

Please submit the files via the form:

http://www.wholetomato.com/support/contact.asp

including this thread ID or URL in the description, so we can match it up.

zen is the art of being at one with the two'ness

Edited by - feline on Jul 02 2010 10:13:59 AM
Go to Top of Page

berwin
New Member

3 Posts

Posted - Nov 19 2010 :  10:11:20 AM  Show Profile  Reply with Quote
Has there been a solution for this? I have the same effect here (no suggestions shown)
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19014 Posts

Posted - Nov 19 2010 :  11:34:59 AM  Show Profile  Reply with Quote
Unfortunately no progress yet. Would you be able to send me a default console application that shows the problem, and that compiles? I was never able to make sense of the libraries last time I looked into this problem.

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

berwin
New Member

3 Posts

Posted - Nov 22 2010 :  04:51:02 AM  Show Profile  Reply with Quote
can be reproduced with this code

#include "stdafx.h"

#include <Eigen/Core>
#include <Eigen/Geometry>
using namespace Eigen;

int _tmain(int argc, _TCHAR* argv[])
{
Vector2f v;
v. //no visual assist results/suggestions on dot
return 0;
}

Vector2f:: //on ::_check_template_params all members are listed accuretely
Go to Top of Page

berwin
New Member

3 Posts

Posted - Nov 22 2010 :  04:52:21 AM  Show Profile  Reply with Quote
quote:
Originally posted by berwin



Vector2f:: //on ::_check_template_params all members are listed accuretely




Go to Top of Page

feline
Whole Tomato Software

United Kingdom
19014 Posts

Posted - Nov 22 2010 :  1:40:15 PM  Show Profile  Reply with Quote
Which IDE and version of Eigen are you using?

Using VS2008, VA 1837 and Eigen 2.0.11, which I already have downloaded and extracted, I have created a new C++ console solution.

After compiling the application the listboxes started to appear. Turning on:

VA Options -> Advanced -> Listboxes -> Get content from default Intellisense

causes a listbox to appear automatically when I type the dot after "v". If you turn this setting on, are you seeing the same result?

zen is the art of being at one with the two'ness
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