[java-atk-wrapper] Factorize code to get ac jobjects from AtkObjects
- From: Samuel Thibault <sthibaul src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [java-atk-wrapper] Factorize code to get ac jobjects from AtkObjects
- Date: Fri, 2 Aug 2019 17:01:37 +0000 (UTC)
commit 04d525765b60daddb74756975823dd9ef4eb2ff1
Author: Samuel Thibault <samuel thibault ens-lyon org>
Date: Fri Aug 2 19:01:28 2019 +0200
Factorize code to get ac jobjects from AtkObjects
jni/src/jawaction.c | 97 +++------------
jni/src/jawcomponent.c | 101 +++------------
jni/src/jaweditabletext.c | 106 +++-------------
jni/src/jawhyperlink.c | 69 ++---------
jni/src/jawhypertext.c | 42 +------
jni/src/jawimage.c | 58 ++-------
jni/src/jawobject.c | 100 +++------------
jni/src/jawselection.c | 94 ++------------
jni/src/jawtable.c | 306 +++++++---------------------------------------
jni/src/jawtablecell.c | 114 ++++-------------
jni/src/jawtext.c | 228 ++++------------------------------
jni/src/jawutil.h | 27 ++++
jni/src/jawvalue.c | 72 +++--------
13 files changed, 231 insertions(+), 1183 deletions(-)
---
diff --git a/jni/src/jawaction.c b/jni/src/jawaction.c
index abad372..bccfc71 100644
--- a/jni/src/jawaction.c
+++ b/jni/src/jawaction.c
@@ -39,6 +39,9 @@ typedef struct _ActionData {
jstring jstrActionKeybinding;
} ActionData;
+#define JAW_GET_ACTION(action, def_ret) \
+ JAW_GET_OBJ_IFACE(action, INTERFACE_ACTION, ActionData, atk_action, jniEnv, atk_action, def_ret)
+
void
jaw_action_interface_init (AtkActionIface *iface, gpointer data)
{
@@ -114,18 +117,7 @@ static gboolean
jaw_action_do_action (AtkAction *action, gint i)
{
JAW_DEBUG_C("%p, %d", action, i);
- JawObject *jaw_obj = JAW_OBJECT(action);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- ActionData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_ACTION);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_action = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_action);
- if (!atk_action) {
- JAW_DEBUG_I("atk_action == NULL");
- return FALSE;
- }
+ JAW_GET_ACTION(action, FALSE);
jclass classAtkAction = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkAction");
@@ -145,18 +137,7 @@ static gint
jaw_action_get_n_actions (AtkAction *action)
{
JAW_DEBUG_C("%p", action);
- JawObject *jaw_obj = JAW_OBJECT(action);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- ActionData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_ACTION);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_action = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_action);
- if (!atk_action) {
- JAW_DEBUG_I("atk_action == NULL");
- return 0;
- }
+ JAW_GET_ACTION(action, 0);
jclass classAtkAction = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkAction");
@@ -173,18 +154,7 @@ static const gchar*
jaw_action_get_description (AtkAction *action, gint i)
{
JAW_DEBUG_C("%p, %d", action, i);
- JawObject *jaw_obj = JAW_OBJECT(action);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- ActionData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_ACTION);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_action = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_action);
- if (!atk_action) {
- JAW_DEBUG_I("atk_action == NULL");
- return NULL;
- }
+ JAW_GET_ACTION(action, NULL);
jclass classAtkAction = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkAction");
@@ -222,18 +192,7 @@ static gboolean
jaw_action_set_description (AtkAction *action, gint i, const gchar *description)
{
JAW_DEBUG_C("%p, %d, %s", action, i, description);
- JawObject *jaw_obj = JAW_OBJECT(action);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- ActionData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_ACTION);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_action = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_action);
- if (!atk_action) {
- JAW_DEBUG_I("atk_action == NULL");
- return FALSE;
- }
+ JAW_GET_ACTION(action, FALSE);
jclass classAtkAction = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkAction");
@@ -254,33 +213,22 @@ static const gchar*
jaw_action_get_localized_name (AtkAction *action, gint i)
{
JAW_DEBUG_C("%p, %d", action, i);
- JawObject *jaw_obj = JAW_OBJECT(action);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- ActionData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_ACTION);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_action = (*env)->NewGlobalRef(env, data->atk_action);
- if (!atk_action) {
- JAW_DEBUG_I("atk_action == NULL");
- return NULL;
- }
+ JAW_GET_ACTION(action, NULL);
- jclass classAtkAction = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkAction");
- jmethodID jmid = (*env)->GetMethodID(env,
+ jclass classAtkAction = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkAction");
+ jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
classAtkAction,
"getLocalizedName",
"(I)Ljava/lang/String;");
- jstring jstr = (*env)->CallObjectMethod(env, atk_action, jmid, (jint)i);
- (*env)->DeleteGlobalRef(env, atk_action);
+ jstring jstr = (*jniEnv)->CallObjectMethod(jniEnv, atk_action, jmid, (jint)i);
+ (*jniEnv)->DeleteGlobalRef(jniEnv, atk_action);
if (data->localized_name != NULL)
{
- (*env)->ReleaseStringUTFChars(env, data->jstrLocalizedName, data->localized_name);
- (*env)->DeleteGlobalRef(env, data->jstrLocalizedName);
+ (*jniEnv)->ReleaseStringUTFChars(jniEnv, data->jstrLocalizedName, data->localized_name);
+ (*jniEnv)->DeleteGlobalRef(jniEnv, data->jstrLocalizedName);
}
- data->jstrLocalizedName = (*env)->NewGlobalRef(env, jstr);
- data->localized_name = (gchar*)(*env)->GetStringUTFChars(env, data->jstrLocalizedName, NULL);
+ data->jstrLocalizedName = (*jniEnv)->NewGlobalRef(jniEnv, jstr);
+ data->localized_name = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv, data->jstrLocalizedName, NULL);
return data->localized_name;
}
@@ -288,18 +236,7 @@ static const gchar*
jaw_action_get_keybinding (AtkAction *action, gint i)
{
JAW_DEBUG_C("%p, %d", action, i);
- JawObject *jaw_obj = JAW_OBJECT(action);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- ActionData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_ACTION);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_action = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_action);
- if (!atk_action) {
- JAW_DEBUG_I("atk_action == NULL");
- return NULL;
- }
+ JAW_GET_ACTION(action, NULL);
jclass classAtkAction = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkAction");
diff --git a/jni/src/jawcomponent.c b/jni/src/jawcomponent.c
index 9a9fc05..c3ae34f 100644
--- a/jni/src/jawcomponent.c
+++ b/jni/src/jawcomponent.c
@@ -56,6 +56,9 @@ typedef struct _ComponentData {
jobject atk_component;
} ComponentData;
+#define JAW_GET_COMPONENT(component, def_ret) \
+ JAW_GET_OBJ_IFACE(component, INTERFACE_COMPONENT, ComponentData, atk_component, jniEnv, atk_component,
def_ret)
+
void
jaw_component_interface_init (AtkComponentIface *iface, gpointer data)
{
@@ -116,18 +119,7 @@ static gboolean
jaw_component_contains (AtkComponent *component, gint x, gint y, AtkCoordType coord_type)
{
JAW_DEBUG_C("%p, %d, %d, %d", component, x, y, coord_type);
- JawObject *jaw_obj = JAW_OBJECT(component);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- ComponentData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_COMPONENT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_component = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_component);
- if (!atk_component) {
- JAW_DEBUG_I("atk_component == NULL");
- return FALSE;
- }
+ JAW_GET_COMPONENT(component, FALSE);
jclass classAtkComponent = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkComponent");
@@ -152,18 +144,7 @@ static AtkObject*
jaw_component_ref_accessible_at_point (AtkComponent *component, gint x, gint y, AtkCoordType coord_type)
{
JAW_DEBUG_C("%p, %d, %d, %d", component, x, y, coord_type);
- JawObject *jaw_obj = JAW_OBJECT(component);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- ComponentData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_COMPONENT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_component = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_component);
- if (!atk_component) {
- JAW_DEBUG_I("atk_component == NULL");
- return NULL;
- }
+ JAW_GET_COMPONENT(component, NULL);
jclass classAtkComponent = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkComponent");
@@ -199,30 +180,15 @@ jaw_component_get_extents (AtkComponent *component,
if (x == NULL || y == NULL || width == NULL || height == NULL)
return;
+ (*x) = 0;
+ (*y) = 0;
+ (*width) = 0;
+ (*height) = 0;
+
if (component == NULL)
return;
- JawObject *jaw_obj = JAW_OBJECT(component);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- (*x) = 0;
- (*y) = 0;
- (*width) = 0;
- (*height) = 0;
- return;
- }
- ComponentData *data = jaw_object_get_interface_data(jaw_obj,
- INTERFACE_COMPONENT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_component = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_component);
- if (!atk_component) {
- JAW_DEBUG_I("atk_component == NULL");
- (*x) = 0;
- (*y) = 0;
- (*width) = 0;
- (*height) = 0;
- return;
- }
+ JAW_GET_COMPONENT(component, );
jclass classAtkComponent = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkComponent");
@@ -237,10 +203,6 @@ jaw_component_get_extents (AtkComponent *component,
if (jrectangle == NULL)
{
JAW_DEBUG_I("jrectangle == NULL");
- (*x) = 0;
- (*y) = 0;
- (*width) = 0;
- (*height) = 0;
return;
}
@@ -264,18 +226,8 @@ jaw_component_set_extents (AtkComponent *component,
AtkCoordType coord_type)
{
JAW_DEBUG_C("%p, %d, %d, %d, %d, %d", component, x, y, width, height, coord_type);
- JawObject *jaw_obj = JAW_OBJECT(component);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- ComponentData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_COMPONENT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_component = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_component);
- if (!atk_component) {
- JAW_DEBUG_I("atk_component == NULL");
- return FALSE;
- }
+ JAW_GET_COMPONENT(component, FALSE);
+
jclass classAtkComponent = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkComponent");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkComponent, "set_extents", "(IIIII)Z");
jboolean assigned = (*jniEnv)->CallBooleanMethod(jniEnv, atk_component, jmid, (jint)x, (jint)y,
(jint)width, (jint)height, (jint)coord_type);
@@ -287,18 +239,7 @@ static gboolean
jaw_component_grab_focus (AtkComponent *component)
{
JAW_DEBUG_C("%p", component);
- JawObject *jaw_obj = JAW_OBJECT(component);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- ComponentData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_COMPONENT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_component = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_component);
- if (!atk_component) {
- JAW_DEBUG_I("atk_component == NULL");
- return FALSE;
- }
+ JAW_GET_COMPONENT(component, FALSE);
jclass classAtkComponent = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkComponent");
@@ -315,19 +256,7 @@ static AtkLayer
jaw_component_get_layer (AtkComponent *component)
{
JAW_DEBUG_C("%p", component);
- JawObject *jaw_obj = JAW_OBJECT(component);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- ComponentData *data = jaw_object_get_interface_data(jaw_obj,
- INTERFACE_COMPONENT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_component = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_component);
- if (!atk_component) {
- JAW_DEBUG_I("atk_component == NULL");
- return 0;
- }
+ JAW_GET_COMPONENT(component, 0);
jclass classAtkComponent = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkComponent");
diff --git a/jni/src/jaweditabletext.c b/jni/src/jaweditabletext.c
index 61954e6..3d8e71e 100644
--- a/jni/src/jaweditabletext.c
+++ b/jni/src/jaweditabletext.c
@@ -50,6 +50,9 @@ typedef struct _EditableTextData {
jobject atk_editable_text;
}EditableTextData;
+#define JAW_GET_EDITABLETEXT(text, def_ret) \
+ JAW_GET_OBJ_IFACE(text, INTERFACE_EDITABLE_TEXT, EditableTextData, atk_editable_text, jniEnv,
atk_editable_text, def_ret)
+
void
jaw_editable_text_interface_init (AtkEditableTextIface *iface, gpointer data)
{
@@ -105,18 +108,7 @@ jaw_editable_text_set_text_contents (AtkEditableText *text,
const gchar *string)
{
JAW_DEBUG_C("%p, %s", text, string);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return;
- }
- EditableTextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_EDITABLE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_editable_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_editable_text);
- if (!atk_editable_text) {
- JAW_DEBUG_I("atk_editable_text == NULL");
- return;
- }
+ JAW_GET_EDITABLETEXT(text, );
jclass classAtkEditableText = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkEditableText");
@@ -137,18 +129,7 @@ jaw_editable_text_insert_text (AtkEditableText *text,
gint *position)
{
JAW_DEBUG_C("%p, %s, %d, %p", text, string, length, position);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return;
- }
- EditableTextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_EDITABLE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_editable_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_editable_text);
- if (!atk_editable_text) {
- JAW_DEBUG_I("atk_editable_text == NULL");
- return;
- }
+ JAW_GET_EDITABLETEXT(text, );
jclass classAtkEditableText = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkEditableText");
@@ -173,19 +154,7 @@ jaw_editable_text_copy_text (AtkEditableText *text,
gint end_pos)
{
JAW_DEBUG_C("%p, %d, %d", text, start_pos, end_pos);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return;
- }
- EditableTextData *data = jaw_object_get_interface_data(jaw_obj,
- INTERFACE_EDITABLE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_editable_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_editable_text);
- if (!atk_editable_text) {
- JAW_DEBUG_I("atk_editable_text == NULL");
- return;
- }
+ JAW_GET_EDITABLETEXT(text, );
jclass classAtkEditableText = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkEditableText");
@@ -206,18 +175,7 @@ jaw_editable_text_cut_text (AtkEditableText *text,
gint start_pos, gint end_pos)
{
JAW_DEBUG_C("%p, %d, %d", text, start_pos, end_pos);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return;
- }
- EditableTextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_EDITABLE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_editable_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_editable_text);
- if (!atk_editable_text) {
- JAW_DEBUG_I("atk_editable_text == NULL");
- return;
- }
+ JAW_GET_EDITABLETEXT(text, );
jclass classAtkEditableText = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkEditableText");
@@ -239,19 +197,7 @@ jaw_editable_text_delete_text (AtkEditableText *text,
gint end_pos)
{
JAW_DEBUG_C("%p, %d, %d", text, start_pos, end_pos);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return;
- }
- EditableTextData *data = jaw_object_get_interface_data(jaw_obj,
- INTERFACE_EDITABLE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_editable_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_editable_text);
- if (!atk_editable_text) {
- JAW_DEBUG_I("atk_editable_text == NULL");
- return;
- }
+ JAW_GET_EDITABLETEXT(text, );
jclass classAtkEditableText = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkEditableText");
@@ -272,19 +218,7 @@ jaw_editable_text_paste_text (AtkEditableText *text,
gint position)
{
JAW_DEBUG_C("%p, %d", text, position);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return;
- }
- EditableTextData *data = jaw_object_get_interface_data(jaw_obj,
- INTERFACE_EDITABLE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_editable_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_editable_text);
- if (!atk_editable_text) {
- JAW_DEBUG_I("atk_editable_text == NULL");
- return;
- }
+ JAW_GET_EDITABLETEXT(text, );
jclass classAtkEditableText = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkEditableText");
@@ -306,29 +240,19 @@ jaw_editable_text_set_run_attributes(AtkEditableText *text,
gint end_offset)
{
JAW_DEBUG_C("%p, %p, %d, %d", text, attrib_set, start_offset, end_offset);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- EditableTextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_EDITABLE_TEXT);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_editable_text = (*env)->NewGlobalRef(env, data->atk_editable_text);
- if (!atk_editable_text) {
- JAW_DEBUG_I("atk_editable_text == NULL");
- return FALSE;
- }
- jclass classAtkEditableText = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkEditableText");
- jmethodID jmid = (*env)->GetMethodID(env,
+ JAW_GET_EDITABLETEXT(text, FALSE);
+
+ jclass classAtkEditableText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkEditableText");
+ jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
classAtkEditableText,
"setRunAttributes",
"(Ljavax/swing/text/AttributeSet;II)Z");
- jboolean jresult = (*env)->CallBooleanMethod(env,
+ jboolean jresult = (*jniEnv)->CallBooleanMethod(jniEnv,
atk_editable_text,
jmid,
(jobject)attrib_set,
(jint)start_offset,
(jint)end_offset);
- (*env)->DeleteGlobalRef(env, atk_editable_text);
+ (*jniEnv)->DeleteGlobalRef(jniEnv, atk_editable_text);
return jresult;
}
diff --git a/jni/src/jawhyperlink.c b/jni/src/jawhyperlink.c
index 69cdc74..a19c145 100644
--- a/jni/src/jawhyperlink.c
+++ b/jni/src/jawhyperlink.c
@@ -37,6 +37,9 @@ static gint jaw_hyperlink_get_n_anchors (AtkHyperlink
*atk_hyperlink);
G_DEFINE_TYPE (JawHyperlink, jaw_hyperlink, ATK_TYPE_HYPERLINK)
+#define JAW_GET_HYPERLINK(atk_hyperlink, def_ret) \
+ JAW_GET_OBJ(atk_hyperlink, JAW_HYPERLINK, JawHyperlink, jaw_hyperlink, jhyperlink, jniEnv, jhyperlink,
def_ret)
+
JawHyperlink*
jaw_hyperlink_new (jobject jhyperlink)
{
@@ -100,16 +103,7 @@ jaw_hyperlink_get_uri (AtkHyperlink *atk_hyperlink,
gint i)
{
JAW_DEBUG_C("%p, %d", atk_hyperlink, i);
- JawHyperlink *jaw_hyperlink = JAW_HYPERLINK(atk_hyperlink);
- if (!jaw_hyperlink) {
- JAW_DEBUG_I("jaw_hyperlink == NULL");
- return NULL;
- }
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject jhyperlink = (*jniEnv)->NewGlobalRef(jniEnv, jaw_hyperlink->jhyperlink);
- if (!jhyperlink) {
- return NULL;
- }
+ JAW_GET_HYPERLINK(atk_hyperlink, NULL);
jclass classAtkHyperlink = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHyperlink");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkHyperlink, "get_uri",
"(I)Ljava/lang/String;");
@@ -132,16 +126,7 @@ jaw_hyperlink_get_object (AtkHyperlink *atk_hyperlink,
gint i)
{
JAW_DEBUG_C("%p, %d", atk_hyperlink, i);
- JawHyperlink *jaw_hyperlink = JAW_HYPERLINK(atk_hyperlink);
- if (!jaw_hyperlink) {
- JAW_DEBUG_I("jaw_hyperlink == NULL");
- return NULL;
- }
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject jhyperlink = (*jniEnv)->NewGlobalRef(jniEnv, jaw_hyperlink->jhyperlink);
- if (!jhyperlink) {
- return NULL;
- }
+ JAW_GET_HYPERLINK(atk_hyperlink, NULL);
jclass classAtkHyperlink = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHyperlink");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkHyperlink, "get_object",
"(I)Ljavax/accessibility/AccessibleContext;");
@@ -160,16 +145,7 @@ static gint
jaw_hyperlink_get_end_index (AtkHyperlink *atk_hyperlink)
{
JAW_DEBUG_C("%p", atk_hyperlink);
- JawHyperlink *jaw_hyperlink = JAW_HYPERLINK(atk_hyperlink);
- if (!jaw_hyperlink) {
- JAW_DEBUG_I("jaw_hyperlink == NULL");
- return 0;
- }
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject jhyperlink = (*jniEnv)->NewGlobalRef(jniEnv, jaw_hyperlink->jhyperlink);
- if (!jhyperlink) {
- return 0;
- }
+ JAW_GET_HYPERLINK(atk_hyperlink, 0);
jclass classAtkHyperlink = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHyperlink");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkHyperlink, "get_end_index", "()I");
@@ -182,16 +158,7 @@ jaw_hyperlink_get_end_index (AtkHyperlink *atk_hyperlink)
static gint jaw_hyperlink_get_start_index (AtkHyperlink *atk_hyperlink)
{
JAW_DEBUG_C("%p", atk_hyperlink);
- JawHyperlink *jaw_hyperlink = JAW_HYPERLINK(atk_hyperlink);
- if (!jaw_hyperlink) {
- JAW_DEBUG_I("jaw_hyperlink == NULL");
- return 0;
- }
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject jhyperlink = (*jniEnv)->NewGlobalRef(jniEnv, jaw_hyperlink->jhyperlink);
- if (!jhyperlink) {
- return 0;
- }
+ JAW_GET_HYPERLINK(atk_hyperlink, 0);
jclass classAtkHyperlink = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHyperlink");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkHyperlink, "get_start_index", "()I");
@@ -204,16 +171,7 @@ static gint jaw_hyperlink_get_start_index (AtkHyperlink *atk_hyperlink)
static gboolean jaw_hyperlink_is_valid (AtkHyperlink *atk_hyperlink)
{
JAW_DEBUG_C("%p", atk_hyperlink);
- JawHyperlink *jaw_hyperlink = JAW_HYPERLINK(atk_hyperlink);
- if (!jaw_hyperlink) {
- JAW_DEBUG_I("jaw_hyperlink == NULL");
- return FALSE;
- }
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject jhyperlink = (*jniEnv)->NewGlobalRef(jniEnv, jaw_hyperlink->jhyperlink);
- if (!jhyperlink) {
- return FALSE;
- }
+ JAW_GET_HYPERLINK(atk_hyperlink, FALSE);
jclass classAtkHyperlink = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHyperlink");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkHyperlink, "is_valid", "()Z");
@@ -226,16 +184,7 @@ static gboolean jaw_hyperlink_is_valid (AtkHyperlink *atk_hyperlink)
static gint jaw_hyperlink_get_n_anchors (AtkHyperlink *atk_hyperlink)
{
JAW_DEBUG_C("%p", atk_hyperlink);
- JawHyperlink *jaw_hyperlink = JAW_HYPERLINK(atk_hyperlink);
- if (!jaw_hyperlink) {
- JAW_DEBUG_I("jaw_hyperlink == NULL");
- return 0;
- }
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject jhyperlink = (*jniEnv)->NewGlobalRef(jniEnv, jaw_hyperlink->jhyperlink);
- if (!jhyperlink) {
- return 0;
- }
+ JAW_GET_HYPERLINK(atk_hyperlink, 0);
jclass classAtkHyperlink = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHyperlink");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkHyperlink, "get_n_anchors", "()I");
diff --git a/jni/src/jawhypertext.c b/jni/src/jawhypertext.c
index 0ecc979..077ea29 100644
--- a/jni/src/jawhypertext.c
+++ b/jni/src/jawhypertext.c
@@ -34,6 +34,9 @@ typedef struct _HypertextData {
GHashTable *link_table;
} HypertextData;
+#define JAW_GET_HYPERTEXT(hypertext, def_ret) \
+ JAW_GET_OBJ_IFACE(hypertext, INTERFACE_HYPERTEXT, HypertextData, atk_hypertext, jniEnv, atk_hypertext,
def_ret)
+
void
jaw_hypertext_interface_init (AtkHypertextIface *iface, gpointer data)
{
@@ -87,18 +90,7 @@ static AtkHyperlink*
jaw_hypertext_get_link (AtkHypertext *hypertext, gint link_index)
{
JAW_DEBUG_C("%p, %d", hypertext, link_index);
- JawObject *jaw_obj = JAW_OBJECT(hypertext);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- HypertextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_HYPERTEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_hypertext = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_hypertext);
- if (!atk_hypertext) {
- JAW_DEBUG_I("atk_hypertext == NULL");
- return NULL;
- }
+ JAW_GET_HYPERTEXT(hypertext, NULL);
jclass classAtkHypertext = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHypertext");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkHypertext, "get_link",
"(I)Lorg/GNOME/Accessibility/AtkHyperlink;");
@@ -119,18 +111,7 @@ static gint
jaw_hypertext_get_n_links (AtkHypertext *hypertext)
{
JAW_DEBUG_C("%p", hypertext);
- JawObject *jaw_obj = JAW_OBJECT(hypertext);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- HypertextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_HYPERTEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_hypertext = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_hypertext);
- if (!atk_hypertext) {
- JAW_DEBUG_I("atk_hypertext == NULL");
- return 0;
- }
+ JAW_GET_HYPERTEXT(hypertext, 0);
jclass classAtkHypertext = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHypertext");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkHypertext, "get_n_links", "()I");
@@ -144,18 +125,7 @@ static gint
jaw_hypertext_get_link_index (AtkHypertext *hypertext, gint char_index)
{
JAW_DEBUG_C("%p, %d", hypertext, char_index);
- JawObject *jaw_obj = JAW_OBJECT(hypertext);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- HypertextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_HYPERTEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_hypertext = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_hypertext);
- if (!atk_hypertext) {
- JAW_DEBUG_I("atk_hypertext == NULL");
- return 0;
- }
+ JAW_GET_HYPERTEXT(hypertext, 0);
jclass classAtkHypertext = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkHypertext");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkHypertext, "get_link_index", "(I)I");
diff --git a/jni/src/jawimage.c b/jni/src/jawimage.c
index 9faf9b8..833fb11 100644
--- a/jni/src/jawimage.c
+++ b/jni/src/jawimage.c
@@ -37,6 +37,9 @@ typedef struct _ImageData {
jstring jstrImageDescription;
} ImageData;
+#define JAW_GET_IMAGE(image, def_ret) \
+ JAW_GET_OBJ_IFACE(image, INTERFACE_IMAGE, ImageData, atk_image, jniEnv, atk_image, def_ret)
+
void
jaw_image_interface_init (AtkImageIface *iface, gpointer data)
{
@@ -89,22 +92,9 @@ jaw_image_get_image_position (AtkImage *image,
gint *x, gint *y, AtkCoordType coord_type)
{
JAW_DEBUG_C("%p, %p, %p, %d", image, x, y, coord_type);
- JawObject *jaw_obj = JAW_OBJECT(image);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- (*x) = 0;
- (*y) = 0;
- return;
- }
- ImageData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_IMAGE);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_image = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_image);
- if (!atk_image) {
- JAW_DEBUG_I("atk_image == NULL");
- (*x) = 0;
- (*y) = 0;
- return;
- }
+ (*x) = 0;
+ (*y) = 0;
+ JAW_GET_IMAGE(image, );
jclass classAtkImage = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkImage");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkImage, "get_image_position",
"(I)Ljava/awt/Point;");
@@ -113,8 +103,6 @@ jaw_image_get_image_position (AtkImage *image,
if (jpoint == NULL) {
JAW_DEBUG_I("jpoint == NULL");
- (*x) = 0;
- (*y) = 0;
return;
}
@@ -132,18 +120,7 @@ static const gchar*
jaw_image_get_image_description (AtkImage *image)
{
JAW_DEBUG_C("%p", image);
- JawObject *jaw_obj = JAW_OBJECT(image);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- ImageData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_IMAGE);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_image = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_image);
- if (!atk_image) {
- JAW_DEBUG_I("atk_image == NULL");
- return NULL;
- }
+ JAW_GET_IMAGE(image, NULL);
jclass classAtkImage = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkImage");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkImage, "get_image_description",
"()Ljava/lang/String;");
@@ -165,22 +142,9 @@ static void
jaw_image_get_image_size (AtkImage *image, gint *width, gint *height)
{
JAW_DEBUG_C("%p, %p, %p", image, width, height);
- JawObject *jaw_obj = JAW_OBJECT(image);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- (*width) = 0;
- (*height) = 0;
- return;
- }
- ImageData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_IMAGE);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_image = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_image);
- if (!atk_image) {
- JAW_DEBUG_I("atk_image == NULL");
- (*width) = 0;
- (*height) = 0;
- return;
- }
+ (*width) = 0;
+ (*height) = 0;
+ JAW_GET_IMAGE(image, );
jclass classAtkImage = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkImage");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkImage, "get_image_size",
"()Ljava/awt/Dimension;");
@@ -189,8 +153,6 @@ jaw_image_get_image_size (AtkImage *image, gint *width, gint *height)
if (jdimension == NULL) {
JAW_DEBUG_I("jdimension == NULL");
- (*width) = 0;
- (*height) = 0;
return;
}
diff --git a/jni/src/jawobject.c b/jni/src/jawobject.c
index 425305e..3507cfb 100644
--- a/jni/src/jawobject.c
+++ b/jni/src/jawobject.c
@@ -73,6 +73,9 @@ static guint jaw_window_signals[LAST_SIGNAL] = { 0, };
G_DEFINE_TYPE (JawObject, jaw_object, ATK_TYPE_OBJECT);
+#define JAW_GET_OBJECT(atk_obj, def_ret) \
+ JAW_GET_OBJ(atk_obj, JAW_OBJECT, JawObject, jaw_obj, acc_context, jniEnv, ac, def_ret)
+
static guint
jaw_window_add_signal (const gchar *name, JawObjectClass *klass)
{
@@ -219,11 +222,7 @@ jaw_object_get_parent(AtkObject *atk_obj)
if (jaw_toplevel_get_child_index(JAW_TOPLEVEL(atk_get_root()), atk_obj) != -1)
return ATK_OBJECT(atk_get_root());
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject ac = (*jniEnv)->NewGlobalRef(jniEnv, jaw_obj->acc_context);
- if (!ac)
- return NULL;
+ JAW_GET_OBJECT(atk_obj, NULL);
jclass atkObject = (*jniEnv)->FindClass (jniEnv,"org/GNOME/Accessibility/AtkObject");
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getAccessibleParent",
"(Ljavax/accessibility/AccessibleContext;)Ljavax/accessibility/AccessibleContext;");
@@ -246,12 +245,8 @@ static void
jaw_object_set_parent(AtkObject *atk_obj, AtkObject *parent)
{
JAW_DEBUG_C("%p, %p", atk_obj, parent);
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject ac = (*jniEnv)->NewGlobalRef(jniEnv, jaw_obj->acc_context);
- if (!ac) {
- return;
- }
+ JAW_GET_OBJECT(atk_obj, );
+
JawObject *jaw_par = JAW_OBJECT(parent);
jobject pa = (*jniEnv)->NewGlobalRef(jniEnv, jaw_par->acc_context);
if (!pa) {
@@ -271,8 +266,6 @@ static const gchar*
jaw_object_get_name (AtkObject *atk_obj)
{
JAW_DEBUG_C("%p", atk_obj);
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
atk_obj->name = (gchar *)ATK_OBJECT_CLASS (parent_class)->get_name (atk_obj);
@@ -292,10 +285,7 @@ jaw_object_get_name (AtkObject *atk_obj)
}
}
- jobject ac = (*jniEnv)->NewGlobalRef(jniEnv, jaw_obj->acc_context);
- if (!ac) {
- return NULL;
- }
+ JAW_GET_OBJECT(atk_obj, NULL);
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getAccessibleName",
"(Ljavax/accessibility/AccessibleContext;)Ljava/lang/String;");
@@ -325,12 +315,7 @@ jaw_object_get_name (AtkObject *atk_obj)
static void jaw_object_set_name (AtkObject *atk_obj, const gchar *name)
{
JAW_DEBUG_C("%p, %s", atk_obj, name);
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject ac = (*jniEnv)->NewGlobalRef(jniEnv, jaw_obj->acc_context);
- if (!ac) {
- return;
- }
+ JAW_GET_OBJECT(atk_obj, );
jstring jstr = NULL;
if (name) {
@@ -348,12 +333,7 @@ static const gchar*
jaw_object_get_description (AtkObject *atk_obj)
{
JAW_DEBUG_C("%p", atk_obj);
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject ac = (*jniEnv)->NewGlobalRef(jniEnv, jaw_obj->acc_context);
- if (!ac) {
- return NULL;
- }
+ JAW_GET_OBJECT(atk_obj, NULL);
jclass atkObject = (*jniEnv)->FindClass ( jniEnv, "org/GNOME/Accessibility/AtkObject");
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getAccessibleDescription",
"(Ljavax/accessibility/AccessibleContext;)Ljava/lang/String;");
@@ -383,12 +363,7 @@ jaw_object_get_description (AtkObject *atk_obj)
static void jaw_object_set_description (AtkObject *atk_obj, const gchar *description)
{
JAW_DEBUG_C("%p, %s", atk_obj, description);
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject ac = (*jniEnv)->NewGlobalRef(jniEnv, jaw_obj->acc_context);
- if (!ac) {
- return;
- }
+ JAW_GET_OBJECT(atk_obj, );
jstring jstr = NULL;
if (description) {
@@ -407,12 +382,7 @@ static gint
jaw_object_get_n_children (AtkObject *atk_obj)
{
JAW_DEBUG_C("%p", atk_obj);
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject ac = (*jniEnv)->NewGlobalRef(jniEnv, jaw_obj->acc_context);
- if (!ac) {
- return 0;
- }
+ JAW_GET_OBJECT(atk_obj, 0);
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getAccessibleChildrenCount",
"(Ljavax/accessibility/AccessibleContext;)I");
@@ -432,12 +402,7 @@ jaw_object_get_index_in_parent (AtkObject *atk_obj)
return jaw_toplevel_get_child_index(JAW_TOPLEVEL(atk_get_root()), atk_obj);
}
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject ac = (*jniEnv)->NewGlobalRef(jniEnv, jaw_obj->acc_context);
- if (!ac) {
- return 0;
- }
+ JAW_GET_OBJECT(atk_obj, 0);
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getAccessibleIndexInParent",
"(Ljavax/accessibility/AccessibleContext;)I");
@@ -457,11 +422,8 @@ jaw_object_get_role (AtkObject *atk_obj)
return atk_obj->role;
}
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject ac = (*jniEnv)->NewGlobalRef(jniEnv, jaw_obj->acc_context);
- if (!ac)
- return ATK_ROLE_INVALID;
+ JAW_GET_OBJECT(atk_obj, ATK_ROLE_INVALID);
+
AtkRole role = jaw_util_get_atk_role_from_AccessibleContext(ac);
(*jniEnv)->DeleteGlobalRef(jniEnv, ac);
return role;
@@ -478,16 +440,11 @@ static AtkStateSet*
jaw_object_ref_state_set (AtkObject *atk_obj)
{
JAW_DEBUG_C("%p", atk_obj);
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
+ JAW_GET_OBJECT(atk_obj, NULL);
+
AtkStateSet* state_set = jaw_obj->state_set;
atk_state_set_clear_states( state_set );
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject ac = (*jniEnv)->NewGlobalRef(jniEnv, jaw_obj->acc_context);
- if (!ac) {
- return NULL;
- }
-
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getArrayAccessibleState",
"(Ljavax/accessibility/AccessibleContext;)[Ljavax/accessibility/AccessibleState;");
jobject jstate_arr = (*jniEnv)->CallStaticObjectMethod (jniEnv, atkObject, jmid, ac);
@@ -517,12 +474,7 @@ jaw_object_ref_state_set (AtkObject *atk_obj)
static const gchar *jaw_object_get_object_locale (AtkObject *atk_obj)
{
JAW_DEBUG_C("%p", atk_obj);
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject ac = (*jniEnv)->NewGlobalRef(jniEnv, jaw_obj->acc_context);
- if (!ac) {
- return NULL;
- }
+ JAW_GET_OBJECT(atk_obj, NULL);
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getLocale",
"(Ljavax/accessibility/AccessibleContext;)Ljava/lang/String;");
@@ -553,18 +505,11 @@ static AtkRelationSet*
jaw_object_ref_relation_set (AtkObject *atk_obj)
{
JAW_DEBUG_C("%p)", atk_obj);
+ JAW_GET_OBJECT(atk_obj, NULL);
+
if (atk_obj->relation_set)
g_object_unref(G_OBJECT(atk_obj->relation_set));
atk_obj->relation_set = atk_relation_set_new();
- if(atk_obj == NULL)
- return NULL;
-
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject ac = (*jniEnv)->NewGlobalRef(jniEnv, jaw_obj->acc_context);
- if (!ac) {
- return NULL;
- }
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getArrayAccessibleRelation",
"(Ljavax/accessibility/AccessibleContext;)[Lorg/GNOME/Accessibility/AtkObject$WrapKeyAndTarget;");
@@ -609,12 +554,7 @@ static AtkObject*
jaw_object_ref_child(AtkObject *atk_obj, gint i)
{
JAW_DEBUG_C("%p, %d", atk_obj, i);
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject ac = (*jniEnv)->NewGlobalRef(jniEnv, jaw_obj->acc_context);
- if (!ac) {
- return NULL;
- }
+ JAW_GET_OBJECT(atk_obj, NULL);
jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getAccessibleChild",
"(Ljavax/accessibility/AccessibleContext;I)Ljavax/accessibility/AccessibleContext;" );
diff --git a/jni/src/jawselection.c b/jni/src/jawselection.c
index d85d583..ea2596a 100644
--- a/jni/src/jawselection.c
+++ b/jni/src/jawselection.c
@@ -38,6 +38,9 @@ typedef struct _SelectionData {
jobject atk_selection;
} SelectionData;
+#define JAW_GET_SELECTION(selection, def_ret) \
+ JAW_GET_OBJ_IFACE(selection, INTERFACE_SELECTION, SelectionData, atk_selection, jniEnv, atk_selection,
def_ret)
+
void
jaw_selection_interface_init (AtkSelectionIface *iface, gpointer data)
{
@@ -83,18 +86,7 @@ static gboolean
jaw_selection_add_selection (AtkSelection *selection, gint i)
{
JAW_DEBUG_C("%p, %d", selection, i);
- JawObject *jaw_obj = JAW_OBJECT(selection);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- SelectionData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_SELECTION);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_selection = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_selection);
- if (!atk_selection) {
- JAW_DEBUG_I("atk_selection == NULL");
- return FALSE;
- }
+ JAW_GET_SELECTION(selection, FALSE);
jclass classAtkSelection = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkSelection");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkSelection, "add_selection", "(I)Z");
@@ -108,18 +100,7 @@ static gboolean
jaw_selection_clear_selection (AtkSelection *selection)
{
JAW_DEBUG_C("%p", selection);
- JawObject *jaw_obj = JAW_OBJECT(selection);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- SelectionData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_SELECTION);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_selection = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_selection);
- if (!atk_selection) {
- JAW_DEBUG_I("atk_selection == NULL");
- return FALSE;
- }
+ JAW_GET_SELECTION(selection, FALSE);
jclass classAtkSelection = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkSelection");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkSelection, "clear_selection", "()Z");
@@ -133,18 +114,7 @@ static AtkObject*
jaw_selection_ref_selection (AtkSelection *selection, gint i)
{
JAW_DEBUG_C("%p, %d", selection, i);
- JawObject *jaw_obj = JAW_OBJECT(selection);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- SelectionData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_SELECTION);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_selection = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_selection);
- if (!atk_selection) {
- JAW_DEBUG_I("atk_selection == NULL");
- return NULL;
- }
+ JAW_GET_SELECTION(selection, NULL);
jclass classAtkSelection = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkSelection");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkSelection, "ref_selection",
"(I)Ljavax/accessibility/AccessibleContext;");
@@ -165,18 +135,7 @@ static gint
jaw_selection_get_selection_count (AtkSelection *selection)
{
JAW_DEBUG_C("%p", selection);
- JawObject *jaw_obj = JAW_OBJECT(selection);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- SelectionData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_SELECTION);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_selection = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_selection);
- if (!atk_selection) {
- JAW_DEBUG_I("atk_selection == NULL");
- return 0;
- }
+ JAW_GET_SELECTION(selection, 0);
jclass classAtkSelection = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkSelection");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkSelection, "get_selection_count", "()I");
@@ -190,18 +149,7 @@ static gboolean
jaw_selection_is_child_selected (AtkSelection *selection, gint i)
{
JAW_DEBUG_C("%p, %d", selection, i);
- JawObject *jaw_obj = JAW_OBJECT(selection);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- SelectionData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_SELECTION);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_selection = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_selection);
- if (!atk_selection) {
- JAW_DEBUG_I("atk_selection == NULL");
- return FALSE;
- }
+ JAW_GET_SELECTION(selection, FALSE);
jclass classAtkSelection = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkSelection");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkSelection, "is_child_selected", "(I)Z");
@@ -215,18 +163,7 @@ static gboolean
jaw_selection_remove_selection (AtkSelection *selection, gint i)
{
JAW_DEBUG_C("%p, %d", selection, i);
- JawObject *jaw_obj = JAW_OBJECT(selection);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- SelectionData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_SELECTION);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_selection = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_selection);
- if (!atk_selection) {
- JAW_DEBUG_I("atk_selection == NULL");
- return FALSE;
- }
+ JAW_GET_SELECTION(selection, FALSE);
jclass classAtkSelection = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkSelection");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkSelection, "remove_selection", "(I)Z");
@@ -240,18 +177,7 @@ static gboolean
jaw_selection_select_all_selection (AtkSelection *selection)
{
JAW_DEBUG_C("%p", selection);
- JawObject *jaw_obj = JAW_OBJECT(selection);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- SelectionData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_SELECTION);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_selection = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_selection);
- if (!atk_selection) {
- JAW_DEBUG_I("atk_selection == NULL");
- return FALSE;
- }
+ JAW_GET_SELECTION(selection, FALSE);
jclass classAtkSelection = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkSelection");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkSelection, "select_all_selection", "()Z");
diff --git a/jni/src/jawtable.c b/jni/src/jawtable.c
index 9315459..b0e7446 100644
--- a/jni/src/jawtable.c
+++ b/jni/src/jawtable.c
@@ -63,6 +63,9 @@ typedef struct _TableData {
jstring jstrDescription;
} TableData;
+#define JAW_GET_TABLE(table, def_ret) \
+ JAW_GET_OBJ_IFACE(table, INTERFACE_TABLE, TableData, atk_table, env, atk_table, def_ret)
+
void
jaw_table_interface_init (AtkTableIface *iface, gpointer data)
{
@@ -179,18 +182,7 @@ static gint
jaw_table_get_index_at (AtkTable *table, gint row, gint column)
{
JAW_DEBUG_C("%p, %d, %d", table, row, column);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return 0;
- }
+ JAW_GET_TABLE(table, 0);
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_index_at", "(II)I");
@@ -204,18 +196,7 @@ static gint
jaw_table_get_column_at_index (AtkTable *table, gint index)
{
JAW_DEBUG_C("%p, %d", table, index);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return 0;
- }
+ JAW_GET_TABLE(table, 0);
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_column_at_index", "(I)I");
@@ -229,18 +210,7 @@ static gint
jaw_table_get_row_at_index (AtkTable *table, gint index)
{
JAW_DEBUG_C("%p, %d", table, index);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return 0;
- }
+ JAW_GET_TABLE(table, 0);
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_row_at_index", "(I)I");
@@ -254,18 +224,7 @@ static gint
jaw_table_get_n_columns (AtkTable *table)
{
JAW_DEBUG_C("%p", table);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return 0;
- }
+ JAW_GET_TABLE(table, 0);
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_n_columns", "()I");
@@ -279,18 +238,7 @@ static gint
jaw_table_get_n_rows (AtkTable *table)
{
JAW_DEBUG_C("%p", table);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return 0;
- }
+ JAW_GET_TABLE(table, 0);
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_n_rows", "()I");
@@ -304,18 +252,7 @@ static gint
jaw_table_get_column_extent_at (AtkTable *table, gint row, gint column)
{
JAW_DEBUG_C("%p, %d, %d", table, row, column);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return 0;
- }
+ JAW_GET_TABLE(table, 0);
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_column_extent_at", "(II)I");
@@ -329,18 +266,7 @@ static gint
jaw_table_get_row_extent_at (AtkTable *table, gint row, gint column)
{
JAW_DEBUG_C("%p, %d, %d", table, row, column);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return 0;
- }
+ JAW_GET_TABLE(table, 0);
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_row_extent_at", "(II)I");
@@ -354,18 +280,7 @@ static AtkObject*
jaw_table_get_caption (AtkTable *table)
{
JAW_DEBUG_C("%p", table);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return NULL;
- }
+ JAW_GET_TABLE(table, NULL);
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env,
@@ -388,18 +303,7 @@ static const gchar*
jaw_table_get_column_description (AtkTable *table, gint column)
{
JAW_DEBUG_C("%p, %d", table, column);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- };
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return NULL;
- }
+ JAW_GET_TABLE(table, NULL);
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_column_description",
"(I)Ljava/lang/String;");
@@ -422,18 +326,7 @@ static const gchar*
jaw_table_get_row_description (AtkTable *table, gint row)
{
JAW_DEBUG_C("%p, %d", table, row);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return NULL;
- }
+ JAW_GET_TABLE(table, NULL);
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_row_description", "(I)Ljava/lang/String;");
@@ -456,18 +349,7 @@ static AtkObject*
jaw_table_get_column_header (AtkTable *table, gint column)
{
JAW_DEBUG_C("%p, %d", table, column);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return NULL;
- }
+ JAW_GET_TABLE(table, NULL);
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_column_header",
"(I)Ljavax/accessibility/AccessibleContext;");
@@ -486,18 +368,7 @@ static AtkObject*
jaw_table_get_row_header (AtkTable *table, gint row)
{
JAW_DEBUG_C("%p, %d", table, row);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return NULL;
- }
+ JAW_GET_TABLE(table, NULL);
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_row_header",
"(I)Ljavax/accessibility/AccessibleContext;");
@@ -516,18 +387,7 @@ static AtkObject*
jaw_table_get_summary (AtkTable *table)
{
JAW_DEBUG_C("%p", table);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return NULL;
- }
+ JAW_GET_TABLE(table, NULL);
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_summary",
"()Ljavax/accessibility/AccessibleContext;");
@@ -546,18 +406,7 @@ static gint
jaw_table_get_selected_columns (AtkTable *table, gint **selected)
{
JAW_DEBUG_C("%p, %p", table, selected);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return 0;
- }
+ JAW_GET_TABLE(table, 0);
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_selected_columns", "()[I");
@@ -585,18 +434,7 @@ static gint
jaw_table_get_selected_rows (AtkTable *table, gint **selected)
{
JAW_DEBUG_C("%p, %p", table, selected);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return 0;
- }
+ JAW_GET_TABLE(table, 0);
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_selected_rows", "()[I");
@@ -624,18 +462,7 @@ static gboolean
jaw_table_is_column_selected (AtkTable *table, gint column)
{
JAW_DEBUG_C("%p, %d", table, column);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return FALSE;
- }
+ JAW_GET_TABLE(table, FALSE);
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "is_column_selected", "(I)Z");
@@ -648,18 +475,7 @@ static gboolean
jaw_table_is_row_selected (AtkTable *table, gint row)
{
JAW_DEBUG_C("%p, %d", table, row);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return FALSE;
- }
+ JAW_GET_TABLE(table, FALSE);
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "is_row_selected", "(I)Z");
@@ -672,18 +488,7 @@ static gboolean
jaw_table_is_selected (AtkTable *table, gint row, gint column)
{
JAW_DEBUG_C("%p, %d, %d", table, row, column);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return FALSE;
- }
+ JAW_GET_TABLE(table, FALSE);
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "is_selected", "(II)Z");
@@ -725,18 +530,7 @@ static void
jaw_table_set_row_description(AtkTable *table, gint row, const gchar *description)
{
JAW_DEBUG_C("%p, %d, %s", table, row, description);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return;
- }
+ JAW_GET_TABLE(table, );
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env,
@@ -752,18 +546,7 @@ static void
jaw_table_set_column_description(AtkTable *table, gint column, const gchar *description)
{
JAW_DEBUG_C("%p, %d, %s", table, column, description);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return;
- }
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- return;
- }
+ JAW_GET_TABLE(table, );
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
jmethodID jmid = (*env)->GetMethodID(env,
@@ -791,28 +574,25 @@ static void
jaw_table_set_caption(AtkTable *table, AtkObject *caption)
{
JAW_DEBUG_C("%p, %p", table, caption);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return;
- }
+ JAW_GET_TABLE(table, );
+
JawObject *jcaption = JAW_OBJECT(caption);
if (!jcaption) {
JAW_DEBUG_I("jcaption == NULL");
+ (*env)->DeleteGlobalRef(env, atk_table);
return;
}
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
jclass accessible = (*env)->FindClass (env, "javax/accessibility/Accessible");
if ( !((*env)->IsInstanceOf(env, jcaption->acc_context, accessible)) )
+ {
+ (*env)->DeleteGlobalRef(env, atk_table);
return;
+ }
jobject obj = (*env)->NewGlobalRef(env, jcaption->acc_context);
if (!obj)
- return;
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- (*env)->DeleteGlobalRef(env, obj);
+ {
+ JAW_DEBUG_I("jcaption obj == NULL");
+ (*env)->DeleteGlobalRef(env, atk_table);
return;
}
jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
@@ -826,28 +606,24 @@ static void
jaw_table_set_summary(AtkTable *table, AtkObject *summary)
{
JAW_DEBUG_C("%p, %p", table, summary);
- JawObject *jaw_obj = JAW_OBJECT(table);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return;
- }
+ JAW_GET_TABLE(table, );
+
JawObject *jsummary = JAW_OBJECT(summary);
if (!jsummary) {
JAW_DEBUG_I("jsummary == NULL");
+ (*env)->DeleteGlobalRef(env, atk_table);
return;
}
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- JNIEnv *env = jaw_util_get_jni_env();
jclass accessible = (*env)->FindClass (env, "javax/accessibility/Accessible");
if ( !((*env)->IsInstanceOf(env, jsummary->acc_context, accessible)) )
+ {
+ (*env)->DeleteGlobalRef(env, atk_table);
return;
+ }
jobject obj = (*env)->NewGlobalRef(env, jsummary->acc_context);
- if (!obj)
- return;
- jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
- if (!atk_table) {
- JAW_DEBUG_I("atk_table == NULL");
- (*env)->DeleteGlobalRef(env, obj);
+ if (!obj) {
+ JAW_DEBUG_I("jsummary obj == NULL");
+ (*env)->DeleteGlobalRef(env, atk_table);
return;
}
diff --git a/jni/src/jawtablecell.c b/jni/src/jawtablecell.c
index 8478543..afa6b3e 100644
--- a/jni/src/jawtablecell.c
+++ b/jni/src/jawtablecell.c
@@ -40,6 +40,9 @@ typedef struct _TableCellData {
jstring jstrDescription;
} TableCellData;
+#define JAW_GET_TABLECELL(cell, def_ret) \
+ JAW_GET_OBJ_IFACE(cell, INTERFACE_TABLE_CELL, TableCellData, atk_table_cell, jniEnv, jatk_table_cell,
def_ret)
+
void
jaw_table_cell_interface_init (AtkTableCellIface *iface, gpointer data)
{
@@ -94,18 +97,7 @@ static AtkObject*
jaw_table_cell_get_table(AtkTableCell *cell)
{
JAW_DEBUG_C("%p", cell);
- JawObject *jaw_obj = JAW_OBJECT(cell);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- TableCellData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE_CELL);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject jatk_table_cell = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_table_cell);
- if (!jatk_table_cell) {
- JAW_DEBUG_I("jatk_table_cell == NULL");
- return NULL;
- }
+ JAW_GET_TABLECELL(cell, NULL);
jclass classAtkTableCell = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkTableCell");
@@ -139,18 +131,8 @@ static gboolean
jaw_table_cell_get_position (AtkTableCell *cell, gint *row, gint *column)
{
JAW_DEBUG_C("%p, %p, %p", cell, row, column);
- JawObject *jaw_obj = JAW_OBJECT(cell);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- TableCellData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE_CELL);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject jatk_table_cell = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_table_cell);
- if (!jatk_table_cell) {
- JAW_DEBUG_I("jatk_table_cell == NULL");
- return FALSE;
- }
+ JAW_GET_TABLECELL(cell, FALSE);
+
jclass classAtkTableCell = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTableCell");
getPosition (jniEnv, jatk_table_cell, classAtkTableCell, row, column);
(*jniEnv)->DeleteGlobalRef(jniEnv, jatk_table_cell);
@@ -177,18 +159,8 @@ static gboolean
jaw_table_cell_get_row_column_span(AtkTableCell *cell, gint *row, gint *column, gint *row_span, gint
*column_span)
{
JAW_DEBUG_C("%p, %p, %p, %p, %p", cell, row, column, row_span, column_span);
- JawObject *jaw_obj = JAW_OBJECT(cell);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- TableCellData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE_CELL);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject jatk_table_cell = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_table_cell);
- if (!jatk_table_cell) {
- JAW_DEBUG_I("jatk_table_cell == NULL");
- return FALSE;
- }
+ JAW_GET_TABLECELL(cell, FALSE);
+
jclass classAtkTableCell = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTableCell");
getPosition (jniEnv, jatk_table_cell, classAtkTableCell, row, column);
getRowSpan (jniEnv, jatk_table_cell, classAtkTableCell, row_span);
@@ -201,22 +173,12 @@ static gint
jaw_table_cell_get_row_span(AtkTableCell *cell)
{
JAW_DEBUG_C("%p", cell);
- JawObject *jaw_obj = JAW_OBJECT(cell);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- TableCellData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE_CELL);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject jatk_table_cell = (*env)->NewGlobalRef(env, data->atk_table_cell);
- if (!jatk_table_cell) {
- JAW_DEBUG_I("jatk_table_cell == NULL");
- return 0;
- }
+ JAW_GET_TABLECELL(cell, 0);
+
gint row_span = -1;
- jclass classAtkTableCell = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTableCell");
- getRowSpan (env, jatk_table_cell, classAtkTableCell, &row_span);
- (*env)->DeleteGlobalRef(env, jatk_table_cell);
+ jclass classAtkTableCell = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTableCell");
+ getRowSpan (jniEnv, jatk_table_cell, classAtkTableCell, &row_span);
+ (*jniEnv)->DeleteGlobalRef(jniEnv, jatk_table_cell);
return row_span;
}
@@ -224,22 +186,12 @@ static gint
jaw_table_cell_get_column_span(AtkTableCell *cell)
{
JAW_DEBUG_C("%p", cell);
- JawObject *jaw_obj = JAW_OBJECT(cell);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- TableCellData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE_CELL);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject jatk_table_cell = (*env)->NewGlobalRef(env, data->atk_table_cell);
- if (!jatk_table_cell) {
- JAW_DEBUG_I("jatk_table_cell == NULL");
- return 0;
- }
+ JAW_GET_TABLECELL(cell, 0);
+
gint column_span = -1;
- jclass classAtkTableCell = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTableCell");
- getColumnSpan (env, jatk_table_cell, classAtkTableCell, &column_span);
- (*env)->DeleteGlobalRef(env, jatk_table_cell);
+ jclass classAtkTableCell = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTableCell");
+ getColumnSpan (jniEnv, jatk_table_cell, classAtkTableCell, &column_span);
+ (*jniEnv)->DeleteGlobalRef(jniEnv, jatk_table_cell);
return column_span;
}
@@ -247,18 +199,8 @@ static GPtrArray*
jaw_table_cell_get_column_header_cells(AtkTableCell *cell)
{
JAW_DEBUG_C("%p", cell);
- JawObject *jaw_obj = JAW_OBJECT(cell);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- TableCellData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE_CELL);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject jatk_table_cell = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_table_cell);
- if (!jatk_table_cell) {
- JAW_DEBUG_I("jatk_table_cell == NULL");
- return NULL;
- }
+ JAW_GET_TABLECELL(cell, NULL);
+
jclass classAtkTableCell = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTableCell");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkTableCell, "getAccessibleColumnHeader",
"()[Ljavax/accessibility/AccessibleContext;");
jobjectArray ja_ac = (jobjectArray) (*jniEnv)->CallObjectMethod(jniEnv, jatk_table_cell, jmid);
@@ -280,18 +222,8 @@ static GPtrArray*
jaw_table_cell_get_row_header_cells(AtkTableCell *cell)
{
JAW_DEBUG_C("%p", cell);
- JawObject *jaw_obj = JAW_OBJECT(cell);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- TableCellData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE_CELL);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject jatk_table_cell = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_table_cell);
- if (!jatk_table_cell) {
- JAW_DEBUG_I("jatk_table_cell == NULL");
- return NULL;
- }
+ JAW_GET_TABLECELL(cell, NULL);
+
jclass classAtkTableCell = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTableCell");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkTableCell, "getAccessibleRowHeader",
"()[Ljavax/accessibility/AccessibleContext;");
jobjectArray ja_ac = (jobjectArray) (*jniEnv)->CallObjectMethod(jniEnv, jatk_table_cell, jmid);
@@ -307,4 +239,4 @@ jaw_table_cell_get_row_header_cells(AtkTableCell *cell)
g_ptr_array_add(result, jaw_impl);
}
return result;
-}
\ No newline at end of file
+}
diff --git a/jni/src/jawtext.c b/jni/src/jawtext.c
index 9f03e12..4a47d00 100644
--- a/jni/src/jawtext.c
+++ b/jni/src/jawtext.c
@@ -94,6 +94,9 @@ typedef struct _TextData {
jstring jstrText;
}TextData;
+#define JAW_GET_TEXT(text, def_ret) \
+ JAW_GET_OBJ_IFACE(text, INTERFACE_TEXT, TextData, atk_text, jniEnv, atk_text, def_ret)
+
void
jaw_text_interface_init (AtkTextIface *iface, gpointer data)
{
@@ -186,18 +189,7 @@ static gchar*
jaw_text_get_text (AtkText *text, gint start_offset, gint end_offset)
{
JAW_DEBUG_C("%p, %d, %d", text, start_offset, end_offset);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_text);
- if (!atk_text) {
- JAW_DEBUG_I("atk_text == NULL");
- return NULL;
- }
+ JAW_GET_TEXT(text, NULL);
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkText");
@@ -220,18 +212,7 @@ static gunichar
jaw_text_get_character_at_offset (AtkText *text, gint offset)
{
JAW_DEBUG_C("%p, %d", text, offset);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_text);
- if (!atk_text) {
- JAW_DEBUG_I("atk_text == NULL");
- return 0;
- }
+ JAW_GET_TEXT(text, 0);
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkText");
@@ -284,18 +265,7 @@ jaw_text_get_text_at_offset (AtkText *text,
gint *start_offset, gint *end_offset)
{
JAW_DEBUG_C("%p, %d, %d, %p, %p", text, offset, boundary_type, start_offset, end_offset);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_text);
- if (!atk_text) {
- JAW_DEBUG_I("atk_text == NULL");
- return NULL;
- }
+ JAW_GET_TEXT(text, NULL);
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkText");
@@ -325,18 +295,7 @@ jaw_text_get_text_before_offset (AtkText *text,
gint *start_offset, gint *end_offset)
{
JAW_DEBUG_C("%p, %d, %d, %p, %p", text, offset, boundary_type, start_offset, end_offset);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_text);
- if (!atk_text) {
- JAW_DEBUG_I("atk_text == NULL");
- return NULL;
- }
+ JAW_GET_TEXT(text, NULL);
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkText");
@@ -366,18 +325,7 @@ jaw_text_get_text_after_offset (AtkText *text,
gint *start_offset, gint *end_offset)
{
JAW_DEBUG_C("%p, %d, %d, %p, %p", text, offset, boundary_type, start_offset, end_offset);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_text);
- if (!atk_text) {
- JAW_DEBUG_I("atk_text == NULL");
- return NULL;
- }
+ JAW_GET_TEXT(text, NULL);
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkText");
@@ -404,18 +352,7 @@ static gint
jaw_text_get_caret_offset (AtkText *text)
{
JAW_DEBUG_C("%p", text);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_text);
- if (!atk_text) {
- JAW_DEBUG_I("atk_text == NULL");
- return 0;
- }
+ JAW_GET_TEXT(text, 0);
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkText");
@@ -436,26 +373,11 @@ jaw_text_get_character_extents (AtkText *text,
AtkCoordType coords)
{
JAW_DEBUG_C("%p, %d, %p, %p, %p, %p, %d", text, offset, x, y, width, height, coords);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- *x = 0;
- *y = 0;
- *width = 0;
- *height = 0;
- return;
- }
- TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_text);
- if (!atk_text) {
- JAW_DEBUG_I("atk_text == NULL");
- *x = 0;
- *y = 0;
- *width = 0;
- *height = 0;
- return;
- }
+ *x = 0;
+ *y = 0;
+ *width = 0;
+ *height = 0;
+ JAW_GET_TEXT(text, );
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkText");
@@ -473,10 +395,6 @@ jaw_text_get_character_extents (AtkText *text,
if (jrect == NULL)
{
JAW_DEBUG_I("jrect == NULL");
- *x = 0;
- *y = 0;
- *width = 0;
- *height = 0;
return;
}
@@ -487,18 +405,7 @@ static gint
jaw_text_get_character_count (AtkText *text)
{
JAW_DEBUG_C("%p", text);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_text);
- if (!atk_text) {
- JAW_DEBUG_I("atk_text == NULL");
- return 0;
- }
+ JAW_GET_TEXT(text, 0);
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkText");
@@ -516,18 +423,7 @@ static gint
jaw_text_get_offset_at_point (AtkText *text, gint x, gint y, AtkCoordType coords)
{
JAW_DEBUG_C("%p, %d, %d, %d", text, x, y, coords);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_text);
- if (!atk_text) {
- JAW_DEBUG_I("atk_text == NULL");
- return 0;
- }
+ JAW_GET_TEXT(text, 0);
jclass classAtkText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
@@ -557,19 +453,9 @@ jaw_text_get_range_extents (AtkText *text,
{
return;
}
+ memset(rect, 0, sizeof(*rect));
- JawObject *jaw_obj = JAW_OBJECT(text);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return;
- }
- TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_text);
- if (!atk_text) {
- JAW_DEBUG_I("atk_text == NULL");
- return;
- }
+ JAW_GET_TEXT(text, );
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkText");
@@ -597,18 +483,7 @@ static gint
jaw_text_get_n_selections (AtkText *text)
{
JAW_DEBUG_C("%p", text);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_text);
- if (!atk_text) {
- JAW_DEBUG_I("atk_text == NULL");
- return 0;
- }
+ JAW_GET_TEXT(text, 0);
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkText");
@@ -626,18 +501,7 @@ static gchar*
jaw_text_get_selection (AtkText *text, gint selection_num, gint *start_offset, gint *end_offset)
{
JAW_DEBUG_C("%p, %d, %p, %p", text, selection_num, start_offset, end_offset);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_text);
- if (!atk_text) {
- JAW_DEBUG_I("atk_text == NULL");
- return NULL;
- }
+ JAW_GET_TEXT(text, NULL);
jclass classAtkText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
@@ -678,18 +542,7 @@ static gboolean
jaw_text_add_selection (AtkText *text, gint start_offset, gint end_offset)
{
JAW_DEBUG_C("%p, %d, %d", text, start_offset, end_offset);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_text);
- if (!atk_text) {
- JAW_DEBUG_I("atk_text == NULL");
- return FALSE;
- }
+ JAW_GET_TEXT(text, FALSE);
jclass classAtkText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
@@ -710,18 +563,7 @@ static gboolean
jaw_text_remove_selection (AtkText *text, gint selection_num)
{
JAW_DEBUG_C("%p, %d", text, selection_num);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_text);
- if (!atk_text) {
- JAW_DEBUG_I("atk_text == NULL");
- return FALSE;
- }
+ JAW_GET_TEXT(text, FALSE);
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkText");
@@ -742,18 +584,7 @@ static gboolean
jaw_text_set_selection (AtkText *text, gint selection_num, gint start_offset, gint end_offset)
{
JAW_DEBUG_C("%p, %d, %d, %d", text, selection_num, start_offset, end_offset);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_text);
- if (!atk_text) {
- JAW_DEBUG_I("atk_text == NULL");
- return FALSE;
- }
+ JAW_GET_TEXT(text, FALSE);
jclass classAtkText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkText, "set_selection", "(III)Z");
@@ -772,18 +603,7 @@ static gboolean
jaw_text_set_caret_offset (AtkText *text, gint offset)
{
JAW_DEBUG_C("%p, %d", text, offset);
- JawObject *jaw_obj = JAW_OBJECT(text);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return FALSE;
- }
- TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_text = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_text);
- if (!atk_text) {
- JAW_DEBUG_I("atk_text == NULL");
- return FALSE;
- }
+ JAW_GET_TEXT(text, FALSE);
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
"org/GNOME/Accessibility/AtkText");
diff --git a/jni/src/jawutil.h b/jni/src/jawutil.h
index 3b70ed7..21372ed 100644
--- a/jni/src/jawutil.h
+++ b/jni/src/jawutil.h
@@ -116,6 +116,33 @@ gboolean jaw_util_dispatch_key_event (AtkKeyEventStruct *event);
void jaw_util_detach(void);
+#define JAW_GET_OBJ_IFACE(o, iface, Data, field, env, name, def_ret) \
+ JawObject *jaw_obj = JAW_OBJECT(o); \
+ if (!jaw_obj) { \
+ JAW_DEBUG_I("jaw_obj == NULL"); \
+ return def_ret; \
+ } \
+ Data *data = jaw_object_get_interface_data(jaw_obj, iface); \
+ JNIEnv *env = jaw_util_get_jni_env(); \
+ jobject name = (*env)->NewGlobalRef(env, data->field); \
+ if (!name) { \
+ JAW_DEBUG_I(#name " == NULL"); \
+ return def_ret; \
+ }
+
+#define JAW_GET_OBJ(o, CAST, JawObject, object_name, field, env, name, def_ret) \
+ JawObject *object_name = CAST(o); \
+ if (!object_name) { \
+ JAW_DEBUG_I(#object_name " == NULL"); \
+ return def_ret; \
+ } \
+ JNIEnv *env = jaw_util_get_jni_env(); \
+ jobject name = (*env)->NewGlobalRef(env, object_name->field); \
+ if (!name) { \
+ JAW_DEBUG_I(#name " == NULL"); \
+ return def_ret; \
+ }
+
G_END_DECLS
#endif
diff --git a/jni/src/jawvalue.c b/jni/src/jawvalue.c
index 5be92a9..96012e0 100644
--- a/jni/src/jawvalue.c
+++ b/jni/src/jawvalue.c
@@ -36,6 +36,9 @@ typedef struct _ValueData {
jobject atk_value;
} ValueData;
+#define JAW_GET_VALUE(obj, def_ret) \
+ JAW_GET_OBJ_IFACE(obj, INTERFACE_VALUE, ValueData, atk_value, env, atk_value, def_ret)
+
void
jaw_value_interface_init (AtkValueIface *iface, gpointer data)
{
@@ -154,61 +157,35 @@ jaw_value_get_current_value (AtkValue *obj, GValue *value)
{
JAW_DEBUG_C("%p, %p", obj, value);
if (!value)
- {
return;
- }
+ g_value_unset(value);
+ JAW_GET_VALUE(obj, );
- JawObject *jaw_obj = JAW_OBJECT(obj);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return;
- }
- ValueData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_VALUE);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_value = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_value);
- if (!atk_value) {
- JAW_DEBUG_I("atk_value == NULL");
- return;
- }
-
- jclass classAtkValue = (*jniEnv)->FindClass(jniEnv,
+ jclass classAtkValue = (*env)->FindClass(env,
"org/GNOME/Accessibility/AtkValue");
- jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
+ jmethodID jmid = (*env)->GetMethodID(env,
classAtkValue,
"get_current_value",
"()Ljava/lang/Number;");
- jobject jnumber = (*jniEnv)->CallObjectMethod(jniEnv,
+ jobject jnumber = (*env)->CallObjectMethod(env,
atk_value,
jmid);
- (*jniEnv)->DeleteGlobalRef(jniEnv, atk_value);
+ (*env)->DeleteGlobalRef(env, atk_value);
if (!jnumber)
{
return;
}
- get_g_value_from_java_number(jniEnv, jnumber, value);
+ get_g_value_from_java_number(env, jnumber, value);
}
static void
jaw_value_set_value(AtkValue *obj, const gdouble value)
{
JAW_DEBUG_C("%p, %lf", obj, value);
- if (!value)
- return;
- JawObject *jaw_obj = JAW_OBJECT(obj);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return;
- }
- ValueData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_VALUE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_value = (*env)->NewGlobalRef(env, data->atk_value);
- if (!atk_value) {
- JAW_DEBUG_I("atk_value == NULL");
- return;
- }
+ JAW_GET_VALUE(obj, );
jclass classAtkValue = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkValue");
jmethodID jmid = (*env)->GetMethodID(env,
@@ -223,18 +200,7 @@ static AtkRange*
jaw_value_get_range(AtkValue *obj)
{
JAW_DEBUG_C("%p", obj);
- JawObject *jaw_obj = JAW_OBJECT(obj);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- ValueData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_VALUE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_value = (*env)->NewGlobalRef(env, data->atk_value);
- if (!atk_value) {
- JAW_DEBUG_I("atk_value == NULL");
- return NULL;
- }
+ JAW_GET_VALUE(obj, NULL);
jclass classAtkValue = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkValue");
jmethodID jmidMin = (*env)->GetMethodID(env, classAtkValue, "getMinimumValue", "()D");
@@ -250,18 +216,8 @@ static gdouble
jaw_value_get_increment (AtkValue *obj)
{
JAW_DEBUG_C("%p", obj);
- JawObject *jaw_obj = JAW_OBJECT(obj);
- if (!jaw_obj) {
- JAW_DEBUG_I("jaw_obj == NULL");
- return 0;
- }
- ValueData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_VALUE);
- JNIEnv *env = jaw_util_get_jni_env();
- jobject atk_value = (*env)->NewGlobalRef(env, data->atk_value);
- if (!atk_value) {
- JAW_DEBUG_I("atk_value == NULL");
- return 0.;
- }
+ JAW_GET_VALUE(obj, 0.);
+
jclass classAtkValue = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkValue");
jmethodID jmid = (*env)->GetMethodID(env, classAtkValue, "getIncrement", "()D");
gdouble ret = (*env)->CallDoubleMethod(env, atk_value, jmid);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]