X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fmisc.h;h=11cb3a60fdc24f9d94e713f89f17cdd9bd351ca6;hb=98c810b6d2256aa65986bbde12c38917678121bb;hp=8a956a5ab4a26306f06abd4869a2dd6b42a93d43;hpb=a4ec5410595ddf37bfbc0e85ad87d31a9cbf94f1;p=libs%2Fgl.git diff --git a/source/misc.h b/source/misc.h index 8a956a5a..11cb3a60 100644 --- a/source/misc.h +++ b/source/misc.h @@ -17,6 +17,37 @@ void enable(GLenum); void disable(GLenum); void set(GLenum, bool); +///Deprecated (can't properly pass an array through a reference) +void get(GLenum, int &); + +void get(GLenum, int *); +int get_i(GLenum); + +class Bind +{ +private: + struct Base + { + virtual ~Base() { } + }; + + template + struct Binder: Base + { + const T &obj; + + Binder(const T &o): obj(o) { obj.bind(); } + ~Binder() { obj.unbind(); } + }; + + Base *binder; + +public: + template + Bind(const T &o): binder(new Binder(o)) { } + ~Bind() { delete binder; } +}; + } // namespace GL } // namespace Msp