Recovered from cvs revision 2007-11-02 05:49:00
This commit is contained in:
parent
e28846adff
commit
9127a54093
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: Context.java,v 1.8 2007/10/30 15:01:31 bacon Exp $
|
* $Id: Context.java,v 1.9 2007/11/01 14:01:00 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package ase.awk;
|
package ase.awk;
|
||||||
@ -98,18 +98,16 @@ public class Context
|
|||||||
setglobal (this.runid, id, ret);
|
setglobal (this.runid, id, ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
public Argument getGlobal (int id) throws Exception
|
||||||
public void getGlobal (int id, Argument arg) throws Exception
|
|
||||||
{
|
{
|
||||||
|
return getglobal (this.runid, id);
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
protected native void stop (long runid);
|
protected native void stop (long runid);
|
||||||
protected native void setglobal (long runid, int id, Return ret);
|
protected native void setglobal (long runid, int id, Return ret);
|
||||||
|
protected native Argument getglobal (long runid, int id);
|
||||||
|
|
||||||
// TODO:
|
// TODO:
|
||||||
// setGlobal
|
|
||||||
// getGlobal
|
|
||||||
// setError
|
// setError
|
||||||
// getError
|
// getError
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: jni.c,v 1.43 2007/10/31 13:56:54 bacon Exp $
|
* $Id: jni.c,v 1.44 2007/11/01 14:01:00 bacon Exp $
|
||||||
*
|
*
|
||||||
* {License}
|
* {License}
|
||||||
*/
|
*/
|
||||||
@ -1678,8 +1678,8 @@ static int handle_bfn (
|
|||||||
v = ase_awk_getarg (run, i);
|
v = ase_awk_getarg (run, i);
|
||||||
|
|
||||||
arg = (*env)->NewObject (env,
|
arg = (*env)->NewObject (env,
|
||||||
run_data->argument_class,
|
run_data->argument_class, run_data->argument_init,
|
||||||
run_data->argument_init, (jlong)run, (jlong)v);
|
(jlong)run, (jlong)v);
|
||||||
if (arg == ASE_NULL)
|
if (arg == ASE_NULL)
|
||||||
{
|
{
|
||||||
if ((*env)->ExceptionCheck(env))
|
if ((*env)->ExceptionCheck(env))
|
||||||
@ -2353,29 +2353,54 @@ JNIEXPORT void JNICALL Java_ase_awk_Context_setglobal (JNIEnv* env, jobject obj,
|
|||||||
{
|
{
|
||||||
ase_awk_run_t* run = (ase_awk_run_t*)runid;
|
ase_awk_run_t* run = (ase_awk_run_t*)runid;
|
||||||
run_data_t* run_data;
|
run_data_t* run_data;
|
||||||
|
ase_awk_val_t* v;
|
||||||
jlong vi;
|
jlong vi;
|
||||||
|
|
||||||
run_data = (run_data_t*)ase_awk_getruncustomdata (run);
|
run_data = (run_data_t*)ase_awk_getruncustomdata (run);
|
||||||
|
|
||||||
vi = (*env)->GetLongField (env, ret, run_data->return_valid);
|
vi = (*env)->GetLongField (env, ret, run_data->return_valid);
|
||||||
if (vi != 0)
|
v = (vi == 0)? ase_awk_val_nil: (ase_awk_val_t*)vi;
|
||||||
{
|
/* invalidate the value field in the return object */
|
||||||
if (ase_awk_setglobal(run, id, (ase_awk_val_t*)vi) == -1)
|
|
||||||
{
|
|
||||||
/* invalidate the value field in the return object
|
|
||||||
* even when an exception is thrown. otherwise,
|
|
||||||
* the value might never be freed. */
|
|
||||||
ase_awk_refdownval (run, (ase_awk_val_t*)vi);
|
|
||||||
(*env)->SetLongField (env, ret, run_data->return_valid, (jlong)0);
|
(*env)->SetLongField (env, ret, run_data->return_valid, (jlong)0);
|
||||||
|
|
||||||
|
OutputDebugStringW(L"11111111111111111111\n");
|
||||||
|
if (ase_awk_setglobal(run,id,v) == -1)
|
||||||
|
{
|
||||||
|
OutputDebugStringW(L"333333333333333333333\n");
|
||||||
|
if (vi != 0) ase_awk_refdownval (run, v);
|
||||||
THROW_RUN_EXCEPTION (env, run);
|
THROW_RUN_EXCEPTION (env, run);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* invalidate the value field in the return object */
|
OutputDebugStringW(L"2222222222222222222222\n");
|
||||||
ase_awk_refdownval (run, (ase_awk_val_t*)vi);
|
if (vi != 0) ase_awk_refdownval (run, v);
|
||||||
(*env)->SetLongField (env, ret, run_data->return_valid, (jlong)0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jobject JNICALL Java_ase_awk_Context_getglobal (JNIEnv* env, jobject obj, jlong runid, jint id)
|
||||||
|
{
|
||||||
|
ase_awk_run_t* run = (ase_awk_run_t*)runid;
|
||||||
|
ase_awk_t* awk;
|
||||||
|
run_data_t* run_data;
|
||||||
|
ase_awk_val_t* g;
|
||||||
|
jobject arg;
|
||||||
|
|
||||||
|
run_data = (run_data_t*)ase_awk_getruncustomdata (run);
|
||||||
|
awk = ase_awk_getrunawk (run);
|
||||||
|
|
||||||
|
g = ase_awk_getglobal(run, id);
|
||||||
|
|
||||||
|
arg = (*env)->NewObject (env,
|
||||||
|
run_data->argument_class, run_data->argument_init,
|
||||||
|
(jlong)run, (jlong)g);
|
||||||
|
if (arg == ASE_NULL)
|
||||||
|
{
|
||||||
|
if (is_debug(awk)) (*env)->ExceptionDescribe (env);
|
||||||
|
(*env)->ExceptionClear (env);
|
||||||
|
THROW_NOMEM_EXCEPTION (env);
|
||||||
|
return ASE_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return arg;
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jlong JNICALL Java_ase_awk_Argument_getintval (JNIEnv* env, jobject obj, jlong runid, jlong valid)
|
JNIEXPORT jlong JNICALL Java_ase_awk_Argument_getintval (JNIEnv* env, jobject obj, jlong runid, jlong valid)
|
||||||
@ -2507,8 +2532,8 @@ JNIEXPORT jobject JNICALL Java_ase_awk_Argument_getindexed (JNIEnv* env, jobject
|
|||||||
if (pair == ASE_NULL) return ASE_NULL;;
|
if (pair == ASE_NULL) return ASE_NULL;;
|
||||||
|
|
||||||
arg = (*env)->NewObject (env,
|
arg = (*env)->NewObject (env,
|
||||||
run_data->argument_class,
|
run_data->argument_class, run_data->argument_init,
|
||||||
run_data->argument_init, (jlong)run, (jlong)pair->val);
|
(jlong)run, (jlong)pair->val);
|
||||||
if (arg == ASE_NULL) goto nomem;
|
if (arg == ASE_NULL) goto nomem;
|
||||||
|
|
||||||
return arg;
|
return arg;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: AseAwkPanel.java,v 1.16 2007/10/31 13:56:54 bacon Exp $
|
* $Id: AseAwkPanel.java,v 1.17 2007/11/01 14:01:00 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
@ -118,7 +118,11 @@ public class AseAwkPanel extends Panel
|
|||||||
r.setStringValue ("[[%.6f]]");
|
r.setStringValue ("[[%.6f]]");
|
||||||
|
|
||||||
//ctx.setGlobal (Context.GLOBAL_CONVFMT, ret);
|
//ctx.setGlobal (Context.GLOBAL_CONVFMT, ret);
|
||||||
|
Argument g = ctx.getGlobal (Context.GLOBAL_CONVFMT);
|
||||||
ctx.setGlobal (Context.GLOBAL_CONVFMT, r2);
|
ctx.setGlobal (Context.GLOBAL_CONVFMT, r2);
|
||||||
|
System.out.println (g.getStringValue());
|
||||||
|
g = ctx.getGlobal (Context.GLOBAL_CONVFMT);
|
||||||
|
System.out.println (g.getStringValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int openSource (int mode)
|
protected int openSource (int mode)
|
||||||
|
Loading…
Reference in New Issue
Block a user