Index: OpenSceneGraph/trunk/include/osg/PrimitiveSet
===================================================================
--- OpenSceneGraph/trunk/include/osg/PrimitiveSet (revision 9599)
+++ OpenSceneGraph/trunk/include/osg/PrimitiveSet (revision 9969)
@@ -450,4 +450,10 @@
             if (_ebo.valid()) _ebo->releaseGLObjects(state);
         }
+        
+        
+        virtual void reserveElements(unsigned int numIndices) = 0;
+        virtual void setElement(unsigned int, unsigned int) = 0;
+        virtual unsigned int getElement(unsigned int) = 0;
+        virtual void addElement(unsigned int) = 0;
 
     protected:
@@ -527,4 +533,9 @@
         }
         
+        virtual void reserveElements(unsigned int numIndices) { reserve(numIndices); }
+        virtual void setElement(unsigned int i, unsigned int v)  { (*this)[i] = v; }
+        virtual unsigned int getElement(unsigned int i) { return (*this)[i]; } 
+        virtual void addElement(unsigned int v) { push_back(GLubyte(v)); } 
+
     protected:
 
@@ -602,4 +613,9 @@
         }
 
+        virtual void reserveElements(unsigned int numIndices) { reserve(numIndices); }
+        virtual void setElement(unsigned int i, unsigned int v) { (*this)[i] = v; }
+        virtual unsigned int getElement(unsigned int i) { return (*this)[i]; }
+        virtual void addElement(unsigned int v) { push_back(GLushort(v)); }
+
     protected:
 
@@ -677,4 +693,9 @@
         }
 
+        virtual void reserveElements(unsigned int numIndices) { reserve(numIndices); }
+        virtual void setElement(unsigned int i, unsigned int v) { (*this)[i] = v; }
+        virtual unsigned int getElement(unsigned int i) { return (*this)[i]; }
+        virtual void addElement(unsigned int v) { push_back(GLuint(v)); }
+
     protected:
 
