Commit c4fe65877b53665cbc668b17db4d656d8f021373
1 parent
fca0cb57
Make GNdarray::index() method public
Showing
3 changed files
with
31 additions
and
30 deletions
include/GNdarray.hpp
| 1 | 1 | /*************************************************************************** |
| 2 | 2 | * GNdarray.hpp - N-dimensional array class * |
| 3 | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2016-2018 by Juergen Knoedlseder * | |
| 4 | + * copyright (C) 2016-2020 by Juergen Knoedlseder * | |
| 5 | 5 | * ----------------------------------------------------------------------- * |
| 6 | 6 | * * |
| 7 | 7 | * This program is free software: you can redistribute it and/or modify * |
| ... | ... | @@ -110,6 +110,7 @@ public: |
| 110 | 110 | const std::vector<int>& shape(void) const; |
| 111 | 111 | const std::vector<int>& strides(void) const; |
| 112 | 112 | void shape(const std::vector<int>& shape); |
| 113 | + int index(const std::vector<int>& i) const; | |
| 113 | 114 | double& at(const int& ix); |
| 114 | 115 | double& at(const int& ix, const int& iy); |
| 115 | 116 | double& at(const int& ix, const int& iy, const int& iz); |
| ... | ... | @@ -127,7 +128,6 @@ protected: |
| 127 | 128 | void init_members(void); |
| 128 | 129 | void copy_members(const GNdarray& array); |
| 129 | 130 | void free_members(void); |
| 130 | - int index(const std::vector<int>& i) const; | |
| 131 | 131 | bool has_same_shape(const GNdarray& array) const; |
| 132 | 132 | void require_same_shape(const std::string& method, const GNdarray& array) const; |
| 133 | 133 | ... | ... |
pyext/GNdarray.i
| 1 | 1 | /*************************************************************************** |
| 2 | 2 | * GNdarray.i - N-dimensional array class * |
| 3 | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2016-2018 by Juergen Knoedlseder * | |
| 4 | + * copyright (C) 2016-2020 by Juergen Knoedlseder * | |
| 5 | 5 | * ----------------------------------------------------------------------- * |
| 6 | 6 | * * |
| 7 | 7 | * This program is free software: you can redistribute it and/or modify * |
| ... | ... | @@ -70,6 +70,7 @@ public: |
| 70 | 70 | const std::vector<int>& shape(void) const; |
| 71 | 71 | const std::vector<int>& strides(void) const; |
| 72 | 72 | void shape(const std::vector<int>& shape); |
| 73 | + int index(const std::vector<int>& i) const; | |
| 73 | 74 | double* data(void); |
| 74 | 75 | }; |
| 75 | 76 | ... | ... |
src/numerics/GNdarray.cpp
| 1 | 1 | /*************************************************************************** |
| 2 | 2 | * GNdarray.cpp - N-dimensional array class * |
| 3 | 3 | * ----------------------------------------------------------------------- * |
| 4 | - * copyright (C) 2016-2018 by Juergen Knoedlseder * | |
| 4 | + * copyright (C) 2016-2020 by Juergen Knoedlseder * | |
| 5 | 5 | * ----------------------------------------------------------------------- * |
| 6 | 6 | * * |
| 7 | 7 | * This program is free software: you can redistribute it and/or modify * |
| ... | ... | @@ -741,6 +741,32 @@ const double& GNdarray::at(const std::vector<int>& i) const |
| 741 | 741 | |
| 742 | 742 | |
| 743 | 743 | /***********************************************************************//** |
| 744 | + * @brief Compute array element index | |
| 745 | + * | |
| 746 | + * @param[in] i Index vector. | |
| 747 | + * @return Array element index. | |
| 748 | + * | |
| 749 | + * Computes the array element index from an index vector. The method assumes | |
| 750 | + * that the index vector has the same dimension as the array. If this | |
| 751 | + * condition is not guaranteed, the condition needs to be checked before | |
| 752 | + * calling the method. | |
| 753 | + ***************************************************************************/ | |
| 754 | +int GNdarray::index(const std::vector<int>& i) const | |
| 755 | +{ | |
| 756 | + // Initialise element index | |
| 757 | + int index = 0; | |
| 758 | + | |
| 759 | + // Compute element index | |
| 760 | + for (int k = 0; k < m_shape.size(); ++k) { | |
| 761 | + index += m_strides[k] * i[k]; | |
| 762 | + } | |
| 763 | + | |
| 764 | + // Return index | |
| 765 | + return index; | |
| 766 | +} | |
| 767 | + | |
| 768 | + | |
| 769 | +/***********************************************************************//** | |
| 744 | 770 | * @brief Print array information |
| 745 | 771 | * |
| 746 | 772 | * @param[in] chatter Chattiness. |
| ... | ... | @@ -824,32 +850,6 @@ void GNdarray::free_members(void) |
| 824 | 850 | |
| 825 | 851 | |
| 826 | 852 | /***********************************************************************//** |
| 827 | - * @brief Compute array element index | |
| 828 | - * | |
| 829 | - * @param[in] i Index vector. | |
| 830 | - * @return Array element index. | |
| 831 | - * | |
| 832 | - * Computes the array element index from an index vector. The method assumes | |
| 833 | - * that the index vector has the same dimension as the array. If this | |
| 834 | - * condition is not guaranteed, the condition needs to be checked before | |
| 835 | - * calling the method. | |
| 836 | - ***************************************************************************/ | |
| 837 | -int GNdarray::index(const std::vector<int>& i) const | |
| 838 | -{ | |
| 839 | - // Initialise element index | |
| 840 | - int index = 0; | |
| 841 | - | |
| 842 | - // Compute element index | |
| 843 | - for (int k = 0; k < m_shape.size(); ++k) { | |
| 844 | - index += m_strides[k] * i[k]; | |
| 845 | - } | |
| 846 | - | |
| 847 | - // Return index | |
| 848 | - return index; | |
| 849 | -} | |
| 850 | - | |
| 851 | - | |
| 852 | -/***********************************************************************//** | |
| 853 | 853 | * @brief Check if array has the same shape |
| 854 | 854 | * |
| 855 | 855 | * @param[in] array Array. | ... | ... |