// This file is part of Eigen, a lightweight C++ template library // for linear algebra. // // Copyright (C) 2007-2010 Benoit Jacob // Copyright (C) 2008-2009 Gael Guennebaud // // Eigen is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 3 of the License, or (at your option) any later version. // // Alternatively, you can redistribute it and/or // modify it under the terms of the GNU General Public License as // published by the Free Software Foundation; either version 2 of // the License, or (at your option) any later version. // // Eigen is distributed in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the // GNU General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License and a copy of the GNU General Public License along with // Eigen. If not, see . #ifndef EIGEN_FORWARDDECLARATIONS_H #define EIGEN_FORWARDDECLARATIONS_H template struct ei_traits; template struct NumTraits; template struct ei_has_direct_access { enum { ret = (ei_traits::Flags & DirectAccessBit) ? 1 : 0 }; }; template struct EigenBase; template class DenseBase; template::Flags & DirectAccessBit) ? DirectAccessors : (ei_traits::Flags & LvalueBit) ? WriteAccessors : ReadOnlyAccessors> class DenseCoeffsBase; template class Matrix; template class MatrixBase; template class ArrayBase; template class Flagged; template class StorageBase > class NoAlias; template class NestByValue; template class ForceAlignedAccess; template class SwapWrapper; template::ret> class Block; template class VectorBlock; template class Transpose; template class Conjugate; template class CwiseNullaryOp; template class CwiseUnaryOp; template class CwiseUnaryView; template class CwiseBinaryOp; template class SelfCwiseBinaryOp; template class ProductBase; template class GeneralProduct; template class CoeffBasedProduct; template class DiagonalBase; template class DiagonalWrapper; template class DiagonalMatrix; template class DiagonalProduct; template class Diagonal; template class PermutationMatrix; template class Transpositions; template class Stride; template > class Map; template class TriangularBase; template class TriangularView; template class SelfAdjointView; template class SparseView; template class WithFormat; template struct CommaInitializer; template class ReturnByValue; template class ArrayWrapper; template struct ei_solve_retval_base; template struct ei_solve_retval; template struct ei_kernel_retval_base; template struct ei_kernel_retval; template struct ei_image_retval_base; template struct ei_image_retval; template class BandMatrix; template struct ei_product_type; template::value> struct ProductReturnType; // Provides scalar/packet-wise product and product with accumulation // with optional conjugation of the arguments. template struct ei_conj_helper; template struct ei_scalar_sum_op; template struct ei_scalar_difference_op; template struct ei_scalar_conj_product_op; template struct ei_scalar_quotient_op; template struct ei_scalar_opposite_op; template struct ei_scalar_conjugate_op; template struct ei_scalar_real_op; template struct ei_scalar_imag_op; template struct ei_scalar_abs_op; template struct ei_scalar_abs2_op; template struct ei_scalar_sqrt_op; template struct ei_scalar_exp_op; template struct ei_scalar_log_op; template struct ei_scalar_cos_op; template struct ei_scalar_sin_op; template struct ei_scalar_pow_op; template struct ei_scalar_inverse_op; template struct ei_scalar_square_op; template struct ei_scalar_cube_op; template struct ei_scalar_cast_op; template struct ei_scalar_multiple_op; template struct ei_scalar_quotient1_op; template struct ei_scalar_min_op; template struct ei_scalar_max_op; template struct ei_scalar_random_op; template struct ei_scalar_add_op; template struct ei_scalar_constant_op; template struct ei_scalar_identity_op; template struct ei_scalar_product_op; template struct ei_scalar_multiple2_op; struct IOFormat; // Array module template class Array; template class Select; template class PartialReduxExpr; template class VectorwiseOp; template class Replicate; template class Reverse; template class FullPivLU; template class PartialPivLU; template struct ei_inverse_impl; template class HouseholderQR; template class ColPivHouseholderQR; template class FullPivHouseholderQR; template class SVD; template class JacobiSVD; template class LLT; template class LDLT; template class HouseholderSequence; template class PlanarRotation; // Geometry module: template class RotationBase; template class Cross; template class QuaternionBase; template class Quaternion; template class Rotation2D; template class AngleAxis; template class Transform; template class ParametrizedLine; template class Hyperplane; template class Translation; template class UniformScaling; template class Homogeneous; // MatrixFunctions module template struct MatrixExponentialReturnValue; template class MatrixFunctionReturnValue; template struct ei_stem_function { typedef std::complex::Real> ComplexScalar; typedef ComplexScalar type(ComplexScalar, int); }; #ifdef EIGEN2_SUPPORT template class Cwise; template class Minor; #endif #endif // EIGEN_FORWARDDECLARATIONS_H