Variant f_xcache_get(CStrRef name) { throw NotImplementedException(__func__); }
int64 f_xcache_inc(CStrRef name, int64 value /* = 1 */, int ttl /* = 0 */) { throw NotImplementedException(__func__); }
String f_hphp_recursivedirectoryiterator_getsubpathname(CObjRef obj) { throw NotImplementedException(__func__); }
bool f_xcache_set(CStrRef name, CVarRef value, int ttl /* = 0 */) { throw NotImplementedException(__func__); }
void f_hphp_recursiveiteratoriterator_next(CObjRef obj) { RecursiveIteratorIterator *rii = get_recursiveiteratoriterator(obj); unsigned int size = rii->m_iterators.size(); if (!size) return; Object ci = rii->m_iterators[size-1].first; if (rii->m_mode == HPHP::q_RecursiveIteratorIterator$$SELF_FIRST) { if (!ci.is<RecursiveDirectoryIterator>()) { throw NotImplementedException("this type of iterator"); } RecursiveDirectoryIterator *rdi = ci.getTyped<RecursiveDirectoryIterator>(); String pathName = rdi->getPathName(); if (f_is_dir(pathName) && !rii->m_iterators[size-1].second) { rii->m_iterators[size-1].second = 1; RecursiveDirectoryIterator *ii = NEWOBJ(RecursiveDirectoryIterator)(pathName, rdi->m_flags); rii->m_iterators.push_back(std::make_pair(ii, 0)); ii->incRefCount(); if (ii->isdot()) ii->next(); } else { rdi->next(); rii->m_iterators[size-1].second = 0; } if (f_hphp_recursiveiteratoriterator_valid(obj)) return; decRefObj(rii->m_iterators.back().first); rii->m_iterators.pop_back(); return f_hphp_recursiveiteratoriterator_next(obj); } else if (rii->m_mode == HPHP::q_RecursiveIteratorIterator$$CHILD_FIRST || rii->m_mode == HPHP::q_RecursiveIteratorIterator$$LEAVES_ONLY) { if (!ci.is<RecursiveDirectoryIterator>()) { throw NotImplementedException("this type of iterator"); } RecursiveDirectoryIterator *rdi = ci.getTyped<RecursiveDirectoryIterator>(); String pathName = rdi->getPathName(); if (pathName.empty()) { decRefObj(rii->m_iterators.back().first); rii->m_iterators.pop_back(); return f_hphp_recursiveiteratoriterator_next(obj); } else if (f_is_dir(pathName)) { if (!rii->m_iterators[size-1].second) { rii->m_iterators[size-1].second = 1; RecursiveDirectoryIterator *ii = NEWOBJ(RecursiveDirectoryIterator)(pathName, rdi->m_flags); rii->m_iterators.push_back(std::make_pair(ii, 0)); ii->incRefCount(); ii->rewind(); if (f_hphp_recursiveiteratoriterator_valid(obj)) return; return f_hphp_recursiveiteratoriterator_next(obj); } else { // CHILD_FIRST: 0 - drill down; 1 - visit 2 - next // LEAVES_ONLY: 0 - drill down; 1 - next if (rii->m_mode == HPHP::q_RecursiveIteratorIterator$$CHILD_FIRST && rii->m_iterators[size-1].second == 1) { rii->m_iterators[size-1].second = 2; return; } } } rii->m_iterators[size-1].second = 0; rdi->next(); if (f_hphp_recursiveiteratoriterator_valid(obj)) return; return f_hphp_recursiveiteratoriterator_next(obj); } else { if (!ci.is<RecursiveDirectoryIterator>()) { throw NotImplementedException("this type of iterator"); } RecursiveDirectoryIterator *rdi = ci.getTyped<RecursiveDirectoryIterator>(); assert(rii->m_iterators[size-1].second == 0); rdi->next(); } }
std::string Object::getDescription() const { throw NotImplementedException(); }
void Object::getTexture() const { throw NotImplementedException(); }
void XInputSimulatorImplMacOs::initCurrentMousePosition() { throw NotImplementedException(); }
String StringUtil::HtmlEncodeExtra(CStrRef input, QuoteStyle quoteStyle, const char *charset, bool nbsp, Array extra) { if (input.empty()) return input; assert(charset); int flags = STRING_HTML_ENCODE_UTF8; if (nbsp) { flags |= STRING_HTML_ENCODE_NBSP; } if (RuntimeOption::Utf8izeReplace) { flags |= STRING_HTML_ENCODE_UTF8IZE_REPLACE; } if (!*charset || strcasecmp(charset, "UTF-8") == 0) { } else if (strcasecmp(charset, "ISO-8859-1") == 0) { flags &= ~STRING_HTML_ENCODE_UTF8; } else { throw NotImplementedException(charset); } const AsciiMap *am; AsciiMap tmp; switch (quoteStyle) { case FBUtf8Only: am = &mapNothing; flags |= STRING_HTML_ENCODE_HIGH; break; case FBUtf8: am = &mapBothQuotes; flags |= STRING_HTML_ENCODE_HIGH; break; case BothQuotes: am = &mapBothQuotes; break; case DoubleQuotes: am = &mapDoubleQuotes; break; case NoQuotes: am = &mapNoQuotes; break; default: am = &mapNothing; raise_error("Unknown quote style: %d", (int)quoteStyle); } if (quoteStyle != FBUtf8Only && extra.toBoolean()) { tmp = *am; am = &tmp; for (ArrayIter iter(extra); iter; ++iter) { String item = iter.second().toString(); char c = item.data()[0]; tmp.map[c & 64 ? 1 : 0] |= 1uLL << (c & 63); } } int len = input.size(); char *ret = string_html_encode_extra(input, len, (StringHtmlEncoding)flags, am); if (!ret) { raise_error("HtmlEncode called on too large input (%d)", len); } return String(ret, len, AttachString); }