Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
 All Forums
 Visual Assist
 Feature Requests
 Expression templates

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
FitzyDog Posted - Jan 20 2010 : 9:01:32 PM
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?
11   L A T E S T    R E P L I E S    (Newest First)
feline Posted - Nov 22 2010 : 1:40:15 PM
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?
berwin Posted - Nov 22 2010 : 04:52:21 AM
quote:
Originally posted by berwin



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




berwin Posted - Nov 22 2010 : 04:51:02 AM
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
feline Posted - Nov 19 2010 : 11:34:59 AM
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.
berwin Posted - Nov 19 2010 : 10:11:20 AM
Has there been a solution for this? I have the same effect here (no suggestions shown)
feline Posted - Jul 02 2010 : 10:13:45 AM
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.
TCS Posted - Jul 01 2010 : 05:00:35 AM
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...
feline Posted - Feb 01 2010 : 1:04:15 PM
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.
FitzyDog Posted - Jan 30 2010 : 5:28:55 PM
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'

feline Posted - Jan 26 2010 : 12:37:01 PM
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.
FitzyDog Posted - Jan 21 2010 : 02:03:44 AM
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.

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