void staticArrayStreamer(const ArrayData* ad, std::string& out) { if (ad->isVecArray()) out += "vec("; else if (ad->isDict()) out += "dict("; else if (ad->isKeyset()) out += "keyset("; else { assertx(ad->isPHPArray()); if (ad->isVArray()) out += "varray("; else if (ad->isDArray()) out += "darray("; else out += "array("; } if (!ad->empty()) { bool comma = false; for (ArrayIter it(ad); !it.end(); it.next()) { if (comma) { out += ","; } else { comma = true; } Variant key = it.first(); if (!ad->isVecArray() && !ad->isKeyset()) { staticStreamer(key.asTypedValue(), out); out += "=>"; } Variant val = it.second(); staticStreamer(val.asTypedValue(), out); } } out += ")"; }
void PreClass::Prop::prettyPrint(std::ostream& out) const { out << "Property "; if (m_attrs & AttrStatic) { out << "static "; } if (m_attrs & AttrPublic) { out << "public "; } if (m_attrs & AttrProtected) { out << "protected "; } if (m_attrs & AttrPrivate) { out << "private "; } if (m_attrs & AttrPersistent) { out << "(persistent) "; } out << m_preClass->name()->data() << "::" << m_name->data() << " = "; if (m_val.m_type == KindOfUninit) { out << "<non-scalar>"; } else { std::stringstream ss; staticStreamer(&m_val, ss); out << ss.str(); } out << std::endl; }
void PreClass::Const::prettyPrint(std::ostream& out) const { out << "Constant " << m_preClass->name()->data() << "::" << m_name->data() << " = "; if (m_val.m_type == KindOfUninit) { out << "<non-scalar>"; } else { std::stringstream ss; staticStreamer(&m_val, ss); out << ss.str(); } out << std::endl; }