org.apache.royale.utils.MXMLDataInterpreter.generateMXMLObject = function()

in asdoc/org/apache/royale/utils/MXMLDataInterpreter.js [49:111]


org.apache.royale.utils.MXMLDataInterpreter.generateMXMLObject = function(document, data) {
  var /** @type {number} */ j = 0;
  var /** @type {number} */ m = 0;
  var /** @type {number} */ i = 0;
  var /** @type {Object} */ cls = data[i++];
  var /** @type {Object} */ comp = new cls();
  if (org.apache.royale.utils.Language.is(comp, org.apache.royale.core.IStrand))
    org.apache.royale.utils.MXMLDataInterpreter.initializeStrandBasedObject(document, null, comp, data, i); else {
    //var /** @type {number} */ m = 0;
    //var /** @type {number} */ j = 0;
    var /** @type {string} */ name;
    var /** @type {*} */ simple;
    var /** @type {Object} */ value;
    var /** @type {string} */ id;
    m = (data[i++]) >> 0;
    for (j = 0; j < m; j++) {
      name = org.apache.royale.utils.Language.string(data[i++]);
      simple = data[i++];
      value = data[i++];
      if (simple == null)
        value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLArray(document, null, value);
      else if (simple == false)
        value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLObject(document, value);
      if (name == "id")
        id = value;
      if (name == "document" && !comp.document)
        comp.document = document;
      else if (name == "_id")
        id = value; else if (name == "id") {
        try {
          comp["id"] = value;
        } catch (e) {
        }
      }
      else
        comp[name] = value;
    }
    m = (data[i++]) >> 0;
    for (j = 0; j < m; j++) {
      name = org.apache.royale.utils.Language.string(data[i++]);
      simple = data[i++];
      value = data[i++];
      if (simple == null)
        value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLArray(document, null, value);
      else if (simple == false)
        value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLObject(document, value);
      comp.setStyle(name, value);
    }
    
    m = (data[i++]) >> 0;
    for (j = 0; j < m; j++) {
      name = org.apache.royale.utils.Language.string(data[i++]);
      value = data[i++];
      
      comp.addEventListener(name, goog.bind(org.apache.royale.utils.Language.as(value, Function), document));
    }
    if (id)
      document[id] = comp;
    if (org.apache.royale.utils.Language.is(comp, org.apache.royale.core.IDocument))
      comp.setDocument(document, id);
  }
  return comp;
};