28#ifndef _math_scmat_block_h
29#define _math_scmat_block_h
31#include <util/state/state.h>
59 virtual double *
dat();
60 virtual int ndat()
const;
90 return link != p.link;
92 void operator ++() { link = link->next(); }
93 void operator ++(
int) { link = link->next(); }
109 SCMatrixBlockList *deepcopy();
381 enum Access { Read, Write, Accum, None };
398 Access
access()
const {
return access_; }
451 int current_block()
const {
return iiter_; }
The base class for all reference counted objects.
Definition ref.h:192
A template class that maintains references counts.
Definition ref.h:361
The SCElementOp2 class is very similar to the SCElementOp class except that pairs of blocks are treat...
Definition elemop.h:159
The SCElementOp3 class is very similar to the SCElementOp class except that a triplet of blocks is tr...
Definition elemop.h:181
Objects of class SCElementOp are used to perform operations on the elements of matrices.
Definition elemop.h:94
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:41
virtual double * dat()
Return a pointer to the block's data and the number of elements in the block.
virtual SCMatrixBlock * deepcopy() const
Return of copy of this.
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:318
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:351
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:253
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:288
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:183
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.
void save_data_state(StateOut &)
Save the base classes (with save_data_state) and the members in the same order that the StateIn CTOR ...
The SCMatrixRectSubBlock describes a rectangular piece of a matrix.
Definition block.h:219
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.
SCMatrixBlock * block()
Return the current block.
void next()
Proceed to the next block.
Objects of class SCMatrixSubblockIter are used to iterate through the blocks of a matrix.
Definition block.h:379
Access access() const
Return the type of Access allowed for these blocks.
Definition block.h:398
virtual void next()=0
Proceed to the next block.
virtual SCMatrixBlock * block()=0
Return the current 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:387
The SCVectorSimpleBlock describes a piece of a vector.
Definition block.h:123
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 SCVectorSimpleSubBlock describes a subblock of a vector.
Definition block.h:154
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:45
Restores fundamental and user-defined types from images created with StateOut.
Definition statein.h:79
Serializes fundamental and user-defined types.
Definition stateout.h:71
Contains all MPQC code up to version 3.
Definition mpqcin.h:14