⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 typemaps_java.i

📁 支持各种栅格图像和矢量图像读取的库
💻 I
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************** * $Id: typemaps_java.i 11131 2007-04-01 08:06:49Z aaime $ * * Name:     typemaps_java.i * Project:  GDAL SWIG Interface * Purpose:  Typemaps for Java bindings * Author:   Benjamin Collins, The MITRE Corporation * * * $Log$ * Revision 1.2  2006/02/16 17:21:12  collinsb * Updates to Java bindings to keep the code from halting execution if the native libraries cannot be found. * * Revision 1.1  2006/02/02 20:56:07  collinsb * Added Java specific typemap code * **/%include "arrays_java.i";%include "typemaps.i"/* DISOWN implementation */%typemap(javacode) SWIGTYPE %{  protected static long getCPtrAndDisown($javaclassname obj) {    if (obj != null) obj.swigCMemOwn= false;    return getCPtr(obj);  }%}%typemap(javain) SWIGTYPE *DISOWN "$javaclassname.getCPtrAndDisown($javainput)" /* JAVA TYPEMAPS */%typemap(in) (double *val, int*hasval) ( double tmpval, int tmphasval ) {  /* %typemap(in,numinputs=0) (double *val, int*hasval) */  $1 = &tmpval;  $2 = &tmphasval;  if(jenv->GetArrayLength($input) < 1) {    return $null;  }}%typemap(argout) (double *val, int*hasval) {  /* %typemap(argout) (double *val, int*hasval) */  const jclass Double = jenv->FindClass("java/lang/Double");  const jmethodID ctor = jenv->GetMethodID(Double, "<init>",    "(D)V");  if(*$2) {    jobject dbl = jenv->NewObject(Double, ctor, tmpval$argnum);    jenv->SetObjectArrayElement($input, (jsize)0, dbl);  } else {    jenv->SetObjectArrayElement($input, (jsize)0, 0);  }}%typemap(jni) (double *val, int*hasval) "jobjectArray"%typemap(jtype) (double *val, int*hasval) "Double[]"%typemap(jstype) (double *val, int*hasval) "Double[]"%typemap(javain) (double *val, int*hasval) "$javainput"%typemap(javaout) (double *val, int*hasval) {    return $jnicall;  }%typemap(in) (GDALColorEntry *) (GDALColorEntry tmp) {  /* %typemap(in) (GDALColorEntry *) (GDALColorEntry tmp) */  $1 = NULL;  float *colorptr = 0;  const jclass Color = jenv->FindClass("java/awt/Color");  const jmethodID colors = jenv->GetMethodID(Color, "getRGBComponents",    "([F)[F");  jfloatArray colorArr = jenv->NewFloatArray(4);  colorArr = (jfloatArray)jenv->CallObjectMethod($input, colors, colorArr);   colorptr = (float *)jenv->GetFloatArrayElements(colorArr, 0);  tmp.c1 = (short)(colorptr[0] * 255);  tmp.c2 = (short)(colorptr[1] * 255);  tmp.c3 = (short)(colorptr[2] * 255);  tmp.c4 = (short)(colorptr[3] * 255);  /*printf( "  %d, %d, %d, %d\n",                    tmp.c1, tmp.c2, tmp.c3, tmp.c4 );*/  $1 = &tmp;}%typemap(out) (GDALColorEntry *) {  /* %typemap(out) (GDALColorEntry *) */  const jclass Color = jenv->FindClass("java/awt/Color");  const jmethodID ccon = jenv->GetMethodID(Color, "<init>",    "(IIII)V");  $result = jenv->NewObject(Color, ccon, $1->c1, $1->c2, $1->c3, $1->c4);}%typemap(jni) (GDALColorEntry *) "jobject"%typemap(jtype) (GDALColorEntry *) "java.awt.Color"%typemap(jstype) (GDALColorEntry *) "java.awt.Color"%typemap(javain) (GDALColorEntry *) "$javainput"%typemap(javaout) (GDALColorEntry *) {    return $jnicall;  }/* * Typemap argout of GDAL_GCP* used in Dataset::GetGCPs( ) */%typemap(in, numinputs=1) (int *nGCPs, GDAL_GCP const **pGCPs ) (int nGCPs=0, GDAL_GCP *pGCPs=0 ){  /* %typemap(in,numinputs=1) (int *nGCPs, GDAL_GCP const **pGCPs ) */  $1 = &nGCPs;  $2 = &pGCPs;}%typemap(argout) (int *nGCPs, GDAL_GCP const **pGCPs ){  /* %typemap(argout) (int *nGCPs, GDAL_GCP const **pGCPs ) */  const jclass GCPClass = jenv->FindClass("org/gdal/gdal/GCP");  const jclass vectorClass = jenv->FindClass("java/util/Vector");  const jmethodID add = jenv->GetMethodID(vectorClass, "add", "(Ljava/lang/Object;)Z");  const jmethodID GCPcon = jenv->GetMethodID(GCPClass, "<init>",    "(DDDDDLjava/lang/String;Ljava/lang/String;)V");  for( int i = 0; i < *$1; i++ ) {    jobject GCPobj = jenv->NewObject(GCPClass, GCPcon,                                 (*$2)[i].dfGCPX,                                (*$2)[i].dfGCPY,                                (*$2)[i].dfGCPZ,                                (*$2)[i].dfGCPPixel,                                (*$2)[i].dfGCPLine,                                (*$2)[i].pszInfo,                                (*$2)[i].pszId );	    jenv->CallBooleanMethod($input, add, GCPobj);  }  //$result = $input;}%typemap(jni) (int *nGCPs, GDAL_GCP const **pGCPs ) "jobject"%typemap(jtype) (int *nGCPs, GDAL_GCP const **pGCPs ) "java.util.Vector"%typemap(jstype) (int *nGCPs, GDAL_GCP const **pGCPs ) "java.util.Vector"%typemap(javain) (int *nGCPs, GDAL_GCP const **pGCPs ) "$javainput"%typemap(javaout) (int *nGCPs, GDAL_GCP const **pGCPs ) {    return $jnicall;  }%typemap(in) (int *nLen, char **pBuf ) ( int nLen, char *pBuf ){  /* %typemap(in) (int *nLen, char **pBuf ) */  $1 = &nLen;  $2 = &pBuf;}%typemap(argout) (int *nLen, char **pBuf ){  /* %typemap(argout) (int *nLen, char **pBuf ) */  /* make sure that the passed array is at lease length 1 */  if(jenv->GetArrayLength($input) >= 1) {    jcharArray charArray = jenv->NewCharArray(nLen$argnum);    jenv->SetCharArrayRegion(charArray, (jsize)0, (jsize)nLen$argnum, (jchar*)pBuf$argnum);    jenv->SetObjectArrayElement($input,0,charArray);  }}%typemap(freearg) (int *nLen, char **pBuf ){  /* %typemap(freearg) (int *nLen, char **pBuf ) */  if( $1 ) {    free( *$2 );  }}%typemap(jni) (int *nLen, char **pBuf ) "jobjectArray"%typemap(jtype) (int *nLen, char **pBuf ) "char[][]"%typemap(jstype) (int *nLen, char **pBuf ) "char[][]"%typemap(javain) (int *nLen, char **pBuf ) "$javainput"%typemap(javaout) (int *nLen, char **pBuf ) {    return $jnicall;  }%fragment("OGRErrMessages","header") %{static char const *OGRErrMessages( int rc ) {  switch( rc ) {  case 0:    return "OGR Error %d: None";  case 1:    return "OGR Error %d: Not enough data";  case 2:    return "OGR Error %d: Unsupported geometry type";  case 3:    return "OGR Error %d: Unsupported operation";  case 4:    return "OGR Error %d: Corrupt data";  case 5:    return "OGR Error %d: General Error";  case 6:    return "OGR Error %d: Unsupported SRS";  default:    return "OGR Error %d: Unknown";  }}%}%typemap(in) (int nLen, char *pBuf ) (jboolean isCopy){  /* %typemap(in) (int nLen, char *pBuf ) */  $1 = jenv->GetArrayLength($input);  $2 = (char *)jenv->GetCharArrayElements($input, &isCopy);}%typemap(argout) (int nLen, char *pBuf ){  /* %typemap(argout) (int nLen, char *pBuf ) */}%typemap(freearg) (int nLen, char *pBuf ){  /* %typemap(freearg) (int nLen, char *pBuf ) */  /* This calls JNI_ABORT, so any modifications will not be passed back      into the Java caller   */  if(isCopy$argnum == JNI_TRUE) {    jenv->ReleaseCharArrayElements($input, (jchar *)$2, 0);  }}%typemap(jni) (int nLen, char *pBuf ) "jcharArray"%typemap(jtype) (int nLen, char *pBuf ) "char[]"%typemap(jstype) (int nLen, char *pBuf ) "char[]"%typemap(javain) (int nLen, char *pBuf ) "$javainput"%typemap(javaout) (int nLen, char *pBuf ) {    return $jnicall;  }%typemap(in) (tostring argin){  /* %typemap(in) (tostring argin) */  $1 = (char *)jenv->GetStringUTFChars($input, 0);}%typemap(freearg) (tostring argin){  /* %typemap(in) (tostring argin) */  jenv->ReleaseStringUTFChars($input, (char*)$1);}%typemap(jni) (tostring argin) "jstring"%typemap(jtype) (tostring argin) "String"%typemap(jstype) (tostring argin) "String"%typemap(javain) (tostring argin) "$javainput"%typemap(javaout) (tostring argin) {    return $jnicall;  }%typemap(in) (char **ignorechange) (char *val){  /* %typemap(in) (char **ignorechange) */  val = (char *)jenv->GetStringUTFChars($input, 0);  $1 = &val;}%typemap(freearg) (char **ignorechange){  /* %typemap(freearg) (char **ignorechange) */  jenv->ReleaseStringUTFChars($input, val$argnum);}%typemap(jni) (char **ignorechange) "jstring"%typemap(jtype) (char **ignorechange) "String"%typemap(jstype) (char **ignorechange) "String"%typemap(javain) (char **ignorechange) "$javainput"%typemap(javaout) (char **ignorechange) {    return $jnicall;  }%typemap(out,fragment="OGRErrMessages") OGRErr{  /* %typemap(out) OGRErr */  if (result != 0) {    SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException,      OGRErrMessages(result));    return $null;  }  $result = (jint)result;}%typemap(ret) OGRErr{  /* %typemap(ret) OGRErr */}/* GDAL Typemaps */%typemap(out) IF_ERR_RETURN_NONE{  /* %typemap(out) IF_ERR_RETURN_NONE */  $result = 0;}%typemap(ret) IF_ERR_RETURN_NONE{ /* %typemap(ret) IF_ERR_RETURN_NONE */}%typemap(out) IF_FALSE_RETURN_NONE{  /* %typemap(out) IF_FALSE_RETURN_NONE */  $result = 0;}%typemap(ret) IF_FALSE_RETURN_NONE{ /* %typemap(ret) IF_FALSE_RETURN_NONE */}/*************************************************** * *  Java typemaps for (int nList, int* pList) * ***************************************************/ %typemap(in) (int nList, int* pList){  /* %typemap(in) (int nList, int* pList) */  /* check if is List */  $1 = jenv->GetArrayLength($input);  $2 = (int *)jenv->GetIntArrayElements($input, NULL);}%typemap(argout) (int nList, int* pList){  /* %typemap(argout) (int nList, int* pList) */}%typemap(freearg) (int nList, int* pList){  /* %typemap(freearg) (int nList, int* pList) */  if ($2) {    free((void*) $2);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -