#ifndef INCLUDED_BOBCAT_XPOINTER_
#define INCLUDED_BOBCAT_XPOINTER_

#include <X11/Xlib.h>
#include <memory>

#include <bobcat/errno>

namespace FBB
{

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

        static size_t s_counter;
        static Display *s_theDisplay;
// From g++4.4: see tags/2.03.00-g++4-4
//    static std::unique_ptr<Display, DeleterType> s_theDisplay;


    public:
        Xpointer();
        ~Xpointer();

        void verify() const;    // kept for backward compatibility

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

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

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

}   // FBB

#endif



