Commit a8c1873c authored by Emilia Juda's avatar Emilia Juda

added information about preprocessor directives

parent 49f13611
...@@ -240,6 +240,10 @@ If the two new attributes are not set to \texttt{nullptr} the array has been con ...@@ -240,6 +240,10 @@ If the two new attributes are not set to \texttt{nullptr} the array has been con
throught the Python to C++ converter. The already existing \texttt{m\_count} attribute throught the Python to C++ converter. The already existing \texttt{m\_count} attribute
was retained in order to keep track of how many C++ references to the array there are. was retained in order to keep track of how many C++ references to the array there are.
Adding new attributes to the arrays might cause a significantly increased memory usage.
Therefore a preprocessor directive has been added to only include the additional arguments
if \texttt{NekPy} had been built (using the option \texttt{NEKTAR\_BUILD\_PYTHON}).
A new constructor has been added to the class template, as seen in Listing \ref{lst:new_const}. A new constructor has been added to the class template, as seen in Listing \ref{lst:new_const}.
\texttt{m\_memory\_pointer} and \texttt{m\_python\_decrement} have been set to \texttt{m\_memory\_pointer} and \texttt{m\_python\_decrement} have been set to
\texttt{nullptr} in the pre-existing constructors. A similar constructor was added for \texttt{nullptr} in the pre-existing constructors. A similar constructor was added for
...@@ -268,7 +272,7 @@ would decrement the reference counter of the NekPy array object. The detailed pr ...@@ -268,7 +272,7 @@ would decrement the reference counter of the NekPy array object. The detailed pr
for deleting arrays is described further in this section. for deleting arrays is described further in this section.
\begin{lstlisting}[caption={The modified destructor for C++ arrays.}, label={lst:destructor}, language=C++] \begin{lstlisting}[caption={The modified destructor for C++ arrays.}, label={lst:destructor}, language=C++]
~Array() ~~Array()
{ {
if( m_count == nullptr ) if( m_count == nullptr )
{ {
...@@ -278,6 +282,7 @@ for deleting arrays is described further in this section. ...@@ -278,6 +282,7 @@ for deleting arrays is described further in this section.
*m_count -= 1; *m_count -= 1;
if( *m_count == 0 ) if( *m_count == 0 )
{ {
#ifdef WITH_PYTHON
if (m_memory_pointer == nullptr) if (m_memory_pointer == nullptr)
{ {
ArrayDestructionPolicy<DataType>::Destroy( m_data, m_capacity ); ArrayDestructionPolicy<DataType>::Destroy( m_data, m_capacity );
...@@ -287,7 +292,11 @@ for deleting arrays is described further in this section. ...@@ -287,7 +292,11 @@ for deleting arrays is described further in this section.
{ {
m_python_decrement(m_data); m_python_decrement(m_data);
} }
#else
ArrayDestructionPolicy<DataType>::Destroy( m_data, m_capacity );
MemoryManager<DataType>::RawDeallocate( m_data, m_capacity );
#endif
delete m_count; // Clean up the memory used for the reference count. delete m_count; // Clean up the memory used for the reference count.
} }
} }
...@@ -456,3 +465,7 @@ conducted to determine whether the array is: ...@@ -456,3 +465,7 @@ conducted to determine whether the array is:
\item accessible to C++ program after being deleted in Python code, \item accessible to C++ program after being deleted in Python code,
\item accessible in Python script after being deleted from C++ objects. \item accessible in Python script after being deleted from C++ objects.
\end{enumerate} \end{enumerate}
Python files containing test scripts are currently located in
\path{library\Demos\Python\tests}. They should be converted into unit tests
that should be run when Python components are built.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment