QxCollectionIterator.inl 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /****************************************************************************
  2. **
  3. ** https://www.qxorm.com/
  4. ** Copyright (C) 2013 Lionel Marty (contact@qxorm.com)
  5. **
  6. ** This file is part of the QxOrm library
  7. **
  8. ** This software is provided 'as-is', without any express or implied
  9. ** warranty. In no event will the authors be held liable for any
  10. ** damages arising from the use of this software
  11. **
  12. ** Commercial Usage
  13. ** Licensees holding valid commercial QxOrm licenses may use this file in
  14. ** accordance with the commercial license agreement provided with the
  15. ** Software or, alternatively, in accordance with the terms contained in
  16. ** a written agreement between you and Lionel Marty
  17. **
  18. ** GNU General Public License Usage
  19. ** Alternatively, this file may be used under the terms of the GNU
  20. ** General Public License version 3.0 as published by the Free Software
  21. ** Foundation and appearing in the file 'license.gpl3.txt' included in the
  22. ** packaging of this file. Please review the following information to
  23. ** ensure the GNU General Public License version 3.0 requirements will be
  24. ** met : http://www.gnu.org/copyleft/gpl.html
  25. **
  26. ** If you are unsure which license is appropriate for your use, or
  27. ** if you have questions regarding the use of this file, please contact :
  28. ** contact@qxorm.com
  29. **
  30. ****************************************************************************/
  31. namespace qx {
  32. template <typename Key, typename Value>
  33. QxCollectionIterator<Key, Value>::QxCollectionIterator(const QxCollection<Key, Value> & col) : m_pCollection(& col), m_lCurrIndex(-1)
  34. {
  35. }
  36. template <typename Key, typename Value>
  37. QxCollectionIterator<Key, Value>::~QxCollectionIterator()
  38. {
  39. }
  40. template <typename Key, typename Value>
  41. inline const Key & QxCollectionIterator<Key, Value>::key() const
  42. {
  43. qAssert(m_pCollection && (m_lCurrIndex >= 0) && (m_lCurrIndex < m_pCollection->size()));
  44. return m_pCollection->getKeyByIndex(m_lCurrIndex);
  45. }
  46. template <typename Key, typename Value>
  47. inline const Value & QxCollectionIterator<Key, Value>::value() const
  48. {
  49. qAssert(m_pCollection && (m_lCurrIndex >= 0) && (m_lCurrIndex < m_pCollection->size()));
  50. return m_pCollection->getByIndex(m_lCurrIndex);
  51. }
  52. template <typename Key, typename Value>
  53. inline void QxCollectionIterator<Key, Value>::toFirst()
  54. {
  55. m_lCurrIndex = -1;
  56. }
  57. template <typename Key, typename Value>
  58. inline void QxCollectionIterator<Key, Value>::toLast()
  59. {
  60. m_lCurrIndex = m_pCollection->size();
  61. }
  62. template <typename Key, typename Value>
  63. inline bool QxCollectionIterator<Key, Value>::next()
  64. {
  65. long lCurrIndex = m_lCurrIndex;
  66. m_lCurrIndex = ((m_lCurrIndex < (m_pCollection->size() - 1)) ? (m_lCurrIndex + 1) : m_lCurrIndex);
  67. return (m_lCurrIndex > lCurrIndex);
  68. }
  69. template <typename Key, typename Value>
  70. inline bool QxCollectionIterator<Key, Value>::previous()
  71. {
  72. long lCurrIndex = m_lCurrIndex;
  73. m_lCurrIndex = ((m_lCurrIndex > 0) ? (m_lCurrIndex - 1) : m_lCurrIndex);
  74. return (m_lCurrIndex < lCurrIndex);
  75. }
  76. } // namespace qx