Get rid of ext_hhvm_noinline.cpp, part 1
Post-hphpc, declaring builtins as inline is useless, which obviates the need for this layer. This doesn't fully delete the file, because I wanted to keep mindless parts and use-your-brain parts separate. This is the mindless part. The remaining functions in noinline.cpp are no-inline wrappers around (a) a function that isn't defined in an extension, call_user_func_array, and (b) calling polymorphic is_* functions, which can probably mostly go away now. But I wanted to exercise more care around those, so they'll come in a followup diff.
Esse commit está contido em:
@@ -240,6 +240,45 @@ Variant f_apc_cache_info(int64_t cache_id /* = 0 */, bool limited /* = false */)
|
||||
return CREATE_MAP1("start_time", start_time());
|
||||
}
|
||||
|
||||
Array f_apc_sma_info(bool limited /* = false */) {
|
||||
return Array::Create();
|
||||
}
|
||||
bool f_apc_define_constants(CStrRef key, CStrRef constants,
|
||||
bool case_sensitive /* = true */,
|
||||
int64_t cache_id /* = 0 */) {
|
||||
throw NotSupportedException(__func__, "dynamic coding");
|
||||
}
|
||||
bool f_apc_load_constants(CStrRef key, bool case_sensitive /* = true */,
|
||||
int64_t cache_id /* = 0 */) {
|
||||
throw NotSupportedException(__func__, "dynamic coding");
|
||||
}
|
||||
bool f_apc_compile_file(CStrRef filename, bool atomic /* = true */,
|
||||
int64_t cache_id /* = 0 */) {
|
||||
throw NotSupportedException(__func__, "dynamic coding");
|
||||
}
|
||||
Array f_apc_filehits() {
|
||||
throw NotSupportedException(__func__, "feature not supported");
|
||||
}
|
||||
Variant f_apc_delete_file(CVarRef keys, int64_t cache_id /* = 0 */) {
|
||||
throw NotSupportedException(__func__, "feature not supported");
|
||||
}
|
||||
Variant f_apc_bin_dump(int64_t cache_id /* = 0 */, CVarRef filter /* = null_variant */) {
|
||||
throw NotSupportedException(__func__, "feature not supported");
|
||||
}
|
||||
bool f_apc_bin_load(CStrRef data, int64_t flags /* = 0 */, int64_t cache_id /* = 0 */) {
|
||||
throw NotSupportedException(__func__, "feature not supported");
|
||||
}
|
||||
Variant f_apc_bin_dumpfile(int64_t cache_id, CVarRef filter,
|
||||
CStrRef filename, int64_t flags /* = 0 */,
|
||||
CObjRef context /* = uninit_null() */) {
|
||||
throw NotSupportedException(__func__, "feature not supported");
|
||||
}
|
||||
bool f_apc_bin_loadfile(CStrRef filename, CObjRef context /* = uninit_null() */,
|
||||
int64_t flags /* = 0 */, int64_t cache_id /* = 0 */) {
|
||||
throw NotSupportedException(__func__, "feature not supported");
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// loading APC from archive files
|
||||
|
||||
|
||||
@@ -261,6 +261,71 @@ TypedValue* fg_apc_delete(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_apc_compile_file(HPHP::String const&, bool, long)
|
||||
_ZN4HPHP18f_apc_compile_fileERKNS_6StringEbl
|
||||
|
||||
(return value) => rax
|
||||
filename => rdi
|
||||
atomic => rsi
|
||||
cache_id => rdx
|
||||
*/
|
||||
|
||||
bool fh_apc_compile_file(Value* filename, bool atomic, long cache_id) asm("_ZN4HPHP18f_apc_compile_fileERKNS_6StringEbl");
|
||||
|
||||
TypedValue * fg1_apc_compile_file(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_apc_compile_file(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
switch (count) {
|
||||
default: // count >= 3
|
||||
if ((args-2)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-2);
|
||||
}
|
||||
case 2:
|
||||
if ((args-1)->m_type != KindOfBoolean) {
|
||||
tvCastToBooleanInPlace(args-1);
|
||||
}
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-0)->m_type)) {
|
||||
tvCastToStringInPlace(args-0);
|
||||
}
|
||||
rv->m_data.num = (fh_apc_compile_file(&args[-0].m_data, (count > 1) ? (bool)(args[-1].m_data.num) : (bool)(true), (count > 2) ? (long)(args[-2].m_data.num) : (long)(0))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_apc_compile_file(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 3LL) {
|
||||
if ((count <= 2 || (args-2)->m_type == KindOfInt64) && (count <= 1 || (args-1)->m_type == KindOfBoolean) && IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_apc_compile_file(&args[-0].m_data, (count > 1) ? (bool)(args[-1].m_data.num) : (bool)(true), (count > 2) ? (long)(args[-2].m_data.num) : (long)(0))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_apc_compile_file(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("apc_compile_file", count, 1, 3, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_apc_cache_info(long, bool)
|
||||
_ZN4HPHP16f_apc_cache_infoElb
|
||||
@@ -372,6 +437,277 @@ TypedValue* fg_apc_clear_cache(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_apc_define_constants(HPHP::String const&, HPHP::String const&, bool, long)
|
||||
_ZN4HPHP22f_apc_define_constantsERKNS_6StringES2_bl
|
||||
|
||||
(return value) => rax
|
||||
key => rdi
|
||||
constants => rsi
|
||||
case_sensitive => rdx
|
||||
cache_id => rcx
|
||||
*/
|
||||
|
||||
bool fh_apc_define_constants(Value* key, Value* constants, bool case_sensitive, long cache_id) asm("_ZN4HPHP22f_apc_define_constantsERKNS_6StringES2_bl");
|
||||
|
||||
TypedValue * fg1_apc_define_constants(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_apc_define_constants(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
switch (count) {
|
||||
default: // count >= 4
|
||||
if ((args-3)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-3);
|
||||
}
|
||||
case 3:
|
||||
if ((args-2)->m_type != KindOfBoolean) {
|
||||
tvCastToBooleanInPlace(args-2);
|
||||
}
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-1)->m_type)) {
|
||||
tvCastToStringInPlace(args-1);
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-0)->m_type)) {
|
||||
tvCastToStringInPlace(args-0);
|
||||
}
|
||||
rv->m_data.num = (fh_apc_define_constants(&args[-0].m_data, &args[-1].m_data, (count > 2) ? (bool)(args[-2].m_data.num) : (bool)(true), (count > 3) ? (long)(args[-3].m_data.num) : (long)(0))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_apc_define_constants(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 2LL && count <= 4LL) {
|
||||
if ((count <= 3 || (args-3)->m_type == KindOfInt64) && (count <= 2 || (args-2)->m_type == KindOfBoolean) && IS_STRING_TYPE((args-1)->m_type) && IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_apc_define_constants(&args[-0].m_data, &args[-1].m_data, (count > 2) ? (bool)(args[-2].m_data.num) : (bool)(true), (count > 3) ? (long)(args[-3].m_data.num) : (long)(0))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 4);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_apc_define_constants(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 4);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("apc_define_constants", count, 2, 4, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 4);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_apc_load_constants(HPHP::String const&, bool, long)
|
||||
_ZN4HPHP20f_apc_load_constantsERKNS_6StringEbl
|
||||
|
||||
(return value) => rax
|
||||
key => rdi
|
||||
case_sensitive => rsi
|
||||
cache_id => rdx
|
||||
*/
|
||||
|
||||
bool fh_apc_load_constants(Value* key, bool case_sensitive, long cache_id) asm("_ZN4HPHP20f_apc_load_constantsERKNS_6StringEbl");
|
||||
|
||||
TypedValue * fg1_apc_load_constants(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_apc_load_constants(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
switch (count) {
|
||||
default: // count >= 3
|
||||
if ((args-2)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-2);
|
||||
}
|
||||
case 2:
|
||||
if ((args-1)->m_type != KindOfBoolean) {
|
||||
tvCastToBooleanInPlace(args-1);
|
||||
}
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-0)->m_type)) {
|
||||
tvCastToStringInPlace(args-0);
|
||||
}
|
||||
rv->m_data.num = (fh_apc_load_constants(&args[-0].m_data, (count > 1) ? (bool)(args[-1].m_data.num) : (bool)(true), (count > 2) ? (long)(args[-2].m_data.num) : (long)(0))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_apc_load_constants(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 3LL) {
|
||||
if ((count <= 2 || (args-2)->m_type == KindOfInt64) && (count <= 1 || (args-1)->m_type == KindOfBoolean) && IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_apc_load_constants(&args[-0].m_data, (count > 1) ? (bool)(args[-1].m_data.num) : (bool)(true), (count > 2) ? (long)(args[-2].m_data.num) : (long)(0))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_apc_load_constants(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("apc_load_constants", count, 1, 3, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_apc_sma_info(bool)
|
||||
_ZN4HPHP14f_apc_sma_infoEb
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
limited => rsi
|
||||
*/
|
||||
|
||||
Value* fh_apc_sma_info(Value* _rv, bool limited) asm("_ZN4HPHP14f_apc_sma_infoEb");
|
||||
|
||||
TypedValue * fg1_apc_sma_info(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_apc_sma_info(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfArray;
|
||||
tvCastToBooleanInPlace(args-0);
|
||||
fh_apc_sma_info((&rv->m_data), (count > 0) ? (bool)(args[-0].m_data.num) : (bool)(false));
|
||||
if (rv->m_data.num == 0LL) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_apc_sma_info(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count <= 1LL) {
|
||||
if ((count <= 0 || (args-0)->m_type == KindOfBoolean)) {
|
||||
rv.m_type = KindOfArray;
|
||||
fh_apc_sma_info((&rv.m_data), (count > 0) ? (bool)(args[-0].m_data.num) : (bool)(false));
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_apc_sma_info(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_toomany_arguments_nr("apc_sma_info", 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_apc_filehits()
|
||||
_ZN4HPHP14f_apc_filehitsEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_apc_filehits(Value* _rv) asm("_ZN4HPHP14f_apc_filehitsEv");
|
||||
|
||||
TypedValue* fg_apc_filehits(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfArray;
|
||||
fh_apc_filehits((&rv.m_data));
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("apc_filehits", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_apc_delete_file(HPHP::Variant const&, long)
|
||||
_ZN4HPHP17f_apc_delete_fileERKNS_7VariantEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
keys => rsi
|
||||
cache_id => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_apc_delete_file(TypedValue* _rv, TypedValue* keys, long cache_id) asm("_ZN4HPHP17f_apc_delete_fileERKNS_7VariantEl");
|
||||
|
||||
TypedValue * fg1_apc_delete_file(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_apc_delete_file(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
tvCastToInt64InPlace(args-1);
|
||||
fh_apc_delete_file((rv), (args-0), (count > 1) ? (long)(args[-1].m_data.num) : (long)(0));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_apc_delete_file(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 2LL) {
|
||||
if ((count <= 1 || (args-1)->m_type == KindOfInt64)) {
|
||||
fh_apc_delete_file((&(rv)), (args-0), (count > 1) ? (long)(args[-1].m_data.num) : (long)(0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_apc_delete_file(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("apc_delete_file", count, 1, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_apc_inc(HPHP::String const&, long, HPHP::VRefParamValue const&, long)
|
||||
_ZN4HPHP9f_apc_incERKNS_6StringElRKNS_14VRefParamValueEl
|
||||
@@ -631,6 +967,267 @@ TypedValue* fg_apc_exists(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_apc_bin_dump(long, HPHP::Variant const&)
|
||||
_ZN4HPHP14f_apc_bin_dumpElRKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
cache_id => rsi
|
||||
filter => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_apc_bin_dump(TypedValue* _rv, long cache_id, TypedValue* filter) asm("_ZN4HPHP14f_apc_bin_dumpElRKNS_7VariantE");
|
||||
|
||||
TypedValue * fg1_apc_bin_dump(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_apc_bin_dump(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
tvCastToInt64InPlace(args-0);
|
||||
fh_apc_bin_dump((rv), (count > 0) ? (long)(args[-0].m_data.num) : (long)(0), (count > 1) ? (args-1) : (TypedValue*)(&null_variant));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_apc_bin_dump(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count <= 2LL) {
|
||||
if ((count <= 0 || (args-0)->m_type == KindOfInt64)) {
|
||||
fh_apc_bin_dump((&(rv)), (count > 0) ? (long)(args[-0].m_data.num) : (long)(0), (count > 1) ? (args-1) : (TypedValue*)(&null_variant));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_apc_bin_dump(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_toomany_arguments_nr("apc_bin_dump", 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_apc_bin_load(HPHP::String const&, long, long)
|
||||
_ZN4HPHP14f_apc_bin_loadERKNS_6StringEll
|
||||
|
||||
(return value) => rax
|
||||
data => rdi
|
||||
flags => rsi
|
||||
cache_id => rdx
|
||||
*/
|
||||
|
||||
bool fh_apc_bin_load(Value* data, long flags, long cache_id) asm("_ZN4HPHP14f_apc_bin_loadERKNS_6StringEll");
|
||||
|
||||
TypedValue * fg1_apc_bin_load(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_apc_bin_load(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
switch (count) {
|
||||
default: // count >= 3
|
||||
if ((args-2)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-2);
|
||||
}
|
||||
case 2:
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-0)->m_type)) {
|
||||
tvCastToStringInPlace(args-0);
|
||||
}
|
||||
rv->m_data.num = (fh_apc_bin_load(&args[-0].m_data, (count > 1) ? (long)(args[-1].m_data.num) : (long)(0), (count > 2) ? (long)(args[-2].m_data.num) : (long)(0))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_apc_bin_load(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 3LL) {
|
||||
if ((count <= 2 || (args-2)->m_type == KindOfInt64) && (count <= 1 || (args-1)->m_type == KindOfInt64) && IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_apc_bin_load(&args[-0].m_data, (count > 1) ? (long)(args[-1].m_data.num) : (long)(0), (count > 2) ? (long)(args[-2].m_data.num) : (long)(0))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_apc_bin_load(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("apc_bin_load", count, 1, 3, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_apc_bin_dumpfile(long, HPHP::Variant const&, HPHP::String const&, long, HPHP::Object const&)
|
||||
_ZN4HPHP18f_apc_bin_dumpfileElRKNS_7VariantERKNS_6StringElRKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
cache_id => rsi
|
||||
filter => rdx
|
||||
filename => rcx
|
||||
flags => r8
|
||||
context => r9
|
||||
*/
|
||||
|
||||
TypedValue* fh_apc_bin_dumpfile(TypedValue* _rv, long cache_id, TypedValue* filter, Value* filename, long flags, Value* context) asm("_ZN4HPHP18f_apc_bin_dumpfileElRKNS_7VariantERKNS_6StringElRKNS_6ObjectE");
|
||||
|
||||
TypedValue * fg1_apc_bin_dumpfile(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_apc_bin_dumpfile(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
switch (count) {
|
||||
default: // count >= 5
|
||||
if ((args-4)->m_type != KindOfObject) {
|
||||
tvCastToObjectInPlace(args-4);
|
||||
}
|
||||
case 4:
|
||||
if ((args-3)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-3);
|
||||
}
|
||||
case 3:
|
||||
break;
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-2)->m_type)) {
|
||||
tvCastToStringInPlace(args-2);
|
||||
}
|
||||
if ((args-0)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-0);
|
||||
}
|
||||
Object defVal4 = uninit_null();
|
||||
fh_apc_bin_dumpfile((rv), (long)(args[-0].m_data.num), (args-1), &args[-2].m_data, (count > 3) ? (long)(args[-3].m_data.num) : (long)(0), (count > 4) ? &args[-4].m_data : (Value*)(&defVal4));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_apc_bin_dumpfile(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 3LL && count <= 5LL) {
|
||||
if ((count <= 4 || (args-4)->m_type == KindOfObject) && (count <= 3 || (args-3)->m_type == KindOfInt64) && IS_STRING_TYPE((args-2)->m_type) && (args-0)->m_type == KindOfInt64) {
|
||||
Object defVal4 = uninit_null();
|
||||
fh_apc_bin_dumpfile((&(rv)), (long)(args[-0].m_data.num), (args-1), &args[-2].m_data, (count > 3) ? (long)(args[-3].m_data.num) : (long)(0), (count > 4) ? &args[-4].m_data : (Value*)(&defVal4));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 5);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_apc_bin_dumpfile(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 5);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("apc_bin_dumpfile", count, 3, 5, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 5);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_apc_bin_loadfile(HPHP::String const&, HPHP::Object const&, long, long)
|
||||
_ZN4HPHP18f_apc_bin_loadfileERKNS_6StringERKNS_6ObjectEll
|
||||
|
||||
(return value) => rax
|
||||
filename => rdi
|
||||
context => rsi
|
||||
flags => rdx
|
||||
cache_id => rcx
|
||||
*/
|
||||
|
||||
bool fh_apc_bin_loadfile(Value* filename, Value* context, long flags, long cache_id) asm("_ZN4HPHP18f_apc_bin_loadfileERKNS_6StringERKNS_6ObjectEll");
|
||||
|
||||
TypedValue * fg1_apc_bin_loadfile(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_apc_bin_loadfile(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
switch (count) {
|
||||
default: // count >= 4
|
||||
if ((args-3)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-3);
|
||||
}
|
||||
case 3:
|
||||
if ((args-2)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-2);
|
||||
}
|
||||
case 2:
|
||||
if ((args-1)->m_type != KindOfObject) {
|
||||
tvCastToObjectInPlace(args-1);
|
||||
}
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-0)->m_type)) {
|
||||
tvCastToStringInPlace(args-0);
|
||||
}
|
||||
Object defVal1 = uninit_null();
|
||||
rv->m_data.num = (fh_apc_bin_loadfile(&args[-0].m_data, (count > 1) ? &args[-1].m_data : (Value*)(&defVal1), (count > 2) ? (long)(args[-2].m_data.num) : (long)(0), (count > 3) ? (long)(args[-3].m_data.num) : (long)(0))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_apc_bin_loadfile(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 4LL) {
|
||||
if ((count <= 3 || (args-3)->m_type == KindOfInt64) && (count <= 2 || (args-2)->m_type == KindOfInt64) && (count <= 1 || (args-1)->m_type == KindOfObject) && IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
Object defVal1 = uninit_null();
|
||||
rv.m_data.num = (fh_apc_bin_loadfile(&args[-0].m_data, (count > 1) ? &args[-1].m_data : (Value*)(&defVal1), (count > 2) ? (long)(args[-2].m_data.num) : (long)(0), (count > 3) ? (long)(args[-3].m_data.num) : (long)(0))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 4);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_apc_bin_loadfile(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 4);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("apc_bin_loadfile", count, 1, 4, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 4);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
} // !HPHP
|
||||
|
||||
|
||||
@@ -67,6 +67,18 @@ cache_id => rdx
|
||||
|
||||
TypedValue* fh_apc_delete(TypedValue* _rv, TypedValue* key, long cache_id) asm("_ZN4HPHP12f_apc_deleteERKNS_7VariantEl");
|
||||
|
||||
/*
|
||||
bool HPHP::f_apc_compile_file(HPHP::String const&, bool, long)
|
||||
_ZN4HPHP18f_apc_compile_fileERKNS_6StringEbl
|
||||
|
||||
(return value) => rax
|
||||
filename => rdi
|
||||
atomic => rsi
|
||||
cache_id => rdx
|
||||
*/
|
||||
|
||||
bool fh_apc_compile_file(Value* filename, bool atomic, long cache_id) asm("_ZN4HPHP18f_apc_compile_fileERKNS_6StringEbl");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_apc_cache_info(long, bool)
|
||||
_ZN4HPHP16f_apc_cache_infoElb
|
||||
@@ -89,6 +101,64 @@ cache_id => rdi
|
||||
|
||||
bool fh_apc_clear_cache(long cache_id) asm("_ZN4HPHP17f_apc_clear_cacheEl");
|
||||
|
||||
/*
|
||||
bool HPHP::f_apc_define_constants(HPHP::String const&, HPHP::String const&, bool, long)
|
||||
_ZN4HPHP22f_apc_define_constantsERKNS_6StringES2_bl
|
||||
|
||||
(return value) => rax
|
||||
key => rdi
|
||||
constants => rsi
|
||||
case_sensitive => rdx
|
||||
cache_id => rcx
|
||||
*/
|
||||
|
||||
bool fh_apc_define_constants(Value* key, Value* constants, bool case_sensitive, long cache_id) asm("_ZN4HPHP22f_apc_define_constantsERKNS_6StringES2_bl");
|
||||
|
||||
/*
|
||||
bool HPHP::f_apc_load_constants(HPHP::String const&, bool, long)
|
||||
_ZN4HPHP20f_apc_load_constantsERKNS_6StringEbl
|
||||
|
||||
(return value) => rax
|
||||
key => rdi
|
||||
case_sensitive => rsi
|
||||
cache_id => rdx
|
||||
*/
|
||||
|
||||
bool fh_apc_load_constants(Value* key, bool case_sensitive, long cache_id) asm("_ZN4HPHP20f_apc_load_constantsERKNS_6StringEbl");
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_apc_sma_info(bool)
|
||||
_ZN4HPHP14f_apc_sma_infoEb
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
limited => rsi
|
||||
*/
|
||||
|
||||
Value* fh_apc_sma_info(Value* _rv, bool limited) asm("_ZN4HPHP14f_apc_sma_infoEb");
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_apc_filehits()
|
||||
_ZN4HPHP14f_apc_filehitsEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_apc_filehits(Value* _rv) asm("_ZN4HPHP14f_apc_filehitsEv");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_apc_delete_file(HPHP::Variant const&, long)
|
||||
_ZN4HPHP17f_apc_delete_fileERKNS_7VariantEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
keys => rsi
|
||||
cache_id => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_apc_delete_file(TypedValue* _rv, TypedValue* keys, long cache_id) asm("_ZN4HPHP17f_apc_delete_fileERKNS_7VariantEl");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_apc_inc(HPHP::String const&, long, HPHP::VRefParamValue const&, long)
|
||||
_ZN4HPHP9f_apc_incERKNS_6StringElRKNS_14VRefParamValueEl
|
||||
@@ -142,6 +212,58 @@ cache_id => rdx
|
||||
|
||||
TypedValue* fh_apc_exists(TypedValue* _rv, TypedValue* key, long cache_id) asm("_ZN4HPHP12f_apc_existsERKNS_7VariantEl");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_apc_bin_dump(long, HPHP::Variant const&)
|
||||
_ZN4HPHP14f_apc_bin_dumpElRKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
cache_id => rsi
|
||||
filter => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_apc_bin_dump(TypedValue* _rv, long cache_id, TypedValue* filter) asm("_ZN4HPHP14f_apc_bin_dumpElRKNS_7VariantE");
|
||||
|
||||
/*
|
||||
bool HPHP::f_apc_bin_load(HPHP::String const&, long, long)
|
||||
_ZN4HPHP14f_apc_bin_loadERKNS_6StringEll
|
||||
|
||||
(return value) => rax
|
||||
data => rdi
|
||||
flags => rsi
|
||||
cache_id => rdx
|
||||
*/
|
||||
|
||||
bool fh_apc_bin_load(Value* data, long flags, long cache_id) asm("_ZN4HPHP14f_apc_bin_loadERKNS_6StringEll");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_apc_bin_dumpfile(long, HPHP::Variant const&, HPHP::String const&, long, HPHP::Object const&)
|
||||
_ZN4HPHP18f_apc_bin_dumpfileElRKNS_7VariantERKNS_6StringElRKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
cache_id => rsi
|
||||
filter => rdx
|
||||
filename => rcx
|
||||
flags => r8
|
||||
context => r9
|
||||
*/
|
||||
|
||||
TypedValue* fh_apc_bin_dumpfile(TypedValue* _rv, long cache_id, TypedValue* filter, Value* filename, long flags, Value* context) asm("_ZN4HPHP18f_apc_bin_dumpfileElRKNS_7VariantERKNS_6StringElRKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
bool HPHP::f_apc_bin_loadfile(HPHP::String const&, HPHP::Object const&, long, long)
|
||||
_ZN4HPHP18f_apc_bin_loadfileERKNS_6StringERKNS_6ObjectEll
|
||||
|
||||
(return value) => rax
|
||||
filename => rdi
|
||||
context => rsi
|
||||
flags => rdx
|
||||
cache_id => rcx
|
||||
*/
|
||||
|
||||
bool fh_apc_bin_loadfile(Value* filename, Value* context, long flags, long cache_id) asm("_ZN4HPHP18f_apc_bin_loadfileERKNS_6StringERKNS_6ObjectEll");
|
||||
|
||||
|
||||
} // !HPHP
|
||||
|
||||
|
||||
@@ -38,43 +38,23 @@ Variant f_apc_exists(CVarRef key, int64_t cache_id = 0);
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Variant f_apc_cache_info(int64_t cache_id = 0, bool limited = false);
|
||||
inline Array f_apc_sma_info(bool limited = false) {
|
||||
return Array::Create();
|
||||
}
|
||||
inline bool f_apc_define_constants(CStrRef key, CStrRef constants,
|
||||
bool case_sensitive = true,
|
||||
int64_t cache_id = 0) {
|
||||
throw NotSupportedException(__func__, "dynamic coding");
|
||||
}
|
||||
inline bool f_apc_load_constants(CStrRef key, bool case_sensitive = true,
|
||||
int64_t cache_id = 0) {
|
||||
throw NotSupportedException(__func__, "dynamic coding");
|
||||
}
|
||||
inline bool f_apc_compile_file(CStrRef filename, bool atomic = true,
|
||||
int64_t cache_id = 0) {
|
||||
throw NotSupportedException(__func__, "dynamic coding");
|
||||
}
|
||||
inline Array f_apc_filehits() {
|
||||
throw NotSupportedException(__func__, "feature not supported");
|
||||
}
|
||||
inline Variant f_apc_delete_file(CVarRef keys, int64_t cache_id = 0) {
|
||||
throw NotSupportedException(__func__, "feature not supported");
|
||||
}
|
||||
inline Variant f_apc_bin_dump(int64_t cache_id = 0, CVarRef filter = null_variant) {
|
||||
throw NotSupportedException(__func__, "feature not supported");
|
||||
}
|
||||
inline bool f_apc_bin_load(CStrRef data, int64_t flags = 0, int64_t cache_id = 0) {
|
||||
throw NotSupportedException(__func__, "feature not supported");
|
||||
}
|
||||
inline Variant f_apc_bin_dumpfile(int64_t cache_id, CVarRef filter,
|
||||
CStrRef filename, int64_t flags = 0,
|
||||
CObjRef context = uninit_null()) {
|
||||
throw NotSupportedException(__func__, "feature not supported");
|
||||
}
|
||||
inline bool f_apc_bin_loadfile(CStrRef filename, CObjRef context = uninit_null(),
|
||||
int64_t flags = 0, int64_t cache_id = 0) {
|
||||
throw NotSupportedException(__func__, "feature not supported");
|
||||
}
|
||||
Array f_apc_sma_info(bool limited = false);
|
||||
bool f_apc_define_constants(CStrRef key, CStrRef constants,
|
||||
bool case_sensitive = true,
|
||||
int64_t cache_id = 0);
|
||||
bool f_apc_load_constants(CStrRef key, bool case_sensitive = true,
|
||||
int64_t cache_id = 0);
|
||||
bool f_apc_compile_file(CStrRef filename, bool atomic = true,
|
||||
int64_t cache_id = 0);
|
||||
Array f_apc_filehits();
|
||||
Variant f_apc_delete_file(CVarRef keys, int64_t cache_id = 0);
|
||||
Variant f_apc_bin_dump(int64_t cache_id = 0, CVarRef filter = null_variant);
|
||||
bool f_apc_bin_load(CStrRef data, int64_t flags = 0, int64_t cache_id = 0);
|
||||
Variant f_apc_bin_dumpfile(int64_t cache_id, CVarRef filter,
|
||||
CStrRef filename, int64_t flags = 0,
|
||||
CObjRef context = uninit_null());
|
||||
bool f_apc_bin_loadfile(CStrRef filename, CObjRef context = uninit_null(),
|
||||
int64_t flags = 0, int64_t cache_id = 0);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// loading APC from archive files
|
||||
|
||||
@@ -98,6 +98,9 @@ Variant f_array_fill_keys(CVarRef keys, CVarRef value) {
|
||||
getCheckedArray(keys);
|
||||
return ArrayUtil::CreateArray(arr_keys, value);
|
||||
}
|
||||
Variant f_array_fill(int start_index, int num, CVarRef value) {
|
||||
return ArrayUtil::CreateArray(start_index, num, value);
|
||||
}
|
||||
|
||||
static bool filter_func(CVarRef value, const void *data) {
|
||||
HPHP::VM::CallCtx* ctx = (HPHP::VM::CallCtx*)data;
|
||||
@@ -164,6 +167,9 @@ bool f_array_key_exists(CVarRef key, CVarRef search) {
|
||||
raise_warning("Array key should be either a string or an integer");
|
||||
return false;
|
||||
}
|
||||
bool f_key_exists(CVarRef key, CVarRef search) {
|
||||
return f_array_key_exists(key, search);
|
||||
}
|
||||
|
||||
Variant f_array_keys(CVarRef input, CVarRef search_value /* = null_variant */,
|
||||
bool strict /* = false */) {
|
||||
@@ -362,6 +368,10 @@ Variant f_array_pad(CVarRef input, int pad_size, CVarRef pad_value) {
|
||||
return ArrayUtil::Pad(arr_input, pad_value, -pad_size, false);
|
||||
}
|
||||
|
||||
Variant f_array_pop(VRefParam array) {
|
||||
return array.pop();
|
||||
}
|
||||
|
||||
Variant f_array_product(CVarRef array) {
|
||||
getCheckedArray(array);
|
||||
if (arr_array.empty()) {
|
||||
@@ -422,6 +432,10 @@ Variant f_array_search(CVarRef needle, CVarRef haystack,
|
||||
return arr_haystack.key(needle, strict);
|
||||
}
|
||||
|
||||
Variant f_array_shift(VRefParam array) {
|
||||
return array.dequeue();
|
||||
}
|
||||
|
||||
Variant f_array_slice(CVarRef array, int offset,
|
||||
CVarRef length /* = null_variant */,
|
||||
bool preserve_keys /* = false */) {
|
||||
@@ -605,6 +619,42 @@ int64_t f_count(CVarRef var, bool recursive /* = false */) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
int64_t f_sizeof(CVarRef var, bool recursive /* = false */) {
|
||||
return f_count(var, recursive);
|
||||
}
|
||||
Variant f_each(VRefParam array) {
|
||||
return array.array_iter_each();
|
||||
}
|
||||
Variant f_current(VRefParam array) {
|
||||
return array.array_iter_current();
|
||||
}
|
||||
Variant f_hphp_current_ref(VRefParam array) {
|
||||
if (!array.isArray()) {
|
||||
throw_bad_array_exception();
|
||||
return false;
|
||||
}
|
||||
return strongBind(array.array_iter_current_ref());
|
||||
}
|
||||
Variant f_next(VRefParam array) {
|
||||
return array.array_iter_next();
|
||||
}
|
||||
Variant f_pos(VRefParam array) {
|
||||
return array.array_iter_current();
|
||||
}
|
||||
Variant f_prev(VRefParam array) {
|
||||
return array.array_iter_prev();
|
||||
}
|
||||
Variant f_reset(VRefParam array) {
|
||||
return array.array_iter_reset();
|
||||
}
|
||||
Variant f_end(VRefParam array) {
|
||||
return array.array_iter_end();
|
||||
}
|
||||
Variant f_key(VRefParam array) {
|
||||
return array.array_iter_key();
|
||||
}
|
||||
|
||||
|
||||
static StaticString s_Iterator("Iterator");
|
||||
static StaticString s_IteratorAggregate("IteratorAggregate");
|
||||
static StaticString s_ArrayIterator("ArrayIterator");
|
||||
|
||||
@@ -241,6 +241,63 @@ TypedValue* fg_array_fill_keys(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_array_fill(int, int, HPHP::Variant const&)
|
||||
_ZN4HPHP12f_array_fillEiiRKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
start_index => rsi
|
||||
num => rdx
|
||||
value => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_array_fill(TypedValue* _rv, int start_index, int num, TypedValue* value) asm("_ZN4HPHP12f_array_fillEiiRKNS_7VariantE");
|
||||
|
||||
TypedValue * fg1_array_fill(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_array_fill(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
if ((args-0)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-0);
|
||||
}
|
||||
fh_array_fill((rv), (int)(args[-0].m_data.num), (int)(args[-1].m_data.num), (args-2));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_array_fill(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 3LL) {
|
||||
if ((args-1)->m_type == KindOfInt64 && (args-0)->m_type == KindOfInt64) {
|
||||
fh_array_fill((&(rv)), (int)(args[-0].m_data.num), (int)(args[-1].m_data.num), (args-2));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_array_fill(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("array_fill", count, 3, 3, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_array_filter(HPHP::Variant const&, HPHP::Variant const&)
|
||||
_ZN4HPHP14f_array_filterERKNS_7VariantES2_
|
||||
@@ -344,6 +401,40 @@ TypedValue* fg_array_key_exists(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_key_exists(HPHP::Variant const&, HPHP::Variant const&)
|
||||
_ZN4HPHP12f_key_existsERKNS_7VariantES2_
|
||||
|
||||
(return value) => rax
|
||||
key => rdi
|
||||
search => rsi
|
||||
*/
|
||||
|
||||
bool fh_key_exists(TypedValue* key, TypedValue* search) asm("_ZN4HPHP12f_key_existsERKNS_7VariantES2_");
|
||||
|
||||
TypedValue* fg_key_exists(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 2LL) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_key_exists((args-0), (args-1))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_wrong_arguments_nr("key_exists", count, 2, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_array_keys(HPHP::Variant const&, HPHP::Variant const&, bool)
|
||||
_ZN4HPHP12f_array_keysERKNS_7VariantES2_b
|
||||
@@ -742,6 +833,40 @@ TypedValue* fg_array_pad(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_array_pop(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP11f_array_popERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_array_pop(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP11f_array_popERKNS_14VRefParamValueE");
|
||||
|
||||
TypedValue* fg_array_pop(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
fh_array_pop((&(rv)), (args-0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_wrong_arguments_nr("array_pop", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_array_product(HPHP::Variant const&)
|
||||
_ZN4HPHP15f_array_productERKNS_7VariantE
|
||||
@@ -1016,6 +1141,40 @@ TypedValue* fg_array_search(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_array_shift(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP13f_array_shiftERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_array_shift(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP13f_array_shiftERKNS_14VRefParamValueE");
|
||||
|
||||
TypedValue* fg_array_shift(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
fh_array_shift((&(rv)), (args-0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_wrong_arguments_nr("array_shift", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_array_slice(HPHP::Variant const&, int, HPHP::Variant const&, bool)
|
||||
_ZN4HPHP13f_array_sliceERKNS_7VariantEiS2_b
|
||||
@@ -1504,6 +1663,362 @@ TypedValue* fg_count(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_sizeof(HPHP::Variant const&, bool)
|
||||
_ZN4HPHP8f_sizeofERKNS_7VariantEb
|
||||
|
||||
(return value) => rax
|
||||
var => rdi
|
||||
recursive => rsi
|
||||
*/
|
||||
|
||||
long fh_sizeof(TypedValue* var, bool recursive) asm("_ZN4HPHP8f_sizeofERKNS_7VariantEb");
|
||||
|
||||
TypedValue * fg1_sizeof(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_sizeof(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfInt64;
|
||||
tvCastToBooleanInPlace(args-1);
|
||||
rv->m_data.num = (int64_t)fh_sizeof((args-0), (count > 1) ? (bool)(args[-1].m_data.num) : (bool)(false));
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_sizeof(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 2LL) {
|
||||
if ((count <= 1 || (args-1)->m_type == KindOfBoolean)) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_sizeof((args-0), (count > 1) ? (bool)(args[-1].m_data.num) : (bool)(false));
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_sizeof(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("sizeof", count, 1, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_each(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP6f_eachERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_each(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP6f_eachERKNS_14VRefParamValueE");
|
||||
|
||||
TypedValue* fg_each(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
fh_each((&(rv)), (args-0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_wrong_arguments_nr("each", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_current(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP9f_currentERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_current(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP9f_currentERKNS_14VRefParamValueE");
|
||||
|
||||
TypedValue* fg_current(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
fh_current((&(rv)), (args-0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_wrong_arguments_nr("current", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_hphp_current_ref(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP18f_hphp_current_refERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_hphp_current_ref(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP18f_hphp_current_refERKNS_14VRefParamValueE");
|
||||
|
||||
TypedValue* fg_hphp_current_ref(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
fh_hphp_current_ref((&(rv)), (args-0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_wrong_arguments_nr("hphp_current_ref", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_next(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP6f_nextERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_next(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP6f_nextERKNS_14VRefParamValueE");
|
||||
|
||||
TypedValue* fg_next(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
fh_next((&(rv)), (args-0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_wrong_arguments_nr("next", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_pos(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP5f_posERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_pos(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP5f_posERKNS_14VRefParamValueE");
|
||||
|
||||
TypedValue* fg_pos(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
fh_pos((&(rv)), (args-0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_wrong_arguments_nr("pos", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_prev(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP6f_prevERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_prev(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP6f_prevERKNS_14VRefParamValueE");
|
||||
|
||||
TypedValue* fg_prev(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
fh_prev((&(rv)), (args-0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_wrong_arguments_nr("prev", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_reset(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP7f_resetERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_reset(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP7f_resetERKNS_14VRefParamValueE");
|
||||
|
||||
TypedValue* fg_reset(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
fh_reset((&(rv)), (args-0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_wrong_arguments_nr("reset", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_end(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP5f_endERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_end(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP5f_endERKNS_14VRefParamValueE");
|
||||
|
||||
TypedValue* fg_end(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
fh_end((&(rv)), (args-0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_wrong_arguments_nr("end", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_key(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP5f_keyERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_key(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP5f_keyERKNS_14VRefParamValueE");
|
||||
|
||||
TypedValue* fg_key(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
fh_key((&(rv)), (args-0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_wrong_arguments_nr("key", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_hphp_get_iterator(HPHP::Variant const&)
|
||||
_ZN4HPHP19f_hphp_get_iteratorERKNS_7VariantE
|
||||
|
||||
@@ -76,6 +76,19 @@ value => rdx
|
||||
|
||||
TypedValue* fh_array_fill_keys(TypedValue* _rv, TypedValue* keys, TypedValue* value) asm("_ZN4HPHP17f_array_fill_keysERKNS_7VariantES2_");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_array_fill(int, int, HPHP::Variant const&)
|
||||
_ZN4HPHP12f_array_fillEiiRKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
start_index => rsi
|
||||
num => rdx
|
||||
value => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_array_fill(TypedValue* _rv, int start_index, int num, TypedValue* value) asm("_ZN4HPHP12f_array_fillEiiRKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_array_filter(HPHP::Variant const&, HPHP::Variant const&)
|
||||
_ZN4HPHP14f_array_filterERKNS_7VariantES2_
|
||||
@@ -110,6 +123,17 @@ search => rsi
|
||||
|
||||
bool fh_array_key_exists(TypedValue* key, TypedValue* search) asm("_ZN4HPHP18f_array_key_existsERKNS_7VariantES2_");
|
||||
|
||||
/*
|
||||
bool HPHP::f_key_exists(HPHP::Variant const&, HPHP::Variant const&)
|
||||
_ZN4HPHP12f_key_existsERKNS_7VariantES2_
|
||||
|
||||
(return value) => rax
|
||||
key => rdi
|
||||
search => rsi
|
||||
*/
|
||||
|
||||
bool fh_key_exists(TypedValue* key, TypedValue* search) asm("_ZN4HPHP12f_key_existsERKNS_7VariantES2_");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_array_keys(HPHP::Variant const&, HPHP::Variant const&, bool)
|
||||
_ZN4HPHP12f_array_keysERKNS_7VariantES2_b
|
||||
@@ -214,6 +238,17 @@ pad_value => rcx
|
||||
|
||||
TypedValue* fh_array_pad(TypedValue* _rv, TypedValue* input, int pad_size, TypedValue* pad_value) asm("_ZN4HPHP11f_array_padERKNS_7VariantEiS2_");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_array_pop(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP11f_array_popERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_array_pop(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP11f_array_popERKNS_14VRefParamValueE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_array_product(HPHP::Variant const&)
|
||||
_ZN4HPHP15f_array_productERKNS_7VariantE
|
||||
@@ -289,6 +324,17 @@ strict => rcx
|
||||
|
||||
TypedValue* fh_array_search(TypedValue* _rv, TypedValue* needle, TypedValue* haystack, bool strict) asm("_ZN4HPHP14f_array_searchERKNS_7VariantES2_b");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_array_shift(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP13f_array_shiftERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_array_shift(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP13f_array_shiftERKNS_14VRefParamValueE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_array_slice(HPHP::Variant const&, int, HPHP::Variant const&, bool)
|
||||
_ZN4HPHP13f_array_sliceERKNS_7VariantEiS2_b
|
||||
@@ -422,6 +468,116 @@ recursive => rsi
|
||||
|
||||
long fh_count(TypedValue* var, bool recursive) asm("_ZN4HPHP7f_countERKNS_7VariantEb");
|
||||
|
||||
/*
|
||||
long HPHP::f_sizeof(HPHP::Variant const&, bool)
|
||||
_ZN4HPHP8f_sizeofERKNS_7VariantEb
|
||||
|
||||
(return value) => rax
|
||||
var => rdi
|
||||
recursive => rsi
|
||||
*/
|
||||
|
||||
long fh_sizeof(TypedValue* var, bool recursive) asm("_ZN4HPHP8f_sizeofERKNS_7VariantEb");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_each(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP6f_eachERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_each(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP6f_eachERKNS_14VRefParamValueE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_current(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP9f_currentERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_current(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP9f_currentERKNS_14VRefParamValueE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_hphp_current_ref(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP18f_hphp_current_refERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_hphp_current_ref(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP18f_hphp_current_refERKNS_14VRefParamValueE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_next(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP6f_nextERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_next(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP6f_nextERKNS_14VRefParamValueE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_pos(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP5f_posERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_pos(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP5f_posERKNS_14VRefParamValueE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_prev(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP6f_prevERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_prev(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP6f_prevERKNS_14VRefParamValueE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_reset(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP7f_resetERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_reset(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP7f_resetERKNS_14VRefParamValueE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_end(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP5f_endERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_end(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP5f_endERKNS_14VRefParamValueE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_key(HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP5f_keyERKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
array => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_key(TypedValue* _rv, TypedValue* array) asm("_ZN4HPHP5f_keyERKNS_14VRefParamValueE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_hphp_get_iterator(HPHP::Variant const&)
|
||||
_ZN4HPHP19f_hphp_get_iteratorERKNS_7VariantE
|
||||
|
||||
@@ -54,15 +54,11 @@ Variant f_array_chunk(CVarRef input, int size,
|
||||
Variant f_array_combine(CVarRef keys, CVarRef values);
|
||||
Variant f_array_count_values(CVarRef input);
|
||||
Variant f_array_fill_keys(CVarRef keys, CVarRef value);
|
||||
inline Variant f_array_fill(int start_index, int num, CVarRef value) {
|
||||
return ArrayUtil::CreateArray(start_index, num, value);
|
||||
}
|
||||
Variant f_array_fill(int start_index, int num, CVarRef value);
|
||||
Variant f_array_filter(CVarRef input, CVarRef callback = null_variant);
|
||||
Variant f_array_flip(CVarRef trans);
|
||||
bool f_array_key_exists(CVarRef key, CVarRef search);
|
||||
inline bool f_key_exists(CVarRef key, CVarRef search) {
|
||||
return f_array_key_exists(key, search);
|
||||
}
|
||||
bool f_key_exists(CVarRef key, CVarRef search);
|
||||
|
||||
Variant f_array_keys(CVarRef input, CVarRef search_value = null_variant,
|
||||
bool strict = false);
|
||||
@@ -77,9 +73,7 @@ Variant f_array_replace_recursive(int _argc, CVarRef array1, CArrRef _argv = nul
|
||||
Variant f_array_replace(int _argc, CVarRef array1, CArrRef _argv = null_array);
|
||||
|
||||
Variant f_array_pad(CVarRef input, int pad_size, CVarRef pad_value);
|
||||
inline Variant f_array_pop(VRefParam array) {
|
||||
return array.pop();
|
||||
}
|
||||
Variant f_array_pop(VRefParam array);
|
||||
Variant f_array_product(CVarRef array);
|
||||
Variant f_array_push(int _argc, VRefParam array, CVarRef var, CArrRef _argv = null_array);
|
||||
|
||||
@@ -90,9 +84,7 @@ Variant f_array_reduce(CVarRef input, CVarRef callback,
|
||||
Variant f_array_reverse(CVarRef array, bool preserve_keys = false);
|
||||
Variant f_array_search(CVarRef needle, CVarRef haystack,
|
||||
bool strict = false);
|
||||
inline Variant f_array_shift(VRefParam array) {
|
||||
return array.dequeue();
|
||||
}
|
||||
Variant f_array_shift(VRefParam array);
|
||||
Variant f_array_slice(CVarRef array, int offset,
|
||||
CVarRef length = null_variant,
|
||||
bool preserve_keys = false);
|
||||
@@ -116,40 +108,16 @@ Array f_compact(int _argc, CVarRef varname, CArrRef _argv = null_array);
|
||||
bool f_shuffle(VRefParam array);
|
||||
int64_t f_count(CVarRef var, bool recursive = false);
|
||||
|
||||
inline int64_t f_sizeof(CVarRef var, bool recursive = false) {
|
||||
return f_count(var, recursive);
|
||||
}
|
||||
inline Variant f_each(VRefParam array) {
|
||||
return array.array_iter_each();
|
||||
}
|
||||
inline Variant f_current(VRefParam array) {
|
||||
return array.array_iter_current();
|
||||
}
|
||||
inline Variant f_hphp_current_ref(VRefParam array) {
|
||||
if (!array.isArray()) {
|
||||
throw_bad_array_exception();
|
||||
return false;
|
||||
}
|
||||
return strongBind(array.array_iter_current_ref());
|
||||
}
|
||||
inline Variant f_next(VRefParam array) {
|
||||
return array.array_iter_next();
|
||||
}
|
||||
inline Variant f_pos(VRefParam array) {
|
||||
return array.array_iter_current();
|
||||
}
|
||||
inline Variant f_prev(VRefParam array) {
|
||||
return array.array_iter_prev();
|
||||
}
|
||||
inline Variant f_reset(VRefParam array) {
|
||||
return array.array_iter_reset();
|
||||
}
|
||||
inline Variant f_end(VRefParam array) {
|
||||
return array.array_iter_end();
|
||||
}
|
||||
inline Variant f_key(VRefParam array) {
|
||||
return array.array_iter_key();
|
||||
}
|
||||
int64_t f_sizeof(CVarRef var, bool recursive = false);
|
||||
Variant f_each(VRefParam array);
|
||||
Variant f_current(VRefParam array);
|
||||
Variant f_hphp_current_ref(VRefParam array);
|
||||
Variant f_next(VRefParam array);
|
||||
Variant f_pos(VRefParam array);
|
||||
Variant f_prev(VRefParam array);
|
||||
Variant f_reset(VRefParam array);
|
||||
Variant f_end(VRefParam array);
|
||||
Variant f_key(VRefParam array);
|
||||
|
||||
Variant f_hphp_get_iterator(CVarRef iterable);
|
||||
Variant f_hphp_get_mutable_iterator(VRefParam iterable);
|
||||
|
||||
@@ -22,6 +22,18 @@
|
||||
namespace HPHP {
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Variant f_bzclose(CObjRef bz) {
|
||||
return f_fclose(bz);
|
||||
}
|
||||
|
||||
Variant f_bzread(CObjRef bz, int length /* = 1024 */) {
|
||||
return f_fread(bz, length);
|
||||
}
|
||||
|
||||
Variant f_bzwrite(CObjRef bz, CStrRef data, int length /* = 0 */) {
|
||||
return f_fwrite(bz, data, length);
|
||||
}
|
||||
|
||||
Variant f_bzopen(CStrRef filename, CStrRef mode) {
|
||||
if (mode != "r" && mode != "w") {
|
||||
return false;
|
||||
|
||||
@@ -24,6 +24,56 @@
|
||||
|
||||
namespace HPHP {
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_bzclose(HPHP::Object const&)
|
||||
_ZN4HPHP9f_bzcloseERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
bz => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_bzclose(TypedValue* _rv, Value* bz) asm("_ZN4HPHP9f_bzcloseERKNS_6ObjectE");
|
||||
|
||||
TypedValue * fg1_bzclose(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_bzclose(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
tvCastToObjectInPlace(args-0);
|
||||
fh_bzclose((rv), &args[-0].m_data);
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_bzclose(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfObject) {
|
||||
fh_bzclose((&(rv)), &args[-0].m_data);
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_bzclose(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("bzclose", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_bzopen(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP8f_bzopenERKNS_6StringES2_
|
||||
@@ -80,6 +130,132 @@ TypedValue* fg_bzopen(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_bzread(HPHP::Object const&, int)
|
||||
_ZN4HPHP8f_bzreadERKNS_6ObjectEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
bz => rsi
|
||||
length => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_bzread(TypedValue* _rv, Value* bz, int length) asm("_ZN4HPHP8f_bzreadERKNS_6ObjectEi");
|
||||
|
||||
TypedValue * fg1_bzread(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_bzread(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
switch (count) {
|
||||
default: // count >= 2
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if ((args-0)->m_type != KindOfObject) {
|
||||
tvCastToObjectInPlace(args-0);
|
||||
}
|
||||
fh_bzread((rv), &args[-0].m_data, (count > 1) ? (int)(args[-1].m_data.num) : (int)(1024));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_bzread(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 2LL) {
|
||||
if ((count <= 1 || (args-1)->m_type == KindOfInt64) && (args-0)->m_type == KindOfObject) {
|
||||
fh_bzread((&(rv)), &args[-0].m_data, (count > 1) ? (int)(args[-1].m_data.num) : (int)(1024));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_bzread(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("bzread", count, 1, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_bzwrite(HPHP::Object const&, HPHP::String const&, int)
|
||||
_ZN4HPHP9f_bzwriteERKNS_6ObjectERKNS_6StringEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
bz => rsi
|
||||
data => rdx
|
||||
length => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_bzwrite(TypedValue* _rv, Value* bz, Value* data, int length) asm("_ZN4HPHP9f_bzwriteERKNS_6ObjectERKNS_6StringEi");
|
||||
|
||||
TypedValue * fg1_bzwrite(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_bzwrite(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
switch (count) {
|
||||
default: // count >= 3
|
||||
if ((args-2)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-2);
|
||||
}
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-1)->m_type)) {
|
||||
tvCastToStringInPlace(args-1);
|
||||
}
|
||||
if ((args-0)->m_type != KindOfObject) {
|
||||
tvCastToObjectInPlace(args-0);
|
||||
}
|
||||
fh_bzwrite((rv), &args[-0].m_data, &args[-1].m_data, (count > 2) ? (int)(args[-2].m_data.num) : (int)(0));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_bzwrite(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 2LL && count <= 3LL) {
|
||||
if ((count <= 2 || (args-2)->m_type == KindOfInt64) && IS_STRING_TYPE((args-1)->m_type) && (args-0)->m_type == KindOfObject) {
|
||||
fh_bzwrite((&(rv)), &args[-0].m_data, &args[-1].m_data, (count > 2) ? (int)(args[-2].m_data.num) : (int)(0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_bzwrite(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("bzwrite", count, 2, 3, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_bzflush(HPHP::Object const&)
|
||||
_ZN4HPHP9f_bzflushERKNS_6ObjectE
|
||||
|
||||
@@ -16,6 +16,17 @@
|
||||
*/
|
||||
namespace HPHP {
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_bzclose(HPHP::Object const&)
|
||||
_ZN4HPHP9f_bzcloseERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
bz => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_bzclose(TypedValue* _rv, Value* bz) asm("_ZN4HPHP9f_bzcloseERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_bzopen(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP8f_bzopenERKNS_6StringES2_
|
||||
@@ -28,6 +39,31 @@ mode => rdx
|
||||
|
||||
TypedValue* fh_bzopen(TypedValue* _rv, Value* filename, Value* mode) asm("_ZN4HPHP8f_bzopenERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_bzread(HPHP::Object const&, int)
|
||||
_ZN4HPHP8f_bzreadERKNS_6ObjectEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
bz => rsi
|
||||
length => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_bzread(TypedValue* _rv, Value* bz, int length) asm("_ZN4HPHP8f_bzreadERKNS_6ObjectEi");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_bzwrite(HPHP::Object const&, HPHP::String const&, int)
|
||||
_ZN4HPHP9f_bzwriteERKNS_6ObjectERKNS_6StringEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
bz => rsi
|
||||
data => rdx
|
||||
length => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_bzwrite(TypedValue* _rv, Value* bz, Value* data, int length) asm("_ZN4HPHP9f_bzwriteERKNS_6ObjectERKNS_6StringEi");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_bzflush(HPHP::Object const&)
|
||||
_ZN4HPHP9f_bzflushERKNS_6ObjectE
|
||||
|
||||
@@ -26,17 +26,9 @@
|
||||
namespace HPHP {
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
inline Variant f_bzclose(CObjRef bz) {
|
||||
return f_fclose(bz);
|
||||
}
|
||||
|
||||
inline Variant f_bzread(CObjRef bz, int length = 1024) {
|
||||
return f_fread(bz, length);
|
||||
}
|
||||
|
||||
inline Variant f_bzwrite(CObjRef bz, CStrRef data, int length = 0) {
|
||||
return f_fwrite(bz, data, length);
|
||||
}
|
||||
Variant f_bzclose(CObjRef bz);
|
||||
Variant f_bzread(CObjRef bz, int length = 1024);
|
||||
Variant f_bzwrite(CObjRef bz, CStrRef data, int length = 0);
|
||||
|
||||
Variant f_bzopen(CStrRef filename, CStrRef mode);
|
||||
Variant f_bzflush(CObjRef bz);
|
||||
|
||||
@@ -291,5 +291,295 @@ ObjectData *c_DateInterval::clone() {
|
||||
return obj;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// timestamp
|
||||
|
||||
Variant f_gettimeofday(bool return_float /* = false */) {
|
||||
if (return_float) {
|
||||
return TimeStamp::CurrentSecond();
|
||||
}
|
||||
return TimeStamp::CurrentTime();
|
||||
}
|
||||
|
||||
Variant f_microtime(bool get_as_float /* = false */) {
|
||||
if (get_as_float) {
|
||||
return TimeStamp::CurrentSecond();
|
||||
}
|
||||
return TimeStamp::CurrentMicroTime();
|
||||
}
|
||||
|
||||
int64_t f_time() {
|
||||
return time(0);
|
||||
}
|
||||
|
||||
Variant f_mktime(int hour /* = INT_MAX */, int minute /* = INT_MAX */,
|
||||
int second /* = INT_MAX */, int month /* = INT_MAX */,
|
||||
int day /* = INT_MAX */, int year /* = INT_MAX */) {
|
||||
bool error;
|
||||
int64_t ts = TimeStamp::Get(error, hour, minute, second, month, day, year,
|
||||
false);
|
||||
if (error) return false;
|
||||
return ts;
|
||||
}
|
||||
|
||||
Variant f_gmmktime(int hour /* = INT_MAX */, int minute /* = INT_MAX */,
|
||||
int second /* = INT_MAX */,
|
||||
int month /* = INT_MAX */, int day /* = INT_MAX */,
|
||||
int year /* = INT_MAX */) {
|
||||
bool error;
|
||||
int64_t ts = TimeStamp::Get(error, hour, minute, second, month, day, year,
|
||||
true);
|
||||
if (error) return false;
|
||||
return ts;
|
||||
}
|
||||
|
||||
Variant f_idate(CStrRef format, int64_t timestamp /* = TimeStamp::Current() */) {
|
||||
if (format.size() != 1) {
|
||||
throw_invalid_argument("format: %s", format.data());
|
||||
return false;
|
||||
}
|
||||
int64_t ret = DateTime(timestamp, false).toInteger(*format.data());
|
||||
if (ret == -1) return false;
|
||||
return ret;
|
||||
}
|
||||
|
||||
Variant f_date(CStrRef format, int64_t timestamp /* = TimeStamp::Current() */) {
|
||||
if (format.empty()) return "";
|
||||
String ret = DateTime(timestamp, false).toString(format, false);
|
||||
if (ret.isNull()) return false;
|
||||
return ret;
|
||||
}
|
||||
|
||||
Variant f_gmdate(CStrRef format,
|
||||
int64_t timestamp /* = TimeStamp::Current() */) {
|
||||
String ret = DateTime(timestamp, true).toString(format, false);
|
||||
if (ret.isNull()) return false;
|
||||
return ret;
|
||||
}
|
||||
|
||||
Variant f_strftime(CStrRef format,
|
||||
int64_t timestamp /* = TimeStamp::Current() */) {
|
||||
String ret = DateTime(timestamp, false).toString(format, true);
|
||||
if (ret.isNull()) return false;
|
||||
return ret;
|
||||
}
|
||||
|
||||
String f_gmstrftime(CStrRef format,
|
||||
int64_t timestamp /* = TimeStamp::Current() */) {
|
||||
String ret = DateTime(timestamp, true).toString(format, true);
|
||||
if (ret.isNull()) return false;
|
||||
return ret;
|
||||
}
|
||||
|
||||
Array f_getdate(int64_t timestamp /* = TimeStamp::Current() */) {
|
||||
return DateTime(timestamp, false).toArray(DateTime::TimeMap);
|
||||
}
|
||||
|
||||
Array f_localtime(int64_t timestamp /* = TimeStamp::Current() */,
|
||||
bool is_associative /* = false */) {
|
||||
DateTime::ArrayFormat format =
|
||||
is_associative ? DateTime::TmMap : DateTime::TmVector;
|
||||
return DateTime(timestamp, false).toArray(format);
|
||||
}
|
||||
|
||||
Variant f_strptime(CStrRef date, CStrRef format) {
|
||||
Array ret = DateTime::Parse(date, format);
|
||||
if (ret.empty()) {
|
||||
return false;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
Variant f_strtotime(CStrRef input,
|
||||
int64_t timestamp /* = TimeStamp::Current() */) {
|
||||
if (input.empty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
DateTime dt(timestamp);
|
||||
if (!dt.fromString(input, SmartObject<TimeZone>())) {
|
||||
return false;
|
||||
}
|
||||
bool error;
|
||||
return dt.toTimeStamp(error);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// timezone
|
||||
|
||||
String f_date_default_timezone_get() {
|
||||
return TimeZone::Current()->name();
|
||||
}
|
||||
|
||||
bool f_date_default_timezone_set(CStrRef name) {
|
||||
return TimeZone::SetCurrent(name);
|
||||
}
|
||||
|
||||
Array f_timezone_identifiers_list() {
|
||||
return c_DateTimeZone::t_listidentifiers();
|
||||
}
|
||||
|
||||
Array f_timezone_abbreviations_list() {
|
||||
return c_DateTimeZone::t_listabbreviations();
|
||||
}
|
||||
|
||||
Variant f_timezone_name_from_abbr(CStrRef abbr, int gmtoffset /* = -1 */,
|
||||
bool isdst /* = true */) {
|
||||
String ret = TimeZone::AbbreviationToName(abbr, gmtoffset, isdst);
|
||||
if (ret.isNull()) {
|
||||
return false;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
Object f_timezone_open(CStrRef timezone) {
|
||||
c_DateTimeZone *ctz = NEWOBJ(c_DateTimeZone)();
|
||||
Object ret(ctz);
|
||||
ctz->t___construct(timezone);
|
||||
return ret;
|
||||
}
|
||||
|
||||
Array f_timezone_location_get(CObjRef timezone) {
|
||||
return timezone.getTyped<c_DateTimeZone>()->t_getlocation();
|
||||
}
|
||||
|
||||
String f_timezone_name_get(CObjRef object) {
|
||||
return object.getTyped<c_DateTimeZone>()->t_getname();
|
||||
}
|
||||
|
||||
int64_t f_timezone_offset_get(CObjRef object, CObjRef dt) {
|
||||
return object.getTyped<c_DateTimeZone>()->t_getoffset(dt);
|
||||
}
|
||||
|
||||
Array f_timezone_transitions_get(CObjRef object) {
|
||||
return object.getTyped<c_DateTimeZone>()->t_gettransitions();
|
||||
}
|
||||
|
||||
String f_timezone_version_get() {
|
||||
return TimeZone::getVersion();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// datetime
|
||||
|
||||
bool f_checkdate(int month, int day, int year) {
|
||||
return DateTime::IsValid(year, month, day);
|
||||
}
|
||||
|
||||
Object f_date_add(CObjRef datetime, CObjRef interval) {
|
||||
return datetime.getTyped<c_DateTime>()->
|
||||
t_add(interval.getTyped<c_DateInterval>());
|
||||
}
|
||||
|
||||
Object f_date_create_from_format(CStrRef format,
|
||||
CStrRef time,
|
||||
CObjRef timezone /* = null_object */) {
|
||||
return c_DateTime::t_createfromformat(format, time, timezone);
|
||||
}
|
||||
|
||||
Object f_date_create(CStrRef time /* = null_string */,
|
||||
CObjRef timezone /* = null_object */) {
|
||||
c_DateTime *cdt = NEWOBJ(c_DateTime)();
|
||||
Object ret(cdt);
|
||||
cdt->t___construct(time, timezone);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void f_date_date_set(CObjRef object, int year, int month, int day) {
|
||||
object.getTyped<c_DateTime>()->t_setdate(year, month, day);
|
||||
}
|
||||
|
||||
Object f_date_diff(CObjRef datetime,
|
||||
CObjRef datetime2,
|
||||
bool absolute /* = false */) {
|
||||
return datetime.getTyped<c_DateTime>()->
|
||||
t_diff(datetime2.getTyped<c_DateTime>(), absolute);
|
||||
}
|
||||
|
||||
void f_date_isodate_set(CObjRef object, int year, int week,
|
||||
int day /* = 1 */) {
|
||||
object.getTyped<c_DateTime>()->t_setisodate(year, week, day);
|
||||
}
|
||||
|
||||
String f_date_format(CObjRef object, CStrRef format) {
|
||||
return object.getTyped<c_DateTime>()->t_format(format);
|
||||
}
|
||||
|
||||
Array f_date_get_last_errors() {
|
||||
return c_DateTime::t_getlasterrors();
|
||||
}
|
||||
|
||||
Object f_date_interval_create_from_date_string(CStrRef time) {
|
||||
return c_DateInterval::t_createfromdatestring(time);
|
||||
}
|
||||
|
||||
String f_date_interval_format(CObjRef interval, CStrRef format_spec) {
|
||||
return interval.getTyped<c_DateInterval>()->t_format(format_spec);
|
||||
}
|
||||
|
||||
void f_date_modify(CObjRef object, CStrRef modify) {
|
||||
object.getTyped<c_DateTime>()->t_modify(modify);
|
||||
}
|
||||
|
||||
int64_t f_date_offset_get(CObjRef object) {
|
||||
return object.getTyped<c_DateTime>()->t_getoffset();
|
||||
}
|
||||
|
||||
Variant f_date_parse(CStrRef date) {
|
||||
return DateTime::Parse(date);
|
||||
}
|
||||
|
||||
void f_date_time_set(CObjRef object, int hour, int minute,
|
||||
int second /* = 0 */) {
|
||||
object.getTyped<c_DateTime>()->t_settime(hour, minute, second);
|
||||
}
|
||||
|
||||
int64_t f_date_timestamp_get(CObjRef datetime) {
|
||||
return datetime.getTyped<c_DateTime>()->t_gettimestamp();
|
||||
}
|
||||
|
||||
Object f_date_timestamp_set(CObjRef datetime, int64_t timestamp) {
|
||||
return datetime.getTyped<c_DateTime>()->
|
||||
t_settimestamp(timestamp);
|
||||
}
|
||||
|
||||
Variant f_date_timezone_get(CObjRef object) {
|
||||
return object.getTyped<c_DateTime>()->t_gettimezone();
|
||||
}
|
||||
|
||||
void f_date_timezone_set(CObjRef object, CObjRef timezone) {
|
||||
object.getTyped<c_DateTime>()->t_settimezone(timezone);
|
||||
}
|
||||
|
||||
Object f_date_sub(CObjRef datetime, CObjRef interval) {
|
||||
return datetime.getTyped<c_DateTime>()->
|
||||
t_sub(interval.getTyped<c_DateInterval>());
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// sun
|
||||
|
||||
Array f_date_sun_info(int64_t ts, double latitude, double longitude) {
|
||||
return DateTime(ts, false).getSunInfo(latitude, longitude);
|
||||
}
|
||||
|
||||
Variant f_date_sunrise(int64_t timestamp, int format /* = 0 */,
|
||||
double latitude /* = 0.0 */, double longitude /* = 0.0 */,
|
||||
double zenith /* = 0.0 */,
|
||||
double gmt_offset /* = 99999.0 */) {
|
||||
return DateTime(timestamp, false).getSunInfo
|
||||
(static_cast<DateTime::SunInfoFormat>(format), latitude, longitude,
|
||||
zenith, gmt_offset, false);
|
||||
}
|
||||
|
||||
Variant f_date_sunset(int64_t timestamp, int format /* = 0 */,
|
||||
double latitude /* = 0.0 */, double longitude /* = 0.0 */,
|
||||
double zenith /* = 0.0 */,
|
||||
double gmt_offset /* = 99999.0 */) {
|
||||
return DateTime(timestamp, false).getSunInfo
|
||||
(static_cast<DateTime::SunInfoFormat>(format), latitude, longitude,
|
||||
zenith, gmt_offset, true);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
}
|
||||
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -16,6 +16,568 @@
|
||||
*/
|
||||
namespace HPHP {
|
||||
|
||||
/*
|
||||
bool HPHP::f_checkdate(int, int, int)
|
||||
_ZN4HPHP11f_checkdateEiii
|
||||
|
||||
(return value) => rax
|
||||
month => rdi
|
||||
day => rsi
|
||||
year => rdx
|
||||
*/
|
||||
|
||||
bool fh_checkdate(int month, int day, int year) asm("_ZN4HPHP11f_checkdateEiii");
|
||||
|
||||
/*
|
||||
HPHP::Object HPHP::f_date_add(HPHP::Object const&, HPHP::Object const&)
|
||||
_ZN4HPHP10f_date_addERKNS_6ObjectES2_
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
datetime => rsi
|
||||
interval => rdx
|
||||
*/
|
||||
|
||||
Value* fh_date_add(Value* _rv, Value* datetime, Value* interval) asm("_ZN4HPHP10f_date_addERKNS_6ObjectES2_");
|
||||
|
||||
/*
|
||||
HPHP::Object HPHP::f_date_create_from_format(HPHP::String const&, HPHP::String const&, HPHP::Object const&)
|
||||
_ZN4HPHP25f_date_create_from_formatERKNS_6StringES2_RKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
format => rsi
|
||||
time => rdx
|
||||
timezone => rcx
|
||||
*/
|
||||
|
||||
Value* fh_date_create_from_format(Value* _rv, Value* format, Value* time, Value* timezone) asm("_ZN4HPHP25f_date_create_from_formatERKNS_6StringES2_RKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
HPHP::Object HPHP::f_date_create(HPHP::String const&, HPHP::Object const&)
|
||||
_ZN4HPHP13f_date_createERKNS_6StringERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
time => rsi
|
||||
timezone => rdx
|
||||
*/
|
||||
|
||||
Value* fh_date_create(Value* _rv, Value* time, Value* timezone) asm("_ZN4HPHP13f_date_createERKNS_6StringERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
void HPHP::f_date_date_set(HPHP::Object const&, int, int, int)
|
||||
_ZN4HPHP15f_date_date_setERKNS_6ObjectEiii
|
||||
|
||||
object => rdi
|
||||
year => rsi
|
||||
month => rdx
|
||||
day => rcx
|
||||
*/
|
||||
|
||||
void fh_date_date_set(Value* object, int year, int month, int day) asm("_ZN4HPHP15f_date_date_setERKNS_6ObjectEiii");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_date_default_timezone_get()
|
||||
_ZN4HPHP27f_date_default_timezone_getEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_date_default_timezone_get(Value* _rv) asm("_ZN4HPHP27f_date_default_timezone_getEv");
|
||||
|
||||
/*
|
||||
bool HPHP::f_date_default_timezone_set(HPHP::String const&)
|
||||
_ZN4HPHP27f_date_default_timezone_setERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
name => rdi
|
||||
*/
|
||||
|
||||
bool fh_date_default_timezone_set(Value* name) asm("_ZN4HPHP27f_date_default_timezone_setERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::Object HPHP::f_date_diff(HPHP::Object const&, HPHP::Object const&, bool)
|
||||
_ZN4HPHP11f_date_diffERKNS_6ObjectES2_b
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
datetime => rsi
|
||||
datetime2 => rdx
|
||||
absolute => rcx
|
||||
*/
|
||||
|
||||
Value* fh_date_diff(Value* _rv, Value* datetime, Value* datetime2, bool absolute) asm("_ZN4HPHP11f_date_diffERKNS_6ObjectES2_b");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_date_format(HPHP::Object const&, HPHP::String const&)
|
||||
_ZN4HPHP13f_date_formatERKNS_6ObjectERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
object => rsi
|
||||
format => rdx
|
||||
*/
|
||||
|
||||
Value* fh_date_format(Value* _rv, Value* object, Value* format) asm("_ZN4HPHP13f_date_formatERKNS_6ObjectERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_date_get_last_errors()
|
||||
_ZN4HPHP22f_date_get_last_errorsEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_date_get_last_errors(Value* _rv) asm("_ZN4HPHP22f_date_get_last_errorsEv");
|
||||
|
||||
/*
|
||||
HPHP::Object HPHP::f_date_interval_create_from_date_string(HPHP::String const&)
|
||||
_ZN4HPHP39f_date_interval_create_from_date_stringERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
time => rsi
|
||||
*/
|
||||
|
||||
Value* fh_date_interval_create_from_date_string(Value* _rv, Value* time) asm("_ZN4HPHP39f_date_interval_create_from_date_stringERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_date_interval_format(HPHP::Object const&, HPHP::String const&)
|
||||
_ZN4HPHP22f_date_interval_formatERKNS_6ObjectERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
interval => rsi
|
||||
format_spec => rdx
|
||||
*/
|
||||
|
||||
Value* fh_date_interval_format(Value* _rv, Value* interval, Value* format_spec) asm("_ZN4HPHP22f_date_interval_formatERKNS_6ObjectERKNS_6StringE");
|
||||
|
||||
/*
|
||||
void HPHP::f_date_isodate_set(HPHP::Object const&, int, int, int)
|
||||
_ZN4HPHP18f_date_isodate_setERKNS_6ObjectEiii
|
||||
|
||||
object => rdi
|
||||
year => rsi
|
||||
week => rdx
|
||||
day => rcx
|
||||
*/
|
||||
|
||||
void fh_date_isodate_set(Value* object, int year, int week, int day) asm("_ZN4HPHP18f_date_isodate_setERKNS_6ObjectEiii");
|
||||
|
||||
/*
|
||||
void HPHP::f_date_modify(HPHP::Object const&, HPHP::String const&)
|
||||
_ZN4HPHP13f_date_modifyERKNS_6ObjectERKNS_6StringE
|
||||
|
||||
object => rdi
|
||||
modify => rsi
|
||||
*/
|
||||
|
||||
void fh_date_modify(Value* object, Value* modify) asm("_ZN4HPHP13f_date_modifyERKNS_6ObjectERKNS_6StringE");
|
||||
|
||||
/*
|
||||
long HPHP::f_date_offset_get(HPHP::Object const&)
|
||||
_ZN4HPHP17f_date_offset_getERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
object => rdi
|
||||
*/
|
||||
|
||||
long fh_date_offset_get(Value* object) asm("_ZN4HPHP17f_date_offset_getERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_date_parse(HPHP::String const&)
|
||||
_ZN4HPHP12f_date_parseERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
date => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_date_parse(TypedValue* _rv, Value* date) asm("_ZN4HPHP12f_date_parseERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::Object HPHP::f_date_sub(HPHP::Object const&, HPHP::Object const&)
|
||||
_ZN4HPHP10f_date_subERKNS_6ObjectES2_
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
datetime => rsi
|
||||
interval => rdx
|
||||
*/
|
||||
|
||||
Value* fh_date_sub(Value* _rv, Value* datetime, Value* interval) asm("_ZN4HPHP10f_date_subERKNS_6ObjectES2_");
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_date_sun_info(long, double, double)
|
||||
_ZN4HPHP15f_date_sun_infoEldd
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
ts => rsi
|
||||
latitude => xmm0
|
||||
longitude => xmm1
|
||||
*/
|
||||
|
||||
Value* fh_date_sun_info(Value* _rv, long ts, double latitude, double longitude) asm("_ZN4HPHP15f_date_sun_infoEldd");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_date_sunrise(long, int, double, double, double, double)
|
||||
_ZN4HPHP14f_date_sunriseElidddd
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
timestamp => rsi
|
||||
format => rdx
|
||||
latitude => xmm0
|
||||
longitude => xmm1
|
||||
zenith => xmm2
|
||||
gmt_offset => xmm3
|
||||
*/
|
||||
|
||||
TypedValue* fh_date_sunrise(TypedValue* _rv, long timestamp, int format, double latitude, double longitude, double zenith, double gmt_offset) asm("_ZN4HPHP14f_date_sunriseElidddd");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_date_sunset(long, int, double, double, double, double)
|
||||
_ZN4HPHP13f_date_sunsetElidddd
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
timestamp => rsi
|
||||
format => rdx
|
||||
latitude => xmm0
|
||||
longitude => xmm1
|
||||
zenith => xmm2
|
||||
gmt_offset => xmm3
|
||||
*/
|
||||
|
||||
TypedValue* fh_date_sunset(TypedValue* _rv, long timestamp, int format, double latitude, double longitude, double zenith, double gmt_offset) asm("_ZN4HPHP13f_date_sunsetElidddd");
|
||||
|
||||
/*
|
||||
void HPHP::f_date_time_set(HPHP::Object const&, int, int, int)
|
||||
_ZN4HPHP15f_date_time_setERKNS_6ObjectEiii
|
||||
|
||||
object => rdi
|
||||
hour => rsi
|
||||
minute => rdx
|
||||
second => rcx
|
||||
*/
|
||||
|
||||
void fh_date_time_set(Value* object, int hour, int minute, int second) asm("_ZN4HPHP15f_date_time_setERKNS_6ObjectEiii");
|
||||
|
||||
/*
|
||||
long HPHP::f_date_timestamp_get(HPHP::Object const&)
|
||||
_ZN4HPHP20f_date_timestamp_getERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
datetime => rdi
|
||||
*/
|
||||
|
||||
long fh_date_timestamp_get(Value* datetime) asm("_ZN4HPHP20f_date_timestamp_getERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
HPHP::Object HPHP::f_date_timestamp_set(HPHP::Object const&, long)
|
||||
_ZN4HPHP20f_date_timestamp_setERKNS_6ObjectEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
datetime => rsi
|
||||
timestamp => rdx
|
||||
*/
|
||||
|
||||
Value* fh_date_timestamp_set(Value* _rv, Value* datetime, long timestamp) asm("_ZN4HPHP20f_date_timestamp_setERKNS_6ObjectEl");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_date_timezone_get(HPHP::Object const&)
|
||||
_ZN4HPHP19f_date_timezone_getERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
object => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_date_timezone_get(TypedValue* _rv, Value* object) asm("_ZN4HPHP19f_date_timezone_getERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
void HPHP::f_date_timezone_set(HPHP::Object const&, HPHP::Object const&)
|
||||
_ZN4HPHP19f_date_timezone_setERKNS_6ObjectES2_
|
||||
|
||||
object => rdi
|
||||
timezone => rsi
|
||||
*/
|
||||
|
||||
void fh_date_timezone_set(Value* object, Value* timezone) asm("_ZN4HPHP19f_date_timezone_setERKNS_6ObjectES2_");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_date(HPHP::String const&, long)
|
||||
_ZN4HPHP6f_dateERKNS_6StringEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
format => rsi
|
||||
timestamp => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_date(TypedValue* _rv, Value* format, long timestamp) asm("_ZN4HPHP6f_dateERKNS_6StringEl");
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_getdate(long)
|
||||
_ZN4HPHP9f_getdateEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
timestamp => rsi
|
||||
*/
|
||||
|
||||
Value* fh_getdate(Value* _rv, long timestamp) asm("_ZN4HPHP9f_getdateEl");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gettimeofday(bool)
|
||||
_ZN4HPHP14f_gettimeofdayEb
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
return_float => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_gettimeofday(TypedValue* _rv, bool return_float) asm("_ZN4HPHP14f_gettimeofdayEb");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gmdate(HPHP::String const&, long)
|
||||
_ZN4HPHP8f_gmdateERKNS_6StringEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
format => rsi
|
||||
timestamp => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_gmdate(TypedValue* _rv, Value* format, long timestamp) asm("_ZN4HPHP8f_gmdateERKNS_6StringEl");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gmmktime(int, int, int, int, int, int)
|
||||
_ZN4HPHP10f_gmmktimeEiiiiii
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
hour => rsi
|
||||
minute => rdx
|
||||
second => rcx
|
||||
month => r8
|
||||
day => r9
|
||||
year => st0
|
||||
*/
|
||||
|
||||
TypedValue* fh_gmmktime(TypedValue* _rv, int hour, int minute, int second, int month, int day, int year) asm("_ZN4HPHP10f_gmmktimeEiiiiii");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_gmstrftime(HPHP::String const&, long)
|
||||
_ZN4HPHP12f_gmstrftimeERKNS_6StringEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
format => rsi
|
||||
timestamp => rdx
|
||||
*/
|
||||
|
||||
Value* fh_gmstrftime(Value* _rv, Value* format, long timestamp) asm("_ZN4HPHP12f_gmstrftimeERKNS_6StringEl");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_idate(HPHP::String const&, long)
|
||||
_ZN4HPHP7f_idateERKNS_6StringEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
format => rsi
|
||||
timestamp => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_idate(TypedValue* _rv, Value* format, long timestamp) asm("_ZN4HPHP7f_idateERKNS_6StringEl");
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_localtime(long, bool)
|
||||
_ZN4HPHP11f_localtimeElb
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
timestamp => rsi
|
||||
is_associative => rdx
|
||||
*/
|
||||
|
||||
Value* fh_localtime(Value* _rv, long timestamp, bool is_associative) asm("_ZN4HPHP11f_localtimeElb");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_microtime(bool)
|
||||
_ZN4HPHP11f_microtimeEb
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
get_as_float => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_microtime(TypedValue* _rv, bool get_as_float) asm("_ZN4HPHP11f_microtimeEb");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mktime(int, int, int, int, int, int)
|
||||
_ZN4HPHP8f_mktimeEiiiiii
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
hour => rsi
|
||||
minute => rdx
|
||||
second => rcx
|
||||
month => r8
|
||||
day => r9
|
||||
year => st0
|
||||
*/
|
||||
|
||||
TypedValue* fh_mktime(TypedValue* _rv, int hour, int minute, int second, int month, int day, int year) asm("_ZN4HPHP8f_mktimeEiiiiii");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_strftime(HPHP::String const&, long)
|
||||
_ZN4HPHP10f_strftimeERKNS_6StringEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
format => rsi
|
||||
timestamp => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_strftime(TypedValue* _rv, Value* format, long timestamp) asm("_ZN4HPHP10f_strftimeERKNS_6StringEl");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_strptime(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP10f_strptimeERKNS_6StringES2_
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
date => rsi
|
||||
format => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_strptime(TypedValue* _rv, Value* date, Value* format) asm("_ZN4HPHP10f_strptimeERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_strtotime(HPHP::String const&, long)
|
||||
_ZN4HPHP11f_strtotimeERKNS_6StringEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
input => rsi
|
||||
timestamp => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_strtotime(TypedValue* _rv, Value* input, long timestamp) asm("_ZN4HPHP11f_strtotimeERKNS_6StringEl");
|
||||
|
||||
/*
|
||||
long HPHP::f_time()
|
||||
_ZN4HPHP6f_timeEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_time() asm("_ZN4HPHP6f_timeEv");
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_timezone_abbreviations_list()
|
||||
_ZN4HPHP29f_timezone_abbreviations_listEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_timezone_abbreviations_list(Value* _rv) asm("_ZN4HPHP29f_timezone_abbreviations_listEv");
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_timezone_identifiers_list()
|
||||
_ZN4HPHP27f_timezone_identifiers_listEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_timezone_identifiers_list(Value* _rv) asm("_ZN4HPHP27f_timezone_identifiers_listEv");
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_timezone_location_get(HPHP::Object const&)
|
||||
_ZN4HPHP23f_timezone_location_getERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
timezone => rsi
|
||||
*/
|
||||
|
||||
Value* fh_timezone_location_get(Value* _rv, Value* timezone) asm("_ZN4HPHP23f_timezone_location_getERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_timezone_name_from_abbr(HPHP::String const&, int, bool)
|
||||
_ZN4HPHP25f_timezone_name_from_abbrERKNS_6StringEib
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
abbr => rsi
|
||||
gmtoffset => rdx
|
||||
isdst => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_timezone_name_from_abbr(TypedValue* _rv, Value* abbr, int gmtoffset, bool isdst) asm("_ZN4HPHP25f_timezone_name_from_abbrERKNS_6StringEib");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_timezone_name_get(HPHP::Object const&)
|
||||
_ZN4HPHP19f_timezone_name_getERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
object => rsi
|
||||
*/
|
||||
|
||||
Value* fh_timezone_name_get(Value* _rv, Value* object) asm("_ZN4HPHP19f_timezone_name_getERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
long HPHP::f_timezone_offset_get(HPHP::Object const&, HPHP::Object const&)
|
||||
_ZN4HPHP21f_timezone_offset_getERKNS_6ObjectES2_
|
||||
|
||||
(return value) => rax
|
||||
object => rdi
|
||||
dt => rsi
|
||||
*/
|
||||
|
||||
long fh_timezone_offset_get(Value* object, Value* dt) asm("_ZN4HPHP21f_timezone_offset_getERKNS_6ObjectES2_");
|
||||
|
||||
/*
|
||||
HPHP::Object HPHP::f_timezone_open(HPHP::String const&)
|
||||
_ZN4HPHP15f_timezone_openERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
timezone => rsi
|
||||
*/
|
||||
|
||||
Value* fh_timezone_open(Value* _rv, Value* timezone) asm("_ZN4HPHP15f_timezone_openERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_timezone_transitions_get(HPHP::Object const&)
|
||||
_ZN4HPHP26f_timezone_transitions_getERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
object => rsi
|
||||
*/
|
||||
|
||||
Value* fh_timezone_transitions_get(Value* _rv, Value* object) asm("_ZN4HPHP26f_timezone_transitions_getERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_timezone_version_get()
|
||||
_ZN4HPHP22f_timezone_version_getEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_timezone_version_get(Value* _rv) asm("_ZN4HPHP22f_timezone_version_getEv");
|
||||
|
||||
|
||||
} // !HPHP
|
||||
|
||||
|
||||
@@ -202,292 +202,90 @@ class c_DateInterval : public ExtObjectDataFlags<ObjectData::UseGet|ObjectData::
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// timestamp
|
||||
|
||||
inline Variant f_gettimeofday(bool return_float = false) {
|
||||
if (return_float) {
|
||||
return TimeStamp::CurrentSecond();
|
||||
}
|
||||
return TimeStamp::CurrentTime();
|
||||
}
|
||||
|
||||
inline Variant f_microtime(bool get_as_float = false) {
|
||||
if (get_as_float) {
|
||||
return TimeStamp::CurrentSecond();
|
||||
}
|
||||
return TimeStamp::CurrentMicroTime();
|
||||
}
|
||||
|
||||
inline int64_t f_time() {
|
||||
return time(0);
|
||||
}
|
||||
|
||||
inline Variant f_mktime(int hour = INT_MAX, int minute = INT_MAX,
|
||||
int second = INT_MAX, int month = INT_MAX,
|
||||
int day = INT_MAX, int year = INT_MAX) {
|
||||
bool error;
|
||||
int64_t ts = TimeStamp::Get(error, hour, minute, second, month, day, year,
|
||||
false);
|
||||
if (error) return false;
|
||||
return ts;
|
||||
}
|
||||
|
||||
inline Variant f_gmmktime(int hour = INT_MAX, int minute = INT_MAX,
|
||||
int second = INT_MAX,
|
||||
int month = INT_MAX, int day = INT_MAX,
|
||||
int year = INT_MAX) {
|
||||
bool error;
|
||||
int64_t ts = TimeStamp::Get(error, hour, minute, second, month, day, year,
|
||||
true);
|
||||
if (error) return false;
|
||||
return ts;
|
||||
}
|
||||
|
||||
inline Variant f_idate(CStrRef format, int64_t timestamp = TimeStamp::Current()) {
|
||||
if (format.size() != 1) {
|
||||
throw_invalid_argument("format: %s", format.data());
|
||||
return false;
|
||||
}
|
||||
int64_t ret = DateTime(timestamp, false).toInteger(*format.data());
|
||||
if (ret == -1) return false;
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline Variant f_date(CStrRef format, int64_t timestamp = TimeStamp::Current()) {
|
||||
if (format.empty()) return "";
|
||||
String ret = DateTime(timestamp, false).toString(format, false);
|
||||
if (ret.isNull()) return false;
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline Variant f_gmdate(CStrRef format,
|
||||
int64_t timestamp = TimeStamp::Current()) {
|
||||
String ret = DateTime(timestamp, true).toString(format, false);
|
||||
if (ret.isNull()) return false;
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline Variant f_strftime(CStrRef format,
|
||||
int64_t timestamp = TimeStamp::Current()) {
|
||||
String ret = DateTime(timestamp, false).toString(format, true);
|
||||
if (ret.isNull()) return false;
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline String f_gmstrftime(CStrRef format,
|
||||
int64_t timestamp = TimeStamp::Current()) {
|
||||
String ret = DateTime(timestamp, true).toString(format, true);
|
||||
if (ret.isNull()) return false;
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline Array f_getdate(int64_t timestamp = TimeStamp::Current()) {
|
||||
return DateTime(timestamp, false).toArray(DateTime::TimeMap);
|
||||
}
|
||||
|
||||
inline Array f_localtime(int64_t timestamp = TimeStamp::Current(),
|
||||
bool is_associative = false) {
|
||||
DateTime::ArrayFormat format =
|
||||
is_associative ? DateTime::TmMap : DateTime::TmVector;
|
||||
return DateTime(timestamp, false).toArray(format);
|
||||
}
|
||||
|
||||
inline Variant f_strptime(CStrRef date, CStrRef format) {
|
||||
Array ret = DateTime::Parse(date, format);
|
||||
if (ret.empty()) {
|
||||
return false;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline Variant f_strtotime(CStrRef input,
|
||||
int64_t timestamp = TimeStamp::Current()) {
|
||||
if (input.empty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
DateTime dt(timestamp);
|
||||
if (!dt.fromString(input, SmartObject<TimeZone>())) {
|
||||
return false;
|
||||
}
|
||||
bool error;
|
||||
return dt.toTimeStamp(error);
|
||||
}
|
||||
Variant f_gettimeofday(bool return_float = false);
|
||||
Variant f_microtime(bool get_as_float = false);
|
||||
int64_t f_time();
|
||||
Variant f_mktime(int hour = INT_MAX, int minute = INT_MAX,
|
||||
int second = INT_MAX, int month = INT_MAX,
|
||||
int day = INT_MAX, int year = INT_MAX);
|
||||
Variant f_gmmktime(int hour = INT_MAX, int minute = INT_MAX,
|
||||
int second = INT_MAX,
|
||||
int month = INT_MAX, int day = INT_MAX,
|
||||
int year = INT_MAX);
|
||||
Variant f_idate(CStrRef format, int64_t timestamp = TimeStamp::Current());
|
||||
Variant f_date(CStrRef format, int64_t timestamp = TimeStamp::Current());
|
||||
Variant f_gmdate(CStrRef format,
|
||||
int64_t timestamp = TimeStamp::Current());
|
||||
Variant f_strftime(CStrRef format,
|
||||
int64_t timestamp = TimeStamp::Current());
|
||||
String f_gmstrftime(CStrRef format,
|
||||
int64_t timestamp = TimeStamp::Current());
|
||||
Array f_getdate(int64_t timestamp = TimeStamp::Current());
|
||||
Array f_localtime(int64_t timestamp = TimeStamp::Current(),
|
||||
bool is_associative = false);
|
||||
Variant f_strptime(CStrRef date, CStrRef format);
|
||||
Variant f_strtotime(CStrRef input,
|
||||
int64_t timestamp = TimeStamp::Current());
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// timezone
|
||||
|
||||
inline String f_date_default_timezone_get() {
|
||||
return TimeZone::Current()->name();
|
||||
}
|
||||
|
||||
inline bool f_date_default_timezone_set(CStrRef name) {
|
||||
return TimeZone::SetCurrent(name);
|
||||
}
|
||||
|
||||
inline Array f_timezone_identifiers_list() {
|
||||
return c_DateTimeZone::t_listidentifiers();
|
||||
}
|
||||
|
||||
inline Array f_timezone_abbreviations_list() {
|
||||
return c_DateTimeZone::t_listabbreviations();
|
||||
}
|
||||
|
||||
inline Variant f_timezone_name_from_abbr(CStrRef abbr, int gmtoffset = -1,
|
||||
bool isdst = true) {
|
||||
String ret = TimeZone::AbbreviationToName(abbr, gmtoffset, isdst);
|
||||
if (ret.isNull()) {
|
||||
return false;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline Object f_timezone_open(CStrRef timezone) {
|
||||
c_DateTimeZone *ctz = NEWOBJ(c_DateTimeZone)();
|
||||
Object ret(ctz);
|
||||
ctz->t___construct(timezone);
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline Array f_timezone_location_get(CObjRef timezone) {
|
||||
return timezone.getTyped<c_DateTimeZone>()->t_getlocation();
|
||||
}
|
||||
|
||||
inline String f_timezone_name_get(CObjRef object) {
|
||||
return object.getTyped<c_DateTimeZone>()->t_getname();
|
||||
}
|
||||
|
||||
inline int64_t f_timezone_offset_get(CObjRef object, CObjRef dt) {
|
||||
return object.getTyped<c_DateTimeZone>()->t_getoffset(dt);
|
||||
}
|
||||
|
||||
inline Array f_timezone_transitions_get(CObjRef object) {
|
||||
return object.getTyped<c_DateTimeZone>()->t_gettransitions();
|
||||
}
|
||||
|
||||
inline String f_timezone_version_get() {
|
||||
return TimeZone::getVersion();
|
||||
}
|
||||
String f_date_default_timezone_get();
|
||||
bool f_date_default_timezone_set(CStrRef name);
|
||||
Array f_timezone_identifiers_list();
|
||||
Array f_timezone_abbreviations_list();
|
||||
Variant f_timezone_name_from_abbr(CStrRef abbr, int gmtoffset = -1,
|
||||
bool isdst = true);
|
||||
Object f_timezone_open(CStrRef timezone);
|
||||
Array f_timezone_location_get(CObjRef timezone);
|
||||
String f_timezone_name_get(CObjRef object);
|
||||
int64_t f_timezone_offset_get(CObjRef object, CObjRef dt);
|
||||
Array f_timezone_transitions_get(CObjRef object);
|
||||
String f_timezone_version_get();
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// datetime
|
||||
|
||||
inline bool f_checkdate(int month, int day, int year) {
|
||||
return DateTime::IsValid(year, month, day);
|
||||
}
|
||||
|
||||
inline Object f_date_add(CObjRef datetime, CObjRef interval) {
|
||||
return datetime.getTyped<c_DateTime>()->
|
||||
t_add(interval.getTyped<c_DateInterval>());
|
||||
}
|
||||
|
||||
inline Object f_date_create_from_format(CStrRef format,
|
||||
CStrRef time,
|
||||
CObjRef timezone = null_object) {
|
||||
return c_DateTime::t_createfromformat(format, time, timezone);
|
||||
}
|
||||
|
||||
inline Object f_date_create(CStrRef time = null_string,
|
||||
CObjRef timezone = null_object) {
|
||||
c_DateTime *cdt = NEWOBJ(c_DateTime)();
|
||||
Object ret(cdt);
|
||||
cdt->t___construct(time, timezone);
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline void f_date_date_set(CObjRef object, int year, int month, int day) {
|
||||
object.getTyped<c_DateTime>()->t_setdate(year, month, day);
|
||||
}
|
||||
|
||||
inline Object f_date_diff(CObjRef datetime,
|
||||
CObjRef datetime2,
|
||||
bool absolute = false) {
|
||||
return datetime.getTyped<c_DateTime>()->
|
||||
t_diff(datetime2.getTyped<c_DateTime>(), absolute);
|
||||
}
|
||||
|
||||
inline void f_date_isodate_set(CObjRef object, int year, int week,
|
||||
int day = 1) {
|
||||
object.getTyped<c_DateTime>()->t_setisodate(year, week, day);
|
||||
}
|
||||
|
||||
inline String f_date_format(CObjRef object, CStrRef format) {
|
||||
return object.getTyped<c_DateTime>()->t_format(format);
|
||||
}
|
||||
|
||||
inline Array f_date_get_last_errors() {
|
||||
return c_DateTime::t_getlasterrors();
|
||||
}
|
||||
|
||||
inline Object f_date_interval_create_from_date_string(CStrRef time) {
|
||||
return c_DateInterval::t_createfromdatestring(time);
|
||||
}
|
||||
|
||||
inline String f_date_interval_format(CObjRef interval, CStrRef format_spec) {
|
||||
return interval.getTyped<c_DateInterval>()->t_format(format_spec);
|
||||
}
|
||||
|
||||
inline void f_date_modify(CObjRef object, CStrRef modify) {
|
||||
object.getTyped<c_DateTime>()->t_modify(modify);
|
||||
}
|
||||
|
||||
inline int64_t f_date_offset_get(CObjRef object) {
|
||||
return object.getTyped<c_DateTime>()->t_getoffset();
|
||||
}
|
||||
|
||||
inline Variant f_date_parse(CStrRef date) {
|
||||
return DateTime::Parse(date);
|
||||
}
|
||||
|
||||
inline void f_date_time_set(CObjRef object, int hour, int minute,
|
||||
int second = 0) {
|
||||
object.getTyped<c_DateTime>()->t_settime(hour, minute, second);
|
||||
}
|
||||
|
||||
inline int64_t f_date_timestamp_get(CObjRef datetime) {
|
||||
return datetime.getTyped<c_DateTime>()->t_gettimestamp();
|
||||
}
|
||||
|
||||
inline Object f_date_timestamp_set(CObjRef datetime, int64_t timestamp) {
|
||||
return datetime.getTyped<c_DateTime>()->
|
||||
t_settimestamp(timestamp);
|
||||
}
|
||||
|
||||
inline Variant f_date_timezone_get(CObjRef object) {
|
||||
return object.getTyped<c_DateTime>()->t_gettimezone();
|
||||
}
|
||||
|
||||
inline void f_date_timezone_set(CObjRef object, CObjRef timezone) {
|
||||
object.getTyped<c_DateTime>()->t_settimezone(timezone);
|
||||
}
|
||||
|
||||
inline Object f_date_sub(CObjRef datetime, CObjRef interval) {
|
||||
return datetime.getTyped<c_DateTime>()->
|
||||
t_sub(interval.getTyped<c_DateInterval>());
|
||||
}
|
||||
bool f_checkdate(int month, int day, int year);
|
||||
Object f_date_add(CObjRef datetime, CObjRef interval);
|
||||
Object f_date_create_from_format(CStrRef format,
|
||||
CStrRef time,
|
||||
CObjRef timezone = null_object);
|
||||
Object f_date_create(CStrRef time = null_string,
|
||||
CObjRef timezone = null_object);
|
||||
void f_date_date_set(CObjRef object, int year, int month, int day);
|
||||
Object f_date_diff(CObjRef datetime,
|
||||
CObjRef datetime2,
|
||||
bool absolute = false);
|
||||
void f_date_isodate_set(CObjRef object, int year, int week,
|
||||
int day = 1);
|
||||
String f_date_format(CObjRef object, CStrRef format);
|
||||
Array f_date_get_last_errors();
|
||||
Object f_date_interval_create_from_date_string(CStrRef time);
|
||||
String f_date_interval_format(CObjRef interval, CStrRef format_spec);
|
||||
void f_date_modify(CObjRef object, CStrRef modify);
|
||||
int64_t f_date_offset_get(CObjRef object);
|
||||
Variant f_date_parse(CStrRef date);
|
||||
void f_date_time_set(CObjRef object, int hour, int minute,
|
||||
int second = 0);
|
||||
int64_t f_date_timestamp_get(CObjRef datetime);
|
||||
Object f_date_timestamp_set(CObjRef datetime, int64_t timestamp);
|
||||
Variant f_date_timezone_get(CObjRef object);
|
||||
void f_date_timezone_set(CObjRef object, CObjRef timezone);
|
||||
Object f_date_sub(CObjRef datetime, CObjRef interval);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// sun
|
||||
|
||||
inline Array f_date_sun_info(int64_t ts, double latitude, double longitude) {
|
||||
return DateTime(ts, false).getSunInfo(latitude, longitude);
|
||||
}
|
||||
|
||||
inline Variant f_date_sunrise(int64_t timestamp, int format = 0,
|
||||
double latitude = 0.0, double longitude = 0.0,
|
||||
double zenith = 0.0,
|
||||
double gmt_offset = 99999.0) {
|
||||
return DateTime(timestamp, false).getSunInfo
|
||||
(static_cast<DateTime::SunInfoFormat>(format), latitude, longitude,
|
||||
zenith, gmt_offset, false);
|
||||
}
|
||||
|
||||
inline Variant f_date_sunset(int64_t timestamp, int format = 0,
|
||||
double latitude = 0.0, double longitude = 0.0,
|
||||
double zenith = 0.0,
|
||||
double gmt_offset = 99999.0) {
|
||||
return DateTime(timestamp, false).getSunInfo
|
||||
(static_cast<DateTime::SunInfoFormat>(format), latitude, longitude,
|
||||
zenith, gmt_offset, true);
|
||||
}
|
||||
Array f_date_sun_info(int64_t ts, double latitude, double longitude);
|
||||
Variant f_date_sunrise(int64_t timestamp, int format = 0,
|
||||
double latitude = 0.0, double longitude = 0.0,
|
||||
double zenith = 0.0,
|
||||
double gmt_offset = 99999.0);
|
||||
Variant f_date_sunset(int64_t timestamp, int format = 0,
|
||||
double latitude = 0.0, double longitude = 0.0,
|
||||
double zenith = 0.0,
|
||||
double gmt_offset = 99999.0);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
}
|
||||
|
||||
@@ -27,6 +27,8 @@ const int64_t k_PHP_ROUND_HALF_DOWN = PHP_ROUND_HALF_DOWN;
|
||||
const int64_t k_PHP_ROUND_HALF_EVEN = PHP_ROUND_HALF_EVEN;
|
||||
const int64_t k_PHP_ROUND_HALF_ODD = PHP_ROUND_HALF_ODD;
|
||||
|
||||
double f_pi() { return k_M_PI;}
|
||||
|
||||
Variant f_min(int _argc, CVarRef value, CArrRef _argv /* = null_array */) {
|
||||
Variant ret;
|
||||
if (_argv.empty() && value.is(KindOfArray)) {
|
||||
@@ -106,6 +108,13 @@ Variant f_abs(CVarRef number) {
|
||||
}
|
||||
}
|
||||
|
||||
bool f_is_finite(double val) { return finite(val);}
|
||||
bool f_is_infinite(double val) { return isinf(val);}
|
||||
bool f_is_nan(double val) { return isnan(val);}
|
||||
|
||||
double f_ceil(double value) { return ceil(value);}
|
||||
double f_floor(double value) { return floor(value);}
|
||||
|
||||
double f_round(CVarRef val, int64_t precision /* = 0 */,
|
||||
int64_t mode /* = PHP_ROUND_HALF_UP */) {
|
||||
int64_t ival;
|
||||
@@ -124,6 +133,28 @@ double f_round(CVarRef val, int64_t precision /* = 0 */,
|
||||
return dval;
|
||||
}
|
||||
|
||||
double f_deg2rad(double number) { return number / 180.0 * k_M_PI;}
|
||||
double f_rad2deg(double number) { return number / k_M_PI * 180.0;}
|
||||
|
||||
String f_decbin(int64_t number) {
|
||||
return String(string_long_to_base(number, 2), AttachString);
|
||||
}
|
||||
String f_dechex(int64_t number) {
|
||||
return String(string_long_to_base(number, 16), AttachString);
|
||||
}
|
||||
String f_decoct(int64_t number) {
|
||||
return String(string_long_to_base(number, 8), AttachString);
|
||||
}
|
||||
Variant f_bindec(CStrRef binary_string) {
|
||||
return string_base_to_numeric(binary_string.data(), binary_string.size(), 2);
|
||||
}
|
||||
Variant f_hexdec(CStrRef hex_string) {
|
||||
return string_base_to_numeric(hex_string.data(), hex_string.size(), 16);
|
||||
}
|
||||
Variant f_octdec(CStrRef octal_string) {
|
||||
return string_base_to_numeric(octal_string.data(), octal_string.size(), 8);
|
||||
}
|
||||
|
||||
Variant f_base_convert(CStrRef number, int64_t frombase, int64_t tobase) {
|
||||
if (!string_validate_base(frombase)) {
|
||||
throw_invalid_argument("Invalid frombase: %d", frombase);
|
||||
@@ -174,6 +205,34 @@ Numeric f_pow(CVarRef base, CVarRef exp) {
|
||||
return pow(bdbl, edbl);
|
||||
}
|
||||
|
||||
double f_exp(double arg) { return exp(arg);}
|
||||
double f_expm1(double arg) { return expm1(arg);}
|
||||
double f_log10(double arg) { return log10(arg);}
|
||||
double f_log1p(double number) { return log1p(number);}
|
||||
double f_log(double arg, double base /* = 0 */) {
|
||||
return base <= 0 ? log(arg) : log(arg)/log(base);
|
||||
}
|
||||
|
||||
double f_cos(double arg) { return cos(arg); }
|
||||
double f_cosh(double arg) { return cosh(arg); }
|
||||
double f_sin(double arg) { return sin(arg); }
|
||||
double f_sinh(double arg) { return sinh(arg); }
|
||||
double f_tan(double arg) { return tan(arg); }
|
||||
double f_tanh(double arg) { return tanh(arg); }
|
||||
double f_acos(double arg) { return acos(arg); }
|
||||
double f_acosh(double arg) { return acosh(arg);}
|
||||
double f_asin(double arg) { return asin(arg); }
|
||||
double f_asinh(double arg) { return asinh(arg);}
|
||||
double f_atan(double arg) { return atan(arg); }
|
||||
double f_atanh(double arg) { return atanh(arg);}
|
||||
double f_atan2(double y, double x) { return atan2(y, x);}
|
||||
|
||||
double f_hypot(double x, double y) { return hypot(x, y);}
|
||||
double f_fmod(double x, double y) { return fmod(x, y);}
|
||||
double f_sqrt(double arg) { return sqrt(arg);}
|
||||
|
||||
int64_t f_getrandmax() { return RAND_MAX;}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static bool s_rand_is_seeded = false;
|
||||
@@ -203,6 +262,8 @@ int64_t f_rand(int64_t min /* = 0 */, int64_t max /* = RAND_MAX */) {
|
||||
return number;
|
||||
}
|
||||
|
||||
int64_t f_mt_getrandmax() { return MT_RAND_MAX;}
|
||||
|
||||
void f_mt_srand(CVarRef seed /* = null_variant */) {
|
||||
if (seed.isNull()) {
|
||||
return math_mt_srand(math_generate_seed());
|
||||
@@ -214,5 +275,10 @@ void f_mt_srand(CVarRef seed /* = null_variant */) {
|
||||
}
|
||||
}
|
||||
|
||||
int64_t f_mt_rand(int64_t min /* = 0 */, int64_t max /* = RAND_MAX */) {
|
||||
return math_mt_rand(min, max);
|
||||
}
|
||||
double f_lcg_value() { return math_combined_lcg();}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
}
|
||||
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -16,6 +16,15 @@
|
||||
*/
|
||||
namespace HPHP {
|
||||
|
||||
/*
|
||||
double HPHP::f_pi()
|
||||
_ZN4HPHP4f_piEv
|
||||
|
||||
(return value) => xmm0
|
||||
*/
|
||||
|
||||
double fh_pi() asm("_ZN4HPHP4f_piEv");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_min(int, HPHP::Variant const&, HPHP::Array const&)
|
||||
_ZN4HPHP5f_minEiRKNS_7VariantERKNS_5ArrayE
|
||||
@@ -53,6 +62,56 @@ number => rsi
|
||||
|
||||
TypedValue* fh_abs(TypedValue* _rv, TypedValue* number) asm("_ZN4HPHP5f_absERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
bool HPHP::f_is_finite(double)
|
||||
_ZN4HPHP11f_is_finiteEd
|
||||
|
||||
(return value) => rax
|
||||
val => xmm0
|
||||
*/
|
||||
|
||||
bool fh_is_finite(double val) asm("_ZN4HPHP11f_is_finiteEd");
|
||||
|
||||
/*
|
||||
bool HPHP::f_is_infinite(double)
|
||||
_ZN4HPHP13f_is_infiniteEd
|
||||
|
||||
(return value) => rax
|
||||
val => xmm0
|
||||
*/
|
||||
|
||||
bool fh_is_infinite(double val) asm("_ZN4HPHP13f_is_infiniteEd");
|
||||
|
||||
/*
|
||||
bool HPHP::f_is_nan(double)
|
||||
_ZN4HPHP8f_is_nanEd
|
||||
|
||||
(return value) => rax
|
||||
val => xmm0
|
||||
*/
|
||||
|
||||
bool fh_is_nan(double val) asm("_ZN4HPHP8f_is_nanEd");
|
||||
|
||||
/*
|
||||
double HPHP::f_ceil(double)
|
||||
_ZN4HPHP6f_ceilEd
|
||||
|
||||
(return value) => xmm0
|
||||
value => xmm0
|
||||
*/
|
||||
|
||||
double fh_ceil(double value) asm("_ZN4HPHP6f_ceilEd");
|
||||
|
||||
/*
|
||||
double HPHP::f_floor(double)
|
||||
_ZN4HPHP7f_floorEd
|
||||
|
||||
(return value) => xmm0
|
||||
value => xmm0
|
||||
*/
|
||||
|
||||
double fh_floor(double value) asm("_ZN4HPHP7f_floorEd");
|
||||
|
||||
/*
|
||||
double HPHP::f_round(HPHP::Variant const&, long, long)
|
||||
_ZN4HPHP7f_roundERKNS_7VariantEll
|
||||
@@ -65,6 +124,92 @@ mode => rdx
|
||||
|
||||
double fh_round(TypedValue* val, long precision, long mode) asm("_ZN4HPHP7f_roundERKNS_7VariantEll");
|
||||
|
||||
/*
|
||||
double HPHP::f_deg2rad(double)
|
||||
_ZN4HPHP9f_deg2radEd
|
||||
|
||||
(return value) => xmm0
|
||||
number => xmm0
|
||||
*/
|
||||
|
||||
double fh_deg2rad(double number) asm("_ZN4HPHP9f_deg2radEd");
|
||||
|
||||
/*
|
||||
double HPHP::f_rad2deg(double)
|
||||
_ZN4HPHP9f_rad2degEd
|
||||
|
||||
(return value) => xmm0
|
||||
number => xmm0
|
||||
*/
|
||||
|
||||
double fh_rad2deg(double number) asm("_ZN4HPHP9f_rad2degEd");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_decbin(long)
|
||||
_ZN4HPHP8f_decbinEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
number => rsi
|
||||
*/
|
||||
|
||||
Value* fh_decbin(Value* _rv, long number) asm("_ZN4HPHP8f_decbinEl");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_dechex(long)
|
||||
_ZN4HPHP8f_dechexEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
number => rsi
|
||||
*/
|
||||
|
||||
Value* fh_dechex(Value* _rv, long number) asm("_ZN4HPHP8f_dechexEl");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_decoct(long)
|
||||
_ZN4HPHP8f_decoctEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
number => rsi
|
||||
*/
|
||||
|
||||
Value* fh_decoct(Value* _rv, long number) asm("_ZN4HPHP8f_decoctEl");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_bindec(HPHP::String const&)
|
||||
_ZN4HPHP8f_bindecERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
binary_string => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_bindec(TypedValue* _rv, Value* binary_string) asm("_ZN4HPHP8f_bindecERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_hexdec(HPHP::String const&)
|
||||
_ZN4HPHP8f_hexdecERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
hex_string => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_hexdec(TypedValue* _rv, Value* hex_string) asm("_ZN4HPHP8f_hexdecERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_octdec(HPHP::String const&)
|
||||
_ZN4HPHP8f_octdecERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
octal_string => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_octdec(TypedValue* _rv, Value* octal_string) asm("_ZN4HPHP8f_octdecERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_base_convert(HPHP::String const&, long, long)
|
||||
_ZN4HPHP14f_base_convertERKNS_6StringEll
|
||||
@@ -90,6 +235,229 @@ exp => rdx
|
||||
|
||||
TypedValue* fh_pow(TypedValue* _rv, TypedValue* base, TypedValue* exp) asm("_ZN4HPHP5f_powERKNS_7VariantES2_");
|
||||
|
||||
/*
|
||||
double HPHP::f_exp(double)
|
||||
_ZN4HPHP5f_expEd
|
||||
|
||||
(return value) => xmm0
|
||||
arg => xmm0
|
||||
*/
|
||||
|
||||
double fh_exp(double arg) asm("_ZN4HPHP5f_expEd");
|
||||
|
||||
/*
|
||||
double HPHP::f_expm1(double)
|
||||
_ZN4HPHP7f_expm1Ed
|
||||
|
||||
(return value) => xmm0
|
||||
arg => xmm0
|
||||
*/
|
||||
|
||||
double fh_expm1(double arg) asm("_ZN4HPHP7f_expm1Ed");
|
||||
|
||||
/*
|
||||
double HPHP::f_log10(double)
|
||||
_ZN4HPHP7f_log10Ed
|
||||
|
||||
(return value) => xmm0
|
||||
arg => xmm0
|
||||
*/
|
||||
|
||||
double fh_log10(double arg) asm("_ZN4HPHP7f_log10Ed");
|
||||
|
||||
/*
|
||||
double HPHP::f_log1p(double)
|
||||
_ZN4HPHP7f_log1pEd
|
||||
|
||||
(return value) => xmm0
|
||||
number => xmm0
|
||||
*/
|
||||
|
||||
double fh_log1p(double number) asm("_ZN4HPHP7f_log1pEd");
|
||||
|
||||
/*
|
||||
double HPHP::f_log(double, double)
|
||||
_ZN4HPHP5f_logEdd
|
||||
|
||||
(return value) => xmm0
|
||||
arg => xmm0
|
||||
base => xmm1
|
||||
*/
|
||||
|
||||
double fh_log(double arg, double base) asm("_ZN4HPHP5f_logEdd");
|
||||
|
||||
/*
|
||||
double HPHP::f_cos(double)
|
||||
_ZN4HPHP5f_cosEd
|
||||
|
||||
(return value) => xmm0
|
||||
arg => xmm0
|
||||
*/
|
||||
|
||||
double fh_cos(double arg) asm("_ZN4HPHP5f_cosEd");
|
||||
|
||||
/*
|
||||
double HPHP::f_cosh(double)
|
||||
_ZN4HPHP6f_coshEd
|
||||
|
||||
(return value) => xmm0
|
||||
arg => xmm0
|
||||
*/
|
||||
|
||||
double fh_cosh(double arg) asm("_ZN4HPHP6f_coshEd");
|
||||
|
||||
/*
|
||||
double HPHP::f_sin(double)
|
||||
_ZN4HPHP5f_sinEd
|
||||
|
||||
(return value) => xmm0
|
||||
arg => xmm0
|
||||
*/
|
||||
|
||||
double fh_sin(double arg) asm("_ZN4HPHP5f_sinEd");
|
||||
|
||||
/*
|
||||
double HPHP::f_sinh(double)
|
||||
_ZN4HPHP6f_sinhEd
|
||||
|
||||
(return value) => xmm0
|
||||
arg => xmm0
|
||||
*/
|
||||
|
||||
double fh_sinh(double arg) asm("_ZN4HPHP6f_sinhEd");
|
||||
|
||||
/*
|
||||
double HPHP::f_tan(double)
|
||||
_ZN4HPHP5f_tanEd
|
||||
|
||||
(return value) => xmm0
|
||||
arg => xmm0
|
||||
*/
|
||||
|
||||
double fh_tan(double arg) asm("_ZN4HPHP5f_tanEd");
|
||||
|
||||
/*
|
||||
double HPHP::f_tanh(double)
|
||||
_ZN4HPHP6f_tanhEd
|
||||
|
||||
(return value) => xmm0
|
||||
arg => xmm0
|
||||
*/
|
||||
|
||||
double fh_tanh(double arg) asm("_ZN4HPHP6f_tanhEd");
|
||||
|
||||
/*
|
||||
double HPHP::f_acos(double)
|
||||
_ZN4HPHP6f_acosEd
|
||||
|
||||
(return value) => xmm0
|
||||
arg => xmm0
|
||||
*/
|
||||
|
||||
double fh_acos(double arg) asm("_ZN4HPHP6f_acosEd");
|
||||
|
||||
/*
|
||||
double HPHP::f_acosh(double)
|
||||
_ZN4HPHP7f_acoshEd
|
||||
|
||||
(return value) => xmm0
|
||||
arg => xmm0
|
||||
*/
|
||||
|
||||
double fh_acosh(double arg) asm("_ZN4HPHP7f_acoshEd");
|
||||
|
||||
/*
|
||||
double HPHP::f_asin(double)
|
||||
_ZN4HPHP6f_asinEd
|
||||
|
||||
(return value) => xmm0
|
||||
arg => xmm0
|
||||
*/
|
||||
|
||||
double fh_asin(double arg) asm("_ZN4HPHP6f_asinEd");
|
||||
|
||||
/*
|
||||
double HPHP::f_asinh(double)
|
||||
_ZN4HPHP7f_asinhEd
|
||||
|
||||
(return value) => xmm0
|
||||
arg => xmm0
|
||||
*/
|
||||
|
||||
double fh_asinh(double arg) asm("_ZN4HPHP7f_asinhEd");
|
||||
|
||||
/*
|
||||
double HPHP::f_atan(double)
|
||||
_ZN4HPHP6f_atanEd
|
||||
|
||||
(return value) => xmm0
|
||||
arg => xmm0
|
||||
*/
|
||||
|
||||
double fh_atan(double arg) asm("_ZN4HPHP6f_atanEd");
|
||||
|
||||
/*
|
||||
double HPHP::f_atanh(double)
|
||||
_ZN4HPHP7f_atanhEd
|
||||
|
||||
(return value) => xmm0
|
||||
arg => xmm0
|
||||
*/
|
||||
|
||||
double fh_atanh(double arg) asm("_ZN4HPHP7f_atanhEd");
|
||||
|
||||
/*
|
||||
double HPHP::f_atan2(double, double)
|
||||
_ZN4HPHP7f_atan2Edd
|
||||
|
||||
(return value) => xmm0
|
||||
y => xmm0
|
||||
x => xmm1
|
||||
*/
|
||||
|
||||
double fh_atan2(double y, double x) asm("_ZN4HPHP7f_atan2Edd");
|
||||
|
||||
/*
|
||||
double HPHP::f_hypot(double, double)
|
||||
_ZN4HPHP7f_hypotEdd
|
||||
|
||||
(return value) => xmm0
|
||||
x => xmm0
|
||||
y => xmm1
|
||||
*/
|
||||
|
||||
double fh_hypot(double x, double y) asm("_ZN4HPHP7f_hypotEdd");
|
||||
|
||||
/*
|
||||
double HPHP::f_fmod(double, double)
|
||||
_ZN4HPHP6f_fmodEdd
|
||||
|
||||
(return value) => xmm0
|
||||
x => xmm0
|
||||
y => xmm1
|
||||
*/
|
||||
|
||||
double fh_fmod(double x, double y) asm("_ZN4HPHP6f_fmodEdd");
|
||||
|
||||
/*
|
||||
double HPHP::f_sqrt(double)
|
||||
_ZN4HPHP6f_sqrtEd
|
||||
|
||||
(return value) => xmm0
|
||||
arg => xmm0
|
||||
*/
|
||||
|
||||
double fh_sqrt(double arg) asm("_ZN4HPHP6f_sqrtEd");
|
||||
|
||||
/*
|
||||
long HPHP::f_getrandmax()
|
||||
_ZN4HPHP12f_getrandmaxEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_getrandmax() asm("_ZN4HPHP12f_getrandmaxEv");
|
||||
|
||||
/*
|
||||
void HPHP::f_srand(HPHP::Variant const&)
|
||||
_ZN4HPHP7f_srandERKNS_7VariantE
|
||||
@@ -110,6 +478,15 @@ max => rsi
|
||||
|
||||
long fh_rand(long min, long max) asm("_ZN4HPHP6f_randEll");
|
||||
|
||||
/*
|
||||
long HPHP::f_mt_getrandmax()
|
||||
_ZN4HPHP15f_mt_getrandmaxEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_mt_getrandmax() asm("_ZN4HPHP15f_mt_getrandmaxEv");
|
||||
|
||||
/*
|
||||
void HPHP::f_mt_srand(HPHP::Variant const&)
|
||||
_ZN4HPHP10f_mt_srandERKNS_7VariantE
|
||||
@@ -119,6 +496,26 @@ seed => rdi
|
||||
|
||||
void fh_mt_srand(TypedValue* seed) asm("_ZN4HPHP10f_mt_srandERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
long HPHP::f_mt_rand(long, long)
|
||||
_ZN4HPHP9f_mt_randEll
|
||||
|
||||
(return value) => rax
|
||||
min => rdi
|
||||
max => rsi
|
||||
*/
|
||||
|
||||
long fh_mt_rand(long min, long max) asm("_ZN4HPHP9f_mt_randEll");
|
||||
|
||||
/*
|
||||
double HPHP::f_lcg_value()
|
||||
_ZN4HPHP11f_lcg_valueEv
|
||||
|
||||
(return value) => xmm0
|
||||
*/
|
||||
|
||||
double fh_lcg_value() asm("_ZN4HPHP11f_lcg_valueEv");
|
||||
|
||||
|
||||
} // !HPHP
|
||||
|
||||
|
||||
@@ -47,80 +47,64 @@ extern const int64_t k_PHP_ROUND_HALF_DOWN;
|
||||
extern const int64_t k_PHP_ROUND_HALF_EVEN;
|
||||
extern const int64_t k_PHP_ROUND_HALF_ODD;
|
||||
|
||||
inline double f_pi() { return k_M_PI;}
|
||||
double f_pi();
|
||||
|
||||
Variant f_min(int _argc, CVarRef value, CArrRef _argv = null_array);
|
||||
Variant f_max(int _argc, CVarRef value, CArrRef _argv = null_array);
|
||||
Variant f_abs(CVarRef number);
|
||||
|
||||
inline bool f_is_finite(double val) { return finite(val);}
|
||||
inline bool f_is_infinite(double val) { return isinf(val);}
|
||||
inline bool f_is_nan(double val) { return isnan(val);}
|
||||
bool f_is_finite(double val);
|
||||
bool f_is_infinite(double val);
|
||||
bool f_is_nan(double val);
|
||||
|
||||
inline double f_ceil(double value) { return ceil(value);}
|
||||
inline double f_floor(double value) { return floor(value);}
|
||||
double f_ceil(double value);
|
||||
double f_floor(double value);
|
||||
double f_round(CVarRef val, int64_t precision = 0,
|
||||
int64_t mode = PHP_ROUND_HALF_UP);
|
||||
|
||||
inline double f_deg2rad(double number) { return number / 180.0 * k_M_PI;}
|
||||
inline double f_rad2deg(double number) { return number / k_M_PI * 180.0;}
|
||||
double f_deg2rad(double number);
|
||||
double f_rad2deg(double number);
|
||||
|
||||
// departure from PHP: not using "double" for these conversions
|
||||
inline String f_decbin(int64_t number) {
|
||||
return String(string_long_to_base(number, 2), AttachString);
|
||||
}
|
||||
inline String f_dechex(int64_t number) {
|
||||
return String(string_long_to_base(number, 16), AttachString);
|
||||
}
|
||||
inline String f_decoct(int64_t number) {
|
||||
return String(string_long_to_base(number, 8), AttachString);
|
||||
}
|
||||
inline Variant f_bindec(CStrRef binary_string) {
|
||||
return string_base_to_numeric(binary_string.data(), binary_string.size(), 2);
|
||||
}
|
||||
inline Variant f_hexdec(CStrRef hex_string) {
|
||||
return string_base_to_numeric(hex_string.data(), hex_string.size(), 16);
|
||||
}
|
||||
inline Variant f_octdec(CStrRef octal_string) {
|
||||
return string_base_to_numeric(octal_string.data(), octal_string.size(), 8);
|
||||
}
|
||||
String f_decbin(int64_t number);
|
||||
String f_dechex(int64_t number);
|
||||
String f_decoct(int64_t number);
|
||||
Variant f_bindec(CStrRef binary_string);
|
||||
Variant f_hexdec(CStrRef hex_string);
|
||||
Variant f_octdec(CStrRef octal_string);
|
||||
Variant f_base_convert(CStrRef number, int64_t frombase, int64_t tobase);
|
||||
Numeric f_pow(CVarRef base, CVarRef exp);
|
||||
inline double f_exp(double arg) { return exp(arg);}
|
||||
inline double f_expm1(double arg) { return expm1(arg);}
|
||||
inline double f_log10(double arg) { return log10(arg);}
|
||||
inline double f_log1p(double number) { return log1p(number);}
|
||||
inline double f_log(double arg, double base = 0) {
|
||||
return base <= 0 ? log(arg) : log(arg)/log(base);
|
||||
}
|
||||
double f_exp(double arg);
|
||||
double f_expm1(double arg);
|
||||
double f_log10(double arg);
|
||||
double f_log1p(double number);
|
||||
double f_log(double arg, double base = 0);
|
||||
|
||||
inline double f_cos(double arg) { return cos(arg); }
|
||||
inline double f_cosh(double arg) { return cosh(arg); }
|
||||
inline double f_sin(double arg) { return sin(arg); }
|
||||
inline double f_sinh(double arg) { return sinh(arg); }
|
||||
inline double f_tan(double arg) { return tan(arg); }
|
||||
inline double f_tanh(double arg) { return tanh(arg); }
|
||||
inline double f_acos(double arg) { return acos(arg); }
|
||||
inline double f_acosh(double arg) { return acosh(arg);}
|
||||
inline double f_asin(double arg) { return asin(arg); }
|
||||
inline double f_asinh(double arg) { return asinh(arg);}
|
||||
inline double f_atan(double arg) { return atan(arg); }
|
||||
inline double f_atanh(double arg) { return atanh(arg);}
|
||||
inline double f_atan2(double y, double x) { return atan2(y, x);}
|
||||
double f_cos(double arg);
|
||||
double f_cosh(double arg);
|
||||
double f_sin(double arg);
|
||||
double f_sinh(double arg);
|
||||
double f_tan(double arg);
|
||||
double f_tanh(double arg);
|
||||
double f_acos(double arg);
|
||||
double f_acosh(double arg);
|
||||
double f_asin(double arg);
|
||||
double f_asinh(double arg);
|
||||
double f_atan(double arg);
|
||||
double f_atanh(double arg);
|
||||
double f_atan2(double y, double x);
|
||||
|
||||
inline double f_hypot(double x, double y) { return hypot(x, y);}
|
||||
inline double f_fmod(double x, double y) { return fmod(x, y);}
|
||||
inline double f_sqrt(double arg) { return sqrt(arg);}
|
||||
double f_hypot(double x, double y);
|
||||
double f_fmod(double x, double y);
|
||||
double f_sqrt(double arg);
|
||||
|
||||
inline int64_t f_getrandmax() { return RAND_MAX;}
|
||||
int64_t f_getrandmax();
|
||||
void f_srand(CVarRef seed = null_variant);
|
||||
int64_t f_rand(int64_t min = 0, int64_t max = RAND_MAX);
|
||||
inline int64_t f_mt_getrandmax() { return MT_RAND_MAX;}
|
||||
int64_t f_mt_getrandmax();
|
||||
void f_mt_srand(CVarRef seed = null_variant);
|
||||
inline int64_t f_mt_rand(int64_t min = 0, int64_t max = RAND_MAX) {
|
||||
return math_mt_rand(min, max);
|
||||
}
|
||||
inline double f_lcg_value() { return math_combined_lcg();}
|
||||
int64_t f_mt_rand(int64_t min = 0, int64_t max = RAND_MAX);
|
||||
double f_lcg_value();
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
}
|
||||
|
||||
@@ -677,6 +677,29 @@ Variant f_mysql_real_escape_string(CStrRef unescaped_string,
|
||||
return false;
|
||||
}
|
||||
|
||||
String f_mysql_get_client_info() {
|
||||
return String(mysql_get_client_info(), CopyString);
|
||||
}
|
||||
Variant f_mysql_set_charset(CStrRef charset,
|
||||
CVarRef link_identifier /* = uninit_null() */) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return uninit_null();
|
||||
return !mysql_set_character_set(conn, charset.data());
|
||||
}
|
||||
Variant f_mysql_ping(CVarRef link_identifier /* = uninit_null() */) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return uninit_null();
|
||||
return !mysql_ping(conn);
|
||||
}
|
||||
Variant f_mysql_client_encoding(CVarRef link_identifier /* = uninit_null() */) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return String(mysql_character_set_name(conn), CopyString);
|
||||
}
|
||||
Variant f_mysql_close(CVarRef link_identifier /* = uninit_null() */) {
|
||||
return MySQL::CloseConn(link_identifier);
|
||||
}
|
||||
|
||||
Variant f_mysql_errno(CVarRef link_identifier /* = null */) {
|
||||
MySQL *mySQL = MySQL::Get(link_identifier);
|
||||
if (!mySQL) {
|
||||
@@ -722,6 +745,63 @@ Variant f_mysql_warning_count(CVarRef link_identifier /* = null */) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Variant f_mysql_get_host_info(CVarRef link_identifier /* = uninit_null() */) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return String(mysql_get_host_info(conn), CopyString);
|
||||
}
|
||||
Variant f_mysql_get_proto_info(CVarRef link_identifier /* = uninit_null() */) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return (int64_t)mysql_get_proto_info(conn);
|
||||
}
|
||||
Variant f_mysql_get_server_info(CVarRef link_identifier /* = uninit_null() */) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return String(mysql_get_server_info(conn), CopyString);
|
||||
}
|
||||
Variant f_mysql_info(CVarRef link_identifier /* = uninit_null() */) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return String(mysql_info(conn), CopyString);
|
||||
}
|
||||
Variant f_mysql_insert_id(CVarRef link_identifier /* = uninit_null() */) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return static_cast<int64_t>(mysql_insert_id(conn));
|
||||
}
|
||||
Variant f_mysql_stat(CVarRef link_identifier /* = uninit_null() */) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return String(mysql_stat(conn), CopyString);
|
||||
}
|
||||
Variant f_mysql_thread_id(CVarRef link_identifier /* = uninit_null() */) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return (int64_t)mysql_thread_id(conn);
|
||||
}
|
||||
Variant f_mysql_create_db(CStrRef db,
|
||||
CVarRef link_identifier /* = uninit_null() */) {
|
||||
throw NotSupportedException
|
||||
(__func__, "Deprecated. Use mysql_query(CREATE DATABASE) instead.");
|
||||
}
|
||||
Variant f_mysql_select_db(CStrRef db,
|
||||
CVarRef link_identifier /* = uninit_null() */) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return mysql_select_db(conn, db.data()) == 0;
|
||||
}
|
||||
Variant f_mysql_drop_db(CStrRef db,
|
||||
CVarRef link_identifier /* = uninit_null() */) {
|
||||
throw NotSupportedException
|
||||
(__func__, "Deprecated. Use mysql_query(DROP DATABASE) instead.");
|
||||
}
|
||||
Variant f_mysql_affected_rows(CVarRef link_identifier /* = uninit_null() */) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return static_cast<int64_t>(mysql_affected_rows(conn));
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// query functions
|
||||
|
||||
@@ -1046,6 +1126,12 @@ Variant f_mysql_unbuffered_query(CStrRef query,
|
||||
return php_mysql_do_query_general(query, link_identifier, false, false);
|
||||
}
|
||||
|
||||
Variant f_mysql_db_query(CStrRef database, CStrRef query,
|
||||
CVarRef link_identifier /* = uninit_null() */) {
|
||||
throw NotSupportedException
|
||||
(__func__, "Deprecated. Use mysql_query() instead.");
|
||||
}
|
||||
|
||||
Variant f_mysql_list_dbs(CVarRef link_identifier /* = null */) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
@@ -1072,6 +1158,13 @@ Variant f_mysql_list_tables(CStrRef database,
|
||||
return Object(NEWOBJ(MySQLResult)(res));
|
||||
}
|
||||
|
||||
Variant f_mysql_list_fields(CStrRef database_name, CStrRef table_name,
|
||||
CVarRef link_identifier /* = uninit_null() */) {
|
||||
throw NotSupportedException
|
||||
(__func__, "Deprecated. Use mysql_query(SHOW COLUMNS FROM table "
|
||||
"[LIKE 'name']) instead.");
|
||||
}
|
||||
|
||||
Variant f_mysql_list_processes(CVarRef link_identifier /* = null */) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
@@ -1598,6 +1691,15 @@ Variant f_mysql_result(CVarRef result, int row,
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// result functions
|
||||
|
||||
|
||||
Variant f_mysql_db_name(CVarRef result, int row,
|
||||
CVarRef field /* = null_variant */) {
|
||||
return f_mysql_result(result, row, field);
|
||||
}
|
||||
Variant f_mysql_tablename(CVarRef result, int i) {
|
||||
return f_mysql_result(result, i);
|
||||
}
|
||||
|
||||
Variant f_mysql_num_fields(CVarRef result) {
|
||||
MySQLResult *res = get_result(result);
|
||||
if (res) {
|
||||
|
||||
@@ -696,6 +696,94 @@ TypedValue* fg_mysql_pconnect_with_db(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_set_charset(HPHP::String const&, HPHP::Variant const&)
|
||||
_ZN4HPHP19f_mysql_set_charsetERKNS_6StringERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
charset => rsi
|
||||
link_identifier => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_set_charset(TypedValue* _rv, Value* charset, TypedValue* link_identifier) asm("_ZN4HPHP19f_mysql_set_charsetERKNS_6StringERKNS_7VariantE");
|
||||
|
||||
TypedValue * fg1_mysql_set_charset(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_mysql_set_charset(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
tvCastToStringInPlace(args-0);
|
||||
Variant defVal1;
|
||||
fh_mysql_set_charset((rv), &args[-0].m_data, (count > 1) ? (args-1) : (TypedValue*)(&defVal1));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_mysql_set_charset(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 2LL) {
|
||||
if (IS_STRING_TYPE((args-0)->m_type)) {
|
||||
Variant defVal1;
|
||||
fh_mysql_set_charset((&(rv)), &args[-0].m_data, (count > 1) ? (args-1) : (TypedValue*)(&defVal1));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_mysql_set_charset(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("mysql_set_charset", count, 1, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_ping(HPHP::Variant const&)
|
||||
_ZN4HPHP12f_mysql_pingERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_ping(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP12f_mysql_pingERKNS_7VariantE");
|
||||
|
||||
TypedValue* fg_mysql_ping(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count <= 1LL) {
|
||||
Variant defVal0;
|
||||
fh_mysql_ping((&(rv)), (count > 0) ? (args-0) : (TypedValue*)(&defVal0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("mysql_ping", 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_mysql_escape_string(HPHP::String const&)
|
||||
_ZN4HPHP21f_mysql_escape_stringERKNS_6StringE
|
||||
@@ -801,6 +889,76 @@ TypedValue* fg_mysql_real_escape_string(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_client_encoding(HPHP::Variant const&)
|
||||
_ZN4HPHP23f_mysql_client_encodingERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_client_encoding(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP23f_mysql_client_encodingERKNS_7VariantE");
|
||||
|
||||
TypedValue* fg_mysql_client_encoding(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count <= 1LL) {
|
||||
Variant defVal0;
|
||||
fh_mysql_client_encoding((&(rv)), (count > 0) ? (args-0) : (TypedValue*)(&defVal0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("mysql_client_encoding", 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_close(HPHP::Variant const&)
|
||||
_ZN4HPHP13f_mysql_closeERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_close(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP13f_mysql_closeERKNS_7VariantE");
|
||||
|
||||
TypedValue* fg_mysql_close(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count <= 1LL) {
|
||||
Variant defVal0;
|
||||
fh_mysql_close((&(rv)), (count > 0) ? (args-0) : (TypedValue*)(&defVal0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("mysql_close", 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_errno(HPHP::Variant const&)
|
||||
_ZN4HPHP13f_mysql_errnoERKNS_7VariantE
|
||||
@@ -906,6 +1064,479 @@ TypedValue* fg_mysql_warning_count(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_mysql_get_client_info()
|
||||
_ZN4HPHP23f_mysql_get_client_infoEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_mysql_get_client_info(Value* _rv) asm("_ZN4HPHP23f_mysql_get_client_infoEv");
|
||||
|
||||
TypedValue* fg_mysql_get_client_info(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfString;
|
||||
fh_mysql_get_client_info((&rv.m_data));
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("mysql_get_client_info", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_get_host_info(HPHP::Variant const&)
|
||||
_ZN4HPHP21f_mysql_get_host_infoERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_get_host_info(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP21f_mysql_get_host_infoERKNS_7VariantE");
|
||||
|
||||
TypedValue* fg_mysql_get_host_info(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count <= 1LL) {
|
||||
Variant defVal0;
|
||||
fh_mysql_get_host_info((&(rv)), (count > 0) ? (args-0) : (TypedValue*)(&defVal0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("mysql_get_host_info", 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_get_proto_info(HPHP::Variant const&)
|
||||
_ZN4HPHP22f_mysql_get_proto_infoERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_get_proto_info(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP22f_mysql_get_proto_infoERKNS_7VariantE");
|
||||
|
||||
TypedValue* fg_mysql_get_proto_info(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count <= 1LL) {
|
||||
Variant defVal0;
|
||||
fh_mysql_get_proto_info((&(rv)), (count > 0) ? (args-0) : (TypedValue*)(&defVal0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("mysql_get_proto_info", 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_get_server_info(HPHP::Variant const&)
|
||||
_ZN4HPHP23f_mysql_get_server_infoERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_get_server_info(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP23f_mysql_get_server_infoERKNS_7VariantE");
|
||||
|
||||
TypedValue* fg_mysql_get_server_info(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count <= 1LL) {
|
||||
Variant defVal0;
|
||||
fh_mysql_get_server_info((&(rv)), (count > 0) ? (args-0) : (TypedValue*)(&defVal0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("mysql_get_server_info", 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_info(HPHP::Variant const&)
|
||||
_ZN4HPHP12f_mysql_infoERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_info(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP12f_mysql_infoERKNS_7VariantE");
|
||||
|
||||
TypedValue* fg_mysql_info(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count <= 1LL) {
|
||||
Variant defVal0;
|
||||
fh_mysql_info((&(rv)), (count > 0) ? (args-0) : (TypedValue*)(&defVal0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("mysql_info", 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_insert_id(HPHP::Variant const&)
|
||||
_ZN4HPHP17f_mysql_insert_idERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_insert_id(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP17f_mysql_insert_idERKNS_7VariantE");
|
||||
|
||||
TypedValue* fg_mysql_insert_id(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count <= 1LL) {
|
||||
Variant defVal0;
|
||||
fh_mysql_insert_id((&(rv)), (count > 0) ? (args-0) : (TypedValue*)(&defVal0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("mysql_insert_id", 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_stat(HPHP::Variant const&)
|
||||
_ZN4HPHP12f_mysql_statERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_stat(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP12f_mysql_statERKNS_7VariantE");
|
||||
|
||||
TypedValue* fg_mysql_stat(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count <= 1LL) {
|
||||
Variant defVal0;
|
||||
fh_mysql_stat((&(rv)), (count > 0) ? (args-0) : (TypedValue*)(&defVal0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("mysql_stat", 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_thread_id(HPHP::Variant const&)
|
||||
_ZN4HPHP17f_mysql_thread_idERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_thread_id(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP17f_mysql_thread_idERKNS_7VariantE");
|
||||
|
||||
TypedValue* fg_mysql_thread_id(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count <= 1LL) {
|
||||
Variant defVal0;
|
||||
fh_mysql_thread_id((&(rv)), (count > 0) ? (args-0) : (TypedValue*)(&defVal0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("mysql_thread_id", 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_create_db(HPHP::String const&, HPHP::Variant const&)
|
||||
_ZN4HPHP17f_mysql_create_dbERKNS_6StringERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
db => rsi
|
||||
link_identifier => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_create_db(TypedValue* _rv, Value* db, TypedValue* link_identifier) asm("_ZN4HPHP17f_mysql_create_dbERKNS_6StringERKNS_7VariantE");
|
||||
|
||||
TypedValue * fg1_mysql_create_db(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_mysql_create_db(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
tvCastToStringInPlace(args-0);
|
||||
Variant defVal1;
|
||||
fh_mysql_create_db((rv), &args[-0].m_data, (count > 1) ? (args-1) : (TypedValue*)(&defVal1));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_mysql_create_db(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 2LL) {
|
||||
if (IS_STRING_TYPE((args-0)->m_type)) {
|
||||
Variant defVal1;
|
||||
fh_mysql_create_db((&(rv)), &args[-0].m_data, (count > 1) ? (args-1) : (TypedValue*)(&defVal1));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_mysql_create_db(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("mysql_create_db", count, 1, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_select_db(HPHP::String const&, HPHP::Variant const&)
|
||||
_ZN4HPHP17f_mysql_select_dbERKNS_6StringERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
db => rsi
|
||||
link_identifier => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_select_db(TypedValue* _rv, Value* db, TypedValue* link_identifier) asm("_ZN4HPHP17f_mysql_select_dbERKNS_6StringERKNS_7VariantE");
|
||||
|
||||
TypedValue * fg1_mysql_select_db(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_mysql_select_db(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
tvCastToStringInPlace(args-0);
|
||||
Variant defVal1;
|
||||
fh_mysql_select_db((rv), &args[-0].m_data, (count > 1) ? (args-1) : (TypedValue*)(&defVal1));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_mysql_select_db(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 2LL) {
|
||||
if (IS_STRING_TYPE((args-0)->m_type)) {
|
||||
Variant defVal1;
|
||||
fh_mysql_select_db((&(rv)), &args[-0].m_data, (count > 1) ? (args-1) : (TypedValue*)(&defVal1));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_mysql_select_db(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("mysql_select_db", count, 1, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_drop_db(HPHP::String const&, HPHP::Variant const&)
|
||||
_ZN4HPHP15f_mysql_drop_dbERKNS_6StringERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
db => rsi
|
||||
link_identifier => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_drop_db(TypedValue* _rv, Value* db, TypedValue* link_identifier) asm("_ZN4HPHP15f_mysql_drop_dbERKNS_6StringERKNS_7VariantE");
|
||||
|
||||
TypedValue * fg1_mysql_drop_db(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_mysql_drop_db(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
tvCastToStringInPlace(args-0);
|
||||
Variant defVal1;
|
||||
fh_mysql_drop_db((rv), &args[-0].m_data, (count > 1) ? (args-1) : (TypedValue*)(&defVal1));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_mysql_drop_db(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 2LL) {
|
||||
if (IS_STRING_TYPE((args-0)->m_type)) {
|
||||
Variant defVal1;
|
||||
fh_mysql_drop_db((&(rv)), &args[-0].m_data, (count > 1) ? (args-1) : (TypedValue*)(&defVal1));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_mysql_drop_db(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("mysql_drop_db", count, 1, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_affected_rows(HPHP::Variant const&)
|
||||
_ZN4HPHP21f_mysql_affected_rowsERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_affected_rows(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP21f_mysql_affected_rowsERKNS_7VariantE");
|
||||
|
||||
TypedValue* fg_mysql_affected_rows(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count <= 1LL) {
|
||||
Variant defVal0;
|
||||
fh_mysql_affected_rows((&(rv)), (count > 0) ? (args-0) : (TypedValue*)(&defVal0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("mysql_affected_rows", 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_mysql_set_timeout(int, HPHP::Variant const&)
|
||||
_ZN4HPHP19f_mysql_set_timeoutEiRKNS_7VariantE
|
||||
@@ -1220,6 +1851,70 @@ TypedValue* fg_mysql_unbuffered_query(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_db_query(HPHP::String const&, HPHP::String const&, HPHP::Variant const&)
|
||||
_ZN4HPHP16f_mysql_db_queryERKNS_6StringES2_RKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
database => rsi
|
||||
query => rdx
|
||||
link_identifier => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_db_query(TypedValue* _rv, Value* database, Value* query, TypedValue* link_identifier) asm("_ZN4HPHP16f_mysql_db_queryERKNS_6StringES2_RKNS_7VariantE");
|
||||
|
||||
TypedValue * fg1_mysql_db_query(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_mysql_db_query(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
switch (count) {
|
||||
default: // count >= 3
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-1)->m_type)) {
|
||||
tvCastToStringInPlace(args-1);
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-0)->m_type)) {
|
||||
tvCastToStringInPlace(args-0);
|
||||
}
|
||||
Variant defVal2;
|
||||
fh_mysql_db_query((rv), &args[-0].m_data, &args[-1].m_data, (count > 2) ? (args-2) : (TypedValue*)(&defVal2));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_mysql_db_query(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 2LL && count <= 3LL) {
|
||||
if (IS_STRING_TYPE((args-1)->m_type) && IS_STRING_TYPE((args-0)->m_type)) {
|
||||
Variant defVal2;
|
||||
fh_mysql_db_query((&(rv)), &args[-0].m_data, &args[-1].m_data, (count > 2) ? (args-2) : (TypedValue*)(&defVal2));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_mysql_db_query(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("mysql_db_query", count, 2, 3, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_list_dbs(HPHP::Variant const&)
|
||||
_ZN4HPHP16f_mysql_list_dbsERKNS_7VariantE
|
||||
@@ -1308,6 +2003,70 @@ TypedValue* fg_mysql_list_tables(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_list_fields(HPHP::String const&, HPHP::String const&, HPHP::Variant const&)
|
||||
_ZN4HPHP19f_mysql_list_fieldsERKNS_6StringES2_RKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
database_name => rsi
|
||||
table_name => rdx
|
||||
link_identifier => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_list_fields(TypedValue* _rv, Value* database_name, Value* table_name, TypedValue* link_identifier) asm("_ZN4HPHP19f_mysql_list_fieldsERKNS_6StringES2_RKNS_7VariantE");
|
||||
|
||||
TypedValue * fg1_mysql_list_fields(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_mysql_list_fields(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
switch (count) {
|
||||
default: // count >= 3
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-1)->m_type)) {
|
||||
tvCastToStringInPlace(args-1);
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-0)->m_type)) {
|
||||
tvCastToStringInPlace(args-0);
|
||||
}
|
||||
Variant defVal2;
|
||||
fh_mysql_list_fields((rv), &args[-0].m_data, &args[-1].m_data, (count > 2) ? (args-2) : (TypedValue*)(&defVal2));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_mysql_list_fields(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 2LL && count <= 3LL) {
|
||||
if (IS_STRING_TYPE((args-1)->m_type) && IS_STRING_TYPE((args-0)->m_type)) {
|
||||
Variant defVal2;
|
||||
fh_mysql_list_fields((&(rv)), &args[-0].m_data, &args[-1].m_data, (count > 2) ? (args-2) : (TypedValue*)(&defVal2));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_mysql_list_fields(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("mysql_list_fields", count, 2, 3, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_list_processes(HPHP::Variant const&)
|
||||
_ZN4HPHP22f_mysql_list_processesERKNS_7VariantE
|
||||
@@ -1343,6 +2102,109 @@ TypedValue* fg_mysql_list_processes(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_db_name(HPHP::Variant const&, int, HPHP::Variant const&)
|
||||
_ZN4HPHP15f_mysql_db_nameERKNS_7VariantEiS2_
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
result => rsi
|
||||
row => rdx
|
||||
field => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_db_name(TypedValue* _rv, TypedValue* result, int row, TypedValue* field) asm("_ZN4HPHP15f_mysql_db_nameERKNS_7VariantEiS2_");
|
||||
|
||||
TypedValue * fg1_mysql_db_name(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_mysql_db_name(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
tvCastToInt64InPlace(args-1);
|
||||
fh_mysql_db_name((rv), (args-0), (int)(args[-1].m_data.num), (count > 2) ? (args-2) : (TypedValue*)(&null_variant));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_mysql_db_name(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 2LL && count <= 3LL) {
|
||||
if ((args-1)->m_type == KindOfInt64) {
|
||||
fh_mysql_db_name((&(rv)), (args-0), (int)(args[-1].m_data.num), (count > 2) ? (args-2) : (TypedValue*)(&null_variant));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_mysql_db_name(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("mysql_db_name", count, 2, 3, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_tablename(HPHP::Variant const&, int)
|
||||
_ZN4HPHP17f_mysql_tablenameERKNS_7VariantEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
result => rsi
|
||||
i => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_tablename(TypedValue* _rv, TypedValue* result, int i) asm("_ZN4HPHP17f_mysql_tablenameERKNS_7VariantEi");
|
||||
|
||||
TypedValue * fg1_mysql_tablename(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_mysql_tablename(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
tvCastToInt64InPlace(args-1);
|
||||
fh_mysql_tablename((rv), (args-0), (int)(args[-1].m_data.num));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_mysql_tablename(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 2LL) {
|
||||
if ((args-1)->m_type == KindOfInt64) {
|
||||
fh_mysql_tablename((&(rv)), (args-0), (int)(args[-1].m_data.num));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_mysql_tablename(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("mysql_tablename", count, 2, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_num_fields(HPHP::Variant const&)
|
||||
_ZN4HPHP18f_mysql_num_fieldsERKNS_7VariantE
|
||||
|
||||
@@ -164,6 +164,29 @@ query_timeout_ms => st8
|
||||
|
||||
TypedValue* fh_mysql_pconnect_with_db(TypedValue* _rv, Value* server, Value* username, Value* password, Value* database, int client_flags, int connect_timeout_ms, int query_timeout_ms) asm("_ZN4HPHP24f_mysql_pconnect_with_dbERKNS_6StringES2_S2_S2_iii");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_set_charset(HPHP::String const&, HPHP::Variant const&)
|
||||
_ZN4HPHP19f_mysql_set_charsetERKNS_6StringERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
charset => rsi
|
||||
link_identifier => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_set_charset(TypedValue* _rv, Value* charset, TypedValue* link_identifier) asm("_ZN4HPHP19f_mysql_set_charsetERKNS_6StringERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_ping(HPHP::Variant const&)
|
||||
_ZN4HPHP12f_mysql_pingERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_ping(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP12f_mysql_pingERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_mysql_escape_string(HPHP::String const&)
|
||||
_ZN4HPHP21f_mysql_escape_stringERKNS_6StringE
|
||||
@@ -187,6 +210,28 @@ link_identifier => rdx
|
||||
|
||||
TypedValue* fh_mysql_real_escape_string(TypedValue* _rv, Value* unescaped_string, TypedValue* link_identifier) asm("_ZN4HPHP26f_mysql_real_escape_stringERKNS_6StringERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_client_encoding(HPHP::Variant const&)
|
||||
_ZN4HPHP23f_mysql_client_encodingERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_client_encoding(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP23f_mysql_client_encodingERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_close(HPHP::Variant const&)
|
||||
_ZN4HPHP13f_mysql_closeERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_close(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP13f_mysql_closeERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_errno(HPHP::Variant const&)
|
||||
_ZN4HPHP13f_mysql_errnoERKNS_7VariantE
|
||||
@@ -220,6 +265,140 @@ link_identifier => rsi
|
||||
|
||||
TypedValue* fh_mysql_warning_count(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP21f_mysql_warning_countERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_mysql_get_client_info()
|
||||
_ZN4HPHP23f_mysql_get_client_infoEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_mysql_get_client_info(Value* _rv) asm("_ZN4HPHP23f_mysql_get_client_infoEv");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_get_host_info(HPHP::Variant const&)
|
||||
_ZN4HPHP21f_mysql_get_host_infoERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_get_host_info(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP21f_mysql_get_host_infoERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_get_proto_info(HPHP::Variant const&)
|
||||
_ZN4HPHP22f_mysql_get_proto_infoERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_get_proto_info(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP22f_mysql_get_proto_infoERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_get_server_info(HPHP::Variant const&)
|
||||
_ZN4HPHP23f_mysql_get_server_infoERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_get_server_info(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP23f_mysql_get_server_infoERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_info(HPHP::Variant const&)
|
||||
_ZN4HPHP12f_mysql_infoERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_info(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP12f_mysql_infoERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_insert_id(HPHP::Variant const&)
|
||||
_ZN4HPHP17f_mysql_insert_idERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_insert_id(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP17f_mysql_insert_idERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_stat(HPHP::Variant const&)
|
||||
_ZN4HPHP12f_mysql_statERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_stat(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP12f_mysql_statERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_thread_id(HPHP::Variant const&)
|
||||
_ZN4HPHP17f_mysql_thread_idERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_thread_id(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP17f_mysql_thread_idERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_create_db(HPHP::String const&, HPHP::Variant const&)
|
||||
_ZN4HPHP17f_mysql_create_dbERKNS_6StringERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
db => rsi
|
||||
link_identifier => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_create_db(TypedValue* _rv, Value* db, TypedValue* link_identifier) asm("_ZN4HPHP17f_mysql_create_dbERKNS_6StringERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_select_db(HPHP::String const&, HPHP::Variant const&)
|
||||
_ZN4HPHP17f_mysql_select_dbERKNS_6StringERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
db => rsi
|
||||
link_identifier => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_select_db(TypedValue* _rv, Value* db, TypedValue* link_identifier) asm("_ZN4HPHP17f_mysql_select_dbERKNS_6StringERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_drop_db(HPHP::String const&, HPHP::Variant const&)
|
||||
_ZN4HPHP15f_mysql_drop_dbERKNS_6StringERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
db => rsi
|
||||
link_identifier => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_drop_db(TypedValue* _rv, Value* db, TypedValue* link_identifier) asm("_ZN4HPHP15f_mysql_drop_dbERKNS_6StringERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_affected_rows(HPHP::Variant const&)
|
||||
_ZN4HPHP21f_mysql_affected_rowsERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
link_identifier => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_affected_rows(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP21f_mysql_affected_rowsERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
bool HPHP::f_mysql_set_timeout(int, HPHP::Variant const&)
|
||||
_ZN4HPHP19f_mysql_set_timeoutEiRKNS_7VariantE
|
||||
@@ -298,6 +477,19 @@ link_identifier => rdx
|
||||
|
||||
TypedValue* fh_mysql_unbuffered_query(TypedValue* _rv, Value* query, TypedValue* link_identifier) asm("_ZN4HPHP24f_mysql_unbuffered_queryERKNS_6StringERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_db_query(HPHP::String const&, HPHP::String const&, HPHP::Variant const&)
|
||||
_ZN4HPHP16f_mysql_db_queryERKNS_6StringES2_RKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
database => rsi
|
||||
query => rdx
|
||||
link_identifier => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_db_query(TypedValue* _rv, Value* database, Value* query, TypedValue* link_identifier) asm("_ZN4HPHP16f_mysql_db_queryERKNS_6StringES2_RKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_list_dbs(HPHP::Variant const&)
|
||||
_ZN4HPHP16f_mysql_list_dbsERKNS_7VariantE
|
||||
@@ -321,6 +513,19 @@ link_identifier => rdx
|
||||
|
||||
TypedValue* fh_mysql_list_tables(TypedValue* _rv, Value* database, TypedValue* link_identifier) asm("_ZN4HPHP19f_mysql_list_tablesERKNS_6StringERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_list_fields(HPHP::String const&, HPHP::String const&, HPHP::Variant const&)
|
||||
_ZN4HPHP19f_mysql_list_fieldsERKNS_6StringES2_RKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
database_name => rsi
|
||||
table_name => rdx
|
||||
link_identifier => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_list_fields(TypedValue* _rv, Value* database_name, Value* table_name, TypedValue* link_identifier) asm("_ZN4HPHP19f_mysql_list_fieldsERKNS_6StringES2_RKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_list_processes(HPHP::Variant const&)
|
||||
_ZN4HPHP22f_mysql_list_processesERKNS_7VariantE
|
||||
@@ -332,6 +537,31 @@ link_identifier => rsi
|
||||
|
||||
TypedValue* fh_mysql_list_processes(TypedValue* _rv, TypedValue* link_identifier) asm("_ZN4HPHP22f_mysql_list_processesERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_db_name(HPHP::Variant const&, int, HPHP::Variant const&)
|
||||
_ZN4HPHP15f_mysql_db_nameERKNS_7VariantEiS2_
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
result => rsi
|
||||
row => rdx
|
||||
field => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_db_name(TypedValue* _rv, TypedValue* result, int row, TypedValue* field) asm("_ZN4HPHP15f_mysql_db_nameERKNS_7VariantEiS2_");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_tablename(HPHP::Variant const&, int)
|
||||
_ZN4HPHP17f_mysql_tablenameERKNS_7VariantEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
result => rsi
|
||||
i => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_mysql_tablename(TypedValue* _rv, TypedValue* result, int i) asm("_ZN4HPHP17f_mysql_tablenameERKNS_7VariantEi");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_mysql_num_fields(HPHP::Variant const&)
|
||||
_ZN4HPHP18f_mysql_num_fieldsERKNS_7VariantE
|
||||
|
||||
@@ -268,28 +268,12 @@ String f_mysql_escape_string(CStrRef unescaped_string);
|
||||
Variant f_mysql_real_escape_string(CStrRef unescaped_string,
|
||||
CVarRef link_identifier = uninit_null());
|
||||
|
||||
inline String f_mysql_get_client_info() {
|
||||
return String(mysql_get_client_info(), CopyString);
|
||||
}
|
||||
inline Variant f_mysql_set_charset(CStrRef charset,
|
||||
CVarRef link_identifier = uninit_null()) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return uninit_null();
|
||||
return !mysql_set_character_set(conn, charset.data());
|
||||
}
|
||||
inline Variant f_mysql_ping(CVarRef link_identifier = uninit_null()) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return uninit_null();
|
||||
return !mysql_ping(conn);
|
||||
}
|
||||
inline Variant f_mysql_client_encoding(CVarRef link_identifier = uninit_null()) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return String(mysql_character_set_name(conn), CopyString);
|
||||
}
|
||||
inline Variant f_mysql_close(CVarRef link_identifier = uninit_null()) {
|
||||
return MySQL::CloseConn(link_identifier);
|
||||
}
|
||||
String f_mysql_get_client_info();
|
||||
Variant f_mysql_set_charset(CStrRef charset,
|
||||
CVarRef link_identifier = uninit_null());
|
||||
Variant f_mysql_ping(CVarRef link_identifier = uninit_null());
|
||||
Variant f_mysql_client_encoding(CVarRef link_identifier = uninit_null());
|
||||
Variant f_mysql_close(CVarRef link_identifier = uninit_null());
|
||||
|
||||
Variant f_mysql_errno(CVarRef link_identifier = uninit_null());
|
||||
|
||||
@@ -297,62 +281,20 @@ Variant f_mysql_error(CVarRef link_identifier = uninit_null());
|
||||
|
||||
Variant f_mysql_warning_count(CVarRef link_identifier = uninit_null());
|
||||
|
||||
inline Variant f_mysql_get_host_info(CVarRef link_identifier = uninit_null()) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return String(mysql_get_host_info(conn), CopyString);
|
||||
}
|
||||
inline Variant f_mysql_get_proto_info(CVarRef link_identifier = uninit_null()) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return (int64_t)mysql_get_proto_info(conn);
|
||||
}
|
||||
inline Variant f_mysql_get_server_info(CVarRef link_identifier = uninit_null()) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return String(mysql_get_server_info(conn), CopyString);
|
||||
}
|
||||
inline Variant f_mysql_info(CVarRef link_identifier = uninit_null()) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return String(mysql_info(conn), CopyString);
|
||||
}
|
||||
inline Variant f_mysql_insert_id(CVarRef link_identifier = uninit_null()) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return static_cast<int64_t>(mysql_insert_id(conn));
|
||||
}
|
||||
inline Variant f_mysql_stat(CVarRef link_identifier = uninit_null()) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return String(mysql_stat(conn), CopyString);
|
||||
}
|
||||
inline Variant f_mysql_thread_id(CVarRef link_identifier = uninit_null()) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return (int64_t)mysql_thread_id(conn);
|
||||
}
|
||||
inline Variant f_mysql_create_db(CStrRef db,
|
||||
CVarRef link_identifier = uninit_null()) {
|
||||
throw NotSupportedException
|
||||
(__func__, "Deprecated. Use mysql_query(CREATE DATABASE) instead.");
|
||||
}
|
||||
inline Variant f_mysql_select_db(CStrRef db,
|
||||
CVarRef link_identifier = uninit_null()) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return mysql_select_db(conn, db.data()) == 0;
|
||||
}
|
||||
inline Variant f_mysql_drop_db(CStrRef db,
|
||||
CVarRef link_identifier = uninit_null()) {
|
||||
throw NotSupportedException
|
||||
(__func__, "Deprecated. Use mysql_query(DROP DATABASE) instead.");
|
||||
}
|
||||
inline Variant f_mysql_affected_rows(CVarRef link_identifier = uninit_null()) {
|
||||
MYSQL *conn = MySQL::GetConn(link_identifier);
|
||||
if (!conn) return false;
|
||||
return static_cast<int64_t>(mysql_affected_rows(conn));
|
||||
}
|
||||
Variant f_mysql_get_host_info(CVarRef link_identifier = uninit_null());
|
||||
Variant f_mysql_get_proto_info(CVarRef link_identifier = uninit_null());
|
||||
Variant f_mysql_get_server_info(CVarRef link_identifier = uninit_null());
|
||||
Variant f_mysql_info(CVarRef link_identifier = uninit_null());
|
||||
Variant f_mysql_insert_id(CVarRef link_identifier = uninit_null());
|
||||
Variant f_mysql_stat(CVarRef link_identifier = uninit_null());
|
||||
Variant f_mysql_thread_id(CVarRef link_identifier = uninit_null());
|
||||
Variant f_mysql_create_db(CStrRef db,
|
||||
CVarRef link_identifier = uninit_null());
|
||||
Variant f_mysql_select_db(CStrRef db,
|
||||
CVarRef link_identifier = uninit_null());
|
||||
Variant f_mysql_drop_db(CStrRef db,
|
||||
CVarRef link_identifier = uninit_null());
|
||||
Variant f_mysql_affected_rows(CVarRef link_identifier = uninit_null());
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// query functions
|
||||
@@ -373,21 +315,14 @@ Variant f_mysql_fetch_result(CVarRef link_identifier = uninit_null());
|
||||
|
||||
Variant f_mysql_unbuffered_query(CStrRef query,
|
||||
CVarRef link_identifier = uninit_null());
|
||||
inline Variant f_mysql_db_query(CStrRef database, CStrRef query,
|
||||
CVarRef link_identifier = uninit_null()) {
|
||||
throw NotSupportedException
|
||||
(__func__, "Deprecated. Use mysql_query() instead.");
|
||||
}
|
||||
Variant f_mysql_db_query(CStrRef database, CStrRef query,
|
||||
CVarRef link_identifier = uninit_null());
|
||||
Variant f_mysql_list_dbs(CVarRef link_identifier = uninit_null());
|
||||
|
||||
Variant f_mysql_list_tables(CStrRef database,
|
||||
CVarRef link_identifier = uninit_null());
|
||||
inline Variant f_mysql_list_fields(CStrRef database_name, CStrRef table_name,
|
||||
CVarRef link_identifier = uninit_null()) {
|
||||
throw NotSupportedException
|
||||
(__func__, "Deprecated. Use mysql_query(SHOW COLUMNS FROM table "
|
||||
"[LIKE 'name']) instead.");
|
||||
}
|
||||
Variant f_mysql_list_fields(CStrRef database_name, CStrRef table_name,
|
||||
CVarRef link_identifier = uninit_null());
|
||||
Variant f_mysql_list_processes(CVarRef link_identifier = uninit_null());
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@@ -411,13 +346,9 @@ Variant f_mysql_result(CVarRef result, int row, CVarRef field = null_variant);
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// result functions
|
||||
|
||||
inline Variant f_mysql_db_name(CVarRef result, int row,
|
||||
CVarRef field = null_variant) {
|
||||
return f_mysql_result(result, row, field);
|
||||
}
|
||||
inline Variant f_mysql_tablename(CVarRef result, int i) {
|
||||
return f_mysql_result(result, i);
|
||||
}
|
||||
Variant f_mysql_db_name(CVarRef result, int row,
|
||||
CVarRef field = null_variant);
|
||||
Variant f_mysql_tablename(CVarRef result, int i);
|
||||
|
||||
Variant f_mysql_num_fields(CVarRef result);
|
||||
Variant f_mysql_num_rows(CVarRef result);
|
||||
|
||||
@@ -357,6 +357,10 @@ bool f_dns_check_record(CStrRef host, CStrRef type /* = null_string */) {
|
||||
return (i >= 0);
|
||||
}
|
||||
|
||||
bool f_checkdnsrr(CStrRef host, CStrRef type /* = null_string */) {
|
||||
return f_dns_check_record(host, type);
|
||||
}
|
||||
|
||||
typedef union {
|
||||
HEADER qb1;
|
||||
u_char qb2[65536];
|
||||
@@ -832,6 +836,11 @@ bool f_dns_get_mx(CStrRef hostname, VRefParam mxhosts,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool f_getmxrr(CStrRef hostname, VRefParam mxhosts,
|
||||
VRefParam weight /* = uninit_null() */) {
|
||||
return f_dns_get_mx(hostname, ref(mxhosts), weight);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// socket
|
||||
|
||||
@@ -839,6 +848,19 @@ bool f_dns_get_mx(CStrRef hostname, VRefParam mxhosts,
|
||||
* f_fsockopen() and f_pfsockopen() are implemented in ext_socket.cpp.
|
||||
*/
|
||||
|
||||
Variant f_socket_get_status(CObjRef stream) {
|
||||
return f_stream_get_meta_data(stream);
|
||||
}
|
||||
|
||||
bool f_socket_set_blocking(CObjRef stream, int mode) {
|
||||
return f_stream_set_blocking(stream, mode);
|
||||
}
|
||||
|
||||
bool f_socket_set_timeout(CObjRef stream, int seconds,
|
||||
int microseconds /* = 0 */) {
|
||||
return f_stream_set_timeout(stream, seconds, microseconds);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// http
|
||||
|
||||
@@ -1012,5 +1034,26 @@ bool f_setrawcookie(CStrRef name, CStrRef value /* = null_string */,
|
||||
return false;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void f_define_syslog_variables() {
|
||||
// do nothing, since all variables are defined as constants already
|
||||
}
|
||||
|
||||
bool f_openlog(CStrRef ident, int option, int facility) {
|
||||
openlog(ident.data(), option, facility);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool f_closelog() {
|
||||
closelog();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool f_syslog(int priority, CStrRef message) {
|
||||
syslog(priority, "%s", message.data());
|
||||
return true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
}
|
||||
|
||||
@@ -683,6 +683,66 @@ TypedValue* fg_dns_check_record(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_checkdnsrr(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP12f_checkdnsrrERKNS_6StringES2_
|
||||
|
||||
(return value) => rax
|
||||
host => rdi
|
||||
type => rsi
|
||||
*/
|
||||
|
||||
bool fh_checkdnsrr(Value* host, Value* type) asm("_ZN4HPHP12f_checkdnsrrERKNS_6StringES2_");
|
||||
|
||||
TypedValue * fg1_checkdnsrr(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_checkdnsrr(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
switch (count) {
|
||||
default: // count >= 2
|
||||
if (!IS_STRING_TYPE((args-1)->m_type)) {
|
||||
tvCastToStringInPlace(args-1);
|
||||
}
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-0)->m_type)) {
|
||||
tvCastToStringInPlace(args-0);
|
||||
}
|
||||
rv->m_data.num = (fh_checkdnsrr(&args[-0].m_data, (count > 1) ? &args[-1].m_data : (Value*)(&null_string))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_checkdnsrr(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 2LL) {
|
||||
if ((count <= 1 || IS_STRING_TYPE((args-1)->m_type)) && IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_checkdnsrr(&args[-0].m_data, (count > 1) ? &args[-1].m_data : (Value*)(&null_string))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_checkdnsrr(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("checkdnsrr", count, 1, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_dns_get_record(HPHP::String const&, int, HPHP::VRefParamValue const&, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP16f_dns_get_recordERKNS_6StringEiRKNS_14VRefParamValueES5_
|
||||
@@ -805,6 +865,228 @@ TypedValue* fg_dns_get_mx(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_getmxrr(HPHP::String const&, HPHP::VRefParamValue const&, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP9f_getmxrrERKNS_6StringERKNS_14VRefParamValueES5_
|
||||
|
||||
(return value) => rax
|
||||
hostname => rdi
|
||||
mxhosts => rsi
|
||||
weight => rdx
|
||||
*/
|
||||
|
||||
bool fh_getmxrr(Value* hostname, TypedValue* mxhosts, TypedValue* weight) asm("_ZN4HPHP9f_getmxrrERKNS_6StringERKNS_14VRefParamValueES5_");
|
||||
|
||||
TypedValue * fg1_getmxrr(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_getmxrr(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
tvCastToStringInPlace(args-0);
|
||||
VRefParamValue defVal2 = uninit_null();
|
||||
rv->m_data.num = (fh_getmxrr(&args[-0].m_data, (args-1), (count > 2) ? (args-2) : (TypedValue*)(&defVal2))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_getmxrr(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 2LL && count <= 3LL) {
|
||||
if (IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
VRefParamValue defVal2 = uninit_null();
|
||||
rv.m_data.num = (fh_getmxrr(&args[-0].m_data, (args-1), (count > 2) ? (args-2) : (TypedValue*)(&defVal2))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_getmxrr(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("getmxrr", count, 2, 3, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_socket_get_status(HPHP::Object const&)
|
||||
_ZN4HPHP19f_socket_get_statusERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
stream => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_socket_get_status(TypedValue* _rv, Value* stream) asm("_ZN4HPHP19f_socket_get_statusERKNS_6ObjectE");
|
||||
|
||||
TypedValue * fg1_socket_get_status(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_socket_get_status(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
tvCastToObjectInPlace(args-0);
|
||||
fh_socket_get_status((rv), &args[-0].m_data);
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_socket_get_status(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfObject) {
|
||||
fh_socket_get_status((&(rv)), &args[-0].m_data);
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_socket_get_status(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("socket_get_status", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_socket_set_blocking(HPHP::Object const&, int)
|
||||
_ZN4HPHP21f_socket_set_blockingERKNS_6ObjectEi
|
||||
|
||||
(return value) => rax
|
||||
stream => rdi
|
||||
mode => rsi
|
||||
*/
|
||||
|
||||
bool fh_socket_set_blocking(Value* stream, int mode) asm("_ZN4HPHP21f_socket_set_blockingERKNS_6ObjectEi");
|
||||
|
||||
TypedValue * fg1_socket_set_blocking(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_socket_set_blocking(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
if ((args-0)->m_type != KindOfObject) {
|
||||
tvCastToObjectInPlace(args-0);
|
||||
}
|
||||
rv->m_data.num = (fh_socket_set_blocking(&args[-0].m_data, (int)(args[-1].m_data.num))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_socket_set_blocking(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 2LL) {
|
||||
if ((args-1)->m_type == KindOfInt64 && (args-0)->m_type == KindOfObject) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_socket_set_blocking(&args[-0].m_data, (int)(args[-1].m_data.num))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_socket_set_blocking(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("socket_set_blocking", count, 2, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_socket_set_timeout(HPHP::Object const&, int, int)
|
||||
_ZN4HPHP20f_socket_set_timeoutERKNS_6ObjectEii
|
||||
|
||||
(return value) => rax
|
||||
stream => rdi
|
||||
seconds => rsi
|
||||
microseconds => rdx
|
||||
*/
|
||||
|
||||
bool fh_socket_set_timeout(Value* stream, int seconds, int microseconds) asm("_ZN4HPHP20f_socket_set_timeoutERKNS_6ObjectEii");
|
||||
|
||||
TypedValue * fg1_socket_set_timeout(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_socket_set_timeout(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
switch (count) {
|
||||
default: // count >= 3
|
||||
if ((args-2)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-2);
|
||||
}
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
if ((args-0)->m_type != KindOfObject) {
|
||||
tvCastToObjectInPlace(args-0);
|
||||
}
|
||||
rv->m_data.num = (fh_socket_set_timeout(&args[-0].m_data, (int)(args[-1].m_data.num), (count > 2) ? (int)(args[-2].m_data.num) : (int)(0))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_socket_set_timeout(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 2LL && count <= 3LL) {
|
||||
if ((count <= 2 || (args-2)->m_type == KindOfInt64) && (args-1)->m_type == KindOfInt64 && (args-0)->m_type == KindOfObject) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_socket_set_timeout(&args[-0].m_data, (int)(args[-1].m_data.num), (count > 2) ? (int)(args[-2].m_data.num) : (int)(0))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_socket_set_timeout(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("socket_set_timeout", count, 2, 3, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
void HPHP::f_header(HPHP::String const&, bool, int)
|
||||
_ZN4HPHP8f_headerERKNS_6StringEbi
|
||||
@@ -1276,6 +1558,184 @@ TypedValue* fg_setrawcookie(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
void HPHP::f_define_syslog_variables()
|
||||
_ZN4HPHP25f_define_syslog_variablesEv
|
||||
|
||||
*/
|
||||
|
||||
void fh_define_syslog_variables() asm("_ZN4HPHP25f_define_syslog_variablesEv");
|
||||
|
||||
TypedValue* fg_define_syslog_variables(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
fh_define_syslog_variables();
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("define_syslog_variables", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_openlog(HPHP::String const&, int, int)
|
||||
_ZN4HPHP9f_openlogERKNS_6StringEii
|
||||
|
||||
(return value) => rax
|
||||
ident => rdi
|
||||
option => rsi
|
||||
facility => rdx
|
||||
*/
|
||||
|
||||
bool fh_openlog(Value* ident, int option, int facility) asm("_ZN4HPHP9f_openlogERKNS_6StringEii");
|
||||
|
||||
TypedValue * fg1_openlog(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_openlog(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
if ((args-2)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-2);
|
||||
}
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-0)->m_type)) {
|
||||
tvCastToStringInPlace(args-0);
|
||||
}
|
||||
rv->m_data.num = (fh_openlog(&args[-0].m_data, (int)(args[-1].m_data.num), (int)(args[-2].m_data.num))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_openlog(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 3LL) {
|
||||
if ((args-2)->m_type == KindOfInt64 && (args-1)->m_type == KindOfInt64 && IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_openlog(&args[-0].m_data, (int)(args[-1].m_data.num), (int)(args[-2].m_data.num))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_openlog(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("openlog", count, 3, 3, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_closelog()
|
||||
_ZN4HPHP10f_closelogEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
bool fh_closelog() asm("_ZN4HPHP10f_closelogEv");
|
||||
|
||||
TypedValue* fg_closelog(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_closelog()) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("closelog", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_syslog(int, HPHP::String const&)
|
||||
_ZN4HPHP8f_syslogEiRKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
priority => rdi
|
||||
message => rsi
|
||||
*/
|
||||
|
||||
bool fh_syslog(int priority, Value* message) asm("_ZN4HPHP8f_syslogEiRKNS_6StringE");
|
||||
|
||||
TypedValue * fg1_syslog(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_syslog(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
if (!IS_STRING_TYPE((args-1)->m_type)) {
|
||||
tvCastToStringInPlace(args-1);
|
||||
}
|
||||
if ((args-0)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-0);
|
||||
}
|
||||
rv->m_data.num = (fh_syslog((int)(args[-0].m_data.num), &args[-1].m_data)) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_syslog(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 2LL) {
|
||||
if (IS_STRING_TYPE((args-1)->m_type) && (args-0)->m_type == KindOfInt64) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_syslog((int)(args[-0].m_data.num), &args[-1].m_data)) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_syslog(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("syslog", count, 2, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
} // !HPHP
|
||||
|
||||
|
||||
@@ -160,6 +160,17 @@ type => rsi
|
||||
|
||||
bool fh_dns_check_record(Value* host, Value* type) asm("_ZN4HPHP18f_dns_check_recordERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
bool HPHP::f_checkdnsrr(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP12f_checkdnsrrERKNS_6StringES2_
|
||||
|
||||
(return value) => rax
|
||||
host => rdi
|
||||
type => rsi
|
||||
*/
|
||||
|
||||
bool fh_checkdnsrr(Value* host, Value* type) asm("_ZN4HPHP12f_checkdnsrrERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_dns_get_record(HPHP::String const&, int, HPHP::VRefParamValue const&, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP16f_dns_get_recordERKNS_6StringEiRKNS_14VRefParamValueES5_
|
||||
@@ -186,6 +197,52 @@ weights => rdx
|
||||
|
||||
bool fh_dns_get_mx(Value* hostname, TypedValue* mxhosts, TypedValue* weights) asm("_ZN4HPHP12f_dns_get_mxERKNS_6StringERKNS_14VRefParamValueES5_");
|
||||
|
||||
/*
|
||||
bool HPHP::f_getmxrr(HPHP::String const&, HPHP::VRefParamValue const&, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP9f_getmxrrERKNS_6StringERKNS_14VRefParamValueES5_
|
||||
|
||||
(return value) => rax
|
||||
hostname => rdi
|
||||
mxhosts => rsi
|
||||
weight => rdx
|
||||
*/
|
||||
|
||||
bool fh_getmxrr(Value* hostname, TypedValue* mxhosts, TypedValue* weight) asm("_ZN4HPHP9f_getmxrrERKNS_6StringERKNS_14VRefParamValueES5_");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_socket_get_status(HPHP::Object const&)
|
||||
_ZN4HPHP19f_socket_get_statusERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
stream => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_socket_get_status(TypedValue* _rv, Value* stream) asm("_ZN4HPHP19f_socket_get_statusERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
bool HPHP::f_socket_set_blocking(HPHP::Object const&, int)
|
||||
_ZN4HPHP21f_socket_set_blockingERKNS_6ObjectEi
|
||||
|
||||
(return value) => rax
|
||||
stream => rdi
|
||||
mode => rsi
|
||||
*/
|
||||
|
||||
bool fh_socket_set_blocking(Value* stream, int mode) asm("_ZN4HPHP21f_socket_set_blockingERKNS_6ObjectEi");
|
||||
|
||||
/*
|
||||
bool HPHP::f_socket_set_timeout(HPHP::Object const&, int, int)
|
||||
_ZN4HPHP20f_socket_set_timeoutERKNS_6ObjectEii
|
||||
|
||||
(return value) => rax
|
||||
stream => rdi
|
||||
seconds => rsi
|
||||
microseconds => rdx
|
||||
*/
|
||||
|
||||
bool fh_socket_set_timeout(Value* stream, int seconds, int microseconds) asm("_ZN4HPHP20f_socket_set_timeoutERKNS_6ObjectEii");
|
||||
|
||||
/*
|
||||
void HPHP::f_header(HPHP::String const&, bool, int)
|
||||
_ZN4HPHP8f_headerERKNS_6StringEbi
|
||||
@@ -289,6 +346,46 @@ httponly => st0
|
||||
|
||||
bool fh_setrawcookie(Value* name, Value* value, long expire, Value* path, Value* domain, bool secure, bool httponly) asm("_ZN4HPHP14f_setrawcookieERKNS_6StringES2_lS2_S2_bb");
|
||||
|
||||
/*
|
||||
void HPHP::f_define_syslog_variables()
|
||||
_ZN4HPHP25f_define_syslog_variablesEv
|
||||
|
||||
*/
|
||||
|
||||
void fh_define_syslog_variables() asm("_ZN4HPHP25f_define_syslog_variablesEv");
|
||||
|
||||
/*
|
||||
bool HPHP::f_openlog(HPHP::String const&, int, int)
|
||||
_ZN4HPHP9f_openlogERKNS_6StringEii
|
||||
|
||||
(return value) => rax
|
||||
ident => rdi
|
||||
option => rsi
|
||||
facility => rdx
|
||||
*/
|
||||
|
||||
bool fh_openlog(Value* ident, int option, int facility) asm("_ZN4HPHP9f_openlogERKNS_6StringEii");
|
||||
|
||||
/*
|
||||
bool HPHP::f_closelog()
|
||||
_ZN4HPHP10f_closelogEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
bool fh_closelog() asm("_ZN4HPHP10f_closelogEv");
|
||||
|
||||
/*
|
||||
bool HPHP::f_syslog(int, HPHP::String const&)
|
||||
_ZN4HPHP8f_syslogEiRKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
priority => rdi
|
||||
message => rsi
|
||||
*/
|
||||
|
||||
bool fh_syslog(int priority, Value* message) asm("_ZN4HPHP8f_syslogEiRKNS_6StringE");
|
||||
|
||||
|
||||
} // !HPHP
|
||||
|
||||
|
||||
@@ -40,19 +40,15 @@ String f_long2ip(int proper_address);
|
||||
|
||||
bool f_dns_check_record(CStrRef host, CStrRef type = null_string);
|
||||
|
||||
inline bool f_checkdnsrr(CStrRef host, CStrRef type = null_string) {
|
||||
return f_dns_check_record(host, type);
|
||||
}
|
||||
bool f_checkdnsrr(CStrRef host, CStrRef type = null_string);
|
||||
|
||||
Variant f_dns_get_record(CStrRef hostname, int type = -1, VRefParam authns = uninit_null(),
|
||||
VRefParam addtl = uninit_null());
|
||||
|
||||
bool f_dns_get_mx(CStrRef hostname, VRefParam mxhosts, VRefParam weights = uninit_null());
|
||||
|
||||
inline bool f_getmxrr(CStrRef hostname, VRefParam mxhosts,
|
||||
VRefParam weight = uninit_null()) {
|
||||
return f_dns_get_mx(hostname, ref(mxhosts), weight);
|
||||
}
|
||||
bool f_getmxrr(CStrRef hostname, VRefParam mxhosts,
|
||||
VRefParam weight = uninit_null());
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// socket
|
||||
@@ -63,18 +59,12 @@ Variant f_fsockopen(CStrRef hostname, int port = -1, VRefParam errnum = uninit_n
|
||||
Variant f_pfsockopen(CStrRef hostname, int port = -1, VRefParam errnum = uninit_null(),
|
||||
VRefParam errstr = uninit_null(), double timeout = 0.0);
|
||||
|
||||
inline Variant f_socket_get_status(CObjRef stream) {
|
||||
return f_stream_get_meta_data(stream);
|
||||
}
|
||||
Variant f_socket_get_status(CObjRef stream);
|
||||
|
||||
inline bool f_socket_set_blocking(CObjRef stream, int mode) {
|
||||
return f_stream_set_blocking(stream, mode);
|
||||
}
|
||||
bool f_socket_set_blocking(CObjRef stream, int mode);
|
||||
|
||||
inline bool f_socket_set_timeout(CObjRef stream, int seconds,
|
||||
int microseconds = 0) {
|
||||
return f_stream_set_timeout(stream, seconds, microseconds);
|
||||
}
|
||||
bool f_socket_set_timeout(CObjRef stream, int seconds,
|
||||
int microseconds = 0);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// http
|
||||
@@ -104,24 +94,13 @@ bool f_setrawcookie(CStrRef name, CStrRef value = null_string, int64_t expire =
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// syslog
|
||||
|
||||
inline void f_define_syslog_variables() {
|
||||
// do nothing, since all variables are defined as constants already
|
||||
}
|
||||
void f_define_syslog_variables();
|
||||
|
||||
inline bool f_openlog(CStrRef ident, int option, int facility) {
|
||||
openlog(ident.data(), option, facility);
|
||||
return true;
|
||||
}
|
||||
bool f_openlog(CStrRef ident, int option, int facility);
|
||||
|
||||
inline bool f_closelog() {
|
||||
closelog();
|
||||
return true;
|
||||
}
|
||||
bool f_closelog();
|
||||
|
||||
inline bool f_syslog(int priority, CStrRef message) {
|
||||
syslog(priority, "%s", message.data());
|
||||
return true;
|
||||
}
|
||||
bool f_syslog(int priority, CStrRef message);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
}
|
||||
|
||||
@@ -627,6 +627,9 @@ bool f_clock_settime(int clk_id, int64_t sec, int64_t nsec) {
|
||||
#endif
|
||||
}
|
||||
|
||||
int64_t f_cpu_get_count() { return Process::GetCPUCount();}
|
||||
String f_cpu_get_model() { return Process::GetCPUModel();}
|
||||
|
||||
String f_ini_alter(CStrRef varname, CStrRef newvalue) {
|
||||
throw NotSupportedException(__func__, "not using ini");
|
||||
}
|
||||
|
||||
@@ -1192,6 +1192,72 @@ TypedValue* fg_clock_settime(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_cpu_get_count()
|
||||
_ZN4HPHP15f_cpu_get_countEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_cpu_get_count() asm("_ZN4HPHP15f_cpu_get_countEv");
|
||||
|
||||
TypedValue* fg_cpu_get_count(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_cpu_get_count();
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("cpu_get_count", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_cpu_get_model()
|
||||
_ZN4HPHP15f_cpu_get_modelEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_cpu_get_model(Value* _rv) asm("_ZN4HPHP15f_cpu_get_modelEv");
|
||||
|
||||
TypedValue* fg_cpu_get_model(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfString;
|
||||
fh_cpu_get_model((&rv.m_data));
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("cpu_get_model", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_ini_alter(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP11f_ini_alterERKNS_6StringES2_
|
||||
|
||||
@@ -305,6 +305,25 @@ nsec => rdx
|
||||
|
||||
bool fh_clock_settime(int clk_id, long sec, long nsec) asm("_ZN4HPHP15f_clock_settimeEill");
|
||||
|
||||
/*
|
||||
long HPHP::f_cpu_get_count()
|
||||
_ZN4HPHP15f_cpu_get_countEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_cpu_get_count() asm("_ZN4HPHP15f_cpu_get_countEv");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_cpu_get_model()
|
||||
_ZN4HPHP15f_cpu_get_modelEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_cpu_get_model(Value* _rv) asm("_ZN4HPHP15f_cpu_get_modelEv");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_ini_alter(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP11f_ini_alterERKNS_6StringES2_
|
||||
|
||||
@@ -52,8 +52,8 @@ Array f_getrusage(int who = 0);
|
||||
bool f_clock_getres(int clk_id, VRefParam sec, VRefParam nsec);
|
||||
bool f_clock_gettime(int clk_id, VRefParam sec, VRefParam nsec);
|
||||
bool f_clock_settime(int clk_id, int64_t sec, int64_t nsec);
|
||||
inline int64_t f_cpu_get_count() { return Process::GetCPUCount();}
|
||||
inline String f_cpu_get_model() { return Process::GetCPUModel();}
|
||||
int64_t f_cpu_get_count();
|
||||
String f_cpu_get_model();
|
||||
String f_ini_alter(CStrRef varname, CStrRef newvalue);
|
||||
Array f_ini_get_all(CStrRef extension = null_string);
|
||||
String f_ini_get(CStrRef varname);
|
||||
|
||||
@@ -25,15 +25,93 @@
|
||||
namespace HPHP {
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
bool f_ob_start(CVarRef output_callback /* = uninit_null() */,
|
||||
int chunk_size /* = 0 */, bool erase /* = true */) {
|
||||
// ignoring chunk_size and erase
|
||||
g_context->obStart(output_callback);
|
||||
return true;
|
||||
}
|
||||
void f_ob_clean() {
|
||||
g_context->obClean();
|
||||
}
|
||||
void f_ob_flush() {
|
||||
g_context->obFlush();
|
||||
}
|
||||
bool f_ob_end_clean() {
|
||||
g_context->obClean();
|
||||
return g_context->obEnd();
|
||||
}
|
||||
bool f_ob_end_flush() {
|
||||
bool ret = g_context->obFlush();
|
||||
g_context->obEnd();
|
||||
return ret;
|
||||
}
|
||||
void f_flush() {
|
||||
g_context->flush();
|
||||
}
|
||||
String f_ob_get_contents() {
|
||||
return g_context->obCopyContents();
|
||||
}
|
||||
String f_ob_get_clean() {
|
||||
String output = f_ob_get_contents();
|
||||
f_ob_end_clean();
|
||||
return output;
|
||||
}
|
||||
String f_ob_get_flush() {
|
||||
String output = g_context->obCopyContents();
|
||||
g_context->obFlush();
|
||||
return output;
|
||||
}
|
||||
int64_t f_ob_get_length() {
|
||||
return g_context->obGetContentLength();
|
||||
}
|
||||
int64_t f_ob_get_level() {
|
||||
return g_context->obGetLevel();
|
||||
}
|
||||
Array f_ob_get_status(bool full_status /* = false */) {
|
||||
return g_context->obGetStatus(full_status);
|
||||
}
|
||||
String f_ob_gzhandler(CStrRef buffer, int mode) {
|
||||
throw NotSupportedException(__func__, "something that's in transport layer");
|
||||
}
|
||||
void f_ob_implicit_flush(bool flag /* = true */) {
|
||||
g_context->obSetImplicitFlush(flag);
|
||||
}
|
||||
Array f_ob_list_handlers() {
|
||||
return g_context->obGetHandlers();
|
||||
}
|
||||
bool f_output_add_rewrite_var(CStrRef name, CStrRef value) {
|
||||
throw NotSupportedException(__func__, "bad coding style");
|
||||
}
|
||||
bool f_output_reset_rewrite_vars() {
|
||||
throw NotSupportedException(__func__, "bad coding style");
|
||||
}
|
||||
|
||||
void f_hphp_crash_log(CStrRef name, CStrRef value) {
|
||||
StackTraceNoHeap::AddExtraLogging(name.data(), value.data());
|
||||
}
|
||||
|
||||
void f_hphp_stats(CStrRef name, int64_t value) {
|
||||
ServerStats::Log(name.data(), value);
|
||||
}
|
||||
int64_t f_hphp_get_stats(CStrRef name) {
|
||||
return ServerStats::Get(name.data());
|
||||
}
|
||||
Array f_hphp_get_status() {
|
||||
std::string out;
|
||||
ServerStats::ReportStatus(out, ServerStats::JSON);
|
||||
return f_json_decode(String(out));
|
||||
}
|
||||
Array f_hphp_get_iostatus() {
|
||||
return ServerStats::GetThreadIOStatuses();
|
||||
}
|
||||
void f_hphp_set_iostatus_address(CStrRef name) {
|
||||
return ServerStats::SetThreadIOStatusAddress(name);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static double ts_float(const timespec &ts) {
|
||||
return (double)ts.tv_sec + (double)ts.tv_nsec / 1000000000;
|
||||
|
||||
@@ -24,6 +24,678 @@
|
||||
|
||||
namespace HPHP {
|
||||
|
||||
/*
|
||||
bool HPHP::f_ob_start(HPHP::Variant const&, int, bool)
|
||||
_ZN4HPHP10f_ob_startERKNS_7VariantEib
|
||||
|
||||
(return value) => rax
|
||||
output_callback => rdi
|
||||
chunk_size => rsi
|
||||
erase => rdx
|
||||
*/
|
||||
|
||||
bool fh_ob_start(TypedValue* output_callback, int chunk_size, bool erase) asm("_ZN4HPHP10f_ob_startERKNS_7VariantEib");
|
||||
|
||||
TypedValue * fg1_ob_start(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_ob_start(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
switch (count) {
|
||||
default: // count >= 3
|
||||
if ((args-2)->m_type != KindOfBoolean) {
|
||||
tvCastToBooleanInPlace(args-2);
|
||||
}
|
||||
case 2:
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
case 1:
|
||||
case 0:
|
||||
break;
|
||||
}
|
||||
Variant defVal0;
|
||||
rv->m_data.num = (fh_ob_start((count > 0) ? (args-0) : (TypedValue*)(&defVal0), (count > 1) ? (int)(args[-1].m_data.num) : (int)(0), (count > 2) ? (bool)(args[-2].m_data.num) : (bool)(true))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_ob_start(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count <= 3LL) {
|
||||
if ((count <= 2 || (args-2)->m_type == KindOfBoolean) && (count <= 1 || (args-1)->m_type == KindOfInt64)) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
Variant defVal0;
|
||||
rv.m_data.num = (fh_ob_start((count > 0) ? (args-0) : (TypedValue*)(&defVal0), (count > 1) ? (int)(args[-1].m_data.num) : (int)(0), (count > 2) ? (bool)(args[-2].m_data.num) : (bool)(true))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_ob_start(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_toomany_arguments_nr("ob_start", 3, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
void HPHP::f_ob_clean()
|
||||
_ZN4HPHP10f_ob_cleanEv
|
||||
|
||||
*/
|
||||
|
||||
void fh_ob_clean() asm("_ZN4HPHP10f_ob_cleanEv");
|
||||
|
||||
TypedValue* fg_ob_clean(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
fh_ob_clean();
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("ob_clean", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
void HPHP::f_ob_flush()
|
||||
_ZN4HPHP10f_ob_flushEv
|
||||
|
||||
*/
|
||||
|
||||
void fh_ob_flush() asm("_ZN4HPHP10f_ob_flushEv");
|
||||
|
||||
TypedValue* fg_ob_flush(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
fh_ob_flush();
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("ob_flush", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_ob_end_clean()
|
||||
_ZN4HPHP14f_ob_end_cleanEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
bool fh_ob_end_clean() asm("_ZN4HPHP14f_ob_end_cleanEv");
|
||||
|
||||
TypedValue* fg_ob_end_clean(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_ob_end_clean()) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("ob_end_clean", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_ob_end_flush()
|
||||
_ZN4HPHP14f_ob_end_flushEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
bool fh_ob_end_flush() asm("_ZN4HPHP14f_ob_end_flushEv");
|
||||
|
||||
TypedValue* fg_ob_end_flush(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_ob_end_flush()) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("ob_end_flush", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
void HPHP::f_flush()
|
||||
_ZN4HPHP7f_flushEv
|
||||
|
||||
*/
|
||||
|
||||
void fh_flush() asm("_ZN4HPHP7f_flushEv");
|
||||
|
||||
TypedValue* fg_flush(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
fh_flush();
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("flush", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_ob_get_clean()
|
||||
_ZN4HPHP14f_ob_get_cleanEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_ob_get_clean(Value* _rv) asm("_ZN4HPHP14f_ob_get_cleanEv");
|
||||
|
||||
TypedValue* fg_ob_get_clean(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfString;
|
||||
fh_ob_get_clean((&rv.m_data));
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("ob_get_clean", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_ob_get_contents()
|
||||
_ZN4HPHP17f_ob_get_contentsEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_ob_get_contents(Value* _rv) asm("_ZN4HPHP17f_ob_get_contentsEv");
|
||||
|
||||
TypedValue* fg_ob_get_contents(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfString;
|
||||
fh_ob_get_contents((&rv.m_data));
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("ob_get_contents", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_ob_get_flush()
|
||||
_ZN4HPHP14f_ob_get_flushEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_ob_get_flush(Value* _rv) asm("_ZN4HPHP14f_ob_get_flushEv");
|
||||
|
||||
TypedValue* fg_ob_get_flush(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfString;
|
||||
fh_ob_get_flush((&rv.m_data));
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("ob_get_flush", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_ob_get_length()
|
||||
_ZN4HPHP15f_ob_get_lengthEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_ob_get_length() asm("_ZN4HPHP15f_ob_get_lengthEv");
|
||||
|
||||
TypedValue* fg_ob_get_length(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_ob_get_length();
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("ob_get_length", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_ob_get_level()
|
||||
_ZN4HPHP14f_ob_get_levelEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_ob_get_level() asm("_ZN4HPHP14f_ob_get_levelEv");
|
||||
|
||||
TypedValue* fg_ob_get_level(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_ob_get_level();
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("ob_get_level", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_ob_get_status(bool)
|
||||
_ZN4HPHP15f_ob_get_statusEb
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
full_status => rsi
|
||||
*/
|
||||
|
||||
Value* fh_ob_get_status(Value* _rv, bool full_status) asm("_ZN4HPHP15f_ob_get_statusEb");
|
||||
|
||||
TypedValue * fg1_ob_get_status(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_ob_get_status(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfArray;
|
||||
tvCastToBooleanInPlace(args-0);
|
||||
fh_ob_get_status((&rv->m_data), (count > 0) ? (bool)(args[-0].m_data.num) : (bool)(false));
|
||||
if (rv->m_data.num == 0LL) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_ob_get_status(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count <= 1LL) {
|
||||
if ((count <= 0 || (args-0)->m_type == KindOfBoolean)) {
|
||||
rv.m_type = KindOfArray;
|
||||
fh_ob_get_status((&rv.m_data), (count > 0) ? (bool)(args[-0].m_data.num) : (bool)(false));
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_ob_get_status(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_toomany_arguments_nr("ob_get_status", 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_ob_gzhandler(HPHP::String const&, int)
|
||||
_ZN4HPHP14f_ob_gzhandlerERKNS_6StringEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
buffer => rsi
|
||||
mode => rdx
|
||||
*/
|
||||
|
||||
Value* fh_ob_gzhandler(Value* _rv, Value* buffer, int mode) asm("_ZN4HPHP14f_ob_gzhandlerERKNS_6StringEi");
|
||||
|
||||
TypedValue * fg1_ob_gzhandler(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_ob_gzhandler(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfString;
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-0)->m_type)) {
|
||||
tvCastToStringInPlace(args-0);
|
||||
}
|
||||
fh_ob_gzhandler((&rv->m_data), &args[-0].m_data, (int)(args[-1].m_data.num));
|
||||
if (rv->m_data.num == 0LL) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_ob_gzhandler(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 2LL) {
|
||||
if ((args-1)->m_type == KindOfInt64 && IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_type = KindOfString;
|
||||
fh_ob_gzhandler((&rv.m_data), &args[-0].m_data, (int)(args[-1].m_data.num));
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_ob_gzhandler(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("ob_gzhandler", count, 2, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
void HPHP::f_ob_implicit_flush(bool)
|
||||
_ZN4HPHP19f_ob_implicit_flushEb
|
||||
|
||||
flag => rdi
|
||||
*/
|
||||
|
||||
void fh_ob_implicit_flush(bool flag) asm("_ZN4HPHP19f_ob_implicit_flushEb");
|
||||
|
||||
TypedValue * fg1_ob_implicit_flush(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_ob_implicit_flush(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_data.num = 0LL;
|
||||
rv->m_type = KindOfNull;
|
||||
tvCastToBooleanInPlace(args-0);
|
||||
fh_ob_implicit_flush((count > 0) ? (bool)(args[-0].m_data.num) : (bool)(true));
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_ob_implicit_flush(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count <= 1LL) {
|
||||
if ((count <= 0 || (args-0)->m_type == KindOfBoolean)) {
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
fh_ob_implicit_flush((count > 0) ? (bool)(args[-0].m_data.num) : (bool)(true));
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_ob_implicit_flush(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_toomany_arguments_nr("ob_implicit_flush", 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_ob_list_handlers()
|
||||
_ZN4HPHP18f_ob_list_handlersEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_ob_list_handlers(Value* _rv) asm("_ZN4HPHP18f_ob_list_handlersEv");
|
||||
|
||||
TypedValue* fg_ob_list_handlers(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfArray;
|
||||
fh_ob_list_handlers((&rv.m_data));
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("ob_list_handlers", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_output_add_rewrite_var(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP24f_output_add_rewrite_varERKNS_6StringES2_
|
||||
|
||||
(return value) => rax
|
||||
name => rdi
|
||||
value => rsi
|
||||
*/
|
||||
|
||||
bool fh_output_add_rewrite_var(Value* name, Value* value) asm("_ZN4HPHP24f_output_add_rewrite_varERKNS_6StringES2_");
|
||||
|
||||
TypedValue * fg1_output_add_rewrite_var(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_output_add_rewrite_var(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
if (!IS_STRING_TYPE((args-1)->m_type)) {
|
||||
tvCastToStringInPlace(args-1);
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-0)->m_type)) {
|
||||
tvCastToStringInPlace(args-0);
|
||||
}
|
||||
rv->m_data.num = (fh_output_add_rewrite_var(&args[-0].m_data, &args[-1].m_data)) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_output_add_rewrite_var(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 2LL) {
|
||||
if (IS_STRING_TYPE((args-1)->m_type) && IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_output_add_rewrite_var(&args[-0].m_data, &args[-1].m_data)) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_output_add_rewrite_var(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("output_add_rewrite_var", count, 2, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_output_reset_rewrite_vars()
|
||||
_ZN4HPHP27f_output_reset_rewrite_varsEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
bool fh_output_reset_rewrite_vars() asm("_ZN4HPHP27f_output_reset_rewrite_varsEv");
|
||||
|
||||
TypedValue* fg_output_reset_rewrite_vars(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_output_reset_rewrite_vars()) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("output_reset_rewrite_vars", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
void HPHP::f_hphp_crash_log(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP16f_hphp_crash_logERKNS_6StringES2_
|
||||
@@ -80,6 +752,111 @@ TypedValue* fg_hphp_crash_log(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
void HPHP::f_hphp_stats(HPHP::String const&, long)
|
||||
_ZN4HPHP12f_hphp_statsERKNS_6StringEl
|
||||
|
||||
name => rdi
|
||||
value => rsi
|
||||
*/
|
||||
|
||||
void fh_hphp_stats(Value* name, long value) asm("_ZN4HPHP12f_hphp_statsERKNS_6StringEl");
|
||||
|
||||
TypedValue * fg1_hphp_stats(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_hphp_stats(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_data.num = 0LL;
|
||||
rv->m_type = KindOfNull;
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-0)->m_type)) {
|
||||
tvCastToStringInPlace(args-0);
|
||||
}
|
||||
fh_hphp_stats(&args[-0].m_data, (long)(args[-1].m_data.num));
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_hphp_stats(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 2LL) {
|
||||
if ((args-1)->m_type == KindOfInt64 && IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
fh_hphp_stats(&args[-0].m_data, (long)(args[-1].m_data.num));
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_hphp_stats(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("hphp_stats", count, 2, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_hphp_get_stats(HPHP::String const&)
|
||||
_ZN4HPHP16f_hphp_get_statsERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
name => rdi
|
||||
*/
|
||||
|
||||
long fh_hphp_get_stats(Value* name) asm("_ZN4HPHP16f_hphp_get_statsERKNS_6StringE");
|
||||
|
||||
TypedValue * fg1_hphp_get_stats(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_hphp_get_stats(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfInt64;
|
||||
tvCastToStringInPlace(args-0);
|
||||
rv->m_data.num = (int64_t)fh_hphp_get_stats(&args[-0].m_data);
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_hphp_get_stats(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if (IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_hphp_get_stats(&args[-0].m_data);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_hphp_get_stats(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("hphp_get_stats", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_hphp_get_status()
|
||||
_ZN4HPHP17f_hphp_get_statusEv
|
||||
@@ -114,6 +891,90 @@ TypedValue* fg_hphp_get_status(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_hphp_get_iostatus()
|
||||
_ZN4HPHP19f_hphp_get_iostatusEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_hphp_get_iostatus(Value* _rv) asm("_ZN4HPHP19f_hphp_get_iostatusEv");
|
||||
|
||||
TypedValue* fg_hphp_get_iostatus(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfArray;
|
||||
fh_hphp_get_iostatus((&rv.m_data));
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("hphp_get_iostatus", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
void HPHP::f_hphp_set_iostatus_address(HPHP::String const&)
|
||||
_ZN4HPHP27f_hphp_set_iostatus_addressERKNS_6StringE
|
||||
|
||||
name => rdi
|
||||
*/
|
||||
|
||||
void fh_hphp_set_iostatus_address(Value* name) asm("_ZN4HPHP27f_hphp_set_iostatus_addressERKNS_6StringE");
|
||||
|
||||
TypedValue * fg1_hphp_set_iostatus_address(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_hphp_set_iostatus_address(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_data.num = 0LL;
|
||||
rv->m_type = KindOfNull;
|
||||
tvCastToStringInPlace(args-0);
|
||||
fh_hphp_set_iostatus_address(&args[-0].m_data);
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_hphp_set_iostatus_address(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if (IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
fh_hphp_set_iostatus_address(&args[-0].m_data);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_hphp_set_iostatus_address(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("hphp_set_iostatus_address", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_hphp_get_timers(bool)
|
||||
_ZN4HPHP17f_hphp_get_timersEb
|
||||
|
||||
@@ -16,6 +16,170 @@
|
||||
*/
|
||||
namespace HPHP {
|
||||
|
||||
/*
|
||||
bool HPHP::f_ob_start(HPHP::Variant const&, int, bool)
|
||||
_ZN4HPHP10f_ob_startERKNS_7VariantEib
|
||||
|
||||
(return value) => rax
|
||||
output_callback => rdi
|
||||
chunk_size => rsi
|
||||
erase => rdx
|
||||
*/
|
||||
|
||||
bool fh_ob_start(TypedValue* output_callback, int chunk_size, bool erase) asm("_ZN4HPHP10f_ob_startERKNS_7VariantEib");
|
||||
|
||||
/*
|
||||
void HPHP::f_ob_clean()
|
||||
_ZN4HPHP10f_ob_cleanEv
|
||||
|
||||
*/
|
||||
|
||||
void fh_ob_clean() asm("_ZN4HPHP10f_ob_cleanEv");
|
||||
|
||||
/*
|
||||
void HPHP::f_ob_flush()
|
||||
_ZN4HPHP10f_ob_flushEv
|
||||
|
||||
*/
|
||||
|
||||
void fh_ob_flush() asm("_ZN4HPHP10f_ob_flushEv");
|
||||
|
||||
/*
|
||||
bool HPHP::f_ob_end_clean()
|
||||
_ZN4HPHP14f_ob_end_cleanEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
bool fh_ob_end_clean() asm("_ZN4HPHP14f_ob_end_cleanEv");
|
||||
|
||||
/*
|
||||
bool HPHP::f_ob_end_flush()
|
||||
_ZN4HPHP14f_ob_end_flushEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
bool fh_ob_end_flush() asm("_ZN4HPHP14f_ob_end_flushEv");
|
||||
|
||||
/*
|
||||
void HPHP::f_flush()
|
||||
_ZN4HPHP7f_flushEv
|
||||
|
||||
*/
|
||||
|
||||
void fh_flush() asm("_ZN4HPHP7f_flushEv");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_ob_get_clean()
|
||||
_ZN4HPHP14f_ob_get_cleanEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_ob_get_clean(Value* _rv) asm("_ZN4HPHP14f_ob_get_cleanEv");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_ob_get_contents()
|
||||
_ZN4HPHP17f_ob_get_contentsEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_ob_get_contents(Value* _rv) asm("_ZN4HPHP17f_ob_get_contentsEv");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_ob_get_flush()
|
||||
_ZN4HPHP14f_ob_get_flushEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_ob_get_flush(Value* _rv) asm("_ZN4HPHP14f_ob_get_flushEv");
|
||||
|
||||
/*
|
||||
long HPHP::f_ob_get_length()
|
||||
_ZN4HPHP15f_ob_get_lengthEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_ob_get_length() asm("_ZN4HPHP15f_ob_get_lengthEv");
|
||||
|
||||
/*
|
||||
long HPHP::f_ob_get_level()
|
||||
_ZN4HPHP14f_ob_get_levelEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_ob_get_level() asm("_ZN4HPHP14f_ob_get_levelEv");
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_ob_get_status(bool)
|
||||
_ZN4HPHP15f_ob_get_statusEb
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
full_status => rsi
|
||||
*/
|
||||
|
||||
Value* fh_ob_get_status(Value* _rv, bool full_status) asm("_ZN4HPHP15f_ob_get_statusEb");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_ob_gzhandler(HPHP::String const&, int)
|
||||
_ZN4HPHP14f_ob_gzhandlerERKNS_6StringEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
buffer => rsi
|
||||
mode => rdx
|
||||
*/
|
||||
|
||||
Value* fh_ob_gzhandler(Value* _rv, Value* buffer, int mode) asm("_ZN4HPHP14f_ob_gzhandlerERKNS_6StringEi");
|
||||
|
||||
/*
|
||||
void HPHP::f_ob_implicit_flush(bool)
|
||||
_ZN4HPHP19f_ob_implicit_flushEb
|
||||
|
||||
flag => rdi
|
||||
*/
|
||||
|
||||
void fh_ob_implicit_flush(bool flag) asm("_ZN4HPHP19f_ob_implicit_flushEb");
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_ob_list_handlers()
|
||||
_ZN4HPHP18f_ob_list_handlersEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_ob_list_handlers(Value* _rv) asm("_ZN4HPHP18f_ob_list_handlersEv");
|
||||
|
||||
/*
|
||||
bool HPHP::f_output_add_rewrite_var(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP24f_output_add_rewrite_varERKNS_6StringES2_
|
||||
|
||||
(return value) => rax
|
||||
name => rdi
|
||||
value => rsi
|
||||
*/
|
||||
|
||||
bool fh_output_add_rewrite_var(Value* name, Value* value) asm("_ZN4HPHP24f_output_add_rewrite_varERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
bool HPHP::f_output_reset_rewrite_vars()
|
||||
_ZN4HPHP27f_output_reset_rewrite_varsEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
bool fh_output_reset_rewrite_vars() asm("_ZN4HPHP27f_output_reset_rewrite_varsEv");
|
||||
|
||||
/*
|
||||
void HPHP::f_hphp_crash_log(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP16f_hphp_crash_logERKNS_6StringES2_
|
||||
@@ -26,6 +190,26 @@ value => rsi
|
||||
|
||||
void fh_hphp_crash_log(Value* name, Value* value) asm("_ZN4HPHP16f_hphp_crash_logERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
void HPHP::f_hphp_stats(HPHP::String const&, long)
|
||||
_ZN4HPHP12f_hphp_statsERKNS_6StringEl
|
||||
|
||||
name => rdi
|
||||
value => rsi
|
||||
*/
|
||||
|
||||
void fh_hphp_stats(Value* name, long value) asm("_ZN4HPHP12f_hphp_statsERKNS_6StringEl");
|
||||
|
||||
/*
|
||||
long HPHP::f_hphp_get_stats(HPHP::String const&)
|
||||
_ZN4HPHP16f_hphp_get_statsERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
name => rdi
|
||||
*/
|
||||
|
||||
long fh_hphp_get_stats(Value* name) asm("_ZN4HPHP16f_hphp_get_statsERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_hphp_get_status()
|
||||
_ZN4HPHP17f_hphp_get_statusEv
|
||||
@@ -36,6 +220,25 @@ _rv => rdi
|
||||
|
||||
Value* fh_hphp_get_status(Value* _rv) asm("_ZN4HPHP17f_hphp_get_statusEv");
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_hphp_get_iostatus()
|
||||
_ZN4HPHP19f_hphp_get_iostatusEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_hphp_get_iostatus(Value* _rv) asm("_ZN4HPHP19f_hphp_get_iostatusEv");
|
||||
|
||||
/*
|
||||
void HPHP::f_hphp_set_iostatus_address(HPHP::String const&)
|
||||
_ZN4HPHP27f_hphp_set_iostatus_addressERKNS_6StringE
|
||||
|
||||
name => rdi
|
||||
*/
|
||||
|
||||
void fh_hphp_set_iostatus_address(Value* name) asm("_ZN4HPHP27f_hphp_set_iostatus_addressERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_hphp_get_timers(bool)
|
||||
_ZN4HPHP17f_hphp_get_timersEb
|
||||
|
||||
@@ -24,83 +24,32 @@
|
||||
namespace HPHP {
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
inline bool f_ob_start(CVarRef output_callback = uninit_null(), int chunk_size = 0,
|
||||
bool erase = true) {
|
||||
// ignoring chunk_size and erase
|
||||
g_context->obStart(output_callback);
|
||||
return true;
|
||||
}
|
||||
inline void f_ob_clean() {
|
||||
g_context->obClean();
|
||||
}
|
||||
inline void f_ob_flush() {
|
||||
g_context->obFlush();
|
||||
}
|
||||
inline bool f_ob_end_clean() {
|
||||
g_context->obClean();
|
||||
return g_context->obEnd();
|
||||
}
|
||||
inline bool f_ob_end_flush() {
|
||||
bool ret = g_context->obFlush();
|
||||
g_context->obEnd();
|
||||
return ret;
|
||||
}
|
||||
inline void f_flush() {
|
||||
g_context->flush();
|
||||
}
|
||||
inline String f_ob_get_contents() {
|
||||
return g_context->obCopyContents();
|
||||
}
|
||||
inline String f_ob_get_clean() {
|
||||
String output = f_ob_get_contents();
|
||||
f_ob_end_clean();
|
||||
return output;
|
||||
}
|
||||
inline String f_ob_get_flush() {
|
||||
String output = g_context->obCopyContents();
|
||||
g_context->obFlush();
|
||||
return output;
|
||||
}
|
||||
inline int64_t f_ob_get_length() {
|
||||
return g_context->obGetContentLength();
|
||||
}
|
||||
inline int64_t f_ob_get_level() {
|
||||
return g_context->obGetLevel();
|
||||
}
|
||||
inline Array f_ob_get_status(bool full_status = false) {
|
||||
return g_context->obGetStatus(full_status);
|
||||
}
|
||||
inline String f_ob_gzhandler(CStrRef buffer, int mode) {
|
||||
throw NotSupportedException(__func__, "something that's in transport layer");
|
||||
}
|
||||
inline void f_ob_implicit_flush(bool flag = true) {
|
||||
g_context->obSetImplicitFlush(flag);
|
||||
}
|
||||
inline Array f_ob_list_handlers() {
|
||||
return g_context->obGetHandlers();
|
||||
}
|
||||
inline bool f_output_add_rewrite_var(CStrRef name, CStrRef value) {
|
||||
throw NotSupportedException(__func__, "bad coding style");
|
||||
}
|
||||
inline bool f_output_reset_rewrite_vars() {
|
||||
throw NotSupportedException(__func__, "bad coding style");
|
||||
}
|
||||
bool f_ob_start(CVarRef output_callback = uninit_null(), int chunk_size = 0,
|
||||
bool erase = true);
|
||||
void f_ob_clean();
|
||||
void f_ob_flush();
|
||||
bool f_ob_end_clean();
|
||||
bool f_ob_end_flush();
|
||||
void f_flush();
|
||||
String f_ob_get_contents();
|
||||
String f_ob_get_clean();
|
||||
String f_ob_get_flush();
|
||||
int64_t f_ob_get_length();
|
||||
int64_t f_ob_get_level();
|
||||
Array f_ob_get_status(bool full_status = false);
|
||||
String f_ob_gzhandler(CStrRef buffer, int mode);
|
||||
void f_ob_implicit_flush(bool flag = true);
|
||||
Array f_ob_list_handlers();
|
||||
bool f_output_add_rewrite_var(CStrRef name, CStrRef value);
|
||||
bool f_output_reset_rewrite_vars();
|
||||
|
||||
void f_hphp_crash_log(CStrRef name, CStrRef value);
|
||||
|
||||
inline void f_hphp_stats(CStrRef name, int64_t value) {
|
||||
ServerStats::Log(name.data(), value);
|
||||
}
|
||||
inline int64_t f_hphp_get_stats(CStrRef name) {
|
||||
return ServerStats::Get(name.data());
|
||||
}
|
||||
void f_hphp_stats(CStrRef name, int64_t value);
|
||||
int64_t f_hphp_get_stats(CStrRef name);
|
||||
Array f_hphp_get_status();
|
||||
inline Array f_hphp_get_iostatus() {
|
||||
return ServerStats::GetThreadIOStatuses();
|
||||
}
|
||||
inline void f_hphp_set_iostatus_address(CStrRef name) {
|
||||
return ServerStats::SetThreadIOStatusAddress(name);
|
||||
}
|
||||
Array f_hphp_get_iostatus();
|
||||
void f_hphp_set_iostatus_address(CStrRef name);
|
||||
Variant f_hphp_get_timers(bool get_as_float = true);
|
||||
Variant f_hphp_output_global_state(bool serialize = true);
|
||||
int64_t f_hphp_instruction_counter(void);
|
||||
|
||||
@@ -36,6 +36,38 @@ bool f_posix_access(CStrRef file, int mode /* = 0 */) {
|
||||
return !access(path.data(), mode);
|
||||
}
|
||||
|
||||
String f_posix_ctermid() {
|
||||
String s = String(L_ctermid, ReserveString);
|
||||
char *buffer = s.mutableSlice().ptr;
|
||||
ctermid(buffer);
|
||||
return s.setSize(strlen(buffer));
|
||||
}
|
||||
|
||||
int64_t f_posix_get_last_error() {
|
||||
return errno;
|
||||
}
|
||||
|
||||
String f_posix_getcwd() {
|
||||
String s = String(PATH_MAX, ReserveString);
|
||||
char *buffer = s.mutableSlice().ptr;
|
||||
if (getcwd(buffer, PATH_MAX) == NULL) {
|
||||
return "/";
|
||||
}
|
||||
return s.setSize(strlen(buffer));
|
||||
}
|
||||
|
||||
int64_t f_posix_getegid() {
|
||||
return getegid();
|
||||
}
|
||||
|
||||
int64_t f_posix_geteuid() {
|
||||
return geteuid();
|
||||
}
|
||||
|
||||
int64_t f_posix_getgid() {
|
||||
return getgid();
|
||||
}
|
||||
|
||||
static Variant php_posix_group_to_array(int gid,
|
||||
CStrRef gname = null_variant) {
|
||||
// Don't pass a gid *and* a gname to this.
|
||||
@@ -101,6 +133,32 @@ Variant f_posix_getgroups() {
|
||||
return ret;
|
||||
}
|
||||
|
||||
Variant f_posix_getlogin() {
|
||||
char buf[L_cuserid];
|
||||
if (!getlogin_r(buf, sizeof(buf) - 1)) {
|
||||
return String(buf, CopyString);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Variant f_posix_getpgid(int pid) {
|
||||
int ret = getpgid(pid);
|
||||
if (ret < 0) return false;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int64_t f_posix_getpgrp() {
|
||||
return getpgrp();
|
||||
}
|
||||
|
||||
int64_t f_posix_getpid() {
|
||||
return getpid();
|
||||
}
|
||||
|
||||
int64_t f_posix_getppid() {
|
||||
return getppid();
|
||||
}
|
||||
|
||||
static Variant php_posix_passwd_to_array(int uid,
|
||||
CStrRef name = null_variant) {
|
||||
// Don't pass a uid *and* a name to this.
|
||||
@@ -206,6 +264,21 @@ Variant f_posix_getrlimit() {
|
||||
return ret;
|
||||
}
|
||||
|
||||
Variant f_posix_getsid(int pid) {
|
||||
int ret = getsid(pid);
|
||||
if (ret < 0) return false;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int64_t f_posix_getuid() {
|
||||
return getuid();
|
||||
}
|
||||
|
||||
bool f_posix_initgroups(CStrRef name, int base_group_id) {
|
||||
if (name.empty()) return false;
|
||||
return !initgroups(name.data(), base_group_id);
|
||||
}
|
||||
|
||||
static int php_posix_get_fd(CVarRef fd) {
|
||||
int nfd;
|
||||
if (fd.isResource()) {
|
||||
@@ -224,6 +297,14 @@ bool f_posix_isatty(CVarRef fd) {
|
||||
return isatty(php_posix_get_fd(fd));
|
||||
}
|
||||
|
||||
bool f_posix_kill(int pid, int sig) {
|
||||
return kill(pid, sig) >= 0;
|
||||
}
|
||||
|
||||
bool f_posix_mkfifo(CStrRef pathname, int mode) {
|
||||
return mkfifo(pathname.data(), mode) >= 0;
|
||||
}
|
||||
|
||||
bool f_posix_mknod(CStrRef pathname, int mode, int major /* = 0 */,
|
||||
int minor /* = 0 */) {
|
||||
dev_t php_dev = 0;
|
||||
@@ -244,6 +325,34 @@ bool f_posix_mknod(CStrRef pathname, int mode, int major /* = 0 */,
|
||||
return mknod(pathname.data(), mode, php_dev) >= 0;
|
||||
}
|
||||
|
||||
bool f_posix_setegid(int gid) {
|
||||
return setegid(gid);
|
||||
}
|
||||
|
||||
bool f_posix_seteuid(int uid) {
|
||||
return seteuid(uid);
|
||||
}
|
||||
|
||||
bool f_posix_setgid(int gid) {
|
||||
return setgid(gid);
|
||||
}
|
||||
|
||||
bool f_posix_setpgid(int pid, int pgid) {
|
||||
return setpgid(pid, pgid) >= 0;
|
||||
}
|
||||
|
||||
int64_t f_posix_setsid() {
|
||||
return setsid();
|
||||
}
|
||||
|
||||
bool f_posix_setuid(int uid) {
|
||||
return setuid(uid);
|
||||
}
|
||||
|
||||
String f_posix_strerror(int errnum) {
|
||||
return String(Util::safe_strerror(errnum));
|
||||
}
|
||||
|
||||
Variant f_posix_times() {
|
||||
struct tms t;
|
||||
clock_t ticks = times(&t);
|
||||
|
||||
@@ -84,6 +84,202 @@ TypedValue* fg_posix_access(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_posix_ctermid()
|
||||
_ZN4HPHP15f_posix_ctermidEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_posix_ctermid(Value* _rv) asm("_ZN4HPHP15f_posix_ctermidEv");
|
||||
|
||||
TypedValue* fg_posix_ctermid(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfString;
|
||||
fh_posix_ctermid((&rv.m_data));
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("posix_ctermid", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_posix_get_last_error()
|
||||
_ZN4HPHP22f_posix_get_last_errorEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_posix_get_last_error() asm("_ZN4HPHP22f_posix_get_last_errorEv");
|
||||
|
||||
TypedValue* fg_posix_get_last_error(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_posix_get_last_error();
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("posix_get_last_error", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_posix_getcwd()
|
||||
_ZN4HPHP14f_posix_getcwdEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_posix_getcwd(Value* _rv) asm("_ZN4HPHP14f_posix_getcwdEv");
|
||||
|
||||
TypedValue* fg_posix_getcwd(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfString;
|
||||
fh_posix_getcwd((&rv.m_data));
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("posix_getcwd", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_posix_getegid()
|
||||
_ZN4HPHP15f_posix_getegidEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_posix_getegid() asm("_ZN4HPHP15f_posix_getegidEv");
|
||||
|
||||
TypedValue* fg_posix_getegid(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_posix_getegid();
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("posix_getegid", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_posix_geteuid()
|
||||
_ZN4HPHP15f_posix_geteuidEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_posix_geteuid() asm("_ZN4HPHP15f_posix_geteuidEv");
|
||||
|
||||
TypedValue* fg_posix_geteuid(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_posix_geteuid();
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("posix_geteuid", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_posix_getgid()
|
||||
_ZN4HPHP14f_posix_getgidEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_posix_getgid() asm("_ZN4HPHP14f_posix_getgidEv");
|
||||
|
||||
TypedValue* fg_posix_getgid(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_posix_getgid();
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("posix_getgid", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_posix_getgrgid(int)
|
||||
_ZN4HPHP16f_posix_getgrgidEi
|
||||
@@ -217,6 +413,185 @@ TypedValue* fg_posix_getgroups(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_posix_getlogin()
|
||||
_ZN4HPHP16f_posix_getloginEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
TypedValue* fh_posix_getlogin(TypedValue* _rv) asm("_ZN4HPHP16f_posix_getloginEv");
|
||||
|
||||
TypedValue* fg_posix_getlogin(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
fh_posix_getlogin((&(rv)));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("posix_getlogin", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_posix_getpgid(int)
|
||||
_ZN4HPHP15f_posix_getpgidEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
pid => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_posix_getpgid(TypedValue* _rv, int pid) asm("_ZN4HPHP15f_posix_getpgidEi");
|
||||
|
||||
TypedValue * fg1_posix_getpgid(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_posix_getpgid(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
tvCastToInt64InPlace(args-0);
|
||||
fh_posix_getpgid((rv), (int)(args[-0].m_data.num));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_posix_getpgid(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfInt64) {
|
||||
fh_posix_getpgid((&(rv)), (int)(args[-0].m_data.num));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_posix_getpgid(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("posix_getpgid", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_posix_getpgrp()
|
||||
_ZN4HPHP15f_posix_getpgrpEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_posix_getpgrp() asm("_ZN4HPHP15f_posix_getpgrpEv");
|
||||
|
||||
TypedValue* fg_posix_getpgrp(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_posix_getpgrp();
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("posix_getpgrp", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_posix_getpid()
|
||||
_ZN4HPHP14f_posix_getpidEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_posix_getpid() asm("_ZN4HPHP14f_posix_getpidEv");
|
||||
|
||||
TypedValue* fg_posix_getpid(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_posix_getpid();
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("posix_getpid", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_posix_getppid()
|
||||
_ZN4HPHP15f_posix_getppidEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_posix_getppid() asm("_ZN4HPHP15f_posix_getppidEv");
|
||||
|
||||
TypedValue* fg_posix_getppid(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_posix_getppid();
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("posix_getppid", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_posix_getpwnam(HPHP::String const&)
|
||||
_ZN4HPHP16f_posix_getpwnamERKNS_6StringE
|
||||
@@ -350,6 +725,143 @@ TypedValue* fg_posix_getrlimit(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_posix_getsid(int)
|
||||
_ZN4HPHP14f_posix_getsidEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
pid => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_posix_getsid(TypedValue* _rv, int pid) asm("_ZN4HPHP14f_posix_getsidEi");
|
||||
|
||||
TypedValue * fg1_posix_getsid(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_posix_getsid(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
tvCastToInt64InPlace(args-0);
|
||||
fh_posix_getsid((rv), (int)(args[-0].m_data.num));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_posix_getsid(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfInt64) {
|
||||
fh_posix_getsid((&(rv)), (int)(args[-0].m_data.num));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_posix_getsid(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("posix_getsid", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_posix_getuid()
|
||||
_ZN4HPHP14f_posix_getuidEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_posix_getuid() asm("_ZN4HPHP14f_posix_getuidEv");
|
||||
|
||||
TypedValue* fg_posix_getuid(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_posix_getuid();
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("posix_getuid", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_initgroups(HPHP::String const&, int)
|
||||
_ZN4HPHP18f_posix_initgroupsERKNS_6StringEi
|
||||
|
||||
(return value) => rax
|
||||
name => rdi
|
||||
base_group_id => rsi
|
||||
*/
|
||||
|
||||
bool fh_posix_initgroups(Value* name, int base_group_id) asm("_ZN4HPHP18f_posix_initgroupsERKNS_6StringEi");
|
||||
|
||||
TypedValue * fg1_posix_initgroups(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_posix_initgroups(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-0)->m_type)) {
|
||||
tvCastToStringInPlace(args-0);
|
||||
}
|
||||
rv->m_data.num = (fh_posix_initgroups(&args[-0].m_data, (int)(args[-1].m_data.num))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_posix_initgroups(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 2LL) {
|
||||
if ((args-1)->m_type == KindOfInt64 && IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_posix_initgroups(&args[-0].m_data, (int)(args[-1].m_data.num))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_posix_initgroups(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("posix_initgroups", count, 2, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_isatty(HPHP::Variant const&)
|
||||
_ZN4HPHP14f_posix_isattyERKNS_7VariantE
|
||||
@@ -383,6 +895,116 @@ TypedValue* fg_posix_isatty(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_kill(int, int)
|
||||
_ZN4HPHP12f_posix_killEii
|
||||
|
||||
(return value) => rax
|
||||
pid => rdi
|
||||
sig => rsi
|
||||
*/
|
||||
|
||||
bool fh_posix_kill(int pid, int sig) asm("_ZN4HPHP12f_posix_killEii");
|
||||
|
||||
TypedValue * fg1_posix_kill(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_posix_kill(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
if ((args-0)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-0);
|
||||
}
|
||||
rv->m_data.num = (fh_posix_kill((int)(args[-0].m_data.num), (int)(args[-1].m_data.num))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_posix_kill(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 2LL) {
|
||||
if ((args-1)->m_type == KindOfInt64 && (args-0)->m_type == KindOfInt64) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_posix_kill((int)(args[-0].m_data.num), (int)(args[-1].m_data.num))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_posix_kill(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("posix_kill", count, 2, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_mkfifo(HPHP::String const&, int)
|
||||
_ZN4HPHP14f_posix_mkfifoERKNS_6StringEi
|
||||
|
||||
(return value) => rax
|
||||
pathname => rdi
|
||||
mode => rsi
|
||||
*/
|
||||
|
||||
bool fh_posix_mkfifo(Value* pathname, int mode) asm("_ZN4HPHP14f_posix_mkfifoERKNS_6StringEi");
|
||||
|
||||
TypedValue * fg1_posix_mkfifo(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_posix_mkfifo(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-0)->m_type)) {
|
||||
tvCastToStringInPlace(args-0);
|
||||
}
|
||||
rv->m_data.num = (fh_posix_mkfifo(&args[-0].m_data, (int)(args[-1].m_data.num))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_posix_mkfifo(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 2LL) {
|
||||
if ((args-1)->m_type == KindOfInt64 && IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_posix_mkfifo(&args[-0].m_data, (int)(args[-1].m_data.num))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_posix_mkfifo(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("posix_mkfifo", count, 2, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_mknod(HPHP::String const&, int, int, int)
|
||||
_ZN4HPHP13f_posix_mknodERKNS_6StringEiii
|
||||
@@ -452,6 +1074,341 @@ TypedValue* fg_posix_mknod(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_setegid(int)
|
||||
_ZN4HPHP15f_posix_setegidEi
|
||||
|
||||
(return value) => rax
|
||||
gid => rdi
|
||||
*/
|
||||
|
||||
bool fh_posix_setegid(int gid) asm("_ZN4HPHP15f_posix_setegidEi");
|
||||
|
||||
TypedValue * fg1_posix_setegid(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_posix_setegid(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
tvCastToInt64InPlace(args-0);
|
||||
rv->m_data.num = (fh_posix_setegid((int)(args[-0].m_data.num))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_posix_setegid(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfInt64) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_posix_setegid((int)(args[-0].m_data.num))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_posix_setegid(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("posix_setegid", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_seteuid(int)
|
||||
_ZN4HPHP15f_posix_seteuidEi
|
||||
|
||||
(return value) => rax
|
||||
uid => rdi
|
||||
*/
|
||||
|
||||
bool fh_posix_seteuid(int uid) asm("_ZN4HPHP15f_posix_seteuidEi");
|
||||
|
||||
TypedValue * fg1_posix_seteuid(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_posix_seteuid(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
tvCastToInt64InPlace(args-0);
|
||||
rv->m_data.num = (fh_posix_seteuid((int)(args[-0].m_data.num))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_posix_seteuid(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfInt64) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_posix_seteuid((int)(args[-0].m_data.num))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_posix_seteuid(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("posix_seteuid", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_setgid(int)
|
||||
_ZN4HPHP14f_posix_setgidEi
|
||||
|
||||
(return value) => rax
|
||||
gid => rdi
|
||||
*/
|
||||
|
||||
bool fh_posix_setgid(int gid) asm("_ZN4HPHP14f_posix_setgidEi");
|
||||
|
||||
TypedValue * fg1_posix_setgid(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_posix_setgid(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
tvCastToInt64InPlace(args-0);
|
||||
rv->m_data.num = (fh_posix_setgid((int)(args[-0].m_data.num))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_posix_setgid(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfInt64) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_posix_setgid((int)(args[-0].m_data.num))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_posix_setgid(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("posix_setgid", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_setpgid(int, int)
|
||||
_ZN4HPHP15f_posix_setpgidEii
|
||||
|
||||
(return value) => rax
|
||||
pid => rdi
|
||||
pgid => rsi
|
||||
*/
|
||||
|
||||
bool fh_posix_setpgid(int pid, int pgid) asm("_ZN4HPHP15f_posix_setpgidEii");
|
||||
|
||||
TypedValue * fg1_posix_setpgid(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_posix_setpgid(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
if ((args-0)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-0);
|
||||
}
|
||||
rv->m_data.num = (fh_posix_setpgid((int)(args[-0].m_data.num), (int)(args[-1].m_data.num))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_posix_setpgid(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 2LL) {
|
||||
if ((args-1)->m_type == KindOfInt64 && (args-0)->m_type == KindOfInt64) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_posix_setpgid((int)(args[-0].m_data.num), (int)(args[-1].m_data.num))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_posix_setpgid(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("posix_setpgid", count, 2, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_posix_setsid()
|
||||
_ZN4HPHP14f_posix_setsidEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_posix_setsid() asm("_ZN4HPHP14f_posix_setsidEv");
|
||||
|
||||
TypedValue* fg_posix_setsid(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_posix_setsid();
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("posix_setsid", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_setuid(int)
|
||||
_ZN4HPHP14f_posix_setuidEi
|
||||
|
||||
(return value) => rax
|
||||
uid => rdi
|
||||
*/
|
||||
|
||||
bool fh_posix_setuid(int uid) asm("_ZN4HPHP14f_posix_setuidEi");
|
||||
|
||||
TypedValue * fg1_posix_setuid(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_posix_setuid(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
tvCastToInt64InPlace(args-0);
|
||||
rv->m_data.num = (fh_posix_setuid((int)(args[-0].m_data.num))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_posix_setuid(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfInt64) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_posix_setuid((int)(args[-0].m_data.num))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_posix_setuid(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("posix_setuid", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_posix_strerror(int)
|
||||
_ZN4HPHP16f_posix_strerrorEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
errnum => rsi
|
||||
*/
|
||||
|
||||
Value* fh_posix_strerror(Value* _rv, int errnum) asm("_ZN4HPHP16f_posix_strerrorEi");
|
||||
|
||||
TypedValue * fg1_posix_strerror(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_posix_strerror(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfString;
|
||||
tvCastToInt64InPlace(args-0);
|
||||
fh_posix_strerror((&rv->m_data), (int)(args[-0].m_data.num));
|
||||
if (rv->m_data.num == 0LL) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_posix_strerror(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfInt64) {
|
||||
rv.m_type = KindOfString;
|
||||
fh_posix_strerror((&rv.m_data), (int)(args[-0].m_data.num));
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_posix_strerror(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("posix_strerror", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_posix_times()
|
||||
_ZN4HPHP13f_posix_timesEv
|
||||
|
||||
@@ -27,6 +27,62 @@ mode => rsi
|
||||
|
||||
bool fh_posix_access(Value* file, int mode) asm("_ZN4HPHP14f_posix_accessERKNS_6StringEi");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_posix_ctermid()
|
||||
_ZN4HPHP15f_posix_ctermidEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_posix_ctermid(Value* _rv) asm("_ZN4HPHP15f_posix_ctermidEv");
|
||||
|
||||
/*
|
||||
long HPHP::f_posix_get_last_error()
|
||||
_ZN4HPHP22f_posix_get_last_errorEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_posix_get_last_error() asm("_ZN4HPHP22f_posix_get_last_errorEv");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_posix_getcwd()
|
||||
_ZN4HPHP14f_posix_getcwdEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_posix_getcwd(Value* _rv) asm("_ZN4HPHP14f_posix_getcwdEv");
|
||||
|
||||
/*
|
||||
long HPHP::f_posix_getegid()
|
||||
_ZN4HPHP15f_posix_getegidEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_posix_getegid() asm("_ZN4HPHP15f_posix_getegidEv");
|
||||
|
||||
/*
|
||||
long HPHP::f_posix_geteuid()
|
||||
_ZN4HPHP15f_posix_geteuidEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_posix_geteuid() asm("_ZN4HPHP15f_posix_geteuidEv");
|
||||
|
||||
/*
|
||||
long HPHP::f_posix_getgid()
|
||||
_ZN4HPHP14f_posix_getgidEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_posix_getgid() asm("_ZN4HPHP14f_posix_getgidEv");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_posix_getgrgid(int)
|
||||
_ZN4HPHP16f_posix_getgrgidEi
|
||||
@@ -59,6 +115,54 @@ _rv => rdi
|
||||
|
||||
TypedValue* fh_posix_getgroups(TypedValue* _rv) asm("_ZN4HPHP17f_posix_getgroupsEv");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_posix_getlogin()
|
||||
_ZN4HPHP16f_posix_getloginEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
TypedValue* fh_posix_getlogin(TypedValue* _rv) asm("_ZN4HPHP16f_posix_getloginEv");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_posix_getpgid(int)
|
||||
_ZN4HPHP15f_posix_getpgidEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
pid => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_posix_getpgid(TypedValue* _rv, int pid) asm("_ZN4HPHP15f_posix_getpgidEi");
|
||||
|
||||
/*
|
||||
long HPHP::f_posix_getpgrp()
|
||||
_ZN4HPHP15f_posix_getpgrpEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_posix_getpgrp() asm("_ZN4HPHP15f_posix_getpgrpEv");
|
||||
|
||||
/*
|
||||
long HPHP::f_posix_getpid()
|
||||
_ZN4HPHP14f_posix_getpidEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_posix_getpid() asm("_ZN4HPHP14f_posix_getpidEv");
|
||||
|
||||
/*
|
||||
long HPHP::f_posix_getppid()
|
||||
_ZN4HPHP15f_posix_getppidEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_posix_getppid() asm("_ZN4HPHP15f_posix_getppidEv");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_posix_getpwnam(HPHP::String const&)
|
||||
_ZN4HPHP16f_posix_getpwnamERKNS_6StringE
|
||||
@@ -91,6 +195,37 @@ _rv => rdi
|
||||
|
||||
TypedValue* fh_posix_getrlimit(TypedValue* _rv) asm("_ZN4HPHP17f_posix_getrlimitEv");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_posix_getsid(int)
|
||||
_ZN4HPHP14f_posix_getsidEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
pid => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_posix_getsid(TypedValue* _rv, int pid) asm("_ZN4HPHP14f_posix_getsidEi");
|
||||
|
||||
/*
|
||||
long HPHP::f_posix_getuid()
|
||||
_ZN4HPHP14f_posix_getuidEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_posix_getuid() asm("_ZN4HPHP14f_posix_getuidEv");
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_initgroups(HPHP::String const&, int)
|
||||
_ZN4HPHP18f_posix_initgroupsERKNS_6StringEi
|
||||
|
||||
(return value) => rax
|
||||
name => rdi
|
||||
base_group_id => rsi
|
||||
*/
|
||||
|
||||
bool fh_posix_initgroups(Value* name, int base_group_id) asm("_ZN4HPHP18f_posix_initgroupsERKNS_6StringEi");
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_isatty(HPHP::Variant const&)
|
||||
_ZN4HPHP14f_posix_isattyERKNS_7VariantE
|
||||
@@ -101,6 +236,28 @@ fd => rdi
|
||||
|
||||
bool fh_posix_isatty(TypedValue* fd) asm("_ZN4HPHP14f_posix_isattyERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_kill(int, int)
|
||||
_ZN4HPHP12f_posix_killEii
|
||||
|
||||
(return value) => rax
|
||||
pid => rdi
|
||||
sig => rsi
|
||||
*/
|
||||
|
||||
bool fh_posix_kill(int pid, int sig) asm("_ZN4HPHP12f_posix_killEii");
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_mkfifo(HPHP::String const&, int)
|
||||
_ZN4HPHP14f_posix_mkfifoERKNS_6StringEi
|
||||
|
||||
(return value) => rax
|
||||
pathname => rdi
|
||||
mode => rsi
|
||||
*/
|
||||
|
||||
bool fh_posix_mkfifo(Value* pathname, int mode) asm("_ZN4HPHP14f_posix_mkfifoERKNS_6StringEi");
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_mknod(HPHP::String const&, int, int, int)
|
||||
_ZN4HPHP13f_posix_mknodERKNS_6StringEiii
|
||||
@@ -114,6 +271,77 @@ minor => rcx
|
||||
|
||||
bool fh_posix_mknod(Value* pathname, int mode, int major, int minor) asm("_ZN4HPHP13f_posix_mknodERKNS_6StringEiii");
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_setegid(int)
|
||||
_ZN4HPHP15f_posix_setegidEi
|
||||
|
||||
(return value) => rax
|
||||
gid => rdi
|
||||
*/
|
||||
|
||||
bool fh_posix_setegid(int gid) asm("_ZN4HPHP15f_posix_setegidEi");
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_seteuid(int)
|
||||
_ZN4HPHP15f_posix_seteuidEi
|
||||
|
||||
(return value) => rax
|
||||
uid => rdi
|
||||
*/
|
||||
|
||||
bool fh_posix_seteuid(int uid) asm("_ZN4HPHP15f_posix_seteuidEi");
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_setgid(int)
|
||||
_ZN4HPHP14f_posix_setgidEi
|
||||
|
||||
(return value) => rax
|
||||
gid => rdi
|
||||
*/
|
||||
|
||||
bool fh_posix_setgid(int gid) asm("_ZN4HPHP14f_posix_setgidEi");
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_setpgid(int, int)
|
||||
_ZN4HPHP15f_posix_setpgidEii
|
||||
|
||||
(return value) => rax
|
||||
pid => rdi
|
||||
pgid => rsi
|
||||
*/
|
||||
|
||||
bool fh_posix_setpgid(int pid, int pgid) asm("_ZN4HPHP15f_posix_setpgidEii");
|
||||
|
||||
/*
|
||||
long HPHP::f_posix_setsid()
|
||||
_ZN4HPHP14f_posix_setsidEv
|
||||
|
||||
(return value) => rax
|
||||
*/
|
||||
|
||||
long fh_posix_setsid() asm("_ZN4HPHP14f_posix_setsidEv");
|
||||
|
||||
/*
|
||||
bool HPHP::f_posix_setuid(int)
|
||||
_ZN4HPHP14f_posix_setuidEi
|
||||
|
||||
(return value) => rax
|
||||
uid => rdi
|
||||
*/
|
||||
|
||||
bool fh_posix_setuid(int uid) asm("_ZN4HPHP14f_posix_setuidEi");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_posix_strerror(int)
|
||||
_ZN4HPHP16f_posix_strerrorEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
errnum => rsi
|
||||
*/
|
||||
|
||||
Value* fh_posix_strerror(Value* _rv, int errnum) asm("_ZN4HPHP16f_posix_strerrorEi");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_posix_times()
|
||||
_ZN4HPHP13f_posix_timesEv
|
||||
|
||||
@@ -28,37 +28,17 @@ namespace HPHP {
|
||||
|
||||
bool f_posix_access(CStrRef file, int mode = 0);
|
||||
|
||||
inline String f_posix_ctermid() {
|
||||
String s = String(L_ctermid, ReserveString);
|
||||
char *buffer = s.mutableSlice().ptr;
|
||||
ctermid(buffer);
|
||||
return s.setSize(strlen(buffer));
|
||||
}
|
||||
String f_posix_ctermid();
|
||||
|
||||
inline int64_t f_posix_get_last_error() {
|
||||
return errno;
|
||||
}
|
||||
int64_t f_posix_get_last_error();
|
||||
|
||||
inline String f_posix_getcwd() {
|
||||
String s = String(PATH_MAX, ReserveString);
|
||||
char *buffer = s.mutableSlice().ptr;
|
||||
if (getcwd(buffer, PATH_MAX) == NULL) {
|
||||
return "/";
|
||||
}
|
||||
return s.setSize(strlen(buffer));
|
||||
}
|
||||
String f_posix_getcwd();
|
||||
|
||||
inline int64_t f_posix_getegid() {
|
||||
return getegid();
|
||||
}
|
||||
int64_t f_posix_getegid();
|
||||
|
||||
inline int64_t f_posix_geteuid() {
|
||||
return geteuid();
|
||||
}
|
||||
int64_t f_posix_geteuid();
|
||||
|
||||
inline int64_t f_posix_getgid() {
|
||||
return getgid();
|
||||
}
|
||||
int64_t f_posix_getgid();
|
||||
|
||||
Variant f_posix_getgrgid(int gid);
|
||||
|
||||
@@ -66,31 +46,15 @@ Variant f_posix_getgrnam(CStrRef name);
|
||||
|
||||
Variant f_posix_getgroups();
|
||||
|
||||
inline Variant f_posix_getlogin() {
|
||||
char buf[L_cuserid];
|
||||
if (!getlogin_r(buf, sizeof(buf) - 1)) {
|
||||
return String(buf, CopyString);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
Variant f_posix_getlogin();
|
||||
|
||||
inline Variant f_posix_getpgid(int pid) {
|
||||
int ret = getpgid(pid);
|
||||
if (ret < 0) return false;
|
||||
return ret;
|
||||
}
|
||||
Variant f_posix_getpgid(int pid);
|
||||
|
||||
inline int64_t f_posix_getpgrp() {
|
||||
return getpgrp();
|
||||
}
|
||||
int64_t f_posix_getpgrp();
|
||||
|
||||
inline int64_t f_posix_getpid() {
|
||||
return getpid();
|
||||
}
|
||||
int64_t f_posix_getpid();
|
||||
|
||||
inline int64_t f_posix_getppid() {
|
||||
return getppid();
|
||||
}
|
||||
int64_t f_posix_getppid();
|
||||
|
||||
Variant f_posix_getpwnam(CStrRef username);
|
||||
|
||||
@@ -98,60 +62,33 @@ Variant f_posix_getpwuid(int uid);
|
||||
|
||||
Variant f_posix_getrlimit();
|
||||
|
||||
inline Variant f_posix_getsid(int pid) {
|
||||
int ret = getsid(pid);
|
||||
if (ret < 0) return false;
|
||||
return ret;
|
||||
}
|
||||
Variant f_posix_getsid(int pid);
|
||||
|
||||
inline int64_t f_posix_getuid() {
|
||||
return getuid();
|
||||
}
|
||||
int64_t f_posix_getuid();
|
||||
|
||||
inline bool f_posix_initgroups(CStrRef name, int base_group_id) {
|
||||
if (name.empty()) return false;
|
||||
return !initgroups(name.data(), base_group_id);
|
||||
}
|
||||
bool f_posix_initgroups(CStrRef name, int base_group_id);
|
||||
|
||||
bool f_posix_isatty(CVarRef fd);
|
||||
|
||||
inline bool f_posix_kill(int pid, int sig) {
|
||||
return kill(pid, sig) >= 0;
|
||||
}
|
||||
bool f_posix_kill(int pid, int sig);
|
||||
|
||||
inline bool f_posix_mkfifo(CStrRef pathname, int mode) {
|
||||
return mkfifo(pathname.data(), mode) >= 0;
|
||||
}
|
||||
bool f_posix_mkfifo(CStrRef pathname, int mode);
|
||||
|
||||
bool f_posix_mknod(CStrRef pathname, int mode, int major = 0, int minor = 0);
|
||||
|
||||
inline bool f_posix_setegid(int gid) {
|
||||
return setegid(gid);
|
||||
}
|
||||
bool f_posix_setegid(int gid);
|
||||
|
||||
inline bool f_posix_seteuid(int uid) {
|
||||
return seteuid(uid);
|
||||
}
|
||||
bool f_posix_seteuid(int uid);
|
||||
|
||||
inline bool f_posix_setgid(int gid) {
|
||||
return setgid(gid);
|
||||
}
|
||||
bool f_posix_setgid(int gid);
|
||||
|
||||
inline bool f_posix_setpgid(int pid, int pgid) {
|
||||
return setpgid(pid, pgid) >= 0;
|
||||
}
|
||||
bool f_posix_setpgid(int pid, int pgid);
|
||||
|
||||
inline int64_t f_posix_setsid() {
|
||||
return setsid();
|
||||
}
|
||||
int64_t f_posix_setsid();
|
||||
|
||||
inline bool f_posix_setuid(int uid) {
|
||||
return setuid(uid);
|
||||
}
|
||||
bool f_posix_setuid(int uid);
|
||||
|
||||
inline String f_posix_strerror(int errnum) {
|
||||
return String(Util::safe_strerror(errnum));
|
||||
}
|
||||
String f_posix_strerror(int errnum);
|
||||
|
||||
Variant f_posix_times();
|
||||
|
||||
|
||||
@@ -105,6 +105,10 @@ static bool check_cmd(const char *cmd) {
|
||||
|
||||
IMPLEMENT_DEFAULT_EXTENSION(pcntl);
|
||||
|
||||
int64_t f_pcntl_alarm(int seconds) {
|
||||
return alarm(seconds);
|
||||
}
|
||||
|
||||
void f_pcntl_exec(CStrRef path, CArrRef args /* = null_array */,
|
||||
CArrRef envs /* = null_array */) {
|
||||
if (RuntimeOption::WhitelistExec && !check_cmd(path.data())) {
|
||||
@@ -359,6 +363,16 @@ int64_t f_pcntl_waitpid(int pid, VRefParam status, int options /* = 0 */) {
|
||||
return child_id;
|
||||
}
|
||||
|
||||
int64_t f_pcntl_wexitstatus(int status) {
|
||||
return WEXITSTATUS(status);
|
||||
}
|
||||
|
||||
bool f_pcntl_wifexited(int status) { return WIFEXITED(status);}
|
||||
bool f_pcntl_wifsignaled(int status) { return WIFSIGNALED(status);}
|
||||
bool f_pcntl_wifstopped(int status) { return WIFSTOPPED(status);}
|
||||
int64_t f_pcntl_wstopsig(int status) { return WSTOPSIG(status);}
|
||||
int64_t f_pcntl_wtermsig(int status) { return WTERMSIG(status);}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// popen
|
||||
|
||||
|
||||
@@ -24,6 +24,55 @@
|
||||
|
||||
namespace HPHP {
|
||||
|
||||
/*
|
||||
long HPHP::f_pcntl_alarm(int)
|
||||
_ZN4HPHP13f_pcntl_alarmEi
|
||||
|
||||
(return value) => rax
|
||||
seconds => rdi
|
||||
*/
|
||||
|
||||
long fh_pcntl_alarm(int seconds) asm("_ZN4HPHP13f_pcntl_alarmEi");
|
||||
|
||||
TypedValue * fg1_pcntl_alarm(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_pcntl_alarm(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfInt64;
|
||||
tvCastToInt64InPlace(args-0);
|
||||
rv->m_data.num = (int64_t)fh_pcntl_alarm((int)(args[-0].m_data.num));
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_pcntl_alarm(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfInt64) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_pcntl_alarm((int)(args[-0].m_data.num));
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_pcntl_alarm(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("pcntl_alarm", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
void HPHP::f_pcntl_exec(HPHP::String const&, HPHP::Array const&, HPHP::Array const&)
|
||||
_ZN4HPHP12f_pcntl_execERKNS_6StringERKNS_5ArrayES5_
|
||||
@@ -421,6 +470,300 @@ TypedValue* fg_pcntl_waitpid(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_pcntl_wexitstatus(int)
|
||||
_ZN4HPHP19f_pcntl_wexitstatusEi
|
||||
|
||||
(return value) => rax
|
||||
status => rdi
|
||||
*/
|
||||
|
||||
long fh_pcntl_wexitstatus(int status) asm("_ZN4HPHP19f_pcntl_wexitstatusEi");
|
||||
|
||||
TypedValue * fg1_pcntl_wexitstatus(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_pcntl_wexitstatus(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfInt64;
|
||||
tvCastToInt64InPlace(args-0);
|
||||
rv->m_data.num = (int64_t)fh_pcntl_wexitstatus((int)(args[-0].m_data.num));
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_pcntl_wexitstatus(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfInt64) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_pcntl_wexitstatus((int)(args[-0].m_data.num));
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_pcntl_wexitstatus(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("pcntl_wexitstatus", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_pcntl_wifexited(int)
|
||||
_ZN4HPHP17f_pcntl_wifexitedEi
|
||||
|
||||
(return value) => rax
|
||||
status => rdi
|
||||
*/
|
||||
|
||||
bool fh_pcntl_wifexited(int status) asm("_ZN4HPHP17f_pcntl_wifexitedEi");
|
||||
|
||||
TypedValue * fg1_pcntl_wifexited(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_pcntl_wifexited(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
tvCastToInt64InPlace(args-0);
|
||||
rv->m_data.num = (fh_pcntl_wifexited((int)(args[-0].m_data.num))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_pcntl_wifexited(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfInt64) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_pcntl_wifexited((int)(args[-0].m_data.num))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_pcntl_wifexited(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("pcntl_wifexited", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_pcntl_wifsignaled(int)
|
||||
_ZN4HPHP19f_pcntl_wifsignaledEi
|
||||
|
||||
(return value) => rax
|
||||
status => rdi
|
||||
*/
|
||||
|
||||
bool fh_pcntl_wifsignaled(int status) asm("_ZN4HPHP19f_pcntl_wifsignaledEi");
|
||||
|
||||
TypedValue * fg1_pcntl_wifsignaled(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_pcntl_wifsignaled(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
tvCastToInt64InPlace(args-0);
|
||||
rv->m_data.num = (fh_pcntl_wifsignaled((int)(args[-0].m_data.num))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_pcntl_wifsignaled(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfInt64) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_pcntl_wifsignaled((int)(args[-0].m_data.num))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_pcntl_wifsignaled(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("pcntl_wifsignaled", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_pcntl_wifstopped(int)
|
||||
_ZN4HPHP18f_pcntl_wifstoppedEi
|
||||
|
||||
(return value) => rax
|
||||
status => rdi
|
||||
*/
|
||||
|
||||
bool fh_pcntl_wifstopped(int status) asm("_ZN4HPHP18f_pcntl_wifstoppedEi");
|
||||
|
||||
TypedValue * fg1_pcntl_wifstopped(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_pcntl_wifstopped(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
tvCastToInt64InPlace(args-0);
|
||||
rv->m_data.num = (fh_pcntl_wifstopped((int)(args[-0].m_data.num))) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_pcntl_wifstopped(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfInt64) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_pcntl_wifstopped((int)(args[-0].m_data.num))) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_pcntl_wifstopped(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("pcntl_wifstopped", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_pcntl_wstopsig(int)
|
||||
_ZN4HPHP16f_pcntl_wstopsigEi
|
||||
|
||||
(return value) => rax
|
||||
status => rdi
|
||||
*/
|
||||
|
||||
long fh_pcntl_wstopsig(int status) asm("_ZN4HPHP16f_pcntl_wstopsigEi");
|
||||
|
||||
TypedValue * fg1_pcntl_wstopsig(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_pcntl_wstopsig(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfInt64;
|
||||
tvCastToInt64InPlace(args-0);
|
||||
rv->m_data.num = (int64_t)fh_pcntl_wstopsig((int)(args[-0].m_data.num));
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_pcntl_wstopsig(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfInt64) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_pcntl_wstopsig((int)(args[-0].m_data.num));
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_pcntl_wstopsig(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("pcntl_wstopsig", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_pcntl_wtermsig(int)
|
||||
_ZN4HPHP16f_pcntl_wtermsigEi
|
||||
|
||||
(return value) => rax
|
||||
status => rdi
|
||||
*/
|
||||
|
||||
long fh_pcntl_wtermsig(int status) asm("_ZN4HPHP16f_pcntl_wtermsigEi");
|
||||
|
||||
TypedValue * fg1_pcntl_wtermsig(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_pcntl_wtermsig(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfInt64;
|
||||
tvCastToInt64InPlace(args-0);
|
||||
rv->m_data.num = (int64_t)fh_pcntl_wtermsig((int)(args[-0].m_data.num));
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_pcntl_wtermsig(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfInt64) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_pcntl_wtermsig((int)(args[-0].m_data.num));
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_pcntl_wtermsig(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("pcntl_wtermsig", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_pcntl_signal_dispatch()
|
||||
_ZN4HPHP23f_pcntl_signal_dispatchEv
|
||||
|
||||
@@ -16,6 +16,16 @@
|
||||
*/
|
||||
namespace HPHP {
|
||||
|
||||
/*
|
||||
long HPHP::f_pcntl_alarm(int)
|
||||
_ZN4HPHP13f_pcntl_alarmEi
|
||||
|
||||
(return value) => rax
|
||||
seconds => rdi
|
||||
*/
|
||||
|
||||
long fh_pcntl_alarm(int seconds) asm("_ZN4HPHP13f_pcntl_alarmEi");
|
||||
|
||||
/*
|
||||
void HPHP::f_pcntl_exec(HPHP::String const&, HPHP::Array const&, HPHP::Array const&)
|
||||
_ZN4HPHP12f_pcntl_execERKNS_6StringERKNS_5ArrayES5_
|
||||
@@ -95,6 +105,66 @@ options => rdx
|
||||
|
||||
long fh_pcntl_waitpid(int pid, TypedValue* status, int options) asm("_ZN4HPHP15f_pcntl_waitpidEiRKNS_14VRefParamValueEi");
|
||||
|
||||
/*
|
||||
long HPHP::f_pcntl_wexitstatus(int)
|
||||
_ZN4HPHP19f_pcntl_wexitstatusEi
|
||||
|
||||
(return value) => rax
|
||||
status => rdi
|
||||
*/
|
||||
|
||||
long fh_pcntl_wexitstatus(int status) asm("_ZN4HPHP19f_pcntl_wexitstatusEi");
|
||||
|
||||
/*
|
||||
bool HPHP::f_pcntl_wifexited(int)
|
||||
_ZN4HPHP17f_pcntl_wifexitedEi
|
||||
|
||||
(return value) => rax
|
||||
status => rdi
|
||||
*/
|
||||
|
||||
bool fh_pcntl_wifexited(int status) asm("_ZN4HPHP17f_pcntl_wifexitedEi");
|
||||
|
||||
/*
|
||||
bool HPHP::f_pcntl_wifsignaled(int)
|
||||
_ZN4HPHP19f_pcntl_wifsignaledEi
|
||||
|
||||
(return value) => rax
|
||||
status => rdi
|
||||
*/
|
||||
|
||||
bool fh_pcntl_wifsignaled(int status) asm("_ZN4HPHP19f_pcntl_wifsignaledEi");
|
||||
|
||||
/*
|
||||
bool HPHP::f_pcntl_wifstopped(int)
|
||||
_ZN4HPHP18f_pcntl_wifstoppedEi
|
||||
|
||||
(return value) => rax
|
||||
status => rdi
|
||||
*/
|
||||
|
||||
bool fh_pcntl_wifstopped(int status) asm("_ZN4HPHP18f_pcntl_wifstoppedEi");
|
||||
|
||||
/*
|
||||
long HPHP::f_pcntl_wstopsig(int)
|
||||
_ZN4HPHP16f_pcntl_wstopsigEi
|
||||
|
||||
(return value) => rax
|
||||
status => rdi
|
||||
*/
|
||||
|
||||
long fh_pcntl_wstopsig(int status) asm("_ZN4HPHP16f_pcntl_wstopsigEi");
|
||||
|
||||
/*
|
||||
long HPHP::f_pcntl_wtermsig(int)
|
||||
_ZN4HPHP16f_pcntl_wtermsigEi
|
||||
|
||||
(return value) => rax
|
||||
status => rdi
|
||||
*/
|
||||
|
||||
long fh_pcntl_wtermsig(int status) asm("_ZN4HPHP16f_pcntl_wtermsigEi");
|
||||
|
||||
/*
|
||||
bool HPHP::f_pcntl_signal_dispatch()
|
||||
_ZN4HPHP23f_pcntl_signal_dispatchEv
|
||||
|
||||
@@ -24,9 +24,7 @@
|
||||
namespace HPHP {
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
inline int64_t f_pcntl_alarm(int seconds) {
|
||||
return alarm(seconds);
|
||||
}
|
||||
int64_t f_pcntl_alarm(int seconds);
|
||||
void f_pcntl_exec(CStrRef path, CArrRef args = null_array, CArrRef envs = null_array);
|
||||
|
||||
int64_t f_pcntl_fork();
|
||||
@@ -38,9 +36,7 @@ bool f_pcntl_signal(int signo, CVarRef handler, bool restart_syscalls = true);
|
||||
int64_t f_pcntl_wait(VRefParam status, int options = 0);
|
||||
int64_t f_pcntl_waitpid(int pid, VRefParam status, int options = 0);
|
||||
|
||||
inline int64_t f_pcntl_wexitstatus(int status) {
|
||||
return WEXITSTATUS(status);
|
||||
}
|
||||
int64_t f_pcntl_wexitstatus(int status);
|
||||
|
||||
/**
|
||||
* Process pending signals flagged earlier.
|
||||
@@ -48,11 +44,11 @@ inline int64_t f_pcntl_wexitstatus(int status) {
|
||||
bool f_pcntl_signal_dispatch();
|
||||
|
||||
// status querying
|
||||
inline bool f_pcntl_wifexited(int status) { return WIFEXITED(status);}
|
||||
inline bool f_pcntl_wifsignaled(int status) { return WIFSIGNALED(status);}
|
||||
inline bool f_pcntl_wifstopped(int status) { return WIFSTOPPED(status);}
|
||||
inline int64_t f_pcntl_wstopsig(int status) { return WSTOPSIG(status);}
|
||||
inline int64_t f_pcntl_wtermsig(int status) { return WTERMSIG(status);}
|
||||
bool f_pcntl_wifexited(int status);
|
||||
bool f_pcntl_wifsignaled(int status);
|
||||
bool f_pcntl_wifstopped(int status);
|
||||
int64_t f_pcntl_wstopsig(int status);
|
||||
int64_t f_pcntl_wtermsig(int status);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -122,6 +122,8 @@ String f_spl_object_hash(CObjRef obj) {
|
||||
return String(buf, CopyString);
|
||||
}
|
||||
|
||||
int64_t f_hphp_object_pointer(CObjRef obj) { return (int64_t)obj.get();}
|
||||
|
||||
Variant f_hphp_get_this() {
|
||||
return g_vmContext->getThis();
|
||||
}
|
||||
|
||||
@@ -110,6 +110,55 @@ TypedValue* fg_spl_object_hash(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_hphp_object_pointer(HPHP::Object const&)
|
||||
_ZN4HPHP21f_hphp_object_pointerERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
obj => rdi
|
||||
*/
|
||||
|
||||
long fh_hphp_object_pointer(Value* obj) asm("_ZN4HPHP21f_hphp_object_pointerERKNS_6ObjectE");
|
||||
|
||||
TypedValue * fg1_hphp_object_pointer(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_hphp_object_pointer(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfInt64;
|
||||
tvCastToObjectInPlace(args-0);
|
||||
rv->m_data.num = (int64_t)fh_hphp_object_pointer(&args[-0].m_data);
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_hphp_object_pointer(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfObject) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_hphp_object_pointer(&args[-0].m_data);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_hphp_object_pointer(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("hphp_object_pointer", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_hphp_get_this()
|
||||
_ZN4HPHP15f_hphp_get_thisEv
|
||||
|
||||
@@ -37,6 +37,16 @@ obj => rsi
|
||||
|
||||
Value* fh_spl_object_hash(Value* _rv, Value* obj) asm("_ZN4HPHP17f_spl_object_hashERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
long HPHP::f_hphp_object_pointer(HPHP::Object const&)
|
||||
_ZN4HPHP21f_hphp_object_pointerERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
obj => rdi
|
||||
*/
|
||||
|
||||
long fh_hphp_object_pointer(Value* obj) asm("_ZN4HPHP21f_hphp_object_pointerERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_hphp_get_this()
|
||||
_ZN4HPHP15f_hphp_get_thisEv
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace HPHP {
|
||||
|
||||
Array f_spl_classes();
|
||||
String f_spl_object_hash(CObjRef obj);
|
||||
inline int64_t f_hphp_object_pointer(CObjRef obj) { return (int64_t)obj.get();}
|
||||
int64_t f_hphp_object_pointer(CObjRef obj);
|
||||
Variant f_hphp_get_this();
|
||||
Variant f_class_implements(CVarRef obj, bool autoload = true);
|
||||
Variant f_class_parents(CVarRef obj, bool autoload = true);
|
||||
|
||||
@@ -50,6 +50,31 @@ StaticString StreamContext::s_class_name("StreamContext");
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Object f_stream_context_create(CArrRef options /* = null_array */,
|
||||
CArrRef params /* = null_array */) {
|
||||
return Object(NEWOBJ(StreamContext)(options, params));
|
||||
}
|
||||
|
||||
Object f_stream_context_get_default(CArrRef options /* = null_array */) {
|
||||
throw NotImplementedException(__func__);
|
||||
}
|
||||
|
||||
Variant f_stream_context_get_options(CObjRef stream_or_context) {
|
||||
throw NotImplementedException(__func__);
|
||||
}
|
||||
|
||||
bool f_stream_context_set_option(CObjRef stream_or_context,
|
||||
CVarRef wrapper,
|
||||
CStrRef option /* = null_string */,
|
||||
CVarRef value /* = null_variant */) {
|
||||
throw NotImplementedException(__func__);
|
||||
}
|
||||
|
||||
bool f_stream_context_set_param(CObjRef stream_or_context,
|
||||
CArrRef params) {
|
||||
throw NotImplementedException(__func__);
|
||||
}
|
||||
|
||||
Variant f_stream_copy_to_stream(CObjRef source, CObjRef dest,
|
||||
int maxlength /* = -1 */,
|
||||
int offset /* = 0 */) {
|
||||
@@ -88,6 +113,46 @@ Variant f_stream_copy_to_stream(CObjRef source, CObjRef dest,
|
||||
return cbytes;
|
||||
}
|
||||
|
||||
bool f_stream_encoding(CObjRef stream, CStrRef encoding /* = null_string */) {
|
||||
throw NotSupportedException(__func__, "stream filter is not supported");
|
||||
}
|
||||
|
||||
void f_stream_bucket_append(CObjRef brigade, CObjRef bucket) {
|
||||
throw NotSupportedException(__func__, "stream bucket is not supported");
|
||||
}
|
||||
|
||||
void f_stream_bucket_prepend(CObjRef brigade, CObjRef bucket) {
|
||||
throw NotSupportedException(__func__, "stream bucket is not supported");
|
||||
}
|
||||
|
||||
Object f_stream_bucket_make_writeable(CObjRef brigade) {
|
||||
throw NotSupportedException(__func__, "stream bucket is not supported");
|
||||
}
|
||||
|
||||
Object f_stream_bucket_new(CObjRef stream, CStrRef buffer) {
|
||||
throw NotSupportedException(__func__, "stream bucket is not supported");
|
||||
}
|
||||
|
||||
bool f_stream_filter_register(CStrRef filtername, CStrRef classname) {
|
||||
throw NotSupportedException(__func__, "stream filter is not supported");
|
||||
}
|
||||
|
||||
bool f_stream_filter_remove(CObjRef stream_filter) {
|
||||
throw NotSupportedException(__func__, "stream filter is not supported");
|
||||
}
|
||||
|
||||
Object f_stream_filter_append(CObjRef stream, CStrRef filtername,
|
||||
int read_write /* = 0 */,
|
||||
CVarRef params /* = null_variant */) {
|
||||
throw NotSupportedException(__func__, "stream filter is not supported");
|
||||
}
|
||||
|
||||
Object f_stream_filter_prepend(CObjRef stream, CStrRef filtername,
|
||||
int read_write /* = 0 */,
|
||||
CVarRef params /* = null_variant */) {
|
||||
throw NotSupportedException(__func__, "stream filter is not supported");
|
||||
}
|
||||
|
||||
Variant f_stream_get_contents(CObjRef handle, int maxlen /* = 0 */,
|
||||
int offset /* = 0 */) {
|
||||
if (maxlen < 0) {
|
||||
@@ -118,12 +183,32 @@ Variant f_stream_get_contents(CObjRef handle, int maxlen /* = 0 */,
|
||||
return ret;
|
||||
}
|
||||
|
||||
Array f_stream_get_filters() {
|
||||
throw NotSupportedException(__func__, "stream filter is not supported");
|
||||
}
|
||||
|
||||
Variant f_stream_get_line(CObjRef handle, int length /* = 0 */,
|
||||
CStrRef ending /* = null_string */) {
|
||||
File *file = handle.getTyped<File>();
|
||||
return file->readRecord(ending, length);
|
||||
}
|
||||
|
||||
Variant f_stream_get_meta_data(CObjRef stream) {
|
||||
File *f = stream.getTyped<File>(true, true);
|
||||
if (f) return f->getMetaData();
|
||||
return false;
|
||||
}
|
||||
|
||||
Array f_stream_get_transports() {
|
||||
return CREATE_VECTOR4("tcp", "udp", "unix", "udg");
|
||||
}
|
||||
|
||||
String f_stream_resolve_include_path(CStrRef filename,
|
||||
CObjRef context /* = null_object */) {
|
||||
struct stat s;
|
||||
return Eval::resolveVmInclude(filename.get(), "", &s);
|
||||
}
|
||||
|
||||
Variant f_stream_select(VRefParam read, VRefParam write, VRefParam except,
|
||||
CVarRef vtv_sec, int tv_usec /* = 0 */) {
|
||||
return f_socket_select(ref(read), ref(write), ref(except), vtv_sec, tv_usec);
|
||||
@@ -167,6 +252,10 @@ int64_t f_stream_set_write_buffer(CObjRef stream, int buffer) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
int64_t f_set_file_buffer(CObjRef stream, int buffer) {
|
||||
return f_stream_set_write_buffer(stream, buffer);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Wrappers
|
||||
|
||||
@@ -344,6 +433,12 @@ Variant f_stream_socket_client(CStrRef remote_socket,
|
||||
return f_fsockopen(protocol + "://" + host, port, errnum, errstr, timeout);
|
||||
}
|
||||
|
||||
Variant f_stream_socket_enable_crypto(CObjRef stream, bool enable,
|
||||
int crypto_type /* = 0 */,
|
||||
CObjRef session_stream /* = null_object */) {
|
||||
throw NotSupportedException(__func__, "no crypto support on sockets");
|
||||
}
|
||||
|
||||
Variant f_stream_socket_get_name(CObjRef handle, bool want_peer) {
|
||||
Variant address, port;
|
||||
bool ret;
|
||||
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -16,6 +16,64 @@
|
||||
*/
|
||||
namespace HPHP {
|
||||
|
||||
/*
|
||||
HPHP::Object HPHP::f_stream_context_create(HPHP::Array const&, HPHP::Array const&)
|
||||
_ZN4HPHP23f_stream_context_createERKNS_5ArrayES2_
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
options => rsi
|
||||
params => rdx
|
||||
*/
|
||||
|
||||
Value* fh_stream_context_create(Value* _rv, Value* options, Value* params) asm("_ZN4HPHP23f_stream_context_createERKNS_5ArrayES2_");
|
||||
|
||||
/*
|
||||
HPHP::Object HPHP::f_stream_context_get_default(HPHP::Array const&)
|
||||
_ZN4HPHP28f_stream_context_get_defaultERKNS_5ArrayE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
options => rsi
|
||||
*/
|
||||
|
||||
Value* fh_stream_context_get_default(Value* _rv, Value* options) asm("_ZN4HPHP28f_stream_context_get_defaultERKNS_5ArrayE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_stream_context_get_options(HPHP::Object const&)
|
||||
_ZN4HPHP28f_stream_context_get_optionsERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
stream_or_context => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_stream_context_get_options(TypedValue* _rv, Value* stream_or_context) asm("_ZN4HPHP28f_stream_context_get_optionsERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
bool HPHP::f_stream_context_set_option(HPHP::Object const&, HPHP::Variant const&, HPHP::String const&, HPHP::Variant const&)
|
||||
_ZN4HPHP27f_stream_context_set_optionERKNS_6ObjectERKNS_7VariantERKNS_6StringES5_
|
||||
|
||||
(return value) => rax
|
||||
stream_or_context => rdi
|
||||
wrapper => rsi
|
||||
option => rdx
|
||||
value => rcx
|
||||
*/
|
||||
|
||||
bool fh_stream_context_set_option(Value* stream_or_context, TypedValue* wrapper, Value* option, TypedValue* value) asm("_ZN4HPHP27f_stream_context_set_optionERKNS_6ObjectERKNS_7VariantERKNS_6StringES5_");
|
||||
|
||||
/*
|
||||
bool HPHP::f_stream_context_set_param(HPHP::Object const&, HPHP::Array const&)
|
||||
_ZN4HPHP26f_stream_context_set_paramERKNS_6ObjectERKNS_5ArrayE
|
||||
|
||||
(return value) => rax
|
||||
stream_or_context => rdi
|
||||
params => rsi
|
||||
*/
|
||||
|
||||
bool fh_stream_context_set_param(Value* stream_or_context, Value* params) asm("_ZN4HPHP26f_stream_context_set_paramERKNS_6ObjectERKNS_5ArrayE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_stream_copy_to_stream(HPHP::Object const&, HPHP::Object const&, int, int)
|
||||
_ZN4HPHP23f_stream_copy_to_streamERKNS_6ObjectES2_ii
|
||||
@@ -30,6 +88,109 @@ offset => r8
|
||||
|
||||
TypedValue* fh_stream_copy_to_stream(TypedValue* _rv, Value* source, Value* dest, int maxlength, int offset) asm("_ZN4HPHP23f_stream_copy_to_streamERKNS_6ObjectES2_ii");
|
||||
|
||||
/*
|
||||
bool HPHP::f_stream_encoding(HPHP::Object const&, HPHP::String const&)
|
||||
_ZN4HPHP17f_stream_encodingERKNS_6ObjectERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
stream => rdi
|
||||
encoding => rsi
|
||||
*/
|
||||
|
||||
bool fh_stream_encoding(Value* stream, Value* encoding) asm("_ZN4HPHP17f_stream_encodingERKNS_6ObjectERKNS_6StringE");
|
||||
|
||||
/*
|
||||
void HPHP::f_stream_bucket_append(HPHP::Object const&, HPHP::Object const&)
|
||||
_ZN4HPHP22f_stream_bucket_appendERKNS_6ObjectES2_
|
||||
|
||||
brigade => rdi
|
||||
bucket => rsi
|
||||
*/
|
||||
|
||||
void fh_stream_bucket_append(Value* brigade, Value* bucket) asm("_ZN4HPHP22f_stream_bucket_appendERKNS_6ObjectES2_");
|
||||
|
||||
/*
|
||||
void HPHP::f_stream_bucket_prepend(HPHP::Object const&, HPHP::Object const&)
|
||||
_ZN4HPHP23f_stream_bucket_prependERKNS_6ObjectES2_
|
||||
|
||||
brigade => rdi
|
||||
bucket => rsi
|
||||
*/
|
||||
|
||||
void fh_stream_bucket_prepend(Value* brigade, Value* bucket) asm("_ZN4HPHP23f_stream_bucket_prependERKNS_6ObjectES2_");
|
||||
|
||||
/*
|
||||
HPHP::Object HPHP::f_stream_bucket_make_writeable(HPHP::Object const&)
|
||||
_ZN4HPHP30f_stream_bucket_make_writeableERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
brigade => rsi
|
||||
*/
|
||||
|
||||
Value* fh_stream_bucket_make_writeable(Value* _rv, Value* brigade) asm("_ZN4HPHP30f_stream_bucket_make_writeableERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
HPHP::Object HPHP::f_stream_bucket_new(HPHP::Object const&, HPHP::String const&)
|
||||
_ZN4HPHP19f_stream_bucket_newERKNS_6ObjectERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
stream => rsi
|
||||
buffer => rdx
|
||||
*/
|
||||
|
||||
Value* fh_stream_bucket_new(Value* _rv, Value* stream, Value* buffer) asm("_ZN4HPHP19f_stream_bucket_newERKNS_6ObjectERKNS_6StringE");
|
||||
|
||||
/*
|
||||
bool HPHP::f_stream_filter_register(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP24f_stream_filter_registerERKNS_6StringES2_
|
||||
|
||||
(return value) => rax
|
||||
filtername => rdi
|
||||
classname => rsi
|
||||
*/
|
||||
|
||||
bool fh_stream_filter_register(Value* filtername, Value* classname) asm("_ZN4HPHP24f_stream_filter_registerERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
bool HPHP::f_stream_filter_remove(HPHP::Object const&)
|
||||
_ZN4HPHP22f_stream_filter_removeERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
stream_filter => rdi
|
||||
*/
|
||||
|
||||
bool fh_stream_filter_remove(Value* stream_filter) asm("_ZN4HPHP22f_stream_filter_removeERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
HPHP::Object HPHP::f_stream_filter_append(HPHP::Object const&, HPHP::String const&, int, HPHP::Variant const&)
|
||||
_ZN4HPHP22f_stream_filter_appendERKNS_6ObjectERKNS_6StringEiRKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
stream => rsi
|
||||
filtername => rdx
|
||||
read_write => rcx
|
||||
params => r8
|
||||
*/
|
||||
|
||||
Value* fh_stream_filter_append(Value* _rv, Value* stream, Value* filtername, int read_write, TypedValue* params) asm("_ZN4HPHP22f_stream_filter_appendERKNS_6ObjectERKNS_6StringEiRKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Object HPHP::f_stream_filter_prepend(HPHP::Object const&, HPHP::String const&, int, HPHP::Variant const&)
|
||||
_ZN4HPHP23f_stream_filter_prependERKNS_6ObjectERKNS_6StringEiRKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
stream => rsi
|
||||
filtername => rdx
|
||||
read_write => rcx
|
||||
params => r8
|
||||
*/
|
||||
|
||||
Value* fh_stream_filter_prepend(Value* _rv, Value* stream, Value* filtername, int read_write, TypedValue* params) asm("_ZN4HPHP23f_stream_filter_prependERKNS_6ObjectERKNS_6StringEiRKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_stream_get_contents(HPHP::Object const&, int, int)
|
||||
_ZN4HPHP21f_stream_get_contentsERKNS_6ObjectEii
|
||||
@@ -43,6 +204,16 @@ offset => rcx
|
||||
|
||||
TypedValue* fh_stream_get_contents(TypedValue* _rv, Value* handle, int maxlen, int offset) asm("_ZN4HPHP21f_stream_get_contentsERKNS_6ObjectEii");
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_stream_get_filters()
|
||||
_ZN4HPHP20f_stream_get_filtersEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_stream_get_filters(Value* _rv) asm("_ZN4HPHP20f_stream_get_filtersEv");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_stream_get_line(HPHP::Object const&, int, HPHP::String const&)
|
||||
_ZN4HPHP17f_stream_get_lineERKNS_6ObjectEiRKNS_6StringE
|
||||
@@ -56,6 +227,27 @@ ending => rcx
|
||||
|
||||
TypedValue* fh_stream_get_line(TypedValue* _rv, Value* handle, int length, Value* ending) asm("_ZN4HPHP17f_stream_get_lineERKNS_6ObjectEiRKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_stream_get_meta_data(HPHP::Object const&)
|
||||
_ZN4HPHP22f_stream_get_meta_dataERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
stream => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_stream_get_meta_data(TypedValue* _rv, Value* stream) asm("_ZN4HPHP22f_stream_get_meta_dataERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_stream_get_transports()
|
||||
_ZN4HPHP23f_stream_get_transportsEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_stream_get_transports(Value* _rv) asm("_ZN4HPHP23f_stream_get_transportsEv");
|
||||
|
||||
/*
|
||||
HPHP::Array HPHP::f_stream_get_wrappers()
|
||||
_ZN4HPHP21f_stream_get_wrappersEv
|
||||
@@ -108,6 +300,18 @@ protocol => rdi
|
||||
|
||||
bool fh_stream_wrapper_unregister(Value* protocol) asm("_ZN4HPHP27f_stream_wrapper_unregisterERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_stream_resolve_include_path(HPHP::String const&, HPHP::Object const&)
|
||||
_ZN4HPHP29f_stream_resolve_include_pathERKNS_6StringERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
filename => rsi
|
||||
context => rdx
|
||||
*/
|
||||
|
||||
Value* fh_stream_resolve_include_path(Value* _rv, Value* filename, Value* context) asm("_ZN4HPHP29f_stream_resolve_include_pathERKNS_6StringERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_stream_select(HPHP::VRefParamValue const&, HPHP::VRefParamValue const&, HPHP::VRefParamValue const&, HPHP::Variant const&, int)
|
||||
_ZN4HPHP15f_stream_selectERKNS_14VRefParamValueES2_S2_RKNS_7VariantEi
|
||||
@@ -157,6 +361,17 @@ buffer => rsi
|
||||
|
||||
long fh_stream_set_write_buffer(Value* stream, int buffer) asm("_ZN4HPHP25f_stream_set_write_bufferERKNS_6ObjectEi");
|
||||
|
||||
/*
|
||||
long HPHP::f_set_file_buffer(HPHP::Object const&, int)
|
||||
_ZN4HPHP17f_set_file_bufferERKNS_6ObjectEi
|
||||
|
||||
(return value) => rax
|
||||
stream => rdi
|
||||
buffer => rsi
|
||||
*/
|
||||
|
||||
long fh_set_file_buffer(Value* stream, int buffer) asm("_ZN4HPHP17f_set_file_bufferERKNS_6ObjectEi");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_stream_socket_accept(HPHP::Object const&, double, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP22f_stream_socket_acceptERKNS_6ObjectEdRKNS_14VRefParamValueE
|
||||
@@ -201,6 +416,20 @@ context => r9
|
||||
|
||||
TypedValue* fh_stream_socket_client(TypedValue* _rv, Value* remote_socket, TypedValue* errnum, TypedValue* errstr, double timeout, int flags, Value* context) asm("_ZN4HPHP22f_stream_socket_clientERKNS_6StringERKNS_14VRefParamValueES5_diRKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_stream_socket_enable_crypto(HPHP::Object const&, bool, int, HPHP::Object const&)
|
||||
_ZN4HPHP29f_stream_socket_enable_cryptoERKNS_6ObjectEbiS2_
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
stream => rsi
|
||||
enable => rdx
|
||||
crypto_type => rcx
|
||||
session_stream => r8
|
||||
*/
|
||||
|
||||
TypedValue* fh_stream_socket_enable_crypto(TypedValue* _rv, Value* stream, bool enable, int crypto_type, Value* session_stream) asm("_ZN4HPHP29f_stream_socket_enable_cryptoERKNS_6ObjectEbiS2_");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_stream_socket_get_name(HPHP::Object const&, bool)
|
||||
_ZN4HPHP24f_stream_socket_get_nameERKNS_6ObjectEb
|
||||
|
||||
@@ -40,95 +40,59 @@ public:
|
||||
Array m_params;
|
||||
};
|
||||
|
||||
inline Object f_stream_context_create(CArrRef options = null_array,
|
||||
CArrRef params = null_array) {
|
||||
return Object(NEWOBJ(StreamContext)(options, params));
|
||||
}
|
||||
Object f_stream_context_create(CArrRef options = null_array,
|
||||
CArrRef params = null_array);
|
||||
|
||||
inline Object f_stream_context_get_default(CArrRef options = null_array) {
|
||||
throw NotImplementedException(__func__);
|
||||
}
|
||||
Object f_stream_context_get_default(CArrRef options = null_array);
|
||||
|
||||
inline Variant f_stream_context_get_options(CObjRef stream_or_context) {
|
||||
throw NotImplementedException(__func__);
|
||||
}
|
||||
Variant f_stream_context_get_options(CObjRef stream_or_context);
|
||||
|
||||
inline bool f_stream_context_set_option(CObjRef stream_or_context,
|
||||
CVarRef wrapper,
|
||||
CStrRef option = null_string,
|
||||
CVarRef value = null_variant) {
|
||||
throw NotImplementedException(__func__);
|
||||
}
|
||||
bool f_stream_context_set_option(CObjRef stream_or_context,
|
||||
CVarRef wrapper,
|
||||
CStrRef option = null_string,
|
||||
CVarRef value = null_variant);
|
||||
|
||||
inline bool f_stream_context_set_param(CObjRef stream_or_context,
|
||||
CArrRef params) {
|
||||
throw NotImplementedException(__func__);
|
||||
}
|
||||
bool f_stream_context_set_param(CObjRef stream_or_context,
|
||||
CArrRef params);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Variant f_stream_copy_to_stream(CObjRef source, CObjRef dest,
|
||||
int maxlength = -1, int offset = 0);
|
||||
|
||||
inline bool f_stream_encoding(CObjRef stream, CStrRef encoding = null_string) {
|
||||
throw NotSupportedException(__func__, "stream filter is not supported");
|
||||
}
|
||||
bool f_stream_encoding(CObjRef stream, CStrRef encoding = null_string);
|
||||
|
||||
inline void f_stream_bucket_append(CObjRef brigade, CObjRef bucket) {
|
||||
throw NotSupportedException(__func__, "stream bucket is not supported");
|
||||
}
|
||||
void f_stream_bucket_append(CObjRef brigade, CObjRef bucket);
|
||||
|
||||
inline void f_stream_bucket_prepend(CObjRef brigade, CObjRef bucket) {
|
||||
throw NotSupportedException(__func__, "stream bucket is not supported");
|
||||
}
|
||||
void f_stream_bucket_prepend(CObjRef brigade, CObjRef bucket);
|
||||
|
||||
inline Object f_stream_bucket_make_writeable(CObjRef brigade) {
|
||||
throw NotSupportedException(__func__, "stream bucket is not supported");
|
||||
}
|
||||
Object f_stream_bucket_make_writeable(CObjRef brigade);
|
||||
|
||||
inline Object f_stream_bucket_new(CObjRef stream, CStrRef buffer) {
|
||||
throw NotSupportedException(__func__, "stream bucket is not supported");
|
||||
}
|
||||
Object f_stream_bucket_new(CObjRef stream, CStrRef buffer);
|
||||
|
||||
inline bool f_stream_filter_register(CStrRef filtername, CStrRef classname) {
|
||||
throw NotSupportedException(__func__, "stream filter is not supported");
|
||||
}
|
||||
bool f_stream_filter_register(CStrRef filtername, CStrRef classname);
|
||||
|
||||
inline bool f_stream_filter_remove(CObjRef stream_filter) {
|
||||
throw NotSupportedException(__func__, "stream filter is not supported");
|
||||
}
|
||||
bool f_stream_filter_remove(CObjRef stream_filter);
|
||||
|
||||
inline Object f_stream_filter_append(CObjRef stream, CStrRef filtername,
|
||||
int read_write = 0,
|
||||
CVarRef params = null_variant) {
|
||||
throw NotSupportedException(__func__, "stream filter is not supported");
|
||||
}
|
||||
Object f_stream_filter_append(CObjRef stream, CStrRef filtername,
|
||||
int read_write = 0,
|
||||
CVarRef params = null_variant);
|
||||
|
||||
inline Object f_stream_filter_prepend(CObjRef stream, CStrRef filtername,
|
||||
int read_write = 0,
|
||||
CVarRef params = null_variant) {
|
||||
throw NotSupportedException(__func__, "stream filter is not supported");
|
||||
}
|
||||
Object f_stream_filter_prepend(CObjRef stream, CStrRef filtername,
|
||||
int read_write = 0,
|
||||
CVarRef params = null_variant);
|
||||
|
||||
Variant f_stream_get_contents(CObjRef handle, int maxlen = 0,
|
||||
int offset = 0);
|
||||
|
||||
inline Array f_stream_get_filters() {
|
||||
throw NotSupportedException(__func__, "stream filter is not supported");
|
||||
}
|
||||
Array f_stream_get_filters();
|
||||
|
||||
Variant f_stream_get_line(CObjRef handle, int length = 0,
|
||||
CStrRef ending = null_string);
|
||||
|
||||
inline Variant f_stream_get_meta_data(CObjRef stream) {
|
||||
File *f = stream.getTyped<File>(true, true);
|
||||
if (f) return f->getMetaData();
|
||||
return false;
|
||||
}
|
||||
Variant f_stream_get_meta_data(CObjRef stream);
|
||||
|
||||
inline Array f_stream_get_transports() {
|
||||
return CREATE_VECTOR4("tcp", "udp", "unix", "udg");
|
||||
}
|
||||
Array f_stream_get_transports();
|
||||
|
||||
Array f_stream_get_wrappers();
|
||||
bool f_stream_register_wrapper(CStrRef protocol, CStrRef classname);
|
||||
@@ -136,11 +100,8 @@ bool f_stream_wrapper_register(CStrRef protocol, CStrRef classname);
|
||||
bool f_stream_wrapper_restore(CStrRef protocol);
|
||||
bool f_stream_wrapper_unregister(CStrRef protocol);
|
||||
|
||||
inline String f_stream_resolve_include_path(CStrRef filename,
|
||||
CObjRef context = null_object) {
|
||||
struct stat s;
|
||||
return Eval::resolveVmInclude(filename.get(), "", &s);
|
||||
}
|
||||
String f_stream_resolve_include_path(CStrRef filename,
|
||||
CObjRef context = null_object);
|
||||
|
||||
Variant f_stream_select(VRefParam read, VRefParam write, VRefParam except,
|
||||
CVarRef vtv_sec, int tv_usec = 0);
|
||||
@@ -151,9 +112,7 @@ bool f_stream_set_timeout(CObjRef stream, int seconds, int microseconds = 0);
|
||||
|
||||
int64_t f_stream_set_write_buffer(CObjRef stream, int buffer);
|
||||
|
||||
inline int64_t f_set_file_buffer(CObjRef stream, int buffer) {
|
||||
return f_stream_set_write_buffer(stream, buffer);
|
||||
}
|
||||
int64_t f_set_file_buffer(CObjRef stream, int buffer);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// stream sockets: ext_socket has better implementation of socket functions
|
||||
@@ -169,11 +128,9 @@ Variant f_stream_socket_client(CStrRef remote_socket, VRefParam errnum = uninit_
|
||||
VRefParam errstr = uninit_null(), double timeout = 0.0,
|
||||
int flags = 0, CObjRef context = null_object);
|
||||
|
||||
inline Variant f_stream_socket_enable_crypto(CObjRef stream, bool enable,
|
||||
int crypto_type = 0,
|
||||
CObjRef session_stream = null_object) {
|
||||
throw NotSupportedException(__func__, "no crypto support on sockets");
|
||||
}
|
||||
Variant f_stream_socket_enable_crypto(CObjRef stream, bool enable,
|
||||
int crypto_type = 0,
|
||||
CObjRef session_stream = null_object);
|
||||
|
||||
Variant f_stream_socket_get_name(CObjRef handle, bool want_peer);
|
||||
|
||||
|
||||
@@ -35,6 +35,75 @@ namespace HPHP {
|
||||
static Mutex s_mutex;
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
String f_addcslashes(CStrRef str, CStrRef charlist) {
|
||||
return StringUtil::CEncode(str, charlist);
|
||||
}
|
||||
String f_stripcslashes(CStrRef str) {
|
||||
return StringUtil::CDecode(str);
|
||||
}
|
||||
String f_addslashes(CStrRef str) {
|
||||
return StringUtil::SqlEncode(str);
|
||||
}
|
||||
String f_stripslashes(CStrRef str) {
|
||||
return StringUtil::SqlDecode(str);
|
||||
}
|
||||
String f_bin2hex(CStrRef str) {
|
||||
return StringUtil::HexEncode(str);
|
||||
}
|
||||
Variant f_hex2bin(CStrRef str) {
|
||||
try {
|
||||
return StringUtil::HexDecode(str);
|
||||
} catch (...) {
|
||||
raise_warning("hex2bin: malformed input");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
String f_nl2br(CStrRef str) {
|
||||
return str.replace("\n", "<br />\n");
|
||||
}
|
||||
String f_quotemeta(CStrRef str) {
|
||||
return StringUtil::RegExEncode(str);
|
||||
}
|
||||
String f_str_shuffle(CStrRef str) {
|
||||
return StringUtil::Shuffle(str);
|
||||
}
|
||||
String f_strrev(CStrRef str) {
|
||||
return StringUtil::Reverse(str);
|
||||
}
|
||||
String f_strtolower(CStrRef str) {
|
||||
return StringUtil::ToLower(str);
|
||||
}
|
||||
String f_strtoupper(CStrRef str) {
|
||||
return StringUtil::ToUpper(str, StringUtil::ToUpperAll);
|
||||
}
|
||||
String f_ucfirst(CStrRef str) {
|
||||
return StringUtil::ToUpper(str, StringUtil::ToUpperFirst);
|
||||
}
|
||||
String f_lcfirst(CStrRef str) {
|
||||
return StringUtil::ToLower(str, StringUtil::ToLowerFirst);
|
||||
}
|
||||
String f_ucwords(CStrRef str) {
|
||||
return StringUtil::ToUpper(str, StringUtil::ToUpperWords);
|
||||
}
|
||||
String f_strip_tags(CStrRef str, CStrRef allowable_tags /* = "" */) {
|
||||
return StringUtil::StripHTMLTags(str, allowable_tags);
|
||||
}
|
||||
String f_trim(CStrRef str, CStrRef charlist /* = k_HPHP_TRIM_CHARLIST */) {
|
||||
return StringUtil::Trim(str, StringUtil::TrimBoth, charlist);
|
||||
}
|
||||
String f_ltrim(CStrRef str, CStrRef charlist /* = k_HPHP_TRIM_CHARLIST */) {
|
||||
return StringUtil::Trim(str, StringUtil::TrimLeft, charlist);
|
||||
}
|
||||
String f_rtrim(CStrRef str, CStrRef charlist /* = k_HPHP_TRIM_CHARLIST */) {
|
||||
return StringUtil::Trim(str, StringUtil::TrimRight, charlist);
|
||||
}
|
||||
String f_chop(CStrRef str, CStrRef charlist /* = k_HPHP_TRIM_CHARLIST */) {
|
||||
return StringUtil::Trim(str, StringUtil::TrimRight, charlist);
|
||||
}
|
||||
Variant f_explode(CStrRef delimiter, CStrRef str, int limit /* = 0x7FFFFFFF */) {
|
||||
return StringUtil::Explode(str, delimiter, limit);
|
||||
}
|
||||
|
||||
String f_implode(CVarRef arg1, CVarRef arg2 /* = null_variant */) {
|
||||
Array items;
|
||||
String delim;
|
||||
@@ -51,6 +120,17 @@ String f_implode(CVarRef arg1, CVarRef arg2 /* = null_variant */) {
|
||||
return StringUtil::Implode(items, delim);
|
||||
}
|
||||
|
||||
String f_join(CVarRef glue, CVarRef pieces /* = null_variant */) {
|
||||
return f_implode(glue, pieces);
|
||||
}
|
||||
Variant f_str_split(CStrRef str, int split_length /* = 1 */) {
|
||||
return StringUtil::Split(str, split_length);
|
||||
}
|
||||
Variant f_chunk_split(CStrRef body, int chunklen /* = 76 */,
|
||||
CStrRef end /* = "\r\n" */) {
|
||||
return StringUtil::ChunkSplit(body, chunklen, end);
|
||||
}
|
||||
|
||||
class TokenizerData : public RequestEventHandler {
|
||||
public:
|
||||
String str;
|
||||
@@ -250,9 +330,53 @@ Variant f_substr_replace(CVarRef str, CVarRef replacement, CVarRef start,
|
||||
return ret;
|
||||
}
|
||||
|
||||
Variant f_substr(CStrRef str, int start, int length /* = 0x7FFFFFFF */) {
|
||||
String ret = str.substr(start, length, true);
|
||||
if (ret.isNull()) return false;
|
||||
return ret;
|
||||
}
|
||||
String f_str_pad(CStrRef input, int pad_length, CStrRef pad_string /* = " " */,
|
||||
int pad_type /* = k_STR_PAD_RIGHT */) {
|
||||
return StringUtil::Pad(input, pad_length, pad_string,
|
||||
(StringUtil::PadType)pad_type);
|
||||
}
|
||||
String f_str_repeat(CStrRef input, int multiplier) {
|
||||
return StringUtil::Repeat(input, multiplier);
|
||||
}
|
||||
Variant f_wordwrap(CStrRef str, int width /* = 75 */, CStrRef wordbreak /* = "\n" */,
|
||||
bool cut /* = false */) {
|
||||
String ret = StringUtil::WordWrap(str, width, wordbreak, cut);
|
||||
if (ret.isNull()) return false;
|
||||
return ret;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Variant f_printf(int _argc, CStrRef format, CArrRef _argv /* = null_array */) {
|
||||
int len = 0; char *output = string_printf(format.data(), format.size(),
|
||||
_argv, &len);
|
||||
if (output == NULL) return false;
|
||||
echo(output); free(output);
|
||||
return len;
|
||||
}
|
||||
Variant f_vprintf(CStrRef format, CArrRef args) {
|
||||
int len = 0; char *output = string_printf(format.data(), format.size(),
|
||||
args, &len);
|
||||
if (output == NULL) return false;
|
||||
echo(output); free(output);
|
||||
return len;
|
||||
}
|
||||
Variant f_sprintf(int _argc, CStrRef format, CArrRef _argv /* = null_array */) {
|
||||
char *output = string_printf(format.data(), format.size(), _argv, NULL);
|
||||
if (output == NULL) return false;
|
||||
return String(output, AttachString);
|
||||
}
|
||||
Variant f_vsprintf(CStrRef format, CArrRef args) {
|
||||
char *output = string_printf(format.data(), format.size(), args, NULL);
|
||||
if (output == NULL) return false;
|
||||
return String(output, AttachString);
|
||||
}
|
||||
|
||||
Variant f_sscanf(int _argc, CStrRef str, CStrRef format, CArrRef _argv /* = null_array */) {
|
||||
Variant ret;
|
||||
int result;
|
||||
@@ -271,6 +395,19 @@ Variant f_sscanf(int _argc, CStrRef str, CStrRef format, CArrRef _argv /* = null
|
||||
return ret;
|
||||
}
|
||||
|
||||
String f_chr(int64_t ascii) {
|
||||
char buf[2]; buf[0] = ascii; buf[1] = 0;
|
||||
return String(buf, 1, CopyString);
|
||||
}
|
||||
int64_t f_ord(CStrRef str) {
|
||||
return (int64_t)(unsigned char)(*((const char *)str));
|
||||
}
|
||||
Variant f_money_format(CStrRef format, double number) {
|
||||
String s = StringUtil::MoneyFormat(format, number);
|
||||
if (s.isNull()) return false;
|
||||
return s;
|
||||
}
|
||||
|
||||
String f_number_format(double number, int decimals /* = 0 */,
|
||||
CStrRef dec_point /* = "." */,
|
||||
CStrRef thousands_sep /* = "," */) {
|
||||
@@ -295,6 +432,32 @@ String f_number_format(double number, int decimals /* = 0 */,
|
||||
return String(ret, AttachString);
|
||||
}
|
||||
|
||||
int64_t f_strcmp(CStrRef str1, CStrRef str2) {
|
||||
return string_strcmp(str1.data(), str1.size(), str2.data(), str2.size());
|
||||
}
|
||||
int64_t f_strncmp(CStrRef str1, CStrRef str2, int len) {
|
||||
return string_strncmp(str1.data(), str1.size(), str2.data(), str2.size(),
|
||||
len);
|
||||
}
|
||||
int64_t f_strnatcmp(CStrRef str1, CStrRef str2) {
|
||||
return string_natural_cmp(str1.data(), str1.size(), str2.data(), str2.size(),
|
||||
false);
|
||||
}
|
||||
int64_t f_strcasecmp(CStrRef str1, CStrRef str2) {
|
||||
return bstrcasecmp(str1.data(), str1.size(), str2.data(), str2.size());
|
||||
}
|
||||
int64_t f_strncasecmp(CStrRef str1, CStrRef str2, int len) {
|
||||
return string_strncasecmp(str1.data(), str1.size(), str2.data(), str2.size(),
|
||||
len);
|
||||
}
|
||||
int64_t f_strnatcasecmp(CStrRef str1, CStrRef str2) {
|
||||
return string_natural_cmp(str1.data(), str1.size(), str2.data(), str2.size(),
|
||||
true);
|
||||
}
|
||||
int64_t f_strcoll(CStrRef str1, CStrRef str2) {
|
||||
return strcoll(str1, str2);
|
||||
}
|
||||
|
||||
Variant f_substr_compare(CStrRef main_str, CStrRef str, int offset,
|
||||
int length /* = INT_MAX */,
|
||||
bool case_insensitivity /* = false */) {
|
||||
@@ -361,6 +524,10 @@ Variant f_strpbrk(CStrRef haystack, CStrRef char_list) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Variant f_strchr(CStrRef haystack, CVarRef needle) {
|
||||
return f_strstr(haystack, needle);
|
||||
}
|
||||
|
||||
Variant f_strpos(CStrRef haystack, CVarRef needle, int offset /* = 0 */) {
|
||||
if (offset < 0 || offset > haystack.size()) {
|
||||
raise_warning("Offset not contained in string");
|
||||
@@ -493,6 +660,26 @@ Variant f_strcspn(CStrRef str1, CStrRef str2, int start /* = 0 */,
|
||||
return length;
|
||||
}
|
||||
|
||||
Variant f_strlen(CVarRef vstr) {
|
||||
Variant::TypedValueAccessor tva = vstr.getTypedAccessor();
|
||||
switch (Variant::GetAccessorType(tva)) {
|
||||
case KindOfString:
|
||||
case KindOfStaticString:
|
||||
return Variant(Variant::GetStringData(tva)->size());
|
||||
case KindOfArray:
|
||||
raise_warning("strlen() expects parameter 1 to be string, array given");
|
||||
return uninit_null();
|
||||
case KindOfObject:
|
||||
if (!f_method_exists(vstr, "__toString")) {
|
||||
raise_warning("strlen() expects parameter 1 to be string, object given");
|
||||
return uninit_null();
|
||||
} //else fallback to default
|
||||
default:
|
||||
CStrRef str = vstr.toString();
|
||||
return Variant(str.size());
|
||||
}
|
||||
}
|
||||
|
||||
Variant f_count_chars(CStrRef str, int64_t mode /* = 0 */) {
|
||||
int chars[256];
|
||||
memset((void*)chars, 0, sizeof(chars));
|
||||
@@ -629,6 +816,100 @@ Variant f_str_word_count(CStrRef str, int64_t format /* = 0 */,
|
||||
return ret.isNull() ? Array::Create() : ret;
|
||||
}
|
||||
|
||||
int64_t f_levenshtein(CStrRef str1, CStrRef str2, int cost_ins /* = 1 */,
|
||||
int cost_rep /* = 1 */, int cost_del /* = 1 */) {
|
||||
return string_levenshtein(str1, str1.size(), str2, str2.size(),
|
||||
cost_ins, cost_rep, cost_del);
|
||||
}
|
||||
int64_t f_similar_text(CStrRef first, CStrRef second,
|
||||
VRefParam percent /* = uninit_null() */) {
|
||||
float p;
|
||||
int ret = string_similar_text(first, first.size(), second, second.size(),
|
||||
&p);
|
||||
percent = p;
|
||||
return ret;
|
||||
}
|
||||
Variant f_soundex(CStrRef str) {
|
||||
if (str.empty()) return false;
|
||||
return String(string_soundex(str), AttachString);
|
||||
}
|
||||
Variant f_metaphone(CStrRef str, int phones /* = 0 */) {
|
||||
char *ret = string_metaphone(str, str.size(), 0, 1);
|
||||
if (ret) {
|
||||
return String(ret, AttachString);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
String f_html_entity_decode(CStrRef str, int quote_style /* = k_ENT_COMPAT */,
|
||||
CStrRef charset /* = "ISO-8859-1" */) {
|
||||
const char *scharset = charset.data();
|
||||
if (!*scharset) scharset = "UTF-8";
|
||||
return StringUtil::HtmlDecode(str, (StringUtil::QuoteStyle)quote_style,
|
||||
scharset, true);
|
||||
}
|
||||
String f_htmlentities(CStrRef str, int quote_style /* = k_ENT_COMPAT */,
|
||||
CStrRef charset /* = "ISO-8859-1" */,
|
||||
bool double_encode /* = true */) {
|
||||
// dropping double_encode parameters and see runtime/base/zend_html.h
|
||||
const char *scharset = charset.data();
|
||||
if (!*scharset) scharset = "UTF-8";
|
||||
return StringUtil::HtmlEncode(str, (StringUtil::QuoteStyle)quote_style,
|
||||
scharset, true);
|
||||
}
|
||||
String f_htmlspecialchars_decode(CStrRef str,
|
||||
int quote_style /* = k_ENT_COMPAT */) {
|
||||
return StringUtil::HtmlDecode(str, (StringUtil::QuoteStyle)quote_style,
|
||||
"UTF-8", false);
|
||||
}
|
||||
String f_htmlspecialchars(CStrRef str, int quote_style /* = k_ENT_COMPAT */,
|
||||
CStrRef charset /* = "ISO-8859-1" */,
|
||||
bool double_encode /* = true */) {
|
||||
// dropping double_encode parameters and see runtime/base/zend_html.h
|
||||
const char *scharset = charset.data();
|
||||
if (!*scharset) scharset = "UTF-8";
|
||||
return StringUtil::HtmlEncode(str, (StringUtil::QuoteStyle)quote_style,
|
||||
scharset, false);
|
||||
}
|
||||
String f_fb_htmlspecialchars(CStrRef str, int quote_style /* = k_ENT_COMPAT */,
|
||||
CStrRef charset /* = "ISO-8859-1" */,
|
||||
CArrRef extra /* = Array() */) {
|
||||
return StringUtil::HtmlEncodeExtra(str, (StringUtil::QuoteStyle)quote_style,
|
||||
charset.data(), false, extra);
|
||||
}
|
||||
String f_quoted_printable_encode(CStrRef str) {
|
||||
return StringUtil::QuotedPrintableEncode(str);
|
||||
}
|
||||
String f_quoted_printable_decode(CStrRef str) {
|
||||
return StringUtil::QuotedPrintableDecode(str);
|
||||
}
|
||||
Variant f_convert_uudecode(CStrRef data) {
|
||||
String ret = StringUtil::UUDecode(data);
|
||||
if (ret.isNull()) {
|
||||
return false; // bad format
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
Variant f_convert_uuencode(CStrRef data) {
|
||||
if (data.empty()) return false;
|
||||
return StringUtil::UUEncode(data);
|
||||
}
|
||||
String f_str_rot13(CStrRef str) {
|
||||
return StringUtil::ROT13(str);
|
||||
}
|
||||
int64_t f_crc32(CStrRef str) {
|
||||
return (uint32_t)StringUtil::CRC32(str);
|
||||
}
|
||||
String f_crypt(CStrRef str, CStrRef salt /* = "" */) {
|
||||
return StringUtil::Crypt(str, salt);
|
||||
}
|
||||
String f_md5(CStrRef str, bool raw_output /* = false */) {
|
||||
return StringUtil::MD5(str, raw_output);
|
||||
}
|
||||
String f_sha1(CStrRef str, bool raw_output /* = false */) {
|
||||
return StringUtil::SHA1(str, raw_output);
|
||||
}
|
||||
|
||||
Variant f_strtr(CStrRef str, CVarRef from, CVarRef to /* = null_variant */) {
|
||||
if (str.empty()) {
|
||||
return str;
|
||||
@@ -781,6 +1062,10 @@ Array f_localeconv() {
|
||||
return ret;
|
||||
}
|
||||
|
||||
String f_nl_langinfo(int item) {
|
||||
return nl_langinfo(item);
|
||||
}
|
||||
|
||||
String f_convert_cyr_string(CStrRef str, CStrRef from, CStrRef to) {
|
||||
char ch_from = ((const char *)from)[0];
|
||||
char ch_to = ((const char *)to)[0];
|
||||
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -16,6 +16,245 @@
|
||||
*/
|
||||
namespace HPHP {
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_addcslashes(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP13f_addcslashesERKNS_6StringES2_
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
charlist => rdx
|
||||
*/
|
||||
|
||||
Value* fh_addcslashes(Value* _rv, Value* str, Value* charlist) asm("_ZN4HPHP13f_addcslashesERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_stripcslashes(HPHP::String const&)
|
||||
_ZN4HPHP15f_stripcslashesERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_stripcslashes(Value* _rv, Value* str) asm("_ZN4HPHP15f_stripcslashesERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_addslashes(HPHP::String const&)
|
||||
_ZN4HPHP12f_addslashesERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_addslashes(Value* _rv, Value* str) asm("_ZN4HPHP12f_addslashesERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_stripslashes(HPHP::String const&)
|
||||
_ZN4HPHP14f_stripslashesERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_stripslashes(Value* _rv, Value* str) asm("_ZN4HPHP14f_stripslashesERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_bin2hex(HPHP::String const&)
|
||||
_ZN4HPHP9f_bin2hexERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_bin2hex(Value* _rv, Value* str) asm("_ZN4HPHP9f_bin2hexERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_hex2bin(HPHP::String const&)
|
||||
_ZN4HPHP9f_hex2binERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_hex2bin(TypedValue* _rv, Value* str) asm("_ZN4HPHP9f_hex2binERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_nl2br(HPHP::String const&)
|
||||
_ZN4HPHP7f_nl2brERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_nl2br(Value* _rv, Value* str) asm("_ZN4HPHP7f_nl2brERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_quotemeta(HPHP::String const&)
|
||||
_ZN4HPHP11f_quotemetaERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_quotemeta(Value* _rv, Value* str) asm("_ZN4HPHP11f_quotemetaERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_str_shuffle(HPHP::String const&)
|
||||
_ZN4HPHP13f_str_shuffleERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_str_shuffle(Value* _rv, Value* str) asm("_ZN4HPHP13f_str_shuffleERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_strrev(HPHP::String const&)
|
||||
_ZN4HPHP8f_strrevERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_strrev(Value* _rv, Value* str) asm("_ZN4HPHP8f_strrevERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_strtolower(HPHP::String const&)
|
||||
_ZN4HPHP12f_strtolowerERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_strtolower(Value* _rv, Value* str) asm("_ZN4HPHP12f_strtolowerERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_strtoupper(HPHP::String const&)
|
||||
_ZN4HPHP12f_strtoupperERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_strtoupper(Value* _rv, Value* str) asm("_ZN4HPHP12f_strtoupperERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_ucfirst(HPHP::String const&)
|
||||
_ZN4HPHP9f_ucfirstERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_ucfirst(Value* _rv, Value* str) asm("_ZN4HPHP9f_ucfirstERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_lcfirst(HPHP::String const&)
|
||||
_ZN4HPHP9f_lcfirstERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_lcfirst(Value* _rv, Value* str) asm("_ZN4HPHP9f_lcfirstERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_ucwords(HPHP::String const&)
|
||||
_ZN4HPHP9f_ucwordsERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_ucwords(Value* _rv, Value* str) asm("_ZN4HPHP9f_ucwordsERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_strip_tags(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP12f_strip_tagsERKNS_6StringES2_
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
allowable_tags => rdx
|
||||
*/
|
||||
|
||||
Value* fh_strip_tags(Value* _rv, Value* str, Value* allowable_tags) asm("_ZN4HPHP12f_strip_tagsERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_trim(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP6f_trimERKNS_6StringES2_
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
charlist => rdx
|
||||
*/
|
||||
|
||||
Value* fh_trim(Value* _rv, Value* str, Value* charlist) asm("_ZN4HPHP6f_trimERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_ltrim(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP7f_ltrimERKNS_6StringES2_
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
charlist => rdx
|
||||
*/
|
||||
|
||||
Value* fh_ltrim(Value* _rv, Value* str, Value* charlist) asm("_ZN4HPHP7f_ltrimERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_rtrim(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP7f_rtrimERKNS_6StringES2_
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
charlist => rdx
|
||||
*/
|
||||
|
||||
Value* fh_rtrim(Value* _rv, Value* str, Value* charlist) asm("_ZN4HPHP7f_rtrimERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_chop(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP6f_chopERKNS_6StringES2_
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
charlist => rdx
|
||||
*/
|
||||
|
||||
Value* fh_chop(Value* _rv, Value* str, Value* charlist) asm("_ZN4HPHP6f_chopERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_explode(HPHP::String const&, HPHP::String const&, int)
|
||||
_ZN4HPHP9f_explodeERKNS_6StringES2_i
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
delimiter => rsi
|
||||
str => rdx
|
||||
limit => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_explode(TypedValue* _rv, Value* delimiter, Value* str, int limit) asm("_ZN4HPHP9f_explodeERKNS_6StringES2_i");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_implode(HPHP::Variant const&, HPHP::Variant const&)
|
||||
_ZN4HPHP9f_implodeERKNS_7VariantES2_
|
||||
@@ -28,6 +267,43 @@ arg2 => rdx
|
||||
|
||||
Value* fh_implode(Value* _rv, TypedValue* arg1, TypedValue* arg2) asm("_ZN4HPHP9f_implodeERKNS_7VariantES2_");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_join(HPHP::Variant const&, HPHP::Variant const&)
|
||||
_ZN4HPHP6f_joinERKNS_7VariantES2_
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
glue => rsi
|
||||
pieces => rdx
|
||||
*/
|
||||
|
||||
Value* fh_join(Value* _rv, TypedValue* glue, TypedValue* pieces) asm("_ZN4HPHP6f_joinERKNS_7VariantES2_");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_str_split(HPHP::String const&, int)
|
||||
_ZN4HPHP11f_str_splitERKNS_6StringEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
split_length => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_str_split(TypedValue* _rv, Value* str, int split_length) asm("_ZN4HPHP11f_str_splitERKNS_6StringEi");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_chunk_split(HPHP::String const&, int, HPHP::String const&)
|
||||
_ZN4HPHP13f_chunk_splitERKNS_6StringEiS2_
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
body => rsi
|
||||
chunklen => rdx
|
||||
end => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_chunk_split(TypedValue* _rv, Value* body, int chunklen, Value* end) asm("_ZN4HPHP13f_chunk_splitERKNS_6StringEiS2_");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_strtok(HPHP::String const&, HPHP::Variant const&)
|
||||
_ZN4HPHP8f_strtokERKNS_6StringERKNS_7VariantE
|
||||
@@ -82,6 +358,227 @@ length => r8
|
||||
|
||||
TypedValue* fh_substr_replace(TypedValue* _rv, TypedValue* str, TypedValue* replacement, TypedValue* start, TypedValue* length) asm("_ZN4HPHP16f_substr_replaceERKNS_7VariantES2_S2_S2_");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_substr(HPHP::String const&, int, int)
|
||||
_ZN4HPHP8f_substrERKNS_6StringEii
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
start => rdx
|
||||
length => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_substr(TypedValue* _rv, Value* str, int start, int length) asm("_ZN4HPHP8f_substrERKNS_6StringEii");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_str_pad(HPHP::String const&, int, HPHP::String const&, int)
|
||||
_ZN4HPHP9f_str_padERKNS_6StringEiS2_i
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
input => rsi
|
||||
pad_length => rdx
|
||||
pad_string => rcx
|
||||
pad_type => r8
|
||||
*/
|
||||
|
||||
Value* fh_str_pad(Value* _rv, Value* input, int pad_length, Value* pad_string, int pad_type) asm("_ZN4HPHP9f_str_padERKNS_6StringEiS2_i");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_str_repeat(HPHP::String const&, int)
|
||||
_ZN4HPHP12f_str_repeatERKNS_6StringEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
input => rsi
|
||||
multiplier => rdx
|
||||
*/
|
||||
|
||||
Value* fh_str_repeat(Value* _rv, Value* input, int multiplier) asm("_ZN4HPHP12f_str_repeatERKNS_6StringEi");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_wordwrap(HPHP::String const&, int, HPHP::String const&, bool)
|
||||
_ZN4HPHP10f_wordwrapERKNS_6StringEiS2_b
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
width => rdx
|
||||
wordbreak => rcx
|
||||
cut => r8
|
||||
*/
|
||||
|
||||
TypedValue* fh_wordwrap(TypedValue* _rv, Value* str, int width, Value* wordbreak, bool cut) asm("_ZN4HPHP10f_wordwrapERKNS_6StringEiS2_b");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_html_entity_decode(HPHP::String const&, int, HPHP::String const&)
|
||||
_ZN4HPHP20f_html_entity_decodeERKNS_6StringEiS2_
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
quote_style => rdx
|
||||
charset => rcx
|
||||
*/
|
||||
|
||||
Value* fh_html_entity_decode(Value* _rv, Value* str, int quote_style, Value* charset) asm("_ZN4HPHP20f_html_entity_decodeERKNS_6StringEiS2_");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_htmlentities(HPHP::String const&, int, HPHP::String const&, bool)
|
||||
_ZN4HPHP14f_htmlentitiesERKNS_6StringEiS2_b
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
quote_style => rdx
|
||||
charset => rcx
|
||||
double_encode => r8
|
||||
*/
|
||||
|
||||
Value* fh_htmlentities(Value* _rv, Value* str, int quote_style, Value* charset, bool double_encode) asm("_ZN4HPHP14f_htmlentitiesERKNS_6StringEiS2_b");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_htmlspecialchars_decode(HPHP::String const&, int)
|
||||
_ZN4HPHP25f_htmlspecialchars_decodeERKNS_6StringEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
quote_style => rdx
|
||||
*/
|
||||
|
||||
Value* fh_htmlspecialchars_decode(Value* _rv, Value* str, int quote_style) asm("_ZN4HPHP25f_htmlspecialchars_decodeERKNS_6StringEi");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_htmlspecialchars(HPHP::String const&, int, HPHP::String const&, bool)
|
||||
_ZN4HPHP18f_htmlspecialcharsERKNS_6StringEiS2_b
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
quote_style => rdx
|
||||
charset => rcx
|
||||
double_encode => r8
|
||||
*/
|
||||
|
||||
Value* fh_htmlspecialchars(Value* _rv, Value* str, int quote_style, Value* charset, bool double_encode) asm("_ZN4HPHP18f_htmlspecialcharsERKNS_6StringEiS2_b");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_fb_htmlspecialchars(HPHP::String const&, int, HPHP::String const&, HPHP::Array const&)
|
||||
_ZN4HPHP21f_fb_htmlspecialcharsERKNS_6StringEiS2_RKNS_5ArrayE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
quote_style => rdx
|
||||
charset => rcx
|
||||
extra => r8
|
||||
*/
|
||||
|
||||
Value* fh_fb_htmlspecialchars(Value* _rv, Value* str, int quote_style, Value* charset, Value* extra) asm("_ZN4HPHP21f_fb_htmlspecialcharsERKNS_6StringEiS2_RKNS_5ArrayE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_quoted_printable_encode(HPHP::String const&)
|
||||
_ZN4HPHP25f_quoted_printable_encodeERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_quoted_printable_encode(Value* _rv, Value* str) asm("_ZN4HPHP25f_quoted_printable_encodeERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_quoted_printable_decode(HPHP::String const&)
|
||||
_ZN4HPHP25f_quoted_printable_decodeERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_quoted_printable_decode(Value* _rv, Value* str) asm("_ZN4HPHP25f_quoted_printable_decodeERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_convert_uudecode(HPHP::String const&)
|
||||
_ZN4HPHP18f_convert_uudecodeERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
data => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_convert_uudecode(TypedValue* _rv, Value* data) asm("_ZN4HPHP18f_convert_uudecodeERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_convert_uuencode(HPHP::String const&)
|
||||
_ZN4HPHP18f_convert_uuencodeERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
data => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_convert_uuencode(TypedValue* _rv, Value* data) asm("_ZN4HPHP18f_convert_uuencodeERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_str_rot13(HPHP::String const&)
|
||||
_ZN4HPHP11f_str_rot13ERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_str_rot13(Value* _rv, Value* str) asm("_ZN4HPHP11f_str_rot13ERKNS_6StringE");
|
||||
|
||||
/*
|
||||
long HPHP::f_crc32(HPHP::String const&)
|
||||
_ZN4HPHP7f_crc32ERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
str => rdi
|
||||
*/
|
||||
|
||||
long fh_crc32(Value* str) asm("_ZN4HPHP7f_crc32ERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_crypt(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP7f_cryptERKNS_6StringES2_
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
salt => rdx
|
||||
*/
|
||||
|
||||
Value* fh_crypt(Value* _rv, Value* str, Value* salt) asm("_ZN4HPHP7f_cryptERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_md5(HPHP::String const&, bool)
|
||||
_ZN4HPHP5f_md5ERKNS_6StringEb
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
raw_output => rdx
|
||||
*/
|
||||
|
||||
Value* fh_md5(Value* _rv, Value* str, bool raw_output) asm("_ZN4HPHP5f_md5ERKNS_6StringEb");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_sha1(HPHP::String const&, bool)
|
||||
_ZN4HPHP6f_sha1ERKNS_6StringEb
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
raw_output => rdx
|
||||
*/
|
||||
|
||||
Value* fh_sha1(Value* _rv, Value* str, bool raw_output) asm("_ZN4HPHP6f_sha1ERKNS_6StringEb");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_strtr(HPHP::String const&, HPHP::Variant const&, HPHP::Variant const&)
|
||||
_ZN4HPHP7f_strtrERKNS_6StringERKNS_7VariantES5_
|
||||
@@ -168,6 +665,67 @@ _rv => rdi
|
||||
|
||||
Value* fh_localeconv(Value* _rv) asm("_ZN4HPHP12f_localeconvEv");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_nl_langinfo(int)
|
||||
_ZN4HPHP13f_nl_langinfoEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
item => rsi
|
||||
*/
|
||||
|
||||
Value* fh_nl_langinfo(Value* _rv, int item) asm("_ZN4HPHP13f_nl_langinfoEi");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_printf(int, HPHP::String const&, HPHP::Array const&)
|
||||
_ZN4HPHP8f_printfEiRKNS_6StringERKNS_5ArrayE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
_argc => rsi
|
||||
format => rdx
|
||||
_argv => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_printf(TypedValue* _rv, int64_t _argc, Value* format, Value* _argv) asm("_ZN4HPHP8f_printfEiRKNS_6StringERKNS_5ArrayE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_vprintf(HPHP::String const&, HPHP::Array const&)
|
||||
_ZN4HPHP9f_vprintfERKNS_6StringERKNS_5ArrayE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
format => rsi
|
||||
args => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_vprintf(TypedValue* _rv, Value* format, Value* args) asm("_ZN4HPHP9f_vprintfERKNS_6StringERKNS_5ArrayE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_sprintf(int, HPHP::String const&, HPHP::Array const&)
|
||||
_ZN4HPHP9f_sprintfEiRKNS_6StringERKNS_5ArrayE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
_argc => rsi
|
||||
format => rdx
|
||||
_argv => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_sprintf(TypedValue* _rv, int64_t _argc, Value* format, Value* _argv) asm("_ZN4HPHP9f_sprintfEiRKNS_6StringERKNS_5ArrayE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_vsprintf(HPHP::String const&, HPHP::Array const&)
|
||||
_ZN4HPHP10f_vsprintfERKNS_6StringERKNS_5ArrayE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
format => rsi
|
||||
args => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_vsprintf(TypedValue* _rv, Value* format, Value* args) asm("_ZN4HPHP10f_vsprintfERKNS_6StringERKNS_5ArrayE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_sscanf(int, HPHP::String const&, HPHP::String const&, HPHP::Array const&)
|
||||
_ZN4HPHP8f_sscanfEiRKNS_6StringES2_RKNS_5ArrayE
|
||||
@@ -182,6 +740,39 @@ _argv => r8
|
||||
|
||||
TypedValue* fh_sscanf(TypedValue* _rv, int64_t _argc, Value* str, Value* format, Value* _argv) asm("_ZN4HPHP8f_sscanfEiRKNS_6StringES2_RKNS_5ArrayE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_chr(long)
|
||||
_ZN4HPHP5f_chrEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
ascii => rsi
|
||||
*/
|
||||
|
||||
Value* fh_chr(Value* _rv, long ascii) asm("_ZN4HPHP5f_chrEl");
|
||||
|
||||
/*
|
||||
long HPHP::f_ord(HPHP::String const&)
|
||||
_ZN4HPHP5f_ordERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
str => rdi
|
||||
*/
|
||||
|
||||
long fh_ord(Value* str) asm("_ZN4HPHP5f_ordERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_money_format(HPHP::String const&, double)
|
||||
_ZN4HPHP14f_money_formatERKNS_6StringEd
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
format => rsi
|
||||
number => xmm0
|
||||
*/
|
||||
|
||||
TypedValue* fh_money_format(TypedValue* _rv, Value* format, double number) asm("_ZN4HPHP14f_money_formatERKNS_6StringEd");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_number_format(double, int, HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP15f_number_formatEdiRKNS_6StringES2_
|
||||
@@ -196,6 +787,85 @@ thousands_sep => rcx
|
||||
|
||||
Value* fh_number_format(Value* _rv, double number, int decimals, Value* dec_point, Value* thousands_sep) asm("_ZN4HPHP15f_number_formatEdiRKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
long HPHP::f_strcmp(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP8f_strcmpERKNS_6StringES2_
|
||||
|
||||
(return value) => rax
|
||||
str1 => rdi
|
||||
str2 => rsi
|
||||
*/
|
||||
|
||||
long fh_strcmp(Value* str1, Value* str2) asm("_ZN4HPHP8f_strcmpERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
long HPHP::f_strncmp(HPHP::String const&, HPHP::String const&, int)
|
||||
_ZN4HPHP9f_strncmpERKNS_6StringES2_i
|
||||
|
||||
(return value) => rax
|
||||
str1 => rdi
|
||||
str2 => rsi
|
||||
len => rdx
|
||||
*/
|
||||
|
||||
long fh_strncmp(Value* str1, Value* str2, int len) asm("_ZN4HPHP9f_strncmpERKNS_6StringES2_i");
|
||||
|
||||
/*
|
||||
long HPHP::f_strnatcmp(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP11f_strnatcmpERKNS_6StringES2_
|
||||
|
||||
(return value) => rax
|
||||
str1 => rdi
|
||||
str2 => rsi
|
||||
*/
|
||||
|
||||
long fh_strnatcmp(Value* str1, Value* str2) asm("_ZN4HPHP11f_strnatcmpERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
long HPHP::f_strcasecmp(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP12f_strcasecmpERKNS_6StringES2_
|
||||
|
||||
(return value) => rax
|
||||
str1 => rdi
|
||||
str2 => rsi
|
||||
*/
|
||||
|
||||
long fh_strcasecmp(Value* str1, Value* str2) asm("_ZN4HPHP12f_strcasecmpERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
long HPHP::f_strncasecmp(HPHP::String const&, HPHP::String const&, int)
|
||||
_ZN4HPHP13f_strncasecmpERKNS_6StringES2_i
|
||||
|
||||
(return value) => rax
|
||||
str1 => rdi
|
||||
str2 => rsi
|
||||
len => rdx
|
||||
*/
|
||||
|
||||
long fh_strncasecmp(Value* str1, Value* str2, int len) asm("_ZN4HPHP13f_strncasecmpERKNS_6StringES2_i");
|
||||
|
||||
/*
|
||||
long HPHP::f_strnatcasecmp(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP15f_strnatcasecmpERKNS_6StringES2_
|
||||
|
||||
(return value) => rax
|
||||
str1 => rdi
|
||||
str2 => rsi
|
||||
*/
|
||||
|
||||
long fh_strnatcasecmp(Value* str1, Value* str2) asm("_ZN4HPHP15f_strnatcasecmpERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
long HPHP::f_strcoll(HPHP::String const&, HPHP::String const&)
|
||||
_ZN4HPHP9f_strcollERKNS_6StringES2_
|
||||
|
||||
(return value) => rax
|
||||
str1 => rdi
|
||||
str2 => rsi
|
||||
*/
|
||||
|
||||
long fh_strcoll(Value* str1, Value* str2) asm("_ZN4HPHP9f_strcollERKNS_6StringES2_");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_substr_compare(HPHP::String const&, HPHP::String const&, int, int, bool)
|
||||
_ZN4HPHP16f_substr_compareERKNS_6StringES2_iib
|
||||
@@ -211,6 +881,18 @@ case_insensitivity => r9
|
||||
|
||||
TypedValue* fh_substr_compare(TypedValue* _rv, Value* main_str, Value* str, int offset, int length, bool case_insensitivity) asm("_ZN4HPHP16f_substr_compareERKNS_6StringES2_iib");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_strchr(HPHP::String const&, HPHP::Variant const&)
|
||||
_ZN4HPHP8f_strchrERKNS_6StringERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
haystack => rsi
|
||||
needle => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_strchr(TypedValue* _rv, Value* haystack, TypedValue* needle) asm("_ZN4HPHP8f_strchrERKNS_6StringERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_strrchr(HPHP::String const&, HPHP::Variant const&)
|
||||
_ZN4HPHP9f_strrchrERKNS_6StringERKNS_7VariantE
|
||||
@@ -354,6 +1036,17 @@ length => r8
|
||||
|
||||
TypedValue* fh_strcspn(TypedValue* _rv, Value* str1, Value* str2, int start, int length) asm("_ZN4HPHP9f_strcspnERKNS_6StringES2_ii");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_strlen(HPHP::Variant const&)
|
||||
_ZN4HPHP8f_strlenERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_strlen(TypedValue* _rv, TypedValue* str) asm("_ZN4HPHP8f_strlenERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_count_chars(HPHP::String const&, long)
|
||||
_ZN4HPHP13f_count_charsERKNS_6StringEl
|
||||
@@ -379,6 +1072,55 @@ charlist => rcx
|
||||
|
||||
TypedValue* fh_str_word_count(TypedValue* _rv, Value* str, long format, Value* charlist) asm("_ZN4HPHP16f_str_word_countERKNS_6StringElS2_");
|
||||
|
||||
/*
|
||||
long HPHP::f_levenshtein(HPHP::String const&, HPHP::String const&, int, int, int)
|
||||
_ZN4HPHP13f_levenshteinERKNS_6StringES2_iii
|
||||
|
||||
(return value) => rax
|
||||
str1 => rdi
|
||||
str2 => rsi
|
||||
cost_ins => rdx
|
||||
cost_rep => rcx
|
||||
cost_del => r8
|
||||
*/
|
||||
|
||||
long fh_levenshtein(Value* str1, Value* str2, int cost_ins, int cost_rep, int cost_del) asm("_ZN4HPHP13f_levenshteinERKNS_6StringES2_iii");
|
||||
|
||||
/*
|
||||
long HPHP::f_similar_text(HPHP::String const&, HPHP::String const&, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP14f_similar_textERKNS_6StringES2_RKNS_14VRefParamValueE
|
||||
|
||||
(return value) => rax
|
||||
first => rdi
|
||||
second => rsi
|
||||
percent => rdx
|
||||
*/
|
||||
|
||||
long fh_similar_text(Value* first, Value* second, TypedValue* percent) asm("_ZN4HPHP14f_similar_textERKNS_6StringES2_RKNS_14VRefParamValueE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_soundex(HPHP::String const&)
|
||||
_ZN4HPHP9f_soundexERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_soundex(TypedValue* _rv, Value* str) asm("_ZN4HPHP9f_soundexERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_metaphone(HPHP::String const&, int)
|
||||
_ZN4HPHP11f_metaphoneERKNS_6StringEi
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
phones => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_metaphone(TypedValue* _rv, Value* str, int phones) asm("_ZN4HPHP11f_metaphoneERKNS_6StringEi");
|
||||
|
||||
/*
|
||||
void HPHP::f_parse_str(HPHP::String const&, HPHP::VRefParamValue const&)
|
||||
_ZN4HPHP11f_parse_strERKNS_6StringERKNS_14VRefParamValueE
|
||||
|
||||
+74
-273
@@ -30,87 +30,34 @@ namespace HPHP {
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// transformations and manipulations
|
||||
|
||||
inline String f_addcslashes(CStrRef str, CStrRef charlist) {
|
||||
return StringUtil::CEncode(str, charlist);
|
||||
}
|
||||
inline String f_stripcslashes(CStrRef str) {
|
||||
return StringUtil::CDecode(str);
|
||||
}
|
||||
inline String f_addslashes(CStrRef str) {
|
||||
return StringUtil::SqlEncode(str);
|
||||
}
|
||||
inline String f_stripslashes(CStrRef str) {
|
||||
return StringUtil::SqlDecode(str);
|
||||
}
|
||||
inline String f_bin2hex(CStrRef str) {
|
||||
return StringUtil::HexEncode(str);
|
||||
}
|
||||
inline Variant f_hex2bin(CStrRef str) {
|
||||
try {
|
||||
return StringUtil::HexDecode(str);
|
||||
} catch (...) {
|
||||
raise_warning("hex2bin: malformed input");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
inline String f_nl2br(CStrRef str) {
|
||||
return str.replace("\n", "<br />\n");
|
||||
}
|
||||
inline String f_quotemeta(CStrRef str) {
|
||||
return StringUtil::RegExEncode(str);
|
||||
}
|
||||
inline String f_str_shuffle(CStrRef str) {
|
||||
return StringUtil::Shuffle(str);
|
||||
}
|
||||
inline String f_strrev(CStrRef str) {
|
||||
return StringUtil::Reverse(str);
|
||||
}
|
||||
inline String f_strtolower(CStrRef str) {
|
||||
return StringUtil::ToLower(str);
|
||||
}
|
||||
inline String f_strtoupper(CStrRef str) {
|
||||
return StringUtil::ToUpper(str, StringUtil::ToUpperAll);
|
||||
}
|
||||
inline String f_ucfirst(CStrRef str) {
|
||||
return StringUtil::ToUpper(str, StringUtil::ToUpperFirst);
|
||||
}
|
||||
inline String f_lcfirst(CStrRef str) {
|
||||
return StringUtil::ToLower(str, StringUtil::ToLowerFirst);
|
||||
}
|
||||
inline String f_ucwords(CStrRef str) {
|
||||
return StringUtil::ToUpper(str, StringUtil::ToUpperWords);
|
||||
}
|
||||
inline String f_strip_tags(CStrRef str, CStrRef allowable_tags = "") {
|
||||
return StringUtil::StripHTMLTags(str, allowable_tags);
|
||||
}
|
||||
inline String f_trim(CStrRef str, CStrRef charlist = k_HPHP_TRIM_CHARLIST) {
|
||||
return StringUtil::Trim(str, StringUtil::TrimBoth, charlist);
|
||||
}
|
||||
inline String f_ltrim(CStrRef str, CStrRef charlist = k_HPHP_TRIM_CHARLIST) {
|
||||
return StringUtil::Trim(str, StringUtil::TrimLeft, charlist);
|
||||
}
|
||||
inline String f_rtrim(CStrRef str, CStrRef charlist = k_HPHP_TRIM_CHARLIST) {
|
||||
return StringUtil::Trim(str, StringUtil::TrimRight, charlist);
|
||||
}
|
||||
inline String f_chop(CStrRef str, CStrRef charlist = k_HPHP_TRIM_CHARLIST) {
|
||||
return StringUtil::Trim(str, StringUtil::TrimRight, charlist);
|
||||
}
|
||||
inline Variant f_explode(CStrRef delimiter, CStrRef str, int limit = 0x7FFFFFFF) {
|
||||
return StringUtil::Explode(str, delimiter, limit);
|
||||
}
|
||||
String f_addcslashes(CStrRef str, CStrRef charlist);
|
||||
String f_stripcslashes(CStrRef str);
|
||||
String f_addslashes(CStrRef str);
|
||||
String f_stripslashes(CStrRef str);
|
||||
String f_bin2hex(CStrRef str);
|
||||
Variant f_hex2bin(CStrRef str);
|
||||
String f_nl2br(CStrRef str);
|
||||
String f_quotemeta(CStrRef str);
|
||||
String f_str_shuffle(CStrRef str);
|
||||
String f_strrev(CStrRef str);
|
||||
String f_strtolower(CStrRef str);
|
||||
String f_strtoupper(CStrRef str);
|
||||
String f_ucfirst(CStrRef str);
|
||||
String f_lcfirst(CStrRef str);
|
||||
String f_ucwords(CStrRef str);
|
||||
String f_strip_tags(CStrRef str, CStrRef allowable_tags = "");
|
||||
String f_trim(CStrRef str, CStrRef charlist = k_HPHP_TRIM_CHARLIST);
|
||||
String f_ltrim(CStrRef str, CStrRef charlist = k_HPHP_TRIM_CHARLIST);
|
||||
String f_rtrim(CStrRef str, CStrRef charlist = k_HPHP_TRIM_CHARLIST);
|
||||
String f_chop(CStrRef str, CStrRef charlist = k_HPHP_TRIM_CHARLIST);
|
||||
Variant f_explode(CStrRef delimiter, CStrRef str, int limit = 0x7FFFFFFF);
|
||||
|
||||
String f_implode(CVarRef arg1, CVarRef arg2 = null_variant);
|
||||
|
||||
inline String f_join(CVarRef glue, CVarRef pieces = null_variant) {
|
||||
return f_implode(glue, pieces);
|
||||
}
|
||||
inline Variant f_str_split(CStrRef str, int split_length = 1) {
|
||||
return StringUtil::Split(str, split_length);
|
||||
}
|
||||
inline Variant f_chunk_split(CStrRef body, int chunklen = 76,
|
||||
CStrRef end = "\r\n") {
|
||||
return StringUtil::ChunkSplit(body, chunklen, end);
|
||||
}
|
||||
String f_join(CVarRef glue, CVarRef pieces = null_variant);
|
||||
Variant f_str_split(CStrRef str, int split_length = 1);
|
||||
Variant f_chunk_split(CStrRef body, int chunklen = 76,
|
||||
CStrRef end = "\r\n");
|
||||
|
||||
Variant f_strtok(CStrRef str, CVarRef token = null_variant);
|
||||
|
||||
@@ -121,97 +68,38 @@ Variant f_str_ireplace(CVarRef search, CVarRef replace, CVarRef subject,
|
||||
Variant f_substr_replace(CVarRef str, CVarRef replacement, CVarRef start,
|
||||
CVarRef length = 0x7FFFFFFF);
|
||||
|
||||
inline Variant f_substr(CStrRef str, int start, int length = 0x7FFFFFFF) {
|
||||
String ret = str.substr(start, length, true);
|
||||
if (ret.isNull()) return false;
|
||||
return ret;
|
||||
}
|
||||
inline String f_str_pad(CStrRef input, int pad_length, CStrRef pad_string = " ",
|
||||
int pad_type = k_STR_PAD_RIGHT) {
|
||||
return StringUtil::Pad(input, pad_length, pad_string,
|
||||
(StringUtil::PadType)pad_type);
|
||||
}
|
||||
inline String f_str_repeat(CStrRef input, int multiplier) {
|
||||
return StringUtil::Repeat(input, multiplier);
|
||||
}
|
||||
inline Variant f_wordwrap(CStrRef str, int width = 75, CStrRef wordbreak = "\n",
|
||||
bool cut = false) {
|
||||
String ret = StringUtil::WordWrap(str, width, wordbreak, cut);
|
||||
if (ret.isNull()) return false;
|
||||
return ret;
|
||||
}
|
||||
Variant f_substr(CStrRef str, int start, int length = 0x7FFFFFFF);
|
||||
String f_str_pad(CStrRef input, int pad_length, CStrRef pad_string = " ",
|
||||
int pad_type = k_STR_PAD_RIGHT);
|
||||
String f_str_repeat(CStrRef input, int multiplier);
|
||||
Variant f_wordwrap(CStrRef str, int width = 75, CStrRef wordbreak = "\n",
|
||||
bool cut = false);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// encoding/decoding
|
||||
|
||||
inline String f_html_entity_decode(CStrRef str, int quote_style = k_ENT_COMPAT,
|
||||
CStrRef charset = "ISO-8859-1") {
|
||||
const char *scharset = charset.data();
|
||||
if (!*scharset) scharset = "UTF-8";
|
||||
return StringUtil::HtmlDecode(str, (StringUtil::QuoteStyle)quote_style,
|
||||
scharset, true);
|
||||
}
|
||||
inline String f_htmlentities(CStrRef str, int quote_style = k_ENT_COMPAT,
|
||||
String f_html_entity_decode(CStrRef str, int quote_style = k_ENT_COMPAT,
|
||||
CStrRef charset = "ISO-8859-1");
|
||||
String f_htmlentities(CStrRef str, int quote_style = k_ENT_COMPAT,
|
||||
CStrRef charset = "ISO-8859-1",
|
||||
bool double_encode = true);
|
||||
String f_htmlspecialchars_decode(CStrRef str,
|
||||
int quote_style = k_ENT_COMPAT);
|
||||
String f_htmlspecialchars(CStrRef str, int quote_style = k_ENT_COMPAT,
|
||||
CStrRef charset = "ISO-8859-1",
|
||||
bool double_encode = true);
|
||||
String f_fb_htmlspecialchars(CStrRef str, int quote_style = k_ENT_COMPAT,
|
||||
CStrRef charset = "ISO-8859-1",
|
||||
bool double_encode = true) {
|
||||
// dropping double_encode parameters and see runtime/base/zend_html.h
|
||||
const char *scharset = charset.data();
|
||||
if (!*scharset) scharset = "UTF-8";
|
||||
return StringUtil::HtmlEncode(str, (StringUtil::QuoteStyle)quote_style,
|
||||
scharset, true);
|
||||
}
|
||||
inline String f_htmlspecialchars_decode(CStrRef str,
|
||||
int quote_style = k_ENT_COMPAT) {
|
||||
return StringUtil::HtmlDecode(str, (StringUtil::QuoteStyle)quote_style,
|
||||
"UTF-8", false);
|
||||
}
|
||||
inline String f_htmlspecialchars(CStrRef str, int quote_style = k_ENT_COMPAT,
|
||||
CStrRef charset = "ISO-8859-1",
|
||||
bool double_encode = true) {
|
||||
// dropping double_encode parameters and see runtime/base/zend_html.h
|
||||
const char *scharset = charset.data();
|
||||
if (!*scharset) scharset = "UTF-8";
|
||||
return StringUtil::HtmlEncode(str, (StringUtil::QuoteStyle)quote_style,
|
||||
scharset, false);
|
||||
}
|
||||
inline String f_fb_htmlspecialchars(CStrRef str, int quote_style = k_ENT_COMPAT,
|
||||
CStrRef charset = "ISO-8859-1",
|
||||
CArrRef extra = Array()) {
|
||||
return StringUtil::HtmlEncodeExtra(str, (StringUtil::QuoteStyle)quote_style,
|
||||
charset.data(), false, extra);
|
||||
}
|
||||
inline String f_quoted_printable_encode(CStrRef str) {
|
||||
return StringUtil::QuotedPrintableEncode(str);
|
||||
}
|
||||
inline String f_quoted_printable_decode(CStrRef str) {
|
||||
return StringUtil::QuotedPrintableDecode(str);
|
||||
}
|
||||
inline Variant f_convert_uudecode(CStrRef data) {
|
||||
String ret = StringUtil::UUDecode(data);
|
||||
if (ret.isNull()) {
|
||||
return false; // bad format
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
inline Variant f_convert_uuencode(CStrRef data) {
|
||||
if (data.empty()) return false;
|
||||
return StringUtil::UUEncode(data);
|
||||
}
|
||||
inline String f_str_rot13(CStrRef str) {
|
||||
return StringUtil::ROT13(str);
|
||||
}
|
||||
inline int64_t f_crc32(CStrRef str) {
|
||||
return (uint32_t)StringUtil::CRC32(str);
|
||||
}
|
||||
inline String f_crypt(CStrRef str, CStrRef salt = "") {
|
||||
return StringUtil::Crypt(str, salt);
|
||||
}
|
||||
inline String f_md5(CStrRef str, bool raw_output = false) {
|
||||
return StringUtil::MD5(str, raw_output);
|
||||
}
|
||||
inline String f_sha1(CStrRef str, bool raw_output = false) {
|
||||
return StringUtil::SHA1(str, raw_output);
|
||||
}
|
||||
CArrRef extra = Array());
|
||||
String f_quoted_printable_encode(CStrRef str);
|
||||
String f_quoted_printable_decode(CStrRef str);
|
||||
Variant f_convert_uudecode(CStrRef data);
|
||||
Variant f_convert_uuencode(CStrRef data);
|
||||
String f_str_rot13(CStrRef str);
|
||||
int64_t f_crc32(CStrRef str);
|
||||
String f_crypt(CStrRef str, CStrRef salt = "");
|
||||
String f_md5(CStrRef str, bool raw_output = false);
|
||||
String f_sha1(CStrRef str, bool raw_output = false);
|
||||
Variant f_strtr(CStrRef str, CVarRef from, CVarRef to = null_variant);
|
||||
|
||||
String f_convert_cyr_string(CStrRef str, CStrRef from, CStrRef to);
|
||||
@@ -226,83 +114,34 @@ String f_hebrevc(CStrRef hebrew_text, int max_chars_per_line = 0);
|
||||
Variant f_setlocale(int _argc, int category, CVarRef locale, CArrRef _argv = null_array);
|
||||
Array f_localeconv();
|
||||
|
||||
inline String f_nl_langinfo(int item) {
|
||||
return nl_langinfo(item);
|
||||
}
|
||||
String f_nl_langinfo(int item);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// input/output
|
||||
|
||||
inline Variant f_printf(int _argc, CStrRef format, CArrRef _argv = null_array) {
|
||||
int len = 0; char *output = string_printf(format.data(), format.size(),
|
||||
_argv, &len);
|
||||
if (output == NULL) return false;
|
||||
echo(output); free(output);
|
||||
return len;
|
||||
}
|
||||
inline Variant f_vprintf(CStrRef format, CArrRef args) {
|
||||
int len = 0; char *output = string_printf(format.data(), format.size(),
|
||||
args, &len);
|
||||
if (output == NULL) return false;
|
||||
echo(output); free(output);
|
||||
return len;
|
||||
}
|
||||
inline Variant f_sprintf(int _argc, CStrRef format, CArrRef _argv = null_array) {
|
||||
char *output = string_printf(format.data(), format.size(), _argv, NULL);
|
||||
if (output == NULL) return false;
|
||||
return String(output, AttachString);
|
||||
}
|
||||
inline Variant f_vsprintf(CStrRef format, CArrRef args) {
|
||||
char *output = string_printf(format.data(), format.size(), args, NULL);
|
||||
if (output == NULL) return false;
|
||||
return String(output, AttachString);
|
||||
}
|
||||
Variant f_printf(int _argc, CStrRef format, CArrRef _argv = null_array);
|
||||
Variant f_vprintf(CStrRef format, CArrRef args);
|
||||
Variant f_sprintf(int _argc, CStrRef format, CArrRef _argv = null_array);
|
||||
Variant f_vsprintf(CStrRef format, CArrRef args);
|
||||
|
||||
Variant f_sscanf(int _argc, CStrRef str, CStrRef format, CArrRef _argv = null_array);
|
||||
|
||||
inline String f_chr(int64_t ascii) {
|
||||
char buf[2]; buf[0] = ascii; buf[1] = 0;
|
||||
return String(buf, 1, CopyString);
|
||||
}
|
||||
inline int64_t f_ord(CStrRef str) {
|
||||
return (int64_t)(unsigned char)(*((const char *)str));
|
||||
}
|
||||
inline Variant f_money_format(CStrRef format, double number) {
|
||||
String s = StringUtil::MoneyFormat(format, number);
|
||||
if (s.isNull()) return false;
|
||||
return s;
|
||||
}
|
||||
String f_chr(int64_t ascii);
|
||||
int64_t f_ord(CStrRef str);
|
||||
Variant f_money_format(CStrRef format, double number);
|
||||
String f_number_format(double number, int decimals = 0, CStrRef dec_point = ".",
|
||||
CStrRef thousands_sep = ",");
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// analysis
|
||||
|
||||
inline int64_t f_strcmp(CStrRef str1, CStrRef str2) {
|
||||
return string_strcmp(str1.data(), str1.size(), str2.data(), str2.size());
|
||||
}
|
||||
inline int64_t f_strncmp(CStrRef str1, CStrRef str2, int len) {
|
||||
return string_strncmp(str1.data(), str1.size(), str2.data(), str2.size(),
|
||||
len);
|
||||
}
|
||||
inline int64_t f_strnatcmp(CStrRef str1, CStrRef str2) {
|
||||
return string_natural_cmp(str1.data(), str1.size(), str2.data(), str2.size(),
|
||||
false);
|
||||
}
|
||||
inline int64_t f_strcasecmp(CStrRef str1, CStrRef str2) {
|
||||
return bstrcasecmp(str1.data(), str1.size(), str2.data(), str2.size());
|
||||
}
|
||||
inline int64_t f_strncasecmp(CStrRef str1, CStrRef str2, int len) {
|
||||
return string_strncasecmp(str1.data(), str1.size(), str2.data(), str2.size(),
|
||||
len);
|
||||
}
|
||||
inline int64_t f_strnatcasecmp(CStrRef str1, CStrRef str2) {
|
||||
return string_natural_cmp(str1.data(), str1.size(), str2.data(), str2.size(),
|
||||
true);
|
||||
}
|
||||
inline int64_t f_strcoll(CStrRef str1, CStrRef str2) {
|
||||
return strcoll(str1, str2);
|
||||
}
|
||||
int64_t f_strcmp(CStrRef str1, CStrRef str2);
|
||||
int64_t f_strncmp(CStrRef str1, CStrRef str2, int len);
|
||||
int64_t f_strnatcmp(CStrRef str1, CStrRef str2);
|
||||
int64_t f_strcasecmp(CStrRef str1, CStrRef str2);
|
||||
int64_t f_strncasecmp(CStrRef str1, CStrRef str2, int len);
|
||||
int64_t f_strnatcasecmp(CStrRef str1, CStrRef str2);
|
||||
int64_t f_strcoll(CStrRef str1, CStrRef str2);
|
||||
|
||||
Variant f_substr_compare(CStrRef main_str, CStrRef str, int offset,
|
||||
int length = INT_MAX, bool case_insensitivity = false);
|
||||
@@ -312,9 +151,7 @@ Variant f_strstr(CStrRef haystack, CVarRef needle, bool before_needle = false);
|
||||
Variant f_stristr(CStrRef haystack, CVarRef needle);
|
||||
Variant f_strpbrk(CStrRef haystack, CStrRef char_list);
|
||||
|
||||
inline Variant f_strchr(CStrRef haystack, CVarRef needle) {
|
||||
return f_strstr(haystack, needle);
|
||||
}
|
||||
Variant f_strchr(CStrRef haystack, CVarRef needle);
|
||||
|
||||
Variant f_strpos(CStrRef haystack, CVarRef needle, int offset = 0);
|
||||
Variant f_stripos(CStrRef haystack, CVarRef needle, int offset = 0);
|
||||
@@ -328,53 +165,17 @@ Variant f_strspn(CStrRef str1, CStrRef str2, int start = 0,
|
||||
Variant f_strcspn(CStrRef str1, CStrRef str2, int start = 0,
|
||||
int length = 0x7FFFFFFF);
|
||||
|
||||
inline Variant f_strlen(CVarRef vstr) {
|
||||
Variant::TypedValueAccessor tva = vstr.getTypedAccessor();
|
||||
switch (Variant::GetAccessorType(tva)) {
|
||||
case KindOfString:
|
||||
case KindOfStaticString:
|
||||
return Variant(Variant::GetStringData(tva)->size());
|
||||
case KindOfArray:
|
||||
raise_warning("strlen() expects parameter 1 to be string, array given");
|
||||
return uninit_null();
|
||||
case KindOfObject:
|
||||
if (!f_method_exists(vstr, "__toString")) {
|
||||
raise_warning("strlen() expects parameter 1 to be string, object given");
|
||||
return uninit_null();
|
||||
} //else fallback to default
|
||||
default:
|
||||
CStrRef str = vstr.toString();
|
||||
return Variant(str.size());
|
||||
}
|
||||
}
|
||||
Variant f_strlen(CVarRef vstr);
|
||||
|
||||
Variant f_count_chars(CStrRef str, int64_t mode = 0);
|
||||
|
||||
Variant f_str_word_count(CStrRef str, int64_t format = 0, CStrRef charlist = "");
|
||||
|
||||
inline int64_t f_levenshtein(CStrRef str1, CStrRef str2, int cost_ins = 1,
|
||||
int cost_rep = 1, int cost_del = 1) {
|
||||
return string_levenshtein(str1, str1.size(), str2, str2.size(),
|
||||
cost_ins, cost_rep, cost_del);
|
||||
}
|
||||
inline int64_t f_similar_text(CStrRef first, CStrRef second, VRefParam percent = uninit_null()) {
|
||||
float p;
|
||||
int ret = string_similar_text(first, first.size(), second, second.size(),
|
||||
&p);
|
||||
percent = p;
|
||||
return ret;
|
||||
}
|
||||
inline Variant f_soundex(CStrRef str) {
|
||||
if (str.empty()) return false;
|
||||
return String(string_soundex(str), AttachString);
|
||||
}
|
||||
inline Variant f_metaphone(CStrRef str, int phones = 0) {
|
||||
char *ret = string_metaphone(str, str.size(), 0, 1);
|
||||
if (ret) {
|
||||
return String(ret, AttachString);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
int64_t f_levenshtein(CStrRef str1, CStrRef str2, int cost_ins = 1,
|
||||
int cost_rep = 1, int cost_del = 1);
|
||||
int64_t f_similar_text(CStrRef first, CStrRef second, VRefParam percent = uninit_null());
|
||||
Variant f_soundex(CStrRef str);
|
||||
Variant f_metaphone(CStrRef str, int phones = 0);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// special
|
||||
|
||||
@@ -259,5 +259,21 @@ Variant f_parse_url(CStrRef url, int component /* = -1 */) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
String f_rawurldecode(CStrRef str) {
|
||||
return StringUtil::UrlDecode(str, false);
|
||||
}
|
||||
|
||||
String f_rawurlencode(CStrRef str) {
|
||||
return StringUtil::UrlEncode(str, false);
|
||||
}
|
||||
|
||||
String f_urldecode(CStrRef str) {
|
||||
return StringUtil::UrlDecode(str, true);
|
||||
}
|
||||
|
||||
String f_urlencode(CStrRef str) {
|
||||
return StringUtil::UrlEncode(str, true);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
}
|
||||
|
||||
@@ -385,6 +385,214 @@ TypedValue* fg_parse_url(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_rawurldecode(HPHP::String const&)
|
||||
_ZN4HPHP14f_rawurldecodeERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_rawurldecode(Value* _rv, Value* str) asm("_ZN4HPHP14f_rawurldecodeERKNS_6StringE");
|
||||
|
||||
TypedValue * fg1_rawurldecode(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_rawurldecode(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfString;
|
||||
tvCastToStringInPlace(args-0);
|
||||
fh_rawurldecode((&rv->m_data), &args[-0].m_data);
|
||||
if (rv->m_data.num == 0LL) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_rawurldecode(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if (IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_type = KindOfString;
|
||||
fh_rawurldecode((&rv.m_data), &args[-0].m_data);
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_rawurldecode(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("rawurldecode", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_rawurlencode(HPHP::String const&)
|
||||
_ZN4HPHP14f_rawurlencodeERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_rawurlencode(Value* _rv, Value* str) asm("_ZN4HPHP14f_rawurlencodeERKNS_6StringE");
|
||||
|
||||
TypedValue * fg1_rawurlencode(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_rawurlencode(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfString;
|
||||
tvCastToStringInPlace(args-0);
|
||||
fh_rawurlencode((&rv->m_data), &args[-0].m_data);
|
||||
if (rv->m_data.num == 0LL) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_rawurlencode(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if (IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_type = KindOfString;
|
||||
fh_rawurlencode((&rv.m_data), &args[-0].m_data);
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_rawurlencode(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("rawurlencode", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_urldecode(HPHP::String const&)
|
||||
_ZN4HPHP11f_urldecodeERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_urldecode(Value* _rv, Value* str) asm("_ZN4HPHP11f_urldecodeERKNS_6StringE");
|
||||
|
||||
TypedValue * fg1_urldecode(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_urldecode(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfString;
|
||||
tvCastToStringInPlace(args-0);
|
||||
fh_urldecode((&rv->m_data), &args[-0].m_data);
|
||||
if (rv->m_data.num == 0LL) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_urldecode(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if (IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_type = KindOfString;
|
||||
fh_urldecode((&rv.m_data), &args[-0].m_data);
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_urldecode(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("urldecode", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_urlencode(HPHP::String const&)
|
||||
_ZN4HPHP11f_urlencodeERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_urlencode(Value* _rv, Value* str) asm("_ZN4HPHP11f_urlencodeERKNS_6StringE");
|
||||
|
||||
TypedValue * fg1_urlencode(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_urlencode(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfString;
|
||||
tvCastToStringInPlace(args-0);
|
||||
fh_urlencode((&rv->m_data), &args[-0].m_data);
|
||||
if (rv->m_data.num == 0LL) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_urlencode(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if (IS_STRING_TYPE((args-0)->m_type)) {
|
||||
rv.m_type = KindOfString;
|
||||
fh_urlencode((&rv.m_data), &args[-0].m_data);
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_urlencode(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("urlencode", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
} // !HPHP
|
||||
|
||||
|
||||
@@ -88,6 +88,50 @@ component => rdx
|
||||
|
||||
TypedValue* fh_parse_url(TypedValue* _rv, Value* url, int component) asm("_ZN4HPHP11f_parse_urlERKNS_6StringEi");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_rawurldecode(HPHP::String const&)
|
||||
_ZN4HPHP14f_rawurldecodeERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_rawurldecode(Value* _rv, Value* str) asm("_ZN4HPHP14f_rawurldecodeERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_rawurlencode(HPHP::String const&)
|
||||
_ZN4HPHP14f_rawurlencodeERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_rawurlencode(Value* _rv, Value* str) asm("_ZN4HPHP14f_rawurlencodeERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_urldecode(HPHP::String const&)
|
||||
_ZN4HPHP11f_urldecodeERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_urldecode(Value* _rv, Value* str) asm("_ZN4HPHP11f_urldecodeERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_urlencode(HPHP::String const&)
|
||||
_ZN4HPHP11f_urlencodeERKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
str => rsi
|
||||
*/
|
||||
|
||||
Value* fh_urlencode(Value* _rv, Value* str) asm("_ZN4HPHP11f_urlencodeERKNS_6StringE");
|
||||
|
||||
|
||||
} // !HPHP
|
||||
|
||||
|
||||
@@ -34,21 +34,13 @@ Variant f_http_build_query(CVarRef formdata,
|
||||
CStrRef arg_separator = null_string);
|
||||
Variant f_parse_url(CStrRef url, int component = -1);
|
||||
|
||||
inline String f_rawurldecode(CStrRef str) {
|
||||
return StringUtil::UrlDecode(str, false);
|
||||
}
|
||||
String f_rawurldecode(CStrRef str);
|
||||
|
||||
inline String f_rawurlencode(CStrRef str) {
|
||||
return StringUtil::UrlEncode(str, false);
|
||||
}
|
||||
String f_rawurlencode(CStrRef str);
|
||||
|
||||
inline String f_urldecode(CStrRef str) {
|
||||
return StringUtil::UrlDecode(str, true);
|
||||
}
|
||||
String f_urldecode(CStrRef str);
|
||||
|
||||
inline String f_urlencode(CStrRef str) {
|
||||
return StringUtil::UrlEncode(str, true);
|
||||
}
|
||||
String f_urlencode(CStrRef str);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
}
|
||||
|
||||
@@ -49,6 +49,11 @@ String f_get_resource_type(CObjRef handle) {
|
||||
return "";
|
||||
}
|
||||
|
||||
int64_t f_intval(CVarRef v, int64_t base /* = 10 */) { return v.toInt64(base);}
|
||||
double f_doubleval(CVarRef v) { return v.toDouble();}
|
||||
double f_floatval(CVarRef v) { return v.toDouble();}
|
||||
String f_strval(CVarRef v) { return v.toString();}
|
||||
|
||||
bool f_settype(VRefParam var, CStrRef type) {
|
||||
if (type == "boolean") var = var.toBoolean();
|
||||
else if (type == "bool" ) var = var.toBoolean();
|
||||
|
||||
@@ -144,6 +144,157 @@ TypedValue* fg_get_resource_type(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
long HPHP::f_intval(HPHP::Variant const&, long)
|
||||
_ZN4HPHP8f_intvalERKNS_7VariantEl
|
||||
|
||||
(return value) => rax
|
||||
v => rdi
|
||||
base => rsi
|
||||
*/
|
||||
|
||||
long fh_intval(TypedValue* v, long base) asm("_ZN4HPHP8f_intvalERKNS_7VariantEl");
|
||||
|
||||
TypedValue * fg1_intval(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_intval(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfInt64;
|
||||
tvCastToInt64InPlace(args-1);
|
||||
rv->m_data.num = (int64_t)fh_intval((args-0), (count > 1) ? (long)(args[-1].m_data.num) : (long)(10));
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_intval(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 2LL) {
|
||||
if ((count <= 1 || (args-1)->m_type == KindOfInt64)) {
|
||||
rv.m_type = KindOfInt64;
|
||||
rv.m_data.num = (int64_t)fh_intval((args-0), (count > 1) ? (long)(args[-1].m_data.num) : (long)(10));
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_intval(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("intval", count, 1, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
double HPHP::f_doubleval(HPHP::Variant const&)
|
||||
_ZN4HPHP11f_doublevalERKNS_7VariantE
|
||||
|
||||
(return value) => xmm0
|
||||
v => rdi
|
||||
*/
|
||||
|
||||
double fh_doubleval(TypedValue* v) asm("_ZN4HPHP11f_doublevalERKNS_7VariantE");
|
||||
|
||||
TypedValue* fg_doubleval(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
rv.m_type = KindOfDouble;
|
||||
rv.m_data.dbl = fh_doubleval((args-0));
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_wrong_arguments_nr("doubleval", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
double HPHP::f_floatval(HPHP::Variant const&)
|
||||
_ZN4HPHP10f_floatvalERKNS_7VariantE
|
||||
|
||||
(return value) => xmm0
|
||||
v => rdi
|
||||
*/
|
||||
|
||||
double fh_floatval(TypedValue* v) asm("_ZN4HPHP10f_floatvalERKNS_7VariantE");
|
||||
|
||||
TypedValue* fg_floatval(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
rv.m_type = KindOfDouble;
|
||||
rv.m_data.dbl = fh_floatval((args-0));
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_wrong_arguments_nr("floatval", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_strval(HPHP::Variant const&)
|
||||
_ZN4HPHP8f_strvalERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
v => rsi
|
||||
*/
|
||||
|
||||
Value* fh_strval(Value* _rv, TypedValue* v) asm("_ZN4HPHP8f_strvalERKNS_7VariantE");
|
||||
|
||||
TypedValue* fg_strval(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
rv.m_type = KindOfString;
|
||||
fh_strval((&rv.m_data), (args-0));
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_wrong_arguments_nr("strval", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_settype(HPHP::VRefParamValue const&, HPHP::String const&)
|
||||
_ZN4HPHP9f_settypeERKNS_14VRefParamValueERKNS_6StringE
|
||||
|
||||
@@ -48,6 +48,48 @@ handle => rsi
|
||||
|
||||
Value* fh_get_resource_type(Value* _rv, Value* handle) asm("_ZN4HPHP19f_get_resource_typeERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
long HPHP::f_intval(HPHP::Variant const&, long)
|
||||
_ZN4HPHP8f_intvalERKNS_7VariantEl
|
||||
|
||||
(return value) => rax
|
||||
v => rdi
|
||||
base => rsi
|
||||
*/
|
||||
|
||||
long fh_intval(TypedValue* v, long base) asm("_ZN4HPHP8f_intvalERKNS_7VariantEl");
|
||||
|
||||
/*
|
||||
double HPHP::f_doubleval(HPHP::Variant const&)
|
||||
_ZN4HPHP11f_doublevalERKNS_7VariantE
|
||||
|
||||
(return value) => xmm0
|
||||
v => rdi
|
||||
*/
|
||||
|
||||
double fh_doubleval(TypedValue* v) asm("_ZN4HPHP11f_doublevalERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
double HPHP::f_floatval(HPHP::Variant const&)
|
||||
_ZN4HPHP10f_floatvalERKNS_7VariantE
|
||||
|
||||
(return value) => xmm0
|
||||
v => rdi
|
||||
*/
|
||||
|
||||
double fh_floatval(TypedValue* v) asm("_ZN4HPHP10f_floatvalERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_strval(HPHP::Variant const&)
|
||||
_ZN4HPHP8f_strvalERKNS_7VariantE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
v => rsi
|
||||
*/
|
||||
|
||||
Value* fh_strval(Value* _rv, TypedValue* v) asm("_ZN4HPHP8f_strvalERKNS_7VariantE");
|
||||
|
||||
/*
|
||||
bool HPHP::f_settype(HPHP::VRefParamValue const&, HPHP::String const&)
|
||||
_ZN4HPHP9f_settypeERKNS_14VRefParamValueERKNS_6StringE
|
||||
|
||||
@@ -223,10 +223,10 @@ String f_get_resource_type(CObjRef handle);
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// type conversion
|
||||
|
||||
inline int64_t f_intval(CVarRef v, int64_t base = 10) { return v.toInt64(base);}
|
||||
inline double f_doubleval(CVarRef v) { return v.toDouble();}
|
||||
inline double f_floatval(CVarRef v) { return v.toDouble();}
|
||||
inline String f_strval(CVarRef v) { return v.toString();}
|
||||
int64_t f_intval(CVarRef v, int64_t base = 10);
|
||||
double f_doubleval(CVarRef v);
|
||||
double f_floatval(CVarRef v);
|
||||
String f_strval(CVarRef v);
|
||||
|
||||
bool f_settype(VRefParam var, CStrRef type);
|
||||
|
||||
|
||||
@@ -308,6 +308,10 @@ Variant f_gzdecode(CStrRef data) {
|
||||
return String(ret, len, AttachString);
|
||||
}
|
||||
|
||||
String f_zlib_get_coding_type() {
|
||||
throw NotSupportedException(__func__, "no use");
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// stream functions
|
||||
|
||||
@@ -323,6 +327,45 @@ Object f_gzopen(CStrRef filename, CStrRef mode,
|
||||
return handle;
|
||||
}
|
||||
|
||||
bool f_gzclose(CObjRef zp) {
|
||||
return f_fclose(zp);
|
||||
}
|
||||
Variant f_gzread(CObjRef zp, int64_t length /* = 0 */) {
|
||||
return f_fread(zp, length);
|
||||
}
|
||||
Variant f_gzseek(CObjRef zp, int64_t offset, int64_t whence /* = k_SEEK_SET */) {
|
||||
return f_fseek(zp, offset, whence);
|
||||
}
|
||||
Variant f_gztell(CObjRef zp) {
|
||||
return f_ftell(zp);
|
||||
}
|
||||
bool f_gzeof(CObjRef zp) {
|
||||
return f_feof(zp);
|
||||
}
|
||||
bool f_gzrewind(CObjRef zp) {
|
||||
return f_rewind(zp);
|
||||
}
|
||||
Variant f_gzgetc(CObjRef zp) {
|
||||
return f_fgetc(zp);
|
||||
}
|
||||
Variant f_gzgets(CObjRef zp, int64_t length /* = 1024 */) {
|
||||
return f_fgets(zp, length);
|
||||
}
|
||||
Variant f_gzgetss(CObjRef zp, int64_t length /* = 0 */,
|
||||
CStrRef allowable_tags /* = null_string */) {
|
||||
return f_fgetss(zp, length, allowable_tags);
|
||||
}
|
||||
Variant f_gzpassthru(CObjRef zp) {
|
||||
return f_fpassthru(zp);
|
||||
}
|
||||
Variant f_gzputs(CObjRef zp, CStrRef str, int64_t length /* = 0 */) {
|
||||
return f_fwrite(zp, str, length);
|
||||
}
|
||||
Variant f_gzwrite(CObjRef zp, CStrRef str, int64_t length /* = 0 */) {
|
||||
return f_fwrite(zp, str, length);
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// QuickLZ functions
|
||||
|
||||
|
||||
@@ -506,6 +506,40 @@ TypedValue* fg_gzdecode(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_zlib_get_coding_type()
|
||||
_ZN4HPHP22f_zlib_get_coding_typeEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_zlib_get_coding_type(Value* _rv) asm("_ZN4HPHP22f_zlib_get_coding_typeEv");
|
||||
|
||||
TypedValue* fg_zlib_get_coding_type(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 0LL) {
|
||||
rv.m_type = KindOfString;
|
||||
fh_zlib_get_coding_type((&rv.m_data));
|
||||
if (rv.m_data.num == 0LL) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
throw_toomany_arguments_nr("zlib_get_coding_type", 0, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 0);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Object HPHP::f_gzopen(HPHP::String const&, HPHP::String const&, bool)
|
||||
_ZN4HPHP8f_gzopenERKNS_6StringES2_b
|
||||
@@ -573,6 +607,686 @@ TypedValue* fg_gzopen(HPHP::VM::ActRec *ar) {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_gzclose(HPHP::Object const&)
|
||||
_ZN4HPHP9f_gzcloseERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
zp => rdi
|
||||
*/
|
||||
|
||||
bool fh_gzclose(Value* zp) asm("_ZN4HPHP9f_gzcloseERKNS_6ObjectE");
|
||||
|
||||
TypedValue * fg1_gzclose(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_gzclose(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
tvCastToObjectInPlace(args-0);
|
||||
rv->m_data.num = (fh_gzclose(&args[-0].m_data)) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_gzclose(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfObject) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_gzclose(&args[-0].m_data)) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_gzclose(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("gzclose", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_gzrewind(HPHP::Object const&)
|
||||
_ZN4HPHP10f_gzrewindERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
zp => rdi
|
||||
*/
|
||||
|
||||
bool fh_gzrewind(Value* zp) asm("_ZN4HPHP10f_gzrewindERKNS_6ObjectE");
|
||||
|
||||
TypedValue * fg1_gzrewind(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_gzrewind(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
tvCastToObjectInPlace(args-0);
|
||||
rv->m_data.num = (fh_gzrewind(&args[-0].m_data)) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_gzrewind(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfObject) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_gzrewind(&args[-0].m_data)) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_gzrewind(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("gzrewind", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
bool HPHP::f_gzeof(HPHP::Object const&)
|
||||
_ZN4HPHP7f_gzeofERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
zp => rdi
|
||||
*/
|
||||
|
||||
bool fh_gzeof(Value* zp) asm("_ZN4HPHP7f_gzeofERKNS_6ObjectE");
|
||||
|
||||
TypedValue * fg1_gzeof(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_gzeof(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
rv->m_type = KindOfBoolean;
|
||||
tvCastToObjectInPlace(args-0);
|
||||
rv->m_data.num = (fh_gzeof(&args[-0].m_data)) ? 1LL : 0LL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_gzeof(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfObject) {
|
||||
rv.m_type = KindOfBoolean;
|
||||
rv.m_data.num = (fh_gzeof(&args[-0].m_data)) ? 1LL : 0LL;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_gzeof(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("gzeof", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gzgetc(HPHP::Object const&)
|
||||
_ZN4HPHP8f_gzgetcERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
zp => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_gzgetc(TypedValue* _rv, Value* zp) asm("_ZN4HPHP8f_gzgetcERKNS_6ObjectE");
|
||||
|
||||
TypedValue * fg1_gzgetc(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_gzgetc(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
tvCastToObjectInPlace(args-0);
|
||||
fh_gzgetc((rv), &args[-0].m_data);
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_gzgetc(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfObject) {
|
||||
fh_gzgetc((&(rv)), &args[-0].m_data);
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_gzgetc(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("gzgetc", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gzgets(HPHP::Object const&, long)
|
||||
_ZN4HPHP8f_gzgetsERKNS_6ObjectEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
zp => rsi
|
||||
length => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_gzgets(TypedValue* _rv, Value* zp, long length) asm("_ZN4HPHP8f_gzgetsERKNS_6ObjectEl");
|
||||
|
||||
TypedValue * fg1_gzgets(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_gzgets(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
switch (count) {
|
||||
default: // count >= 2
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if ((args-0)->m_type != KindOfObject) {
|
||||
tvCastToObjectInPlace(args-0);
|
||||
}
|
||||
fh_gzgets((rv), &args[-0].m_data, (count > 1) ? (long)(args[-1].m_data.num) : (long)(1024));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_gzgets(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 2LL) {
|
||||
if ((count <= 1 || (args-1)->m_type == KindOfInt64) && (args-0)->m_type == KindOfObject) {
|
||||
fh_gzgets((&(rv)), &args[-0].m_data, (count > 1) ? (long)(args[-1].m_data.num) : (long)(1024));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_gzgets(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("gzgets", count, 1, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gzgetss(HPHP::Object const&, long, HPHP::String const&)
|
||||
_ZN4HPHP9f_gzgetssERKNS_6ObjectElRKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
zp => rsi
|
||||
length => rdx
|
||||
allowable_tags => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_gzgetss(TypedValue* _rv, Value* zp, long length, Value* allowable_tags) asm("_ZN4HPHP9f_gzgetssERKNS_6ObjectElRKNS_6StringE");
|
||||
|
||||
TypedValue * fg1_gzgetss(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_gzgetss(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
switch (count) {
|
||||
default: // count >= 3
|
||||
if (!IS_STRING_TYPE((args-2)->m_type)) {
|
||||
tvCastToStringInPlace(args-2);
|
||||
}
|
||||
case 2:
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if ((args-0)->m_type != KindOfObject) {
|
||||
tvCastToObjectInPlace(args-0);
|
||||
}
|
||||
fh_gzgetss((rv), &args[-0].m_data, (count > 1) ? (long)(args[-1].m_data.num) : (long)(0), (count > 2) ? &args[-2].m_data : (Value*)(&null_string));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_gzgetss(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 3LL) {
|
||||
if ((count <= 2 || IS_STRING_TYPE((args-2)->m_type)) && (count <= 1 || (args-1)->m_type == KindOfInt64) && (args-0)->m_type == KindOfObject) {
|
||||
fh_gzgetss((&(rv)), &args[-0].m_data, (count > 1) ? (long)(args[-1].m_data.num) : (long)(0), (count > 2) ? &args[-2].m_data : (Value*)(&null_string));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_gzgetss(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("gzgetss", count, 1, 3, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gzread(HPHP::Object const&, long)
|
||||
_ZN4HPHP8f_gzreadERKNS_6ObjectEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
zp => rsi
|
||||
length => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_gzread(TypedValue* _rv, Value* zp, long length) asm("_ZN4HPHP8f_gzreadERKNS_6ObjectEl");
|
||||
|
||||
TypedValue * fg1_gzread(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_gzread(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
switch (count) {
|
||||
default: // count >= 2
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if ((args-0)->m_type != KindOfObject) {
|
||||
tvCastToObjectInPlace(args-0);
|
||||
}
|
||||
fh_gzread((rv), &args[-0].m_data, (count > 1) ? (long)(args[-1].m_data.num) : (long)(0));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_gzread(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 1LL && count <= 2LL) {
|
||||
if ((count <= 1 || (args-1)->m_type == KindOfInt64) && (args-0)->m_type == KindOfObject) {
|
||||
fh_gzread((&(rv)), &args[-0].m_data, (count > 1) ? (long)(args[-1].m_data.num) : (long)(0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_gzread(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("gzread", count, 1, 2, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 2);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gzpassthru(HPHP::Object const&)
|
||||
_ZN4HPHP12f_gzpassthruERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
zp => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_gzpassthru(TypedValue* _rv, Value* zp) asm("_ZN4HPHP12f_gzpassthruERKNS_6ObjectE");
|
||||
|
||||
TypedValue * fg1_gzpassthru(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_gzpassthru(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
tvCastToObjectInPlace(args-0);
|
||||
fh_gzpassthru((rv), &args[-0].m_data);
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_gzpassthru(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfObject) {
|
||||
fh_gzpassthru((&(rv)), &args[-0].m_data);
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_gzpassthru(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("gzpassthru", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gzseek(HPHP::Object const&, long, long)
|
||||
_ZN4HPHP8f_gzseekERKNS_6ObjectEll
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
zp => rsi
|
||||
offset => rdx
|
||||
whence => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_gzseek(TypedValue* _rv, Value* zp, long offset, long whence) asm("_ZN4HPHP8f_gzseekERKNS_6ObjectEll");
|
||||
|
||||
TypedValue * fg1_gzseek(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_gzseek(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
switch (count) {
|
||||
default: // count >= 3
|
||||
if ((args-2)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-2);
|
||||
}
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
if ((args-1)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-1);
|
||||
}
|
||||
if ((args-0)->m_type != KindOfObject) {
|
||||
tvCastToObjectInPlace(args-0);
|
||||
}
|
||||
fh_gzseek((rv), &args[-0].m_data, (long)(args[-1].m_data.num), (count > 2) ? (long)(args[-2].m_data.num) : (long)(k_SEEK_SET));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_gzseek(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 2LL && count <= 3LL) {
|
||||
if ((count <= 2 || (args-2)->m_type == KindOfInt64) && (args-1)->m_type == KindOfInt64 && (args-0)->m_type == KindOfObject) {
|
||||
fh_gzseek((&(rv)), &args[-0].m_data, (long)(args[-1].m_data.num), (count > 2) ? (long)(args[-2].m_data.num) : (long)(k_SEEK_SET));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_gzseek(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("gzseek", count, 2, 3, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gztell(HPHP::Object const&)
|
||||
_ZN4HPHP8f_gztellERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
zp => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_gztell(TypedValue* _rv, Value* zp) asm("_ZN4HPHP8f_gztellERKNS_6ObjectE");
|
||||
|
||||
TypedValue * fg1_gztell(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_gztell(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
tvCastToObjectInPlace(args-0);
|
||||
fh_gztell((rv), &args[-0].m_data);
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_gztell(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count == 1LL) {
|
||||
if ((args-0)->m_type == KindOfObject) {
|
||||
fh_gztell((&(rv)), &args[-0].m_data);
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_gztell(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("gztell", count, 1, 1, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 1);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gzwrite(HPHP::Object const&, HPHP::String const&, long)
|
||||
_ZN4HPHP9f_gzwriteERKNS_6ObjectERKNS_6StringEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
zp => rsi
|
||||
str => rdx
|
||||
length => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_gzwrite(TypedValue* _rv, Value* zp, Value* str, long length) asm("_ZN4HPHP9f_gzwriteERKNS_6ObjectERKNS_6StringEl");
|
||||
|
||||
TypedValue * fg1_gzwrite(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_gzwrite(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
switch (count) {
|
||||
default: // count >= 3
|
||||
if ((args-2)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-2);
|
||||
}
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-1)->m_type)) {
|
||||
tvCastToStringInPlace(args-1);
|
||||
}
|
||||
if ((args-0)->m_type != KindOfObject) {
|
||||
tvCastToObjectInPlace(args-0);
|
||||
}
|
||||
fh_gzwrite((rv), &args[-0].m_data, &args[-1].m_data, (count > 2) ? (long)(args[-2].m_data.num) : (long)(0));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_gzwrite(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 2LL && count <= 3LL) {
|
||||
if ((count <= 2 || (args-2)->m_type == KindOfInt64) && IS_STRING_TYPE((args-1)->m_type) && (args-0)->m_type == KindOfObject) {
|
||||
fh_gzwrite((&(rv)), &args[-0].m_data, &args[-1].m_data, (count > 2) ? (long)(args[-2].m_data.num) : (long)(0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_gzwrite(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("gzwrite", count, 2, 3, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gzputs(HPHP::Object const&, HPHP::String const&, long)
|
||||
_ZN4HPHP8f_gzputsERKNS_6ObjectERKNS_6StringEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
zp => rsi
|
||||
str => rdx
|
||||
length => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_gzputs(TypedValue* _rv, Value* zp, Value* str, long length) asm("_ZN4HPHP8f_gzputsERKNS_6ObjectERKNS_6StringEl");
|
||||
|
||||
TypedValue * fg1_gzputs(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) __attribute__((noinline,cold));
|
||||
TypedValue * fg1_gzputs(TypedValue* rv, HPHP::VM::ActRec* ar, int64_t count) {
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
switch (count) {
|
||||
default: // count >= 3
|
||||
if ((args-2)->m_type != KindOfInt64) {
|
||||
tvCastToInt64InPlace(args-2);
|
||||
}
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
if (!IS_STRING_TYPE((args-1)->m_type)) {
|
||||
tvCastToStringInPlace(args-1);
|
||||
}
|
||||
if ((args-0)->m_type != KindOfObject) {
|
||||
tvCastToObjectInPlace(args-0);
|
||||
}
|
||||
fh_gzputs((rv), &args[-0].m_data, &args[-1].m_data, (count > 2) ? (long)(args[-2].m_data.num) : (long)(0));
|
||||
if (rv->m_type == KindOfUninit) rv->m_type = KindOfNull;
|
||||
return rv;
|
||||
}
|
||||
|
||||
TypedValue* fg_gzputs(HPHP::VM::ActRec *ar) {
|
||||
TypedValue rv;
|
||||
int64_t count = ar->numArgs();
|
||||
TypedValue* args UNUSED = ((TypedValue*)ar) - 1;
|
||||
if (count >= 2LL && count <= 3LL) {
|
||||
if ((count <= 2 || (args-2)->m_type == KindOfInt64) && IS_STRING_TYPE((args-1)->m_type) && (args-0)->m_type == KindOfObject) {
|
||||
fh_gzputs((&(rv)), &args[-0].m_data, &args[-1].m_data, (count > 2) ? (long)(args[-2].m_data.num) : (long)(0));
|
||||
if (rv.m_type == KindOfUninit) rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
} else {
|
||||
fg1_gzputs(&rv, ar, count);
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
}
|
||||
} else {
|
||||
throw_wrong_arguments_nr("gzputs", count, 2, 3, 1);
|
||||
}
|
||||
rv.m_data.num = 0LL;
|
||||
rv.m_type = KindOfNull;
|
||||
frame_free_locals_no_this_inl(ar, 3);
|
||||
memcpy(&ar->m_r, &rv, sizeof(TypedValue));
|
||||
return &ar->m_r;
|
||||
return &ar->m_r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_qlzcompress(HPHP::String const&, int)
|
||||
_ZN4HPHP13f_qlzcompressERKNS_6StringEi
|
||||
|
||||
@@ -112,6 +112,16 @@ data => rsi
|
||||
|
||||
TypedValue* fh_gzdecode(TypedValue* _rv, Value* data) asm("_ZN4HPHP10f_gzdecodeERKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::String HPHP::f_zlib_get_coding_type()
|
||||
_ZN4HPHP22f_zlib_get_coding_typeEv
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
*/
|
||||
|
||||
Value* fh_zlib_get_coding_type(Value* _rv) asm("_ZN4HPHP22f_zlib_get_coding_typeEv");
|
||||
|
||||
/*
|
||||
HPHP::Object HPHP::f_gzopen(HPHP::String const&, HPHP::String const&, bool)
|
||||
_ZN4HPHP8f_gzopenERKNS_6StringES2_b
|
||||
@@ -125,6 +135,145 @@ use_include_path => rcx
|
||||
|
||||
Value* fh_gzopen(Value* _rv, Value* filename, Value* mode, bool use_include_path) asm("_ZN4HPHP8f_gzopenERKNS_6StringES2_b");
|
||||
|
||||
/*
|
||||
bool HPHP::f_gzclose(HPHP::Object const&)
|
||||
_ZN4HPHP9f_gzcloseERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
zp => rdi
|
||||
*/
|
||||
|
||||
bool fh_gzclose(Value* zp) asm("_ZN4HPHP9f_gzcloseERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
bool HPHP::f_gzrewind(HPHP::Object const&)
|
||||
_ZN4HPHP10f_gzrewindERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
zp => rdi
|
||||
*/
|
||||
|
||||
bool fh_gzrewind(Value* zp) asm("_ZN4HPHP10f_gzrewindERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
bool HPHP::f_gzeof(HPHP::Object const&)
|
||||
_ZN4HPHP7f_gzeofERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
zp => rdi
|
||||
*/
|
||||
|
||||
bool fh_gzeof(Value* zp) asm("_ZN4HPHP7f_gzeofERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gzgetc(HPHP::Object const&)
|
||||
_ZN4HPHP8f_gzgetcERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
zp => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_gzgetc(TypedValue* _rv, Value* zp) asm("_ZN4HPHP8f_gzgetcERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gzgets(HPHP::Object const&, long)
|
||||
_ZN4HPHP8f_gzgetsERKNS_6ObjectEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
zp => rsi
|
||||
length => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_gzgets(TypedValue* _rv, Value* zp, long length) asm("_ZN4HPHP8f_gzgetsERKNS_6ObjectEl");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gzgetss(HPHP::Object const&, long, HPHP::String const&)
|
||||
_ZN4HPHP9f_gzgetssERKNS_6ObjectElRKNS_6StringE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
zp => rsi
|
||||
length => rdx
|
||||
allowable_tags => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_gzgetss(TypedValue* _rv, Value* zp, long length, Value* allowable_tags) asm("_ZN4HPHP9f_gzgetssERKNS_6ObjectElRKNS_6StringE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gzread(HPHP::Object const&, long)
|
||||
_ZN4HPHP8f_gzreadERKNS_6ObjectEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
zp => rsi
|
||||
length => rdx
|
||||
*/
|
||||
|
||||
TypedValue* fh_gzread(TypedValue* _rv, Value* zp, long length) asm("_ZN4HPHP8f_gzreadERKNS_6ObjectEl");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gzpassthru(HPHP::Object const&)
|
||||
_ZN4HPHP12f_gzpassthruERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
zp => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_gzpassthru(TypedValue* _rv, Value* zp) asm("_ZN4HPHP12f_gzpassthruERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gzseek(HPHP::Object const&, long, long)
|
||||
_ZN4HPHP8f_gzseekERKNS_6ObjectEll
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
zp => rsi
|
||||
offset => rdx
|
||||
whence => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_gzseek(TypedValue* _rv, Value* zp, long offset, long whence) asm("_ZN4HPHP8f_gzseekERKNS_6ObjectEll");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gztell(HPHP::Object const&)
|
||||
_ZN4HPHP8f_gztellERKNS_6ObjectE
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
zp => rsi
|
||||
*/
|
||||
|
||||
TypedValue* fh_gztell(TypedValue* _rv, Value* zp) asm("_ZN4HPHP8f_gztellERKNS_6ObjectE");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gzwrite(HPHP::Object const&, HPHP::String const&, long)
|
||||
_ZN4HPHP9f_gzwriteERKNS_6ObjectERKNS_6StringEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
zp => rsi
|
||||
str => rdx
|
||||
length => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_gzwrite(TypedValue* _rv, Value* zp, Value* str, long length) asm("_ZN4HPHP9f_gzwriteERKNS_6ObjectERKNS_6StringEl");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_gzputs(HPHP::Object const&, HPHP::String const&, long)
|
||||
_ZN4HPHP8f_gzputsERKNS_6ObjectERKNS_6StringEl
|
||||
|
||||
(return value) => rax
|
||||
_rv => rdi
|
||||
zp => rsi
|
||||
str => rdx
|
||||
length => rcx
|
||||
*/
|
||||
|
||||
TypedValue* fh_gzputs(TypedValue* _rv, Value* zp, Value* str, long length) asm("_ZN4HPHP8f_gzputsERKNS_6ObjectERKNS_6StringEl");
|
||||
|
||||
/*
|
||||
HPHP::Variant HPHP::f_qlzcompress(HPHP::String const&, int)
|
||||
_ZN4HPHP13f_qlzcompressERKNS_6StringEi
|
||||
|
||||
@@ -34,9 +34,7 @@ Variant f_gzinflate(CStrRef data, int limit = 0);
|
||||
Variant f_gzencode(CStrRef data, int level = -1,
|
||||
int encoding_mode = k_FORCE_GZIP);
|
||||
Variant f_gzdecode(CStrRef data);
|
||||
inline String f_zlib_get_coding_type() {
|
||||
throw NotSupportedException(__func__, "no use");
|
||||
}
|
||||
String f_zlib_get_coding_type();
|
||||
Variant f_qlzcompress(CStrRef data, int level = 1);
|
||||
Variant f_qlzuncompress(CStrRef data, int level = 1);
|
||||
Variant f_sncompress(CStrRef data);
|
||||
@@ -52,43 +50,19 @@ Variant f_lz4uncompress(CStrRef compressed);
|
||||
|
||||
Object f_gzopen(CStrRef filename, CStrRef mode, bool use_include_path = false);
|
||||
|
||||
inline bool f_gzclose(CObjRef zp) {
|
||||
return f_fclose(zp);
|
||||
}
|
||||
inline Variant f_gzread(CObjRef zp, int64_t length = 0) {
|
||||
return f_fread(zp, length);
|
||||
}
|
||||
inline Variant f_gzseek(CObjRef zp, int64_t offset, int64_t whence = k_SEEK_SET) {
|
||||
return f_fseek(zp, offset, whence);
|
||||
}
|
||||
inline Variant f_gztell(CObjRef zp) {
|
||||
return f_ftell(zp);
|
||||
}
|
||||
inline bool f_gzeof(CObjRef zp) {
|
||||
return f_feof(zp);
|
||||
}
|
||||
inline bool f_gzrewind(CObjRef zp) {
|
||||
return f_rewind(zp);
|
||||
}
|
||||
inline Variant f_gzgetc(CObjRef zp) {
|
||||
return f_fgetc(zp);
|
||||
}
|
||||
inline Variant f_gzgets(CObjRef zp, int64_t length = 1024) {
|
||||
return f_fgets(zp, length);
|
||||
}
|
||||
inline Variant f_gzgetss(CObjRef zp, int64_t length = 0,
|
||||
CStrRef allowable_tags = null_string) {
|
||||
return f_fgetss(zp, length, allowable_tags);
|
||||
}
|
||||
inline Variant f_gzpassthru(CObjRef zp) {
|
||||
return f_fpassthru(zp);
|
||||
}
|
||||
inline Variant f_gzputs(CObjRef zp, CStrRef str, int64_t length = 0) {
|
||||
return f_fwrite(zp, str, length);
|
||||
}
|
||||
inline Variant f_gzwrite(CObjRef zp, CStrRef str, int64_t length = 0) {
|
||||
return f_fwrite(zp, str, length);
|
||||
}
|
||||
bool f_gzclose(CObjRef zp);
|
||||
Variant f_gzread(CObjRef zp, int64_t length = 0);
|
||||
Variant f_gzseek(CObjRef zp, int64_t offset, int64_t whence = k_SEEK_SET);
|
||||
Variant f_gztell(CObjRef zp);
|
||||
bool f_gzeof(CObjRef zp);
|
||||
bool f_gzrewind(CObjRef zp);
|
||||
Variant f_gzgetc(CObjRef zp);
|
||||
Variant f_gzgets(CObjRef zp, int64_t length = 1024);
|
||||
Variant f_gzgetss(CObjRef zp, int64_t length = 0,
|
||||
CStrRef allowable_tags = null_string);
|
||||
Variant f_gzpassthru(CObjRef zp);
|
||||
Variant f_gzputs(CObjRef zp, CStrRef str, int64_t length = 0);
|
||||
Variant f_gzwrite(CObjRef zp, CStrRef str, int64_t length = 0);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
}
|
||||
|
||||
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
Referência em uma Nova Issue
Bloquear um usuário