Listing 1
template <typename T> T* jobj_wrapper::arr_specific_return( ) const
{
jboolean copied = false;
jsize len = _env->GetArrayLength( (jarray) _jobj );
if( !_env->ExceptionCheck() ){
if( _env->IsInstanceOf( _jobj, java::classArrayOfIntegers ) ){
// if it is Java's int[] array
jint* jarr = _env->GetIntArrayElements( (jintArray) _jobj, &copied );
DEBUG_OUT( "\n jint* jarr = " << jarr;)
// copy will be created if only needed
T* pT = get_new_copy_on_need( jarr, len, newed, typeTp );
data = new Impl< T* >( pT, jarr, newed, len );
}
...
return &((Impl< vector<T> >*)data)->data[0];
}
...
}