コード例 #1
0
ファイル: parser.cpp プロジェクト: UIKit0/pyston
AST_stmt* readASTStmt(BufferedReader *reader) {
    uint8_t type = reader->readByte();
    if (VERBOSITY("parsing") >= 2)
        printf("type = %d\n", type);
    if (type == 0)
        return NULL;

    uint8_t checkbyte = reader->readByte();
    assert(checkbyte == 0xae);

    switch (type) {
        case AST_TYPE::Assign:
            return read_assign(reader);
        case AST_TYPE::AugAssign:
            return read_augassign(reader);
        case AST_TYPE::Break:
            return read_break(reader);
        case AST_TYPE::ClassDef:
            return read_classdef(reader);
        case AST_TYPE::Continue:
            return read_continue(reader);
        case AST_TYPE::Expr:
            return read_expr(reader);
        case AST_TYPE::For:
            return read_for(reader);
        case AST_TYPE::FunctionDef:
            return read_functiondef(reader);
        case AST_TYPE::Global:
            return read_global(reader);
        case AST_TYPE::If:
            return read_if(reader);
        case AST_TYPE::Import:
            return read_import(reader);
        case AST_TYPE::ImportFrom:
            return read_importfrom(reader);
        case AST_TYPE::Pass:
            return read_pass(reader);
        case AST_TYPE::Print:
            return read_print(reader);
        case AST_TYPE::Return:
            return read_return(reader);
        case AST_TYPE::While:
            return read_while(reader);
        case AST_TYPE::With:
            return read_with(reader);
        default:
            fprintf(stderr, "Unknown stmt node type (parser.cpp:" STRINGIFY(__LINE__) "): %d\n", type);
            exit(1);
            break;
    }
}
コード例 #2
0
ファイル: global.cpp プロジェクト: LL113/github
boolean Global::ChangeS1S5(int value)
{
  boolean ret = false;
  int nbtap, tot, ct;

  if ( Menu->ChangeS1S5(value) )
  {
    if ( Menu->FirstPage )
    {  
      switch (Menu->S1S5)
      {
      case 1 : // Tap Tempo


        for (ct=TAPTEMPO_MAX-1;ct>0;ct--) tapTempo[ct]=tapTempo[ct-1]; 
        tapTempo[ 0 ] = millis();
        nbtap=0;
        tot=0;
        for ( int ct=0;ct<TAPTEMPO_MAX-1; ct++ )
        {
          if ( tapTempo[ ct ] - tapTempo[ ct + 1] < (60000/TEMPO_MIN) )
          {
            tot +=  ( tapTempo[ct] - tapTempo[ct+1] );
            nbtap++;
          }
        }
        if ( nbtap > 0 )  
        { 
          ParamGlo.Tempo = (uint16_t)60000 / ( tot / nbtap );
          if ( ParamGlo.Tempo < TEMPO_MIN ) ParamGlo.Tempo=TEMPO_MIN;
          if ( ParamGlo.Tempo > TEMPO_MAX ) ParamGlo.Tempo=TEMPO_MAX;
          Menu->SetM1(ParamGlo.Tempo);
          SClock.ChangeTempo();
        }
        break;



      case 3 :
        if (!is_played) {
          ExStart(false);
          lcdM.setCursor(8,3);
          lcdM.print("Stop");
        }
        else
        {
          ExStop();
          lcdM.setCursor(8,3);
          lcdM.print("Play");
        }
        break;
        
      case 2 :
        if (!is_played) {
          ExStart(true);
          lcdM.setCursor(8,3);
          lcdM.print("Stop");
        }
        else
        {
          ExStop();
          lcdM.setCursor(8,3);
          lcdM.print("Play");
        }
        break;
        
        
      case 4 :
        switch (Recorder.mode_Record)
        {
        case  RECORD_OFF:
          Recorder.mode_Record=RECORD_PLAY;
          lcdM.setCursor(13,3);
          lcdM.print("Ply");
          Recorder.cur_Play_Record=0;
          clock_count=0;
          break;

        case  RECORD_PLAY:
          if ( !is_played )
          {
            Recorder.mode_Record=RECORD_ON;
            lcdM.setCursor(13,3);
            lcdM.print("Rec");
          }
          else
          {
            Recorder.mode_Record=RECORD_OFF;
            lcdM.setCursor(13,3);
            lcdM.print("Off");
          }
          break;

        case  RECORD_ON:
          Recorder.mode_Record=RECORD_OFF;
          lcdM.setCursor(13,3);
          lcdM.print("Off");
          break;


        }
        break;

      }
    }        
    else
    {
      switch (Menu->S1S5)
      {
      case 3:
        switch( Menu->curCmd )
        {
        case 0:  /* Load */
          SPOut.AutoOff( ParamGlo.UpperDest );
          SPOut.AutoOff( ParamGlo.LowerDest );

          if ( MySD.OpenFileForRead(MODE_PARAM, Menu->GetFName(FileName) ) )
          {
            Restore();
            MySD.CloseFile();
          }
          PatLed.Show(0);
          UpdateRoute(0);
          DessinPage();
          break;

        case 1:  /* Save */

          if ( MySD.OpenFileForWrite(MODE_PARAM, Menu->MenuFName(FileName) ) )
          {
            Backup();
            MySD.CloseFile();
          }
          PatLed.Show(0);
          break;

        case 2:  /* Load All*/
          SPOut.AutoOff( ParamGlo.UpperDest );
          SPOut.AutoOff( ParamGlo.LowerDest );

          read_global(Menu->GetFName(FileName));
          PatLed.Show(0);
          DessinPage();
          break;


        case 3:  /* Save All*/
          write_global(Menu->MenuFName(FileName) );
          PatLed.Show(0);
          break;


        case 4:  /* Init */

          SPOut.AutoOff( ParamGlo.UpperDest );
          SPOut.AutoOff( ParamGlo.LowerDest );

          if ( Menu->V1 == 0 )
            Init();
          else
            init_global();

          PatLed.Show(0);
          DessinPage();        
          break;



        case 5:
          S4822.Send(CV_1, 400*Menu->V1 );
          S4822.Send(CV_2, 400*Menu->V1);
          S4822.Send(CV_3, 400*Menu->V1 );
          S4822.Send(CV_4, 400*Menu->V1 );
          S4822.Send(CV_5, 400*Menu->V1 );
          S4822.Send(CV_6, 400*Menu->V1 );
          S4822.Send(CV_7, 400*Menu->V1 );
          S4822.Send(CV_8, 400*Menu->V1 );
//          analogWrite(DAC0, 400*Menu->V1 );
//            analogWrite(DAC1, 400*Menu->V1 );
          PatLed.Show(0);
          break;


        case 6: 
          digitalWrite(TRIG_1, Menu->V1 );
          digitalWrite(TRIG_2, Menu->V1 );
          digitalWrite(TRIG_3, Menu->V1 );
          digitalWrite(TRIG_4, Menu->V1 );
          digitalWrite(TRIG_5, Menu->V1 );
          digitalWrite(TRIG_6, Menu->V1 );
          digitalWrite(TRIG_7, Menu->V1 );
          digitalWrite(TRIG_8, Menu->V1 );
          PatLed.Show(0);
          break;
        }
        break;
      }
    }
  }
  return ret;
}
コード例 #3
0
ファイル: regres-main.c プロジェクト: wuyongzheng/codejail
int main (void)
{
	{
		char buff[100];
		strcpy(buff, "abc");
		cj_jail(strcpy, 2, buff, "def");
		presult(1, strcmp(buff, "abc") == 0);
	}

	{
		char buff[100];
		strcpy(buff, "abc");
		cj_jail(strcpy, 2, buff, "def");
		cj_recv(buff, sizeof(buff));
		presult(2, strcmp(buff, "def") == 0);
	}

	cj_jail(set_global, 1, 12345);
	presult(3, cj_jail(get_global, 0) == 12345);
	presult(4, *(int *)cj_jail(get_globalref, 0) == 12345);

	{
		char buff[100];
		strcpy(buff, "Hello World!");
		cj_jail(strtoupper, 1, buff);
		presult(5, strcmp(buff, "Hello World!") == 0);
		cj_recv(buff, sizeof(buff));
		presult(6, strcmp(buff, "HELLO WORLD!") == 0);
	}

	{
		char *buff = malloc(100);
		write_global("foo7");
		presult(7, strcmp(read_globalref(), "foo7") == 0);
		read_global(buff);
		presult(8, strcmp(buff, "foo7") == 0);
		strcpy(buff, "foo8");
		cj_jail(read_global, 1, buff);
		presult(9, strcmp(buff, "foo8") == 0);
		cj_recv(buff, 100);
		presult(10, strcmp(buff, "foo7") == 0);
	}

	{
		const int num = 1000;
		void *arr[num];
		int i;

		srand(1);
		for (i = 0; i < num; i ++) {
			arr[i] = malloc(rand() % 500 + 1);
			if (arr[i] == NULL)
				break;
			if (rand() % 2) {
				int j = rand() % (i + 1);
				free(arr[j]);
				arr[j] = malloc(rand() % 500 + 1);
				if (arr[j] == NULL)
					break;
			}
		}
		presult(11, i == num);
		for (i = 0; i < num; i ++)
			free(arr[i]);

		for (i = 0; i < num; i ++) {
			arr[i] = (void *)cj_jail(malloc, 1, rand() % 500 + 1);
			if (arr[i] == NULL)
				break;
			if (rand() % 2) {
				int j = rand() % (i + 1);
				if (rand() % 2)
					free(arr[j]);
				else
					cj_jail(free, 1, arr[j]);
				arr[j] = (void *)cj_jail(malloc, 1, rand() % 500 + 1);
				if (arr[j] == NULL)
					break;
			}
		}
		presult(12, i == num);
		for (i = 0; i < num; i ++)
			free(arr[i]);
	}

	presult(13, call_callback(callback1, 1) == 4);
	presult(14, cj_jail(call_callback, 2, cj_reg_callback(callback1, NULL, 1), 1) == 4);
	presult(15, cj_jail(call_callback, 2, cj_reg_callback(callback1, callback1_wrapper, 1), 1) == 14);
	presult(16, cj_jail(call_callback, 2, cj_reg_callback(callback2, NULL, 1), 1) == 8);

	return 0;
}