/* vim: ts=4 sw=4 sts=4 ff=unix fenc=utf-8 :
* =====================================================================
* sc_terator.h
* Copyright (c) 2003 - 2011 sys0tem
* LICENSE :
* LGPL (GNU Lesser General Public License - Version 3,29 June 2007)
* http://www.gnu.org/copyleft/lesser.html
* or
* EPL (Eclipse Public License - v1.0)
* http://www.eclipse.org/legal/epl-v10.html
* =====================================================================
*/
#ifndef __SC_ITERATOR_H__
#define __SC_ITERATOR_H__
#include <stddef.h>
#include <sc_stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct SC_Iterator_Entry_ {
struct SC_Iterator_Entry_* next;
const void* value;
size_t size;
} SC_Iterator_Entry;
/**
* Iteratorオブジェクト。
*/
typedef struct SC_Iterator_ {
bool (*hasNext)(struct SC_Iterator_* ite);
const void* (*next )(struct SC_Iterator_* ite, size_t* size);
const char* (*nextStr)(struct SC_Iterator_* ite);
struct SC_Iterator_Entry_* _head;
struct SC_Iterator_Entry_* _now;
} SC_Iterator;
SC_Iterator* SC_Iterator_new(SC_Iterator_Entry* head);
void SC_Iterator_delete(SC_Iterator* ite);
#ifdef __cplusplus
}
#endif
#endif /* __SC_ITERATOR_H__ */