// Copyright 2023 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.jni_zero.samples;

import org.jni_zero.samples.Boolean;

class SampleBidirectionalNonProxy {
    /** The pointer to the native Test. */
    public long nativeTest;
    private static native int nativeStaticMethod(long nativeTest, int arg1);
    private native int nativeMethod(long nativeTest, int arg1);
    @CalledByNative
    private void testMethodWithParam(int iParam) {}
    @CalledByNative
    private String testMethodWithParamAndReturn(int iParam) {
        return null;
    }
    @CalledByNative
    private static int testStaticMethodWithParam(int iParam) {
        return 0;
    }
    @CalledByNative
    private static double testMethodWithNoParam() {
        return 0;
    }
    @CalledByNative
    private static String testStaticMethodWithNoParam() {}

    // Tests passing a nested class from another class in the same package.
    @CalledByNative
    void addStructB(SampleForTests caller, SampleForTests.InnerStructB b) {}

    // Tests a java.lang class.
    @CalledByNative
    void setStringBuilder(StringBuilder sb) {}

    // Tests name collisions with java.lang classes.
    @CalledByNative
    void setBool(Boolean b, Integer i) {}

    class MyInnerClass {
        @NativeCall("MyInnerClass")
        private native int nativeInit();
    }
    class MyOtherInnerClass {
        @NativeCall("MyOtherInnerClass")
        private native int nativeInit();
    }
}
