return "double";
case IS_STRING:
- return "string";
+ return "native string";
case IS_ARRAY:
return "array";
*p = Z_STRVAL_PP(arg);
break;
} else {
- return "string";
+ return "native string";
}
}
}
case IS_ARRAY:
case IS_RESOURCE:
default:
- return "string";
+ return "native string";
+ }
+ }
+ break;
+
+ case 'y':
+ {
+ char **p = va_arg(*va, char **);
+ int *pl = va_arg(*va, int *);
+ switch (Z_TYPE_PP(arg)) {
+ case IS_NULL:
+ if (return_null) {
+ *p = NULL;
+ *pl = 0;
+ break;
+ }
+ /* break omitted intentionally */
+
+ case IS_STRING:
+ case IS_LONG:
+ case IS_DOUBLE:
+ case IS_BOOL:
+ case IS_UNICODE:
+ convert_to_binary_ex(arg);
+ *p = Z_BINVAL_PP(arg);
+ *pl = Z_BINLEN_PP(arg);
+ break;
+
+ case IS_BINARY:
+ *p = Z_BINVAL_PP(arg);
+ *pl = Z_BINLEN_PP(arg);
+ break;
+
+ case IS_OBJECT: {
+ if (Z_OBJ_HANDLER_PP(arg, cast_object)) {
+ SEPARATE_ZVAL_IF_NOT_REF(arg);
+ if (Z_OBJ_HANDLER_PP(arg, cast_object)(*arg, *arg, IS_BINARY, 0 TSRMLS_CC) == SUCCESS) {
+ *pl = Z_BINLEN_PP(arg);
+ *p = Z_BINVAL_PP(arg);
+ break;
+ } else {
+ return "binary data";
+ }
+ }
+ }
+
+ case IS_ARRAY:
+ case IS_RESOURCE:
+ default:
+ return "binary data";
}
}
break;
*p = Z_USTRVAL_PP(arg);
break;
} else {
- return "string";
+ return "Unicode string";
}
}
}
case IS_ARRAY:
case IS_RESOURCE:
default:
- return "string";
+ return "Unicode string";
}
}
break;
case IS_ARRAY:
case IS_RESOURCE:
default:
- return "string (legacy, Unicode, or binary)";
+ return "string (native, Unicode, or binary)";
}
break;
case IS_ARRAY:
case IS_RESOURCE:
default:
- return "string (legacy, Unicode, or binary)";
+ return "string (native, Unicode, or binary)";
}
}
break;
case 'r': case 'a':
case 'o': case 'O':
case 'z': case 'Z':
- case 't':
+ case 't': case 'y':
case 'u':
max_num_args++;
break;