class ugcs::vsm::Java::Env

#include <java.h>

class Env
{
public:
    // construction

    Env(JNIEnv* env);

    // methods

    JNIEnv* operator -> ();

    template <typename T_ret, typename... T_args>
    T_ret CallMethod(
        jobject obj,
        const std::string& method_name,
        const std::string& method_signature,
        T_args... args
        );

    template <typename T_ret, typename... T_args>
    T_ret CallVsmMethod(
        const std::string& method_name,
        const std::string& method_signature,
        T_args... args
        );

    template <typename T>
    Array<T> GetArray(jobject array);

    std::string GetString(jobject s);
    jstring WrapString(const std::string& s);
};