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

in asdoc/org/apache/royale/utils/MXMLDataInterpreter.js [163:261]


org.apache.royale.utils.MXMLDataInterpreter.initializeStrandBasedObject = function(document, parent, comp, data, i) {
  var /** @type {number} */ j = 0;
  var /** @type {number} */ m = 0;
  //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 = null;
  m = (data[i++]) >> 0;
  if (m > 0 && data[0] == "model") {
    m--;
    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, parent, value);
    else if (simple == false)
      value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLObject(document, value);
    comp[name] = value;
    if (org.apache.royale.utils.Language.is(value, org.apache.royale.core.IBead) && org.apache.royale.utils.Language.is(comp, org.apache.royale.core.IStrand))
      comp.addBead(value);
  }
  var /** @type {number} */ beadOffset = (i + (m - 1) * 3) >> 0;
  if (m > 0 && data[beadOffset] == "beads") {
    m--;
  }
  else
    beadOffset = -1;
  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;
  }
  if (beadOffset > -1) {
    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[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( /** @type {Function} */ (value), document));
  }
  if (id)
    document[id] = comp;
  if (org.apache.royale.utils.Language.is(comp, org.apache.royale.core.IDocument))
    comp.setDocument(document, id);
  var /** @type {boolean} */ knownIMXMLDoc;
  var /** @type {Array} */ children = data[i++];
  if (children && org.apache.royale.utils.Language.is(comp, org.apache.royale.core.IMXMLDocument)) {
    comp.setMXMLDescriptor(document, children);
    knownIMXMLDoc = true;
  }
  if (parent && org.apache.royale.utils.Language.is(comp, org.apache.royale.core.IChild))
    parent.addElement(comp, !org.apache.royale.utils.Language.is(parent, org.apache.royale.core.IContainer));
  if (children) {
    if (!(knownIMXMLDoc || org.apache.royale.utils.Language.is(comp, org.apache.royale.core.IMXMLDocument))) {
      org.apache.royale.utils.MXMLDataInterpreter.generateMXMLInstances(document, comp, children);
    }
  }
  return i;
};