// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.base;

import org.jni_zero.CalledByNative;

/**
 * A simple 2-argument callback with an int and a String as arguments.
 *
 * This is used to call a 2-argument Java callback from C++ code. The generic {@link
 * org.chromium.base.Callback} cannot be used because it is limited to a single argument.
 * Alternative approaches like encoding the two arguments into one string or one array of objects
 * with different types were considered, but their downside was both a lot of boilerplate (creating
 * the composed object in C++ and checking and decoding it in Java) and lack of clarity. This
 * 2-argument callback also adds a few code lines but it is clear and the compiler does the type
 * checking.
 */
public interface IntStringCallback {
    /**
     * Invoked with the result of a computation.
     *
     * @param number Integer part of the result.
     * @param string String part of the result.
     */
    @CalledByNative
    void onResult(int number, String string);
}
