int mpcmpfixc(Mpint *b, vlong c) { Mpint c1; mpmovecfix(&c1, c); return mpcmpfixfix(b, &c1); }
int mpcmpfixc(Mpint *b, vlong c) { Mpint a; mpmovecfix(&a, c); return mpcmpfixfix(&a, b); }
static int exprcmp(Case *c1, Case *c2) { int ct, n; Node *n1, *n2; // sort non-constants last if(c1->type != Texprconst) return +1; if(c2->type != Texprconst) return -1; n1 = c1->node->left; n2 = c2->node->left; // sort by type (for switches on interface) ct = n1->val.ctype; if(ct != n2->val.ctype) return ct - n2->val.ctype; if(!eqtype(n1->type, n2->type)) { if(n1->type->vargen > n2->type->vargen) return +1; else return -1; } // sort by constant value n = 0; switch(ct) { case CTFLT: n = mpcmpfltflt(n1->val.u.fval, n2->val.u.fval); break; case CTINT: case CTRUNE: n = mpcmpfixfix(n1->val.u.xval, n2->val.u.xval); break; case CTSTR: n = cmpslit(n1, n2); break; } return n; }
static int exprcmp(Case *c1, Case *c2) { int ct, n; Node *n1, *n2; // sort non-constants last if(c1->type != Texprconst) return +1; if(c2->type != Texprconst) return -1; n1 = c1->node->left; n2 = c2->node->left; ct = n1->val.ctype; if(ct != n2->val.ctype) { // invalid program, but return a sort // order so that we can give a better // error later. return ct - n2->val.ctype; } // sort by constant value n = 0; switch(ct) { case CTFLT: n = mpcmpfltflt(n1->val.u.fval, n2->val.u.fval); break; case CTINT: case CTRUNE: n = mpcmpfixfix(n1->val.u.xval, n2->val.u.xval); break; case CTSTR: n = cmpslit(n1, n2); break; } return n; }