flags

Variables

const unsigned int AlignedBit = 0x40
const unsigned int DirectAccessBit = 0x20
const unsigned int EvalBeforeAssigningBit = 0x4
const unsigned int EvalBeforeNestingBit = 0x2
const unsigned int LinearAccessBit = 0x10
const unsigned int LowerTriangularBit = 0x800
const unsigned int PacketAccessBit = 0x8
const unsigned int RowMajorBit = 0x1
const unsigned int SelfAdjointBit = 0x200
const unsigned int SparseBit = 0x1000
const unsigned int UnitDiagBit = 0x100
const unsigned int UpperTriangularBit = 0x400
const unsigned int ZeroDiagBit = 0x80

Detailed Description

These are the possible bits which can be OR'ed to constitute the flags of a matrix or expression.

It is important to note that these flags are a purely compile-time notion. They are a compile-time property of an expression type, implemented as enum's. They are not stored in memory at runtime, and they do not incur any runtime overhead.

See also:
MatrixBase::Flags

Variable Documentation

const unsigned int AlignedBit = 0x40

means the first coefficient packet is guaranteed to be aligned

Definition at line 149 of file Constants.h.

const unsigned int DirectAccessBit = 0x20

Means that the underlying array of coefficients can be directly accessed. This means two things. First, references to the coefficients must be available through coeffRef(int, int). This rules out read-only expressions whose coefficients are computed on demand by coeff(int, int). Second, the memory layout of the array of coefficients must be exactly the natural one suggested by rows(), cols(), stride(), and the RowMajorBit. This rules out expressions such as DiagonalCoeffs, whose coefficients, though referencable, do not have such a regular memory layout.

Definition at line 144 of file Constants.h.

const unsigned int EvalBeforeAssigningBit = 0x4

means the expression should be evaluated before any assignement

Definition at line 79 of file Constants.h.

const unsigned int EvalBeforeNestingBit = 0x2

means the expression should be evaluated by the calling expression

Definition at line 74 of file Constants.h.

const unsigned int LinearAccessBit = 0x10

Short version: means the expression can be seen as 1D vector.

Long version: means that one can access the coefficients of this expression by coeff(int), and coeffRef(int) in the case of a lvalue expression. These index-based access methods are guaranteed to not have to do any runtime computation of a (row, col)-pair from the index, so that it is guaranteed that whenever it is available, index-based access is at least as fast as (row,col)-based access. Expressions for which that isn't possible don't have the LinearAccessBit.

If both PacketAccessBit and LinearAccessBit are set, then the packets of this expression can be accessed by packet(int), and writePacket(int) in the case of a lvalue expression.

Typically, all vector expressions have the LinearAccessBit, but there is one exception: Product expressions don't have it, because it would be troublesome for vectorization, even when the Product is a vector expression. Thus, vector Product expressions allow index-based coefficient access but not index-based packet access, so they don't have the LinearAccessBit.

Definition at line 133 of file Constants.h.

const unsigned int LowerTriangularBit = 0x800

means the strictly upper triangular part is 0

Definition at line 174 of file Constants.h.

const unsigned int PacketAccessBit = 0x8

Short version: means the expression might be vectorized

Long version: means that the coefficients can be handled by packets and start at a memory location whose alignment meets the requirements of the present CPU architecture for optimized packet access. In the fixed-size case, there is the additional condition that the total size of the coefficients array is a multiple of the packet size, so that it is possible to access all the coefficients by packets. In the dynamic-size case, there is no such condition on the total size, so it might not be possible to access the few last coeffs by packets.

Note:
This bit can be set regardless of whether vectorization is actually enabled. To check for actual vectorizability, see ActualPacketAccessBit.

Definition at line 97 of file Constants.h.

const unsigned int RowMajorBit = 0x1

for a matrix, this means that the storage order is row-major. If this bit is not set, the storage order is column-major. For an expression, this determines the storage order of the matrix created by evaluation of that expression.

Definition at line 69 of file Constants.h.

const unsigned int SelfAdjointBit = 0x200

means the matrix is selfadjoint (M=M*).

Definition at line 164 of file Constants.h.

const unsigned int SparseBit = 0x1000

means the expression includes sparse matrices and the sparse path has to be taken.

Definition at line 179 of file Constants.h.

const unsigned int UnitDiagBit = 0x100

means all diagonal coefficients are equal to 1

Definition at line 159 of file Constants.h.

const unsigned int UpperTriangularBit = 0x400

means the strictly lower triangular part is 0

Definition at line 169 of file Constants.h.

const unsigned int ZeroDiagBit = 0x80

means all diagonal coefficients are equal to 0

Definition at line 154 of file Constants.h.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines


vcglib
Author(s): Christian Bersch
autogenerated on Fri Jan 11 09:21:29 2013