00001 #ifndef _VIEWITERATOR_H
00002 #define _VIEWITERATOR_H
00003 #include "view.h"
00004 #include "tuple.h"
00005 #include "listnode.h"
00006
00008 typedef struct _viewIterator ViewIterator;
00009
00011 struct _viewIterator {
00012 View *view;
00013 size_t vPos;
00014 size_t chunkSize;
00015
00016 unsigned int ntuple;
00017 unsigned int ituple;
00018 ListNode *lnode;
00019 unsigned int ituplePos;
00020 unsigned int itupleEnd;
00021 char *segAddr;
00022 };
00023
00024 extern void viewIterator_Init(void *(*viewIterator_allocate)(size_t), void (*viewIterator_deallocate)(void *));
00025
00026 extern ViewIterator *viewIterator_Create(View *view);
00027
00028 extern void viewIterator_Delete(ViewIterator *viewIterator);
00029
00030 extern unsigned int viewIterator_Inc(ViewIterator *vi, char *c);
00031
00032 extern size_t viewIterator_GetViewPos(const ViewIterator *vi);
00033
00034 #endif