void iteratePrintAutoZval()

in prod/native/phpbridge_extension/code/AutoZvalFunctions.cpp [228:269]


void iteratePrintAutoZval(elasticapm::php::AutoZval const &val, RecursiveArrayVisitor_t const &arrayVisitor) {
    auto recurse = [&](elasticapm::php::AutoZval const &v) { iteratePrintAutoZval(v, arrayVisitor); };

    switch (val.getType()) {
        case IS_ARRAY: {
            std::cout << "array(" << val.getArrayCount() << "): {" << std::endl;
            arrayVisitor(val, recurse);
            // for (auto const &element : val) {
            //     iteratePrintAutoZval(element, arrayVisitor);
            // }
            std::cout << '}' << std::endl;
            break;
        }
        case IS_LONG:
            std::cout << "long: " << val.getLong() << std::endl;
            break;
        case IS_DOUBLE:
            std::cout << "double: " << val.getDouble() << std::endl;
            break;
        case IS_TRUE:
        case IS_FALSE:
            std::cout << "bool: " << val.getBoolean() << std::endl;
            break;
        case IS_STRING:
            std::cout << '\'' << val.getStringView() << '\'' << std::endl;
            break;
        case IS_NULL:
            std::cout << "isNull: " << val.isNull() << std::endl;
            break;
        case IS_OBJECT:
            std::cout << "isObject: " << val.isObject() << std::endl;
            break;
        case IS_RESOURCE:
            std::cout << "isResource: " << val.isResource() << std::endl;
            break;
        case IS_UNDEF:
            std::cout << "isUndef: " << val.isUndef() << std::endl;
            break;
        default:
            std::cout << "unknown type: " << val.getType() << std::endl;
    }
}