void CompilGenerator::generateEnumerationPrefix(const EnumerationSPtr& pEnumeration) { if (pEnumeration->structure().lock()) { if (!table().isEmpty()) { eot(declarationStream); eol(declarationStream); } bAddNewLine = true; } switch (pEnumeration->cast().value()) { case CastableType::ECast::kWeak: line() << "weak "; break; case CastableType::ECast::kStrong: line() << "strong "; break; default: assert(false && "unknown cast type"); } line() << "enum"; TypeSPtr pType = pEnumeration->parameterType().lock(); if (pType) { line() << "<" << pType->name()->value() << ">"; } line() << " " << pEnumeration->name()->value(); openBlock(declarationStream); }
void get_midi_info(MIDI *midi, midi_info *mi) { dword max_dt = 0; mi->tempo_changes = 0; bool gottempo = false; if(midi==NULL) goto done; for(int i=0; midi->track[i].len>0; i++) { byte *data = midi->track[i].data; if(data==NULL) break; dword total_dt=0; mi->event=0; mi->running_status = 0; // tempo info should only be in first track, but sometimes it isn't bool gettempo = (i==0)||(!gottempo); while(!eot(mi) && data - midi->track[i].data < midi->track[i].len) { parse_mtrk(&data,mi); total_dt += mi->dt; if(gettempo && mi->event==0xFF && mi->type==0x51 && mi->tempo_changes<MAX_TEMPO_CHANGES) { mi->tempo[mi->tempo_changes] = tempo(mi->buf); int tempo_c = mi->tempo_c[mi->tempo_changes] = beats(total_dt,midi->divisions); if(mi->tempo_changes==0 && tempo_c!=0) // make sure there is a tempo at beat 0 { mi->tempo_c[0] = 0; mi->tempo_c[1] = tempo_c; mi->tempo[1] = mi->tempo[0]; mi->tempo_changes++; } mi->tempo_changes++; gottempo=true; } } max_dt = zc_max(max_dt,total_dt); } done: if(mi->tempo_changes==0) // then guess { mi->tempo_changes=1; mi->tempo[0]=120.0; mi->tempo_c[0]=0; } mi->len_beats = (midi==NULL) ? 0 : beats(max_dt,midi->divisions); mi->len_sec = (midi==NULL) ? 0 : runtime(mi->len_beats,mi); }
void CompilGenerator::generateStructureSuffix(const StructureSPtr&) { eot(declarationStream); closeBlock(declarationStream); eol(declarationStream); bAddNewLine = false; }
bool TapePlayer::play() { if(eot() && !chooseNewTape()) return false; TapeStep* current = &(tape->strip[pc++]); digitalWrite(pin, current->lightOn ? HIGH : LOW); process->hibernate(random(current->minDelay,current->maxDelay)); return true; }
bool Tokenizer::expect(Token::Type type, const char* text) { if (eot()) return false; if (check(type, text)) return true; return false; }
void get_midi_text(MIDI *midi, midi_info *mi, char *text) // must have called get_midi_info() first { byte buf[1024]; char *out = text; int length=4096; dword nbytes; text[0] = 0; for(int i=0; midi->track[i].len>0; i++) { byte *data = midi->track[i].data; if(data==NULL) break; mi->event=0; mi->running_status = 0; while(!eot(mi) && data - midi->track[i].data < midi->track[i].len) { parse_mtrk(&data,mi); if(mi->event==0xFF) { nbytes=zc_min(mi->nbytes, 1023); memcpy(buf,mi->buf,nbytes); buf[nbytes]=0; if(decode_text_event(out,length,mi->type,buf)) { length-=strlen(out); out+=strlen(out); } } } } }
void calculate_eot_and_sun_rise_transit_set(spa_data *spa) { spa_data sun_rts; double nu, m, h0, n; double alpha[JD_COUNT], delta[JD_COUNT]; double m_rts[SUN_COUNT], nu_rts[SUN_COUNT], h_rts[SUN_COUNT]; double alpha_prime[SUN_COUNT], delta_prime[SUN_COUNT], h_prime[SUN_COUNT]; double h0_prime = -1*(SUN_RADIUS + spa->atmos_refract); int i; sun_rts = *spa; m = sun_mean_longitude(spa->jme); spa->eot = eot(m, spa->alpha, spa->del_psi, spa->epsilon); sun_rts.hour = sun_rts.minute = sun_rts.second = 0; sun_rts.timezone = 0.0; sun_rts.jd = julian_day (sun_rts.year, sun_rts.month, sun_rts.day, sun_rts.hour, sun_rts.minute, sun_rts.second, sun_rts.timezone); calculate_geocentric_sun_right_ascension_and_declination(&sun_rts); nu = sun_rts.nu; sun_rts.delta_t = 0; sun_rts.jd--; for (i = 0; i < JD_COUNT; i++) { calculate_geocentric_sun_right_ascension_and_declination(&sun_rts); alpha[i] = sun_rts.alpha; delta[i] = sun_rts.delta; sun_rts.jd++; } m_rts[SUN_TRANSIT] = approx_sun_transit_time(alpha[JD_ZERO], spa->longitude, nu); h0 = sun_hour_angle_at_rise_set(spa->latitude, delta[JD_ZERO], h0_prime); if (h0 >= 0) { approx_sun_rise_and_set(m_rts, h0); for (i = 0; i < SUN_COUNT; i++) { nu_rts[i] = nu + 360.985647*m_rts[i]; n = m_rts[i] + spa->delta_t/86400.0; alpha_prime[i] = rts_alpha_delta_prime(alpha, n); delta_prime[i] = rts_alpha_delta_prime(delta, n); h_prime[i] = limit_degrees180pm(nu_rts[i] + spa->longitude - alpha_prime[i]); h_rts[i] = rts_sun_altitude(spa->latitude, delta_prime[i], h_prime[i]); } spa->srha = h_prime[SUN_RISE]; spa->ssha = h_prime[SUN_SET]; spa->sta = h_rts[SUN_TRANSIT]; spa->suntransit = dayfrac_to_local_hr(m_rts[SUN_TRANSIT] - h_prime[SUN_TRANSIT] / 360.0, spa->timezone); spa->sunrise = dayfrac_to_local_hr(sun_rise_and_set(m_rts, h_rts, delta_prime, spa->latitude, h_prime, h0_prime, SUN_RISE), spa->timezone); spa->sunset = dayfrac_to_local_hr(sun_rise_and_set(m_rts, h_rts, delta_prime, spa->latitude, h_prime, h0_prime, SUN_SET), spa->timezone); } else spa->srha= spa->ssha= spa->sta= spa->suntransit= spa->sunrise= spa->sunset= -99999; }
double tcf(int d_,float h_,float long_) //time correction factor in min { return eot(d_,h_) - 4 *long_ + 60 * Round(long_/15); }
void CompilGenerator::generateEnumerationSuffix(const EnumerationSPtr&) { eot(declarationStream); closeBlock(declarationStream); }
void CompilGenerator::generateFactorySuffix(const FactorySPtr&) { eot(declarationStream); closeBlock(declarationStream); }
void CompilGenerator::generateSpecimenSuffix(const SpecimenSPtr&) { eot(declarationStream); closeBlock(declarationStream); }
yylex(){ int nstr; extern int yyprevious; while((nstr = yylook()) >= 0) yyfussy: switch(nstr){ case 0: if(yywrap()) return(0); break; case 1: {eot(); return(PLUS);} break; case 2: {eot(); return(MINUS);} break; case 3: {eot(); return(ASTERISK);} break; case 4: {eot(); return(SLASH);} break; case 5: {eot(); return(ASSIGN);} break; case 6: {eot(); return(AMPERSAND);} break; case 7: {eot(); return(DOT);} break; case 8: {eot(); return(COMMA);} break; case 9: {eot(); return(SEMICOLON);} break; case 10: {eot(); return(LPAREN);} break; case 11: {eot(); return(LBRACKET);} break; case 12: {eot(); return(LBRACE);} break; case 13: {eot(); return(UPARROW);} break; case 14: {eot(); return(EQUAL);} break; case 15: {eot(); return(RARROW);} break; case 16: {eot(); return(SHARP);} break; case 17: {eot(); return(LESS);} break; case 18: {eot(); return(GREATER);} break; case 19: {eot(); return(LSEQUAL);} break; case 20: {eot(); return(SUBTYPE);} break; case 21: {eot(); return(GREQUAL);} break; case 22: {eot(); return(DOTDOT);} break; case 23: {eot(); return(COLON);} break; case 24: {eot(); return(RPAREN);} break; case 25: {eot(); return(RBRACKET);} break; case 26: {eot(); return(RBRACE);} break; case 27: {eot(); return(BAR);} break; case 28: {PTRKEYWORDENTRY tempp; eot(); if ((tempp=lookup(yytext))!=NULL){ return(tempp->lexval);} else { strcpy(lastident, yytext); return(IDENT); } } break; case 29: {eot(); return(CARD_CONST);} break; case 30: {eot(); return(REAL_CONST);} break; case 31: { eot(); return(STR_CONST);} break; case 32: { eot(); return(STR_CONST);} break; case 33: {eot(); eol();} break; case 34: {eot(); } break; case 35: /* other spaces */ /* putchar(' ')*/ eot(); break; case 36: {eot(); BEGIN Com; comdepth=1; } break; case 37: {eot(); comdepth++; } break; case 38: {eot(); comdepth--; if (comdepth==0) BEGIN Prog; } break; case 39: {eot(); BEGIN Prag; pragdepth=1; } break; case 40: {eot(); pragdepth++; } break; case 41: {eot(); pragdepth--; if (pragdepth==0) BEGIN Prog; } break; case 42: {eot(); eol();} break; case 43: {eot(); eol();} break; case 44: {eot();} break; case 45: {eot();} break; case 46: {yyless(0); BEGIN Prog;} break; case -1: break; default: fprintf(yyout,"bad switch yylook %d",nstr); } return(0); }