Declare loop variables inside for loop declaration where possible.

PiperOrigin-RevId: 518846098
Change-Id: Icdb2e5894bd80110552e29270472eeb242e6cf2c
This commit is contained in:
Nimrod Gileadi
2023-03-23 06:48:32 -07:00
committed by Copybara-Service
parent ce6c9053e2
commit 145fe7f354
9 changed files with 111 additions and 107 deletions
+5 -5
View File
@@ -517,7 +517,7 @@ typedef struct _mjtPrism mjtPrism;
// ccd prism support function
static void prism_support(const void *obj, const ccd_vec3_t *dir, ccd_vec3_t *vec) {
int i, istart, ibest;
int istart, ibest;
mjtNum best, tmp;
const mjtPrism* p = (const mjtPrism*)obj;
@@ -525,7 +525,7 @@ static void prism_support(const void *obj, const ccd_vec3_t *dir, ccd_vec3_t *ve
istart = dir->v[2]<0 ? 0 : 3;
ibest = istart;
best = mju_dot3(p->v[istart], dir->v);
for (i=istart+1; i<istart+3; i++) {
for (int i=istart+1; i<istart+3; i++) {
if ((tmp = mju_dot3(p->v[i], dir->v)) > best) {
ibest = i;
best = tmp;
@@ -584,7 +584,7 @@ int mjc_ConvexHField(const mjModel* m, const mjData* d,
int hid = m->geom_dataid[g1];
int nrow = m->hfield_nrow[hid];
int ncol = m->hfield_ncol[hid];
int r, c, dr[2], cnt, rmin, rmax, cmin, cmax, nvert;
int dr[2], cnt, rmin, rmax, cmin, cmax, nvert;
const float* data = m->hfield_data + m->hfield_adr[hid];
mjtPrism prism;
@@ -710,9 +710,9 @@ int mjc_ConvexHField(const mjModel* m, const mjData* d,
// process all prisms in sub-grid
cnt = 0;
for (r=rmin; r<rmax; r++) {
for (int r=rmin; r<rmax; r++) {
nvert = 0;
for (c=cmin; c<=cmax; c++) {
for (int c=cmin; c<=cmax; c++) {
for (int i=0; i<2; i++) {
// send vertex to prism constructor
addVert(&nvert, &prism, dx*c-size1[0], dy*(r+dr[i])-size1[1],
+20 -21
View File
@@ -664,7 +664,7 @@ int mj_broadphase(const mjModel* m, mjData* d, int* pair, int maxpair) {
// find center of non-world geoms; return if none
cnt = 0;
mju_zero3(cen);
for (i=0; i<ngeom; i++) {
for (int i=0; i<ngeom; i++) {
if (m->geom_bodyid[i]) {
mju_addTo3(cen, d->geom_xpos+3*i);
cnt++;
@@ -673,14 +673,14 @@ int mj_broadphase(const mjModel* m, mjData* d, int* pair, int maxpair) {
if (cnt==0) {
return npair;
} else {
for (i=0; i<3; i++) {
for (int i=0; i<3; i++) {
cen[i] /= cnt;
}
}
// compute covariance
mju_zero(cov, 9);
for (i=0; i<ngeom; i++) {
for (int i=0; i<ngeom; i++) {
if (m->geom_bodyid[i]) {
mju_sub3(dif, d->geom_xpos+3*i, cen);
mjtNum D00 = dif[0]*dif[0];
@@ -700,7 +700,7 @@ int mj_broadphase(const mjModel* m, mjData* d, int* pair, int maxpair) {
cov[8] += D22;
}
}
for (i=0; i<9; i++) {
for (int i=0; i<9; i++) {
cov[i] /= cnt;
}
@@ -713,7 +713,7 @@ int mj_broadphase(const mjModel* m, mjData* d, int* pair, int maxpair) {
// construct body AABB for the aligned frame, count collidable
int bufcnt = 0;
for (i=1; i<nbody; i++) {
for (int i=1; i<nbody; i++) {
makeAABB(m, d, aabb+6*i, i, frame);
if (can_collide(m, i)) {
@@ -734,7 +734,7 @@ int mj_broadphase(const mjModel* m, mjData* d, int* pair, int maxpair) {
// init sortbuf with axis0
j = 0;
for (i=1; i<nbody; i++) {
for (int i=1; i<nbody; i++) {
// cannot colide
if (!can_collide(m, i)) {
continue;
@@ -758,10 +758,10 @@ int mj_broadphase(const mjModel* m, mjData* d, int* pair, int maxpair) {
// sweep and prune
cnt = 0; // size of active list
for (i=0; i<2*bufcnt; i++) {
for (int i=0; i<2*bufcnt; i++) {
// min value: collide with all in list, add
if (!(sortbuf[i].body_ismax & 0x10000)) {
for (j=0; j<cnt; j++) {
for (int j=0; j<cnt; j++) {
// get body ids: no need to mask ismax because activebuf entries never have the ismax bit,
// and sortbuf[i].body_ismax is tested above
b1 = activebuf[j].body_ismax;
@@ -797,7 +797,7 @@ int mj_broadphase(const mjModel* m, mjData* d, int* pair, int maxpair) {
// max value: remove corresponding min value from list
else {
toremove = sortbuf[i].body_ismax & 0xFFFF;
for (j=0; j<cnt; j++) {
for (int j=0; j<cnt; j++) {
if (activebuf[j].body_ismax==toremove) {
if (j<cnt-1) {
memmove(activebuf+j, activebuf+j+1, sizeof(mjtBroadphase)*(cnt-1-j));
@@ -921,14 +921,13 @@ void mj_collideGeoms(const mjModel* m, mjData* d, int g1, int g2, int flg_user,
// remove repeated contacts in box-box
if (type1==mjGEOM_BOX && type2==mjGEOM_BOX) {
// use dim field to mark: -1: bad, 0: good
for (i=0; i<num; i++) {
for (int i=0; i<num; i++) {
con[i].dim = 0;
}
// find bad
int j;
for (i=0; i<num-1; i++) {
for (j=i+1; j<num; j++) {
for (int i=0; i<num-1; i++) {
for (int j=i+1; j<num; j++) {
if (con[i].pos[0]==con[j].pos[0] &&
con[i].pos[1]==con[j].pos[1] &&
con[i].pos[2]==con[j].pos[2]) {
@@ -940,7 +939,7 @@ void mj_collideGeoms(const mjModel* m, mjData* d, int g1, int g2, int flg_user,
// consolidate good
i = 0;
for (j=0; j<num; j++) {
for (int j=0; j<num; j++) {
if (con[j].dim==0) {
// different: copy
if (i<j) {
@@ -963,7 +962,7 @@ void mj_collideGeoms(const mjModel* m, mjData* d, int g1, int g2, int flg_user,
int gp = (m->geom_priority[g1]>m->geom_priority[g2] ? g1 : g2);
// friction
for (i=0; i<3; i++) {
for (int i=0; i<3; i++) {
friction[2*i] = m->geom_friction[3*gp+i];
}
@@ -977,7 +976,7 @@ void mj_collideGeoms(const mjModel* m, mjData* d, int g1, int g2, int flg_user,
// same priority
else {
// friction: max
for (i=0; i<3; i++) {
for (int i=0; i<3; i++) {
friction[2*i] = mju_max(m->geom_friction[3*g1+i], m->geom_friction[3*g2+i]);
}
@@ -994,14 +993,14 @@ void mj_collideGeoms(const mjModel* m, mjData* d, int g1, int g2, int flg_user,
// reference standard: mix
if (m->geom_solref[mjNREF*g1]>0 && m->geom_solref[mjNREF*g2]>0) {
for (i=0; i<mjNREF; i++) {
for (int i=0; i<mjNREF; i++) {
solref[i] = mix*m->geom_solref[mjNREF*g1+i] + (1-mix)*m->geom_solref[mjNREF*g2+i];
}
}
// reference direct: min
else {
for (i=0; i<mjNREF; i++) {
for (int i=0; i<mjNREF; i++) {
solref[i] = mju_min(m->geom_solref[mjNREF*g1+i], m->geom_solref[mjNREF*g2+i]);
}
}
@@ -1019,7 +1018,7 @@ void mj_collideGeoms(const mjModel* m, mjData* d, int g1, int g2, int flg_user,
// set friction, solref, solimp: pair
else {
// friction
for (i=0; i<5; i++) {
for (int i=0; i<5; i++) {
friction[i] = m->pair_friction[5*ipair+i];
}
@@ -1031,12 +1030,12 @@ void mj_collideGeoms(const mjModel* m, mjData* d, int g1, int g2, int flg_user,
}
// clamp friction to mjMINMU
for (i=0; i<5; i++) {
for (int i=0; i<5; i++) {
friction[i] = mju_max(mjMINMU, friction[i]);
}
// add contact returned by collision detector
for (i=0; i<num; i++) {
for (int i=0; i<num; i++) {
// set contact data
if (condim > 6 || condim < 1) { // SHOULD NOT OCCUR
mju_error("Invalid condim value: %d", i);
+6 -4
View File
@@ -544,20 +544,22 @@ static void mj_advance(const mjModel* m, mjData* d,
// Euler integrator, semi-implicit in velocity, possibly skipping factorisation
void mj_EulerSkip(const mjModel* m, mjData* d, int skipfactor) {
int i, nv = m->nv, nM = m->nM;
int nv = m->nv, nM = m->nM;
mjMARKSTACK;
mjtNum* qfrc = mj_stackAlloc(d, nv);
mjtNum* qacc = mj_stackAlloc(d, nv);
// check for dof damping
for (i=0; i<nv; i++) {
int dof_damping = 0;
for (int i=0; i<nv; i++) {
if (m->dof_damping[i]>0) {
dof_damping = 1;
break;
}
}
// no damping: explicit velocity integration
if (i>=nv) {
if (!dof_damping) {
mju_copy(qacc, d->qacc, nv);
}
@@ -568,7 +570,7 @@ void mj_EulerSkip(const mjModel* m, mjData* d, int skipfactor) {
// MhB = M + h*diag(B)
mju_copy(MhB, d->qM, m->nM);
for (i=0; i<nv; i++) {
for (int i=0; i<nv; i++) {
MhB[m->dof_Madr[i]] += m->opt.timestep * m->dof_damping[i];
}
+3 -3
View File
@@ -622,7 +622,7 @@ void mj_saveModel(const mjModel* m, const char* filename, void* buffer, int buff
// load model from binary MJB file
// if vfs is not NULL, look up file in vfs before reading from disk
mjModel* mj_loadModel(const char* filename, const mjVFS* vfs) {
int i, header[4] = {0};
int header[4] = {0};
int expected_header[4] = {ID, sizeof(mjtNum), getnint(), getnptr()};
int info[2000];
int ptrbuf = 0;
@@ -633,7 +633,7 @@ mjModel* mj_loadModel(const char* filename, const mjVFS* vfs) {
const void* buffer = NULL;
int buffer_sz = 0;
if (vfs) {
i = mj_findFileVFS(vfs, filename);
int i = mj_findFileVFS(vfs, filename);
if (i>=0) {
buffer_sz = vfs->filesize[i];
buffer = vfs->filedata[i];
@@ -660,7 +660,7 @@ mjModel* mj_loadModel(const char* filename, const mjVFS* vfs) {
}
// check header
for (i=0; i<4; i++) {
for (int i=0; i<4; i++) {
if (header[i]!=expected_header[i]) {
if (fp) {
fclose(fp);
+2 -1
View File
@@ -105,7 +105,7 @@ static void ARdiaginv(const mjModel* m, mjData* d, mjtNum* res, int flg_subR) {
// extract diagonal block from AR, clamp diag to 1e-10 if flg_subR
static void extractBlock(const mjModel* m, mjData* d, mjtNum* Ac,
int start, int n, int flg_subR) {
int k, nefc = d->nefc;
int nefc = d->nefc;
const mjtNum *AR = d->efc_AR;
const int *rownnz = d->efc_AR_rownnz, *rowadr = d->efc_AR_rowadr, *colind = d->efc_AR_colind;
@@ -123,6 +123,7 @@ static void extractBlock(const mjModel* m, mjData* d, mjtNum* Ac,
}
*/
// assume full sub-matrix, find starting k: same for all rows
int k;
for (k=0; k<rownnz[start]; k++) {
if (colind[rowadr[start]+k]==start) {
break;
+1 -1
View File
@@ -45,7 +45,7 @@ static void vfs_strippath(char* newname, const char* oldname) {
mju_strncpy(newname, oldname+i+1, mjMAXVFSNAME);
// make lowercase
for (i=strlen(newname)-1; i>=0; i--) {
for (int i=strlen(newname)-1; i>=0; i--) {
if (newname[i]>='A' && newname[i]<='Z') {
newname[i] = (char)(((int)newname[i]) +'a' - 'A');
}
+3 -3
View File
@@ -1059,9 +1059,9 @@ void mjv_addGeoms(const mjModel* m, mjData* d, const mjvOption* vopt,
}
// get geom group and clamp
int j = mjMAX(0, mjMIN(mjNGROUP-1, m->geom_group[i]));
int geomgroup = mjMAX(0, mjMIN(mjNGROUP-1, m->geom_group[i]));
if (vopt->geomgroup[j]) {
if (vopt->geomgroup[geomgroup]) {
START
// construct geom
@@ -1116,7 +1116,7 @@ void mjv_addGeoms(const mjModel* m, mjData* d, const mjvOption* vopt,
// re-center infinite plane
if (m->geom_size[3*i]<=0 || m->geom_size[3*i+1]<=0) {
// vec = headpos - geompos
for (j=0; j<3; j++) {
for (int j=0; j<3; j++) {
vec[j] = 0.5*(scn->camera[0].pos[j] + scn->camera[1].pos[j]) - d->geom_xpos[3*i+j];
}
+2 -2
View File
@@ -1428,7 +1428,7 @@ static void mjGlad_find_coreGL(void) {
* https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176
* https://github.com/glfw/glfw/blob/master/src/context.c#L36
*/
int i, major, minor;
int major, minor;
const char* version;
const char* prefixes[] = {
@@ -1441,7 +1441,7 @@ static void mjGlad_find_coreGL(void) {
version = (const char*) glGetString(GL_VERSION);
if (!version) return;
for (i = 0; prefixes[i]; i++) {
for (int i = 0; prefixes[i]; i++) {
const size_t length = strlen(prefixes[i]);
if (strncmp(version, prefixes[i], length) == 0) {
version += length;
+69 -67
View File
@@ -1656,7 +1656,6 @@ void mjui_update(int section, int item, const mjUI* ui,
}
// draw section(s)
int k;
mjtNum sel;
mjrRect r;
char text[mjMAXUITEXT];
@@ -1776,7 +1775,7 @@ void mjui_update(int section, int item, const mjUI* ui,
drawrectangle(r, rgbpane, rgbpane, con);
// text lines
for (k=0; k<it->multi.nelem; k++) {
for (int k=0; k<it->multi.nelem; k++) {
drawtext(it->multi.name[k],
r.left+g_texthor,
r.bottom+g_textver+(it->multi.nelem-k-1)*(con->charHeight+g_textver),
@@ -1809,35 +1808,37 @@ void mjui_update(int section, int item, const mjUI* ui,
break;
case mjITEM_CHECKINT:
case mjITEM_CHECKBYTE:
if (state) {
rgbdecor = ui->color.check;
case mjITEM_CHECKBYTE: {
if (state) {
rgbdecor = ui->color.check;
}
// get value according to type
int k;
if (it->type==mjITEM_CHECKINT) {
k = *(int*)it->pdata;
} else {
k = *(mjtByte*)it->pdata;
}
// filled or outline
if (k) {
drawrectangle(it->rect, rgbdecor, NULL, con);
} else {
drawrectangle(it->rect, rgbdecor, rgbpane, con);
}
// name
drawtext(it->name,
it->rect.left+g_texthor,
it->rect.bottom+g_textver,
maxwidth, rgbfont, con);
// shortcut
if (ui->mousehelp && it->single.shortcut)
shortcuthelp(it->rect, it->single.modifier, it->single.shortcut,
ui, con);
}
// get value according to type
if (it->type==mjITEM_CHECKINT) {
k = *(int*)it->pdata;
} else {
k = *(mjtByte*)it->pdata;
}
// filled or outline
if (k) {
drawrectangle(it->rect, rgbdecor, NULL, con);
} else {
drawrectangle(it->rect, rgbdecor, rgbpane, con);
}
// name
drawtext(it->name,
it->rect.left+g_texthor,
it->rect.bottom+g_textver,
maxwidth, rgbfont, con);
// shortcut
if (ui->mousehelp && it->single.shortcut)
shortcuthelp(it->rect, it->single.modifier, it->single.shortcut,
ui, con);
break;
case mjITEM_RADIO:
@@ -1859,7 +1860,7 @@ void mjui_update(int section, int item, const mjUI* ui,
drawrectangle(r, rgbdecor, NULL, con);
// element names
for (k=0; k<it->multi.nelem; k++) {
for (int k=0; k<it->multi.nelem; k++) {
r = radioelement(it, k, ui, con);
drawtext(it->multi.name[k],
r.left+g_texthor,
@@ -1868,39 +1869,40 @@ void mjui_update(int section, int item, const mjUI* ui,
}
break;
case mjITEM_RADIOLINE:
if (state) {
rgbdecor = ui->color.radio;
}
case mjITEM_RADIOLINE: {
if (state) {
rgbdecor = ui->color.radio;
}
// name
drawtext(it->name,
s->rcontent.left+g_itemside+g_texthor,
it->rect.bottom+g_textver,
g_label-2*g_texthor, rgbfont, con);
// name
drawtext(it->name,
s->rcontent.left+g_itemside+g_texthor,
it->rect.bottom+g_textver,
g_label-2*g_texthor, rgbfont, con);
// outline
drawrectangle(it->rect, rgbdecor, rgbpane, con);
// outline
drawrectangle(it->rect, rgbdecor, rgbpane, con);
// make separators
makeradioline(it, con, sep);
// make separators
makeradioline(it, con, sep);
// fill selected
k = *(int*)it->pdata;
r = it->rect;
r.left += sep[k];
r.width = sep[k+1] - sep[k];
drawrectangle(r, rgbdecor, NULL, con);
// element names
for (k=0; k<it->multi.nelem; k++) {
// compute rectangle for element
// fill selected
int k = *(int*)it->pdata;
r = it->rect;
r.left += sep[k];
r.width = sep[k+1] - sep[k];
drawrectangle(r, rgbdecor, NULL, con);
// draw centered
drawtextrect(r, it->multi.name[k], rgbfont, con);
// element names
for (int k=0; k<it->multi.nelem; k++) {
// compute rectangle for element
r = it->rect;
r.left += sep[k];
r.width = sep[k+1] - sep[k];
// draw centered
drawtextrect(r, it->multi.name[k], rgbfont, con);
}
}
break;
@@ -1959,7 +1961,7 @@ void mjui_update(int section, int item, const mjUI* ui,
r.height = g_textver;
// draw ticks
for (k=1; k<(int)it->slider.divisions; k++) {
for (int k=1; k<(int)it->slider.divisions; k++) {
r.left = it->rect.left - r.width/2 +
it->rect.width*k/it->slider.divisions;
drawrectangle(r, rgbpane, NULL, con);
@@ -2007,8 +2009,8 @@ void mjui_update(int section, int item, const mjUI* ui,
}
// show cursor
k = textwidth(ui->edittext + ui->editscroll, con,
ui->editcursor - ui->editscroll);
int k = textwidth(ui->edittext + ui->editscroll, con,
ui->editcursor - ui->editscroll);
r.left = it->rect.left + g_texthor + k - SCL(1, con);
r.width = 2*SCL(1, con);
r.bottom = it->rect.bottom + g_textver/2;
@@ -2064,7 +2066,7 @@ void mjui_update(int section, int item, const mjUI* ui,
drawrectangle(r, ui->color.select2, NULL, con);
// hightlight row under mouse
k = findselect(it, ui, state, con);
int k = findselect(it, ui, state, con);
if (k>=0) {
mjrRect r1 = r;
r1.bottom = r.bottom + (it->multi.nelem-1-k)*cellheight;
@@ -2073,7 +2075,7 @@ void mjui_update(int section, int item, const mjUI* ui,
}
// values
for (k=0; k<it->multi.nelem; k++) {
for (int k=0; k<it->multi.nelem; k++) {
drawtext(it->multi.name[k],
r.left+g_texthor,
r.bottom+g_textver+(it->multi.nelem-1-k)*cellheight,
@@ -2223,7 +2225,7 @@ mjuiItem* mjui_event(mjUI* ui, mjuiState* state, const mjrContext* con) {
else if (sect_cur>0 && item_cur<0) {
// double-click: make all sections like this
if (state->doubleclick) {
for (i=0; i<ui->nsect; i++) {
for (int i=0; i<ui->nsect; i++) {
if (ui->sect[i].state<2 && ui->sect[sect_cur-1].state<2) {
ui->sect[i].state = ui->sect[sect_cur-1].state;
}
@@ -2445,7 +2447,7 @@ mjuiItem* mjui_event(mjUI* ui, mjuiState* state, const mjrContext* con) {
case mjKEY_BACKSPACE: // delete before cursor
if (ui->editcursor>0) {
// shift chars after cursor to the left
for (i=ui->editcursor; i<=strlen(ui->edittext); i++) {
for (int i=ui->editcursor; i<=strlen(ui->edittext); i++) {
ui->edittext[i-1] = ui->edittext[i];
}
@@ -2457,7 +2459,7 @@ mjuiItem* mjui_event(mjUI* ui, mjuiState* state, const mjrContext* con) {
case mjKEY_DELETE: // delete after cursor
if (ui->editcursor<strlen(ui->edittext)) {
// shift chars after cursor to the left
for (i=ui->editcursor; i<=strlen(ui->edittext); i++) {
for (int i=ui->editcursor; i<=strlen(ui->edittext); i++) {
ui->edittext[i] = ui->edittext[i+1];
}
}
@@ -2467,7 +2469,7 @@ mjuiItem* mjui_event(mjUI* ui, mjuiState* state, const mjrContext* con) {
key = validkey(key, strlen(ui->edittext), it_edit->type, state);
if (key) {
// shift chars after cursor to the right
for (i=strlen(ui->edittext); i>=ui->editcursor; i--) {
for (int i=strlen(ui->edittext); i>=ui->editcursor; i--) {
ui->edittext[i+1] = ui->edittext[i];
}
@@ -2494,7 +2496,7 @@ mjuiItem* mjui_event(mjUI* ui, mjuiState* state, const mjrContext* con) {
for (int n=0; n<ui->nsect; n++)
if (matchshortcut(state, ui->sect[n].modifier, ui->sect[n].shortcut)) {
// collapse all
for (i=0; i<ui->nsect; i++) {
for (int i=0; i<ui->nsect; i++) {
if (ui->sect[i].state<2) {
ui->sect[i].state = 0;
}
@@ -2516,7 +2518,7 @@ mjuiItem* mjui_event(mjUI* ui, mjuiState* state, const mjrContext* con) {
// search item shortcuts
for (int n=0; n<ui->nsect; n++) {
for (i=0; i<ui->sect[n].nitem; i++) {
for (int i=0; i<ui->sect[n].nitem; i++) {
// get pointer to item
it = ui->sect[n].item + i;;