[jvm-packages] Add methods operating attributes of booster in jvm package, which follow API design in python package. (#4336)
This commit is contained in:
@@ -706,6 +706,68 @@ JNIEXPORT jint JNICALL Java_ml_dmlc_xgboost4j_java_XGBoostJNI_XGBoosterDumpModel
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: ml_dmlc_xgboost4j_java_XGBoostJNI
|
||||
* Method: XGBoosterGetAttrNames
|
||||
* Signature: (I[[Ljava/lang/String;)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_ml_dmlc_xgboost4j_java_XGBoostJNI_XGBoosterGetAttrNames
|
||||
(JNIEnv *jenv, jclass jcls, jlong jhandle, jobjectArray jout) {
|
||||
BoosterHandle handle = (BoosterHandle) jhandle;
|
||||
bst_ulong len = 0;
|
||||
char **result;
|
||||
int ret = XGBoosterGetAttrNames(handle, &len, (const char ***) &result);
|
||||
|
||||
jsize jlen = (jsize) len;
|
||||
jobjectArray jinfos = jenv->NewObjectArray(jlen, jenv->FindClass("java/lang/String"), jenv->NewStringUTF(""));
|
||||
for(int i=0 ; i<jlen; i++) {
|
||||
jenv->SetObjectArrayElement(jinfos, i, jenv->NewStringUTF((const char*) result[i]));
|
||||
}
|
||||
jenv->SetObjectArrayElement(jout, 0, jinfos);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: ml_dmlc_xgboost4j_java_XGBoostJNI
|
||||
* Method: XGBoosterGetAttr
|
||||
* Signature: (JLjava/lang/String;[Ljava/lang/String;)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_ml_dmlc_xgboost4j_java_XGBoostJNI_XGBoosterGetAttr
|
||||
(JNIEnv *jenv, jclass jcls, jlong jhandle, jstring jkey, jobjectArray jout) {
|
||||
BoosterHandle handle = (BoosterHandle) jhandle;
|
||||
const char* key = jenv->GetStringUTFChars(jkey, 0);
|
||||
const char* result;
|
||||
int success;
|
||||
int ret = XGBoosterGetAttr(handle, key, &result, &success);
|
||||
//release
|
||||
if (key) jenv->ReleaseStringUTFChars(jkey, key);
|
||||
|
||||
if (success > 0) {
|
||||
jstring jret = jenv->NewStringUTF(result);
|
||||
jenv->SetObjectArrayElement(jout, 0, jret);
|
||||
}
|
||||
|
||||
return ret;
|
||||
};
|
||||
|
||||
/*
|
||||
* Class: ml_dmlc_xgboost4j_java_XGBoostJNI
|
||||
* Method: XGBoosterSetAttr
|
||||
* Signature: (JLjava/lang/String;Ljava/lang/String;)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_ml_dmlc_xgboost4j_java_XGBoostJNI_XGBoosterSetAttr
|
||||
(JNIEnv *jenv, jclass jcls, jlong jhandle, jstring jkey, jstring jvalue) {
|
||||
BoosterHandle handle = (BoosterHandle) jhandle;
|
||||
const char* key = jenv->GetStringUTFChars(jkey, 0);
|
||||
const char* value = jenv->GetStringUTFChars(jvalue, 0);
|
||||
int ret = XGBoosterSetAttr(handle, key, value);
|
||||
//release
|
||||
if (key) jenv->ReleaseStringUTFChars(jkey, key);
|
||||
if (value) jenv->ReleaseStringUTFChars(jvalue, value);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: ml_dmlc_xgboost4j_java_XGBoostJNI
|
||||
* Method: XGBoosterLoadRabitCheckpoint
|
||||
|
||||
Reference in New Issue
Block a user