// SPDX-License-Identifier: Apache-2.0 // Copyright 2026, Amlal El Mahrouss (amlal@nekernel.org) // Licensed under the Apache License, Version 2.0 (See accompanying // file LICENSE or copy at http://www.apache.org/licenses/LICENSE-2.0) // Official repository: https://github.com/ne-foss-org/nectar #ifndef NECTAR_GL_ITERATOR_NHH #define NECTAR_GL_ITERATOR_NHH //@ Rules for iterator implementation: //@ - _begin is the starting point of the iterator. //@ - _end is the number of elements to iterate over. //@ - _size is the total size of the collection. trait iterator_traits { let _begin := 0; let _end := 0; let _size := 0; let begin(); let end(); let size(); }; impl iterator : trait iterator_traits { let begin(let self) { must_pass(self._begin != self._end); let begin := self._begin; return begin; } let end(let self) { must_pass(_begin != _end); let end := self._end; return end; } let size(let self) { must_pass(self._size > 0); return self._size; } }; #endif //@ NECTAR_GL_ITERATOR_NHH