void foreach_gxps_page (const gchar *xps_filename, GXPSPageFunc page_func, gpointer data) { GError *error = NULL; GFile *gfile = g_file_new_for_commandline_arg (xps_filename); GXPSFile *file = gxps_file_new (gfile, &error); if (file == NULL) rerror ("Unable to open %s: %s", xps_filename, error->message); GXPSDocument *doc = gxps_file_get_document (file, 0, &error); if (doc == NULL) rerror ("Unable to open %s: %s", xps_filename, error->message); gint page_count = gxps_document_get_n_pages (doc); xps_range_set_min (range, 1); xps_range_set_max (range, page_count); if (xps_range_is_empty (range)) xps_range_append (range, 1, page_count, 1); gint pi; XpsRangeIter iter; xps_range_iter_init (&iter, range); while (xps_range_iter_next (&iter, &pi)) { GXPSPage *page = gxps_document_get_page (doc, pi-1, &error); gdouble width, height; gxps_page_get_size (page, &width, &height); page_func (page, width, height, data); g_object_unref (page); } }
int inscode (unsigned char code) { if(codesp==MAXCODE) rerror(EMEMORY,0,0); #ifdef _DEBUG_ fprintf(stderr,"Insertando codigo: %d\n",code); #endif machine[codesp++]=code; }
int handleSpecialKeys(SDL_Scancode key) { if(key == SDL_SCANCODE_ESCAPE && (keys[SDL_SCANCODE_LSHIFT] || keys[SDL_SCANCODE_RSHIFT])) { quit = 1; return 1; } else if (key == SDL_SCANCODE_F11) { if(!(SDL_GetWindowFlags(win) & SDL_WINDOW_FULLSCREEN_DESKTOP)) { if(SDL_SetWindowFullscreen(win, SDL_WINDOW_FULLSCREEN_DESKTOP) < 0) rerror("Unable to set window to fullscreen: %s", SDL_GetError()); } else if(SDL_SetWindowFullscreen(win, 0) < 0) { rerror("Unable to set window to windowed: %s", SDL_GetError()); } return 1; } else if(key == SDL_SCANCODE_F12) { char filename[256]; snprintf(filename, sizeof filename, "%s/save.png", initial_dir); bm_save(bmp, filename); rlog("Screenshot saved as %s", filename); return 1; } return 0; }
int init(const char *appTitle, int flags) { flags |= SDL_WINDOW_SHOWN; rlog("Creating Window."); win = SDL_CreateWindow(appTitle, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, screenWidth, screenHeight, flags); if(!win) { rerror("SDL_CreateWindow: %s", SDL_GetError()); return 0; } ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); if(!ren) { rerror("SDL_CreateRenderer: %s", SDL_GetError()); return 0; } SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, filter); rlog("Window Created."); if(SDL_ShowCursor(show_cursor) < 0) { rerror("SDL_ShowCursor: %s", SDL_GetError()); } bmp = bm_create(virt_width, virt_height); tex = SDL_CreateTexture(ren, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, bmp->w, bmp->h); if(!tex) { rerror("SDL_CreateTexture: %s", SDL_GetError()); return 0; } rlog("Texture Created."); reset_keys(); return 1; }
int writebyte(FILE * out,unsigned char byte) { if(!fwrite(&byte,1,1,out)) #ifdef __ASM__ rerror(EFILE,0,0); #else { fprintf(stderr,"I can't write file output\n"); exit(-1); } #endif return 0; }
unsigned char readbyte (FILE * in) { unsigned char car; if(!fread(&car,1,1,in)) #ifdef __ASM__ rerror(EFILE,0,0); #else { fprintf(stderr,"I can't read file input\n"); exit(-1); } #endif return car; }
void ootpu_fit(TString files, TString comments="") { TChain* chain = new TChain("reduced_tree"); chain->Add(files); TH1::SetDefaultSumw2(); TH1F* hrelIso = new TH1F("hrelIso","", 30, 0, 0.5); TH1F* hOOTPU = new TH1F("hOOTPU","", 75, 0, 75); TH1F* hOOTPUvsIso = new TH1F("hOOTPUvsIso",";Out-of-time ints.;Isolation cut efficiency", 15, 0, 75); hrelIso->StatOverflows(true); int n1(0), n2(0); if (files.Contains("20bx25")) { n1=15; n2=75; } else if (files.Contains("S14")) { n1=0; n2=120; } else { // default: 8 TeV scenario n1=0; n2=70; } TString mu("num_gen_muons==1&&muon_reco_match>=0"); int low = 15; for (int bin(1); bin<hOOTPUvsIso->GetNbinsX()+1; bin++) { if (bin<4) continue; if (bin>4) low=low+5; if (low>hOOTPUvsIso->GetBinLowEdge(hOOTPUvsIso->GetNbinsX())) break; TString cuts = Form("(%s)&&(oot_pu>=%d&&oot_pu<%d)",mu.Data(),low,low+4); cout << "Cuts: " << cuts.Data() << endl; chain->Project(hrelIso->GetName(), "muon_relIso", cuts); chain->Project(hOOTPU->GetName(), "oot_pu", cuts); hrelIso->Scale(1/hrelIso->GetEntries()); Double_t left(0.), lerror(0.), right(0.), rerror(0.); left = hrelIso->IntegralAndError(1,12,lerror); right = hrelIso->IntegralAndError(13,31,rerror); float rat_error=sqrt((left*left*rerror*rerror+right*right*lerror*lerror)/((left+right)*(left+right))); printf("bin1: %3.2f +/- %3.3f\n", left/(left+right),rat_error); hOOTPUvsIso->SetBinContent(bin,left/(left+right)); hOOTPUvsIso->SetBinError(bin,rat_error); } hOOTPUvsIso->SetLineColor(1); hOOTPUvsIso->SetMarkerColor(1); hOOTPUvsIso->SetMarkerStyle(20); TCanvas* c1 = new TCanvas(); hOOTPUvsIso->Draw("e1"); // do a linear fit TF1 *flin = new TF1("flin", "1 ++ x", 15, 75); hOOTPUvsIso->Fit(flin); flin=hOOTPUvsIso->GetFunction("flin"); flin->SetLineColor(kBlue); flin->SetLineWidth(2); TString plotTitle ="OOTPU_fit"+comments+".pdf"; c1->Print(plotTitle); // cout << "Rejection rates" << endl; // Double_t left(0.), lerror(0.), right(0.), rerror(0.); // left = hA->IntegralAndError(1,12,lerror); // right = hA->IntegralAndError(13,31,rerror); // float rat_error=sqrt((left*left*rerror*rerror+right*right*lerror*lerror)/((left+right)*(left+right))); // printf("bin1: %3.2f +/- %3.3f\n", left/(left+right),rat_error); // left = hB->IntegralAndError(1,12,lerror); // right = hB->IntegralAndError(13,31,rerror); // rat_error=sqrt((left*left*rerror*rerror+right*right*lerror*lerror)/((left+right)*(left+right))); // printf("bin2: %3.2f +/- %3.3f\n", left/(left+right),rat_error); // left = hC->IntegralAndError(1,12,lerror); // right = hC->IntegralAndError(13,31,rerror); // rat_error=sqrt((left*left*rerror*rerror+right*right*lerror*lerror)/((left+right)*(left+right))); // printf("bin3: %3.2f +/- %3.3f\n", left/(left+right),rat_error); // left = hD->IntegralAndError(1,12,lerror); // right = hD->IntegralAndError(13,31,rerror); // rat_error=sqrt((left*left*rerror*rerror+right*right*lerror*lerror)/((left+right)*(left+right))); // printf("bin4: %3.2f +/- %3.3f\n", left/(left+right),rat_error); }
void ootpu_comparison(TString files, TString var, TString title, int nbins, float low, float high, TString comments="") { TChain* chain = new TChain("reduced_tree"); chain->Add(files); TH1::SetDefaultSumw2(); TH1F* hA = new TH1F("hA",title, nbins, low, high); TH1F* hB = new TH1F("hB",title, nbins, low, high); TH1F* hC = new TH1F("hC",title, nbins, low, high); TH1F* hD = new TH1F("hD",title, nbins, low, high); TH1F* hA_l = new TH1F("hA_l",title, nbins, low, high); TH1F* hB_l = new TH1F("hB_l",title, nbins, low, high); TH1F* hC_l = new TH1F("hC_l",title, nbins, low, high); TH1F* hD_l = new TH1F("hD_l",title, nbins, low, high); hA->SetStats(0); hA->GetYaxis()->SetLabelSize(0.04); //hA->GetYaxis()->SetTitleOffset(1.3); hA->GetXaxis()->SetTitleOffset(1.1); hA->GetXaxis()->SetTitleFont(132); hA->GetXaxis()->SetTitleSize(0.042); hA->GetXaxis()->SetLabelSize(0.04); hA->SetLineWidth(2); // hA->StatOverflows(true); // hB->StatOverflows(true); // hC->StatOverflows(true); // hD->StatOverflows(true); int n1(0), n2(0), n3(0), n4(0), n5(0); if (files.Contains("20bx25")) { n1=5; n2=17; n3=21; n4=25; n5=40; } else if (files.Contains("S14")) { n1=0; n2=25; n3=40; n4=55; n5=120; } else { // default: 8 TeV scenario n1=0; n2=15; n3=22; n4=32; n5=70; } TString mu("num_gen_muons==1&&muon_reco_match>=0"); //if (files.Contains("PU_S10")) { TString cuts = Form("(%s)&&(eoot_pu>=%d&&eoot_pu<%d)",mu.Data(),n1,n2); cout << "Cuts: " << cuts.Data() << endl; chain->Project("hA", var, cuts); cuts = Form("(%s)&&(loot_pu>=%d&&loot_pu<%d)",mu.Data(),n1,n2); chain->Project("hA_l", var, cuts); cuts = Form("(%s)&&(eoot_pu>=%d&&eoot_pu<%d)",mu.Data(),n2,n3); cout << "Cuts: " << cuts.Data() << endl; chain->Project("hB", var, cuts); cuts = Form("(%s)&&(loot_pu>=%d&&loot_pu<%d)",mu.Data(),n2,n3); chain->Project("hB_l", var, cuts); cuts = Form("(%s)&&(eoot_pu>=%d&&eoot_pu<%d)",mu.Data(),n3,n4); cout << "Cuts: " << cuts.Data() << endl; chain->Project("hC", var, cuts); cuts = Form("(%s)&&(loot_pu>=%d&&loot_pu<%d)",mu.Data(),n3,n4); chain->Project("hC_l", var, cuts); cuts = Form("(%s)&&(eoot_pu>=%d)",mu.Data(),n4); cout << "Cuts: " << cuts.Data() << endl; chain->Project("hD", var, cuts); cuts = Form("(%s)&&(loot_pu>=%d)",mu.Data(),n4); chain->Project("hD_l", var, cuts); // } // else { // } float avg1(hA->GetMean()); float avg2(hB->GetMean()); float avg3(hC->GetMean()); float avg4(hD->GetMean()); hA->Scale(1/hA->Integral()); hB->Scale(1/hB->Integral()); hC->Scale(1/hC->Integral()); hD->Scale(1/hD->Integral()); hA->SetLineColor(1); hB->SetLineColor(2); hC->SetLineColor(3); hD->SetLineColor(4); hA->SetLineWidth(2); hB->SetLineWidth(2); hC->SetLineWidth(2); hD->SetLineWidth(2); float avg1_l(hA_l->GetMean()); float avg2_l(hB_l->GetMean()); float avg3_l(hC_l->GetMean()); float avg4_l(hD_l->GetMean()); hA_l->Scale(1/hA_l->Integral()); hB_l->Scale(1/hB_l->Integral()); hC_l->Scale(1/hC_l->Integral()); hD_l->Scale(1/hD_l->Integral()); hA_l->SetLineColor(12); hB_l->SetLineColor(46); hC_l->SetLineColor(8); hD_l->SetLineColor(7); hA_l->SetLineWidth(2); hB_l->SetLineWidth(2); hC_l->SetLineWidth(2); hD_l->SetLineWidth(2); TCanvas* c1 = new TCanvas(); float max = TMath::Max(hA->GetMaximum(), hB->GetMaximum()); if (hC->GetMaximum()>max) max = hC->GetMaximum(); if (hD->GetMaximum()>max) max = hD->GetMaximum(); hA->SetMaximum(max*1.1); hA->Draw("hist"); hB->Draw("hist,same"); hC->Draw("hist,same"); hD->Draw("hist,same"); hA_l->Draw("hist,same"); hB_l->Draw("hist,same"); hC_l->Draw("hist,same"); hD_l->Draw("hist,same"); TLegend* leg = new TLegend(0.42,0.6,0.9,0.9); leg->SetFillStyle(0); char label[1000]; sprintf(label,"%d#leqEarly Ints.<%d (#mu=%3.3f)",n1,n2,avg1); leg->AddEntry(hA,label,"lp"); sprintf(label,"%d#leqEarly Ints.<%d (#mu=%3.3f)",n2,n3,avg2); leg->AddEntry(hB,label,"lp"); sprintf(label,"%d#leqEarly Ints.<%d (#mu=%3.3f)",n3,n4,avg3); leg->AddEntry(hC,label,"lp"); sprintf(label,"Early Ints.>%d (#mu=%3.3f)",n4,avg4); leg->AddEntry(hD,label,"lp"); // leg->Draw(); TString plotTitle ="relIso_vs_early_and_late_OOTPU_"+var+comments+".pdf"; c1->Print(plotTitle); cout << "Rejection rates" << endl; Double_t left(0.), lerror(0.), right(0.), rerror(0.); left = hA->IntegralAndError(1,12,lerror); right = hA->IntegralAndError(13,31,rerror); float rat_error=sqrt((left*left*rerror*rerror+right*right*lerror*lerror)/((left+right)*(left+right))); printf("bin1: %3.2f +/- %3.3f\n", left/(left+right),rat_error); left = hB->IntegralAndError(1,12,lerror); right = hB->IntegralAndError(13,31,rerror); rat_error=sqrt((left*left*rerror*rerror+right*right*lerror*lerror)/((left+right)*(left+right))); printf("bin2: %3.2f +/- %3.3f\n", left/(left+right),rat_error); left = hC->IntegralAndError(1,12,lerror); right = hC->IntegralAndError(13,31,rerror); rat_error=sqrt((left*left*rerror*rerror+right*right*lerror*lerror)/((left+right)*(left+right))); printf("bin3: %3.2f +/- %3.3f\n", left/(left+right),rat_error); left = hD->IntegralAndError(1,12,lerror); right = hD->IntegralAndError(13,31,rerror); rat_error=sqrt((left*left*rerror*rerror+right*right*lerror*lerror)/((left+right)*(left+right))); printf("bin4: %3.2f +/- %3.3f\n", left/(left+right),rat_error); }
char checkpar (symbol sym,symbol ant,char chip) { unsigned char val; if (!ant) return 0; val=ant->val.val; switch(sym->type) { case PLAY: if(val >= 0x24) rerror(E_INV_PAR,PLAY,0); break; case BAT: if(chip > 2) rerror(E_INV_PAR,BAT,chip+1); if (val >= 0x20) rerror(E_INV_PAR,BAT,0); break; case OCT: if(val >= 0x08) rerror(E_INV_PAR,OCT,0); break; case VOL: if(val >= 0x10) rerror(E_INV_PAR,VOL,0); break; case INST: if (chip < 3) rerror(E_INV_PAR,INST,chip+1); if (val >= 0x20) rerror(E_INV_PAR,INST,0); sym->val.val=BAT; break; case LOOP: if (val >= 0x10) rerror(E_INV_PAR,LOOP,0); break; case TIMES: if(val >= 0x5B) rerror(E_INV_PAR,TIMES,0); break; case TIMEP: if(val >= 0x5B) sym->val.val=TIMEL; else sym->val.val=TIMES; break; case INSTL: /*Falta comprobacion superior de rango*/ if (chip<3) rerror(E_INV_PAR,INSTL,chip+1); if( val>0x20) rerror(E_INV_PAR,INSTL,0); sym->val.val=BATL; break; case AMPL: /*Falta comprobacion superior de rango*/ if (chip>2) rerror(E_INV_PAR,AMPL,1); break; case VIB: if (val>=0x10) rerror(E_INV_PAR,VIB,0); break; case DIVSUS: if (val>=0x08) rerror(E_INV_PAR,DIVSUS,0); break; case BATL: /*Falta comprobacion superior de rango*/ if(chip>2) rerror(E_INV_PAR,BATL,chip+1); break; } return 0; }
int syntaxan (int token,symbol * sym) { static unsigned char num_channel; static unsigned char channels[12]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; static symbol ptr; switch (status) { case STATUS_INIT: /* Initial status */ recst = STATUS_INIT; /*Save actual state for error handling */ switch (token) { case VAR: /* Begin variable declaration */ status = STATUS_BEGIN_VAR_DECL; return 0; case CHANNEL: /* Begin channel declaration */ status = STATUS_BEGIN_CHN_DECL; return 0; case IDEN: /* Begin assign statement */ status = STATUS_BEGIN_GLOBAL_ASGN; /* TODO: Join to local assign */ if ((*sym = searchsym(lexcad)) == NULL) rerror(ESYNTAX, EIDEN_NAME, 0); return 0; case LN: /* Empty sentence */ return 1; default: rerror(ESYNTAX, E_INI, 0); } /* Variable declaration states */ case STATUS_BEGIN_VAR_DECL: /* VAR ; variable declaration */ switch (token) { case IDEN: /* Name of the variable */ status = STATUS_NAME_VAR_DECL; *sym = newsymbol(lexcad); return 0; default: rerror(ESYNTAX, E_VAR_DECL, 0); } case STATUS_NAME_VAR_DECL: /* VAR IDEN ; variable declaration */ switch (token) { case LN: /* end of declaration */ status = STATUS_INIT; insvar(*sym); return 1; case COMA: /* multiple declaration */ status = STATUS_BEGIN_VAR_DECL; insvar(*sym); return 0; default: rerror(ESYNTAX, E_VAR_DECL, 0); } /* Channel declaration states */ case STATUS_BEGIN_CHN_DECL: /* CHANNEL ; channel declaration */ switch (token) { case NUMBER: /* Number of the channel */ status = STATUS_END_OF_CHANNEL; num_channel = atoi(lexcad) - 1; if(num_channel >= 12) rerror(ESYNTAX, E_BAD_CH, 0); else { ssymval(syms1, num_channel); *sym = syms1; } if(channels[num_channel]) rerror(ESYNTAX, E_DECL_CH, 0); channels[num_channel]=1; return 0; case IDEN: /* Variable with the name of the channel */ status = STATUS_END_OF_CHANNEL; if ((*sym = searchsym(lexcad)) == NULL) rerror(ESYNTAX, EIDEN_NAME, 0); else if ((num_channel = gsymval(*sym)) >= 12) rerror(ESYNTAX, E_BAD_CH, 0); if (channels[num_channel]) rerror(ESYNTAX, E_DECL_CH, 0); channels[num_channel] = 1; return 0; default: rerror(ESYNTAX, E_CHANNEL, 0); } /* end of channel declaration */ case STATUS_END_OF_CHANNEL: /* CHANNEL IDEN | NUMBER ; end of channl dcl*/ switch (token) { case LN: /* finish channel dcl */ status = STATUS_BEGIN_CHN_BODY; inscode2(CHANNEL, gsymval(*sym)); return 1; default: rerror(ESYNTAX, E_CHANNEL, 0); } /* Begin channel body */ case STATUS_BEGIN_CHN_BODY: /* CHANNEL IDEN | NUMBER LN ; chl body*/ recst = STATUS_BEGIN_CHN_BODY; /*Save state for error handling*/ switch (token) { case LN: return 1; case ENDC: /* end of channel statement */ status = STATUS_BEGIN_ENDC; initsym(syms1, token, token); *sym = syms1; return 0; case PLAY: status = 11; /* play statement */ initexpr(); initsym(syms1, token, token); *sym = syms1; return 0; case SIL: /* silence statement */ case DECOC: /* dec octave statement */ case INCOC: /* inc octave statement */ case ENDL: /* end of loop statement */ case DECV: /* dec volume */ case INCV: /* inc volume */ status = STATUS_END_OF_1CMD; initsym(syms1, token, token); *sym = syms1; return 0; case OCT: /* octave statement */ case VOL: /* volume statement */ case BAT: /* battery statement */ case INST: /* instrument statement */ case LOOP: /* loop statement */ case AMPL: case VIB: /* vibrato statement */ case TIMES: /* time short format statement */ case TIMEL: /* time long format statement */ case DIVSUS: case BATL: /* battery long format statement */ case INSTL: /* instrument long format statement */ case FREC: /* set frequency statement */ status = STATUS_BEGIN_EXP_2CMD; initexpr(); initsym(syms1, token, token); *sym = syms1; return 0; case TIMEP: status = 39; initexpr(); initsym(syms1, token, token); initsym(syms2, NUMBER, 0); ssymsig(syms2, syms1); *sym = syms2; return 0; case REGFM: /* write to fm register statement */ status = 8; initexpr(); initsym(syms1, token, token); *sym = syms1; return 0; case PAR: /* parameter statement */ status = 9; initsym(syms1, token, token); *sym = syms1; return 0; case IDEN: /* Begin a assign statement */ status = 10; if ((*sym = searchsym(lexcad)) == NULL) rerror(ESYNTAX, EIDEN_NAME, 0); return 0; default: rerror(ESYNTAX, E_UNK_COMM, 0); } /* End of 1 word statement */ case STATUS_END_OF_1CMD: switch (token) { case LN: status = STATUS_BEGIN_CHN_BODY; inscodeI(*sym, NULL, num_channel); return 1; default: rerror(ESYNTAX, E_BAD_COMM, 0); } case 8: switch (token) { case NUMBER: status = 21; initsym(syms3, NUMBER, 0); ssymsig(syms3,*sym); *sym = syms3; pushexp(NUMBER, atoi(lexcad)); return 0; case IDEN: status = 21; if((ptr = searchsym(lexcad)) == NULL) rerror(ESYNTAX, EIDEN_NAME, 0); initsym(syms3, NUMBER, 0); ssymsig(syms3,*sym); *sym = syms3; pushexp(NUMBER, gsymval(ptr)); return 0; case PARI: status = 22; ssymsig(syms3,*sym); *sym = syms3; pushexp(token, 0); return 0; default: rerror(ESYNTAX, E_EXP, 0); } case 9: switch (token) { case ENVLOFF: case ENVLON: case SUSON: case HFNUM: case LFNUM: case NOISE: case TONE: status = STATUS_END_OF_1CMD; initsym(syms2, token, token); ssymsig(syms2,*sym); *sym = syms2; return 0; case DECO: status = STATUS_BEGIN_EXP_2CMD; initexpr(); initsym(syms3, token, token); ssymsig(syms3,*sym); *sym = syms3; return 0; case TAMP: status = STATUS_BEGIN_EXP_2CMD; initexpr(); initsym(syms3, token, token); ssymsig(syms3,*sym); *sym = syms3; return 0; case RITMON: status = STATUS_END_OF_1CMD; initsym(syms2, token, token); ssymsig(syms2,*sym); *sym = syms2; return 0; case MELON: status = STATUS_END_OF_1CMD; initsym(syms2, token, token); ssymsig(syms2,*sym); *sym = syms2; return 0; default: rerror(ESYNTAX, E_PAR, 0); } case 10: switch (token) { case EQ: status = STATUS_BEGIN_EXP_2CMD; initexpr(); initsym(syms3, EQ, EQ); ssymsig(syms3, *sym); *sym = syms3; return 0; default: rerror(ESYNTAX, E_ASIG, 0); } case 11: switch(token) { case NUMBER: status = STATUS_PLAY_EXPRESION; initsym(syms2, NUMBER, 0); ssymsig(syms2,*sym); *sym = syms2; pushexp(NUMBER, atoi(lexcad)); return 0; case IDEN: status = STATUS_PLAY_EXPRESION; if((ptr = searchsym(lexcad)) == NULL) rerror(ESYNTAX, EIDEN_NAME, 0); initsym(syms2, NUMBER, 0); ssymsig(syms2,*sym); *sym = syms2; pushexp(NUMBER, gsymval(ptr)); return 0; case PARI: status = STATUS_PLAY_EXPRESION; ssymsig(syms2,*sym); *sym = syms2; pushexp(token, 0); return 0; default: rerror(ESYNTAX, E_EXP, 0); } /* Begin end of channel statement */ case STATUS_BEGIN_ENDC: /* ENDC ; endc command */ switch(token) { case LN: status = 13; inscode(gsymval(*sym)); execute(); return 1; default: rerror(ESYNTAX, E_BAD_COMM, 0); } case 13: recst = 13; switch(token) { case WRITE: status = 38; return 0; case CHANNEL: status = STATUS_BEGIN_CHN_DECL; return 0; case LN: return 1; default: rerror(ESYNTAX, E_INI, 0); } case STATUS_BEGIN_GLOBAL_ASGN: switch(token) { case EQ: status = 15; initexpr(); return 0; default: rerror(ESYNTAX, E_ASIG, 0); } case 15: switch(token) { case NUMBER: status = 26; {pushexp(NUMBER, atoi(lexcad));}; return 0; case IDEN: status = 26; (ptr = searchsym(lexcad))?pushexp(NUMBER, gsymval(ptr)):rerror(ESYNTAX, EIDEN_NAME, 0); return 0; case PARI: status = 27; pushexp(token, 0); return 0; default: rerror(ESYNTAX, E_EXP, 0); } /*******************************************************************/ case STATUS_BEGIN_EXP_2CMD: switch (token) { case PARI: status = STATUS_EXP2_OPERAND; ssymsig(syms2,*sym); *sym = syms2; pushexp(token, 0); return 0; case NUMBER: status = STATUS_EXP2_OPERAND; initsym(syms2, NUMBER, 0); ssymsig(syms2,*sym); *sym = syms2; pushexp(NUMBER, atoi(lexcad)); return 0; case IDEN: status = STATUS_EXP2_OPERAND; if(!(ptr = searchsym(lexcad))) rerror(ESYNTAX, EIDEN_NAME, 0); initsym(syms2, NUMBER, 0); ssymsig(syms2,*sym); *sym = syms2; pushexp(NUMBER, gsymval(ptr)); return 0; default: rerror(ESYNTAX, E_EXP, 0); } case STATUS_EXP2_OPERAND: switch(token) { case NUMBER: status = STATUS_EXP2_OPERAND; pushexp(NUMBER, atoi(lexcad)); return 0; case IDEN: status = STATUS_EXP2_OPERAND; if ((ptr = searchsym(lexcad)) == NULL) rerror(ESYNTAX, EIDEN_NAME, 0); pushexp(NUMBER, gsymval(ptr)); return 0; case ADD: case SUB: case MUL: case DIV: case PARD: case PARI: /* left parenthesis */ status = STATUS_EXP2_OPERAND; pushexp(token, 0); return 0; case LN: status = recst; pushexp(token, 0); ssymval(*sym, evalexpr()); inscodeI(*sym, NULL, num_channel); return 1; default: rerror(ESYNTAX, E_EXP, 0); } /***********************************************/ /* initial assign expression*/ case 26: switch(token) { case ADD: status = 15; pushexp(token, 0); return 0; case SUB: status = 15; pushexp(token, 0); return 0; case MUL: status = 15; pushexp(token, 0); return 0; case DIV: status = 15; pushexp(token, 0); return 0; case LN: status = STATUS_INIT;{pushexp(token, 0);ssymval(*sym, evalexpr());} return 1; default: rerror(ESYNTAX, E_EXP, 0); } case 27: switch(token) { case NUMBER: status = 28;{pushexp(NUMBER, atoi(lexcad));}return 0; case IDEN: status = 28;{symbol ptr;(ptr = searchsym(lexcad))?pushexp(NUMBER, gsymval(ptr)):rerror(ESYNTAX, EIDEN_NAME, 0);}return 0; case PARI: status = 27; pushexp(token, 0); return 0; default: rerror(ESYNTAX, E_EXP, 0); } case 28: switch(token) { case PARD: status = 28; pushexp(token, 0); return 0; case ADD: status = 27; pushexp(token, 0); return 0; case SUB: status = 27; pushexp(token, 0); return 0; case MUL: status = 27; pushexp(token, 0); return 0; case DIV: status = 27; pushexp(token, 0); return 0; case LN: status = STATUS_INIT;{pushexp(token, 0);ssymval(*sym, evalexpr());}return 1; default: rerror(ESYNTAX, E_EXP, 0); } case 30: /*Expresion de play*/ case STATUS_PLAY_EXPRESION: switch(token) { case ADD: case SUB: case MUL: case DIV: status = 32; pushexp(token, 0); return 0; case SOS: status = STATUS_PLAY_SOST; return 0; case BEMOL: status = STATUS_PLAY_BEMOL; return 0; case COMA: case LN: pushexp(LN, 0); ssymval(*sym, evalexpr()); inscodeI(*sym, NULL, num_channel); if (token == COMA) { status = 32; initexpr(); return 0; } else { status = STATUS_BEGIN_CHN_BODY; return 1; } default: rerror(ESYNTAX, E_EXP, 0); } case 32: switch(token) { case NUMBER: status = 33;{pushexp(NUMBER, atoi(lexcad));}return 0; case IDEN: status = 33;{symbol ptr;(ptr = searchsym(lexcad))?pushexp(NUMBER, gsymval(ptr)):rerror(ESYNTAX, EIDEN_NAME, 0);}return 0; case PARI: status = 32; pushexp(token, 0); return 0; default: rerror(ESYNTAX, E_EXP, 0); } case 33: switch(token) { case PARD: status = 33; pushexp(token, 0); return 0; case ADD: status = 34; pushexp(token, 0); return 0; case SUB: status = 34; pushexp(token, 0); return 0; case MUL: status = 34; pushexp(token, 0); return 0; case DIV: status = 34; pushexp(token, 0); return 0; case SOS: status = STATUS_PLAY_SOST;{pushexp(token, 0);ssymval(*sym, evalexpr());}return 0; case BEMOL: status = STATUS_PLAY_BEMOL;{pushexp(token, 0);ssymval(*sym, evalexpr());}return 0; case COMA: status = 32;{pushexp(LN, 0);ssymval(*sym, evalexpr());inscodeI(*sym, NULL, num_channel);initexpr();} return 0; case LN: status = STATUS_BEGIN_CHN_BODY;{pushexp(token, 0);ssymval(*sym, evalexpr());inscodeI(*sym, NULL, num_channel);}return 1; default: rerror(ESYNTAX, E_EXP, 0); } case 34: switch(token) { case NUMBER: status = STATUS_PLAY_EXPRESION;{pushexp(NUMBER, atoi(lexcad));}return 0; case IDEN: status = STATUS_PLAY_EXPRESION;{symbol ptr;(ptr = searchsym(lexcad))?pushexp(NUMBER, gsymval(ptr)):rerror(ESYNTAX, EIDEN_NAME, 0);}return 0; case PARI: status = 32; pushexp(token, 0); return 0; default: rerror(ESYNTAX, E_EXP, 0); } case STATUS_PLAY_BEMOL: switch(token) { case BEMOL: pushexp(SUB, 0); pushexp(NUMBER, 3); return 0; case COMA: case LN: pushexp(LN, 0); ssymval(*sym, evalexpr() - 3); inscodeI(*sym, NULL, num_channel); if (token == LN) { status = STATUS_BEGIN_CHN_BODY; return 1; } else { status = 32; initexpr(); return 0; } default: rerror(ESYNTAX, E_BEMOL, 0); } case STATUS_PLAY_SOST: switch(token) { case SOS: pushexp(ADD, 0); pushexp(NUMBER, 3); return 0; case COMA: case LN: pushexp(LN, 0); ssymval(*sym, evalexpr() + 3); inscodeI(*sym, NULL, num_channel); if (token == LN) { status = STATUS_BEGIN_CHN_BODY; return 1; } else { status = 32; initexpr(); return 0; } default: rerror(ESYNTAX, E_SOS, 0); } case 38: switch(token) { case LN: status = 37;{errorg?rerror(EERROR, 0, 0):writesong();}return 2; /*Fin de entrada*/ default: rerror(ESYNTAX, E_BAD_COMM, 0); } case 39: switch (token) { case NUMBER: status = 40;{pushexp(NUMBER, atoi(lexcad));}return 0; case IDEN: status = 40;{symbol ptr;(ptr = searchsym(lexcad))?pushexp(NUMBER, gsymval(ptr)):rerror(ESYNTAX, EIDEN_NAME, 0);}return 0; case PARI: status = 41; pushexp(token, 0); return 0; default: rerror(ESYNTAX, E_EXP, 0); } case 40: switch(token) { case ADD: status = 39; pushexp(token, 0); return 0; case SUB: status = 39; pushexp(token, 0); return 0; case MUL: status = 39; pushexp(token, 0); return 0; case DIV: status = 39; pushexp(token, 0); return 0; case POINT: status = 43;{pointp = point=32;}; return 0; case LN: status = STATUS_BEGIN_CHN_BODY; { float time; pushexp(token, 0); time = evalexpr(); time/=64.0; time*=(240.0*((float)(gsymval(hz))))/((float)(gsymval(tempo))); if((time-((float)((unsigned char)time))) > 0.5) time=((float)((unsigned char)time))+1.0; else time=(float)((unsigned char)time); ssymval(*sym,(unsigned char)time); inscodeI(*sym, NULL, num_channel); }return 1; default: rerror(ESYNTAX, E_EXP, 0); } case 41: switch(token) { case NUMBER: status = 42;{pushexp(NUMBER, atoi(lexcad));}return 0; case IDEN: status = 42;{symbol ptr;(ptr = searchsym(lexcad))?pushexp(NUMBER, gsymval(ptr)):rerror(ESYNTAX, EIDEN_NAME, 0);}return 0; case PARI: status = 41; pushexp(token, 0); return 0; default: rerror(ESYNTAX, E_EXP, 0); } case 42: switch(token) { case PARD: status = 42; pushexp(token, 0); return 0; case ADD: case SUB: case MUL: case DIV: status = 41; pushexp(token, 0); return 0; case POINT: status = 43;{pointp = point=32;} return 0; case LN: status = STATUS_BEGIN_CHN_BODY; { float time, timei; pushexp(token, 0); time = evalexpr(); time/=64.0; time*=(240.0*((float)(gsymval(hz))))/((float)(gsymval(tempo))); time = fabs(time); timei = floor(time); if(time-timei) time = timei+1.0; else time = timei; ssymval(*sym,(unsigned char)time); inscodeI(*sym, NULL, num_channel); }return 1; default: rerror(ESYNTAX, E_EXP, 0); } case 43: switch(token) { case POINT: pointp >>= 1; point += pointp; return 0; case LN: status = STATUS_BEGIN_CHN_BODY; { float time, timei; pushexp(token, 0); time = evalexpr(); time/=64; time*=(240.0*((float)(gsymval(hz))))/((float)(gsymval(tempo))); time = fabs(time); time+=time*(((float)point)/64.0); timei = floor(time); if(time-timei) time = timei+1.0; else time = timei; ssymval(*sym,(unsigned char)time); inscodeI(*sym, NULL, num_channel); }return 1; } default: rerror(ESYNTAX, E_POINT, 0); } }
static void lfssrvwrite(Devlogfs *d, void *buf, long n) { volatile int locked = 0; qlock(&d->wlock); if(waserror()){ qunlock(&d->wlock); nexterror(); } if (d->state == Hungup) error(Ehungup); Sleep(&d->writerendez, writeok, d); if (convM2S(buf, n, &d->in) != n) { /* * someone is writing drivel; have nothing to do with them anymore * most common cause; trying to mount authenticated */ d->state = Hungup; error(Ehungup); } d->out.tag = d->in.tag; d->out.fid = d->in.fid; d->out.type = d->in.type + 1; if (waserror()) { if (locked) qunlock(&d->qlock); rerror(d, up->env->errstr); goto Replied; } if (d->in.type != Tversion && d->in.type != Tattach) { if (d->state != Attached) error("must be attached"); qlock(&d->qlock); locked = 1; } switch (d->in.type) { case Tauth: error("no authentication needed"); case Tversion: { char *rversion; if (d->state != NeedVersion) error("unexpected Tversion"); if (d->in.tag != NOTAG) error("protocol botch"); /* * check the version string */ if (strcmp(d->in.version, devlogfs9pversion) != 0) rversion = "unknown"; else rversion = devlogfs9pversion; /* * allocate the reply buffer */ d->readbufsize = d->in.msize; if (d->readbufsize > MAXMSIZE) d->readbufsize = MAXMSIZE; d->readbuf = emalloc(d->readbufsize); /* * compose the Rversion */ d->out.msize = d->readbufsize; d->out.version = rversion; d->state = NeedAttach; break; } case Tattach: if (d->state != NeedAttach) error("unexpected attach"); if (d->in.afid != NOFID) error("unexpected afid"); errorany(logfsserverattach(d->server, d->in.fid, d->in.uname, &d->out.qid)); d->state = Attached; break; case Tclunk: errorany(logfsserverclunk(d->server, d->in.fid)); break; case Tcreate: errorany(logfsservercreate(d->server, d->in.fid, d->in.name, d->in.perm, d->in.mode, &d->out.qid)); d->out.iounit = d->readbufsize - 11; break; case Tflush: break; case Topen: errorany(logfsserveropen(d->server, d->in.fid, d->in.mode, &d->out.qid)); d->out.iounit = d->readbufsize - 11; break; case Tread: d->out.data = (char *)d->readbuf + 11; /* TODO - avoid memmove */ errorany(logfsserverread(d->server, d->in.fid, d->in.offset, d->in.count, (uchar *)d->out.data, d->readbufsize - 11, &d->out.count)); break; case Tremove: errorany(logfsserverremove(d->server, d->in.fid)); break; case Tstat: d->out.stat = d->readbuf + 9; /* TODO - avoid memmove */ errorany(logfsserverstat(d->server, d->in.fid, d->out.stat, d->readbufsize - 9, &d->out.nstat)); // print("nstat %d\n", d->out.nstat); break; case Twalk: errorany(logfsserverwalk(d->server, d->in.fid, d->in.newfid, d->in.nwname, d->in.wname, &d->out.nwqid, d->out.wqid)); break; case Twrite: errorany(logfsserverwrite(d->server, d->in.fid, d->in.offset, d->in.count, (uchar *)d->in.data, &d->out.count)); break; case Twstat: errorany(logfsserverwstat(d->server, d->in.fid, d->in.stat, d->in.nstat)); break; default: print("lfssrvwrite: msg %d unimplemented\n", d->in.type); error("unimplemented"); } poperror(); if (locked) qunlock(&d->qlock); reply(d); Replied: poperror(); qunlock(&d->wlock); }
int main(int argc, char *argv[]) { int opt; int fullscreen = 0, resizable = 0, borderless = 0; const char *appTitle = DEFAULT_APP_TITLE; const char *game_dir = NULL; const char *pak_filename = "game.pak"; const char *rlog_filename = "rengine.log"; const char *startstate; struct game_state *gs = NULL; int demo = 0; SDL_version compiled, linked; log_init(rlog_filename); json_error = rerror; if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_AUDIO) < 0) { rerror("SDL_Init: %s", SDL_GetError()); return 1; } atexit(SDL_Quit); while((opt = getopt(argc, argv, "p:g:l:d?")) != -1) { switch(opt) { case 'p': { pak_filename = optarg; } break; case 'g' : { game_dir = optarg; pak_filename = NULL; } break; case 'l': { rlog_filename = optarg; } break; case 'd': { demo = 1; } break; case '?' : { usage(argv[0]); return 1; } } } if(!getcwd(initial_dir, sizeof initial_dir)) { rerror("error in getcwd(): %s", strerror(errno)); return 1; } rlog("Running engine from %s", initial_dir); if(!gdb_new()) { rerror("Unable to create Game Database"); return 1; } re_initialize(); states_initialize(); if(!snd_init()) { rerror("Terminating because of audio problem."); return 1; } /* Don't quite know how to use this in Windows yet. */ SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN); SDL_Log("Testing Log capability."); SDL_VERSION(&compiled); SDL_GetVersion(&linked); rlog("SDL version %d.%d.%d (compile)", compiled.major, compiled.minor, compiled.patch); rlog("SDL version %d.%d.%d (link)", linked.major, linked.minor, linked.patch); if(!demo) { if(pak_filename) { rlog("Loading game PAK file: %s", pak_filename); if(!rs_read_pak(pak_filename)) { rerror("Unable to open PAK file '%s'; Playing demo mode.", pak_filename); goto start_demo; } } else { rlog("Not using a PAK file. Using '%s' instead.", game_dir); if(chdir(game_dir)) { rerror("Unable to change to '%s': %s", game_dir, strerror(errno)); return 1; } } game_ini = re_get_ini(GAME_INI); if(game_ini) { appTitle = ini_get(game_ini, "init", "appTitle", "Rengine"); screenWidth = atoi(ini_get(game_ini, "screen", "width", PARAM(SCREEN_WIDTH))); screenHeight = atoi(ini_get(game_ini, "screen", "height", PARAM(SCREEN_HEIGHT))); resizable = atoi(ini_get(game_ini, "screen", "resizable", "0")) ? SDL_WINDOW_RESIZABLE : 0; borderless = atoi(ini_get(game_ini, "screen", "borderless", "0")) ? SDL_WINDOW_BORDERLESS : 0; fullscreen = atoi(ini_get(game_ini, "screen", "fullscreen", "0")) ? SDL_WINDOW_FULLSCREEN_DESKTOP : 0; fps = atoi(ini_get(game_ini, "screen", "fps", PARAM(DEFAULT_FPS))); if(fps <= 0) fps = DEFAULT_FPS; filter = !my_stricmp(ini_get(game_ini, "screen", "filter", "nearest"), "linear")? "1": "0"; virt_width = atoi(ini_get(game_ini, "virtual", "width", PARAM(VIRT_WIDTH))); virt_height = atoi(ini_get(game_ini, "virtual", "height", PARAM(VIRT_HEIGHT))); show_cursor = atoi(ini_get(game_ini, "mouse", "show-cursor", PARAM(1)))? 1 : 0; startstate = ini_get(game_ini, "init", "startstate", NULL); if(startstate) { gs = get_state(startstate); if(!gs) { rerror("Unable to get initial state: %s", startstate); return 1; } } else { rerror("No initial state in %s", GAME_INI); return 1; } } else { rerror("Unable to load %s", GAME_INI); return 1; } } else { start_demo: rlog("Starting demo mode"); gs = get_demo_state("demo"); } rlog("Initialising..."); if(!init(appTitle, fullscreen | borderless | resizable)) { return 1; } if(!bmf_init()){ rlog("Quiting; Unable to start FreeType font library"); return 1; } assert(gs); rlog("Entering initial state..."); if(!change_state(gs)) { rlog("Quiting, because of earlier problems with the initial state"); return 1; } frameStart = SDL_GetTicks(); rlog("Event loop starting..."); while(!quit) { gs = current_state(); if(!gs) { break; } if(gs->update) gs->update(gs, bmp); advanceFrame(); } rlog("Event loop stopped."); gs = current_state(); if(gs && gs->deinit) gs->deinit(gs); bm_free(bmp); SDL_DestroyTexture(tex); SDL_DestroyRenderer(ren); SDL_DestroyWindow(win); SDL_Quit(); ini_free(game_ini); re_clean_up(); bmf_deinit(); gdb_save("dump.db"); /* For testing the game database functionality. Remove later. */ gdb_close(); snd_deinit(); rlog("Engine shut down."); return 0; }
/* advanceFrame() is kept separate so that it * can be exposed to the scripting system later */ void advanceFrame() { SDL_Event event; Uint32 end; int new_btns, cursor; frame_counter++; render(); end = SDL_GetTicks(); assert(end > frameStart); if(end - frameStart < 1000/fps) SDL_Delay(1000/fps - (end - frameStart)); frameStart = SDL_GetTicks(); cursor = SDL_ShowCursor(-1); if(cursor < 0) { rerror("SDL_ShowCursor: %s", SDL_GetError()); cursor = 0; } if(cursor > 0) { int mx, my; new_btns = SDL_GetMouseState(&mx, &my); /* clicked = buttons that were down in the previous frame and aren't down anymore */ mouse_clck = mouse_btns & ~new_btns; mouse_btns = new_btns; mouse_x = screen_to_virt_x(mx); mouse_y = screen_to_virt_y(my); } else { /* Ignore the mouse if the cursor is gone */ new_btns = 0; mouse_clck = 0; mouse_btns = 0; mouse_x = -1; mouse_y = -1; } last_key = SDL_SCANCODE_UNKNOWN; while(SDL_PollEvent(&event)) { if(event.type == SDL_QUIT) { quit = 1; } else if(event.type == SDL_KEYDOWN) { /* FIXME: Descision whether to stick with scancodes or keycodes? */ int index = event.key.keysym.scancode; /* Special Keys: F11, F12 and Esc */ if(!handleSpecialKeys(event.key.keysym.scancode)) { /* Not a special key: */ assert(index < SDL_NUM_SCANCODES); keys[index] = 1; last_key = index; } } else if(event.type == SDL_KEYUP) { int index = event.key.keysym.scancode; assert(index < SDL_NUM_SCANCODES); keys[index] = 0; /*} else if(event.type == SDL_MOUSEBUTTONDOWN) { } else if(event.type == SDL_MOUSEMOTION) { mouse_x = screen_to_virt_x(event.motion.x); mouse_y = screen_to_virt_y(event.motion.y);*/ } else if(event.type == SDL_WINDOWEVENT) { switch(event.window.event) { case SDL_WINDOWEVENT_RESIZED: screenWidth = event.window.data1; screenHeight = event.window.data2; rlog("Window resized to %dx%d", screenWidth, screenHeight); break; default: break; } } } }
int main (int argc, char *argv[]) { GError *error = NULL; init ("xpstotiff"); GOptionContext *context = g_option_context_new ("- convert a xps document to tiff"); g_option_context_set_description (context, "Report bugs to <" PACKAGE_BUGREPORT ">"); g_option_context_add_main_entries (context, options, NULL); if (!g_option_context_parse (context, &argc, &argv, &error)) rerror ("%s", error->message); if (in_filename == NULL) rerror ("no input file specified"); out_filename = get_output_filename (in_filename[0], out_filename, ".tiff"); TIFF *tif = TIFFOpen (out_filename, "w"); if (tif == NULL) rerror ("Unable to open %s", out_filename); foreach_gxps_page (in_filename[0], xps_page_cb, tif); TIFFClose (tif); return EXIT_SUCCESS; }