Skip to content
Snippets Groups Projects
Commit 58797a3a authored by Tomáš Oberhuber's avatar Tomáš Oberhuber Committed by Tomáš Oberhuber
Browse files

Writting Array documentation.

parent cd3a19c8
No related branches found
No related tags found
1 merge request!29Revision
......@@ -29,9 +29,9 @@ template< int, typename > class StaticArray;
* \brief Array is responsible for memory management, basic elements
* manipulation and I/O operations.
*
* \tparam Value Type of array values.
* \tparam Device Device type - some of \ref Devices::Host and \ref Devices::Cuda.
* \tparam Index Type for indexing.
* \tparam Value is type of array elements.
* \tparam Device is device where the array is going to be allocated - some of \ref Devices::Host and \ref Devices::Cuda.
* \tparam Index is indexing type.
*
* In the \e Device type, the Array remembers where the memory is allocated.
* This ensures the compile-time checks of correct pointers manipulation.
......@@ -55,6 +55,8 @@ template< int, typename > class StaticArray;
*
* \par Example
* \include ArrayExample.cpp
*
* See also \ref Containers::ArravView, \ref Containers::Vector, \ref Containers::VectorView.
*/
template< typename Value,
typename Device = Devices::Host,
......@@ -72,20 +74,26 @@ class Array : public Object
/** \brief Basic constructor.
*
* Constructs an empty array with the size of zero.
* Constructs an empty array with zero size.
*/
Array();
/**
* \brief Constructor with size.
* \brief Constructor with array size.
*
* \param size Number of array elements. / Size of allocated memory.
* \param size is number of array elements.
*/
Array( const IndexType& size );
/**
* \brief Constructor with data and size.
* \brief Constructor with data pointer and size.
*
* In this case, the Array just encapsulates the pointer \e data. No
* deallocation is done in destructor.
*
* This behavior of the Array is obsolete and \ref ArrayView should be used
* instead.
*
* \param data Pointer to data.
* \param size Number of array elements.
*/
......@@ -93,25 +101,33 @@ class Array : public Object
const IndexType& size );
/**
*
* @param
* \brief Copy constructor.
*
* \param array is an array to be copied.
*/
// Deep copy does not work because of EllpackIndexMultiMap - TODO: Fix it
//Array( const Array& );
//Array( const Array& array );
/**
* \brief Copy constructor.
* \brief Bind constructor .
*
* The constructor does not make a deep copy, but binds to the supplied array.
* \param array Existing array that is to be bound.
* \param begin The first index which should be bound.
* \param size Number of array elements that should be bound.
* This is also obsolete, \ref ArraView should be used instead.
*
* \param array is an array that is to be bound.
* \param begin is the first index which should be bound.
* \param size is number of array elements that should be bound.
*/
Array( Array& array,
const IndexType& begin = 0,
const IndexType& size = 0 );
Array( Array&& );
/**
* \brief Move constructor.
*
* @param array is an array to be moved
*/
Array( Array&& array );
/**
* \brief Initialize the array from initializer list, i.e. { ... }
......@@ -138,45 +154,51 @@ class Array : public Object
Array( const std::vector< InValue >& vector );
/**
* \brief Returns type of array Value, Device type and the type of Index.
* \brief Returns type of array in C++ style.
*/
static String getType();
/**
* \brief Returns type of array Value, Device type and the type of Index.
* \brief Returns type of array in C++ style.
*/
virtual String getTypeVirtual() const;
/**
* \brief Returns (host) type of array Value, Device type and the type of Index.
* \brief Returns type of array in C++ style where device is always \ref Devices::Host.
*/
static String getSerializationType();
/**
* \brief Returns (host) type of array Value, Device type and the type of Index.
* \brief Returns type of array in C++ style where device is always \ref Devices::Host.
*/
virtual String getSerializationTypeVirtual() const;
/**
* \brief Method for setting the size of an array.
* \brief Method for setting the array size.
*
* If the array shares data with other arrays these data are released.
* If the current data are not shared and the current size is the same
* as the new one, nothing happens.
*
* \param size Number of array elements.
* \param size is number of array elements.
*/
void setSize( Index size );
/** \brief Method for getting the size of an array. */
/**
* \brief Method for getting the size of an array.
*
* This method can be called from device kernels.
*
*/
__cuda_callable__ Index getSize() const;
/**
* \brief Assigns features of the existing \e array to the given array.
*
* Sets the same size as the size of existing \e array.
* \tparam ArrayT Type of array.
* \param array Reference to an existing array.
*
* \tparam ArrayT is any array type having method \ref getSize().
* \param array is reference to the source array.
*/
template< typename ArrayT >
void setLike( const ArrayT& array );
......@@ -186,6 +208,9 @@ class Array : public Object
*
* Releases old data and binds this array with new \e _data. Also sets new
* \e _size of this array.
*
* This method is obsolete, use \ref ArrayView instead.
*
* @param _data Pointer to new data.
* @param _size Size of new _data. Number of elements.
*/
......@@ -197,6 +222,9 @@ class Array : public Object
*
* Releases old data and binds this array with new \e array starting at
* position \e begin. Also sets new \e size of this array.
*
* This method is obsolete, use \ref ArrayView instead.
*
* \tparam ArrayT Type of array.
* \param array Reference to a new array.
* \param begin Starting index position.
......@@ -212,6 +240,9 @@ class Array : public Object
*
* Releases old data and binds this array with a static array of size \e
* Size.
*
* This method is obsolete, use \ref ArrayView instead.
*
* \tparam Size Size of array.
* \param array Reference to a static array.
*/
......@@ -219,38 +250,45 @@ class Array : public Object
void bind( StaticArray< Size, Value >& array );
/**
* \brief Swaps all features of given array with existing \e array.
* \brief Swaps this array with another.
*
* Swaps sizes, all values (data), allocated memory and references of given
* array with existing array.
* \param array Existing array, which features are swaped with given array.
* The swap is done by swaping the meta-data, i.e. pointers and sizes.
*
* \param array is the array to be swapped with this array.
*/
void swap( Array& array );
/**
* \brief Resets the given array.
* \brief Resets the array.
*
* Releases all data from array.
* Releases the array to empty state.
*/
void reset();
/**
* \brief Method for getting the data from given array with constant poiner.
* \brief Data pointer getter for constant instances.
*
* This method can be called from device kernels.
*/
__cuda_callable__ const Value* getData() const;
/**
* \brief Method for getting the data from given array.
* \brief Data pointer getter.
*
* This method can be called from device kernels.
*/
__cuda_callable__ Value* getData();
/**
* \brief Assignes the value \e x to the array element at position \e i.
* \brief Assignes the value \e v to the array element at position \e i.
*
* \param i Index position.
* \param x New value of an element.
* This method can be called only from the host system (CPU) but even for
* arrays allocated on device (GPU).
*
* \param i is element index.
* \param x is the new value of the element.
*/
void setElement( const Index& i, const Value& x );
void setElement( const Index& i, const Value& v );
/**
* \brief Accesses specified element at the position \e i and returns its value.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment