docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
polyhedral.h File Reference

RAII facade over the Integer Set Library (ISL). More...

#include <isl/ctx.h>
#include <isl/map.h>
#include <isl/set.h>
#include <isl/space.h>
#include "sdfg/symbolic/assumptions.h"
#include "sdfg/symbolic/symbolic.h"

Go to the source code of this file.

Classes

class  sdfg::symbolic::polyhedral::IslCtx
 Move-only RAII owner of an isl_ctx. More...
class  sdfg::symbolic::polyhedral::IslHandle< T, FreeFn >
 Move-only RAII owner of a reference-counted ISL object. More...

Namespaces

namespace  sdfg
namespace  sdfg::symbolic
namespace  sdfg::symbolic::polyhedral

Typedefs

using sdfg::symbolic::polyhedral::IslMap = IslHandle<isl_map, isl_map_free>
using sdfg::symbolic::polyhedral::IslSet = IslHandle<isl_set, isl_set_free>
using sdfg::symbolic::polyhedral::IslSpace = IslHandle<isl_space, isl_space_free>

Functions

bool sdfg::symbolic::polyhedral::equal_on_domain (const MultiExpression &f, const MultiExpression &g, const Symbol indvar, const Assumptions &assums)
 Decides whether two access expressions denote the same cell at every point of the domain implied by assums.

Detailed Description

RAII facade over the Integer Set Library (ISL).

This file is the single seam between sdfglib's symbolic layer and ISL. It owns the ISL context lifetime via RAII and exposes move-only handle wrappers so that callers never have to hand-manage isl_*_free / isl_ctx_free on every error branch.

The handles deliberately mirror ISL's take/give ownership model:

  • methods that consume an ISL object expect the caller to release() the handle (transferring ownership to ISL), and
  • methods that produce an ISL object wrap the raw pointer back into a handle.

Construction order guarantees correct teardown: an IslCtx declared before any IslMap/IslSet/IslSpace in the same scope is destroyed last, after every object allocated in it has already been freed.

See also
utils.h for the symbolic-expression -> ISL string bridge
maps.h for the higher-level polyhedral predicates built on top of this