示例#1
0
main()
{
    int   nitems;
    char  cline[MAXLINE];
    char  qchar, *malloc();
    Queue *qcreate();

    queue = qcreate( CHAR, 5 );
    printf("ready\n");
    while ( gets(cline) != NULL )  {
        if ( !strcmp( cline, "remove" ))  {
            if ( qremove( &qchar, queue ) == FAILURE )  {
                printf("queue empty\n");
                continue;
            }
            else  {
                printf("%c\n", qchar);
            }
        }
        else if ( !strcmp( cline, "read" ))  {
            if ( qread( &qchar, queue ) == FAILURE )  {
                printf("queue exhausted\n");
                continue;
            }
            else  {
                printf("%c\n", qchar);
            }
        }
        else if ( !strcmp( cline, "reset" ))  {
            qreset( queue );
        }
        else if ( !strcmp( cline, "clear" ))  {
            qclear( queue );
        }
        else if ( !strncmp( cline, "delete ", 7 ))  {
            if ( sscanf( cline, "delete %d", &nitems ) != 1 )  {
                printf("What?\n");
                continue;
            }
            if ( qdelete( nitems, queue ) == FAILURE )
                printf("too many items\n");
        }
        else  {
            qchar = cline[0];
            if ( qadd( &qchar, queue ) == FAILURE )
                printf("queue full\n");
        }
    }

    while ( qremove( &qchar, queue ) == SUCCESS )
        printf("%c\n");
    printf("queue empty\n");
}
示例#2
0
/*
 half OK w95
 */
void subEventLoop() 
{
   short     sVal, sXCurrent, sYCurrent;
   long      lDevice;
	float tmp;

   nCurrentDir = DIR_NONE;
   czclear(0x404040, getgdesc(GD_ZMAX));

   strcpy(Message, ReadyMesg);
   vDrawScene();
   qreset();
   while (TRUE) {

      if (qtest()) {
         lDevice = qread(&sVal);

         switch (lDevice)
			{

			case INPUTCHANGE:
				#ifdef DOFF
					printf(" %d, %d, %d\n", Win_ids[0], Win_ids[1], sVal);
				#endif
				if ( sVal != 0 )
					Input_win = sVal;
				else
					Input_win = -1;
				break;

            case REDRAW:
				if ( sVal == Win_ids[1] && Win_ids[1] != -1 )
					vDrawHelpScene();
				else if ( sVal == Win_ids[0] )
				{
					winset(Win_ids[0]);
               		reshapeviewport();
               		getsize(&nWinWidth, &nWinHeight);
               		getorigin(&nXWinOrigin, &nYWinOrigin);
					tmp = Speed;
					Speed = 0.0;
               		vDrawScene();
					Speed = tmp;
				}
            break;

         case RIGHTMOUSE:
               dopup(mainmenu);
               break;
  
			case SPACEKEY:
				if ( EMode == FALSE )
				{
					p1EventLoop();
					strcpy(Message, "");
				}
				if ( EMode == TRUE )    /* game over */
				{
					vDrawOverScene();
				}
				break;

			case RKEY:
				if ( Last_Actions[FIRE] == TRUE )
					vEventLoop((&vDrawScene));
				break;

         case QKEY:
				if ( Input_win == Win_ids[1] ) 
				{
					winclose(Input_win);
					Win_ids[1] != -1;
				}
				else if ( Input_win == Win_ids[0] )
				{
					winclose(Win_ids[0]);
					if ( Win_ids[1] != -1 )
						winclose(Win_ids[1]);
	               exit(0);
				}
				break;

             default:
               break;
         }
      }
	  else
		getdev(DR_NUM_BUT, Devs, Last_Actions);

   }
}