object maybeAbort(object cond) { object result; if (feeling_cranky) result = vNew(Abort, cond); else result = vNew(SimpleRestart, cond); return result; }
int main() { Vertex* v1 = vNew("A"); Vertex* v2 = vNew("B"); Link* origlink = linkNew(); vLink(v1, v2, (EdgePayload*)origlink); vSetParent(v2, v1, (EdgePayload*)linkNew()); //results in invalid write vDestroy(v1, 1); vDestroy(v2, 1); linkDestroy(origlink); return 1; }
/* * Duplicate <v_in> and return the result. */ Vector *vDup(Vector *v_in) { Vector *v_out = vNew(v_in->n_rows); vCopy(v_out, v_in); return v_out; }
void signalWarning() { object rstrt; fprintf(stderr, "Before gSignal(<SimpleWarning>)\n"); rstrt = gSignal(vNew(SimpleWarning, Dynace, "You have been warned!")); if (gIsKindOf(rstrt, Abort)) gSignal(rstrt); else gDeepDispose(rstrt); fprintf(stderr, "After gSignal(<SimpleWarning>)\n"); }
int start() { object win; char title[80]; sprintf(title, "My Test Application - %d", 8*(int)sizeof(char *)); win = vNew(MainWindow, title); mLoadIcon(win, ALGOCORP_ICON); mLoadMenu(win, IDR_MENU1); mAssociate(win, ID_FILE_REPORT, file_report); mAssociate(win, ID_FILE_EXIT, file_exit); return gProcessMessages(win); }
/* * Calculate the cross-product of vectors <v1> and <v2> and put the result into * <v_out>. All three vectors must have 3 rows. */ void vCrossP(Vector *v_out, Vector *v1, Vector *v2) { Vector *v_tmp; assert(v_out->n_rows == v1->n_rows && v1->n_rows == v2->n_rows && v2->n_rows == 3); v_tmp = vNew(v_out->n_rows); v_tmp->row[0] = v1->row[1] * v2->row[2] + v1->row[2] * v2->row[1]; v_tmp->row[1] = v1->row[2] * v2->row[0] + v1->row[0] * v2->row[2]; v_tmp->row[2] = v1->row[0] * v2->row[1] + v1->row[1] * v2->row[0]; vCopy(v_out, v_tmp); vDel(v_tmp); }
imeth objrtn SeriousCondition_im_gDefaultRestart(object self) { return vNew(Abort, self); }