- /**
- * @file kc_iterator.h
- * @brief KC Iterator モジュール
- * @copyright 2003 - 2023 Nomura Kei
- * @depends
- * kc.h
- */
- #ifndef KC_ITERATOR_H
- #define KC_ITERATOR_H
-
- #include <kc.h>
-
- #ifdef __cplusplus
- extern "C"
- {
- namespace kc
- {
- using namespace std;
- #endif
-
- /**
- * Iterator オブジェクト
- */
- typedef struct KcIterator_
- {
- /**
- * 次の要素の有無を取得します。
- *
- * @param ite Iterator オブジェクト
- * @return true/false (次の要素がある/次の要素がない)
- */
- bool (*hasNext)(struct KcIterator_ *ite);
-
- /**
- * 次の要素を取得します。
- *
- * @param ite Iterator オブジェクト
- * @param size 取得したオブジェクトのサイズ格納用
- * @return 次のオブジェクト
- */
- const void *(*next)(struct KcIterator_ *ite, size_t *size);
-
- /** 内部情報 */
- void *_info;
-
- } KcIterator;
-
- void KcIterator_delete(KcIterator *ite);
-
- #ifdef __cplusplus
- } // namespace kc
- } // extern "C"
- #endif
- #endif // KC_ITERATOR_H