--- /dev/null
+#ifndef MSP_GL_CLIPUNIT_H_
+#define MSP_GL_CLIPUNIT_H_
+
+#include <vector>
+
+namespace Msp {
+namespace GL {
+
+class ClipPlane;
+
+class ClipUnit
+{
+private:
+ unsigned index;
+ const ClipPlane *plane;
+
+ static std::vector<ClipUnit> units;
+
+ ClipUnit();
+
+public:
+ unsigned get_index() const { return index; }
+ bool set_plane(const ClipPlane *);
+ const ClipPlane *get_plane() const { return plane; }
+
+ static unsigned get_n_units();
+ static ClipUnit &get_unit(unsigned);
+ static ClipUnit *find_unit(const ClipPlane *);
+};
+
+} // namespace GL
+} // namespace Msp
+
+#endif