#ifndef INCLUDED_BOBCAT_XPOINTER_
#define INCLUDED_BOBCAT_XPOINTER_

#include <X11/Xlib.h>

#include <memory>

#include <bobcat/exception>

namespace FBB
{

class Xpointer
{
    typedef void (*DeleterType)(Display *);

    static size_t s_counter;
    static Display *s_theDisplay;

    public:
        Xpointer();
        ~Xpointer();

        bool set(int x, int y) const;
        bool get(int *x, int *y) const;

    private:
        static void deleter(Display *dsp);                      // .f
};

inline void Xpointer::deleter(Display *dsp)
{
    if (dsp)
        XCloseDisplay(dsp);
}

}   // FBB

#endif
