Recovered from cvs revision 2007-10-19 15:02:00
This commit is contained in:
parent
3b74f61b7f
commit
2659857d81
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: Argument.java,v 1.3 2007/10/18 14:51:04 bacon Exp $
|
||||
* $Id: Argument.java,v 1.4 2007/10/19 03:50:32 bacon Exp $
|
||||
*/
|
||||
|
||||
package ase.awk;
|
||||
@ -15,28 +15,28 @@ public class Argument
|
||||
this.valid = valid;
|
||||
}
|
||||
|
||||
long getIntValue ()
|
||||
public long getIntValue ()
|
||||
{
|
||||
return getintval (this.runid, this.valid);
|
||||
}
|
||||
|
||||
double getRealValue ()
|
||||
public double getRealValue ()
|
||||
{
|
||||
return getrealval (this.runid, this.valid);
|
||||
}
|
||||
|
||||
String getStringValue () throws Exception
|
||||
public String getStringValue () throws Exception
|
||||
{
|
||||
return getstrval (this.runid, this.valid);
|
||||
}
|
||||
|
||||
Argument getIndexed (String idx)
|
||||
public Argument getIndexed (String idx)
|
||||
{
|
||||
// TODO:..
|
||||
return null;
|
||||
}
|
||||
|
||||
Argument getIndexed (long idx)
|
||||
public Argument getIndexed (long idx)
|
||||
{
|
||||
return getIndexed (Long.toString(idx));
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: Awk.java,v 1.25 2007/10/18 14:51:04 bacon Exp $
|
||||
* $Id: Awk.java,v 1.26 2007/10/19 03:50:32 bacon Exp $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
@ -124,8 +124,6 @@ public abstract class Awk
|
||||
protected native void delfunc (String name) throws Exception;
|
||||
native void setfilename (long runid, String name) throws Exception;
|
||||
native void setofilename (long runid, String name) throws Exception;
|
||||
protected native Object strtonum (long runid, String str) throws Exception;
|
||||
protected native String valtostr (long runid, Object obj) throws Exception;
|
||||
protected native String strftime (String fmt, long sec);
|
||||
protected native String strfgmtime (String fmt, long sec);
|
||||
protected native int system (String cmd);
|
||||
@ -162,105 +160,19 @@ public abstract class Awk
|
||||
}
|
||||
|
||||
protected Object handleFunction (
|
||||
Context ctx, String name, Object args[]) throws java.lang.Exception
|
||||
Context ctx, String name, Argument[] args) throws java.lang.Exception
|
||||
{
|
||||
String mn = (String)functionTable.get(name);
|
||||
// name should always be found in this table.
|
||||
// otherwise, there is something wrong with this program.
|
||||
|
||||
Class c = this.getClass ();
|
||||
Class[] a = { Context.class, String.class, Object[].class };
|
||||
Class[] a = { Context.class, String.class, Argument[].class };
|
||||
|
||||
Method m = c.getMethod (mn, a);
|
||||
return m.invoke (this, /*new Object[] {*/ ctx, name, args/*}*/) ;
|
||||
}
|
||||
|
||||
protected long builtinFunctionArgumentToLong (
|
||||
Context ctx, Object obj) throws Exception
|
||||
{
|
||||
long n;
|
||||
|
||||
if (obj == null) n = 0;
|
||||
else
|
||||
{
|
||||
if (obj instanceof String)
|
||||
obj = strtonum (ctx.getId(), (String)obj);
|
||||
|
||||
if (obj instanceof Long)
|
||||
{
|
||||
n = ((Long)obj).longValue ();
|
||||
}
|
||||
else if (obj instanceof Double)
|
||||
{
|
||||
n = ((Double)obj).longValue ();
|
||||
}
|
||||
else if (obj instanceof Integer)
|
||||
{
|
||||
n = ((Integer)obj).longValue ();
|
||||
}
|
||||
else if (obj instanceof Short)
|
||||
{
|
||||
n = ((Short)obj).longValue ();
|
||||
}
|
||||
else if (obj instanceof Float)
|
||||
{
|
||||
n = ((Float)obj).longValue ();
|
||||
}
|
||||
else n = 0;
|
||||
}
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
protected double builtinFunctionArgumentToDouble (
|
||||
Context ctx, Object obj) throws Exception
|
||||
{
|
||||
double n;
|
||||
|
||||
if (obj == null) n = 0.0;
|
||||
else
|
||||
{
|
||||
if (obj instanceof String)
|
||||
obj = strtonum (ctx.getId(), (String)obj);
|
||||
|
||||
if (obj instanceof Long)
|
||||
{
|
||||
n = ((Long)obj).doubleValue ();
|
||||
}
|
||||
else if (obj instanceof Double)
|
||||
{
|
||||
n = ((Double)obj).doubleValue ();
|
||||
}
|
||||
else if (obj instanceof Integer)
|
||||
{
|
||||
n = ((Integer)obj).doubleValue ();
|
||||
}
|
||||
else if (obj instanceof Short)
|
||||
{
|
||||
n = ((Short)obj).doubleValue ();
|
||||
}
|
||||
else if (obj instanceof Float)
|
||||
{
|
||||
n = ((Float)obj).doubleValue ();
|
||||
}
|
||||
else n = 0.0;
|
||||
}
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
protected String builtinFunctionArgumentToString (
|
||||
Context ctx, Object obj) throws Exception
|
||||
{
|
||||
String str;
|
||||
|
||||
if (obj == null) str = "";
|
||||
else if (obj instanceof String) str = (String)obj;
|
||||
else str = valtostr (ctx.getId(), obj);
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
/* == depth limiting == */
|
||||
public int getMaxDepth (int id) throws Exception
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: StdAwk.java,v 1.16 2007/10/18 14:51:04 bacon Exp $
|
||||
* $Id: StdAwk.java,v 1.17 2007/10/19 03:50:32 bacon Exp $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
@ -331,107 +331,94 @@ public abstract class StdAwk extends Awk
|
||||
}
|
||||
|
||||
/* == arithmetic built-in functions */
|
||||
public Object sin (Context ctx, String name, Object[] args) throws Exception
|
||||
public Object sin (Context ctx, String name, Argument[] args) throws Exception
|
||||
{
|
||||
/*
|
||||
double x = builtinFunctionArgumentToDouble (ctx, args[0]);
|
||||
return new Double (Math.sin(x));
|
||||
*/
|
||||
Argument x = (Argument)args[0];
|
||||
return new Double (Math.sin(x.getIntValue()));
|
||||
return new Double (Math.sin(args[0].getRealValue()));
|
||||
}
|
||||
|
||||
public Object cos (Context ctx, String name, Object[] args) throws Exception
|
||||
public Object cos (Context ctx, String name, Argument[] args) throws Exception
|
||||
{
|
||||
double x = builtinFunctionArgumentToDouble (ctx, args[0]);
|
||||
return new Double (Math.cos(x));
|
||||
return new Double (Math.cos(args[0].getRealValue()));
|
||||
}
|
||||
|
||||
public Object tan (Context ctx, String name, Object[] args) throws Exception
|
||||
public Object tan (Context ctx, String name, Argument[] args) throws Exception
|
||||
{
|
||||
double x = builtinFunctionArgumentToDouble (ctx, args[0]);
|
||||
return new Double (Math.tan(x));
|
||||
return new Double (Math.tan(args[0].getRealValue()));
|
||||
}
|
||||
|
||||
public Object atan (Context ctx, String name, Object[] args) throws Exception
|
||||
public Object atan (Context ctx, String name, Argument[] args) throws Exception
|
||||
{
|
||||
double x = builtinFunctionArgumentToDouble (ctx, args[0]);
|
||||
return new Double (Math.atan(x));
|
||||
return new Double (Math.atan(args[0].getRealValue()));
|
||||
}
|
||||
|
||||
public Object atan2 (Context ctx, String name, Object[] args) throws Exception
|
||||
public Object atan2 (Context ctx, String name, Argument[] args) throws Exception
|
||||
{
|
||||
double y = builtinFunctionArgumentToDouble (ctx, args[0]);
|
||||
double x = builtinFunctionArgumentToDouble (ctx, args[1]);
|
||||
double y = args[0].getRealValue();
|
||||
double x = args[1].getRealValue();
|
||||
return new Double (Math.atan2(y,x));
|
||||
}
|
||||
|
||||
public Object log (Context ctx, String name, Object[] args) throws Exception
|
||||
public Object log (Context ctx, String name, Argument[] args) throws Exception
|
||||
{
|
||||
double x = builtinFunctionArgumentToDouble (ctx, args[0]);
|
||||
return new Double (Math.log(x));
|
||||
return new Double (Math.log(args[0].getRealValue()));
|
||||
}
|
||||
|
||||
public Object exp (Context ctx, String name, Object[] args) throws Exception
|
||||
public Object exp (Context ctx, String name, Argument[] args) throws Exception
|
||||
{
|
||||
double x = builtinFunctionArgumentToDouble (ctx, args[0]);
|
||||
return new Double (Math.exp(x));
|
||||
return new Double (Math.exp(args[0].getRealValue()));
|
||||
}
|
||||
|
||||
public Object sqrt (Context ctx, String name, Object[] args) throws Exception
|
||||
public Object sqrt (Context ctx, String name, Argument[] args) throws Exception
|
||||
{
|
||||
double x = builtinFunctionArgumentToDouble (ctx, args[0]);
|
||||
return new Double (Math.sqrt(x));
|
||||
return new Double (Math.sqrt(args[0].getRealValue()));
|
||||
}
|
||||
|
||||
public Object bfnint (Context ctx, String name, Object[] args) throws Exception
|
||||
public Object bfnint (Context ctx, String name, Argument[] args) throws Exception
|
||||
{
|
||||
long x = builtinFunctionArgumentToLong (ctx, args[0]);
|
||||
return new Long (x);
|
||||
return new Long (args[0].getIntValue());
|
||||
}
|
||||
|
||||
public Object rand (Context ctx, String name, Object[] args)
|
||||
public Object rand (Context ctx, String name, Argument[] args)
|
||||
{
|
||||
return new Double (random.nextDouble ());
|
||||
}
|
||||
|
||||
public Object srand (Context ctx, String name, Object[] args) throws Exception
|
||||
public Object srand (Context ctx, String name, Argument[] args) throws Exception
|
||||
{
|
||||
long prev_seed = seed;
|
||||
|
||||
seed = (args == null || args.length == 0)?
|
||||
System.currentTimeMillis ():
|
||||
builtinFunctionArgumentToLong (ctx, args[0]);
|
||||
args[0].getIntValue();
|
||||
|
||||
random.setSeed (seed);
|
||||
return new Long (prev_seed);
|
||||
}
|
||||
|
||||
public Object systime (Context ctx, String name, Object[] args)
|
||||
public Object systime (Context ctx, String name, Argument[] args)
|
||||
{
|
||||
long msec = System.currentTimeMillis ();
|
||||
return new Long (msec / 1000);
|
||||
}
|
||||
|
||||
public Object strftime (Context ctx, String name, Object[] args) throws Exception
|
||||
public Object strftime (Context ctx, String name, Argument[] args) throws Exception
|
||||
{
|
||||
String fmt = (args.length<1)? "%c": builtinFunctionArgumentToString (ctx, args[0]);
|
||||
long t = (args.length<2)? (System.currentTimeMillis()/1000): builtinFunctionArgumentToLong (ctx, args[1]);
|
||||
String fmt = (args.length<1)? "%c": args[0].getStringValue();
|
||||
long t = (args.length<2)? (System.currentTimeMillis()/1000): args[1].getIntValue();
|
||||
return strftime (fmt, t);
|
||||
}
|
||||
|
||||
public Object strfgmtime (Context ctx, String name, Object[] args) throws Exception
|
||||
public Object strfgmtime (Context ctx, String name, Argument[] args) throws Exception
|
||||
{
|
||||
String fmt = (args.length<1)? "%c": builtinFunctionArgumentToString (ctx, args[0]);
|
||||
long t = (args.length<2)? (System.currentTimeMillis()/1000): builtinFunctionArgumentToLong (ctx, args[1]);
|
||||
String fmt = (args.length<1)? "%c": args[0].getStringValue();
|
||||
long t = (args.length<2)? (System.currentTimeMillis()/1000): args[1].getIntValue();
|
||||
return strfgmtime (fmt, t);
|
||||
}
|
||||
|
||||
/* miscellaneous built-in functions */
|
||||
public Object system (Context ctx, String name, Object[] args) throws Exception
|
||||
public Object system (Context ctx, String name, Argument[] args) throws Exception
|
||||
{
|
||||
String str = builtinFunctionArgumentToString (ctx, args[0]);
|
||||
return system (str);
|
||||
return system (args[0].getStringValue());
|
||||
}
|
||||
|
||||
/* == utility functions == */
|
||||
|
@ -17,8 +17,6 @@ EXPORTS
|
||||
Java_ase_awk_Awk_delfunc
|
||||
Java_ase_awk_Awk_setfilename
|
||||
Java_ase_awk_Awk_setofilename
|
||||
Java_ase_awk_Awk_strtonum
|
||||
Java_ase_awk_Awk_valtostr
|
||||
Java_ase_awk_Awk_strftime
|
||||
Java_ase_awk_Awk_strfgmtime
|
||||
Java_ase_awk_Awk_system
|
||||
|
246
ase/awk/jni.c
246
ase/awk/jni.c
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: jni.c,v 1.29 2007/10/18 14:51:04 bacon Exp $
|
||||
* $Id: jni.c,v 1.30 2007/10/19 03:50:32 bacon Exp $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
@ -1664,7 +1664,7 @@ static int handle_bfn (
|
||||
class = (*env)->GetObjectClass(env, obj);
|
||||
method = (*env)->GetMethodID (
|
||||
env, class, "handleFunction",
|
||||
"(Lase/awk/Context;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;");
|
||||
"(Lase/awk/Context;Ljava/lang/String;[Lase/awk/Argument;)Ljava/lang/Object;");
|
||||
|
||||
(*env)->DeleteLocalRef (env, class);
|
||||
/*(*env)->ReleaseStringUTFChars (env, name, name_utf);*/
|
||||
@ -1681,7 +1681,7 @@ static int handle_bfn (
|
||||
}
|
||||
|
||||
args = (*env)->NewObjectArray (
|
||||
env, nargs, run_data->object_class, NULL);
|
||||
env, nargs, run_data->argument_class, NULL);
|
||||
if (args == NULL)
|
||||
{
|
||||
(*env)->DeleteLocalRef (env, name);
|
||||
@ -2355,239 +2355,6 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_setofilename (
|
||||
}
|
||||
}
|
||||
|
||||
JNIEXPORT jobject JNICALL Java_ase_awk_Awk_strtonum (
|
||||
JNIEnv* env, jobject obj, jlong runid, jstring str)
|
||||
{
|
||||
const jchar* ptr;
|
||||
jsize len;
|
||||
jint n;
|
||||
ase_long_t lv;
|
||||
ase_real_t rv;
|
||||
jobject ret;
|
||||
run_data_t* run_data;
|
||||
|
||||
ase_awk_t* awk = ase_awk_getrunawk ((ase_awk_run_t*)runid);
|
||||
|
||||
len = (*env)->GetStringLength (env, str);
|
||||
ptr = (*env)->GetStringChars (env, str, JNI_FALSE);
|
||||
if (ptr == NULL)
|
||||
{
|
||||
(*env)->ExceptionClear (env);
|
||||
throw_exception (
|
||||
env,
|
||||
ase_awk_geterrstr(ASE_NULL, ASE_AWK_ENOMEM),
|
||||
ASE_AWK_ENOMEM,
|
||||
0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t))
|
||||
{
|
||||
jsize x;
|
||||
ase_char_t* tmp = (ase_char_t*)
|
||||
ase_awk_malloc (awk, ASE_SIZEOF(ase_char_t)*len);
|
||||
if (tmp == ASE_NULL)
|
||||
{
|
||||
(*env)->ReleaseStringChars (env, str, ptr);
|
||||
throw_exception (
|
||||
env,
|
||||
ase_awk_geterrstr(ASE_NULL, ASE_AWK_ENOMEM),
|
||||
ASE_AWK_ENOMEM,
|
||||
0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (x = 0; x < len; x++) tmp[x] = (ase_char_t)ptr[x];
|
||||
n = ase_awk_strtonum (
|
||||
(ase_awk_run_t*)runid, tmp, len, &lv, &rv);
|
||||
ase_awk_free (awk, tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
n = ase_awk_strtonum (
|
||||
(ase_awk_run_t*)runid,
|
||||
(ase_char_t*)ptr, len, &lv, &rv);
|
||||
}
|
||||
(*env)->ReleaseStringChars (env, str, ptr);
|
||||
|
||||
run_data = ase_awk_getruncustomdata ((ase_awk_run_t*)runid);
|
||||
if (n == 0)
|
||||
{
|
||||
ret = (*env)->NewObject (env,
|
||||
run_data->long_class,
|
||||
run_data->long_init, (jlong)lv);
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = (*env)->NewObject (env,
|
||||
run_data->double_class,
|
||||
run_data->double_init, (jdouble)rv);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jstring JNICALL Java_ase_awk_Awk_valtostr (
|
||||
JNIEnv* env, jobject obj, jlong runid, jobject val)
|
||||
{
|
||||
ase_awk_run_t* run = (ase_awk_run_t*)runid;
|
||||
run_data_t* run_data;
|
||||
jstring ret;
|
||||
ase_awk_val_t* v;
|
||||
ase_char_t* str;
|
||||
ase_size_t len;
|
||||
ase_awk_t* awk;
|
||||
|
||||
awk = ase_awk_getrunawk (run);
|
||||
|
||||
if (val == NULL)
|
||||
{
|
||||
ret = (*env)->NewString (env, NULL, 0);
|
||||
|
||||
if (ret == NULL)
|
||||
{
|
||||
(*env)->ExceptionClear (env);
|
||||
|
||||
throw_exception (
|
||||
env,
|
||||
ase_awk_geterrstr(ASE_NULL, ASE_AWK_ENOMEM),
|
||||
ASE_AWK_ENOMEM,
|
||||
0);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
run_data = ase_awk_getruncustomdata (run);
|
||||
|
||||
if ((*env)->IsInstanceOf (env, val, run_data->string_class))
|
||||
{
|
||||
const jchar* ptr;
|
||||
|
||||
len = (*env)->GetStringLength (env, val);
|
||||
ptr = (*env)->GetStringChars (env, val, JNI_FALSE);
|
||||
if (ptr == NULL)
|
||||
{
|
||||
(*env)->ExceptionClear (env);
|
||||
|
||||
throw_exception (
|
||||
env,
|
||||
ase_awk_geterrstr(ASE_NULL, ASE_AWK_ENOMEM),
|
||||
ASE_AWK_ENOMEM,
|
||||
0);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ret = (*env)->NewString (env, ptr, len);
|
||||
(*env)->ReleaseStringChars (env, ret, ptr);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if ((*env)->IsInstanceOf (env, val, run_data->integer_class))
|
||||
{
|
||||
jint jv;
|
||||
jv = (*env)->CallIntMethod (
|
||||
env, val, run_data->integer_value);
|
||||
v = ase_awk_makeintval (run, jv);
|
||||
}
|
||||
else if ((*env)->IsInstanceOf (env, val, run_data->long_class))
|
||||
{
|
||||
jlong jv = (*env)->CallLongMethod (
|
||||
env, val, run_data->long_value);
|
||||
v = ase_awk_makeintval (run, jv);
|
||||
}
|
||||
else if ((*env)->IsInstanceOf (env, val, run_data->short_class))
|
||||
{
|
||||
jshort jv = (*env)->CallShortMethod (
|
||||
env, val, run_data->short_value);
|
||||
v = ase_awk_makeintval (run, jv);
|
||||
}
|
||||
else if ((*env)->IsInstanceOf (env, val, run_data->float_class))
|
||||
{
|
||||
jfloat jv = (*env)->CallFloatMethod (
|
||||
env, val, run_data->float_value);
|
||||
v = ase_awk_makerealval (run, jv);
|
||||
}
|
||||
else if ((*env)->IsInstanceOf (env, val, run_data->double_class))
|
||||
{
|
||||
jdouble jv = (*env)->CallDoubleMethod (
|
||||
env, val, run_data->double_value);
|
||||
v = ase_awk_makerealval (run, jv);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw_exception (
|
||||
env,
|
||||
ase_awk_geterrstr(ASE_NULL, ASE_AWK_EVALTYPE),
|
||||
ASE_AWK_EVALTYPE,
|
||||
0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (v == NULL)
|
||||
{
|
||||
throw_exception (
|
||||
env,
|
||||
ase_awk_geterrstr(ASE_NULL, ASE_AWK_ENOMEM),
|
||||
ASE_AWK_ENOMEM,
|
||||
0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ase_awk_refupval (run, v);
|
||||
str = ase_awk_valtostr (run, v, ASE_AWK_VALTOSTR_CLEAR, NULL, &len);
|
||||
ase_awk_refdownval (run, v);
|
||||
|
||||
if (str == NULL)
|
||||
{
|
||||
throw_exception (
|
||||
env,
|
||||
ase_awk_geterrstr(ASE_NULL, ASE_AWK_ENOMEM),
|
||||
ASE_AWK_ENOMEM,
|
||||
0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t))
|
||||
{
|
||||
ase_size_t i;
|
||||
jchar* tmp = (jchar*) ase_awk_malloc (awk, ASE_SIZEOF(jchar)*len);
|
||||
if (tmp == NULL)
|
||||
{
|
||||
ase_awk_free (awk, str);
|
||||
throw_exception (
|
||||
env,
|
||||
ase_awk_geterrstr(ASE_NULL, ASE_AWK_ENOMEM),
|
||||
ASE_AWK_ENOMEM,
|
||||
0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (i = 0; i < len; i++) tmp[i] = (jchar)str[i];
|
||||
ret = (*env)->NewString (env, tmp, len);
|
||||
ase_awk_free (awk, tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = (*env)->NewString (env, (jchar*)str, len);
|
||||
}
|
||||
|
||||
ase_awk_free (awk, str);
|
||||
if (ret == NULL)
|
||||
{
|
||||
(*env)->ExceptionClear (env);
|
||||
|
||||
throw_exception (
|
||||
env,
|
||||
ase_awk_geterrstr(ASE_NULL, ASE_AWK_ENOMEM),
|
||||
ASE_AWK_ENOMEM,
|
||||
0);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static jstring JNICALL call_strftime (
|
||||
JNIEnv* env, jobject obj, jstring fmt, struct tm* tm)
|
||||
{
|
||||
@ -2801,12 +2568,13 @@ JNIEXPORT void JNICALL Java_ase_awk_Context_stop (JNIEnv* env, jobject obj, jlon
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jlong JNICALL Java_ase_awk_Argument_getintval (JNIEnv* env, jobject obj, long runid, long valid)
|
||||
JNIEXPORT jlong JNICALL Java_ase_awk_Argument_getintval (JNIEnv* env, jobject obj, jlong runid, jlong valid)
|
||||
{
|
||||
int n;
|
||||
ase_long_t lv;
|
||||
ase_real_t rv;
|
||||
|
||||
|
||||
n = ase_awk_valtonum (
|
||||
(ase_awk_run_t*)runid, (ase_awk_val_t*)valid, &lv, &rv);
|
||||
if (n == 1) lv = (ase_long_t)rv;
|
||||
@ -2814,7 +2582,7 @@ JNIEXPORT jlong JNICALL Java_ase_awk_Argument_getintval (JNIEnv* env, jobject ob
|
||||
return (jlong)lv;
|
||||
}
|
||||
|
||||
JNIEXPORT jdouble JNICALL Java_ase_awk_Argument_getrealval (JNIEnv* env, jobject obj, long runid, long valid)
|
||||
JNIEXPORT jdouble JNICALL Java_ase_awk_Argument_getrealval (JNIEnv* env, jobject obj, jlong runid, jlong valid)
|
||||
{
|
||||
int n;
|
||||
ase_long_t lv;
|
||||
@ -2827,7 +2595,7 @@ JNIEXPORT jdouble JNICALL Java_ase_awk_Argument_getrealval (JNIEnv* env, jobject
|
||||
return (jdouble)rv;
|
||||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL Java_ase_awk_Argument_getstrval (JNIEnv* env, jobject obj, long runid, long valid)
|
||||
JNIEXPORT jstring JNICALL Java_ase_awk_Argument_getstrval (JNIEnv* env, jobject obj, jlong runid, jlong valid)
|
||||
{
|
||||
ase_awk_run_t* run = (ase_awk_run_t*)runid;
|
||||
ase_awk_val_t* val = (ase_awk_val_t*)valid;
|
||||
|
@ -16,8 +16,6 @@ EXPORTS
|
||||
Java_ase_awk_Awk_delfunc
|
||||
Java_ase_awk_Awk_setfilename
|
||||
Java_ase_awk_Awk_setofilename
|
||||
Java_ase_awk_Awk_strtonum
|
||||
Java_ase_awk_Awk_valtostr
|
||||
Java_ase_awk_Awk_strftime
|
||||
Java_ase_awk_Awk_strfgmtime
|
||||
Java_ase_awk_Awk_system
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: jni.h,v 1.8 2007/10/18 11:14:48 bacon Exp $
|
||||
* $Id: jni.h,v 1.9 2007/10/19 03:50:33 bacon Exp $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
@ -52,11 +52,6 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_setfilename (
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_setofilename (
|
||||
JNIEnv* env, jobject obj, jlong runid, jstring name);
|
||||
|
||||
JNIEXPORT jobject JNICALL Java_ase_awk_Awk_strtonum (
|
||||
JNIEnv* env, jobject obj, jlong runid, jstring str);
|
||||
JNIEXPORT jstring JNICALL Java_ase_awk_Awk_valtostr (
|
||||
JNIEnv* env, jobject obj, jlong runid, jobject val);
|
||||
|
||||
JNIEXPORT jstring JNICALL Java_ase_awk_Awk_strftime (
|
||||
JNIEnv* env, jobject obj, jstring fmt, jlong sec);
|
||||
JNIEXPORT jstring JNICALL Java_ase_awk_Awk_strfgmtime (
|
||||
@ -66,9 +61,9 @@ JNIEXPORT jint JNICALL Java_ase_awk_Awk_system (
|
||||
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Context_stop (JNIEnv* env, jobject obj, jlong runid);
|
||||
|
||||
JNIEXPORT jlong JNICALL Java_ase_awk_Argument_getintval (JNIEnv* env, jobject obj, long runid, long valid);
|
||||
JNIEXPORT jdouble JNICALL Java_ase_awk_Argument_getrealval (JNIEnv* env, jobject obj, long runid, long valid);
|
||||
JNIEXPORT jstring JNICALL Java_ase_awk_Argument_getstrval (JNIEnv* env, jobject obj, long runid, long valid);
|
||||
JNIEXPORT jlong JNICALL Java_ase_awk_Argument_getintval (JNIEnv* env, jobject obj, jlong runid, jlong valid);
|
||||
JNIEXPORT jdouble JNICALL Java_ase_awk_Argument_getrealval (JNIEnv* env, jobject obj, jlong runid, jlong valid);
|
||||
JNIEXPORT jstring JNICALL Java_ase_awk_Argument_getstrval (JNIEnv* env, jobject obj, jlong runid, jlong valid);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: AseAwk.java,v 1.13 2007/10/18 14:51:04 bacon Exp $
|
||||
* $Id: AseAwk.java,v 1.15 2007/10/19 05:05:20 bacon Exp $
|
||||
*/
|
||||
|
||||
import java.awt.*;
|
||||
@ -23,10 +23,10 @@ import java.net.URL;
|
||||
import ase.awk.StdAwk;
|
||||
import ase.awk.Console;
|
||||
import ase.awk.Context;
|
||||
import ase.awk.Argument;
|
||||
|
||||
public class AseAwk extends StdAwk
|
||||
{
|
||||
|
||||
private static void run_in_awt ()
|
||||
{
|
||||
final Frame frame = new Frame ();
|
||||
@ -81,8 +81,7 @@ public class AseAwk extends StdAwk
|
||||
java.io.File file = new java.io.File (url.getFile());
|
||||
|
||||
String osname = System.getProperty ("os.name").toLowerCase();
|
||||
String aseBase = file.getParentFile().getParentFile().getParent(
|
||||
);
|
||||
String aseBase = file.getParentFile().getParentFile().getParent();
|
||||
String path;
|
||||
|
||||
if (osname.startsWith ("windows"))
|
||||
@ -302,10 +301,9 @@ public class AseAwk extends StdAwk
|
||||
addFunction ("sleep", 1, 1);
|
||||
}
|
||||
|
||||
public Object sleep (Context ctx, String name, Object[] args) throws ase.awk.Exception
|
||||
public Object sleep (Context ctx, String name, Argument[] args) throws ase.awk.Exception
|
||||
{
|
||||
long x = builtinFunctionArgumentToLong (ctx, args[0]);
|
||||
try { Thread.sleep (x * 1000); }
|
||||
try { Thread.sleep (args[0].getIntValue() * 1000); }
|
||||
catch (InterruptedException e) {}
|
||||
return new Long(0);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: AseAwkPanel.java,v 1.5 2007/10/18 14:51:04 bacon Exp $
|
||||
* $Id: AseAwkPanel.java,v 1.6 2007/10/19 03:50:33 bacon Exp $
|
||||
*/
|
||||
|
||||
import java.awt.*;
|
||||
@ -16,6 +16,7 @@ import java.io.Writer;
|
||||
import ase.awk.StdAwk;
|
||||
import ase.awk.Console;
|
||||
import ase.awk.Context;
|
||||
import ase.awk.Argument;
|
||||
|
||||
public class AseAwkPanel extends Panel
|
||||
{
|
||||
@ -92,10 +93,9 @@ public class AseAwkPanel extends Panel
|
||||
addFunction ("sleep", 1, 1);
|
||||
}
|
||||
|
||||
public Object sleep (Context ctx, String name, Object[] args) throws ase.awk.Exception
|
||||
public Object sleep (Context ctx, String name, Argument[] args) throws ase.awk.Exception
|
||||
{
|
||||
long x = builtinFunctionArgumentToLong (ctx, args[0]);
|
||||
try { Thread.sleep (x * 1000); }
|
||||
try { Thread.sleep (args[0].getIntValue() * 1000); }
|
||||
catch (InterruptedException e) {}
|
||||
return new Long(0);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user