Example #1
0
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);
	}
    }
}