add some reusable List functions
This commit is contained in:
parent
42459486f7
commit
3b5c3a85f0
@ -218,6 +218,35 @@ static void sigar_set_pointer(JNIEnv *env, jobject obj, const void *ptr) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int jsigar_init_list(JNIEnv *env, jsigar_list_t *obj)
|
||||||
|
{
|
||||||
|
jclass listclass =
|
||||||
|
JENV->FindClass(env, "java/util/ArrayList");
|
||||||
|
jmethodID listid =
|
||||||
|
JENV->GetMethodID(env, listclass, "<init>", "()V");
|
||||||
|
jmethodID addid =
|
||||||
|
JENV->GetMethodID(env, listclass, "add",
|
||||||
|
"(Ljava/lang/Object;)"
|
||||||
|
"Z");
|
||||||
|
|
||||||
|
obj->env = env;
|
||||||
|
obj->obj = JENV->NewObject(env, listclass, listid);
|
||||||
|
obj->id = addid;
|
||||||
|
|
||||||
|
return SIGAR_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
int jsigar_list_add(void *data, char *value, int len)
|
||||||
|
{
|
||||||
|
jsigar_list_t *obj = (jsigar_list_t *)data;
|
||||||
|
JNIEnv *env = obj->env;
|
||||||
|
|
||||||
|
JENV->CallBooleanMethod(env, obj->obj, obj->id,
|
||||||
|
JENV->NewStringUTF(env, value));
|
||||||
|
|
||||||
|
return SIGAR_OK;
|
||||||
|
}
|
||||||
|
|
||||||
JNIEXPORT jstring SIGAR_JNIx(formatSize)
|
JNIEXPORT jstring SIGAR_JNIx(formatSize)
|
||||||
(JNIEnv *env, jclass cls, jlong size)
|
(JNIEnv *env, jclass cls, jlong size)
|
||||||
{
|
{
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
* USA.
|
* USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <jni.h>
|
||||||
|
|
||||||
#define JENV (*env)
|
#define JENV (*env)
|
||||||
|
|
||||||
#define SIGAR_PACKAGE "org/hyperic/sigar/"
|
#define SIGAR_PACKAGE "org/hyperic/sigar/"
|
||||||
@ -30,3 +32,20 @@
|
|||||||
#define SIGAR_CLASS_SIG(name) \
|
#define SIGAR_CLASS_SIG(name) \
|
||||||
"L" SIGAR_PACKAGE name ";"
|
"L" SIGAR_PACKAGE name ";"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
JNIEnv *env;
|
||||||
|
jobject obj;
|
||||||
|
jmethodID id;
|
||||||
|
} jsigar_list_t;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int jsigar_init_list(JNIEnv *env, jsigar_list_t *obj);
|
||||||
|
|
||||||
|
int jsigar_list_add(void *data, char *value, int len);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user