00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _SEGCOL_INTERNAL_H
00026 #define _SEGCOL_INTERNAL_H
00027
00028 #include "segcol.h"
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 struct segcol_funcs {
00040 int (*free)(segcol_t *segcol);
00041 int (*append)(segcol_t *segcol, segment_t *seg);
00042 int (*insert)(segcol_t *segcol, off_t offset, segment_t *seg);
00043 int (*delete)(segcol_t *segcol, segcol_t **deleted, off_t offset,
00044 off_t length);
00045 int (*find)(segcol_t *segcol, segcol_iter_t **iter, off_t offset);
00046 int (*iter_new)(segcol_t *segcol, void **iter);
00047 int (*iter_next)(segcol_iter_t *iter);
00048 int (*iter_is_valid)(segcol_iter_t *iter, int *valid);
00049 int (*iter_get_segment)(segcol_iter_t *iter, segment_t **seg);
00050 int (*iter_get_mapping)(segcol_iter_t *iter, off_t *mapping);
00051 int (*iter_free)(segcol_iter_t *iter);
00052 };
00053
00054
00055
00056
00057
00058
00059 int segcol_create_impl(segcol_t **segcol, void *impl,
00060 struct segcol_funcs *funcs);
00061
00062 void *segcol_get_impl(segcol_t *segcol);
00063
00064 void *segcol_iter_get_impl(segcol_iter_t *iter);
00065
00066
00067
00068
00069
00070 #endif