9 |
// need separate C++ types... |
// need separate C++ types... |
10 |
|
|
11 |
class GLIndexBase { |
class GLIndexBase { |
12 |
|
protected: |
13 |
int index; |
int index; |
14 |
public: |
public: |
15 |
explicit GLIndexBase(int index) : index(index) { }; |
explicit GLIndexBase(int index) : index(index) { }; |
16 |
int get() const { return index; } |
int get() const { return index; } |
17 |
|
void operator=(int i) { index = i; } |
18 |
}; |
}; |
19 |
|
|
20 |
template<int id> struct GLIndex : public GLIndexBase { |
template<int id> struct GLIndex : public GLIndexBase { |
21 |
GLIndex() : GLIndexBase(-1) { } |
GLIndex() : GLIndexBase(-1) { } |
22 |
explicit GLIndex(int index) : GLIndexBase(index) { } |
explicit GLIndex(int index) : GLIndexBase(index) { } |
23 |
|
void operator=(int i) { index = i; } |
24 |
|
operator int() const { |
25 |
|
return index; |
26 |
|
} |
27 |
}; |
}; |
28 |
|
|
29 |
typedef GLIndex<GL_LIST_MODE> DisplayListID; |
typedef GLIndex<GL_LIST_MODE> DisplayListID; |
30 |
|
typedef GLIndex<GL_INVALID_ENUM> Token; |
31 |
} |
} |
32 |
|
|
33 |
#endif |
#endif |