#include <list>
#include <vector>
#include <string>
#include <iostream>
#include <iomanip>
#include <sstream>
#include <stdarg.h>
#include "datablock.h"
#include "flexibletable.h"
Include dependency graph for dataview.h:
This graph shows which files directly or indirectly include this file:
Classes | |
class | dataview_interface< T > |
The abstract base class for all data views. PARTIAL DOCUMENTATION! More... | |
class | vectorview< T > |
A one-dimensional view of a data block, suitable for a BLAS-compatible vector. NO DOC YET! More... | |
class | matrixview< T > |
A two-dimensional view of a data block, suitable for a BLAS-compatible matrix. NO DOC YET! More... |
This header file defines the dataview_interface<T>, vectorview<T>, and matrixview<T>. It also contains a general dataview<T> type (multidimensional), but this is under construction and commented out. Finally, it contains all the method definitions for templated class member functions.
Some conventions: A datablock is just a chunk of memory, set up to hold a type T. Views provide an interface to that chunk of memory in two ways. First, they determine the tensor product structure on the chunk (so that the same 100-element chunk can look like either a 100-vector or a 10x10-matrix... or, for that matter, a 2D matrix that is (5x2)x(5x2). Second, they provide clipping; the "virtual size" of the data that the view provides may be smaller (but not larger) than the physical size of the datablock. Thus, a view can extract a submatrix of the previously mentioned M(10,10), e.g. M(2..5,2..5). We can also extract a view that has less dimensions than the original, e.g. M(4,0..9).
Terminology: an "extent" is a physical dimension; the product of all the extents of a view must be equal to the size of the datablock. A "range", on the other hand, is a logical or virtual dimension; the only restriction on a range is that 0<range[i]<=extent[i].
NOTE: This file still needs to be documented!