Re: [eigen] Forward declarations

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


look at the file Eigen/src/Core/util/ForwardDeclarations.h, here is
how it is declared:

template<typename _Scalar, int _Rows, int _Cols,
         int _Options = AutoAlign |
#if defined(__GNUC__) && __GNUC__==3 && __GNUC_MINOR__==4
    // workaround a bug in at least gcc 3.4.6
    // the innermost ?: ternary operator is misparsed. We write it slightly
    // differently and this makes gcc 3.4.6 happy, but it's ugly.
    // The error would only show up with EIGEN_DEFAULT_TO_ROW_MAJOR is defined
    // (when EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION is RowMajor)
                          ( (_Rows==1 && _Cols!=1) ? RowMajor
                          : !(_Cols==1 && _Rows!=1) ?
EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION
                          : ColMajor ),
#else
                          ( (_Rows==1 && _Cols!=1) ? RowMajor
                          : (_Cols==1 && _Rows!=1) ? ColMajor
                          : EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION ),
#endif
         int _MaxRows = _Rows,
         int _MaxCols = _Cols
> class Matrix;

gael

On Tue, Jul 19, 2011 at 5:08 PM, David Lonie <loniedavid@xxxxxxxxx> wrote:
> Hi Gael,
>
> On Tue, Jul 19, 2011 at 3:21 AM, Gael Guennebaud
> <gael.guennebaud@xxxxxxxxx> wrote:
>> Hi,
>>
>> that's not so easy because I see that OpenQube headers typically
>> contains functions returning Eigen::Vector3d objects by value or
>> classes having Eigen's objects as members. That means the compiler has
>> to know what is, e.g., a Eigen::Vector3d so I'm afraid simple forward
>> declarations won't help.
>
> The OpenQube library is still fairly new, and I may be able to rewrite
> the API to work around those issues -- at this point, I'm just trying
> to gather information to figure out how to best handle this. My
> options right now are (a) Forward declare Eigen classes (and rewrite
> OpenQube API appropriately), (b) Remove Eigen from OpenQube's API
> altogether, or (c) Make Eigen an optional dependency of VTK.
>
> (b) would lose some flexibility and be a decent bit of work, and (c)
> may be difficult, while (a), if possible, would be the best solution
> that I can see.
>
> Is it possible to forward declare the Eigen::Matrix class? This would
> be useful for a few other projects I'm working on as well ;-)
>
>> Gael
>>
>> On Mon, Jul 18, 2011 at 4:09 PM, David Lonie <loniedavid@xxxxxxxxx> wrote:
>>> Hi List,
>>>
>>> I'm currently integrating a library that uses Eigen vectors/matrices
>>> in its API into VTK, and I have a quick question: Is it possible to
>>> forward-declare Eigen::Matrix? The library (OpenQube
>>> http://github.com/cryos/openqube) currently includes Eigen/Core in
>>> it's headers, but I'd like to replace these includes with forward
>>> declarations so that I wouldn't have to add Eigen as a dependency for
>>> VTK.
>>>
>>> I've tried doing this myself, but it looks like the last three
>>> template arguments are dependent on compiler options. Is there a trick
>>> to forward declaring this class?
>>>
>>> Thanks,
>>>
>>> Dave
>>>
>>>
>>>
>>
>>
>>
>
>
>



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/