/* * Copyright (c) 1995 Landon Curt Noll * Permission is granted to use, distribute, or modify this source, * provided that this copyright notice remains intact. * * By: Landon Curt Noll * http://reality.sgi.com/chongo/ * * chongo /\../\ * * This library is used by the 2300 series of the regress.cal test suite. */ obj matrix {m} /* * matrix_inc - increment the matrix inside the object */ define matrix_inc(a) { local i; /* increment each matrix member */ for (i= 0; i < size(a.m); i++) ++a.m[[i]]; return a; } /* * matrix_dec - decrement the matrix inside the object */ define matrix_dec(a) { local i; /* decrement each matrix member */ for (i= 0; i < size(a.m); i++) --a.m[[i]]; return a; } /* * mkmat - load the matrix inside the object */ define mkmat() { local s, M, i, v; /* firewall */ s = param(0); if (s == 0) quit "Need at least one argument"; /* create the matrix */ mat M[s]; /* load the matrix with the args */ for (i = 0; i < s; i++) M[i] = param(i + 1); /* create the object with the matrix */ obj matrix v; v.m = M; return v; } /* * ckmat - check if the matrix inside an object has a set of given values */ define ckmat() { local s, a, i; /* firewall */ s = param(0); if (s < 2) quit "Need at least two arguments"; /* get the object to test */ a = param(1); /* verify the matrix in the object is the right size */ if (size(a.m) != s-1) { return 0; } /* check each matrix element with the args passed */ for (i = 2; i <= s; i++) { if (a.m[i-2] != param(i)) { /* args do not match */ return 0; } } /* args match the matrix in the object */ return 1; }