Add annotations for length of a given array in mj* structs

This PR added necessary annotations, following what we did for mjData
and mjModel for length of the given array.

This is useful because my parser used to generate Swift interface:
https://github.com/liuliu/swift-mujoco/blob/main/Sources/codegen/main.swift#L297
such that the access to underlying array is bound-checked.

Please let me know if this makes sense. After this change, I can
successfully generate all mj* struct interfaces in Swift without problem
(with notable exception of mjui): https://github.com/liuliu/swift-mujoco/tree/main/Sources
This commit is contained in:
Liu Liu
2022-05-21 19:08:21 -04:00
parent 89d95ad3c7
commit f0bb7467a3
2 changed files with 13 additions and 13 deletions
+5 -5
View File
@@ -108,7 +108,7 @@ struct mjrContext_ { // custom OpenGL context
// texture objects and info // texture objects and info
int ntexture; // number of allocated textures int ntexture; // number of allocated textures
int textureType[100]; // type of texture (mjtTexture) int textureType[100]; // type of texture (mjtTexture) (ntexture)
unsigned int texture[100]; // texture names unsigned int texture[100]; // texture names
// displaylist starting positions // displaylist starting positions
@@ -129,10 +129,10 @@ struct mjrContext_ { // custom OpenGL context
// skin VBOs // skin VBOs
int nskin; // number of skins int nskin; // number of skins
unsigned int* skinvertVBO; // skin vertex position VBOs unsigned int* skinvertVBO; // skin vertex position VBOs (nskin)
unsigned int* skinnormalVBO; // skin vertex normal VBOs unsigned int* skinnormalVBO; // skin vertex normal VBOs (nskin)
unsigned int* skintexcoordVBO; // skin vertex texture coordinate VBOs unsigned int* skintexcoordVBO; // skin vertex texture coordinate VBOs (nskin)
unsigned int* skinfaceVBO; // skin face index VBOs unsigned int* skinfaceVBO; // skin face index VBOs (nskin)
// character info // character info
int charWidth[127]; // character widths: normal and shadow int charWidth[127]; // character widths: normal and shadow
+8 -8
View File
@@ -268,20 +268,20 @@ struct mjvScene_ { // abstract scene passed to OpenGL renderer
// abstract geoms // abstract geoms
int maxgeom; // size of allocated geom buffer int maxgeom; // size of allocated geom buffer
int ngeom; // number of geoms currently in buffer int ngeom; // number of geoms currently in buffer
mjvGeom* geoms; // buffer for geoms mjvGeom* geoms; // buffer for geoms (ngeom)
int* geomorder; // buffer for ordering geoms by distance to camera int* geomorder; // buffer for ordering geoms by distance to camera (ngeom)
// skin data // skin data
int nskin; // number of skins int nskin; // number of skins
int* skinfacenum; // number of faces in skin int* skinfacenum; // number of faces in skin (nskin)
int* skinvertadr; // address of skin vertices int* skinvertadr; // address of skin vertices (nskin)
int* skinvertnum; // number of vertices in skin int* skinvertnum; // number of vertices in skin (nskin)
float* skinvert; // skin vertex data float* skinvert; // skin vertex data (nskin)
float* skinnormal; // skin normal data float* skinnormal; // skin normal data (nskin)
// OpenGL lights // OpenGL lights
int nlight; // number of lights currently in buffer int nlight; // number of lights currently in buffer
mjvLight lights[mjMAXLIGHT]; // buffer for lights mjvLight lights[mjMAXLIGHT]; // buffer for lights (nlight)
// OpenGL cameras // OpenGL cameras
mjvGLCamera camera[2]; // left and right camera mjvGLCamera camera[2]; // left and right camera