Field3D
EmptyField< Data_T > Class Template Reference

This subclass of Field does not store any data. More...

#include <EmptyField.h>

Inheritance diagram for EmptyField< Data_T >:
ResizableField< Data_T > WritableField< Data_T > Field< Data_T > FieldRes FieldBase RefBase

List of all members.

Public Types

typedef EmptyField< Data_T > class_type
typedef boost::intrusive_ptr
< EmptyField
Ptr
typedef std::vector< PtrVec
 This is a convenience typedef for the list that Field3DInputFile::readScalarLayers() and Field3DInputFile::readVectorLayers() will return its data in.

Public Member Functions

virtual void clear (const Data_T &value)
 Clears all the voxels in the storage.
const Data_T & constantvalue () const
 Returns the constant value.
void setConstantvalue (const Data_T &val)
 Sets the constant value.
Constructors & destructor
 EmptyField ()
 Constructs an empty buffer.
From Field
virtual Data_T value (int i, int j, int k) const
 Read access to a voxel. The coordinates are in integer voxel space .
virtual long long int memSize () const
 Returns the memory usage (in bytes)
From WritableField
virtual Data_T & lvalue (int i, int j, int k)
 Write access to a voxel. The coordinates are global coordinates.
From FieldBase
virtual std::string className () const
 Returns the class name of the object. Used by the class pool and when writing the data to disk.
virtual FieldBase::Ptr clone () const
 Returns a pointer to a copy of the field, pure virtual so ensure derived classes properly implement it.

Static Public Member Functions

static
DEFINE_FIELD_RTTI_CONCRETE_CLASS
const char * 
classType ()
 RTTI replacement.

Protected Attributes

Data_T m_constantData
 Field constant value.
Data_T m_default
 Field default value.
Data_T m_ignoredData
 Dummy variable for assignment.

Private Types

typedef ResizableField< Data_T > base
 Convenience typedef for referring to base class.

Detailed Description

template<class Data_T>
class EmptyField< Data_T >

This subclass of Field does not store any data.

Its primary purpose is to be used as a proxy field. It can carry the same resolution, metadata and mapping as a regular field.

Usage is similar to a DenseField, except that it does not contain any data. It stores a default value that may be set and queried, so it can be treated as a constant field.

Definition at line 81 of file EmptyField.h.


Member Typedef Documentation

template<class Data_T>
typedef boost::intrusive_ptr<EmptyField> EmptyField< Data_T >::Ptr

Reimplemented from ResizableField< Data_T >.

Definition at line 88 of file EmptyField.h.

template<class Data_T>
typedef std::vector<Ptr> EmptyField< Data_T >::Vec

This is a convenience typedef for the list that Field3DInputFile::readScalarLayers() and Field3DInputFile::readVectorLayers() will return its data in.

Reimplemented from Field< Data_T >.

Definition at line 89 of file EmptyField.h.

template<class Data_T>
typedef EmptyField<Data_T> EmptyField< Data_T >::class_type

Reimplemented from ResizableField< Data_T >.

Definition at line 121 of file EmptyField.h.

template<class Data_T>
typedef ResizableField<Data_T> EmptyField< Data_T >::base [private]

Convenience typedef for referring to base class.

Reimplemented from ResizableField< Data_T >.

Definition at line 165 of file EmptyField.h.


Constructor & Destructor Documentation

template<class Data_T >
EmptyField< Data_T >::EmptyField ( )

Constructs an empty buffer.

Definition at line 174 of file EmptyField.h.

Referenced by EmptyField< Data_T >::clone().

  : base()
{ 
  // Empty
}

Member Function Documentation

template<class Data_T >
void EmptyField< Data_T >::clear ( const Data_T &  value) [virtual]

Clears all the voxels in the storage.

Reimplemented from WritableField< Data_T >.

Definition at line 183 of file EmptyField.h.

template<class Data_T >
const Data_T & EmptyField< Data_T >::constantvalue ( ) const [inline]

Returns the constant value.

Definition at line 248 of file EmptyField.h.

{
  return m_constantData;
}
template<class Data_T >
void EmptyField< Data_T >::setConstantvalue ( const Data_T &  val) [inline]

Sets the constant value.

Definition at line 240 of file EmptyField.h.

