28 #ifndef _math_scmat_block_h
29 #define _math_scmat_block_h
35 #include <util/state/state.h>
63 virtual double *
dat();
64 virtual int ndat()
const;
94 return link != p.link;
96 void operator ++() { link = link->next(); }
97 void operator ++(
int) { link = link->next(); }
113 SCMatrixBlockList *deepcopy();
385 enum Access { Read, Write, Accum, None };
402 Access
access()
const {
return access_; }
455 int current_block()
const {
return iiter_; }
The base class for all reference counted objects.
Definition: ref.h:194
A template class that maintains references counts.
Definition: ref.h:332
The SCElementOp2 class is very similar to the SCElementOp class except that pairs of blocks are treat...
Definition: elemop.h:125
The SCElementOp3 class is very similar to the SCElementOp class except that a triplet of blocks is tr...
Definition: elemop.h:147
Objects of class SCElementOp are used to perform operations on the elements of matrices.
Definition: elemop.h:60
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
SCMatrixBlock is the base clase for all types of blocks that comprise matrices and vectors.
Definition: block.h:45
virtual SCMatrixBlock * deepcopy() const
Return of copy of this.
virtual double * dat()
Return a pointer to the block's data and the number of elements in the block.
void save_data_state(StateOut &s)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
int ready()
Returns nonzero if there is another block.
void next()
Proceed to the next block.
SCMatrixBlock * block()
Return the current block.
void begin()
Start at the beginning.
The SCMatrixDiagBlock describes a diagonal piece of a matrix.
Definition: block.h:322
double * dat()
Return a pointer to the block's data and the number of elements in the block.
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
SCMatrixBlock * deepcopy() const
Return of copy of this.
The SCMatrixDiagSubBlock describes a diagonal subblock of a matrix.
Definition: block.h:355
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
void begin()
Start at the beginning.
void next()
Proceed to the next block.
int ready()
Returns nonzero if there is another block.
SCMatrixBlock * block()
Return the current block.
The SCMatrixLTriBlock describes a triangular piece of a matrix.
Definition: block.h:257
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
double * dat()
Return a pointer to the block's data and the number of elements in the block.
SCMatrixBlock * deepcopy() const
Return of copy of this.
The SCMatrixLTriSubBlock describes a triangular subblock of a matrix.
Definition: block.h:292
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
int ready()
Returns nonzero if there is another block.
void begin()
Start at the beginning.
void next()
Proceed to the next block.
SCMatrixBlock * block()
Return the current block.
int ready()
Returns nonzero if there is another block.
SCMatrixBlock * block()
Return the current block.
void begin()
Start at the beginning.
void next()
Proceed to the next block.
The SCMatrixRectBlock describes a rectangular piece of a matrix.
Definition: block.h:187
SCMatrixBlock * deepcopy() const
Return of copy of this.
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
double * dat()
Return a pointer to the block's data and the number of elements in the block.
The SCMatrixRectSubBlock describes a rectangular piece of a matrix.
Definition: block.h:223
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
int ready()
Returns nonzero if there is another block.
SCMatrixBlock * block()
Return the current block.
void begin()
Start at the beginning.
void next()
Proceed to the next block.
Objects of class SCMatrixSubblockIter are used to iterate through the blocks of a matrix.
Definition: block.h:383
virtual SCMatrixBlock * block()=0
Return the current block.
Access access() const
Return the type of Access allowed for these blocks.
Definition: block.h:402
virtual void next()=0
Proceed to the next block.
virtual int ready()=0
Returns nonzero if there is another block.
virtual void begin()=0
Start at the beginning.
SCMatrixSubblockIter(Access access)
The access variable should be one of Read, Write, Accum, and None, with the SCMatrixSubblockIter:: sc...
Definition: block.h:391
The SCVectorSimpleBlock describes a piece of a vector.
Definition: block.h:127
double * dat()
Return a pointer to the block's data and the number of elements in the block.
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
SCMatrixBlock * deepcopy() const
Return of copy of this.
The SCVectorSimpleSubBlock describes a subblock of a vector.
Definition: block.h:158
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
Base class for objects that can save/restore state.
Definition: state.h:46
Restores objects that derive from SavableState.
Definition: statein.h:70
Serializes objects that derive from SavableState.
Definition: stateout.h:61