core: iterator: implement const iterators
This commit is contained in:
@@ -41,10 +41,19 @@ enum b_status b_iterator_set_status(const b_iterator *it, b_status status)
|
||||
B_CLASS_DISPATCH_STATIC(B_TYPE_ITERATOR, iterator_set_status, it, status);
|
||||
}
|
||||
|
||||
b_status b_iterator_move_next(b_iterator *it)
|
||||
enum b_status b_iterator_move_next(const b_iterator *it)
|
||||
{
|
||||
B_CLASS_DISPATCH_VIRTUAL_0(
|
||||
b_iterator, B_TYPE_ITERATOR, B_ERR_NOT_SUPPORTED, it_move_next, it);
|
||||
enum b_status status = B_ERR_NOT_SUPPORTED;
|
||||
|
||||
b_iterator_class *iface = b_object_get_interface(it, B_TYPE_ITERATOR);
|
||||
if (iface && iface->it_move_next) {
|
||||
status = iface->it_move_next(it);
|
||||
}
|
||||
|
||||
struct b_iterator_p *p = b_object_get_private(it, B_TYPE_ITERATOR);
|
||||
p->it_status = status;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
b_iterator_value b_iterator_get_value(b_iterator *it)
|
||||
@@ -63,8 +72,17 @@ const b_iterator_value b_iterator_get_cvalue(const b_iterator *it)
|
||||
|
||||
b_status b_iterator_erase(b_iterator *it)
|
||||
{
|
||||
B_CLASS_DISPATCH_VIRTUAL_0(
|
||||
b_iterator, B_TYPE_ITERATOR, B_ERR_NOT_SUPPORTED, it_erase, it);
|
||||
enum b_status status = B_ERR_NOT_SUPPORTED;
|
||||
|
||||
b_iterator_class *iface = b_object_get_interface(it, B_TYPE_ITERATOR);
|
||||
if (iface && iface->it_erase) {
|
||||
status = iface->it_erase(it);
|
||||
}
|
||||
|
||||
struct b_iterator_p *p = b_object_get_private(it, B_TYPE_ITERATOR);
|
||||
p->it_status = status;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/*** CLASS DEFINITION *********************************************************/
|
||||
|
||||
Reference in New Issue
Block a user