#ifndef _IDXSET_H_
#define _IDXSET_H_
#ifndef _TUPLE_H_
#error "Need to include tuple.h before idxset.h"
#endif
#ifndef _SET_H_
#error "Need to include set.h before idxset.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef struct index_set IdxSet;
extern IdxSet* idxset_new(
Tuple const* tuple, Set const* set, CodeNode* lexpr, bool is_unrestricted) expects_NONNULL returns_NONNULL;
extern void idxset_free(IdxSet* idxset) expects_NONNULL;
extern bool idxset_is_valid(IdxSet const* idxset) is_PURE;
extern IdxSet* idxset_copy(IdxSet const* source) expects_NONNULL returns_NONNULL;
extern CodeNode* idxset_get_lexpr(IdxSet const* idxset) expects_NONNULL returns_NONNULL is_PURE;
extern Tuple const* idxset_get_tuple(IdxSet const* idxset) expects_NONNULL returns_NONNULL is_PURE;
extern Set const* idxset_get_set(IdxSet const* idxset) expects_NONNULL returns_NONNULL is_PURE;
extern bool idxset_is_unrestricted(IdxSet const* idxset) expects_NONNULL is_PURE;
extern void idxset_print(FILE* fp, IdxSet const* idxset) expects_NONNULL;
#ifdef __cplusplus
}
#endif
#endif