Can’t say, because I don’t know how you store your data.
Assuming everything is stored unpadded, vertices has three components, texture coordinates has two components and color has four components, all floats, then it looks correct.
Unpadded means there’s no “empty” data between two consecutive elements.
You can use the W-component of a vertex to easily extend a shadow volume towards infinity, and three texture coordinates is used with cubemaps and 3D textures.
Not sure exactly what you are looking for, but it looks right except for the first if(hasVerticles) which I assume should be if (hasVertices). Are you actually having a problem of some kind?