{
  m_constantData = val;
}
template<class Data_T >
Data_T EmptyField< Data_T >::value ( int  i,
int  j,
int  k 
) const [virtual]

Read access to a voxel. The coordinates are in integer voxel space .

Note:
Before the internal storage is accessed, the subclass must compute the data window coordinates by looking at Field::m_dataWindow.
Virtual functions are known not to play nice with threading. Therefor, concrete classes can implement (by convention) fastValue() as a non-virtual function.

Implements Field< Data_T >.

Definition at line 191 of file EmptyField.h.

References UNUSED.

{
  assert (i >= base::m_dataWindow.min.x);
  assert (i <= base::m_dataWindow.max.x);
  assert (j >= base::m_dataWindow.min.y);
  assert (j <= base::m_dataWindow.max.y);
  assert (k >= base::m_dataWindow.min.z);
  assert (k <= base::m_dataWindow.max.z);

  UNUSED(i);
  UNUSED(j);
  UNUSED(k);

  // Access data
  return m_default;
}
template<class Data_T >
long long int EmptyField< Data_T >::memSize ( ) const [virtual]

Returns the memory usage (in bytes)

Note:
This needs to be re-implemented for any subclass that adds data members. Those classes should also call their superclass and add the combined memory use.

Reimplemented from FieldRes.

Definition at line 211 of file EmptyField.h.

{ 
  long long int superClassMemSize = base::memSize();
  return sizeof(*this) + superClassMemSize; 
}
template<class Data_T>
static DEFINE_FIELD_RTTI_CONCRETE_CLASS const char* EmptyField< Data_T >::classType ( ) [inline, static]

RTTI replacement.

Reimplemented from ResizableField< Data_T >.

Definition at line 125 of file EmptyField.h.

Referenced by EmptyField< Data_T >::className().

  {
    return "EmptyField";
  }
template<class Data_T >
Data_T & EmptyField< Data_T >::lvalue ( int  i,
int  j,
int  k 
) [virtual]

Write access to a voxel. The coordinates are global coordinates.

Note:
Before the internal storage is accessed, the subclass must compute the crop window coordinates by looking at Field::m_dataWindow.
This is named differently from the const value so that non-const objects still have a clear way of accessing data in a const way.
Virtual functions are known not to play nice with threading. Therefor, concrete classes can implement (by convention) fastLValue() as a non-virtual function.

Implements WritableField< Data_T >.

Definition at line 220 of file EmptyField.h.

References UNUSED.

{
  assert (i >= base::m_dataWindow.min.x);
  assert (i <= base::m_dataWindow.max.x);
  assert (j >= base::m_dataWindow.min.y);
  assert (j <= base::m_dataWindow.max.y);
  assert (k >= base::m_dataWindow.min.z);
  assert (k <= base::m_dataWindow.max.z);

  UNUSED(i);
  UNUSED(j);
  UNUSED(k);

  // Access data
  return m_ignoredData;
}
template<class Data_T>
virtual std::string EmptyField< Data_T >::className ( ) const [inline, virtual]

Returns the class name of the object. Used by the class pool and when writing the data to disk.

Note:
This is different from classType for any templated class, as classType() will include the template parameter(s) but className remains just the name of the template itself.

Implements FieldBase.

Definition at line 142 of file EmptyField.h.

References EmptyField< Data_T >::classType().

  { return std::string(classType()); }
template<class Data_T>
virtual FieldBase::Ptr EmptyField< Data_T >::clone ( ) const [inline, virtual]

Returns a pointer to a copy of the field, pure virtual so ensure derived classes properly implement it.

Implements FieldBase.

Definition at line 145 of file EmptyField.h.

References EmptyField< Data_T >::EmptyField().

  { return Ptr(new EmptyField(*this)); }

Member Data Documentation

template<class Data_T>
Data_T EmptyField< Data_T >::m_default [protected]

Field default value.

Definition at line 155 of file EmptyField.h.

template<class Data_T>
Data_T EmptyField< Data_T >::m_ignoredData [protected]

Dummy variable for assignment.

Definition at line 157 of file EmptyField.h.

template<class Data_T>
Data_T EmptyField< Data_T >::m_constantData [protected]

Field constant value.

Definition at line 159 of file EmptyField.h.


The documentation for this class was generated from the following file: