int TEST_infix2postfix() { element_type data; char *string = "{fdffldfsdfds()}fdfssd[ff...]"; if (checkBalance(string) == SUCCESS) { printf("success, balance!\n"); } char *infix_string = "12 + 2 * 3 + (4*5+6)*1"; char out_string[100] = ""; infix2postfix(infix_string, out_string); printf("infix string: %s\n", infix_string); printf("postfix string: %s\n", out_string); data = calcPostfix(out_string); printf("postfix result: %d\n", data); return 0; }
void executeDlOval(DisplayInfo *displayInfo, DlElement *dlElement) { DlOval *dlOval = dlElement->structure.oval; /* Don't do anyting if the element is hidden */ if(dlElement->hidden) return; if(displayInfo->traversalMode == DL_EXECUTE && *dlOval->dynAttr.chan[0]) { MedmOval *po; if(dlElement->data) { po = (MedmOval *)dlElement->data; } else { po = (MedmOval *)malloc(sizeof(MedmOval)); dlElement->updateType = DYNAMIC_GRAPHIC; dlElement->data = (void *)po; if(po == NULL) { medmPrintf(1,"\nexecuteDlOval: Memory allocation error\n"); return; } /* Pre-initialize */ po->updateTask = NULL; po->records = NULL; po->dlElement = dlElement; po->updateTask = updateTaskAddTask(displayInfo, &(dlOval->object), ovalDraw, (XtPointer)po); if(po->updateTask == NULL) { medmPrintf(1,"\nexecuteDlOval: Memory allocation error\n"); } else { updateTaskAddDestroyCb(po->updateTask,ovalDestroyCb); updateTaskAddNameCb(po->updateTask,ovalGetRecord); } if(!isStaticDynamic(&dlOval->dynAttr, True)) { po->records = medmAllocateDynamicRecords(&dlOval->dynAttr, ovalUpdateValueCb, NULL, (XtPointer)po); calcPostfix(&dlOval->dynAttr); setDynamicAttrMonitorFlags(&dlOval->dynAttr, po->records); } } } else { /* Static */ Drawable drawable=updateInProgress? displayInfo->updatePixmap:displayInfo->drawingAreaPixmap; dlElement->updateType = STATIC_GRAPHIC; executeDlBasicAttribute(displayInfo,&(dlOval->attr)); if(dlOval->attr.fill == F_SOLID) { XFillArc(display,drawable,displayInfo->gc, dlOval->object.x,dlOval->object.y, dlOval->object.width,dlOval->object.height,0,360*64); } else if(dlOval->attr.fill == F_OUTLINE) { unsigned int lineWidth = (dlOval->attr.width+1)/2; XDrawArc(display,drawable,displayInfo->gc, dlOval->object.x + lineWidth, dlOval->object.y + lineWidth, dlOval->object.width - 2*lineWidth, dlOval->object.height - 2*lineWidth,0,360*64); } } }