Example #1
0
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);
}
Example #3
0
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;
}
Example #4
0
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;
}