/* SPDX-FileCopyrightText: 2026 - Sébastien Wilmet
 * SPDX-License-Identifier: LGPL-3.0-or-later
 */

#pragma once

#if !defined (GFLS_H_INSIDE) && !defined (GFLS_COMPILATION)
#error "Only <gfls/gfls.h> can be included directly."
#endif

#include <gmodule.h>

G_BEGIN_DECLS

typedef struct _GflsBytesRegion     GflsBytesRegion;
typedef struct _GflsBytesRegionIter GflsBytesRegionIter;

G_MODULE_EXPORT
void			gfls_bytes_region_free			(GflsBytesRegion *region);

G_MODULE_EXPORT
gboolean		gfls_bytes_region_match_bytes		(GflsBytesRegion *region,
								 GBytes          *bytes);

G_MODULE_EXPORT
gchar *			gfls_bytes_region_to_string		(GflsBytesRegion *region);

G_MODULE_EXPORT
GflsBytesRegionIter *	gfls_bytes_region_get_start_iter	(GflsBytesRegion *region);

G_MODULE_EXPORT
void			gfls_bytes_region_iter_free		(GflsBytesRegion     *region,
								 GflsBytesRegionIter *iter);

G_MODULE_EXPORT
gboolean		gfls_bytes_region_iter_is_end		(GflsBytesRegion     *region,
								 GflsBytesRegionIter *iter);

G_MODULE_EXPORT
void			gfls_bytes_region_iter_get_sub_region	(GflsBytesRegion     *region,
								 GflsBytesRegionIter *iter,
								 gsize               *sub_region_size,
								 gsize               *offset,
								 gboolean            *is_part_of_region);

G_MODULE_EXPORT
void			gfls_bytes_region_iter_next		(GflsBytesRegion     *region,
								 GflsBytesRegionIter *iter);

G_END_DECLS
