void FieldGenerator::generateOptionalProperty( google::protobuf::io::Printer& p) { p.Print(variables_, "$i$$type$.prototype.get$capital_name$ = function() {\n"); if (oneof_) { p.Print(variables_, "$i$ if (this.$oneof_camel$Case != " "type.$oneof_capital$Case.$all_capital_name$) {\n" "$i$ return undefined;\n" "$i$ } else {\n"); indentUp(); indentUp(); genGet(p); indentDown(); indentDown(); // TODO: Currently, if undefined is passed to oneof field, the entire oneof // is cleared. It may better to ignore undefined value if the4 field is not // the active value at the time. p.Print(variables_, " }\n" " };\n" "$i$$type$.prototype.set$capital_name$ = function(value) {\n" "$i$ this.clear$oneof_capital$();\n" "$i$ this._oneofs[$oneof_index$] = " "type.$oneof_capital$Case.$all_capital_name$;\n"); } else { indentUp(); genGet(p); indentDown(); p.Print(variables_, "$i$}\n" "$i$$type$.prototype.set$capital_name$ = function(value) {\n"); } indentUp(); genSet(p); indentDown(); p.Print(variables_, "$i$};\n" "$i$$type$.prototype.clear$capital_name$ = function() {\n"); indentUp(); genClear(p); indentDown(); if (oneof_) { p.Print(variables_, "$i$ if (this.$oneof_camel$Case == " "type.$oneof_capital$Case.$all_capital_name$) {\n" "$i$ this._oneofs[$oneof_index$] = " "type.$oneof_capital$Case.$oneof_all_capital$_NOT_SET;\n" "$i$ }\n"); } p.Print(variables_, "$i$};\n" "$i$Object.defineProperty(type.prototype, '$name$', {\n" "$i$ get: $type$.prototype.get$capital_name$,\n" "$i$ set: $type$.prototype.set$capital_name$,\n" "$i$});\n\n"); }
// Currently the transfer function used by DFAGen is assumed to be: // Y = gen[n] U (X - kill[n]). OA_ptr<DataFlowSet> ManagerReachingDefs::transfer( OA_ptr<DataFlowSet> xdfset, StmtHandle stmt) { OA_ptr<ReachingDefsDFSet> xdfgenset; xdfgenset = xdfset.convert<ReachingDefsDFSet>(); OA_ptr<ReachingDefsDFSet> x; x = new ReachingDefsDFSet(*xdfgenset); // if debug mode is on print information about transfer function if (debug) { cout << "In transfer: " << endl; cout << "\t Stmt = " << mIR->toString(stmt) << endl; cout << "\t X = "; dumpset(x); } OA_ptr<DataFlowSet> genBaseObj = genSet(stmt, x); OA_ptr<ReachingDefsDFSet> gen = genBaseObj.convert<ReachingDefsDFSet>(); OA_ptr<DataFlowSet> killBaseObj = killSet(stmt, x); OA_ptr<ReachingDefsDFSet> kill = killBaseObj.convert<ReachingDefsDFSet>(); // Add gen[n] to Y OA_ptr<DataFlow::DataFlowSetImplIterator<StmtHandle > > genIter; genIter = new DataFlow::DataFlowSetImplIterator<StmtHandle > (gen); for(; genIter->isValid(); ++(*genIter)) { StmtHandle genVal; genVal = genIter->current(); mReachingDefsMap->insert(stmt, genVal); } // Add X - kill[n] to Y x->minusEqu(*kill); OA_ptr<DataFlow::DataFlowSetImplIterator<StmtHandle > > xIter; xIter = new DataFlow::DataFlowSetImplIterator<StmtHandle > (x); for(; xIter->isValid(); ++(*xIter)) { StmtHandle xVal; xVal = xIter->current(); mReachingDefsMap->insert(stmt, xVal); } // if debug mode is on print information about transfer function if(debug) { cout << "\t gen = "; dumpset(gen); cout << "\t kill = "; dumpset(kill); cout << "\t Y = "; dumpset(mReachingDefsMap->getReachingDefsSet(stmt)); } return mReachingDefsMap->getReachingDefsSet(stmt); }
QMap<QString, QString> CueFile::getMetadata() { QMap<QString, QString> metadata; auto set = genSet(metadata); Cdtext* cdtext = cd_get_cdtext(cd_); if (cdtext) { set("album artist", cdtext_get(PTI_PERFORMER, cdtext)); set("album", cdtext_get(PTI_TITLE, cdtext)); } Rem* rem = cd_get_rem(cd_); if (rem) { set("year", rem_get(REM_DATE, rem)); } return metadata; }
QMap<QString, QString> CueFile::getMetadata(int trackno) { QMap<QString, QString> metadata; auto set = genSet(metadata); Track* track = cd_get_track(cd_, trackno); if (track) { // metadata["track"] = QString::number(trackno); metadata["_cue_offset"] = QString::number(cueLengthToMs(track_get_start(track))); Cdtext* cdtext = track_get_cdtext(track); if (cdtext) { set("artist", cdtext_get(PTI_PERFORMER, cdtext)); set("title", cdtext_get(PTI_TITLE, cdtext)); if (metadata["artist"].isEmpty()) metadata["artist"] = getMetadata().value("album artist"); } } return metadata; }